ZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdub3JlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0OTZjMzQKLS0tIC9kZXYvbnVsbAorKysgYi8uZ2l0aWdub3JlCkBAIC0wLDAgKzEsMjcgQEAKKyoudXZndWkuKgorKi5iYWsKKyoubworKi5kCisqLmNyZgorKi5fX2kKKyouYmluCisKKyoubWFwCisqLmh0bQorKi5sc3QKKyouc2N0CisqLmxucAorKi5wbGcKKyouYXhmCisqLnRyYQorKi5vcmlnCisqLk9wdAorLmJyb3dzZS5WQy5kYgorKi5kZXAKKyouX2lhCisqYnVpbGQqCisqSkxpbmtMb2cudHh0CitPdXQKK2c0MDEzMDIvb3V0VGltZXIKK2c0MDEzMDIvb3V0Rmxvdworc3Vwd2lzZG9tL3NwX3ZlcnNpb24uaApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0NPTS5pbmkgYi9DT00uaW5pCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzMmJmOGEKLS0tIC9kZXYvbnVsbAorKysgYi9DT00uaW5pCkBAIC0wLDAgKzEsMTUgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBGTEFTSC5JTkk6IEZMQVNIIEluaXRpYWxpemF0aW9uIEZpbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8vIDw8PCBVc2UgQ29uZmlndXJhdGlvbiBXaXphcmQgaW4gQ29udGV4dCBNZW51ID4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB1VmlzaW9uL0FSTSBkZXZlbG9wbWVudCB0b29scy4gICAgICAgICAgICAgICAgICAgICovCisvKiBDb3B5cmlnaHQgKGMpIDIwMDUtMjAwNiBLZWlsIFNvZnR3YXJlLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgICAgICAgICAgICAgICAqLworLyogVGhpcyBzb2Z0d2FyZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiBhIHZhbGlkLCBjdXJyZW50LCAgICAgICAgKi8KKy8qIGVuZCB1c2VyIGxpY2VuY2UgZnJvbSBLRUlMIGZvciBhIGNvbXBhdGlibGUgdmVyc2lvbiBvZiBLRUlMIHNvZnR3YXJlICAgICAgICovCisvKiBkZXZlbG9wbWVudCB0b29scy4gTm90aGluZyBlbHNlIGdpdmVzIHlvdSB0aGUgcmlnaHQgdG8gdXNlIHRoaXMgc29mdHdhcmUuICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8vTU9ERSBDT00zIDk2MDAsMSw4LDEgCitBU1NJR04gQ09NMyA8UzFJTj5TMU9VVCAKKworCmRpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhNDMxMGYKLS0tIC9kZXYvbnVsbAorKysgYi9NYWtlZmlsZQpAQCAtMCwwICsxLDE3IEBACitUQVJHRVQ9ZzQwMTMweAorVVY0PS9DL0tlaWwvVVY0L1V2NC5leGUKKworLlBIT05ZOiBjbGVhbiBhbGwKKwordGltZXI6IGNsZWFuCisJQGVjaG8gImJ1aWxkIHN0ZCB2ZXJzaW9uIC4uLiIKKwkkKFVWNCkgLWNyIC1qMCAtYiBnNDAxMzAyL3Byb2plY3QvZzQwMTMwMi51dnByb2ogLXQidGltZXIiIC1vIm91dFRpbWVyL09VVFBVVEZJTEUuVFhUIgorCQorZmxvdzogY2xlYW4KKwlAZWNobyAiYnVpbGQgc2h1IHZlcnNpb24gLi4uIgorCSQoVVY0KSAtY3IgLWowIC1iIGc0MDEzMDIvcHJvamVjdC9nNDAxMzAyLnV2cHJvaiAtdCJmbG93IiAtbyJvdXRGbG93L09VVFBVVEZJTEUuVFhUIgorCQorYWxsOiB0aW1lciBmbG93CisKK2NsZWFuOgorCQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1JBTS5pbmkgYi9SQU0uaW5pCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlYjY5MDEKLS0tIC9kZXYvbnVsbAorKysgYi9SQU0uaW5pCkBAIC0wLDAgKzEsMTcgQEAKK0ZVTkMgdm9pZCBTZXR1cCAodm9pZCkgeworCisgIFNQID0gX1JEV09SRCgweDA4MDAwMDAwKTsgICAgICAgICAgLy8gU2V0dXAgU3RhY2sgUG9pbnRlcgorCisgIFBDID0gX1JEV09SRCgweDA4MDAwMDA0KTsgICAgICAgICAgLy8gU2V0dXAgUHJvZ3JhbSBDb3VudGVyCisKKyAgX1dEV09SRCgweEUwMDBFRDA4LCAweDA4MDA0MDAwKTsgICAvLyBTZXR1cCBWZWN0b3IgVGFibGUgT2Zmc2V0IFJlZ2lzdGVyCisKK30KKworCitMT0FEIENTQzEwNS5heGYgSU5DUkVNRU5UQUwgICAgICAJCS8vIERvd25sb2FkCisKK1NldHVwKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTZXR1cCBmb3IgUnVubmluZworCisKK2csIG1haW4KZGlmZiAtLWdpdCBhL2NvbmZpZy5oIGIvY29uZmlnLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmIwODkzZgotLS0gL2Rldi9udWxsCisrKyBiL2NvbmZpZy5oCkBAIC0wLDAgKzEsMzYgQEAKKyNpZm5kZWYgX05fQ09ORklHX0hfCisjZGVmaW5lIF9OX0NPTkZJR19IXworCisjaW5jbHVkZSAiLi9nNDAxMzAyL3NyYy9HNDAxX2Rydl9od19WMDEuaCIKKyNpbmNsdWRlICIuL3N5c19ody9kcnZfdXNhcnQuaCIKKworI2lmbmRlZiBpbnQ4CisjZGVmaW5lIGludDggIHNpZ25lZCBjaGFyCisjZW5kaWYKKworI2lmbmRlZiB1aW50OAorI2RlZmluZSB1aW50OCB1bnNpZ25lZCBjaGFyCisjZW5kaWYKKworI2lmbmRlZiB1aW50MTYKKyNkZWZpbmUgdWludDE2IHVuc2lnbmVkIHNob3J0CisjZW5kaWYKKworI2lmbmRlZiBpbnQxNgorI2RlZmluZSBpbnQxNiBzaWduZWQgc2hvcnQKKyNlbmRpZgorCisjaWZuZGVmIHVpbnQzMgorI2RlZmluZSB1aW50MzIgdW5zaWduZWQgaW50CisjZW5kaWYKKworI2lmbmRlZiBpbnQzMgorI2RlZmluZSBpbnQzMiBzaWduZWQgaW50CisjZW5kaWYKKworI2lmbmRlZiBOVUxMCisjZGVmaW5lIE5VTEwgKCh2b2lkICopMCkKKyNlbmRpZgorCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvZzQwMTMwMi9oZXgvU1RNMzJJQVBDb21iaW5lNTEuaGV4IGIvZzQwMTMwMi9oZXgvU1RNMzJJQVBDb21iaW5lNTEuaGV4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlNDQ1MTcKLS0tIC9kZXYvbnVsbAorKysgYi9nNDAxMzAyL2hleC9TVE0zMklBUENvbWJpbmU1MS5oZXgKQEAgLTAsMCArMSwxMDI2IEBACis6MDIwMDAwMDQwODAwRjIKKzoxMDAwMDAwMEYwMzcwMDIwRjUwMTAwMDhGRDAxMDAwOEZGMDEwMDA4OUQKKzoxMDAwMTAwMDAxMDIwMDA4MDMwMjAwMDgwNTAyMDAwODAwMDAwMDAwQjkKKzoxMDAwMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA3MDIwMDA4QkYKKzoxMDAwMzAwMDA5MDIwMDA4MDAwMDAwMDAwQjAyMDAwODE1MTMwMDA4NjgKKzoxMDAwNDAwMDBGMDIwMDA4MEYwMjAwMDgwRjAyMDAwODBGMDIwMDA4NEMKKzoxMDAwNTAwMDBGMDIwMDA4MEYwMjAwMDgwRjAyMDAwODBGMDIwMDA4M0MKKzoxMDAwNjAwMDBGMDIwMDA4MEYwMjAwMDgwRjAyMDAwODBGMDIwMDA4MkMKKzoxMDAwNzAwMDBGMDIwMDA4MEYwMjAwMDgwRjAyMDAwODBGMDIwMDA4MUMKKzoxMDAwODAwMDBGMDIwMDA4MEYwMjAwMDgwRjAyMDAwODBGMDIwMDA4MEMKKzoxMDAwOTAwMDBGMDIwMDA4MEYwMjAwMDgwRjAyMDAwODBGMDIwMDA4RkMKKzoxMDAwQTAwMDBGMDIwMDA4MEYwMjAwMDgwRjAyMDAwODBGMDIwMDA4RUMKKzoxMDAwQjAwMDBGMDIwMDA4MEYwMjAwMDgwRjAyMDAwODBGMDIwMDA4REMKKzoxMDAwQzAwMDBGMDIwMDA4MEYwMjAwMDgwRjAyMDAwODBGMDIwMDA4Q0MKKzoxMDAwRDAwMDBGMDIwMDA4MEYwMjAwMDgwRjAyMDAwODBGMDIwMDA4QkMKKzoxMDAwRTAwMDBGMDIwMDA4MEYwMjAwMDgwRjAyMDAwODBGMDIwMDA4QUMKKzoxMDAwRjAwMDBGMDIwMDA4MEYwMjAwMDgwRjAyMDAwODBGMDIwMDA4OUMKKzoxMDAxMDAwMDBGMDIwMDA4MEYwMjAwMDgwRjAyMDAwODBGMDIwMDA4OEIKKzoxMDAxMTAwMDBGMDIwMDA4MEYwMjAwMDgwRjAyMDAwODBGMDIwMDA4N0IKKzoxMDAxMjAwMDBGMDIwMDA4MEYwMjAwMDgwRjAyMDAwODBGMDIwMDA4NkIKKzoxMDAxMzAwMDAwRjAwMkY4MDBGMDNGRjgwQUEwOTBFODAwMEM4MjQ0QkEKKzoxMDAxNDAwMDgzNDRBQUYxMDEwN0RBNDUwMUQxMDBGMDM0RjhBRkYyOTcKKzoxMDAxNTAwMDA5MEVCQUU4MEYwMDEzRjAwMTBGMThCRkZCMUE0M0YwQTUKKzoxMDAxNjAwMDAxMDMxODQ3NTQyQjAwMDA3NDJCMDAwMDEwM0EyNEJGRTEKKzoxMDAxNzAwMDc4Qzg3OEMxRkFEODUyMDcyNEJGMzBDODMwQzE0NEJGMEMKKzoxMDAxODAwMDA0NjgwQzYwNzA0NzAwMDAwMDIzMDAyNDAwMjUwMDI2NEUKKzoxMDAxOTAwMDEwM0EyOEJGNzhDMUZCRDg1MjA3MjhCRjMwQzE0OEJGRUEKKzoxMDAxQTAwMDBCNjA3MDQ3NjQyOTAwRjA4MTgwMDAyMDcwNDcxRkI1MDQKKzoxMDAxQjAwMDFGQkQxMEI1MTBCRDAwRjA2N0ZBMTE0NkZGRjdGN0ZGM0QKKzoxMDAxQzAwMDAxRjBFQ0ZDMDBGMDg1RkEwM0I0RkZGN0YyRkYwM0JDOEEKKzoxMDAxRDAwMDAwRjA4Q0ZBRUZGMzA5ODA3MDQ3ODBGMzA5ODg3MDQ3Q0MKKzoxMDAxRTAwMEVGRjMwODgwNzA0NzgwRjMwODg4NzA0NzQwQkE3MDQ3ODMKKzoxMDAxRjAwMEMwQkE3MDQ3MDk0ODgwNDcwOTQ4MDA0N0ZFRTdGRUU3NTQKKzoxMDAyMDAwMEZFRTdGRUU3RkVFN0ZFRTdGRUU3RkVFN0ZFRTdGRUU3QzYKKzoxMDAyMTAwMDA0NDgwNTQ5MDM0QTA1NEI3MDQ3MDAwMDk5MTMwMDA4M0MKKzoxMDAyMjAwMDMxMDEwMDA4RjAwNzAwMjBGMDM3MDAyMEYwMDcwMDIwMUYKKzoxMDAyMzAwMDBGQjQxQ0I1MDc0QjA2QUE3QjQ0Njk0NjAwOTAwNTk4OEQKKzoxMDAyNDAwMDAwRjBFM0Y5MDAyMDY5NDYwMEYwRjJGOTFDQkM1REY4MEIKKzoxMDAyNTAwMDE0RkIwMDAwRjUwMzAwMDA3MEI1MDQ0Njg1NjkwMDY4RDIKKzoxMDAyNjAwMEMxMDYwMUQ1MzAyNjAwRTAyMDI2QzAwNzA4RDA3MEJEQTkKKzoxMDAyNzAwMEQ0RTkwMTIxMzA0NjkwNDcyMDZBMDBGMTAxMDAyMDYyNTQKKzoxMDAyODAwMDZEMUVGNUQ1NzBCRDcwQjUwNDQ2ODU2OTAwNzhDMDA3NTAKKzoxMDAyOTAwMDA4RDE3MEJERDRFOTAxMjEyMDIwOTA0NzIwNkEwMEYxRTcKKzoxMDAyQTAwMDAxMDAyMDYyNkQxRUY1RDU3MEJEMDAwMDJERTlGMDQxMDIKKzoxMDAyQjAwMDA2NDYwMDI0MTA2ODc1MjkzMTQ2MTZBNTExRDBBRkYzMDMKKzoxMDAyQzAwMDAwODAwMDI4MDNEQUMwRjEwMDAwMTNBNTA3RTAzMTY4QzAKKzoxMDAyRDAwMDhBMDcwMUQ1MTFBNTAyRTA0OTA3MDRENTEwQTUwMTI0MUMKKzoxMDAyRTAwMDAxRTBBRkYzMDA4MDAwMjEwQTIzMDZGMTI0MDcwN0UwQjQKKzoxMDAyRjAwMEIwRkJGM0YyMDNGQjEyMDAzMDMwNzg1NDEwNDY0OTFDNzcKKzoxMDAzMDAwMDAwMjhGNUQxMjM0NjJBNDYzMDQ2QkRFOEYwNDEwMEYwRUEKKzoxMDAzMTAwMDFCQjkwMDAwMDAwMDAwMDAyRDAwMDAwMDJCMDAwMDAwQjEKKzoxMDAzMjAwMDIwMDAwMDAwMkRFOUYwNDc0RkYwMDAwQTg5NDYwNDQ2RkUKKzoxMDAzMzAwMEMwRjgyMEEwMjA0NkUxNjg4ODQ3MDAyODc2RDAyNTI4MEMKKzoxMDAzNDAwMDA2RDBENEU5MDEyMTkwNDcyMDZBNDAxQzIwNjJGMUU3RTEKKzoxMDAzNTAwMEUxNjgyMDQ2MDAyNTg4NDdDNEY4MUNBMDA2NDYwMDI3MEYKKzoxMDAzNjAwMEM0RjgxOEEwMkEyRTA5RDAzMDQ2MDFGMDQ1RjgzOEIzNTkKKzoxMDAzNzAwMDA0RUI4NzA4MzAzRUM4RjgxODYwMTlFMDU5RjgwNDFCRjAKKzoxMDAzODAwMDIwNDYwNEVCODcwMjkxNjFFMTY4ODg0NzAxMkYwNjQ2MDkKKzoxMDAzOTAwMDE4RDFFMDY5MDAyODIwREEyNUYwMjAwNTFERTBEOEY4MDIKKzoxMDAzQTAwMDE4MDAwMEVCODAwMDA2RUI0MDAwMzAzOEM4RjgxODAwNTkKKzoxMDAzQjAwMDIwNDZFMTY4ODg0NzA2NDYwMUYwMUVGODAwMjhFRUQxODUKKzoxMDAzQzAwMDAxMkYwQUQwMkUyRTA4RDEyMDQ2RTE2ODg4NDc3RjFDRDUKKzoxMDAzRDAwMDA2NDYwMjJGNDVGMDIwMDVDNERCQTA2OTAwMjgwM0RBOTkKKzoxMDAzRTAwMDQwNDI0NUYwMDEwNUEwNjFFODA3MDFEMDI1RjAxMDA1NjUKKzoxMDAzRjAwMEI2QjFBNkYxNDEwMDE5MjgwMkQ4MjAzNjQ1RjQwMDY1QUYKKzoxMDA0MDAwMDRBNDYzMTQ2MjA0NjI1NjA0RDQ2RkZGN0NCRkU1OEIxOUYKKzoxMDA0MTAwMDAxMjgwNkQwRUQxRDI1RjAwNzAwMDBGMTA4MDk4OUU3NDUKKzoxMDA0MjAwMDA0RTAwNUYxMDQwOTg1RTczMDQ2OEFFNzIwNkFCREU4NjMKKzoxMDA0MzAwMEYwODc0MEVBMDEwMzEwQjU5QjA3MEZEMTA0MkEwREQzQzIKKzoxMDA0NDAwMDEwQzgwOEM5MTIxRjlDNDJGOEQwMjBCQTE5QkE4ODQyQjUKKzoxMDA0NTAwMDAxRDkwMTIwMTBCRDRGRjBGRjMwMTBCRDFBQjFEMzA3RjQKKzoxMDA0NjAwMDAzRDA1MjFDMDdFMDAwMjAxMEJEMTBGODAxM0IxMUY4MkEKKzoxMDA0NzAwMDAxNEIxQjFCMDdEMTEwRjgwMTNCMTFGODAxNEIxQjFCNTMKKzoxMDA0ODAwMDAxRDE5MjFFRjFEMTE4NDYxMEJEMTBCNTIwM0FDMEYwMkUKKzoxMDA0OTAwMDBCODBCMUU4MTg1MDIwM0FBMEU4MTg1MEIxRTgxODUwODUKKzoxMDA0QTAwMEEwRTgxODUwQkZGNEY1QUY1RkVBMDI3QzI0QkZCMUU4QzIKKzoxMDA0QjAwMDE4NTBBMEU4MTg1MDQ0QkYxOEM5MThDMEJERTgxMDQwMzMKKzoxMDA0QzAwMDVGRUE4MjdDMjRCRjUxRjgwNDNCNDBGODA0M0IwOEJGM0MKKzoxMDA0RDAwMDcwNDdEMjA3MjhCRjMxRjgwMjNCNDhCRjExRjgwMTJCMDMKKzoxMDA0RTAwMDI4QkYyMEY4MDIzQjQ4QkYwMEY4MDEyQjcwNDcwMkYwRkMKKzoxMDA0RjAwMEZGMDM0M0VBMDMyMjQyRUEwMjQyMDBGMDAyQjg0RkYwNEYKKzoxMDA1MDAwMDAwMDIwNDI5QzBGMDEyODAxMEYwMDMwQzAwRjA5NzgwNjQKKzoxMDA1MTAwMENDRjEwNDBDQkNGMTAyMEYxOEJGMDBGODAxMkJBOEJGRUUKKzoxMDA1MjAwMDIwRjgwMjJCQTFFQjBDMDEwMEYwODlCODVGRUFDMTdDMzYKKzoxMDA1MzAwMDI0QkYwMEY4MDEyQjAwRjgwMTJCNDhCRjAwRjgwMTJCNjUKKzoxMDA1NDAwMDcwNDc3MDQ3NzA0NzcwNDcyREU5RjA0NzBENDY5OTQ2NTAKKzoxMDA1NTAwMDkyNDYwNDQ2MDBGMTI0MDgwMTY4ODgwNjA0RDVFMDY5NDMKKzoxMDA1NjAwMDIxRjAxMDAxMjE2MDAwRTAwMTIwQTg0MjAyRERBMEVCOTMKKzoxMDA1NzAwMDA1MDcwMEUwMDAyN0ExNjkwN0VCMDUwMjAyRUIwOTAwNkYKKzoxMDA1ODAwMEExRUIwMDAwQTA2MTIwNzhDMDA2MDJENDIwNDZGRkY3NEUKKzoxMDA1OTAwMDYzRkUwMDI2MDhFMEQ0RTkwMTIxMUFGODA2MDA5MDQ3MUUKKzoxMDA1QTAwMDIwNkE0MDFDNzYxQzIwNjI0RTQ1RjREQjIwNzhDMDA2OTEKKzoxMDA1QjAwMDBBRDUyMDQ2RkZGNzUwRkUwNkUwRDRFOTAxMjEzMDIwOUQKKzoxMDA1QzAwMDkwNDcyMDZBNDAxQzIwNjIzODFFQTdGMTAxMDdGNERDMjYKKzoxMDA1RDAwMDA3RTBENEU5MDEyMTE4RjgwNTAwOTA0NzIwNkE0MDFDODMKKzoxMDA1RTAwMDIwNjIyODFFQTVGMTAxMDVGM0RDMjA0NkZGRjc0QkZFMzMKKzoxMDA1RjAwMDIwNzgwMDA2MDJENTAyMjBCREU4RjA4NzAxMjBGQkU3NDUKKzoxMDA2MDAwMDAxNjk0QTFDMDI2MTA4Nzg3MDQ3MDBCNThGQjBDREU5RDYKKzoxMDA2MTAwMDAxMzEwMDIxMDU5MTA1NDk3OTQ0Q0RFOTAzMTAxMTQ2QzYKKzoxMDA2MjAwMDY4NDZGRkY3N0ZGRTBGQjAwMEJEMDAwMEU1RkZGRkZGNEIKKzoxMDA2MzAwMDBBNjgwMkY4MDEwQjBBNjA3MDQ3NEZGMDAwMDIwMEI1MkIKKzoxMDA2NDAwMDEzNDY5NDQ2OTY0NjIwMzkyMkJGQTBFODBDNTBBMEU4RjUKKzoxMDA2NTAwMDBDNTBCMUYxMjAwMUJGRjRGN0FGMDkwNzI4QkZBMEU4QTMKKzoxMDA2NjAwMDBDNTA0OEJGMENDMDVERjgwNEVCODkwMDI4QkY0MEY4NkYKKzoxMDA2NzAwMDA0MkIwOEJGNzA0NzQ4QkYyMEY4MDIyQjExRjA4MDRGQjEKKzoxMDA2ODAwMDE4QkYwMEY4MDEyQjcwNDc3NTQ2MDBGMDI5RjhBRTQ2RjgKKzoxMDA2OTAwMDA1MDA2OTQ2NTM0NjIwRjAwNzAwODU0NjE4QjAyMEI1OEUKKzoxMDA2QTAwMEZGRjdCNkZEQkRFODIwNDA0RkYwMDAwNjRGRjAwMDA3MTEKKzoxMDA2QjAwMDRGRjAwMDA4NEZGMDAwMEIyMUYwMDcwMUFDNDZBQ0U4MEEKKzoxMDA2QzAwMEMwMDlBQ0U4QzAwOUFDRThDMDA5QUNFOEMwMDk4RDQ2NzcKKzoxMDA2RDAwMDcwNDcwNDQ2QUZGMzAwODAyMDQ2RkZGNzc1RkQwMDAwMjkKKzoxMDA2RTAwMDAwNDg3MDQ3OEMwNzAwMjA3MDQ3MDAwMDAxNDkxODIwMUYKKzoxMDA2RjAwMEFCQkVGRUU3MjYwMDAyMDA3Q0I1MDM0NjBDNDYwMDIwOTgKKzoxMDA3MDAwMDAxOTAwMDIxMTJFMDU4NUM5REY4MDU1MDY4NDAwRjREQTMKKzoxMDA3MTAwMDM1RjgxMDAwMDA5MDlERjgwMTAwOURGODA0NTA2ODQwRTUKKzoxMDA3MjAwMDhERjgwMTAwQkRGODAwMDAwMTkwNDkxQ0ExNDJFQUQzRjgKKzoxMDA3MzAwMDAxMkEwN0QxOURGODAxNjAwODQ2NDkxQzFFNTQ5REY4MDYKKzoxMDA3NDAwMDAwMDA1ODU0QkRGODA0MDA3Q0JEMDAwMEI2MkEwMDA4MjMKKzoxMDA3NTAwMEYwQjU4NUIwMDY0NjRGRjQxNDI3MEVCQjE0MjIyQzQ5ODEKKzoxMDA3NjAwMDY4NDZGRkY3OTJGRTJCNDhDMDY4Q0RGODA2MDAyOTQ4N0UKKzoxMDA3NzAwMDgwNjhDREY4MEEwMDAxMjIwRTIxNjg0NkZGRjdCQ0ZGMTEKKzoxMDA3ODAwMDAwMjQwOUUwNkE0NjEwMjEzODQ2MDBGMEQxRkFDNUIyQ0IKKzoxMDA3OTAwMDA1QjkwM0UwNjAxQ0M0QjIwQTJDRjNEQjAwQkYyRkUwRjQKKzoxMDA3QTAwMDAxMkUyMEQxMTQyMjFBNDkxNDMxNjg0NkZGRjc2REZFM0MKKzoxMDA3QjAwMEZGMjIwODIxMERGMTA2MDBGRkY3OTlGRTAxMjIwRTIxMEMKKzoxMDA3QzAwMDY4NDZGRkY3OTlGRjAwMjQwOUUwNkE0NjEwMjEzODQ2ODEKKzoxMDA3RDAwMDAwRjBBRUZBQzVCMjA1QjkwM0UwNjAxQ0M0QjIwQTJDNDEKKzoxMDA3RTAwMEYzREIwMEJGMENFMDAwMjQwN0UwMzgwQjAwRjAyMkZBMzYKKzoxMDA3RjAwMEM1QjIwNUI5MDNFMDYwMUNDNEIyMEEyQ0Y1REIwMEJGMkEKKzoxMDA4MDAwMDBBMkMwMkRBMDAyMDA1QjBGMEJEMDEyMEZCRTcwMDAwNTEKKzoxMDA4MTAwMDkwMkEwMDA4N0MwNDAwMjAwMTQ5Qzg2MDcwNDcwMDAwNEQKKzoxMDA4MjAwMDAwMjAwMjQwMzBCNTA0NDYwNDI1NEZGNDMwMjAwMEYwOEIKKzoxMDA4MzAwMDdCRjgwNTQ2MDQyRDE3RDEwQzQ4MDA2OTQwRjAwMjAwRjIKKzoxMDA4NDAwMDBBNDkwODYxMDg0NjQ0NjEwMDY5NDBGMDQwMDAwODYxQjcKKzoxMDA4NTAwMDRGRjQzMDIwMDBGMDY4RjgwNTQ2MDQ0ODAwNjk0MUY2N0UKKzoxMDA4NjAwMEZENzEwODQwMDE0OTA4NjEyODQ2MzBCRDAwMjAwMjQwNjIKKzoxMDA4NzAwMDA0MjAwQjQ5Qzk2ODExRjAwMTBGMDFEMDAxMjAwRUUwREUKKzoxMDA4ODAwMDA3NDlDOTY4MTFGMDA0MEYwMUQwMDIyMDA3RTAwNDQ5QUMKKzoxMDA4OTAwMEM5NjgxMUYwMTAwRjAxRDAwMzIwMDBFMDA0MjA3MDQ3NTgKKzoxMDA4QTAwMDAwMjAwMjQwNzhCNTA2NDYwQzQ2MDQyNTAwMjAwMDkwNDIKKzoxMDA4QjAwMEU4MDIwMEYwMzlGODA1NDYwNDJEMjREMTEzNDgwMDY5RjgKKzoxMDA4QzAwMDQwRjAwMTAwMTE0OTA4NjEzNDgwRTgwMjAwRjAyQ0Y4ODIKKzoxMDA4RDAwMDA1NDYwNDJEMTBEMUIwMUMwMDkwMjAwQzAwOTkwODgwMTIKKzoxMDA4RTAwMEU4MDIwMEYwMjFGODA1NDYwODQ4MDA2OTQxRjZGRTcxNkIKKzoxMDA4RjAwMDA4NDAwNjQ5MDg2MTA2RTAwNDQ4MDA2OTQxRjZGRTcxQjcKKzoxMDA5MDAwMDA4NDAwMjQ5MDg2MTI4NDY3OEJEMDAwMDAwMjAwMjQwRTYKKzoxMDA5MTAwMDAyNDgwMzQ5NDg2MDAzNDg0ODYwNzA0NzIzMDE2NzQ1MUYKKzoxMDA5MjAwMDAwMjAwMjQwQUI4OUVGQ0QwMEI1MDI0NjA0MjNGRkY3NUIKKzoxMDA5MzAwMDlGRkYwMzQ2MDNFMEZGRjc5QkZGMDM0NjUyMUUwMTJCNzgKKzoxMDA5NDAwMDAxRDEwMDJBRjdEMTAyQjkwNTIzMTg0NjAwQkQwMDAwRTUKKzoxMDA5NTAwMDJERTlGQzQxMDU0NjBFNDYxNzQ2MDBGMDE3RjkxRTQ4RTIKKzoxMDA5NjAwMDAwRjAzNkY5MDBGMEZGMDgwOEYwMDIwMDAyMjgwMkQwN0IKKzoxMDA5NzAwMDQwNDZCREU4RkM4MTgwMjExODQ4MDBGMDAzRjlCNkY1MzcKKzoxMDA5ODAwMDgwN0YwMUQ5MDEyMEY0RTcwMjIwOERGODAwMDAyODBDQjcKKzoxMDA5OTAwMDhERjgwMTAwMjgwQThERjgwMjAwRThCMjhERjgwMzAwRjYKKzoxMDA5QTAwMDAwMjQwNUUwMURGODA0MDAwQjQ5MDFGMENERkE2NDFDOTkKKzoxMDA5QjAwMDA0MkNGN0QzMDAyNDA0RTAzODVEMDc0OTAxRjBDNEZBQTEKKzoxMDA5QzAwMDY0MUNCNDQyRjhEMzgwMjEwNDQ4MDBGMERERjgwMjQ4RUEKKzoxMDA5RDAwMDAwRjBGMkY4Q0RFNzAwMDBBMDg2MDEwMDAwMTAwMTQwMTEKKzoxMDA5RTAwMDJERTlGMDQxMDI0NjAwMjUwMDI2MDAyMDAwMjMwMDI0QzYKKzoxMDA5RjAwMDAwMjc5MUY4MDNDMDBDRjAwRjA1OTFGODAzQzAxQ0YwMUMKKzoxMDBBMDAwMDEwMEYwM0QwOTFGODAyQzA0Q0VBMDUwNTkxRjgwMEMwMjAKKzoxMDBBMTAwMEJDRjEwMDBGMzFEMDE0NjgwMDIwMkJFMDRGRjAwMTBDMjYKKzoxMDBBMjAwMDBDRkEwMEYzQjFGODAwQzAwQ0VBMDMwNjlFNDIyMEQxOTQKKzoxMDBBMzAwMDgzMDA0RkYwMEYwQzBDRkEwM0Y3QkM0MzA1RkEwM0ZDREMKKzoxMDBBNDAwMDRDRUEwNDA0OTFGODAzQzBCQ0YxMjgwRjA2RDE0RkYwMjIKKzoxMDBBNTAwMDAxMEMwQ0ZBMDBGQ0MyRjgxNEMwMEFFMDkxRjgwM0MwQzMKKzoxMDBBNjAwMEJDRjE0ODBGMDVEMTRGRjAwMTBDMENGQTAwRkNDMkY4QTQKKzoxMDBBNzAwMDEwQzA0MDFDMDgyOEQxRDMxNDYwQjFGODAwQzBCQ0YxRUMKKzoxMDBBODAwMEZGMEYzNERENTQ2ODAwMjAyRUUwMDBGMTA4MEM0RkYwMTkKKzoxMDBBOTAwMDAxMDgwOEZBMENGM0IxRjgwMEMwMENFQTAzMDY5RTQyMDQKKzoxMDBBQTAwMDIxRDE4MzAwNEZGMDBGMEMwQ0ZBMDNGN0JDNDMwNUZBNzkKKzoxMDBBQjAwMDAzRkM0Q0VBMDQwNDkxRjgwM0MwQkNGMTI4MEYwNUQxRjMKKzoxMDBBQzAwMDAwRjEwODBDMDhGQTBDRjhDMkY4MTQ4MDkxRjgwM0MwODEKKzoxMDBBRDAwMEJDRjE0ODBGMDdEMTAwRjEwODBDNEZGMDAxMDgwOEZBRUIKKzoxMDBBRTAwMDBDRjhDMkY4MTA4MDQwMUMwODI4Q0VEMzU0NjBCREU4MzIKKzoxMDBBRjAwMEYwODEwMDAwRjBCNTBBNDYwMDIzMDAyNDAwMjEwMDI1MDMKKzoxMDBCMDAwMDAwRjAwMDQ2QjZGMTAwNEYwMkQxMUQ0RUYxNjkwMUUwNDAKKzoxMDBCMTAwMDFCNEU3MTY4QzBGMzAzNDU4M0IyMDBGNDQwMTZCNkY1NkUKKzoxMDBCMjAwMDQwMUYwOEQxMjFGMDcwNjExNTRFNzY2ODI2RjA3MDY2N0UKKzoxMDBCMzAwMDEzNEY3RTYwMTJFMDAwRjQ4MDE2QjZGNTgwMUYwNkQxRDgKKzoxMDBCNDAwMDAzMjYwNkZBMDVGNEExNDM0MUYwNzA2MTA2RTA0NjBENjQKKzoxMDBCNTAwMDM2MDEwM0ZBMDZGNkIxNDM0MUYwNzA2MTIyQjE0NjBENDkKKzoxMDBCNjAwMDM2MDEwM0ZBMDZGNjMxNDMwMEYwMDA0NkI2RjEwMDRGQjUKKzoxMDBCNzAwMDAyRDEwMzRFRjE2MTAxRTAwMTRFNzE2MEYwQkQwMDAwNTEKKzoxMDBCODAwMDAwMDAwMTQwNDE2MTcwNDcwMTYxNzA0NzA4QjU4MDIxNTQKKzoxMDBCOTAwMDA3NDhGRkY3RjdGRjA2MjA4REY4MDAwMDlERjgwMDAwREEKKzoxMDBCQTAwMDA0NDkwMUYwRDFGOTgwMjEwMTQ4RkZGN0VERkYwOEJEQUMKKzoxMDBCQjAwMDAwMTAwMTQwQTA4NjAxMDA3MEI1MDQ0NjIwNDYwMEYwRjgKKzoxMDBCQzAwMDA3RjhDNUIyRkYyRDAxRDEwMTIwNzBCRDAwMjBGQ0U3NjAKKzoxMDBCRDAwMDM4QjUwNDQ2ODAyMTEzNDhGRkY3RDRGRjA1MjA4REY4NkYKKzoxMDBCRTAwMDAwMDA5REY4MDAwMDIxNDYwMUYwQUVGOTAwQkY5REY4MUQKKzoxMDBCRjAwMDAwMDAyMTQ2MDFGMEE4Rjk4REY4MDEwMDA0QjE2NDFFM0YKKzoxMDBDMDAwMDlERjgwMTAwMTBGMDAxMEYwMUQwMDAyQ0VGRDE4MDIxRTAKKzoxMDBDMTAwMDA0NDhGRkY3QjlGRjBDQjlGRjIwMzhCRDlERjgwMTAwNkIKKzoxMDBDMjAwMEZCRTcwMDAwMDAxMDAxNDAxMEI1MDFGMDVCRjkwMDIwNjcKKzoxMDBDMzAwMDEwQkQwMDAwMkRFOUZDNDEwNjQ2RkZGN0E3RkYxNzQ4NEQKKzoxMDBDNDAwMEZGRjdDNkZGMDc0NjA3RjAwMjAwMDIyODAyRDAzODQ2MjkKKzoxMDBDNTAwMEJERThGQzgxODAyMTEyNDhGRkY3OTRGRjM0MDMyMDIwNzcKKzoxMDBDNjAwMDhERjgwMDAwMjAwQzhERjgwMTAwMjAwQThERjgwMjAwOUMKKzoxMDBDNzAwMEUwQjI4REY4MDMwMDAwMjUwNUUwMURGODA1MDAwNzQ5RTYKKzoxMDBDODAwMDAxRjA2MkY5NkQxQzA0MkRGN0QzODAyMTA0NDhGRkY3QjEKKzoxMDBDOTAwMDdCRkYwNDQ4RkZGNzkwRkZEQUU3MDAwMEEwODYwMTAwMjEKKzoxMDBDQTAwMDAwMTAwMTQwMDAyRDMxMDEyREU5RkM0MTA1NDYwRTQ2QTIKKzoxMDBDQjAwMDE3NDYxRDQ4RkZGNzgwRkYwMEYwRkYwOEI4RjEwMDBGNEUKKzoxMDBDQzAwMDAyRDA0MDQ2QkRFOEZDODE4MDIxMTg0OEZGRjc1QUZGNUEKKzoxMDBDRDAwMEE4MTlCMEY1ODAwRjAxRDkwMTIwRjNFNzAzMjA4REY4QTIKKzoxMDBDRTAwMDAwMDAyODBDOERGODAxMDAyODBBOERGODAyMDBFOEIyRjcKKzoxMDBDRjAwMDhERjgwMzAwMDAyNDA1RTAxREY4MDQwMDBBNDkwMUYwMDYKKzoxMDBEMDAwMDIzRjk2NDFDMDQyQ0Y3RDMwMDI0MDVFMDA2NDlBQTIwMkIKKzoxMDBEMTAwMDAxRjAxQUY5Mzg1NTY0MUNCNDQyRjdEMzgwMjEwMzQ4MTYKKzoxMDBEMjAwMEZGRjczMkZGMDAyMENERTdBMDg2MDEwMDAwMTAwMTQwNTAKKzoxMDBEMzAwMDJERTlGODRGMDQ0NjBFNDY5MzQ2Q0RGODAwQjAyOTQ4RjkKKzoxMDBENDAwMDg0NDIwMEQyMDBCRkEwMTlCMEY1ODAwRjAyRDkwMTIwNjMKKzoxMDBENTAwMEJERThGODhGQjE0NjI3NDZDNEYzMEIwMDI1MUExQUUwMDgKKzoxMDBENjAwMDA3RUIwOTAxMDVGNTgwNTA4MTQyMDJEOUEwRUIwNzA4ODUKKzoxMDBENzAwMDAwRTBDODQ2QUY0MjA5RDEyODBCRkZGNzVCRkYwMEYwNDcKKzoxMDBEODAwMEZGMEFCQUYxMDAwRjAxRDA1MDQ2RTFFNzA1RjU4MDU1QTIKKzoxMDBEOTAwMEE5RUIwODA5NDc0NEI5RjEwMDBGRTFEMUUwQjIyNTFBRTcKKzoxMDBEQTAwMDFDRTBBMTE5MDVGNTgwNzA4MTQyMDJEOUEwRUIwNDA4NkUKKzoxMDBEQjAwMDAwRTBCMDQ2NDE0NjIwNDYwMDlBRkZGN0M5RkQwMEYwMkEKKzoxMDBEQzAwMEZGMEFCQUYxMDAwRjAxRDA1MDQ2QzFFNzA1RjU4MDc1NjIKKzoxMDBERDAwMEE2RUIwODA2NDQ0NDAwOTg0MDQ0MDA5MDAwMkVFMEQxNjEKKzoxMDBERTAwMDAwMjBCNUU3MDA3MDEyMDAwNDQ2MjA0NjAwRjBEOEY5NTQKKzoxMDBERjAwMDJERTlGMDRGQURGMjBDNEQ0QUExMDNDOTBERjU4MDYyMEIKKzoxMDBFMDAwMDAzQzIwMDI2MDlFMDZBNDYxMDIxNEZGNDE0MjBGRkY3QzAKKzoxMDBFMTAwMDRCRkYwNTQ2MDVCOTAyRTA3NjFDMDMyRUYzRDMwMEJGNTUKKzoxMDBFMjAwMDAzMkUwNEQzMDEyMDBERjIwQzREQkRFOEYwOEYwMDIyRkIKKzoxMDBFMzAwMDEwMjE2ODQ2RkZGNzYwRkMwNTQ2MERCMTAyMjBGMkU3N0QKKzoxMDBFNDAwMDA2MjI2OTQ2MERGNTgwNjBGRkY3RjNGQTA4QjEwMzIwMkEKKzoxMDBFNTAwMEU5RTc5REY4MDk5MDlERjgwODAwNDBFQTA5Mjk5REY4MDYKKzoxMDBFNjAwMDA3MDA0MEVBMDkyOTlERjgwNjAwNDBFQTA5Mjk5REY4OTMKKzoxMDBFNzAwMDBENDA5REY4MEMwMDQwRUEwNDI0OURGODBCMDA0MEVBNjgKKzoxMDBFODAwMDA0MjQ5REY4MEEwMDQwRUEwNDI0NEZGNDE2MkJCNEY1MUMKKzoxMDBFOTAwMEEwNUYwMUQyMDQyMEM2RTcwMDIwQ0RGODA4MDRBMjQ2RDYKKzoxMDBFQTAwMDAwMjYyQ0UwQkFGNTgwNkYwMkQzNEZGNDgwNjgwMEUwOTIKKzoxMDBFQjAwMEQwNDYwMDI3MDlFMDBCRUIwNjAwNkE0NjQxNDZGRkY3RTMKKzoxMDBFQzAwMEYzRkUwNTQ2MDVCOTAyRTA3RjFDMDUyRkYzRDMwMEJGRjIKKzoxMDBFRDAwMDI1QjEwMjIwRkZGNzNDRkMwNTIwQTRFNzAwMjcwOUUwMkMKKzoxMDBFRTAwMDFERjgwNzAwQzA0M0MxQjJEREY4MDgwNDA4NDRDREY4N0UKKzoxMDBFRjAwMDA4MDQ3RjFDNDc0NUYzRDM0NjQ0QUFFQjA4MEFBNjQyRTAKKzoxMDBGMDAwMEQwRDNEREY4MDgwNDQ4NDUwNEQwMDIyMEZGRjcyMEZDQzgKKzoxMDBGMTAwMDA2MjA4OEU3MDU0OEMwRjgwMEIwMDU0ODA0NjAwMDIwQjYKKzoxMDBGMjAwMDgxRTcwMDAwNUE0QjNDMkQxRTBGMDAwMDUwMDAwMDIwQUUKKzoxMDBGMzAwMDU0MDAwMDIwMkRFOUYwNEZBREY1MDc3RDgxNDY4QTQ2MkIKKzoxMDBGNDAwMDE1NDYyRjQ2MDAyNDQzRTBCN0Y1MDA3RjAyRDM0RkY0NDcKKzoxMDBGNTAwMDAwNzYwMEUwM0U0NjRGRjAwMDBCMEVFMDBBRUIwNDAwODYKKzoxMDBGNjAwMDA3QUEzMTQ2RkZGN0EwRkU4MDQ2QjhGMTAwMEYwMEQxNzYKKzoxMDBGNzAwMDA2RTAwQkYxMDEwMDAwRjBGRjBCQkJGMTA1MEZFRERCMEMKKzoxMDBGODAwMDAwQkZCOEYxMDAwRjA0RDAwMTIwMERGNTA3N0RCREU4Q0EKKzoxMDBGOTAwMEYwOEYwOUVCMDQwMDMyNDYwN0E5MDBGMDQxRjg4MDQ2QzMKKzoxMDBGQTAwMEI4RjEwMDBGMDFEMDAxMjBFRkU3MzQ0NEJGMUI2NDIwRUIKKzoxMDBGQjAwMDYwNDNCMEZCRjVGMDAyNDYwN0ExMDE5MDAyQThGRkY3REQKKzoxMDBGQzAwMDM3RjkwMkFBMTAyMTU1MjAwMEYwMEFGQzAwRjBBQ0ZEMTAKKzoxMDBGRDAwMEFDNDJCOUQzMDAyMEQ4RTcyNTMzNjQyNTI1MDAwMDAwQjIKKzoxMDBGRTAwMDEwQjUwMjIwRkZGN0I0RkIwMDIwMTBCRDRDRjZDQzQwM0EKKzoxMDBGRjAwMDAxNDkwODYwNzA0NzAwMDAwMDMwMDA0MDAxNDk0ODYwMjYKKzoxMDEwMDAwMDcwNDcwMDAwMDAzMDAwNDAwMTQ5ODg2MDcwNDcwMDAwRDAKKzoxMDEwMTAwMDAwMzAwMDQwMDE0OTA4NjA3MDQ3MDAwMDAwMzAwMDQwODcKKzoxMDEwMjAwMDJERTlGMDQxMDc0Njg4NDYxNTQ2MTVGMDAzMEYwMUQxMUEKKzoxMDEwMzAwMEFEMDgwMkUwMDEyMDAwRUI5NTA1M0U0NjAwMjQwNkUwRTUKKzoxMDEwNDAwMDU4RjgyNDEwMzA0NkZGRjcyREZDMzYxRDY0MUNBQzQyQzYKKzoxMDEwNTAwMEY2RDMzRTQ2MDAyNDA5RTA1OEY4MjQxMDMwNjg4ODQyNTAKKzoxMDEwNjAwMDAyRDAwMTIwQkRFOEYwODEzNjFENjQxQ0FDNDJGM0QzRjAKKzoxMDEwNzAwMDAwMjBGN0U3MTBCNTAwMjE0RkYwMDA2MDAwRjAwMkY4MDMKKzoxMDEwODAwMDEwQkQwMDAwMDI0QTBBNDAwMjQzMDI0QjFBNjA3MDQ3M0EKKzoxMDEwOTAwMDgwRkZGRjFGMDhFRDAwRTAyOUIxMDY0QUQyNjkwMjQzMzQKKzoxMDEwQTAwMDA0NEJEQTYxMDRFMDAzNEFEMjY5ODI0MzAxNEJEQTYxRkUKKzoxMDEwQjAwMDcwNDcwMDAwMDAxMDAyNDAyOUIxMDY0QTkyNjkwMjQzQkQKKzoxMDEwQzAwMDA0NEI5QTYxMDRFMDAzNEE5MjY5ODI0MzAxNEI5QTYxOUUKKzoxMDEwRDAwMDcwNDcwMDAwMDAxMDAyNDA3MEI1OEFCMDJGNEEwN0NBNUUKKzoxMDEwRTAwMDA3QUIwN0MzMkQ0QTBDMzIwN0NBMDRBQjA3QzM0RkY0NDIKKzoxMDEwRjAwMDE1MjZGRkY3OTlGRDAwMjUwOEUwMDFBQTBDMjEzMDQ2Q0UKKzoxMDExMDAwMEZGRjdEMkZEMDQ0NjA0QjkwMkUwNkQxQzA1MkRGNEQzQUYKKzoxMDExMTAwMDAwQkYwMDIyMEMyMTAxQThGRkY3RUVGQTA0NDYwQ0IxMzMKKzoxMDExMjAwMDBBQjA3MEJEMEEyMjAxQTkwN0E4RkZGNzgyRjk2MEIxRDEKKzoxMDExMzAwMDAwMjUwNkUwMzAwQkZGRjc3REZEMDQ0NjA0QjkwMkUwMTAKKzoxMDExNDAwMDZEMUMwNTJERjZEMzAwQkZFQUU3MDEyMjBBMjEwNEE4OTEKKzoxMDExNTAwMEZGRjdEMkZBMDRBODA3QzgwMUFCMDdDMzAwMjUxOEUwQkYKKzoxMDExNjAwMDAxQUEwQzIxMzA0NkZGRjdFM0ZEMDQ0NjA0QjEwRkUwNkQKKzoxMDExNzAwMDAxQUEwQzIxMzA0NkZGRjc5N0ZEMDQ0NjA0QjEwN0UwQjEKKzoxMDExODAwMDBDMjIwNEE5MDFBOEZGRjc1NEY5MDBCOTAzRTAwMEJGM0QKKzoxMDExOTAwMDZEMUMwNTJERTREMzAwQkYwMEJGQzFFNzc4MkEwMDA4MEQKKzoxMDExQTAwMDA0NDY0NUYyNTU1MEZGRjczNUZGMDUyMEZGRjcyNkZGQUYKKzoxMDExQjAwMEM0RjM4RjAwRkZGNzI4RkZGRkY3MThGRjAwQkZGRUU3MUIKKzoxMDExQzAwMDIxQjEwMjg4NDJGMDQwMDIwMjgwMDRFMDAyODg0RkY2MUEKKzoxMDExRDAwMEJGNzMxQTQwMDI4MDcwNDcwMjQ2MDAyMDEzODkwQjQyRjkKKzoxMDExRTAwMDAxRDAwMTIwMDBFMDAwMjA3MDQ3MDE0Njg4ODk3MDQ3NDcKKzoxMDExRjAwMDgxODE3MDQ3MTBCNTAwMjIwMjg4MDJGNDQxNTIwQjg4QTkKKzoxMDEyMDAwMDRDODgyMzQzOEM4ODIzNDNDQzg4MjM0MzBDODkyMzQzNzUKKzoxMDEyMTAwMDRDODkyMzQzOEM4OTIzNDNDQzg5MjM0MzFBNDMwMjgwN0UKKzoxMDEyMjAwMDgzOEI0RkYyRkY3NDIzNDA4MzgzMEI4QTAzODIxMEJEQUMKKzoxMDEyMzAwMDEwQjUwMEYwMDFGODEwQkQwQ0I1MDAyMDAxOTAwMDkwMzEKKzoxMDEyNDAwMDMyNDgwMDY4NDBGNDgwMzAzMDQ5MDg2MDAwQkYyRjQ4QzEKKzoxMDEyNTAwMDAwNjgwMEY0MDAzMDAwOTAwMTk4NDAxQzAxOTAwMDk4NTQKKzoxMDEyNjAwMDE4QjkwMTk4QjBGNUEwNkZGMUQxMjg0ODAwNjgxMEY0QzIKKzoxMDEyNzAwMDAwM0YwMkQwMDEyMDAwOTAwMUUwMDAyMDAwOTAwMDk4ODMKKzoxMDEyODAwMDAxMjg0MkQxMjI0ODAwNjg0MEYwMTAwMDIwNDkwODYwM0YKKzoxMDEyOTAwMDA4NDYwMDY4MjBGMDAzMDAwODYwMDg0NjAwNjg0MEYwMzcKKzoxMDEyQTAwMDAyMDAwODYwMTk0ODQwNjgxODQ5NDg2MDA4NDY0MDY4Q0MKKzoxMDEyQjAwMDQ4NjAwODQ2NDA2ODQwRjQ4MDYwNDg2MDA4NDY0MDY4REUKKzoxMDEyQzAwMDIwRjQ3QzEwNDg2MDA4NDY0MDY4NDBGNEU4MTA0ODYwMEMKKzoxMDEyRDAwMDA4NDYwMDY4NDBGMDgwNzAwODYwMDBCRjBCNDgwMDY4NTYKKzoxMDEyRTAwMDEwRjAwMDdGRkFEMDA5NDg0MDY4MjBGMDAzMDAwNzQ5NTkKKzoxMDEyRjAwMDQ4NjAwODQ2NDA2ODQwRjAwMjAwNDg2MDAwQkYwMzQ4NkMKKzoxMDEzMDAwMDQwNjgwMEYwMEMwMDA4MjhGOUQxMENCRDAwMTAwMjQwMjQKKzoxMDEzMTAwMDAwMjAwMjQwMTBCNTAwRjA3QkZEMDM0ODAwNjg0MDFDMkYKKzoxMDEzMjAwMDAxNDkwODYwMTBCRDAwMDA2ODAwMDAyMDMwQjUwMDIwQjEKKzoxMDEzMzAwMDE1NDkwODYwMTU0ODAwNjg0RkY0N0E3MkIwRkJGMkYxNjUKKzoxMDEzNDAwMEIxRjE4MDdGMDBEMzFERTAyMUYwN0Y0MDQwMUU0RkYwQkYKKzoxMDEzNTAwMEUwMjI1MDYxNTAxNzBGMjIwMDI4MDdEQTEzMDcxRDBFRjQKKzoxMDEzNjAwMDBCNEIwMEYwMEYwNDI0MUYxRDU1MDNFMDEzMDcxQzBFNDgKKzoxMDEzNzAwMDA4NEIxQzU0MDBCRjAwMjA0RkYwRTAyMjkwNjEwNzIwNzIKKzoxMDEzODAwMDEwNjEwMEJGMzBCRDAwMDA2ODAwMDAyMDIwMDAwMDIwNzgKKzoxMDEzOTAwMDE4RUQwMEUwMDBFNDAwRTAxMEI1MTM0ODAwNjg0MEYwRUMKKzoxMDEzQTAwMDAxMDAxMTQ5MDg2MDA4NDY0MDY4MTA0OTA4NDAwRTQ5OEMKKzoxMDEzQjAwMDQ4NjAwODQ2MDA2ODBFNDkwODQwMEI0OTA4NjAwODQ2MjYKKzoxMDEzQzAwMDAwNjgyMEY0ODAyMDA4NjAwODQ2NDA2ODIwRjRGRTAwOTEKKzoxMDEzRDAwMDQ4NjA0RkY0MUYwMDg4NjBGRkY3MkFGRjRGRjAwMDYwNUQKKzoxMDEzRTAwMDA0NDkwODYwMTBCRDAwMDAwMDEwMDI0MDAwMDBGRkY4MzIKKzoxMDEzRjAwMEZGRkZGNkZFMDhFRDAwRTAzMDM4MEEyODAxRDIwMTIwOTgKKzoxMDE0MDAwMDcwNDcwMDIwNzA0NzAwMDAwNDRBMTE2ODAwQkYwMzRBN0IKKzoxMDE0MTAwMDEyNjg1MjFBODI0MkZBRDM3MDQ3MDAwMDY4MDAwMDIwMTYKKzoxMDE0MjAwMDEwQjVFMjIwMDBGMDYwRjhBMjIwMDBGMDVERjhBMDIwRTYKKzoxMDE0MzAwMDAwRjA1QUY4QzgyMDAwRjA1N0Y4QTQyMDAwRjA1NEY4NDMKKzoxMDE0NDAwMDQwMjAwMEYwNTFGODI1MjAwMEYwNEVGODA1NDgwMDc4QzMKKzoxMDE0NTAwMDAwRjA5RkZBMkYyMDAwRjA0N0Y4QUYyMDAwRjA0NEY4OEEKKzoxMDE0NjAwMDEwQkQwMDAwMUMwMDAwMjAxMEI1QTUyMDAwRjAzQ0Y4QzUKKzoxMDE0NzAwMDEwQkQwMDAwMTBCNTRGRjQ4MDYxMDY0ODAwNjhGRkY3MEEKKzoxMDE0ODAwMDNFRjgzRjIzN0YyMjAwMjEwODQ2MDBGMDFERkIwMEYwQkMKKzoxMDE0OTAwMDRCRkIxMEJEMTQwMDAwMjAxMEI1NEZGNDgwNjEwNTQ4Q0YKKzoxMDE0QTAwMDAwNjhGRkY3MkNGODNGMjM3RjIyMDAyMTA4NDYwMEYwNTgKKzoxMDE0QjAwMDBCRkIxMEJEMTQwMDAwMjA3MEI1MDAyNDEwRTAyMDQ2ODYKKzoxMDE0QzAwMDAwRjBENkZBMDAyMDAwRjBDQUZBMDAyNTA0RTAwMDIwNUYKKzoxMDE0RDAwMDAwRjAxOEY4NjgxQ0M1QjI4MDJERjhEQjYwMUNDNEIyOUYKKzoxMDE0RTAwMDEwMkNFQ0RCNzBCRDAwMDAxMEI1MDQ0NjRGRjQ4MDYxOTkKKzoxMDE0RjAwMDAzNDhGRkY3NDdGQjIwNDYwMEYwQzRGQTEwQkQwMDAwODgKKzoxMDE1MDAwMDAwMTAwMTQwMTBCNTA0NDY0RkY0ODA2MTAzNDhGRkY3MTYKKzoxMDE1MTAwMDNCRkIyMDQ2MDBGMEI2RkExMEJEMDAwMDAwMTAwMTQwNzEKKzoxMDE1MjAwMDJERTlGRjVGMDU0NjBFNDY5MjQ2QUM0ODgwNzk1MDQ1NEUKKzoxMDE1MzAwMDAzRENBQTQ4QzA3OTUwNDUwMURBNEZGMDJFMEFBNzQ4Q0IKKzoxMDE1NDAwMDAwN0EwMDI4M0FEMTAwMjQzMUUwQTQ0ODAwNjhBMzQ5NzkKKzoxMDE1NTAwMDg5NzlBQUVCMDEwMUExNEExMjc5MDFGQjAyMDAxMEY4NzYKKzoxMDE1NjAwMDA0ODAwMDI3MUZFMDI4MTk4MDI4MDJEQUYwMTk0MDI4OUIKKzoxMDE1NzAwMDAzREIwMDIwMDRCMEJERThGMDlGMDEyMEI4NDAxMEVBNzIKKzoxMDE1ODAwMDA4MEYwN0QwRjIxOUQxQjIyQTE5RDBCMjAxMjIwMEYwMDcKKzoxMDE1OTAwMDBGRkEwNkUwRjIxOUQxQjIyQTE5RDBCMjAwMjIwMEYwRjcKKzoxMDE1QTAwMDA3RkE3ODFDQzdCMjA4MkZERERCNjAxQ0M0QjI4QjQ4NzkKKzoxMDE1QjAwMDAwNzlBMDQyQzlEQzg5NDgwMDc5REJFNzg3NDgwMDdBRDYKKzoxMDE1QzAwMDAxMjg3OEQxODU0OTQ4NzlDMTE3MDBFQjUxNzFDOTEwQkMKKzoxMDE1RDAwMEEwRUJDMTAxMDAyOTA4REQ4MDQ5NDg3OUMxMTcwMEVCNjMKKzoxMDE1RTAwMDUxNzFDOTEwMDFGMTAxMDgwNkUwN0M0OTQ4NzlDMTE3MjEKKzoxMDE1RjAwMDAwRUI1MTcxNEZFQUUxMDg3ODQ4MDA3OTAwRkIwOEYwRjAKKzoxMDE2MDAwMDQwMUNDMEIyMDM5MDc1NDgwMTY4ODA3OUFBRUIwMDAyQzMKKzoxMDE2MTAwMDAzOTgwMkZCMDAxMDAyOTAwMjk4OTBGODAwQjAwMjk4MjQKKzoxMDE2MjAwMDQwMUMwMjkwMDAyNzQxRTAwMDI0M0JFMDAyOTgwN0ZCQTkKKzoxMDE2MzAwMDA4MDAwMDVEMDE5MDRGRjAwMDA5MkVFMEU4MTk4MDI4QjUKKzoxMDE2NDAwMDA0REEwNkVCQzQwMDQ4NDQ0MDI4MDFEQjAwMjA5MUU3OUYKKzoxMDE2NTAwMDA5RUJDNDAwNjE0OTQ5Nzk4ODQyMDBEQjE5RTAwMTIwQTcKKzoxMDE2NjAwMDAwRkEwOUYwMDE5OTA4NDIwOUQwMDZFQkM0MDI0QTQ0ODUKKzoxMDE2NzAwMEQxQjJFQTE5RDBCMjAxMjIwMEYwOUFGOTA4RTAwNkVCRTMKKzoxMDE2ODAwMEM0MDI0QTQ0RDFCMkVBMTlEMEIyMDAyMjAwRjA5MEY5NjMKKzoxMDE2OTAwMDAwQkYwOUYxMDEwMDAwRjBGRjA5QjlGMTA4MEZDRERCMkYKKzoxMDE2QTAwMDYwMUNDNEIyNDQ0NUMxREI3ODFDQzdCMjVGNDVCQkRCREMKKzoxMDE2QjAwMDU4NDY1RkU3RkZFNzQ5NDgwMDdBMDIyODZGRDE0NzQ5NUIKKzoxMDE2QzAwMDQ4NzlDMTE3MDBFQjUxNzFDOTEwMDFGMTAxMEI0MzQ4NzIKKzoxMDE2RDAwMDAwNzkwMEZCMEJGMEMwQjIwMjkwNDA0ODAxNjg4MDc5QUQKKzoxMDE2RTAwMEFBRUIwMDAyMDI5ODAyRkIwMDEwMDE5MDNCNDg5MEY4MjAKKzoxMDE2RjAwMDA0OTAwMDIwMDM5MDFGRTAwMDIxMDAyMDAwQkYwQUUwQkEKKzoxMDE3MDAwMDM2NEIxQjc5NUIxRTAzOUZEQjFCNDM0M0RBQjIwMTlCMDUKKzoxMDE3MTAwMDk5NUM0MjFDRDBCMjU4NDVGMkRCMzlCOUE5RjEwMTAyRkIKKzoxMDE3MjAwMDAyRjBGRjA5QjlGMTAwMEYwMUQxMDZFMDA1RTAwMzlBQ0MKKzoxMDE3MzAwMDUyMUNEMkIyMDM5MjAwQkZERUU3MDBCRjAwMjQ0NkUwOTUKKzoxMDE3NDAwMDRGRjAwMDA4M0ZFMDI1NDgwMTc5MDE5ODA0RkIwMTAwQjMKKzoxMDE3NTAwMDEwRjgwODAwMDA5MDAwMjcyRkUwMDVFQjA4MDA4MDI4MTMKKzoxMDE3NjAwMDA0REEwNkVCQzQwMDM4NDQ0MDI4MDFEQjAwMjAwMUU3MUUKKzoxMDE3NzAwMDA3RUJDNDAwMTk0OTQ5Nzk4ODQyMDBEQjFCRTAwMTIwQ0UKKzoxMDE3ODAwMEI4NDAwMDk5MDg0MjBCRDAwNkVCQzQwMjNBNDREMUIyRUIKKzoxMDE3OTAwMDA1RUIwODAyRDBCMjAxMjIwMEYwMEFGOTBBRTAxQUUwRDMKKzoxMDE3QTAwMDA2RUJDNDAyM0E0NEQxQjIwNUVCMDgwMkQwQjIwMDIyRTMKKzoxMDE3QjAwMDAwRjBGRUY4MDBCRjc4MUNDN0IyMDgyRkNEREIwOEYxOUYKKzoxMDE3QzAwMDAxMDAwMEYwRkYwOEM4NDVCRERCNjAxQ0M0QjI1QzQ1RTkKKzoxMDE3RDAwMEI2REI0ODQ2Q0VFNjAwMjBDQ0U2MDAwMDcwMDQwMDIwRDAKKzoxMDE3RTAwMDJERTlGMDQxMDY0NjBGNDYxNDQ2MEM0ODQwNzlDMEYxRjkKKzoxMDE3RjAwMDNGMDBCODQyMDFEQUJERThGMDgxMDlFMDIyNzgzOTQ2QkQKKzoxMDE4MDAwMDMwNDZGRkY3OERGRTA1NDY2ODFDMzA0NEM2QjI2NDFDQTYKKzoxMDE4MTAwMDIwNzgwMDI4RjJEMTAwQkZFREU3MDAwMDcwMDQwMDIwMUUKKzoxMDE4MjAwMDA4QjUwMTIxMTAyMEZGRjc0N0ZDNEZGNDgwNjBBREY4QTgKKzoxMDE4MzAwMDAwMDAwMzIwOERGODAyMDAxMDIwOERGODAzMDA2OTQ2OTcKKzoxMDE4NDAwMDI2NDhGRkY3Q0RGODRGRjQwMDYwQURGODAwMDAwMzIwMDQKKzoxMDE4NTAwMDhERjgwMjAwMTAyMDhERjgwMzAwNjk0NjFGNDhGRkY3M0QKKzoxMDE4NjAwMEJGRjgwMTIxMDQyMEZGRjcyN0ZDMDEyMTFDNDhGRkY3RTYKKzoxMDE4NzAwMDQxRjk0RkY0MDA0MEFERjgwMDAwMDMyMDhERjgwMjAwNUMKKzoxMDE4ODAwMDEwMjA4REY4MDMwMDY5NDYxNjQ4RkZGN0E5Rjg0RkY0QjkKKzoxMDE4OTAwMDAwNDExNDQ4RkZGNzc4Rjk0RkY0ODA3MTExNDhGRkY3QzEKKzoxMDE4QTAwMDczRjkwMEYwMUZGQjAwRjAyOUY4MDEyMEZGRjdBQ0ZERjEKKzoxMDE4QjAwMEZGRjdCNkZERkZGN0Q4RkQ0RkY0RkE3MEZGRjdBNEZENzAKKzoxMDE4QzAwMDAwRjAxNkY4MDAyMDAwRjBDMUY4RkZGN0Y1RkQwNjQ5MUEKKzoxMDE4RDAwMDA2NDgwMEYwNDVGOEZGRjdDREZEMDhCRDAwMTAwMTQwQjcKKzoxMDE4RTAwMDAwMDIzMDAwMDAwODAxNDAxMDAwMDAyMDcwMDAwMDIwQkQKKzoxMDE4RjAwMDEwQjVBNDIwRkZGN0Y4RkQxMEJEMDAwMDEwQjU0RkY0OUYKKzoxMDE5MDAwMDgwNzEwQjQ4RkZGNzNFRjk0RkY0MDA2MTA5NDhGRkY3N0IKKzoxMDE5MTAwMDM5RjkwMTIwRkZGNzc4RkQ0RkY0MDA2MTA1NDhGRkY3MjIKKzoxMDE5MjAwMDMzRjk0RkY0ODA3MTAyNDhGRkY3MkVGOTEwQkQwMDAwMjMKKzoxMDE5MzAwMDAwMDgwMTQwMDAxMDAxNDA3RjIwMDg0OTA5NjgwODcwMzQKKzoxMDE5NDAwMDAwMjAwNjQ5MDk2ODg4NzAzRjIwMDQ0OTA5Njg0ODcwRUEKKzoxMDE5NTAwMDAwMjAwMjQ5MDk2OEM4NzA3MDQ3MDAwMDE4MDAwMDIwODQKKzoxMDE5NjAwMDAyNEExMDYwMDI0QTExNjA3MDQ3MDAwMDE0MDAwMDIwMTMKKzoxMDE5NzAwMDE4MDAwMDIwMTBCNTA0NDYwNEYwMEYwMEZGRjdCNEZENzYKKzoxMDE5ODAwMDEwQkQxMEI1MDQ0NjEwMjE0MUVBMjQxMEZGRjdBQ0ZENEMKKzoxMDE5OTAwMDEwQkQxMEI1MDQ0NjgxMjBGRkY3QTZGRDNGMkMwM0RERTYKKzoxMDE5QTAwMDNGMjBGRkY3QTFGRDAyRTAyMDQ2RkZGNzlERkQxMEJEOUYKKzoxMDE5QjAwMDJERTlGMDQxMDU0NjBDNDYxNjQ2N0YyRDAxREMzRjJDRjMKKzoxMDE5QzAwMDAxRERCREU4RjA4MUU2QjFFMjE3MDRFQjUyNzJEMjEwRkUKKzoxMDE5RDAwMDA1RUJDMjEyMUM0QjlBNUMyMTQ2RTMxNzA0RUI1MzczRDAKKzoxMDE5RTAwMERCMTBBNEVCQzMwNzAxMjNCQjQwMUE0M0QzQjIyMDQ2NEMKKzoxMDE5RjAwMEUyMTcwNEVCNTI3MkQyMTAwNUVCQzIxMjEyNEZCQjU0MjUKKzoxMDFBMDAwMDFBRTBFMjE3MDRFQjUyNzJEMjEwMDVFQkMyMTIwRTRCMzEKKzoxMDFBMTAwMDlBNUMyMTQ2RTMxNzA0RUI1MzczREIxMEE0RUJDMzA3NzYKKzoxMDFBMjAwMDAxMjNCQjQwOUE0MzIwNDZFMzE3MDRFQjUzNzNEQjEwQkEKKzoxMDFBMzAwMDA1RUJDMzEzMDQ0RkZBNTQyMzQ2MkE0NjIxNDYyODQ2OTEKKzoxMDFBNDAwMDAwRjA0MkY4MDBCRkJDRTc3MDAwMDAyMDEwQjUwNDQ2NkIKKzoxMDFBNTAwMDA0RjAzRjAxNDFGMDQwMDBGRkY3NDZGRDEwQkQxMEI1MTYKKzoxMDFBNjAwMDA0NDYyMDQ2RkZGNzhERkYyMDQ2RkZGNzgzRkYxMEJEOTkKKzoxMDFBNzAwMDEwQjUwNDQ2MDRGMDBGMDE0MUYwQjAwMEZGRjczNEZENEIKKzoxMDFBODAwMDEwQkQwMDAwMTBCNTA0NDY0RkY0ODA3MTA2NDhGRkY3MDIKKzoxMDFBOTAwMDc5Rjg0RkY0N0E3MTIwNDYwMEYwNTZGQTRGRjQ4MDcxQ0QKKzoxMDFBQTAwMDAxNDhGRkY3NzFGODEwQkQwMDA4MDE0MDcwQjUwNDlDQjMKKzoxMDFBQjAwMDA0NEQyODYwMjk3MTZBNzFBQjcxRUM3MTAwMjUwMTRFRUIKKzoxMDFBQzAwMDM1NzI3MEJENzAwNDAwMjAxMEI1N0YyODAwREQ3RjIwQzYKKzoxMDFBRDAwMDdGMkEwMEREN0YyMjNGMjkwMEREM0YyMTNGMkIwMERERjMKKzoxMDFBRTAwMDNGMjMxMDRDMjQ2ODI0Nzg4NDQyMDJERDBENEMyNDY4ODYKKzoxMDFBRjAwMDIwNzAwQzRDMjQ2OEE0Nzg5NDQyMDJEQTA5NEMyNDY4QzMKKzoxMDFCMDAwMEEyNzAwODRDMjQ2ODY0Nzg4QzQyMDJERDA1NEMyNDY4N0QKKzoxMDFCMTAwMDYxNzAwNDRDMjQ2OEU0Nzg5QzQyMDJEQTAxNEMyNDY4MjkKKzoxMDFCMjAwMEUzNzAxMEJEMTgwMDAwMjA3MEI1MDAyNDJDRTAxOTQ4QTcKKzoxMDFCMzAwMDAwNjg0MTc4NjAxQ0IxRUJDMDBGMDBEQjIyRTAxNTQ4NjMKKzoxMDFCNDAwMDAwNjhDMDc4QjBFQkM0MEYwMERBMUZFMDIwNDZGRkY3NTIKKzoxMDFCNTAwMDhGRkYxMDQ5MDk2ODA4NzhGRkY3ODFGRjBENDgwMDY4N0EKKzoxMDFCNjAwMDA1NzgwOUUwODAyMTAxRkIwNDUxMEI0QTEyNjg1MDVDQTIKKzoxMDFCNzAwMEZGRjdDOEZDNjgxQ0M1QjIwNjQ4MDA2ODgwNzhBODQyMTgKKzoxMDFCODAwMEYwREEwMEJGNjAxQ0M0QjIxMDJDRDBEQjAwQkZGRkY3M0UKKzoxMDFCOTAwMEQzRkU3MEJEMTgwMDAwMjAxNDAwMDAyMDA4QjUwMDI1RjkKKzoxMDFCQTAwMDAwMjY2NzQ4NDA2ODY3NDkwODYwRkZGNzYzRkFGRkY3NTcKKzoxMDFCQjAwMEJERkJGRkY3MzlGOEZGRjczM0ZFRkZGNzVCRkM3RjIwMzMKKzoxMDFCQzAwMDIwMjMwNzIyMDUyMTAwOTA1RjQ4RkZGNzZGRkY0RkY0QTUKKzoxMDFCRDAwMDAwNDE1RTQ4RkVGN0Q4RkZGRkY3MEFGOTVDNDkwODYwNEMKKzoxMDFCRTAwMDA4NDYwMDY4MDAyODcwRDFGRkY3NTZGQzU5QTIwMDIxNzIKKzoxMDFCRjAwMDA4NDZGRkY3RjVGREZGRjc5N0ZGRkVGNzg5RkUzNTIwNTIKKzoxMDFDMDAwMEZFRjcwQUZFNEU0RDA1RjU3MDM2NTg0ODA1NjAxRUUwOTkKKzoxMDFDMTAwMDU2NDgwMDY4RkVGNzA2RkUwNDQ2MDQyQzExRDBGRkY3NzQKKzoxMDFDMjAwMDNCRkM1M0EyMDAyMTA4NDZGRkY3REFGRDU1QTIxMDIxMjQKKzoxMDFDMzAwMDAwMjBGRkY3RDVGREZGRjc3N0ZGNEZGNDdBNzBGRkY3MkQKKzoxMDFDNDAwMEQzRjg0QTQ4MDA2ODAwRjUwMDYwNDg0OTA4NjA0NzQ4RjIKKzoxMDFDNTAwMDAwNjhCMDQyRENEM0ZGRjcxRkZDNEVBMjAwMjEwODQ2MEIKKzoxMDFDNjAwMEZGRjdCRUZENTFBMjEwMjEwMDIwRkZGN0I5RkRGRkY3REQKKzoxMDFDNzAwMDVCRkY1MjQ4MDI2ODUyNDgwMTY4MzE0OEZGRjc1QUY5NDEKKzoxMDFDODAwMDMzNDkwODYwMDg0NjAwNjg5MEIxNEVBMjIwMjEwMDIwMjgKKzoxMDFDOTAwMEZGRjdBNkZEM0JBMjMwMjEwMDIwRkZGN0ExRkRGRkY3RDMKKzoxMDFDQTAwMDQzRkYwMjIwRkVGNzU0RkQ0RkY0N0E3MEZGRjc5Q0Y4RDMKKzoxMDFDQjAwMEZGRjc5NkY5NDdBMjIwMjEwMDIwRkZGNzkxRkRGRkY3REIKKzoxMDFDQzAwMDMzRkY0RkY0N0E3MEZGRjc2QkZBRkZGNzA1RkExQzQ4MDEKKzoxMDFDRDAwMDAwNjgxRjQ5MDg2MDA4NDYwMDY4QjBGMTAwNUYxRUQ5MUYKKzoxMDFDRTAwMDA4NDYwMDY4NDA0OTg4NDIxOUQyMTY0ODAwNjgxNDQ5REQKKzoxMDFDRjAwMDg4NDIxNEQ5MTM0ODAwNjgzQzQ5ODg0MjBGRDIxMTQ4RTEKKzoxMDFEMDAwMDAwNjgzQjQ5MDg2MDBFNDkwODY4RkVGNzZDRkE0RkY0MUEKKzoxMDFEMTAwMDgwNDE0ODAzRkZGN0I2RjkzNTQ4MDA2ODgwNDdGRkY3NzAKKzoxMDFEMjAwMEJCRkIzNEEyMDAyMTA4NDZGRkY3NUFGRDM0QTIxMDIxNjQKKzoxMDFEMzAwMDAwMjBGRkY3NTVGREZGRjdGN0ZFMDBCRkZFRTcwMDAwQUMKKzoxMDFENDAwMDAwNDAwMDA4MDgwMDAwMjA4QzFGMDAwODAwMDgwMTQwMjcKKzoxMDFENTAwMDA0MDAwMDIwNDU3MjYxNzM2NTIwNDE3MDcwNkM2OTYzRjYKKzoxMDFENjAwMDYxNzQ2OTZGNkUyRTJFMkUwMDAwMDAwMDAwMDAwMDIwQUUKKzoxMDFENzAwMDQ1NzI2MTczNjUyMDQ2NkM2MTczNjgyMDQ2NjE2OTZDQzkKKzoxMDFEODAwMDAwMDAwMDAwNTc2MTY5NzQyMDc0NkYyMDUyNjU3Mzc0RkQKKzoxMDFEOTAwMDYxNzI3NDAwNTA3MjZGNjc3MjYxNkQyMDQxNzA3MDZDNzcKKzoxMDFEQTAwMDY5NjM2MTc0Njk2RjZFMkUwMDAwMDAwMDUwNkM2NTYxOUMKKzoxMDFEQjAwMDczNjUyMDU3NjE2OTc0MkUyRTJFMDAwMDU0MDAwMDIwOTgKKzoxMDFEQzAwMDUwMDAwMDIwNTA3MjZGNjc3MjYxNkQyMDQ2NjE2OTZDMkYKKzoxMDFERDAwMDAwMDAwMDAwNTI2NTYxNjQ3OTIwNzQ2RjIwNTI2NTczQzEKKzoxMDFERTAwMDc0NjE3Mjc0MDAwMDAwMDAwMEMwMDAyMDAwMDAwNDA4NEMKKzoxMDFERjAwMDBDMDAwMDIwNEU2RjIwNDE3MDcwNDM2RjY0NjUyMTAwMUQKKzoxMDFFMDAwMDU2NjU3MjNBNDk0MTUwNUY3NjMxMkUzMDMxMDAwMDAwRkMKKzoxMDFFMTAwMDA2NDgwMDIxMDdFMDAyNjgxMkIxMDI2ODUyMUUwMjYwMDMKKzoxMDFFMjAwMDAwMUQ0QTFDRDFCMjAwMjlGNUQwNzA0NzZDMDAwMDIwN0IKKzoxMDFFMzAwMDA4QjUwMTIxMUMyMEZGRjczRkY5NEZGNDgwNTBBREY4QTEKKzoxMDFFNDAwMDAwMDAwMzIwOERGODAyMDAxMDIwOERGODAzMDA2OTQ2ODEKKzoxMDFFNTAwMDEwNDhGRUY3QzVGRDgwMjBBREY4MDAwMDY5NDYwRTQ4MjkKKzoxMDFFNjAwMEZFRjdCRUZENEZGNDgwNzBBREY4MDAwMDY5NDYwQjQ4RTgKKzoxMDFFNzAwMEZFRjdCNkZENEZGNDgwNTEwNjQ4RkVGNzg1RkU4MDIxM0YKKzoxMDFFODAwMDA1NDhGRUY3ODFGRTRGRjQ4MDcxMDQ0OEZFRjc3Q0ZFQTIKKzoxMDFFOTAwMDA4QkQwMDAwMDAwQzAxNDAwMDEwMDE0MDAwMDgwMTQwOTYKKzoxMDFFQTAwMDA4QjUwMTIxMDkyMEZGRjcwN0Y5NEZGNDIwNDBBREY4RUMKKzoxMDFFQjAwMDAwMDAwMzIwOERGODAyMDAxODIwOERGODAzMDA2OTQ2MDkKKzoxMDFFQzAwMDA3NDhGRUY3OERGRDRGRjQ4MDQwQURGODAwMDAwNDIwNzgKKzoxMDFFRDAwMDhERjgwMzAwNjk0NjAyNDhGRUY3ODJGRDA4QkQwMDAwNDgKKzoxMDFFRTAwMDAwMEMwMTQwMDBCNTg1QjBGRkY3QTJGRkZGRjdEOEZGNTcKKzoxMDFFRjAwMDAxMjE4ODAzRkZGN0QwRjgwMDIwQURGODAwMDA0RkY0NkYKKzoxMDFGMDAwMDgyNzBBREY4MDIwMDAwMjBBREY4MDQwMDAyMjBBREY4QTgKKzoxMDFGMTAwMDA2MDAwMTIwQURGODA4MDA0MDAyQURGODBBMDAxODIwQzQKKzoxMDFGMjAwMEFERjgwQzAwMDAyMEFERjgwRTAwMDcyMEFERjgxMDAwNTEKKzoxMDFGMzAwMDY5NDYwNDQ4RkZGNzVFRjkwMTIxMDI0OEZGRjc0MEY5QkUKKzoxMDFGNDAwMDA1QjAwMEJEMDAzODAwNDA3MEI1MDY0NjBENDYyQzQ2NzEKKzoxMDFGNTAwMDAwRTA2NDFFMDIyMTBDNDhGRkY3M0VGOTA4QjkwMDJDOEUKKzoxMDFGNjAwMEY3RDEzMTQ2MDg0OEZGRjc0M0Y5MkM0NjAwRTA2NDFFREMKKzoxMDFGNzAwMDAxMjEwNTQ4RkZGNzMwRjkwOEI5MDAyQ0Y3RDEwMjQ4RDQKKzoxMDFGODAwMEZGRjczM0Y5QzBCMjcwQkQwMDM4MDA0MDAwMDAwMDAwMTgKKzoxMDFGOTAwMDAwMDAwMDVGMDAwMDAwMDcwMDA3MDAxNDdGMTQ3RjE0OUEKKzoxMDFGQTAwMDI0MkE3RjJBMTIyMzEzMDg2NDYyMzY0OTU1MjI1MDAwREUKKzoxMDFGQjAwMDA1MDMwMDAwMDAxQzIyNDEwMDAwNDEyMjFDMDAwODJBRTkKKzoxMDFGQzAwMDFDMkEwODA4MDgzRTA4MDgwMDUwMzAwMDAwMDgwODA4Q0QKKzoxMDFGRDAwMDA4MDgwMDYwNjAwMDAwMjAxMDA4MDQwMjNFNTE0OTQ1RDYKKzoxMDFGRTAwMDNFMDA0MjdGNDAwMDQyNjE1MTQ5NDYyMTQxNDU0QjMxMEMKKzoxMDFGRjAwMDE4MTQxMjdGMTAyNzQ1NDU0NTM5M0M0QTQ5NDkzMDAxOUMKKzoxMDIwMDAwMDcxMDkwNTAzMzY0OTQ5NDkzNjA2NDk0OTI5MUUwMDM2RjIKKzoxMDIwMTAwMDM2MDAwMDAwNTYzNjAwMDAwMDA4MTQyMjQxMTQxNDE0NDMKKzoxMDIwMjAwMDE0MTQ0MTIyMTQwODAwMDIwMTUxMDkwNjMyNDk3OTQxNzEKKzoxMDIwMzAwMDNFN0UxMTExMTE3RTdGNDk0OTQ5MzYzRTQxNDE0MTIyODAKKzoxMDIwNDAwMDdGNDE0MTIyMUM3RjQ5NDk0OTQxN0YwOTA5MDEwMTNFRTUKKzoxMDIwNTAwMDQxNDE1MTMyN0YwODA4MDg3RjAwNDE3RjQxMDAyMDQwMDQKKzoxMDIwNjAwMDQxM0YwMTdGMDgxNDIyNDE3RjQwNDA0MDQwN0YwMjA0RUQKKzoxMDIwNzAwMDAyN0Y3RjA0MDgxMDdGM0U0MTQxNDEzRTdGMDkwOTA5RUMKKzoxMDIwODAwMDA2M0U0MTUxMjE1RTdGMDkxOTI5NDY0NjQ5NDk0OTMxOTkKKzoxMDIwOTAwMDAxMDE3RjAxMDEzRjQwNDA0MDNGMUYyMDQwMjAxRjdGNDIKKzoxMDIwQTAwMDIwMTgyMDdGNjMxNDA4MTQ2MzAzMDQ3ODA0MDM2MTUxMkIKKzoxMDIwQjAwMDQ5NDU0MzAwMDA3RjQxNDEwMjA0MDgxMDIwNDE0MTdGMEYKKzoxMDIwQzAwMDAwMDAwNDAyMDEwMjA0NDA0MDQwNDA0MDAwMDEwMjA0QkMKKzoxMDIwRDAwMDAwMjA1NDU0NTQ3ODdGNDg0NDQ0MzgzODQ0NDQ0NDIwQzEKKzoxMDIwRTAwMDM4NDQ0NDQ4N0YzODU0NTQ1NDE4MDg3RTA5MDEwMjA4ODMKKzoxMDIwRjAwMDE0NTQ1NDNDN0YwODA0MDQ3ODAwNDQ3RDQwMDAyMDQwODAKKzoxMDIxMDAwMDQ0M0QwMDAwN0YxMDI4NDQwMDQxN0Y0MDAwN0MwNDE4QkIKKzoxMDIxMTAwMDA0Nzg3QzA4MDQwNDc4Mzg0NDQ0NDQzODdDMTQxNDE0NEIKKzoxMDIxMjAwMDA4MDgxNDE0MTg3QzdDMDgwNDA0MDg0ODU0NTQ1NDIwRUIKKzoxMDIxMzAwMDA0M0Y0NDQwMjAzQzQwNDAyMDdDMUMyMDQwMjAxQzNDNkMKKzoxMDIxNDAwMDQwMzA0MDNDNDQyODEwMjg0NDBDNTA1MDUwM0M0NDY0REIKKzoxMDIxNTAwMDU0NEM0NDAwMDgzNjQxMDAwMDAwN0YwMDAwMDA0MTM2MjYKKzoxMDIxNjAwMDA4MDAwODA4MkExQzA4MDgxQzJBMDgwODAwRTBGMDM4QTMKKzoxMDIxNzAwMDBDMEMwQzBDMzhGOEMwMDAwMDFGN0ZFMDgwODA4MDgwQzEKKzoxMDIxODAwMEUwRkYxRjAwMDAwMDAwMDEwMTAxMDEwMTAwMDAwMDAwNEMKKzoxMDIxOTAwMDAwMTAxODE4RkNGQzAwMDAwMDAwMDAwMDAwMDAwMDAwMDcKKzoxMDIxQTAwMEZGRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDEwMDAwMkYKKzoxMDIxQjAwMDAwMDAwMDAwMDAwODFDMEMwQzBDMEM4Q0Y4RjAwMDAwNTcKKzoxMDIxQzAwMDAwRjBGODlDOEM4Njg2ODM4MzgwMDAwMDAwMDEwMTAxNkEKKzoxMDIxRDAwMDAxMDEwMTAxMDEwMTAwMDAwMDA4MUMwQzBDMEMwQzhDMTkKKzoxMDIxRTAwMEY4RjAwMDAwMDA4MEMwODA4MTgzODNDN0ZGN0MwMDAwN0UKKzoxMDIxRjAwMDAwMDAwMTAxMDEwMTAxMDEwMDAwMDAwMDAwMDAwMDgwNTkKKzoxMDIyMDAwMEMwNzAzOEZDRkMwMDAwMDAwMDFDMUUxQjExMTgxMEZGRTEKKzoxMDIyMTAwMEZGMTAxODAwMDAwMDAwMDAwMDAwMDAwMTAxMDAwMDAwOTUKKzoxMDIyMjAwMDAwMDBGNEZDMUMwQzBDMEMwQzAwMDAwMDAwODBDMzgzQUMKKzoxMDIyMzAwMDgzODM4M0M3RkU3ODAwMDAwMDAwMDAwMTAxMDEwMTAxRDMKKzoxMDIyNDAwMDAwMDAwMDAwMDBDMEYwNzgxQzBDMEMwQzA4MDAwMDAwMUUKKzoxMDIyNTAwMDAwM0ZGRkMzODM4MzgzQzNGRTdDMDAwMDAwMDAwMDAxQjYKKzoxMDIyNjAwMDAxMDEwMTAxMDAwMDAwMDAwMDBDMEMwQzBDOENDQzdDNjYKKzoxMDIyNzAwMDNDMEMwMDAwMDAwMDgwRjA3QzBGMDMwMDAwMDAwMDAwMTgKKzoxMDIyODAwMDAwMDAwMTAxMDAwMDAwMDAwMDAwMDAwMDAwRjBGODFDNDgKKzoxMDIyOTAwMDBDMEMwQzBDRjhGMDAwMDAwMEY4RkY4RjA3MDYwNjhGRkUKKzoxMDIyQTAwMEZGRjgwMDAwMDAwMDAxMDMwMzAzMDMwMTAxMDAwMDAwMjgKKzoxMDIyQjAwMDAwRjBGODFDMEMwQzBDMUNGOEUwMDAwMDAwMDE4NzhFRUMKKzoxMDIyQzAwMDhDOEM4Q0VFN0YxRjAwMDAwMDAwMDEwMTAxMDEwMTAwRDkKKzoxMDIyRDAwMDAwMDAwMDAwMDYwMDAwMDAwMDAwMDAwMDAwMEYwMDAwRTkKKzoxMDIyRTAwMDBGMDAwMDBGMDAwMDBGMDAwMDAwMDAwMDAwMDAwMDAwQzEKKzoxMDIyRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwREUKKzoxMDIzMDAwMDAwMDAwNzAwMDAxRTAwRTAxRjAwRkYxRkY4RkYwM0ZGOTIKKzoxMDIzMTAwMDFGMDBGRjAxMDAwRjAwMDAwMDAwMDAwMDAwMDAwMDAwOEYKKzoxMDIzMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQUQKKzoxMDIzMzAwMDBFMDAwMDAwQzA3RjAwRjhGRjAxRkNGRjA3RkNGRjA3NTQKKzoxMDIzNDAwMDNFODAwRjBFMDAwRTBFMDAwRTBFMDAwRTFFODAwRkZDQzMKKzoxMDIzNTAwMEZGMDdGQ0ZGMDdGOEZGMDFDMDdGMDAwMDAwMDAwRTAwMzAKKzoxMDIzNjAwMDAwMDA3MDAwMEUzODAwMEUzODAwMEUxQzAwMEUwRTAwMkIKKzoxMDIzNzAwMDBFRkVGRjBGRkVGRjBGRkVGRjBGRkVGRjBGMDAwMDBFMTEKKzoxMDIzODAwMDAwMDAwRTAwMDAwRTAwMDAwRTAwMDAwMDBFMDAwMDAwMTUKKzoxMDIzOTAwMDYwMDAwRjc4ODAwRjdDQzAwRjdDRTAwRjFFRjAwRjBFRTYKKzoxMDIzQTAwMEY4MEUwRTdDMEUwRTNFMEUxRTFGMEVGRTBGMEVGQzA3Q0MKKzoxMDIzQjAwMDBFRjgwMzBFRjAwMTBFMDAwMDAwMEUwMDAwMDAzMDgwNDkKKzoxMDIzQzAwMDAxMzg4MDAzM0M4MDA3M0M4MDBGMUUwMDBGMEUwRTBFNkMKKzoxMDIzRDAwMDBFMEUwRTBFMEUwRTFFMUYwRkZFRkYwRkZDRkIwN0ZDNTcKKzoxMDIzRTAwMEY5MDNGMEUwMDEwMDAwMDAwRjAwMDAwMDAwRjAwMDAwMjEKKzoxMDIzRjAwMEY4MDAwMEZFMDA4MEVGMDBDMEU3MDBGMEUxMDA3Q0UwQTQKKzoxMDI0MDAwMDAwM0VFMDAwRkVGRjBGRkVGRjBGRkVGRjBGRkVGRjBGN0UKKzoxMDI0MTAwMDAwRTAwMDAwRTAwMDBFMDAwMDAwMDA4MDAxRjg4NzAzRUIKKzoxMDI0MjAwMEZFODcwN0ZFODcwRkZFMDcwRjBFMDMwRThFMDMwRThFMkMKKzoxMDI0MzAwMDAzMEU4RTA3MEY4RUZGMDcwRUZGMDcwRUZFMDMwMEZDMzQKKzoxMDI0NDAwMDAwMDAwMDAwMEUwMDAwMDBDMDdGMDBGMEZGMDFGOEZGNTgKKzoxMDI0NTAwMDA3RkNGRjA3M0UwRTBGMEUwNzBFMEUwNzBFMEUwNzBFQUYKKzoxMDI0NjAwMDFFMEYwRjNFRkYwRjNDRkUwNzM4RkUwMzMwRjgwMTAwNDEKKzoxMDI0NzAwMDAwMDAwRTAwMDAwMDBFMDAwMDBFMDAwMDBFMDAwMDBFMTYKKzoxMDI0ODAwMDAwMEYwRUUwMEYwRUY4MEYwRUZFMEY4RUZGMDBDRTBGQTYKKzoxMDI0OTAwMDAwRkUwMzAwRkUwMDAwM0UwMDAwMUUwMDAwMDAwMDAwRTEKKzoxMDI0QTAwMDBFMDAwMDAwRjBFMDAxRjhGQjAzRkNGQjA3RkVGRjBGNEQKKzoxMDI0QjAwMDFFMUYwRjBFMEUwRTBFMEUwRTBFMEUwRTFFMUYwRkZFMDgKKzoxMDI0QzAwMEZGMEZGQ0ZCMDdGQ0ZCMDNGMEUwMDEwMDAwMDAwRTAwMjcKKzoxMDI0RDAwMDAwMDBGMDgzMDFGODg3MDNGQzhGMDdGRTlGMEYxRTFFOEMKKzoxMDI0RTAwMDBGMEUxQzBFMEUxQzBFMEUxQzBFMUU4RTBGRkNGRjA3NzgKKzoxMDI0RjAwMEZDRkYwM0Y4RkYwMUMwN0YwMDAwMDAwMDAwMDAwMDAwQTcKKzoxMDI1MDAwMDAwMDAwMDVGMDAwMDAwMDcwMDA3MDAxNDdGMTQ3RjE0MjQKKzoxMDI1MTAwMDI0MkE3RjJBMTIyMzEzMDg2NDYyMzY0OTU1MjI1MDAwNjgKKzoxMDI1MjAwMDA1MDMwMDAwMDAxQzIyNDEwMDAwNDEyMjFDMDAwODJBNzMKKzoxMDI1MzAwMDFDMkEwODA4MDgzRTA4MDgwMDUwMzAwMDAwMDgwODA4NTcKKzoxMDI1NDAwMDA4MDgwMDYwNjAwMDAwMjAxMDA4MDQwMjNFNTE0OTQ1NjAKKzoxMDI1NTAwMDNFMDA0MjdGNDAwMDQyNjE1MTQ5NDYyMTQxNDU0QjMxOTYKKzoxMDI1NjAwMDE4MTQxMjdGMTAyNzQ1NDU0NTM5M0M0QTQ5NDkzMDAxMjYKKzoxMDI1NzAwMDcxMDkwNTAzMzY0OTQ5NDkzNjA2NDk0OTI5MUUwMDM2N0QKKzoxMDI1ODAwMDM2MDAwMDAwNTYzNjAwMDAwMDA4MTQyMjQxMTQxNDE0Q0UKKzoxMDI1OTAwMDE0MTQ0MTIyMTQwODAwMDIwMTUxMDkwNjMyNDk3OTQxRkMKKzoxMDI1QTAwMDNFN0UxMTExMTE3RTdGNDk0OTQ5MzYzRTQxNDE0MTIyMEIKKzoxMDI1QjAwMDdGNDE0MTIyMUM3RjQ5NDk0OTQxN0YwOTA5MDEwMTNFNzAKKzoxMDI1QzAwMDQxNDE1MTMyN0YwODA4MDg3RjAwNDE3RjQxMDAyMDQwOEYKKzoxMDI1RDAwMDQxM0YwMTdGMDgxNDIyNDE3RjQwNDA0MDQwN0YwMjA0NzgKKzoxMDI1RTAwMDAyN0Y3RjA0MDgxMDdGM0U0MTQxNDEzRTdGMDkwOTA5NzcKKzoxMDI1RjAwMDA2M0U0MTUxMjE1RTdGMDkxOTI5NDY0NjQ5NDk0OTMxMjQKKzoxMDI2MDAwMDAxMDE3RjAxMDEzRjQwNDA0MDNGMUYyMDQwMjAxRjdGQ0MKKzoxMDI2MTAwMDIwMTgyMDdGNjMxNDA4MTQ2MzAzMDQ3ODA0MDM2MTUxQjUKKzoxMDI2MjAwMDQ5NDU0MzAwMDA3RjQxNDEwMjA0MDgxMDIwNDE0MTdGOTkKKzoxMDI2MzAwMDAwMDAwNDAyMDEwMjA0NDA0MDQwNDA0MDAwMDEwMjA0NDYKKzoxMDI2NDAwMDAwMjA1NDU0NTQ3ODdGNDg0NDQ0MzgzODQ0NDQ0NDIwNEIKKzoxMDI2NTAwMDM4NDQ0NDQ4N0YzODU0NTQ1NDE4MDg3RTA5MDEwMjA4MEQKKzoxMDI2NjAwMDE0NTQ1NDNDN0YwODA0MDQ3ODAwNDQ3RDQwMDAyMDQwMEEKKzoxMDI2NzAwMDQ0M0QwMDAwN0YxMDI4NDQwMDQxN0Y0MDAwN0MwNDE4NDYKKzoxMDI2ODAwMDA0Nzg3QzA4MDQwNDc4Mzg0NDQ0NDQzODdDMTQxNDE0RDYKKzoxMDI2OTAwMDA4MDgxNDE0MTg3QzdDMDgwNDA0MDg0ODU0NTQ1NDIwNzYKKzoxMDI2QTAwMDA0M0Y0NDQwMjAzQzQwNDAyMDdDMUMyMDQwMjAxQzNDRjcKKzoxMDI2QjAwMDQwMzA0MDNDNDQyODEwMjg0NDBDNTA1MDUwM0M0NDY0NjYKKzoxMDI2QzAwMDU0NEM0NDAwMDgzNjQxMDAwMDAwN0YwMDAwMDA0MTM2QjEKKzoxMDI2RDAwMDA4MDAwODA4MkExQzA4MDgxQzJBMDgwODAwRTBGMDM4MkUKKzoxMDI2RTAwMDBDMEMwQzBDMzhGOEMwMDAwMDFGN0ZFMDgwODA4MDgwNEMKKzoxMDI2RjAwMEUwRkYxRjAwMDAwMDAwMDEwMTAxMDEwMTAwMDAwMDAwRDcKKzoxMDI3MDAwMDAwMTAxODE4RkNGQzAwMDAwMDAwMDAwMDAwMDAwMDAwOTEKKzoxMDI3MTAwMEZGRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDEwMDAwQjkKKzoxMDI3MjAwMDAwMDAwMDAwMDAwODFDMEMwQzBDMEM4Q0Y4RjAwMDAwRTEKKzoxMDI3MzAwMDAwRjBGODlDOEM4Njg2ODM4MzgwMDAwMDAwMDEwMTAxRjQKKzoxMDI3NDAwMDAxMDEwMTAxMDEwMTAwMDAwMDA4MUMwQzBDMEMwQzhDQTMKKzoxMDI3NTAwMEY4RjAwMDAwMDA4MEMwODA4MTgzODNDN0ZGN0MwMDAwMDgKKzoxMDI3NjAwMDAwMDAwMTAxMDEwMTAxMDEwMDAwMDAwMDAwMDAwMDgwRTMKKzoxMDI3NzAwMEMwNzAzOEZDRkMwMDAwMDAwMDFDMUUxQjExMTgxMEZGNkMKKzoxMDI3ODAwMEZGMTAxODAwMDAwMDAwMDAwMDAwMDAwMTAxMDAwMDAwMjAKKzoxMDI3OTAwMDAwMDBGNEZDMUMwQzBDMEMwQzAwMDAwMDAwODBDMzgzMzcKKzoxMDI3QTAwMDgzODM4M0M3RkU3ODAwMDAwMDAwMDAwMTAxMDEwMTAxNUUKKzoxMDI3QjAwMDAwMDAwMDAwMDBDMEYwNzgxQzBDMEMwQzA4MDAwMDAwQTkKKzoxMDI3QzAwMDAwM0ZGRkMzODM4MzgzQzNGRTdDMDAwMDAwMDAwMDAxNDEKKzoxMDI3RDAwMDAxMDEwMTAxMDAwMDAwMDAwMDBDMEMwQzBDOENDQzdDRjEKKzoxMDI3RTAwMDNDMEMwMDAwMDAwMDgwRjA3QzBGMDMwMDAwMDAwMDAwQTMKKzoxMDI3RjAwMDAwMDAwMTAxMDAwMDAwMDAwMDAwMDAwMDAwRjBGODFDRDMKKzoxMDI4MDAwMDBDMEMwQzBDRjhGMDAwMDAwMEY4RkY4RjA3MDYwNjhGODgKKzoxMDI4MTAwMEZGRjgwMDAwMDAwMDAxMDMwMzAzMDMwMTAxMDAwMDAwQjIKKzoxMDI4MjAwMDAwRjBGODFDMEMwQzBDMUNGOEUwMDAwMDAwMDE4NzhFNzYKKzoxMDI4MzAwMDhDOEM4Q0VFN0YxRjAwMDAwMDAwMDEwMTAxMDEwMTAwNjMKKzoxMDI4NDAwMDAwMDAwMDAwMDYwMDAwMDAwMDAwMDAwMDAwMEYwMDAwNzMKKzoxMDI4NTAwMDBGMDAwMDBGMDAwMDBGMDAwMDAwMDAwMDAwMDAwMDAwNEIKKzoxMDI4NjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjgKKzoxMDI4NzAwMDAwMDAwNzAwMDAxRTAwRTAxRjAwRkYxRkY4RkYwM0ZGMUQKKzoxMDI4ODAwMDFGMDBGRjAxMDAwRjAwMDAwMDAwMDAwMDAwMDAwMDAwMUEKKzoxMDI4OTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMzgKKzoxMDI4QTAwMDBFMDAwMDAwQzA3RjAwRjhGRjAxRkNGRjA3RkNGRjA3REYKKzoxMDI4QjAwMDNFODAwRjBFMDAwRTBFMDAwRTBFMDAwRTFFODAwRkZDNEUKKzoxMDI4QzAwMEZGMDdGQ0ZGMDdGOEZGMDFDMDdGMDAwMDAwMDAwRTAwQkIKKzoxMDI4RDAwMDAwMDA3MDAwMEUzODAwMEUzODAwMEUxQzAwMEUwRTAwQjYKKzoxMDI4RTAwMDBFRkVGRjBGRkVGRjBGRkVGRjBGRkVGRjBGMDAwMDBFOUMKKzoxMDI4RjAwMDAwMDAwRTAwMDAwRTAwMDAwRTAwMDAwMDBFMDAwMDAwQTAKKzoxMDI5MDAwMDYwMDAwRjc4ODAwRjdDQzAwRjdDRTAwRjFFRjAwRjBFNzAKKzoxMDI5MTAwMEY4MEUwRTdDMEUwRTNFMEUxRTFGMEVGRTBGMEVGQzA3NTYKKzoxMDI5MjAwMDBFRjgwMzBFRjAwMTBFMDAwMDAwMEUwMDAwMDAzMDgwRDMKKzoxMDI5MzAwMDAxMzg4MDAzM0M4MDA3M0M4MDBGMUUwMDBGMEUwRTBFRjYKKzoxMDI5NDAwMDBFMEUwRTBFMEUwRTFFMUYwRkZFRkYwRkZDRkIwN0ZDRTEKKzoxMDI5NTAwMEY5MDNGMEUwMDEwMDAwMDAwRjAwMDAwMDAwRjAwMDAwQUIKKzoxMDI5NjAwMEY4MDAwMEZFMDA4MEVGMDBDMEU3MDBGMEUxMDA3Q0UwMkUKKzoxMDI5NzAwMDAwM0VFMDAwRkVGRjBGRkVGRjBGRkVGRjBGRkVGRjBGMDkKKzoxMDI5ODAwMDAwRTAwMDAwRTAwMDBFMDAwMDAwMDA4MDAxRjg4NzAzNzYKKzoxMDI5OTAwMEZFODcwN0ZFODcwRkZFMDcwRjBFMDMwRThFMDMwRThFQjcKKzoxMDI5QTAwMDAzMEU4RTA3MEY4RUZGMDcwRUZGMDcwRUZFMDMwMEZDQkYKKzoxMDI5QjAwMDAwMDAwMDAwMEUwMDAwMDBDMDdGMDBGMEZGMDFGOEZGRTMKKzoxMDI5QzAwMDA3RkNGRjA3M0UwRTBGMEUwNzBFMEUwNzBFMEUwNzBFM0EKKzoxMDI5RDAwMDFFMEYwRjNFRkYwRjNDRkUwNzM4RkUwMzMwRjgwMTAwQ0MKKzoxMDI5RTAwMDAwMDAwRTAwMDAwMDBFMDAwMDBFMDAwMDBFMDAwMDBFQTEKKzoxMDI5RjAwMDAwMEYwRUUwMEYwRUY4MEYwRUZFMEY4RUZGMDBDRTBGMzEKKzoxMDJBMDAwMDAwRkUwMzAwRkUwMDAwM0UwMDAwMUUwMDAwMDAwMDAwNkIKKzoxMDJBMTAwMDBFMDAwMDAwRjBFMDAxRjhGQjAzRkNGQjA3RkVGRjBGRDcKKzoxMDJBMjAwMDFFMUYwRjBFMEUwRTBFMEUwRTBFMEUwRTFFMUYwRkZFOTIKKzoxMDJBMzAwMEZGMEZGQ0ZCMDdGQ0ZCMDNGMEUwMDEwMDAwMDAwRTAwQjEKKzoxMDJBNDAwMDAwMDBGMDgzMDFGODg3MDNGQzhGMDdGRTlGMEYxRTFFMTYKKzoxMDJBNTAwMDBGMEUxQzBFMEUxQzBFMEUxQzBFMUU4RTBGRkNGRjA3MDIKKzoxMDJBNjAwMEZDRkYwM0Y4RkYwMUMwN0YwMDAwMDAwMEQwQjJDRkFBMzYKKzoxMDJBNzAwMEM2RDVBQUJCQ0NERDAwMDBEMEIyQ0ZBQUM2RDVBQUJCQjIKKzoxMDJBODAwMENDREQwMDAwQTBBMUEyQTNBNEE1MEUwRjBBMDUwMDAwQTIKKzoxMDJBOTAwMDVBNEIzQzJEMUUwRjAwMDAwMDAwMDAwMDAwMDAwMDAwRkIKKzoxMDJBQTAwMDAwMDAwMDAwMEYxRTJEM0M0QjVBMDAwMDAwMDAwMDAwRUIKKzoxMDJBQjAwMDAwMDAwMDAwMDAwMDAwMDAyMTEwNDIyMDYzMzA4NDQwMkMKKzoxMDJBQzAwMEE1NTBDNjYwRTc3MDA4ODEyOTkxNEFBMTZCQjE4Q0MxRkQKKzoxMDJBRDAwMEFERDFDRUUxRUZGMTMxMTIxMDAyNzMzMjUyMjJCNTUyNzQKKzoxMDJBRTAwMDk0NDJGNzcyRDY2MjM5OTMxODgzN0JCMzVBQTNCREQzNEQKKzoxMDJBRjAwMDlDQzNGRkYzREVFMzYyMjQ0MzM0MjAwNDAxMTRFNjY0NDQKKzoxMDJCMDAwMEM3NzRBNDQ0ODU1NDZBQTU0QkI1Mjg4NTA5OTVFRUU1OUMKKzoxMDJCMTAwMENGRjVBQ0M1OERENTUzMzY3MjI2MTExNjMwMDZENzc2NTMKKzoxMDJCMjAwMEY2NjY5NTU2QjQ0NjVCQjc3QUE3MTk5NzM4ODdERkY3RUMKKzoxMDJCMzAwMEZFRTc5REQ3QkNDN0M0NDhFNTU4ODY2OEE3Nzg0MDA4MUIKKzoxMDJCNDAwMDYxMTgwMjI4MjMzOENDQzlFREQ5OEVFOUFGRjk0ODg5M0MKKzoxMDJCNTAwMDY5OTkwQUE5MkJCOUY1NUFENDRBQjc3QTk2NkE3MTFBQjMKKzoxMDJCNjAwMDUwMEEzMzNBMTIyQUZEREJEQ0NCQkZGQjlFRUI3OTlCOEMKKzoxMDJCNzAwMDU4OEIzQkJCMUFBQkE2NkM4NzdDRTQ0Q0M1NUMyMjJDMDMKKzoxMDJCODAwMDAzM0M2MDBDNDExQ0FFRUQ4RkZERUNDRENEREQyQUFEREMKKzoxMDJCOTAwMDBCQkQ2ODhENDk5RDk3N0VCNjZFRDU1RUY0NEUxMzNFOTMKKzoxMDJCQTAwMDMyMkU1MTFFNzAwRTlGRkZCRUVGRERERkZDQ0YxQkJGMkMKKzoxMDJCQjAwMDNBQUY1OTlGNzg4Rjg4OTFBOTgxQ0FCMUVCQTEwQ0QxMDYKKzoxMDJCQzAwMDJEQzE0RUYxNkZFMTgwMTBBMTAwQzIzMEUzMjAwNDUwMEUKKzoxMDJCRDAwMDI1NDA0NjcwNjc2MEI5ODM5ODkzRkJBM0RBQjMzREMzODEKKzoxMDJCRTAwMDFDRDM3RkUzNUVGM0IxMDI5MDEyRjMyMkQyMzIzNTQyNUUKKzoxMDJCRjAwMDE0NTI3NzYyNTY3MkVBQjVDQkE1QTg5NTg5ODU2RUY1MTEKKzoxMDJDMDAwMDRGRTUyQ0Q1MERDNUUyMzRDMzI0QTAxNDgxMDQ2Njc0QUQKKzoxMDJDMTAwMDQ3NjQyNDU0MDU0NERCQTdGQUI3OTk4N0I4OTc1RkU3NjAKKzoxMDJDMjAwMDdFRjcxREM3M0NEN0QzMjZGMjM2OTEwNkIwMTY1NzY2RkQKKzoxMDJDMzAwMDc2NzYxNTQ2MzQ1NjRDRDk2REM5MEVGOTJGRTlDODk5RTgKKzoxMDJDNDAwMEU5ODk4QUI5QUJBOTQ0NTg2NTQ4MDY3ODI3NjhDMDE4NEQKKzoxMDJDNTAwMEUxMDg4MjM4QTMyODdEQ0I1Q0RCM0ZFQjFFRkJGOThCQzAKKzoxMDJDNjAwMEQ4OUJCQkFCOUFCQjc1NEE1NDVBMzc2QTE2N0FGMTBBOUQKKzoxMDJDNzAwMEQwMUFCMzJBOTIzQTJFRkQwRkVENkNERDREQ0RBQUJERDAKKzoxMDJDODAwMDhCQURFODlEQzk4RDI2N0MwNzZDNjQ1QzQ1NENBMjNDRUQKKzoxMDJDOTAwMDgzMkNFMDFDQzEwQzFGRUYzRUZGNURDRjdDREY5QkFGQTAKKzoxMDJDQTAwMEJBQkZEOThGRjg5RjE3NkUzNjdFNTU0RTc0NUU5MzJFM0QKKzoxMDJDQjAwMEIyM0VEMTBFRjAxRTAwMDBEODJDMDAwODAwMDAwMDIwMEIKKzoxMDJDQzAwMDcwMDAwMDAwNkMwMTAwMDg0ODJEMDAwODcwMDAwMDIwMTIKKzoxMDJDRDAwMDgwMzcwMDAwODgwMTAwMDgwMDAwMDAwMDAwMDAwMDAwQUMKKzoxMDJDRTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRTQKKzoxMDJDRjAwMDAwMDAwMDAwMjUwMDAwMDAwMEEyNEEwNDAwMDAwMDAwQkYKKzoxMDJEMDAwMDAwMDAwMDAwMDEwMjAzMDQwNjA3MDgwOTAwMDA4MEMwNUIKKzoxMDJEMTAwMEUwRjBGOEZDRkUwMUZGMDAwMDAwMDAwMDAwMDAwMDAwRjEKKzoxMDJEMjAwMDAwNjAwOTAwRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM0IKKzoxMDJEMzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOTMKKzoxMDJENDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwODMKKzoxMDJENTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNzMKKzoxMDJENjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjMKKzoxMDJENzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNTMKKzoxMDJEODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNDMKKzoxMDJEOTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMzMKKzoxMDJEQTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjMKKzoxMDJEQjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTMKKzoxMDJEQzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDMKKzoxMDJERDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRjMKKzoxMDJERTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRTMKKzoxMDJERjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRDMKKzoxMDJFMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQzIKKzoxMDJFMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQjIKKzoxMDJFMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQTIKKzoxMDJFMzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOTIKKzoxMDJFNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwODIKKzoxMDJFNTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNzIKKzoxMDJFNjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjIKKzoxMDJFNzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNTIKKzoxMDJFODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNDIKKzoxMDJFOTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMzIKKzoxMDJFQTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjIKKzoxMDJFQjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTIKKzoxMDJFQzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDIKKzoxMDJFRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRjIKKzoxMDJFRTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRTIKKzoxMDJFRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRDIKKzoxMDJGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQzEKKzoxMDJGMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQjEKKzoxMDJGMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQTEKKzoxMDJGMzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOTEKKzoxMDJGNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwODEKKzoxMDJGNTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNzEKKzoxMDJGNjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjEKKzoxMDJGNzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNTEKKzoxMDJGODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNDEKKzoxMDJGOTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMzEKKzoxMDJGQTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjEKKzoxMDJGQjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTEKKzoxMDJGQzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEKKzoxMDJGRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRjEKKzoxMDJGRTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRTEKKzoxMDJGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRDEKKzoxMDMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQzAKKzoxMDMwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQjAKKzoxMDMwMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQTAKKzoxMDMwMzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOTAKKzoxMDMwNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwODAKKzoxMDMwNTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNzAKKzoxMDMwNjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjAKKzoxMDMwNzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNTAKKzoxMDMwODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNDAKKzoxMDMwOTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMzAKKzoxMDMwQTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjAKKzoxMDMwQjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAKKzoxMDMwQzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKKzoxMDMwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRjAKKzoxMDMwRTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRTAKKzoxMDMwRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRDAKKzoxMDMxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQkYKKzoxMDMxMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQUYKKzoxMDMxMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOUYKKzoxMDMxMzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOEYKKzoxMDMxNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwN0YKKzoxMDMxNTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNkYKKzoxMDMxNjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNUYKKzoxMDMxNzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNEYKKzoxMDMxODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM0YKKzoxMDMxOTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMkYKKzoxMDMxQTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMUYKKzoxMDMxQjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEYKKzoxMDMxQzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRkYKKzoxMDMxRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRUYKKzoxMDMxRTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwREYKKzoxMDMxRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQ0YKKzoxMDMyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQkUKKzoxMDMyMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQUUKKzoxMDMyMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOUUKKzoxMDMyMzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOEUKKzoxMDMyNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwN0UKKzoxMDMyNTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNkUKKzoxMDMyNjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNUUKKzoxMDMyNzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNEUKKzoxMDMyODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM0UKKzoxMDMyOTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMkUKKzoxMDMyQTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMUUKKzoxMDMyQjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEUKKzoxMDMyQzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRkUKKzoxMDMyRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRUUKKzoxMDMyRTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwREUKKzoxMDMyRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQ0UKKzoxMDMzMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQkQKKzoxMDMzMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQUQKKzoxMDMzMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOUQKKzoxMDMzMzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOEQKKzoxMDMzNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwN0QKKzoxMDMzNTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNkQKKzoxMDMzNjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNUQKKzoxMDMzNzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNEQKKzoxMDMzODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM0QKKzoxMDMzOTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMkQKKzoxMDMzQTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMUQKKzoxMDMzQjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEQKKzoxMDMzQzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRkQKKzoxMDMzRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRUQKKzoxMDMzRTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwREQKKzoxMDMzRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQ0QKKzoxMDM0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQkMKKzoxMDM0MTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQUMKKzoxMDM0MjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOUMKKzoxMDM0MzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOEMKKzoxMDM0NDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwN0MKKzoxMDM0NTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNkMKKzoxMDM0NjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNUMKKzoxMDM0NzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNEMKKzoxMDM0ODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM0MKKzoxMDM0OTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMkMKKzoxMDM0QTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMUMKKzoxMDM0QjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEMKKzoxMDM0QzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRkMKKzoxMDM0RDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRUMKKzoxMDM0RTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwREMKKzoxMDM0RjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQ0MKKzoxMDM1MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQkIKKzoxMDM1MTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQUIKKzoxMDM1MjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOUIKKzoxMDM1MzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOEIKKzoxMDM1NDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwN0IKKzoxMDM1NTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNkIKKzoxMDM1NjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNUIKKzoxMDM1NzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNEIKKzoxMDM1ODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM0IKKzoxMDM1OTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMkIKKzoxMDM1QTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMUIKKzoxMDM1QjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEIKKzoxMDM1QzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRkIKKzoxMDM1RDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRUIKKzoxMDM1RTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwREIKKzoxMDM1RjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQ0IKKzoxMDM2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQkEKKzoxMDM2MTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQUEKKzoxMDM2MjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOUEKKzoxMDM2MzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOEEKKzoxMDM2NDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwN0EKKzoxMDM2NTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNkEKKzoxMDM2NjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNUEKKzoxMDM2NzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNEEKKzoxMDM2ODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM0EKKzoxMDM2OTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMkEKKzoxMDM2QTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMUEKKzoxMDM2QjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEEKKzoxMDM2QzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRkEKKzoxMDM2RDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRUEKKzoxMDM2RTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwREEKKzoxMDM2RjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQ0EKKzoxMDM3MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQjkKKzoxMDM3MTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQTkKKzoxMDM3MjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOTkKKzoxMDM3MzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwODkKKzoxMDM3NDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNzkKKzoxMDM3NTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjkKKzoxMDM3NjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNTkKKzoxMDM3NzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNDkKKzoxMDM3ODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMzkKKzoxMDM3OTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjkKKzoxMDM3QTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTkKKzoxMDM3QjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDkKKzoxMDM3QzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRjkKKzoxMDM3RDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRTkKKzoxMDM3RTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRDkKKzoxMDM3RjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQzkKKzoxMDM4MDAwMDgwNjU2Nzc4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRjQKKzoxMDM4MTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQTgKKzoxMDM4MjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOTgKKzoxMDM4MzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwODgKKzoxMDM4NDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNzgKKzoxMDM4NTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjgKKzoxMDM4NjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNTgKKzoxMDM4NzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNDgKKzoxMDM4ODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMzgKKzoxMDM4OTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjgKKzoxMDM4QTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTgKKzoxMDM4QjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDgKKzoxMDM4QzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRjgKKzoxMDM4RDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRTgKKzoxMDM4RTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRDgKKzoxMDM4RjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQzgKKzoxMDM5MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQjcKKzoxMDM5MTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQTcKKzoxMDM5MjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOTcKKzoxMDM5MzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwODcKKzoxMDM5NDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNzcKKzoxMDM5NTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjcKKzoxMDM5NjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNTcKKzoxMDM5NzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNDcKKzoxMDM5ODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMzcKKzoxMDM5OTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjcKKzoxMDM5QTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTcKKzoxMDM5QjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDcKKzoxMDM5QzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRjcKKzoxMDM5RDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRTcKKzoxMDM5RTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRDcKKzoxMDM5RjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQzcKKzoxMDNBMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQjYKKzoxMDNBMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQTYKKzoxMDNBMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOTYKKzoxMDNBMzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwODYKKzoxMDNBNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNzYKKzoxMDNBNTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjYKKzoxMDNBNjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNTYKKzoxMDNBNzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNDYKKzoxMDNBODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMzYKKzoxMDNBOTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjYKKzoxMDNBQTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTYKKzoxMDNBQjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDYKKzoxMDNBQzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRjYKKzoxMDNBRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRTYKKzoxMDNBRTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRDYKKzoxMDNBRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQzYKKzoxMDNCMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQjUKKzoxMDNCMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQTUKKzoxMDNCMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOTUKKzoxMDNCMzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwODUKKzoxMDNCNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNzUKKzoxMDNCNTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjUKKzoxMDNCNjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNTUKKzoxMDNCNzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNDUKKzoxMDNCODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMzUKKzoxMDNCOTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjUKKzoxMDNCQTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTUKKzoxMDNCQjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDUKKzoxMDNCQzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRjUKKzoxMDNCRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRTUKKzoxMDNCRTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRDUKKzoxMDNCRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQzUKKzoxMDNDMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQjQKKzoxMDNDMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQTQKKzoxMDNDMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOTQKKzoxMDNDMzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwODQKKzoxMDNDNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNzQKKzoxMDNDNTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjQKKzoxMDNDNjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNTQKKzoxMDNDNzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNDQKKzoxMDNDODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMzQKKzoxMDNDOTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjQKKzoxMDNDQTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTQKKzoxMDNDQjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQKKzoxMDNDQzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRjQKKzoxMDNDRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRTQKKzoxMDNDRTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRDQKKzoxMDNDRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQzQKKzoxMDNEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQjMKKzoxMDNEMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQTMKKzoxMDNEMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOTMKKzoxMDNEMzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwODMKKzoxMDNENDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNzMKKzoxMDNENTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjMKKzoxMDNENjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNTMKKzoxMDNENzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNDMKKzoxMDNEODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMzMKKzoxMDNEOTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjMKKzoxMDNEQTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTMKKzoxMDNEQjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDMKKzoxMDNEQzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRjMKKzoxMDNERDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRTMKKzoxMDNERTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRDMKKzoxMDNERjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQzMKKzoxMDNFMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQjIKKzoxMDNFMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQTIKKzoxMDNFMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOTIKKzoxMDNFMzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwODIKKzoxMDNFNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNzIKKzoxMDNFNTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjIKKzoxMDNFNjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNTIKKzoxMDNFNzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNDIKKzoxMDNFODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMzIKKzoxMDNFOTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjIKKzoxMDNFQTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTIKKzoxMDNFQjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDIKKzoxMDNFQzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRjIKKzoxMDNFRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRTIKKzoxMDNFRTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRDIKKzoxMDNFRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQzIKKzoxMDNGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQjEKKzoxMDNGMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQTEKKzoxMDNGMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOTEKKzoxMDNGMzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwODEKKzoxMDNGNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNzEKKzoxMDNGNTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjEKKzoxMDNGNjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNTEKKzoxMDNGNzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNDEKKzoxMDNGODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMzEKKzoxMDNGOTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjEKKzoxMDNGQTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTEKKzoxMDNGQjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEKKzoxMDNGQzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRjEKKzoxMDNGRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRTEKKzoxMDNGRTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRDEKKzoxMDNGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQzEKKzowMDAwMDAwMUZGCmRpZmYgLS1naXQgYS9nNDAxMzAyL2hleC9yZWFkbWUudHh0IGIvZzQwMTMwMi9oZXgvcmVhZG1lLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YTlmMjU4Ci0tLSAvZGV2L251bGwKKysrIGIvZzQwMTMwMi9oZXgvcmVhZG1lLnR4dApAQCAtMCwwICsxLDE0IEBACivJ+rPJsPy6rGJvb3Rsb2FkZXK6zWFwcGxpY2F0aW9utcS6z7KiLmhleCyyu9Do0qq808PcCisxo6zU2mFwcGxpY2F0aW9uxL/CvM/CseDQtG1lcmdlLmluac7EvP4KKzKjrNTaaGV4xL/CvM/Ct8Vib290bG9hZGVytcQuaGV4zsS8/qOs1eLA78rHU1RNMzJJQVBDb21iaW5lLmhleAorM6Osa2VpbCBvcHRpb25zwO+1xGRlYnVnwO/D5tGh1PF1c2Ugc2ltdWxhdG9yo6ywtGN0cmwrRjXU2mhleMS/wrzPwsn6s8m6z7KiLmhleCzV4sDvysd3YXRlcmN0cmxfY29tYmluZS5oZXgKKzSjrLTyv6pzZWdnZXLPwkotRmxhc2gKKzEpIEZpbGUgLT5vcGVuIGRhdGEgZmlsZSAo0aHU8cn6s8m1xHdhdGVyY3RybF9jb21iaW5lLmhleCkKKzIpIE9wdGlvbi0+Citwcm9qZWN0IHNldHRpbmdzIC0tVGFyZ2V0IEludGVyZmFjZdGh1PFTV0QKK3Byb2plY3Qgc2V0dGluZ3MgLS1DUFXRodTxRGV2aWNlLFNUIFNUTTMyRjEwMVJCLLm00aFDaGVjayBjb3JlIElECiszKXRhcmdldCAtLWNvbm5lY3Qsway907PJuaa687C0RjfPwtTYo6xGOdTL0NAgCisKKworIyNTVE0zMklBUENvbWJpbmU1MS5oZXggRzQwMTMwMrXEYm9vdGxvYWRlcgorIyNTVE0zMklBUENvbWJpbmU1MC5oZXggRzQwMTMwMLXEYm9vdGxvYWRlcgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2c0MDEzMDIvbGliL0c0MDFfZHJ2X2h3X1YwNC5saWIgYi9nNDAxMzAyL2xpYi9HNDAxX2Rydl9od19WMDQubGliCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3NDRkOTIKLS0tIC9kZXYvbnVsbAorKysgYi9nNDAxMzAyL2xpYi9HNDAxX2Rydl9od19WMDQubGliCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2c0MDEzMDIvbGliL2c0MDFfdWFydDVfdjAwMS5saWIgYi9nNDAxMzAyL2xpYi9nNDAxX3VhcnQ1X3YwMDEubGliCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0YWUxMjIKLS0tIC9kZXYvbnVsbAorKysgYi9nNDAxMzAyL2xpYi9nNDAxX3VhcnQ1X3YwMDEubGliCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2c0MDEzMDIvcHJvamVjdC9KTGlua1NldHRpbmdzLmluaSBiL2c0MDEzMDIvcHJvamVjdC9KTGlua1NldHRpbmdzLmluaQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZDUzYmI0Ci0tLSAvZGV2L251bGwKKysrIGIvZzQwMTMwMi9wcm9qZWN0L0pMaW5rU2V0dGluZ3MuaW5pCkBAIC0wLDAgKzEsMzUgQEAKK1tCUkVBS1BPSU5UU10KK0ZvcmNlSW1wVHlwZUFueSA9IDAKK1Nob3dJbmZvV2luID0gMQorRW5hYmxlRmxhc2hCUCA9IDIKK0JQRHVyaW5nRXhlY3V0aW9uID0gMAorW0NGSV0KK0NGSVNpemUgPSAweDAwCitDRklBZGRyID0gMHgwMAorW0NQVV0KK092ZXJyaWRlTWVtTWFwID0gMAorQWxsb3dTaW11bGF0aW9uID0gMQorU2NyaXB0RmlsZT0iIgorW0ZMQVNIXQorQ2FjaGVFeGNsdWRlU2l6ZSA9IDB4MDAKK0NhY2hlRXhjbHVkZUFkZHIgPSAweDAwCitNaW5OdW1CeXRlc0ZsYXNoREwgPSAwCitTa2lwUHJvZ09uQ1JDTWF0Y2ggPSAxCitWZXJpZnlEb3dubG9hZCA9IDEKK0FsbG93Q2FjaGluZyA9IDEKK0VuYWJsZUZsYXNoREwgPSAyCitPdmVycmlkZSA9IDAKK0RldmljZT0iVU5TUEVDSUZJRUQiCitbR0VORVJBTF0KK1dvcmtSQU1TaXplID0gMHgwMAorV29ya1JBTUFkZHIgPSAweDAwCitSQU1Vc2FnZUxpbWl0ID0gMHgwMAorW1NXT10KK1NXT0xvZ0ZpbGU9IiIKK1tNRU1dCitSZE92ZXJyaWRlT3JNYXNrID0gMHgwMAorUmRPdmVycmlkZUFuZE1hc2sgPSAweEZGRkZGRkZGCitSZE92ZXJyaWRlQWRkciA9IDB4RkZGRkZGRkYKK1dyT3ZlcnJpZGVPck1hc2sgPSAweDAwCitXck92ZXJyaWRlQW5kTWFzayA9IDB4RkZGRkZGRkYKK1dyT3ZlcnJpZGVBZGRyID0gMHhGRkZGRkZGRgpkaWZmIC0tZ2l0IGEvZzQwMTMwMi9wcm9qZWN0L2c0MDEzMDIudXZvcHQgYi9nNDAxMzAyL3Byb2plY3QvZzQwMTMwMi51dm9wdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNTY1NzlhCi0tLSAvZGV2L251bGwKKysrIGIvZzQwMTMwMi9wcm9qZWN0L2c0MDEzMDIudXZvcHQKQEAgLTAsMCArMSwxMzg4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgc3RhbmRhbG9uZT0ibm8iID8+Cis8UHJvamVjdE9wdCB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6bm9OYW1lc3BhY2VTY2hlbWFMb2NhdGlvbj0icHJvamVjdF9vcHQueHNkIj4KKworICA8U2NoZW1hVmVyc2lvbj4xLjA8L1NjaGVtYVZlcnNpb24+CisKKyAgPEhlYWRlcj4jIyMgdVZpc2lvbiBQcm9qZWN0LCAoQykgS2VpbCBTb2Z0d2FyZTwvSGVhZGVyPgorCisgIDxFeHRlbnNpb25zPgorICAgIDxjRXh0PiouYzwvY0V4dD4KKyAgICA8YUV4dD4qLnMqOyAqLnNyYzsgKi5hKjwvYUV4dD4KKyAgICA8b0V4dD4qLm9iajwvb0V4dD4KKyAgICA8bEV4dD4qLmxpYjwvbEV4dD4KKyAgICA8dEV4dD4qLnR4dDsgKi5oOyAqLmluYzwvdEV4dD4KKyAgICA8cEV4dD4qLnBsbTwvcEV4dD4KKyAgICA8Q3BwWD4qLmNwcDwvQ3BwWD4KKyAgPC9FeHRlbnNpb25zPgorCisgIDxEYXZlVG0+CisgICAgPGR3TG93RGF0ZVRpbWU+MDwvZHdMb3dEYXRlVGltZT4KKyAgICA8ZHdIaWdoRGF0ZVRpbWU+MDwvZHdIaWdoRGF0ZVRpbWU+CisgIDwvRGF2ZVRtPgorCisgIDxUYXJnZXQ+CisgICAgPFRhcmdldE5hbWU+ZmxvdzwvVGFyZ2V0TmFtZT4KKyAgICA8VG9vbHNldE51bWJlcj4weDQ8L1Rvb2xzZXROdW1iZXI+CisgICAgPFRvb2xzZXROYW1lPkFSTS1BRFM8L1Rvb2xzZXROYW1lPgorICAgIDxUYXJnZXRPcHRpb24+CisgICAgICA8Q0xLQURTPjgwMDAwMDA8L0NMS0FEUz4KKyAgICAgIDxPUFRUVD4KKyAgICAgICAgPGdGbGFncz4xPC9nRmxhZ3M+CisgICAgICAgIDxCZWVwQXRFbmQ+MTwvQmVlcEF0RW5kPgorICAgICAgICA8UnVuU2ltPjE8L1J1blNpbT4KKyAgICAgICAgPFJ1blRhcmdldD4wPC9SdW5UYXJnZXQ+CisgICAgICA8L09QVFRUPgorICAgICAgPE9QVEhYPgorICAgICAgICA8SGV4U2VsZWN0aW9uPjE8L0hleFNlbGVjdGlvbj4KKyAgICAgICAgPEZsYXNoQnl0ZT42NTUzNTwvRmxhc2hCeXRlPgorICAgICAgICA8SGV4UmFuZ2VMb3dBZGRyZXNzPjA8L0hleFJhbmdlTG93QWRkcmVzcz4KKyAgICAgICAgPEhleFJhbmdlSGlnaEFkZHJlc3M+MDwvSGV4UmFuZ2VIaWdoQWRkcmVzcz4KKyAgICAgICAgPEhleE9mZnNldD4wPC9IZXhPZmZzZXQ+CisgICAgICA8L09QVEhYPgorICAgICAgPE9QVExFWD4KKyAgICAgICAgPFBhZ2VXaWR0aD43OTwvUGFnZVdpZHRoPgorICAgICAgICA8UGFnZUxlbmd0aD42NjwvUGFnZUxlbmd0aD4KKyAgICAgICAgPFRhYlN0b3A+ODwvVGFiU3RvcD4KKyAgICAgICAgPExpc3RpbmdQYXRoPi4uXG91dEZsb3dcPC9MaXN0aW5nUGF0aD4KKyAgICAgIDwvT1BUTEVYPgorICAgICAgPExpc3RpbmdQYWdlPgorICAgICAgICA8Q3JlYXRlQ0xpc3Rpbmc+MTwvQ3JlYXRlQ0xpc3Rpbmc+CisgICAgICAgIDxDcmVhdGVBTGlzdGluZz4xPC9DcmVhdGVBTGlzdGluZz4KKyAgICAgICAgPENyZWF0ZUxMaXN0aW5nPjE8L0NyZWF0ZUxMaXN0aW5nPgorICAgICAgICA8Q3JlYXRlSUxpc3Rpbmc+MDwvQ3JlYXRlSUxpc3Rpbmc+CisgICAgICAgIDxBc21Db25kPjE8L0FzbUNvbmQ+CisgICAgICAgIDxBc21TeW1iPjE8L0FzbVN5bWI+CisgICAgICAgIDxBc21YcmVmPjA8L0FzbVhyZWY+CisgICAgICAgIDxDQ29uZD4xPC9DQ29uZD4KKyAgICAgICAgPENDb2RlPjA8L0NDb2RlPgorICAgICAgICA8Q0xpc3RJbmM+MDwvQ0xpc3RJbmM+CisgICAgICAgIDxDU3ltYj4wPC9DU3ltYj4KKyAgICAgICAgPExpbmtlckNvZGVMaXN0aW5nPjA8L0xpbmtlckNvZGVMaXN0aW5nPgorICAgICAgPC9MaXN0aW5nUGFnZT4KKyAgICAgIDxPUFRYTD4KKyAgICAgICAgPExNYXA+MTwvTE1hcD4KKyAgICAgICAgPExDb21tZW50cz4xPC9MQ29tbWVudHM+CisgICAgICAgIDxMR2VuZXJhdGVTeW1ib2xzPjE8L0xHZW5lcmF0ZVN5bWJvbHM+CisgICAgICAgIDxMTGliU3ltPjE8L0xMaWJTeW0+CisgICAgICAgIDxMTGluZXM+MTwvTExpbmVzPgorICAgICAgICA8TExvY1N5bT4xPC9MTG9jU3ltPgorICAgICAgICA8TFB1YlN5bT4xPC9MUHViU3ltPgorICAgICAgICA8TFhyZWY+MDwvTFhyZWY+CisgICAgICAgIDxMRXhwU2VsPjA8L0xFeHBTZWw+CisgICAgICA8L09QVFhMPgorICAgICAgPE9QVEZMPgorICAgICAgICA8dHZFeHA+MTwvdHZFeHA+CisgICAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4KKyAgICAgICAgPElzQ3VycmVudFRhcmdldD4xPC9Jc0N1cnJlbnRUYXJnZXQ+CisgICAgICA8L09QVEZMPgorICAgICAgPENwdUNvZGU+MjU1PC9DcHVDb2RlPgorICAgICAgPEJvb2tzPgorICAgICAgICA8Qm9vaz4KKyAgICAgICAgICA8TnVtYmVyPjA8L051bWJlcj4KKyAgICAgICAgICA8VGl0bGU+UmVmZXJlbmNlIE1hbnVhbDwvVGl0bGU+CisgICAgICAgICAgPFBhdGg+REFUQVNIVFNcU1RcU1RNMzJGMTB4eHguUERGPC9QYXRoPgorICAgICAgICA8L0Jvb2s+CisgICAgICAgIDxCb29rPgorICAgICAgICAgIDxOdW1iZXI+MTwvTnVtYmVyPgorICAgICAgICAgIDxUaXRsZT5UZWNobmljYWwgUmVmZXJlbmNlIE1hbnVhbDwvVGl0bGU+CisgICAgICAgICAgPFBhdGg+ZGF0YXNodHNcYXJtXGNvcnRleF9tM1xyMXAxXERESTAzMzdFX0NPUlRFWF9NM19SMVAxX1RSTS5QREY8L1BhdGg+CisgICAgICAgIDwvQm9vaz4KKyAgICAgICAgPEJvb2s+CisgICAgICAgICAgPE51bWJlcj4yPC9OdW1iZXI+CisgICAgICAgICAgPFRpdGxlPkdlbmVyaWMgVXNlciBHdWlkZTwvVGl0bGU+CisgICAgICAgICAgPFBhdGg+ZGF0YXNodHNcYXJtXGNvcnRleF9tM1xyMnAxXERVSTA1NTJBX0NPUlRFWF9NM19ER1VHLlBERjwvUGF0aD4KKyAgICAgICAgPC9Cb29rPgorICAgICAgPC9Cb29rcz4KKyAgICAgIDxEbGxPcHQ+CisgICAgICAgIDxTaW1EbGxOYW1lPlNBUk1DTTMuRExMPC9TaW1EbGxOYW1lPgorICAgICAgICA8U2ltRGxsQXJndW1lbnRzPi1SRU1BUDwvU2ltRGxsQXJndW1lbnRzPgorICAgICAgICA8U2ltRGxnRGxsTmFtZT5EQ00uRExMPC9TaW1EbGdEbGxOYW1lPgorICAgICAgICA8U2ltRGxnRGxsQXJndW1lbnRzPi1wQ00zPC9TaW1EbGdEbGxBcmd1bWVudHM+CisgICAgICAgIDxUYXJnZXREbGxOYW1lPlNBUk1DTTMuRExMPC9UYXJnZXREbGxOYW1lPgorICAgICAgICA8VGFyZ2V0RGxsQXJndW1lbnRzPjwvVGFyZ2V0RGxsQXJndW1lbnRzPgorICAgICAgICA8VGFyZ2V0RGxnRGxsTmFtZT5UQ00uRExMPC9UYXJnZXREbGdEbGxOYW1lPgorICAgICAgICA8VGFyZ2V0RGxnRGxsQXJndW1lbnRzPi1wQ00zPC9UYXJnZXREbGdEbGxBcmd1bWVudHM+CisgICAgICA8L0RsbE9wdD4KKyAgICAgIDxEZWJ1Z09wdD4KKyAgICAgICAgPHVTaW0+MDwvdVNpbT4KKyAgICAgICAgPHVUcmc+MTwvdVRyZz4KKyAgICAgICAgPHNMZEFwcD4xPC9zTGRBcHA+CisgICAgICAgIDxzR29tYWluPjE8L3NHb21haW4+CisgICAgICAgIDxzUmJyZWFrPjE8L3NSYnJlYWs+CisgICAgICAgIDxzUndhdGNoPjE8L3NSd2F0Y2g+CisgICAgICAgIDxzUm1lbT4xPC9zUm1lbT4KKyAgICAgICAgPHNSZnVuYz4xPC9zUmZ1bmM+CisgICAgICAgIDxzUmJveD4xPC9zUmJveD4KKyAgICAgICAgPHRMZEFwcD4xPC90TGRBcHA+CisgICAgICAgIDx0R29tYWluPjE8L3RHb21haW4+CisgICAgICAgIDx0UmJyZWFrPjE8L3RSYnJlYWs+CisgICAgICAgIDx0UndhdGNoPjE8L3RSd2F0Y2g+CisgICAgICAgIDx0Um1lbT4xPC90Um1lbT4KKyAgICAgICAgPHRSZnVuYz4wPC90UmZ1bmM+CisgICAgICAgIDx0UmJveD4xPC90UmJveD4KKyAgICAgICAgPHNSdW5EZWI+MDwvc1J1bkRlYj4KKyAgICAgICAgPHNMcnRpbWU+MDwvc0xydGltZT4KKyAgICAgICAgPG5Uc2VsPjc8L25Uc2VsPgorICAgICAgICA8c0RsbD48L3NEbGw+CisgICAgICAgIDxzRGxsUGE+PC9zRGxsUGE+CisgICAgICAgIDxzRGxnRGxsPjwvc0RsZ0RsbD4KKyAgICAgICAgPHNEbGdQYT48L3NEbGdQYT4KKyAgICAgICAgPHNJZmlsZT4uXG1lcmdlLmluaTwvc0lmaWxlPgorICAgICAgICA8dERsbD48L3REbGw+CisgICAgICAgIDx0RGxsUGE+PC90RGxsUGE+CisgICAgICAgIDx0RGxnRGxsPjwvdERsZ0RsbD4KKyAgICAgICAgPHREbGdQYT48L3REbGdQYT4KKyAgICAgICAgPHRJZmlsZT48L3RJZmlsZT4KKyAgICAgICAgPHBNb24+U2VnZ2VyXEpMMkNNMy5kbGw8L3BNb24+CisgICAgICA8L0RlYnVnT3B0PgorICAgICAgPFRhcmdldERyaXZlckRsbFJlZ2lzdHJ5PgorICAgICAgICA8U2V0UmVnRW50cnk+CisgICAgICAgICAgPE51bWJlcj4wPC9OdW1iZXI+CisgICAgICAgICAgPEtleT5KTDJDTTM8L0tleT4KKyAgICAgICAgICA8TmFtZT4tVTIwMzcwNDIxIC1PNzE4IC1TOSAtQTAgLUMwIC1KVTEgLUpJMTI3LjAuMC4xIC1KUDAgLVJTVDAgLU4wMCgiQVJNIENvcmVTaWdodCBTVy1EUCIpIC1EMDAoMUJBMDE0NzcpIC1MMDAoMCkgLVRPMTggLVRDMTAwMDAwMDAgLVRQMjEgLVREUzgwMDcgLVREVDAgLVREQzFGIC1USUVGRkZGRkZGRiAtVElQOCAtVEIxIC1URkUwIC1GTzE1IC1GRDIwMDAwMDAwIC1GQzIwMDAgLUZOMSAtRkYwU1RNMzJGMTB4XzUxMiAtRlMwODAwMDAwMCAtRkwwODAwMDA8L05hbWU+CisgICAgICAgIDwvU2V0UmVnRW50cnk+CisgICAgICAgIDxTZXRSZWdFbnRyeT4KKyAgICAgICAgICA8TnVtYmVyPjA8L051bWJlcj4KKyAgICAgICAgICA8S2V5PkRMR1VBUk08L0tleT4KKyAgICAgICAgICA8TmFtZT4oMTA2PS0xLC0xLC0xLC0xLDApKDEwNz0tMSwtMSwtMSwtMSwwKTwvTmFtZT4KKyAgICAgICAgPC9TZXRSZWdFbnRyeT4KKyAgICAgICAgPFNldFJlZ0VudHJ5PgorICAgICAgICAgIDxOdW1iZXI+MDwvTnVtYmVyPgorICAgICAgICAgIDxLZXk+RExHVEFSTTwvS2V5PgorICAgICAgICAgIDxOYW1lPigxMDEwPS0xLC0xLC0xLC0xLDApKDEwMDc9LTEsLTEsLTEsLTEsMCkoMTAwOD0tMSwtMSwtMSwtMSwwKSgxMDA5PS0xLC0xLC0xLC0xLDApPC9OYW1lPgorICAgICAgICA8L1NldFJlZ0VudHJ5PgorICAgICAgICA8U2V0UmVnRW50cnk+CisgICAgICAgICAgPE51bWJlcj4wPC9OdW1iZXI+CisgICAgICAgICAgPEtleT5VTDJDTTM8L0tleT4KKyAgICAgICAgICA8TmFtZT4tVVYwMDEwTTlFIC1PNzE4IC1TMTAgLUMwIC1UTzE4IC1UQzEwMDAwMDAwIC1UUDIxIC1URFM4MDA3IC1URFQwIC1UREMxRiAtVElFRkZGRkZGRkYgLVRJUDggLUZPMTUgLUZEMjAwMDAwMDAgLUZDMjAwMCAtRk4xIC1GRjBTVE0zMkYxMHhfNTEyIC1GUzA4MDAwMDAwIC1GTDA0MDAwMDwvTmFtZT4KKyAgICAgICAgPC9TZXRSZWdFbnRyeT4KKyAgICAgICAgPFNldFJlZ0VudHJ5PgorICAgICAgICAgIDxOdW1iZXI+MDwvTnVtYmVyPgorICAgICAgICAgIDxLZXk+RExHREFSTTwvS2V5PgorICAgICAgICAgIDxOYW1lPigxMDEwPS0xLC0xLC0xLC0xLDApKDEwMDc9LTEsLTEsLTEsLTEsMCkoMTAwOD05MCwxMjAsNDU2LDM0NSwwKSgxMDA5PS0xLC0xLC0xLC0xLDApPC9OYW1lPgorICAgICAgICA8L1NldFJlZ0VudHJ5PgorICAgICAgICA8U2V0UmVnRW50cnk+CisgICAgICAgICAgPE51bWJlcj4wPC9OdW1iZXI+CisgICAgICAgICAgPEtleT5BUk1EQkdGTEFHUzwvS2V5PgorICAgICAgICAgIDxOYW1lPi1UMDwvTmFtZT4KKyAgICAgICAgPC9TZXRSZWdFbnRyeT4KKyAgICAgIDwvVGFyZ2V0RHJpdmVyRGxsUmVnaXN0cnk+CisgICAgICA8QnJlYWtwb2ludD4KKyAgICAgICAgPEJwPgorICAgICAgICAgIDxOdW1iZXI+MDwvTnVtYmVyPgorICAgICAgICAgIDxUeXBlPjA8L1R5cGU+CisgICAgICAgICAgPExpbmVOdW1iZXI+Mjk2PC9MaW5lTnVtYmVyPgorICAgICAgICAgIDxFbmFibGVkRmxhZz4wPC9FbmFibGVkRmxhZz4KKyAgICAgICAgICA8QWRkcmVzcz4xMzQyOTYxNzI8L0FkZHJlc3M+CisgICAgICAgICAgPEJ5dGVPYmplY3Q+MDwvQnl0ZU9iamVjdD4KKyAgICAgICAgICA8TWFueU9iamVjdHM+MDwvTWFueU9iamVjdHM+CisgICAgICAgICAgPFNpemVPZk9iamVjdD4wPC9TaXplT2ZPYmplY3Q+CisgICAgICAgICAgPEJyZWFrQnlBY2Nlc3M+MDwvQnJlYWtCeUFjY2Vzcz4KKyAgICAgICAgICA8QnJlYWtJZlJDb3VudD4xPC9CcmVha0lmUkNvdW50PgorICAgICAgICAgIDxGaWxlbmFtZT48L0ZpbGVuYW1lPgorICAgICAgICAgIDxFeGVjQ29tbWFuZD48L0V4ZWNDb21tYW5kPgorICAgICAgICAgIDxFeHByZXNzaW9uPlxcRzQwMTMwMl9mbG93XC4uLy4uL3N1cHdpc2RvbS9zcF9kYXRhLmNcMjk2PC9FeHByZXNzaW9uPgorICAgICAgICA8L0JwPgorICAgICAgICA8QnA+CisgICAgICAgICAgPE51bWJlcj4xPC9OdW1iZXI+CisgICAgICAgICAgPFR5cGU+MDwvVHlwZT4KKyAgICAgICAgICA8TGluZU51bWJlcj42MjM8L0xpbmVOdW1iZXI+CisgICAgICAgICAgPEVuYWJsZWRGbGFnPjA8L0VuYWJsZWRGbGFnPgorICAgICAgICAgIDxBZGRyZXNzPjEzNDI5NTEzMjwvQWRkcmVzcz4KKyAgICAgICAgICA8Qnl0ZU9iamVjdD4wPC9CeXRlT2JqZWN0PgorICAgICAgICAgIDxNYW55T2JqZWN0cz4wPC9NYW55T2JqZWN0cz4KKyAgICAgICAgICA8U2l6ZU9mT2JqZWN0PjA8L1NpemVPZk9iamVjdD4KKyAgICAgICAgICA8QnJlYWtCeUFjY2Vzcz4wPC9CcmVha0J5QWNjZXNzPgorICAgICAgICAgIDxCcmVha0lmUkNvdW50PjE8L0JyZWFrSWZSQ291bnQ+CisgICAgICAgICAgPEZpbGVuYW1lPjwvRmlsZW5hbWU+CisgICAgICAgICAgPEV4ZWNDb21tYW5kPjwvRXhlY0NvbW1hbmQ+CisgICAgICAgICAgPEV4cHJlc3Npb24+XFxHNDAxMzAyX2Zsb3dcLi4vLi4vc3Vwd2lzZG9tL3NwX2NvbnN1bWUuY1w2MjM8L0V4cHJlc3Npb24+CisgICAgICAgIDwvQnA+CisgICAgICAgIDxCcD4KKyAgICAgICAgICA8TnVtYmVyPjI8L051bWJlcj4KKyAgICAgICAgICA8VHlwZT4wPC9UeXBlPgorICAgICAgICAgIDxMaW5lTnVtYmVyPjIwNjwvTGluZU51bWJlcj4KKyAgICAgICAgICA8RW5hYmxlZEZsYWc+MTwvRW5hYmxlZEZsYWc+CisgICAgICAgICAgPEFkZHJlc3M+MTM0MjkxNTk4PC9BZGRyZXNzPgorICAgICAgICAgIDxCeXRlT2JqZWN0PjA8L0J5dGVPYmplY3Q+CisgICAgICAgICAgPE1hbnlPYmplY3RzPjA8L01hbnlPYmplY3RzPgorICAgICAgICAgIDxTaXplT2ZPYmplY3Q+MDwvU2l6ZU9mT2JqZWN0PgorICAgICAgICAgIDxCcmVha0J5QWNjZXNzPjA8L0JyZWFrQnlBY2Nlc3M+CisgICAgICAgICAgPEJyZWFrSWZSQ291bnQ+MTwvQnJlYWtJZlJDb3VudD4KKyAgICAgICAgICA8RmlsZW5hbWU+PC9GaWxlbmFtZT4KKyAgICAgICAgICA8RXhlY0NvbW1hbmQ+PC9FeGVjQ29tbWFuZD4KKyAgICAgICAgICA8RXhwcmVzc2lvbj5cXEc0MDEzMDJfZmxvd1wuLi8uLi9zdXB3aXNkb20vc3BfY29tbXVuaWNhdGUuY1wyMDY8L0V4cHJlc3Npb24+CisgICAgICAgIDwvQnA+CisgICAgICA8L0JyZWFrcG9pbnQ+CisgICAgICA8V2F0Y2hXaW5kb3cxPgorICAgICAgICA8V3c+CisgICAgICAgICAgPGNvdW50PjA8L2NvdW50PgorICAgICAgICAgIDxXaW5OdW1iZXI+MTwvV2luTnVtYmVyPgorICAgICAgICAgIDxJdGVtVGV4dD42MCo0MDk1LzY1MzwvSXRlbVRleHQ+CisgICAgICAgIDwvV3c+CisgICAgICAgIDxXdz4KKyAgICAgICAgICA8Y291bnQ+MTwvY291bnQ+CisgICAgICAgICAgPFdpbk51bWJlcj4xPC9XaW5OdW1iZXI+CisgICAgICAgICAgPEl0ZW1UZXh0PmNhcmRrZXkKKzwvSXRlbVRleHQ+CisgICAgICAgIDwvV3c+CisgICAgICAgIDxXdz4KKyAgICAgICAgICA8Y291bnQ+MjwvY291bnQ+CisgICAgICAgICAgPFdpbk51bWJlcj4xPC9XaW5OdW1iZXI+CisgICAgICAgICAgPEl0ZW1UZXh0PnVzYXJ0X2luZm88L0l0ZW1UZXh0PgorICAgICAgICA8L1d3PgorICAgICAgPC9XYXRjaFdpbmRvdzE+CisgICAgICA8TWVtb3J5V2luZG93MT4KKyAgICAgICAgPE1tPgorICAgICAgICAgIDxXaW5OdW1iZXI+MTwvV2luTnVtYmVyPgorICAgICAgICAgIDxTdWJUeXBlPjA8L1N1YlR5cGU+CisgICAgICAgICAgPEl0ZW1UZXh0PjB4MjAwMDRFQzA8L0l0ZW1UZXh0PgorICAgICAgICA8L01tPgorICAgICAgPC9NZW1vcnlXaW5kb3cxPgorICAgICAgPE1lbW9yeVdpbmRvdzI+CisgICAgICAgIDxNbT4KKyAgICAgICAgICA8V2luTnVtYmVyPjI8L1dpbk51bWJlcj4KKyAgICAgICAgICA8U3ViVHlwZT4yPC9TdWJUeXBlPgorICAgICAgICAgIDxJdGVtVGV4dD4wWDIwMDAyRjEwPC9JdGVtVGV4dD4KKyAgICAgICAgPC9NbT4KKyAgICAgIDwvTWVtb3J5V2luZG93Mj4KKyAgICAgIDxNZW1vcnlXaW5kb3czPgorICAgICAgICA8TW0+CisgICAgICAgICAgPFdpbk51bWJlcj4zPC9XaW5OdW1iZXI+CisgICAgICAgICAgPFN1YlR5cGU+MjwvU3ViVHlwZT4KKyAgICAgICAgICA8SXRlbVRleHQ+MHgyMDAwMDBlZTwvSXRlbVRleHQ+CisgICAgICAgIDwvTW0+CisgICAgICA8L01lbW9yeVdpbmRvdzM+CisgICAgICA8TWVtb3J5V2luZG93ND4KKyAgICAgICAgPE1tPgorICAgICAgICAgIDxXaW5OdW1iZXI+NDwvV2luTnVtYmVyPgorICAgICAgICAgIDxTdWJUeXBlPjI8L1N1YlR5cGU+CisgICAgICAgICAgPEl0ZW1UZXh0PjB4MDgwMDdDODQ8L0l0ZW1UZXh0PgorICAgICAgICA8L01tPgorICAgICAgPC9NZW1vcnlXaW5kb3c0PgorICAgICAgPERlYnVnRmxhZz4KKyAgICAgICAgPHRyYWNlPjA8L3RyYWNlPgorICAgICAgICA8cGVyaW9kaWM+MTwvcGVyaW9kaWM+CisgICAgICAgIDxhTHdpbj4xPC9hTHdpbj4KKyAgICAgICAgPGFDb3Zlcj4wPC9hQ292ZXI+CisgICAgICAgIDxhU2VyMT4wPC9hU2VyMT4KKyAgICAgICAgPGFTZXIyPjA8L2FTZXIyPgorICAgICAgICA8YVBhPjA8L2FQYT4KKyAgICAgICAgPHZpZXdtb2RlPjE8L3ZpZXdtb2RlPgorICAgICAgICA8dnJTZWw+MDwvdnJTZWw+CisgICAgICAgIDxhU3ltPjA8L2FTeW0+CisgICAgICAgIDxhVGJveD4wPC9hVGJveD4KKyAgICAgICAgPEFzY1MxPjE8L0FzY1MxPgorICAgICAgICA8QXNjUzI+MDwvQXNjUzI+CisgICAgICAgIDxBc2NTMz4wPC9Bc2NTMz4KKyAgICAgICAgPGFTZXIzPjA8L2FTZXIzPgorICAgICAgICA8ZVByb2Y+MDwvZVByb2Y+CisgICAgICAgIDxhTGE+MDwvYUxhPgorICAgICAgICA8YVBhMT4wPC9hUGExPgorICAgICAgICA8QXNjUzQ+MDwvQXNjUzQ+CisgICAgICAgIDxhU2VyND4wPC9hU2VyND4KKyAgICAgICAgPFN0a0xvYz4wPC9TdGtMb2M+CisgICAgICAgIDxUcmNXaW4+MDwvVHJjV2luPgorICAgICAgICA8bmV3Q3B1PjA8L25ld0NwdT4KKyAgICAgICAgPHVQcm90PjA8L3VQcm90PgorICAgICAgPC9EZWJ1Z0ZsYWc+CisgICAgICA8TGludEV4ZWN1dGFibGU+PC9MaW50RXhlY3V0YWJsZT4KKyAgICAgIDxMaW50Q29uZmlnRmlsZT48L0xpbnRDb25maWdGaWxlPgorICAgIDwvVGFyZ2V0T3B0aW9uPgorICA8L1RhcmdldD4KKworICA8VGFyZ2V0PgorICAgIDxUYXJnZXROYW1lPnRpbWVyPC9UYXJnZXROYW1lPgorICAgIDxUb29sc2V0TnVtYmVyPjB4NDwvVG9vbHNldE51bWJlcj4KKyAgICA8VG9vbHNldE5hbWU+QVJNLUFEUzwvVG9vbHNldE5hbWU+CisgICAgPFRhcmdldE9wdGlvbj4KKyAgICAgIDxDTEtBRFM+ODAwMDAwMDwvQ0xLQURTPgorICAgICAgPE9QVFRUPgorICAgICAgICA8Z0ZsYWdzPjE8L2dGbGFncz4KKyAgICAgICAgPEJlZXBBdEVuZD4xPC9CZWVwQXRFbmQ+CisgICAgICAgIDxSdW5TaW0+MTwvUnVuU2ltPgorICAgICAgICA8UnVuVGFyZ2V0PjA8L1J1blRhcmdldD4KKyAgICAgIDwvT1BUVFQ+CisgICAgICA8T1BUSFg+CisgICAgICAgIDxIZXhTZWxlY3Rpb24+MTwvSGV4U2VsZWN0aW9uPgorICAgICAgICA8Rmxhc2hCeXRlPjY1NTM1PC9GbGFzaEJ5dGU+CisgICAgICAgIDxIZXhSYW5nZUxvd0FkZHJlc3M+MDwvSGV4UmFuZ2VMb3dBZGRyZXNzPgorICAgICAgICA8SGV4UmFuZ2VIaWdoQWRkcmVzcz4wPC9IZXhSYW5nZUhpZ2hBZGRyZXNzPgorICAgICAgICA8SGV4T2Zmc2V0PjA8L0hleE9mZnNldD4KKyAgICAgIDwvT1BUSFg+CisgICAgICA8T1BUTEVYPgorICAgICAgICA8UGFnZVdpZHRoPjc5PC9QYWdlV2lkdGg+CisgICAgICAgIDxQYWdlTGVuZ3RoPjY2PC9QYWdlTGVuZ3RoPgorICAgICAgICA8VGFiU3RvcD44PC9UYWJTdG9wPgorICAgICAgICA8TGlzdGluZ1BhdGg+Li5cb3V0VGltZXJcPC9MaXN0aW5nUGF0aD4KKyAgICAgIDwvT1BUTEVYPgorICAgICAgPExpc3RpbmdQYWdlPgorICAgICAgICA8Q3JlYXRlQ0xpc3Rpbmc+MTwvQ3JlYXRlQ0xpc3Rpbmc+CisgICAgICAgIDxDcmVhdGVBTGlzdGluZz4xPC9DcmVhdGVBTGlzdGluZz4KKyAgICAgICAgPENyZWF0ZUxMaXN0aW5nPjE8L0NyZWF0ZUxMaXN0aW5nPgorICAgICAgICA8Q3JlYXRlSUxpc3Rpbmc+MDwvQ3JlYXRlSUxpc3Rpbmc+CisgICAgICAgIDxBc21Db25kPjE8L0FzbUNvbmQ+CisgICAgICAgIDxBc21TeW1iPjE8L0FzbVN5bWI+CisgICAgICAgIDxBc21YcmVmPjA8L0FzbVhyZWY+CisgICAgICAgIDxDQ29uZD4xPC9DQ29uZD4KKyAgICAgICAgPENDb2RlPjA8L0NDb2RlPgorICAgICAgICA8Q0xpc3RJbmM+MDwvQ0xpc3RJbmM+CisgICAgICAgIDxDU3ltYj4wPC9DU3ltYj4KKyAgICAgICAgPExpbmtlckNvZGVMaXN0aW5nPjA8L0xpbmtlckNvZGVMaXN0aW5nPgorICAgICAgPC9MaXN0aW5nUGFnZT4KKyAgICAgIDxPUFRYTD4KKyAgICAgICAgPExNYXA+MTwvTE1hcD4KKyAgICAgICAgPExDb21tZW50cz4xPC9MQ29tbWVudHM+CisgICAgICAgIDxMR2VuZXJhdGVTeW1ib2xzPjE8L0xHZW5lcmF0ZVN5bWJvbHM+CisgICAgICAgIDxMTGliU3ltPjE8L0xMaWJTeW0+CisgICAgICAgIDxMTGluZXM+MTwvTExpbmVzPgorICAgICAgICA8TExvY1N5bT4xPC9MTG9jU3ltPgorICAgICAgICA8TFB1YlN5bT4xPC9MUHViU3ltPgorICAgICAgICA8TFhyZWY+MDwvTFhyZWY+CisgICAgICAgIDxMRXhwU2VsPjA8L0xFeHBTZWw+CisgICAgICA8L09QVFhMPgorICAgICAgPE9QVEZMPgorICAgICAgICA8dHZFeHA+MTwvdHZFeHA+CisgICAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4KKyAgICAgICAgPElzQ3VycmVudFRhcmdldD4wPC9Jc0N1cnJlbnRUYXJnZXQ+CisgICAgICA8L09QVEZMPgorICAgICAgPENwdUNvZGU+MjU1PC9DcHVDb2RlPgorICAgICAgPEJvb2tzPgorICAgICAgICA8Qm9vaz4KKyAgICAgICAgICA8TnVtYmVyPjA8L051bWJlcj4KKyAgICAgICAgICA8VGl0bGU+UmVmZXJlbmNlIE1hbnVhbDwvVGl0bGU+CisgICAgICAgICAgPFBhdGg+REFUQVNIVFNcU1RcU1RNMzJGMTB4eHguUERGPC9QYXRoPgorICAgICAgICA8L0Jvb2s+CisgICAgICAgIDxCb29rPgorICAgICAgICAgIDxOdW1iZXI+MTwvTnVtYmVyPgorICAgICAgICAgIDxUaXRsZT5UZWNobmljYWwgUmVmZXJlbmNlIE1hbnVhbDwvVGl0bGU+CisgICAgICAgICAgPFBhdGg+ZGF0YXNodHNcYXJtXGNvcnRleF9tM1xyMXAxXERESTAzMzdFX0NPUlRFWF9NM19SMVAxX1RSTS5QREY8L1BhdGg+CisgICAgICAgIDwvQm9vaz4KKyAgICAgICAgPEJvb2s+CisgICAgICAgICAgPE51bWJlcj4yPC9OdW1iZXI+CisgICAgICAgICAgPFRpdGxlPkdlbmVyaWMgVXNlciBHdWlkZTwvVGl0bGU+CisgICAgICAgICAgPFBhdGg+ZGF0YXNodHNcYXJtXGNvcnRleF9tM1xyMnAxXERVSTA1NTJBX0NPUlRFWF9NM19ER1VHLlBERjwvUGF0aD4KKyAgICAgICAgPC9Cb29rPgorICAgICAgPC9Cb29rcz4KKyAgICAgIDxEbGxPcHQ+CisgICAgICAgIDxTaW1EbGxOYW1lPlNBUk1DTTMuRExMPC9TaW1EbGxOYW1lPgorICAgICAgICA8U2ltRGxsQXJndW1lbnRzPi1SRU1BUDwvU2ltRGxsQXJndW1lbnRzPgorICAgICAgICA8U2ltRGxnRGxsTmFtZT5EQ00uRExMPC9TaW1EbGdEbGxOYW1lPgorICAgICAgICA8U2ltRGxnRGxsQXJndW1lbnRzPi1wQ00zPC9TaW1EbGdEbGxBcmd1bWVudHM+CisgICAgICAgIDxUYXJnZXREbGxOYW1lPlNBUk1DTTMuRExMPC9UYXJnZXREbGxOYW1lPgorICAgICAgICA8VGFyZ2V0RGxsQXJndW1lbnRzPjwvVGFyZ2V0RGxsQXJndW1lbnRzPgorICAgICAgICA8VGFyZ2V0RGxnRGxsTmFtZT5UQ00uRExMPC9UYXJnZXREbGdEbGxOYW1lPgorICAgICAgICA8VGFyZ2V0RGxnRGxsQXJndW1lbnRzPi1wQ00zPC9UYXJnZXREbGdEbGxBcmd1bWVudHM+CisgICAgICA8L0RsbE9wdD4KKyAgICAgIDxEZWJ1Z09wdD4KKyAgICAgICAgPHVTaW0+MTwvdVNpbT4KKyAgICAgICAgPHVUcmc+MDwvdVRyZz4KKyAgICAgICAgPHNMZEFwcD4xPC9zTGRBcHA+CisgICAgICAgIDxzR29tYWluPjE8L3NHb21haW4+CisgICAgICAgIDxzUmJyZWFrPjE8L3NSYnJlYWs+CisgICAgICAgIDxzUndhdGNoPjE8L3NSd2F0Y2g+CisgICAgICAgIDxzUm1lbT4xPC9zUm1lbT4KKyAgICAgICAgPHNSZnVuYz4xPC9zUmZ1bmM+CisgICAgICAgIDxzUmJveD4xPC9zUmJveD4KKyAgICAgICAgPHRMZEFwcD4xPC90TGRBcHA+CisgICAgICAgIDx0R29tYWluPjE8L3RHb21haW4+CisgICAgICAgIDx0UmJyZWFrPjE8L3RSYnJlYWs+CisgICAgICAgIDx0UndhdGNoPjE8L3RSd2F0Y2g+CisgICAgICAgIDx0Um1lbT4xPC90Um1lbT4KKyAgICAgICAgPHRSZnVuYz4wPC90UmZ1bmM+CisgICAgICAgIDx0UmJveD4xPC90UmJveD4KKyAgICAgICAgPHNSdW5EZWI+MDwvc1J1bkRlYj4KKyAgICAgICAgPHNMcnRpbWU+MDwvc0xydGltZT4KKyAgICAgICAgPG5Uc2VsPjU8L25Uc2VsPgorICAgICAgICA8c0RsbD48L3NEbGw+CisgICAgICAgIDxzRGxsUGE+PC9zRGxsUGE+CisgICAgICAgIDxzRGxnRGxsPjwvc0RsZ0RsbD4KKyAgICAgICAgPHNEbGdQYT48L3NEbGdQYT4KKyAgICAgICAgPHNJZmlsZT4uXG1lcmdlLmluaTwvc0lmaWxlPgorICAgICAgICA8dERsbD48L3REbGw+CisgICAgICAgIDx0RGxsUGE+PC90RGxsUGE+CisgICAgICAgIDx0RGxnRGxsPjwvdERsZ0RsbD4KKyAgICAgICAgPHREbGdQYT48L3REbGdQYT4KKyAgICAgICAgPHRJZmlsZT48L3RJZmlsZT4KKyAgICAgICAgPHBNb24+U2VnZ2VyXEpMMkNNMy5kbGw8L3BNb24+CisgICAgICA8L0RlYnVnT3B0PgorICAgICAgPFRhcmdldERyaXZlckRsbFJlZ2lzdHJ5PgorICAgICAgICA8U2V0UmVnRW50cnk+CisgICAgICAgICAgPE51bWJlcj4wPC9OdW1iZXI+CisgICAgICAgICAgPEtleT5KTDJDTTM8L0tleT4KKyAgICAgICAgICA8TmFtZT4tVTIwMzcwNDIxIC1PNzE4IC1TOSAtQTAgLUMwIC1KVTEgLUpJMTI3LjAuMC4xIC1KUDAgLVJTVDAgLU4wMCgiQVJNIENvcmVTaWdodCBTVy1EUCIpIC1EMDAoMUJBMDE0NzcpIC1MMDAoMCkgLVRPMTggLVRDMTAwMDAwMDAgLVRQMjEgLVREUzgwMDcgLVREVDAgLVREQzFGIC1USUVGRkZGRkZGRiAtVElQOCAtVEIxIC1URkUwIC1GTzE1IC1GRDIwMDAwMDAwIC1GQzIwMDAgLUZOMSAtRkYwU1RNMzJGMTB4XzUxMiAtRlMwODAwMDAwMCAtRkwwODAwMDA8L05hbWU+CisgICAgICAgIDwvU2V0UmVnRW50cnk+CisgICAgICAgIDxTZXRSZWdFbnRyeT4KKyAgICAgICAgICA8TnVtYmVyPjA8L051bWJlcj4KKyAgICAgICAgICA8S2V5PkRMR1VBUk08L0tleT4KKyAgICAgICAgICA8TmFtZT4oMTA2PS0xLC0xLC0xLC0xLDApKDEwNz0tMSwtMSwtMSwtMSwwKTwvTmFtZT4KKyAgICAgICAgPC9TZXRSZWdFbnRyeT4KKyAgICAgICAgPFNldFJlZ0VudHJ5PgorICAgICAgICAgIDxOdW1iZXI+MDwvTnVtYmVyPgorICAgICAgICAgIDxLZXk+RExHVEFSTTwvS2V5PgorICAgICAgICAgIDxOYW1lPigxMDEwPS0xLC0xLC0xLC0xLDApKDEwMDc9LTEsLTEsLTEsLTEsMCkoMTAwOD0tMSwtMSwtMSwtMSwwKSgxMDA5PS0xLC0xLC0xLC0xLDApPC9OYW1lPgorICAgICAgICA8L1NldFJlZ0VudHJ5PgorICAgICAgICA8U2V0UmVnRW50cnk+CisgICAgICAgICAgPE51bWJlcj4wPC9OdW1iZXI+CisgICAgICAgICAgPEtleT5VTDJDTTM8L0tleT4KKyAgICAgICAgICA8TmFtZT4tVVYwMDEwTTlFIC1PNzE4IC1TMTAgLUMwIC1UTzE4IC1UQzEwMDAwMDAwIC1UUDIxIC1URFM4MDA3IC1URFQwIC1UREMxRiAtVElFRkZGRkZGRkYgLVRJUDggLUZPMTUgLUZEMjAwMDAwMDAgLUZDMjAwMCAtRk4xIC1GRjBTVE0zMkYxMHhfNTEyIC1GUzA4MDAwMDAwIC1GTDA0MDAwMDwvTmFtZT4KKyAgICAgICAgPC9TZXRSZWdFbnRyeT4KKyAgICAgICAgPFNldFJlZ0VudHJ5PgorICAgICAgICAgIDxOdW1iZXI+MDwvTnVtYmVyPgorICAgICAgICAgIDxLZXk+RExHREFSTTwvS2V5PgorICAgICAgICAgIDxOYW1lPigxMDEwPS0xLC0xLC0xLC0xLDApKDEwMDc9LTEsLTEsLTEsLTEsMCkoMTAwOD05MCwxMjAsNDU2LDM0NSwwKSgxMDA5PS0xLC0xLC0xLC0xLDApPC9OYW1lPgorICAgICAgICA8L1NldFJlZ0VudHJ5PgorICAgICAgICA8U2V0UmVnRW50cnk+CisgICAgICAgICAgPE51bWJlcj4wPC9OdW1iZXI+CisgICAgICAgICAgPEtleT5BUk1EQkdGTEFHUzwvS2V5PgorICAgICAgICAgIDxOYW1lPi1UMDwvTmFtZT4KKyAgICAgICAgPC9TZXRSZWdFbnRyeT4KKyAgICAgIDwvVGFyZ2V0RHJpdmVyRGxsUmVnaXN0cnk+CisgICAgICA8V2F0Y2hXaW5kb3cxPgorICAgICAgICA8V3c+CisgICAgICAgICAgPGNvdW50PjA8L2NvdW50PgorICAgICAgICAgIDxXaW5OdW1iZXI+MTwvV2luTnVtYmVyPgorICAgICAgICAgIDxJdGVtVGV4dD42MCo0MDk1LzY1MzwvSXRlbVRleHQ+CisgICAgICAgIDwvV3c+CisgICAgICAgIDxXdz4KKyAgICAgICAgICA8Y291bnQ+MTwvY291bnQ+CisgICAgICAgICAgPFdpbk51bWJlcj4xPC9XaW5OdW1iZXI+CisgICAgICAgICAgPEl0ZW1UZXh0PmNhcmRrZXkKKzwvSXRlbVRleHQ+CisgICAgICAgIDwvV3c+CisgICAgICA8L1dhdGNoV2luZG93MT4KKyAgICAgIDxNZW1vcnlXaW5kb3cxPgorICAgICAgICA8TW0+CisgICAgICAgICAgPFdpbk51bWJlcj4xPC9XaW5OdW1iZXI+CisgICAgICAgICAgPFN1YlR5cGU+MDwvU3ViVHlwZT4KKyAgICAgICAgICA8SXRlbVRleHQ+cmRfYnVmZjwvSXRlbVRleHQ+CisgICAgICAgIDwvTW0+CisgICAgICA8L01lbW9yeVdpbmRvdzE+CisgICAgICA8TWVtb3J5V2luZG93Mj4KKyAgICAgICAgPE1tPgorICAgICAgICAgIDxXaW5OdW1iZXI+MjwvV2luTnVtYmVyPgorICAgICAgICAgIDxTdWJUeXBlPjI8L1N1YlR5cGU+CisgICAgICAgICAgPEl0ZW1UZXh0PjBYMjAwMDJGMTA8L0l0ZW1UZXh0PgorICAgICAgICA8L01tPgorICAgICAgPC9NZW1vcnlXaW5kb3cyPgorICAgICAgPE1lbW9yeVdpbmRvdzM+CisgICAgICAgIDxNbT4KKyAgICAgICAgICA8V2luTnVtYmVyPjM8L1dpbk51bWJlcj4KKyAgICAgICAgICA8U3ViVHlwZT4yPC9TdWJUeXBlPgorICAgICAgICAgIDxJdGVtVGV4dD4weDIwMDAwMGVlPC9JdGVtVGV4dD4KKyAgICAgICAgPC9NbT4KKyAgICAgIDwvTWVtb3J5V2luZG93Mz4KKyAgICAgIDxNZW1vcnlXaW5kb3c0PgorICAgICAgICA8TW0+CisgICAgICAgICAgPFdpbk51bWJlcj40PC9XaW5OdW1iZXI+CisgICAgICAgICAgPFN1YlR5cGU+MjwvU3ViVHlwZT4KKyAgICAgICAgICA8SXRlbVRleHQ+MHgwODAwN0M4NDwvSXRlbVRleHQ+CisgICAgICAgIDwvTW0+CisgICAgICA8L01lbW9yeVdpbmRvdzQ+CisgICAgICA8RGVidWdGbGFnPgorICAgICAgICA8dHJhY2U+MDwvdHJhY2U+CisgICAgICAgIDxwZXJpb2RpYz4xPC9wZXJpb2RpYz4KKyAgICAgICAgPGFMd2luPjE8L2FMd2luPgorICAgICAgICA8YUNvdmVyPjA8L2FDb3Zlcj4KKyAgICAgICAgPGFTZXIxPjA8L2FTZXIxPgorICAgICAgICA8YVNlcjI+MDwvYVNlcjI+CisgICAgICAgIDxhUGE+MDwvYVBhPgorICAgICAgICA8dmlld21vZGU+MTwvdmlld21vZGU+CisgICAgICAgIDx2clNlbD4wPC92clNlbD4KKyAgICAgICAgPGFTeW0+MDwvYVN5bT4KKyAgICAgICAgPGFUYm94PjA8L2FUYm94PgorICAgICAgICA8QXNjUzE+MTwvQXNjUzE+CisgICAgICAgIDxBc2NTMj4wPC9Bc2NTMj4KKyAgICAgICAgPEFzY1MzPjA8L0FzY1MzPgorICAgICAgICA8YVNlcjM+MDwvYVNlcjM+CisgICAgICAgIDxlUHJvZj4wPC9lUHJvZj4KKyAgICAgICAgPGFMYT4wPC9hTGE+CisgICAgICAgIDxhUGExPjA8L2FQYTE+CisgICAgICAgIDxBc2NTND4wPC9Bc2NTND4KKyAgICAgICAgPGFTZXI0PjA8L2FTZXI0PgorICAgICAgICA8U3RrTG9jPjA8L1N0a0xvYz4KKyAgICAgICAgPFRyY1dpbj4wPC9UcmNXaW4+CisgICAgICAgIDxuZXdDcHU+MDwvbmV3Q3B1PgorICAgICAgICA8dVByb3Q+MDwvdVByb3Q+CisgICAgICA8L0RlYnVnRmxhZz4KKyAgICAgIDxMaW50RXhlY3V0YWJsZT48L0xpbnRFeGVjdXRhYmxlPgorICAgICAgPExpbnRDb25maWdGaWxlPjwvTGludENvbmZpZ0ZpbGU+CisgICAgPC9UYXJnZXRPcHRpb24+CisgIDwvVGFyZ2V0PgorCisgIDxHcm91cD4KKyAgICA8R3JvdXBOYW1lPmxjZDwvR3JvdXBOYW1lPgorICAgIDx0dkV4cD4xPC90dkV4cD4KKyAgICA8dHZFeHBPcHREbGc+MDwvdHZFeHBPcHREbGc+CisgICAgPGNiU2VsPjA8L2NiU2VsPgorICAgIDxGaWxlPgorICAgICAgPEdyb3VwTnVtYmVyPjE8L0dyb3VwTnVtYmVyPgorICAgICAgPEZpbGVOdW1iZXI+MTwvRmlsZU51bWJlcj4KKyAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgIDx0dkV4cD4wPC90dkV4cD4KKyAgICAgIDxGb2N1cz4wPC9Gb2N1cz4KKyAgICAgIDxDb2x1bW5OdW1iZXI+MDwvQ29sdW1uTnVtYmVyPgorICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPgorICAgICAgPFRvcExpbmU+MTAxPC9Ub3BMaW5lPgorICAgICAgPEN1cnJlbnRMaW5lPjExMDwvQ3VycmVudExpbmU+CisgICAgICA8YkRhdmUyPjA8L2JEYXZlMj4KKyAgICAgIDxQYXRoV2l0aEZpbGVOYW1lPi4uXC4uXGxjZFxnbGNkLmM8L1BhdGhXaXRoRmlsZU5hbWU+CisgICAgICA8RmlsZW5hbWVXaXRob3V0UGF0aD5nbGNkLmM8L0ZpbGVuYW1lV2l0aG91dFBhdGg+CisgICAgPC9GaWxlPgorICAgIDxGaWxlPgorICAgICAgPEdyb3VwTnVtYmVyPjE8L0dyb3VwTnVtYmVyPgorICAgICAgPEZpbGVOdW1iZXI+MjwvRmlsZU51bWJlcj4KKyAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgIDx0dkV4cD4wPC90dkV4cD4KKyAgICAgIDxGb2N1cz4wPC9Gb2N1cz4KKyAgICAgIDxDb2x1bW5OdW1iZXI+MDwvQ29sdW1uTnVtYmVyPgorICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPgorICAgICAgPFRvcExpbmU+MDwvVG9wTGluZT4KKyAgICAgIDxDdXJyZW50TGluZT4wPC9DdXJyZW50TGluZT4KKyAgICAgIDxiRGF2ZTI+MDwvYkRhdmUyPgorICAgICAgPFBhdGhXaXRoRmlsZU5hbWU+Li5cLi5cbGNkXGdyYXBoaWNzLmM8L1BhdGhXaXRoRmlsZU5hbWU+CisgICAgICA8RmlsZW5hbWVXaXRob3V0UGF0aD5ncmFwaGljcy5jPC9GaWxlbmFtZVdpdGhvdXRQYXRoPgorICAgIDwvRmlsZT4KKyAgICA8RmlsZT4KKyAgICAgIDxHcm91cE51bWJlcj4xPC9Hcm91cE51bWJlcj4KKyAgICAgIDxGaWxlTnVtYmVyPjM8L0ZpbGVOdW1iZXI+CisgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICA8dHZFeHA+MDwvdHZFeHA+CisgICAgICA8Rm9jdXM+MDwvRm9jdXM+CisgICAgICA8Q29sdW1uTnVtYmVyPjA8L0NvbHVtbk51bWJlcj4KKyAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4KKyAgICAgIDxUb3BMaW5lPjA8L1RvcExpbmU+CisgICAgICA8Q3VycmVudExpbmU+MDwvQ3VycmVudExpbmU+CisgICAgICA8YkRhdmUyPjA8L2JEYXZlMj4KKyAgICAgIDxQYXRoV2l0aEZpbGVOYW1lPi4uXC4uXGxjZFxncmFwaHMuYzwvUGF0aFdpdGhGaWxlTmFtZT4KKyAgICAgIDxGaWxlbmFtZVdpdGhvdXRQYXRoPmdyYXBocy5jPC9GaWxlbmFtZVdpdGhvdXRQYXRoPgorICAgIDwvRmlsZT4KKyAgICA8RmlsZT4KKyAgICAgIDxHcm91cE51bWJlcj4xPC9Hcm91cE51bWJlcj4KKyAgICAgIDxGaWxlTnVtYmVyPjQ8L0ZpbGVOdW1iZXI+CisgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICA8dHZFeHA+MDwvdHZFeHA+CisgICAgICA8Rm9jdXM+MDwvRm9jdXM+CisgICAgICA8Q29sdW1uTnVtYmVyPjA8L0NvbHVtbk51bWJlcj4KKyAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4KKyAgICAgIDxUb3BMaW5lPjA8L1RvcExpbmU+CisgICAgICA8Q3VycmVudExpbmU+MDwvQ3VycmVudExpbmU+CisgICAgICA8YkRhdmUyPjA8L2JEYXZlMj4KKyAgICAgIDxQYXRoV2l0aEZpbGVOYW1lPi4uXC4uXGxjZFx0ZXh0LmM8L1BhdGhXaXRoRmlsZU5hbWU+CisgICAgICA8RmlsZW5hbWVXaXRob3V0UGF0aD50ZXh0LmM8L0ZpbGVuYW1lV2l0aG91dFBhdGg+CisgICAgPC9GaWxlPgorICAgIDxGaWxlPgorICAgICAgPEdyb3VwTnVtYmVyPjE8L0dyb3VwTnVtYmVyPgorICAgICAgPEZpbGVOdW1iZXI+NTwvRmlsZU51bWJlcj4KKyAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgIDx0dkV4cD4wPC90dkV4cD4KKyAgICAgIDxGb2N1cz4wPC9Gb2N1cz4KKyAgICAgIDxDb2x1bW5OdW1iZXI+MDwvQ29sdW1uTnVtYmVyPgorICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPgorICAgICAgPFRvcExpbmU+MDwvVG9wTGluZT4KKyAgICAgIDxDdXJyZW50TGluZT4wPC9DdXJyZW50TGluZT4KKyAgICAgIDxiRGF2ZTI+MDwvYkRhdmUyPgorICAgICAgPFBhdGhXaXRoRmlsZU5hbWU+Li5cLi5cbGNkXHRleHRfdGlueS5jPC9QYXRoV2l0aEZpbGVOYW1lPgorICAgICAgPEZpbGVuYW1lV2l0aG91dFBhdGg+dGV4dF90aW55LmM8L0ZpbGVuYW1lV2l0aG91dFBhdGg+CisgICAgPC9GaWxlPgorICAgIDxGaWxlPgorICAgICAgPEdyb3VwTnVtYmVyPjE8L0dyb3VwTnVtYmVyPgorICAgICAgPEZpbGVOdW1iZXI+NjwvRmlsZU51bWJlcj4KKyAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgIDx0dkV4cD4wPC90dkV4cD4KKyAgICAgIDxGb2N1cz4wPC9Gb2N1cz4KKyAgICAgIDxDb2x1bW5OdW1iZXI+MDwvQ29sdW1uTnVtYmVyPgorICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPgorICAgICAgPFRvcExpbmU+MDwvVG9wTGluZT4KKyAgICAgIDxDdXJyZW50TGluZT4wPC9DdXJyZW50TGluZT4KKyAgICAgIDxiRGF2ZTI+MDwvYkRhdmUyPgorICAgICAgPFBhdGhXaXRoRmlsZU5hbWU+Li5cLi5cbGNkXHVuaXRfdGVzdHMuYzwvUGF0aFdpdGhGaWxlTmFtZT4KKyAgICAgIDxGaWxlbmFtZVdpdGhvdXRQYXRoPnVuaXRfdGVzdHMuYzwvRmlsZW5hbWVXaXRob3V0UGF0aD4KKyAgICA8L0ZpbGU+CisgICAgPEZpbGU+CisgICAgICA8R3JvdXBOdW1iZXI+MTwvR3JvdXBOdW1iZXI+CisgICAgICA8RmlsZU51bWJlcj43PC9GaWxlTnVtYmVyPgorICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgPHR2RXhwPjA8L3R2RXhwPgorICAgICAgPEZvY3VzPjA8L0ZvY3VzPgorICAgICAgPENvbHVtbk51bWJlcj4wPC9Db2x1bW5OdW1iZXI+CisgICAgICA8dHZFeHBPcHREbGc+MDwvdHZFeHBPcHREbGc+CisgICAgICA8VG9wTGluZT4wPC9Ub3BMaW5lPgorICAgICAgPEN1cnJlbnRMaW5lPjA8L0N1cnJlbnRMaW5lPgorICAgICAgPGJEYXZlMj4wPC9iRGF2ZTI+CisgICAgICA8UGF0aFdpdGhGaWxlTmFtZT4uLlwuLlxsY2RcZ2xjZF9zcGkuYzwvUGF0aFdpdGhGaWxlTmFtZT4KKyAgICAgIDxGaWxlbmFtZVdpdGhvdXRQYXRoPmdsY2Rfc3BpLmM8L0ZpbGVuYW1lV2l0aG91dFBhdGg+CisgICAgPC9GaWxlPgorICAgIDxGaWxlPgorICAgICAgPEdyb3VwTnVtYmVyPjE8L0dyb3VwTnVtYmVyPgorICAgICAgPEZpbGVOdW1iZXI+ODwvRmlsZU51bWJlcj4KKyAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgIDx0dkV4cD4wPC90dkV4cD4KKyAgICAgIDxGb2N1cz4wPC9Gb2N1cz4KKyAgICAgIDxDb2x1bW5OdW1iZXI+MDwvQ29sdW1uTnVtYmVyPgorICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPgorICAgICAgPFRvcExpbmU+MDwvVG9wTGluZT4KKyAgICAgIDxDdXJyZW50TGluZT4wPC9DdXJyZW50TGluZT4KKyAgICAgIDxiRGF2ZTI+MDwvYkRhdmUyPgorICAgICAgPFBhdGhXaXRoRmlsZU5hbWU+Li5cLi5cbGNkXFNUNzU2NVIuYzwvUGF0aFdpdGhGaWxlTmFtZT4KKyAgICAgIDxGaWxlbmFtZVdpdGhvdXRQYXRoPlNUNzU2NVIuYzwvRmlsZW5hbWVXaXRob3V0UGF0aD4KKyAgICA8L0ZpbGU+CisgICAgPEZpbGU+CisgICAgICA8R3JvdXBOdW1iZXI+MTwvR3JvdXBOdW1iZXI+CisgICAgICA8RmlsZU51bWJlcj45PC9GaWxlTnVtYmVyPgorICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgPHR2RXhwPjA8L3R2RXhwPgorICAgICAgPEZvY3VzPjA8L0ZvY3VzPgorICAgICAgPENvbHVtbk51bWJlcj4wPC9Db2x1bW5OdW1iZXI+CisgICAgICA8dHZFeHBPcHREbGc+MDwvdHZFeHBPcHREbGc+CisgICAgICA8VG9wTGluZT41NDwvVG9wTGluZT4KKyAgICAgIDxDdXJyZW50TGluZT43NjwvQ3VycmVudExpbmU+CisgICAgICA8YkRhdmUyPjA8L2JEYXZlMj4KKyAgICAgIDxQYXRoV2l0aEZpbGVOYW1lPi4uXC4uXGxjZFxzcGkuYzwvUGF0aFdpdGhGaWxlTmFtZT4KKyAgICAgIDxGaWxlbmFtZVdpdGhvdXRQYXRoPnNwaS5jPC9GaWxlbmFtZVdpdGhvdXRQYXRoPgorICAgIDwvRmlsZT4KKyAgPC9Hcm91cD4KKworICA8R3JvdXA+CisgICAgPEdyb3VwTmFtZT5pY2NfYXBkdV9saWI8L0dyb3VwTmFtZT4KKyAgICA8dHZFeHA+MTwvdHZFeHA+CisgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPgorICAgIDxjYlNlbD4wPC9jYlNlbD4KKyAgICA8RmlsZT4KKyAgICAgIDxHcm91cE51bWJlcj4yPC9Hcm91cE51bWJlcj4KKyAgICAgIDxGaWxlTnVtYmVyPjEwPC9GaWxlTnVtYmVyPgorICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgPHR2RXhwPjA8L3R2RXhwPgorICAgICAgPEZvY3VzPjA8L0ZvY3VzPgorICAgICAgPENvbHVtbk51bWJlcj4wPC9Db2x1bW5OdW1iZXI+CisgICAgICA8dHZFeHBPcHREbGc+MDwvdHZFeHBPcHREbGc+CisgICAgICA8VG9wTGluZT4wPC9Ub3BMaW5lPgorICAgICAgPEN1cnJlbnRMaW5lPjA8L0N1cnJlbnRMaW5lPgorICAgICAgPGJEYXZlMj4wPC9iRGF2ZTI+CisgICAgICA8UGF0aFdpdGhGaWxlTmFtZT4uLlwuLlxpY2NfYXBkdV9saWJcZGVzLmM8L1BhdGhXaXRoRmlsZU5hbWU+CisgICAgICA8RmlsZW5hbWVXaXRob3V0UGF0aD5kZXMuYzwvRmlsZW5hbWVXaXRob3V0UGF0aD4KKyAgICA8L0ZpbGU+CisgIDwvR3JvdXA+CisKKyAgPEdyb3VwPgorICAgIDxHcm91cE5hbWU+c3c8L0dyb3VwTmFtZT4KKyAgICA8dHZFeHA+MTwvdHZFeHA+CisgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPgorICAgIDxjYlNlbD4wPC9jYlNlbD4KKyAgICA8RmlsZT4KKyAgICAgIDxHcm91cE51bWJlcj4zPC9Hcm91cE51bWJlcj4KKyAgICAgIDxGaWxlTnVtYmVyPjExPC9GaWxlTnVtYmVyPgorICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgPHR2RXhwPjA8L3R2RXhwPgorICAgICAgPEZvY3VzPjA8L0ZvY3VzPgorICAgICAgPENvbHVtbk51bWJlcj4wPC9Db2x1bW5OdW1iZXI+CisgICAgICA8dHZFeHBPcHREbGc+MDwvdHZFeHBPcHREbGc+CisgICAgICA8VG9wTGluZT4wPC9Ub3BMaW5lPgorICAgICAgPEN1cnJlbnRMaW5lPjA8L0N1cnJlbnRMaW5lPgorICAgICAgPGJEYXZlMj4wPC9iRGF2ZTI+CisgICAgICA8UGF0aFdpdGhGaWxlTmFtZT4uLlxzcmNcbmVjX2FwZHUuYzwvUGF0aFdpdGhGaWxlTmFtZT4KKyAgICAgIDxGaWxlbmFtZVdpdGhvdXRQYXRoPm5lY19hcGR1LmM8L0ZpbGVuYW1lV2l0aG91dFBhdGg+CisgICAgPC9GaWxlPgorICAgIDxGaWxlPgorICAgICAgPEdyb3VwTnVtYmVyPjM8L0dyb3VwTnVtYmVyPgorICAgICAgPEZpbGVOdW1iZXI+MTI8L0ZpbGVOdW1iZXI+CisgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICA8dHZFeHA+MDwvdHZFeHA+CisgICAgICA8Rm9jdXM+MDwvRm9jdXM+CisgICAgICA8Q29sdW1uTnVtYmVyPjA8L0NvbHVtbk51bWJlcj4KKyAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4KKyAgICAgIDxUb3BMaW5lPjE8L1RvcExpbmU+CisgICAgICA8Q3VycmVudExpbmU+MTwvQ3VycmVudExpbmU+CisgICAgICA8YkRhdmUyPjA8L2JEYXZlMj4KKyAgICAgIDxQYXRoV2l0aEZpbGVOYW1lPi4uXHNyY1xuZWNfaGFyZHdhcmUuYzwvUGF0aFdpdGhGaWxlTmFtZT4KKyAgICAgIDxGaWxlbmFtZVdpdGhvdXRQYXRoPm5lY19oYXJkd2FyZS5jPC9GaWxlbmFtZVdpdGhvdXRQYXRoPgorICAgIDwvRmlsZT4KKyAgICA8RmlsZT4KKyAgICAgIDxHcm91cE51bWJlcj4zPC9Hcm91cE51bWJlcj4KKyAgICAgIDxGaWxlTnVtYmVyPjEzPC9GaWxlTnVtYmVyPgorICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgPHR2RXhwPjA8L3R2RXhwPgorICAgICAgPEZvY3VzPjA8L0ZvY3VzPgorICAgICAgPENvbHVtbk51bWJlcj4zMTwvQ29sdW1uTnVtYmVyPgorICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPgorICAgICAgPFRvcExpbmU+MTMyPC9Ub3BMaW5lPgorICAgICAgPEN1cnJlbnRMaW5lPjEzOTwvQ3VycmVudExpbmU+CisgICAgICA8YkRhdmUyPjA8L2JEYXZlMj4KKyAgICAgIDxQYXRoV2l0aEZpbGVOYW1lPi4uXHNyY1xzdG0zMmYxMHhfaXQuYzwvUGF0aFdpdGhGaWxlTmFtZT4KKyAgICAgIDxGaWxlbmFtZVdpdGhvdXRQYXRoPnN0bTMyZjEweF9pdC5jPC9GaWxlbmFtZVdpdGhvdXRQYXRoPgorICAgIDwvRmlsZT4KKyAgICA8RmlsZT4KKyAgICAgIDxHcm91cE51bWJlcj4zPC9Hcm91cE51bWJlcj4KKyAgICAgIDxGaWxlTnVtYmVyPjE0PC9GaWxlTnVtYmVyPgorICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgPHR2RXhwPjA8L3R2RXhwPgorICAgICAgPEZvY3VzPjA8L0ZvY3VzPgorICAgICAgPENvbHVtbk51bWJlcj4wPC9Db2x1bW5OdW1iZXI+CisgICAgICA8dHZFeHBPcHREbGc+MDwvdHZFeHBPcHREbGc+CisgICAgICA8VG9wTGluZT4xMTwvVG9wTGluZT4KKyAgICAgIDxDdXJyZW50TGluZT4xNTwvQ3VycmVudExpbmU+CisgICAgICA8YkRhdmUyPjA8L2JEYXZlMj4KKyAgICAgIDxQYXRoV2l0aEZpbGVOYW1lPi4uXC4uXHN1cHdpc2RvbVxtYWluLmM8L1BhdGhXaXRoRmlsZU5hbWU+CisgICAgICA8RmlsZW5hbWVXaXRob3V0UGF0aD5tYWluLmM8L0ZpbGVuYW1lV2l0aG91dFBhdGg+CisgICAgPC9GaWxlPgorICAgIDxGaWxlPgorICAgICAgPEdyb3VwTnVtYmVyPjM8L0dyb3VwTnVtYmVyPgorICAgICAgPEZpbGVOdW1iZXI+MTU8L0ZpbGVOdW1iZXI+CisgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICA8dHZFeHA+MDwvdHZFeHA+CisgICAgICA8Rm9jdXM+MDwvRm9jdXM+CisgICAgICA8Q29sdW1uTnVtYmVyPjA8L0NvbHVtbk51bWJlcj4KKyAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4KKyAgICAgIDxUb3BMaW5lPjI1PC9Ub3BMaW5lPgorICAgICAgPEN1cnJlbnRMaW5lPjI1PC9DdXJyZW50TGluZT4KKyAgICAgIDxiRGF2ZTI+MDwvYkRhdmUyPgorICAgICAgPFBhdGhXaXRoRmlsZU5hbWU+Li5cLi5cc3Vwd2lzZG9tXHNwX2NhcmQuYzwvUGF0aFdpdGhGaWxlTmFtZT4KKyAgICAgIDxGaWxlbmFtZVdpdGhvdXRQYXRoPnNwX2NhcmQuYzwvRmlsZW5hbWVXaXRob3V0UGF0aD4KKyAgICA8L0ZpbGU+CisgICAgPEZpbGU+CisgICAgICA8R3JvdXBOdW1iZXI+MzwvR3JvdXBOdW1iZXI+CisgICAgICA8RmlsZU51bWJlcj4xNjwvRmlsZU51bWJlcj4KKyAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgIDx0dkV4cD4wPC90dkV4cD4KKyAgICAgIDxGb2N1cz4wPC9Gb2N1cz4KKyAgICAgIDxDb2x1bW5OdW1iZXI+MDwvQ29sdW1uTnVtYmVyPgorICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPgorICAgICAgPFRvcExpbmU+MTk2PC9Ub3BMaW5lPgorICAgICAgPEN1cnJlbnRMaW5lPjIwODwvQ3VycmVudExpbmU+CisgICAgICA8YkRhdmUyPjA8L2JEYXZlMj4KKyAgICAgIDxQYXRoV2l0aEZpbGVOYW1lPi4uXC4uXHN1cHdpc2RvbVxzcF9jb21tdW5pY2F0ZS5jPC9QYXRoV2l0aEZpbGVOYW1lPgorICAgICAgPEZpbGVuYW1lV2l0aG91dFBhdGg+c3BfY29tbXVuaWNhdGUuYzwvRmlsZW5hbWVXaXRob3V0UGF0aD4KKyAgICA8L0ZpbGU+CisgICAgPEZpbGU+CisgICAgICA8R3JvdXBOdW1iZXI+MzwvR3JvdXBOdW1iZXI+CisgICAgICA8RmlsZU51bWJlcj4xNzwvRmlsZU51bWJlcj4KKyAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgIDx0dkV4cD4wPC90dkV4cD4KKyAgICAgIDxGb2N1cz4wPC9Gb2N1cz4KKyAgICAgIDxDb2x1bW5OdW1iZXI+MDwvQ29sdW1uTnVtYmVyPgorICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPgorICAgICAgPFRvcExpbmU+NTUxPC9Ub3BMaW5lPgorICAgICAgPEN1cnJlbnRMaW5lPjU1ODwvQ3VycmVudExpbmU+CisgICAgICA8YkRhdmUyPjA8L2JEYXZlMj4KKyAgICAgIDxQYXRoV2l0aEZpbGVOYW1lPi4uXC4uXHN1cHdpc2RvbVxzcF9jb25zdW1lLmM8L1BhdGhXaXRoRmlsZU5hbWU+CisgICAgICA8RmlsZW5hbWVXaXRob3V0UGF0aD5zcF9jb25zdW1lLmM8L0ZpbGVuYW1lV2l0aG91dFBhdGg+CisgICAgPC9GaWxlPgorICAgIDxGaWxlPgorICAgICAgPEdyb3VwTnVtYmVyPjM8L0dyb3VwTnVtYmVyPgorICAgICAgPEZpbGVOdW1iZXI+MTg8L0ZpbGVOdW1iZXI+CisgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICA8dHZFeHA+MDwvdHZFeHA+CisgICAgICA8Rm9jdXM+MDwvRm9jdXM+CisgICAgICA8Q29sdW1uTnVtYmVyPjA8L0NvbHVtbk51bWJlcj4KKyAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4KKyAgICAgIDxUb3BMaW5lPjIwODwvVG9wTGluZT4KKyAgICAgIDxDdXJyZW50TGluZT4yMTU8L0N1cnJlbnRMaW5lPgorICAgICAgPGJEYXZlMj4wPC9iRGF2ZTI+CisgICAgICA8UGF0aFdpdGhGaWxlTmFtZT4uLlwuLlxzdXB3aXNkb21cc3BfZGF0YS5jPC9QYXRoV2l0aEZpbGVOYW1lPgorICAgICAgPEZpbGVuYW1lV2l0aG91dFBhdGg+c3BfZGF0YS5jPC9GaWxlbmFtZVdpdGhvdXRQYXRoPgorICAgIDwvRmlsZT4KKyAgICA8RmlsZT4KKyAgICAgIDxHcm91cE51bWJlcj4zPC9Hcm91cE51bWJlcj4KKyAgICAgIDxGaWxlTnVtYmVyPjE5PC9GaWxlTnVtYmVyPgorICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgPHR2RXhwPjA8L3R2RXhwPgorICAgICAgPEZvY3VzPjA8L0ZvY3VzPgorICAgICAgPENvbHVtbk51bWJlcj4wPC9Db2x1bW5OdW1iZXI+CisgICAgICA8dHZFeHBPcHREbGc+MDwvdHZFeHBPcHREbGc+CisgICAgICA8VG9wTGluZT4wPC9Ub3BMaW5lPgorICAgICAgPEN1cnJlbnRMaW5lPjA8L0N1cnJlbnRMaW5lPgorICAgICAgPGJEYXZlMj4wPC9iRGF2ZTI+CisgICAgICA8UGF0aFdpdGhGaWxlTmFtZT4uLlwuLlxzdXB3aXNkb21cc3BfZGVzLmM8L1BhdGhXaXRoRmlsZU5hbWU+CisgICAgICA8RmlsZW5hbWVXaXRob3V0UGF0aD5zcF9kZXMuYzwvRmlsZW5hbWVXaXRob3V0UGF0aD4KKyAgICA8L0ZpbGU+CisgICAgPEZpbGU+CisgICAgICA8R3JvdXBOdW1iZXI+MzwvR3JvdXBOdW1iZXI+CisgICAgICA8RmlsZU51bWJlcj4yMDwvRmlsZU51bWJlcj4KKyAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgIDx0dkV4cD4wPC90dkV4cD4KKyAgICAgIDxGb2N1cz4wPC9Gb2N1cz4KKyAgICAgIDxDb2x1bW5OdW1iZXI+NTY8L0NvbHVtbk51bWJlcj4KKyAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4KKyAgICAgIDxUb3BMaW5lPjIwODwvVG9wTGluZT4KKyAgICAgIDxDdXJyZW50TGluZT4yMjg8L0N1cnJlbnRMaW5lPgorICAgICAgPGJEYXZlMj4wPC9iRGF2ZTI+CisgICAgICA8UGF0aFdpdGhGaWxlTmFtZT4uLlwuLlxzdXB3aXNkb21cc3BfZGlzcGxheS5jPC9QYXRoV2l0aEZpbGVOYW1lPgorICAgICAgPEZpbGVuYW1lV2l0aG91dFBhdGg+c3BfZGlzcGxheS5jPC9GaWxlbmFtZVdpdGhvdXRQYXRoPgorICAgIDwvRmlsZT4KKyAgICA8RmlsZT4KKyAgICAgIDxHcm91cE51bWJlcj4zPC9Hcm91cE51bWJlcj4KKyAgICAgIDxGaWxlTnVtYmVyPjIxPC9GaWxlTnVtYmVyPgorICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgPHR2RXhwPjA8L3R2RXhwPgorICAgICAgPEZvY3VzPjA8L0ZvY3VzPgorICAgICAgPENvbHVtbk51bWJlcj4wPC9Db2x1bW5OdW1iZXI+CisgICAgICA8dHZFeHBPcHREbGc+MDwvdHZFeHBPcHREbGc+CisgICAgICA8VG9wTGluZT4wPC9Ub3BMaW5lPgorICAgICAgPEN1cnJlbnRMaW5lPjA8L0N1cnJlbnRMaW5lPgorICAgICAgPGJEYXZlMj4wPC9iRGF2ZTI+CisgICAgICA8UGF0aFdpdGhGaWxlTmFtZT4uLlwuLlxzdXB3aXNkb21cc3BfZmxhc2guYzwvUGF0aFdpdGhGaWxlTmFtZT4KKyAgICAgIDxGaWxlbmFtZVdpdGhvdXRQYXRoPnNwX2ZsYXNoLmM8L0ZpbGVuYW1lV2l0aG91dFBhdGg+CisgICAgPC9GaWxlPgorICAgIDxGaWxlPgorICAgICAgPEdyb3VwTnVtYmVyPjM8L0dyb3VwTnVtYmVyPgorICAgICAgPEZpbGVOdW1iZXI+MjI8L0ZpbGVOdW1iZXI+CisgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICA8dHZFeHA+MDwvdHZFeHA+CisgICAgICA8Rm9jdXM+MDwvRm9jdXM+CisgICAgICA8Q29sdW1uTnVtYmVyPjA8L0NvbHVtbk51bWJlcj4KKyAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4KKyAgICAgIDxUb3BMaW5lPjk8L1RvcExpbmU+CisgICAgICA8Q3VycmVudExpbmU+OTwvQ3VycmVudExpbmU+CisgICAgICA8YkRhdmUyPjA8L2JEYXZlMj4KKyAgICAgIDxQYXRoV2l0aEZpbGVOYW1lPi4uXC4uXHN1cHdpc2RvbVxzcF9tZW51LmM8L1BhdGhXaXRoRmlsZU5hbWU+CisgICAgICA8RmlsZW5hbWVXaXRob3V0UGF0aD5zcF9tZW51LmM8L0ZpbGVuYW1lV2l0aG91dFBhdGg+CisgICAgPC9GaWxlPgorICAgIDxGaWxlPgorICAgICAgPEdyb3VwTnVtYmVyPjM8L0dyb3VwTnVtYmVyPgorICAgICAgPEZpbGVOdW1iZXI+MjM8L0ZpbGVOdW1iZXI+CisgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICA8dHZFeHA+MDwvdHZFeHA+CisgICAgICA8Rm9jdXM+MDwvRm9jdXM+CisgICAgICA8Q29sdW1uTnVtYmVyPjA8L0NvbHVtbk51bWJlcj4KKyAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4KKyAgICAgIDxUb3BMaW5lPjE1PC9Ub3BMaW5lPgorICAgICAgPEN1cnJlbnRMaW5lPjIxPC9DdXJyZW50TGluZT4KKyAgICAgIDxiRGF2ZTI+MDwvYkRhdmUyPgorICAgICAgPFBhdGhXaXRoRmlsZU5hbWU+Li5cLi5cc3Vwd2lzZG9tXHNwX21zZ3BhY2suYzwvUGF0aFdpdGhGaWxlTmFtZT4KKyAgICAgIDxGaWxlbmFtZVdpdGhvdXRQYXRoPnNwX21zZ3BhY2suYzwvRmlsZW5hbWVXaXRob3V0UGF0aD4KKyAgICA8L0ZpbGU+CisgICAgPEZpbGU+CisgICAgICA8R3JvdXBOdW1iZXI+MzwvR3JvdXBOdW1iZXI+CisgICAgICA8RmlsZU51bWJlcj4yNDwvRmlsZU51bWJlcj4KKyAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgIDx0dkV4cD4wPC90dkV4cD4KKyAgICAgIDxGb2N1cz4wPC9Gb2N1cz4KKyAgICAgIDxDb2x1bW5OdW1iZXI+MDwvQ29sdW1uTnVtYmVyPgorICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPgorICAgICAgPFRvcExpbmU+MTc1PC9Ub3BMaW5lPgorICAgICAgPEN1cnJlbnRMaW5lPjE3NTwvQ3VycmVudExpbmU+CisgICAgICA8YkRhdmUyPjA8L2JEYXZlMj4KKyAgICAgIDxQYXRoV2l0aEZpbGVOYW1lPi4uXC4uXHN1cHdpc2RvbVxzcF91dGlsLmM8L1BhdGhXaXRoRmlsZU5hbWU+CisgICAgICA8RmlsZW5hbWVXaXRob3V0UGF0aD5zcF91dGlsLmM8L0ZpbGVuYW1lV2l0aG91dFBhdGg+CisgICAgPC9GaWxlPgorICAgIDxGaWxlPgorICAgICAgPEdyb3VwTnVtYmVyPjM8L0dyb3VwTnVtYmVyPgorICAgICAgPEZpbGVOdW1iZXI+MjU8L0ZpbGVOdW1iZXI+CisgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICA8dHZFeHA+MDwvdHZFeHA+CisgICAgICA8Rm9jdXM+MDwvRm9jdXM+CisgICAgICA8Q29sdW1uTnVtYmVyPjA8L0NvbHVtbk51bWJlcj4KKyAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4KKyAgICAgIDxUb3BMaW5lPjA8L1RvcExpbmU+CisgICAgICA8Q3VycmVudExpbmU+MDwvQ3VycmVudExpbmU+CisgICAgICA8YkRhdmUyPjA8L2JEYXZlMj4KKyAgICAgIDxQYXRoV2l0aEZpbGVOYW1lPi4uXC4uXHN1cHdpc2RvbVxzcF91cGdyYWRlLmM8L1BhdGhXaXRoRmlsZU5hbWU+CisgICAgICA8RmlsZW5hbWVXaXRob3V0UGF0aD5zcF91cGdyYWRlLmM8L0ZpbGVuYW1lV2l0aG91dFBhdGg+CisgICAgPC9GaWxlPgorICA8L0dyb3VwPgorCisgIDxHcm91cD4KKyAgICA8R3JvdXBOYW1lPmxpYjwvR3JvdXBOYW1lPgorICAgIDx0dkV4cD4xPC90dkV4cD4KKyAgICA8dHZFeHBPcHREbGc+MDwvdHZFeHBPcHREbGc+CisgICAgPGNiU2VsPjA8L2NiU2VsPgorICAgIDxGaWxlPgorICAgICAgPEdyb3VwTnVtYmVyPjQ8L0dyb3VwTnVtYmVyPgorICAgICAgPEZpbGVOdW1iZXI+MjY8L0ZpbGVOdW1iZXI+CisgICAgICA8RmlsZVR5cGU+NDwvRmlsZVR5cGU+CisgICAgICA8dHZFeHA+MDwvdHZFeHA+CisgICAgICA8Rm9jdXM+MDwvRm9jdXM+CisgICAgICA8Q29sdW1uTnVtYmVyPjA8L0NvbHVtbk51bWJlcj4KKyAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4KKyAgICAgIDxUb3BMaW5lPjA8L1RvcExpbmU+CisgICAgICA8Q3VycmVudExpbmU+MDwvQ3VycmVudExpbmU+CisgICAgICA8YkRhdmUyPjA8L2JEYXZlMj4KKyAgICAgIDxQYXRoV2l0aEZpbGVOYW1lPi4uXGxpYlxHNDAxX2Rydl9od19WMDQubGliPC9QYXRoV2l0aEZpbGVOYW1lPgorICAgICAgPEZpbGVuYW1lV2l0aG91dFBhdGg+RzQwMV9kcnZfaHdfVjA0LmxpYjwvRmlsZW5hbWVXaXRob3V0UGF0aD4KKyAgICA8L0ZpbGU+CisgICAgPEZpbGU+CisgICAgICA8R3JvdXBOdW1iZXI+NDwvR3JvdXBOdW1iZXI+CisgICAgICA8RmlsZU51bWJlcj4yNzwvRmlsZU51bWJlcj4KKyAgICAgIDxGaWxlVHlwZT40PC9GaWxlVHlwZT4KKyAgICAgIDx0dkV4cD4wPC90dkV4cD4KKyAgICAgIDxGb2N1cz4wPC9Gb2N1cz4KKyAgICAgIDxDb2x1bW5OdW1iZXI+MDwvQ29sdW1uTnVtYmVyPgorICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPgorICAgICAgPFRvcExpbmU+MDwvVG9wTGluZT4KKyAgICAgIDxDdXJyZW50TGluZT4wPC9DdXJyZW50TGluZT4KKyAgICAgIDxiRGF2ZTI+MDwvYkRhdmUyPgorICAgICAgPFBhdGhXaXRoRmlsZU5hbWU+Li5cbGliXGc0MDFfdWFydDVfdjAwMS5saWI8L1BhdGhXaXRoRmlsZU5hbWU+CisgICAgICA8RmlsZW5hbWVXaXRob3V0UGF0aD5nNDAxX3VhcnQ1X3YwMDEubGliPC9GaWxlbmFtZVdpdGhvdXRQYXRoPgorICAgIDwvRmlsZT4KKyAgPC9Hcm91cD4KKworICA8R3JvdXA+CisgICAgPEdyb3VwTmFtZT5zdF9md19saWI8L0dyb3VwTmFtZT4KKyAgICA8dHZFeHA+MDwvdHZFeHA+CisgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPgorICAgIDxjYlNlbD4wPC9jYlNlbD4KKyAgICA8RmlsZT4KKyAgICAgIDxHcm91cE51bWJlcj41PC9Hcm91cE51bWJlcj4KKyAgICAgIDxGaWxlTnVtYmVyPjI4PC9GaWxlTnVtYmVyPgorICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgPHR2RXhwPjA8L3R2RXhwPgorICAgICAgPEZvY3VzPjA8L0ZvY3VzPgorICAgICAgPENvbHVtbk51bWJlcj4wPC9Db2x1bW5OdW1iZXI+CisgICAgICA8dHZFeHBPcHREbGc+MDwvdHZFeHBPcHREbGc+CisgICAgICA8VG9wTGluZT4wPC9Ub3BMaW5lPgorICAgICAgPEN1cnJlbnRMaW5lPjA8L0N1cnJlbnRMaW5lPgorICAgICAgPGJEYXZlMj4wPC9iRGF2ZTI+CisgICAgICA8UGF0aFdpdGhGaWxlTmFtZT4uLlwuLlxzdF9md19saWJcc3JjXGNvcmVfY20zLmM8L1BhdGhXaXRoRmlsZU5hbWU+CisgICAgICA8RmlsZW5hbWVXaXRob3V0UGF0aD5jb3JlX2NtMy5jPC9GaWxlbmFtZVdpdGhvdXRQYXRoPgorICAgIDwvRmlsZT4KKyAgICA8RmlsZT4KKyAgICAgIDxHcm91cE51bWJlcj41PC9Hcm91cE51bWJlcj4KKyAgICAgIDxGaWxlTnVtYmVyPjI5PC9GaWxlTnVtYmVyPgorICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgPHR2RXhwPjA8L3R2RXhwPgorICAgICAgPEZvY3VzPjA8L0ZvY3VzPgorICAgICAgPENvbHVtbk51bWJlcj4wPC9Db2x1bW5OdW1iZXI+CisgICAgICA8dHZFeHBPcHREbGc+MDwvdHZFeHBPcHREbGc+CisgICAgICA8VG9wTGluZT4wPC9Ub3BMaW5lPgorICAgICAgPEN1cnJlbnRMaW5lPjA8L0N1cnJlbnRMaW5lPgorICAgICAgPGJEYXZlMj4wPC9iRGF2ZTI+CisgICAgICA8UGF0aFdpdGhGaWxlTmFtZT4uLlwuLlxzdF9md19saWJcc3JjXG1pc2MuYzwvUGF0aFdpdGhGaWxlTmFtZT4KKyAgICAgIDxGaWxlbmFtZVdpdGhvdXRQYXRoPm1pc2MuYzwvRmlsZW5hbWVXaXRob3V0UGF0aD4KKyAgICA8L0ZpbGU+CisgICAgPEZpbGU+CisgICAgICA8R3JvdXBOdW1iZXI+NTwvR3JvdXBOdW1iZXI+CisgICAgICA8RmlsZU51bWJlcj4zMDwvRmlsZU51bWJlcj4KKyAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgIDx0dkV4cD4wPC90dkV4cD4KKyAgICAgIDxGb2N1cz4wPC9Gb2N1cz4KKyAgICAgIDxDb2x1bW5OdW1iZXI+MDwvQ29sdW1uTnVtYmVyPgorICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPgorICAgICAgPFRvcExpbmU+MDwvVG9wTGluZT4KKyAgICAgIDxDdXJyZW50TGluZT4wPC9DdXJyZW50TGluZT4KKyAgICAgIDxiRGF2ZTI+MDwvYkRhdmUyPgorICAgICAgPFBhdGhXaXRoRmlsZU5hbWU+Li5cLi5cc3RfZndfbGliXHNyY1xzdG0zMmYxMHhfYWRjLmM8L1BhdGhXaXRoRmlsZU5hbWU+CisgICAgICA8RmlsZW5hbWVXaXRob3V0UGF0aD5zdG0zMmYxMHhfYWRjLmM8L0ZpbGVuYW1lV2l0aG91dFBhdGg+CisgICAgPC9GaWxlPgorICAgIDxGaWxlPgorICAgICAgPEdyb3VwTnVtYmVyPjU8L0dyb3VwTnVtYmVyPgorICAgICAgPEZpbGVOdW1iZXI+MzE8L0ZpbGVOdW1iZXI+CisgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICA8dHZFeHA+MDwvdHZFeHA+CisgICAgICA8Rm9jdXM+MDwvRm9jdXM+CisgICAgICA8Q29sdW1uTnVtYmVyPjA8L0NvbHVtbk51bWJlcj4KKyAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4KKyAgICAgIDxUb3BMaW5lPjA8L1RvcExpbmU+CisgICAgICA8Q3VycmVudExpbmU+MDwvQ3VycmVudExpbmU+CisgICAgICA8YkRhdmUyPjA8L2JEYXZlMj4KKyAgICAgIDxQYXRoV2l0aEZpbGVOYW1lPi4uXC4uXHN0X2Z3X2xpYlxzcmNcc3RtMzJmMTB4X2JrcC5jPC9QYXRoV2l0aEZpbGVOYW1lPgorICAgICAgPEZpbGVuYW1lV2l0aG91dFBhdGg+c3RtMzJmMTB4X2JrcC5jPC9GaWxlbmFtZVdpdGhvdXRQYXRoPgorICAgIDwvRmlsZT4KKyAgICA8RmlsZT4KKyAgICAgIDxHcm91cE51bWJlcj41PC9Hcm91cE51bWJlcj4KKyAgICAgIDxGaWxlTnVtYmVyPjMyPC9GaWxlTnVtYmVyPgorICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgPHR2RXhwPjA8L3R2RXhwPgorICAgICAgPEZvY3VzPjA8L0ZvY3VzPgorICAgICAgPENvbHVtbk51bWJlcj4wPC9Db2x1bW5OdW1iZXI+CisgICAgICA8dHZFeHBPcHREbGc+MDwvdHZFeHBPcHREbGc+CisgICAgICA8VG9wTGluZT4wPC9Ub3BMaW5lPgorICAgICAgPEN1cnJlbnRMaW5lPjA8L0N1cnJlbnRMaW5lPgorICAgICAgPGJEYXZlMj4wPC9iRGF2ZTI+CisgICAgICA8UGF0aFdpdGhGaWxlTmFtZT4uLlwuLlxzdF9md19saWJcc3JjXHN0bTMyZjEweF9jYW4uYzwvUGF0aFdpdGhGaWxlTmFtZT4KKyAgICAgIDxGaWxlbmFtZVdpdGhvdXRQYXRoPnN0bTMyZjEweF9jYW4uYzwvRmlsZW5hbWVXaXRob3V0UGF0aD4KKyAgICA8L0ZpbGU+CisgICAgPEZpbGU+CisgICAgICA8R3JvdXBOdW1iZXI+NTwvR3JvdXBOdW1iZXI+CisgICAgICA8RmlsZU51bWJlcj4zMzwvRmlsZU51bWJlcj4KKyAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgIDx0dkV4cD4wPC90dkV4cD4KKyAgICAgIDxGb2N1cz4wPC9Gb2N1cz4KKyAgICAgIDxDb2x1bW5OdW1iZXI+MDwvQ29sdW1uTnVtYmVyPgorICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPgorICAgICAgPFRvcExpbmU+MDwvVG9wTGluZT4KKyAgICAgIDxDdXJyZW50TGluZT4wPC9DdXJyZW50TGluZT4KKyAgICAgIDxiRGF2ZTI+MDwvYkRhdmUyPgorICAgICAgPFBhdGhXaXRoRmlsZU5hbWU+Li5cLi5cc3RfZndfbGliXHNyY1xzdG0zMmYxMHhfY2VjLmM8L1BhdGhXaXRoRmlsZU5hbWU+CisgICAgICA8RmlsZW5hbWVXaXRob3V0UGF0aD5zdG0zMmYxMHhfY2VjLmM8L0ZpbGVuYW1lV2l0aG91dFBhdGg+CisgICAgPC9GaWxlPgorICAgIDxGaWxlPgorICAgICAgPEdyb3VwTnVtYmVyPjU8L0dyb3VwTnVtYmVyPgorICAgICAgPEZpbGVOdW1iZXI+MzQ8L0ZpbGVOdW1iZXI+CisgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICA8dHZFeHA+MDwvdHZFeHA+CisgICAgICA8Rm9jdXM+MDwvRm9jdXM+CisgICAgICA8Q29sdW1uTnVtYmVyPjA8L0NvbHVtbk51bWJlcj4KKyAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4KKyAgICAgIDxUb3BMaW5lPjA8L1RvcExpbmU+CisgICAgICA8Q3VycmVudExpbmU+MDwvQ3VycmVudExpbmU+CisgICAgICA8YkRhdmUyPjA8L2JEYXZlMj4KKyAgICAgIDxQYXRoV2l0aEZpbGVOYW1lPi4uXC4uXHN0X2Z3X2xpYlxzcmNcc3RtMzJmMTB4X2NyYy5jPC9QYXRoV2l0aEZpbGVOYW1lPgorICAgICAgPEZpbGVuYW1lV2l0aG91dFBhdGg+c3RtMzJmMTB4X2NyYy5jPC9GaWxlbmFtZVdpdGhvdXRQYXRoPgorICAgIDwvRmlsZT4KKyAgICA8RmlsZT4KKyAgICAgIDxHcm91cE51bWJlcj41PC9Hcm91cE51bWJlcj4KKyAgICAgIDxGaWxlTnVtYmVyPjM1PC9GaWxlTnVtYmVyPgorICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgPHR2RXhwPjA8L3R2RXhwPgorICAgICAgPEZvY3VzPjA8L0ZvY3VzPgorICAgICAgPENvbHVtbk51bWJlcj4wPC9Db2x1bW5OdW1iZXI+CisgICAgICA8dHZFeHBPcHREbGc+MDwvdHZFeHBPcHREbGc+CisgICAgICA8VG9wTGluZT4wPC9Ub3BMaW5lPgorICAgICAgPEN1cnJlbnRMaW5lPjA8L0N1cnJlbnRMaW5lPgorICAgICAgPGJEYXZlMj4wPC9iRGF2ZTI+CisgICAgICA8UGF0aFdpdGhGaWxlTmFtZT4uLlwuLlxzdF9md19saWJcc3JjXHN0bTMyZjEweF9kYWMuYzwvUGF0aFdpdGhGaWxlTmFtZT4KKyAgICAgIDxGaWxlbmFtZVdpdGhvdXRQYXRoPnN0bTMyZjEweF9kYWMuYzwvRmlsZW5hbWVXaXRob3V0UGF0aD4KKyAgICA8L0ZpbGU+CisgICAgPEZpbGU+CisgICAgICA8R3JvdXBOdW1iZXI+NTwvR3JvdXBOdW1iZXI+CisgICAgICA8RmlsZU51bWJlcj4zNjwvRmlsZU51bWJlcj4KKyAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgIDx0dkV4cD4wPC90dkV4cD4KKyAgICAgIDxGb2N1cz4wPC9Gb2N1cz4KKyAgICAgIDxDb2x1bW5OdW1iZXI+MDwvQ29sdW1uTnVtYmVyPgorICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPgorICAgICAgPFRvcExpbmU+MDwvVG9wTGluZT4KKyAgICAgIDxDdXJyZW50TGluZT4wPC9DdXJyZW50TGluZT4KKyAgICAgIDxiRGF2ZTI+MDwvYkRhdmUyPgorICAgICAgPFBhdGhXaXRoRmlsZU5hbWU+Li5cLi5cc3RfZndfbGliXHNyY1xzdG0zMmYxMHhfZGJnbWN1LmM8L1BhdGhXaXRoRmlsZU5hbWU+CisgICAgICA8RmlsZW5hbWVXaXRob3V0UGF0aD5zdG0zMmYxMHhfZGJnbWN1LmM8L0ZpbGVuYW1lV2l0aG91dFBhdGg+CisgICAgPC9GaWxlPgorICAgIDxGaWxlPgorICAgICAgPEdyb3VwTnVtYmVyPjU8L0dyb3VwTnVtYmVyPgorICAgICAgPEZpbGVOdW1iZXI+Mzc8L0ZpbGVOdW1iZXI+CisgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICA8dHZFeHA+MDwvdHZFeHA+CisgICAgICA8Rm9jdXM+MDwvRm9jdXM+CisgICAgICA8Q29sdW1uTnVtYmVyPjA8L0NvbHVtbk51bWJlcj4KKyAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4KKyAgICAgIDxUb3BMaW5lPjA8L1RvcExpbmU+CisgICAgICA8Q3VycmVudExpbmU+MDwvQ3VycmVudExpbmU+CisgICAgICA8YkRhdmUyPjA8L2JEYXZlMj4KKyAgICAgIDxQYXRoV2l0aEZpbGVOYW1lPi4uXC4uXHN0X2Z3X2xpYlxzcmNcc3RtMzJmMTB4X2RtYS5jPC9QYXRoV2l0aEZpbGVOYW1lPgorICAgICAgPEZpbGVuYW1lV2l0aG91dFBhdGg+c3RtMzJmMTB4X2RtYS5jPC9GaWxlbmFtZVdpdGhvdXRQYXRoPgorICAgIDwvRmlsZT4KKyAgICA8RmlsZT4KKyAgICAgIDxHcm91cE51bWJlcj41PC9Hcm91cE51bWJlcj4KKyAgICAgIDxGaWxlTnVtYmVyPjM4PC9GaWxlTnVtYmVyPgorICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgPHR2RXhwPjA8L3R2RXhwPgorICAgICAgPEZvY3VzPjA8L0ZvY3VzPgorICAgICAgPENvbHVtbk51bWJlcj4wPC9Db2x1bW5OdW1iZXI+CisgICAgICA8dHZFeHBPcHREbGc+MDwvdHZFeHBPcHREbGc+CisgICAgICA8VG9wTGluZT4wPC9Ub3BMaW5lPgorICAgICAgPEN1cnJlbnRMaW5lPjA8L0N1cnJlbnRMaW5lPgorICAgICAgPGJEYXZlMj4wPC9iRGF2ZTI+CisgICAgICA8UGF0aFdpdGhGaWxlTmFtZT4uLlwuLlxzdF9md19saWJcc3JjXHN0bTMyZjEweF9leHRpLmM8L1BhdGhXaXRoRmlsZU5hbWU+CisgICAgICA8RmlsZW5hbWVXaXRob3V0UGF0aD5zdG0zMmYxMHhfZXh0aS5jPC9GaWxlbmFtZVdpdGhvdXRQYXRoPgorICAgIDwvRmlsZT4KKyAgICA8RmlsZT4KKyAgICAgIDxHcm91cE51bWJlcj41PC9Hcm91cE51bWJlcj4KKyAgICAgIDxGaWxlTnVtYmVyPjM5PC9GaWxlTnVtYmVyPgorICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgPHR2RXhwPjA8L3R2RXhwPgorICAgICAgPEZvY3VzPjA8L0ZvY3VzPgorICAgICAgPENvbHVtbk51bWJlcj4wPC9Db2x1bW5OdW1iZXI+CisgICAgICA8dHZFeHBPcHREbGc+MDwvdHZFeHBPcHREbGc+CisgICAgICA8VG9wTGluZT4wPC9Ub3BMaW5lPgorICAgICAgPEN1cnJlbnRMaW5lPjA8L0N1cnJlbnRMaW5lPgorICAgICAgPGJEYXZlMj4wPC9iRGF2ZTI+CisgICAgICA8UGF0aFdpdGhGaWxlTmFtZT4uLlwuLlxzdF9md19saWJcc3JjXHN0bTMyZjEweF9mbGFzaC5jPC9QYXRoV2l0aEZpbGVOYW1lPgorICAgICAgPEZpbGVuYW1lV2l0aG91dFBhdGg+c3RtMzJmMTB4X2ZsYXNoLmM8L0ZpbGVuYW1lV2l0aG91dFBhdGg+CisgICAgPC9GaWxlPgorICAgIDxGaWxlPgorICAgICAgPEdyb3VwTnVtYmVyPjU8L0dyb3VwTnVtYmVyPgorICAgICAgPEZpbGVOdW1iZXI+NDA8L0ZpbGVOdW1iZXI+CisgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICA8dHZFeHA+MDwvdHZFeHA+CisgICAgICA8Rm9jdXM+MDwvRm9jdXM+CisgICAgICA8Q29sdW1uTnVtYmVyPjA8L0NvbHVtbk51bWJlcj4KKyAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4KKyAgICAgIDxUb3BMaW5lPjA8L1RvcExpbmU+CisgICAgICA8Q3VycmVudExpbmU+MDwvQ3VycmVudExpbmU+CisgICAgICA8YkRhdmUyPjA8L2JEYXZlMj4KKyAgICAgIDxQYXRoV2l0aEZpbGVOYW1lPi4uXC4uXHN0X2Z3X2xpYlxzcmNcc3RtMzJmMTB4X2ZzbWMuYzwvUGF0aFdpdGhGaWxlTmFtZT4KKyAgICAgIDxGaWxlbmFtZVdpdGhvdXRQYXRoPnN0bTMyZjEweF9mc21jLmM8L0ZpbGVuYW1lV2l0aG91dFBhdGg+CisgICAgPC9GaWxlPgorICAgIDxGaWxlPgorICAgICAgPEdyb3VwTnVtYmVyPjU8L0dyb3VwTnVtYmVyPgorICAgICAgPEZpbGVOdW1iZXI+NDE8L0ZpbGVOdW1iZXI+CisgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICA8dHZFeHA+MDwvdHZFeHA+CisgICAgICA8Rm9jdXM+MDwvRm9jdXM+CisgICAgICA8Q29sdW1uTnVtYmVyPjA8L0NvbHVtbk51bWJlcj4KKyAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4KKyAgICAgIDxUb3BMaW5lPjIzMjwvVG9wTGluZT4KKyAgICAgIDxDdXJyZW50TGluZT4yMzY8L0N1cnJlbnRMaW5lPgorICAgICAgPGJEYXZlMj4wPC9iRGF2ZTI+CisgICAgICA8UGF0aFdpdGhGaWxlTmFtZT4uLlwuLlxzdF9md19saWJcc3JjXHN0bTMyZjEweF9ncGlvLmM8L1BhdGhXaXRoRmlsZU5hbWU+CisgICAgICA8RmlsZW5hbWVXaXRob3V0UGF0aD5zdG0zMmYxMHhfZ3Bpby5jPC9GaWxlbmFtZVdpdGhvdXRQYXRoPgorICAgIDwvRmlsZT4KKyAgICA8RmlsZT4KKyAgICAgIDxHcm91cE51bWJlcj41PC9Hcm91cE51bWJlcj4KKyAgICAgIDxGaWxlTnVtYmVyPjQyPC9GaWxlTnVtYmVyPgorICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgPHR2RXhwPjA8L3R2RXhwPgorICAgICAgPEZvY3VzPjA8L0ZvY3VzPgorICAgICAgPENvbHVtbk51bWJlcj4wPC9Db2x1bW5OdW1iZXI+CisgICAgICA8dHZFeHBPcHREbGc+MDwvdHZFeHBPcHREbGc+CisgICAgICA8VG9wTGluZT4wPC9Ub3BMaW5lPgorICAgICAgPEN1cnJlbnRMaW5lPjA8L0N1cnJlbnRMaW5lPgorICAgICAgPGJEYXZlMj4wPC9iRGF2ZTI+CisgICAgICA8UGF0aFdpdGhGaWxlTmFtZT4uLlwuLlxzdF9md19saWJcc3JjXHN0bTMyZjEweF9pMmMuYzwvUGF0aFdpdGhGaWxlTmFtZT4KKyAgICAgIDxGaWxlbmFtZVdpdGhvdXRQYXRoPnN0bTMyZjEweF9pMmMuYzwvRmlsZW5hbWVXaXRob3V0UGF0aD4KKyAgICA8L0ZpbGU+CisgICAgPEZpbGU+CisgICAgICA8R3JvdXBOdW1iZXI+NTwvR3JvdXBOdW1iZXI+CisgICAgICA8RmlsZU51bWJlcj40MzwvRmlsZU51bWJlcj4KKyAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgIDx0dkV4cD4wPC90dkV4cD4KKyAgICAgIDxGb2N1cz4wPC9Gb2N1cz4KKyAgICAgIDxDb2x1bW5OdW1iZXI+MDwvQ29sdW1uTnVtYmVyPgorICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPgorICAgICAgPFRvcExpbmU+MDwvVG9wTGluZT4KKyAgICAgIDxDdXJyZW50TGluZT4wPC9DdXJyZW50TGluZT4KKyAgICAgIDxiRGF2ZTI+MDwvYkRhdmUyPgorICAgICAgPFBhdGhXaXRoRmlsZU5hbWU+Li5cLi5cc3RfZndfbGliXHNyY1xzdG0zMmYxMHhfcHdyLmM8L1BhdGhXaXRoRmlsZU5hbWU+CisgICAgICA8RmlsZW5hbWVXaXRob3V0UGF0aD5zdG0zMmYxMHhfcHdyLmM8L0ZpbGVuYW1lV2l0aG91dFBhdGg+CisgICAgPC9GaWxlPgorICAgIDxGaWxlPgorICAgICAgPEdyb3VwTnVtYmVyPjU8L0dyb3VwTnVtYmVyPgorICAgICAgPEZpbGVOdW1iZXI+NDQ8L0ZpbGVOdW1iZXI+CisgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICA8dHZFeHA+MDwvdHZFeHA+CisgICAgICA8Rm9jdXM+MDwvRm9jdXM+CisgICAgICA8Q29sdW1uTnVtYmVyPjA8L0NvbHVtbk51bWJlcj4KKyAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4KKyAgICAgIDxUb3BMaW5lPjA8L1RvcExpbmU+CisgICAgICA8Q3VycmVudExpbmU+MDwvQ3VycmVudExpbmU+CisgICAgICA8YkRhdmUyPjA8L2JEYXZlMj4KKyAgICAgIDxQYXRoV2l0aEZpbGVOYW1lPi4uXC4uXHN0X2Z3X2xpYlxzcmNcc3RtMzJmMTB4X2l3ZGcuYzwvUGF0aFdpdGhGaWxlTmFtZT4KKyAgICAgIDxGaWxlbmFtZVdpdGhvdXRQYXRoPnN0bTMyZjEweF9pd2RnLmM8L0ZpbGVuYW1lV2l0aG91dFBhdGg+CisgICAgPC9GaWxlPgorICAgIDxGaWxlPgorICAgICAgPEdyb3VwTnVtYmVyPjU8L0dyb3VwTnVtYmVyPgorICAgICAgPEZpbGVOdW1iZXI+NDU8L0ZpbGVOdW1iZXI+CisgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICA8dHZFeHA+MDwvdHZFeHA+CisgICAgICA8Rm9jdXM+MDwvRm9jdXM+CisgICAgICA8Q29sdW1uTnVtYmVyPjA8L0NvbHVtbk51bWJlcj4KKyAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4KKyAgICAgIDxUb3BMaW5lPjA8L1RvcExpbmU+CisgICAgICA8Q3VycmVudExpbmU+MDwvQ3VycmVudExpbmU+CisgICAgICA8YkRhdmUyPjA8L2JEYXZlMj4KKyAgICAgIDxQYXRoV2l0aEZpbGVOYW1lPi4uXC4uXHN0X2Z3X2xpYlxzcmNcc3RtMzJmMTB4X3JjYy5jPC9QYXRoV2l0aEZpbGVOYW1lPgorICAgICAgPEZpbGVuYW1lV2l0aG91dFBhdGg+c3RtMzJmMTB4X3JjYy5jPC9GaWxlbmFtZVdpdGhvdXRQYXRoPgorICAgIDwvRmlsZT4KKyAgICA8RmlsZT4KKyAgICAgIDxHcm91cE51bWJlcj41PC9Hcm91cE51bWJlcj4KKyAgICAgIDxGaWxlTnVtYmVyPjQ2PC9GaWxlTnVtYmVyPgorICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgPHR2RXhwPjA8L3R2RXhwPgorICAgICAgPEZvY3VzPjA8L0ZvY3VzPgorICAgICAgPENvbHVtbk51bWJlcj4wPC9Db2x1bW5OdW1iZXI+CisgICAgICA8dHZFeHBPcHREbGc+MDwvdHZFeHBPcHREbGc+CisgICAgICA8VG9wTGluZT4wPC9Ub3BMaW5lPgorICAgICAgPEN1cnJlbnRMaW5lPjA8L0N1cnJlbnRMaW5lPgorICAgICAgPGJEYXZlMj4wPC9iRGF2ZTI+CisgICAgICA8UGF0aFdpdGhGaWxlTmFtZT4uLlwuLlxzdF9md19saWJcc3JjXHN0bTMyZjEweF9ydGMuYzwvUGF0aFdpdGhGaWxlTmFtZT4KKyAgICAgIDxGaWxlbmFtZVdpdGhvdXRQYXRoPnN0bTMyZjEweF9ydGMuYzwvRmlsZW5hbWVXaXRob3V0UGF0aD4KKyAgICA8L0ZpbGU+CisgICAgPEZpbGU+CisgICAgICA8R3JvdXBOdW1iZXI+NTwvR3JvdXBOdW1iZXI+CisgICAgICA8RmlsZU51bWJlcj40NzwvRmlsZU51bWJlcj4KKyAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgIDx0dkV4cD4wPC90dkV4cD4KKyAgICAgIDxGb2N1cz4wPC9Gb2N1cz4KKyAgICAgIDxDb2x1bW5OdW1iZXI+MDwvQ29sdW1uTnVtYmVyPgorICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPgorICAgICAgPFRvcExpbmU+MDwvVG9wTGluZT4KKyAgICAgIDxDdXJyZW50TGluZT4wPC9DdXJyZW50TGluZT4KKyAgICAgIDxiRGF2ZTI+MDwvYkRhdmUyPgorICAgICAgPFBhdGhXaXRoRmlsZU5hbWU+Li5cLi5cc3RfZndfbGliXHNyY1xzdG0zMmYxMHhfc2Rpby5jPC9QYXRoV2l0aEZpbGVOYW1lPgorICAgICAgPEZpbGVuYW1lV2l0aG91dFBhdGg+c3RtMzJmMTB4X3NkaW8uYzwvRmlsZW5hbWVXaXRob3V0UGF0aD4KKyAgICA8L0ZpbGU+CisgICAgPEZpbGU+CisgICAgICA8R3JvdXBOdW1iZXI+NTwvR3JvdXBOdW1iZXI+CisgICAgICA8RmlsZU51bWJlcj40ODwvRmlsZU51bWJlcj4KKyAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgIDx0dkV4cD4wPC90dkV4cD4KKyAgICAgIDxGb2N1cz4wPC9Gb2N1cz4KKyAgICAgIDxDb2x1bW5OdW1iZXI+MDwvQ29sdW1uTnVtYmVyPgorICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPgorICAgICAgPFRvcExpbmU+MDwvVG9wTGluZT4KKyAgICAgIDxDdXJyZW50TGluZT4wPC9DdXJyZW50TGluZT4KKyAgICAgIDxiRGF2ZTI+MDwvYkRhdmUyPgorICAgICAgPFBhdGhXaXRoRmlsZU5hbWU+Li5cLi5cc3RfZndfbGliXHNyY1xzdG0zMmYxMHhfc3BpLmM8L1BhdGhXaXRoRmlsZU5hbWU+CisgICAgICA8RmlsZW5hbWVXaXRob3V0UGF0aD5zdG0zMmYxMHhfc3BpLmM8L0ZpbGVuYW1lV2l0aG91dFBhdGg+CisgICAgPC9GaWxlPgorICAgIDxGaWxlPgorICAgICAgPEdyb3VwTnVtYmVyPjU8L0dyb3VwTnVtYmVyPgorICAgICAgPEZpbGVOdW1iZXI+NDk8L0ZpbGVOdW1iZXI+CisgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICA8dHZFeHA+MDwvdHZFeHA+CisgICAgICA8Rm9jdXM+MDwvRm9jdXM+CisgICAgICA8Q29sdW1uTnVtYmVyPjA8L0NvbHVtbk51bWJlcj4KKyAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4KKyAgICAgIDxUb3BMaW5lPjA8L1RvcExpbmU+CisgICAgICA8Q3VycmVudExpbmU+MDwvQ3VycmVudExpbmU+CisgICAgICA8YkRhdmUyPjA8L2JEYXZlMj4KKyAgICAgIDxQYXRoV2l0aEZpbGVOYW1lPi4uXC4uXHN0X2Z3X2xpYlxzcmNcc3RtMzJmMTB4X3RpbS5jPC9QYXRoV2l0aEZpbGVOYW1lPgorICAgICAgPEZpbGVuYW1lV2l0aG91dFBhdGg+c3RtMzJmMTB4X3RpbS5jPC9GaWxlbmFtZVdpdGhvdXRQYXRoPgorICAgIDwvRmlsZT4KKyAgICA8RmlsZT4KKyAgICAgIDxHcm91cE51bWJlcj41PC9Hcm91cE51bWJlcj4KKyAgICAgIDxGaWxlTnVtYmVyPjUwPC9GaWxlTnVtYmVyPgorICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgPHR2RXhwPjA8L3R2RXhwPgorICAgICAgPEZvY3VzPjA8L0ZvY3VzPgorICAgICAgPENvbHVtbk51bWJlcj4wPC9Db2x1bW5OdW1iZXI+CisgICAgICA8dHZFeHBPcHREbGc+MDwvdHZFeHBPcHREbGc+CisgICAgICA8VG9wTGluZT4wPC9Ub3BMaW5lPgorICAgICAgPEN1cnJlbnRMaW5lPjA8L0N1cnJlbnRMaW5lPgorICAgICAgPGJEYXZlMj4wPC9iRGF2ZTI+CisgICAgICA8UGF0aFdpdGhGaWxlTmFtZT4uLlwuLlxzdF9md19saWJcc3JjXHN0bTMyZjEweF91c2FydC5jPC9QYXRoV2l0aEZpbGVOYW1lPgorICAgICAgPEZpbGVuYW1lV2l0aG91dFBhdGg+c3RtMzJmMTB4X3VzYXJ0LmM8L0ZpbGVuYW1lV2l0aG91dFBhdGg+CisgICAgPC9GaWxlPgorICAgIDxGaWxlPgorICAgICAgPEdyb3VwTnVtYmVyPjU8L0dyb3VwTnVtYmVyPgorICAgICAgPEZpbGVOdW1iZXI+NTE8L0ZpbGVOdW1iZXI+CisgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICA8dHZFeHA+MDwvdHZFeHA+CisgICAgICA8Rm9jdXM+MDwvRm9jdXM+CisgICAgICA8Q29sdW1uTnVtYmVyPjA8L0NvbHVtbk51bWJlcj4KKyAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4KKyAgICAgIDxUb3BMaW5lPjA8L1RvcExpbmU+CisgICAgICA8Q3VycmVudExpbmU+MDwvQ3VycmVudExpbmU+CisgICAgICA8YkRhdmUyPjA8L2JEYXZlMj4KKyAgICAgIDxQYXRoV2l0aEZpbGVOYW1lPi4uXC4uXHN0X2Z3X2xpYlxzcmNcc3RtMzJmMTB4X3d3ZGcuYzwvUGF0aFdpdGhGaWxlTmFtZT4KKyAgICAgIDxGaWxlbmFtZVdpdGhvdXRQYXRoPnN0bTMyZjEweF93d2RnLmM8L0ZpbGVuYW1lV2l0aG91dFBhdGg+CisgICAgPC9GaWxlPgorICAgIDxGaWxlPgorICAgICAgPEdyb3VwTnVtYmVyPjU8L0dyb3VwTnVtYmVyPgorICAgICAgPEZpbGVOdW1iZXI+NTI8L0ZpbGVOdW1iZXI+CisgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICA8dHZFeHA+MDwvdHZFeHA+CisgICAgICA8Rm9jdXM+MDwvRm9jdXM+CisgICAgICA8Q29sdW1uTnVtYmVyPjA8L0NvbHVtbk51bWJlcj4KKyAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4KKyAgICAgIDxUb3BMaW5lPjA8L1RvcExpbmU+CisgICAgICA8Q3VycmVudExpbmU+MDwvQ3VycmVudExpbmU+CisgICAgICA8YkRhdmUyPjA8L2JEYXZlMj4KKyAgICAgIDxQYXRoV2l0aEZpbGVOYW1lPi4uXC4uXHN0X2Z3X2xpYlxzeXN0ZW1fc3RtMzJmMTB4LmM8L1BhdGhXaXRoRmlsZU5hbWU+CisgICAgICA8RmlsZW5hbWVXaXRob3V0UGF0aD5zeXN0ZW1fc3RtMzJmMTB4LmM8L0ZpbGVuYW1lV2l0aG91dFBhdGg+CisgICAgPC9GaWxlPgorICAgIDxGaWxlPgorICAgICAgPEdyb3VwTnVtYmVyPjU8L0dyb3VwTnVtYmVyPgorICAgICAgPEZpbGVOdW1iZXI+NTM8L0ZpbGVOdW1iZXI+CisgICAgICA8RmlsZVR5cGU+MjwvRmlsZVR5cGU+CisgICAgICA8dHZFeHA+MDwvdHZFeHA+CisgICAgICA8Rm9jdXM+MDwvRm9jdXM+CisgICAgICA8Q29sdW1uTnVtYmVyPjA8L0NvbHVtbk51bWJlcj4KKyAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4KKyAgICAgIDxUb3BMaW5lPjA8L1RvcExpbmU+CisgICAgICA8Q3VycmVudExpbmU+MDwvQ3VycmVudExpbmU+CisgICAgICA8YkRhdmUyPjA8L2JEYXZlMj4KKyAgICAgIDxQYXRoV2l0aEZpbGVOYW1lPi4uXC4uXHN0X2Z3X2xpYlxzdGFydHVwX3N0bTMyZjEweF9oZC5zPC9QYXRoV2l0aEZpbGVOYW1lPgorICAgICAgPEZpbGVuYW1lV2l0aG91dFBhdGg+c3RhcnR1cF9zdG0zMmYxMHhfaGQuczwvRmlsZW5hbWVXaXRob3V0UGF0aD4KKyAgICA8L0ZpbGU+CisgIDwvR3JvdXA+CisKKyAgPEdyb3VwPgorICAgIDxHcm91cE5hbWU+c3lzX2h3PC9Hcm91cE5hbWU+CisgICAgPHR2RXhwPjE8L3R2RXhwPgorICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4KKyAgICA8Y2JTZWw+MDwvY2JTZWw+CisgICAgPEZpbGU+CisgICAgICA8R3JvdXBOdW1iZXI+NjwvR3JvdXBOdW1iZXI+CisgICAgICA8RmlsZU51bWJlcj41NDwvRmlsZU51bWJlcj4KKyAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgIDx0dkV4cD4wPC90dkV4cD4KKyAgICAgIDxGb2N1cz4wPC9Gb2N1cz4KKyAgICAgIDxDb2x1bW5OdW1iZXI+MDwvQ29sdW1uTnVtYmVyPgorICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPgorICAgICAgPFRvcExpbmU+NTg8L1RvcExpbmU+CisgICAgICA8Q3VycmVudExpbmU+NjI8L0N1cnJlbnRMaW5lPgorICAgICAgPGJEYXZlMj4wPC9iRGF2ZTI+CisgICAgICA8UGF0aFdpdGhGaWxlTmFtZT4uLlwuLlxzeXNfaHdca2V5cGFkLmM8L1BhdGhXaXRoRmlsZU5hbWU+CisgICAgICA8RmlsZW5hbWVXaXRob3V0UGF0aD5rZXlwYWQuYzwvRmlsZW5hbWVXaXRob3V0UGF0aD4KKyAgICA8L0ZpbGU+CisgICAgPEZpbGU+CisgICAgICA8R3JvdXBOdW1iZXI+NjwvR3JvdXBOdW1iZXI+CisgICAgICA8RmlsZU51bWJlcj41NTwvRmlsZU51bWJlcj4KKyAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgIDx0dkV4cD4wPC90dkV4cD4KKyAgICAgIDxGb2N1cz4wPC9Gb2N1cz4KKyAgICAgIDxDb2x1bW5OdW1iZXI+MDwvQ29sdW1uTnVtYmVyPgorICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPgorICAgICAgPFRvcExpbmU+MDwvVG9wTGluZT4KKyAgICAgIDxDdXJyZW50TGluZT4wPC9DdXJyZW50TGluZT4KKyAgICAgIDxiRGF2ZTI+MDwvYkRhdmUyPgorICAgICAgPFBhdGhXaXRoRmlsZU5hbWU+Li5cLi5cc3lzX2h3XGRydl9hZGMuYzwvUGF0aFdpdGhGaWxlTmFtZT4KKyAgICAgIDxGaWxlbmFtZVdpdGhvdXRQYXRoPmRydl9hZGMuYzwvRmlsZW5hbWVXaXRob3V0UGF0aD4KKyAgICA8L0ZpbGU+CisgIDwvR3JvdXA+CisKKyAgPEdyb3VwPgorICAgIDxHcm91cE5hbWU+ems8L0dyb3VwTmFtZT4KKyAgICA8dHZFeHA+MDwvdHZFeHA+CisgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPgorICAgIDxjYlNlbD4wPC9jYlNlbD4KKyAgICA8RmlsZT4KKyAgICAgIDxHcm91cE51bWJlcj43PC9Hcm91cE51bWJlcj4KKyAgICAgIDxGaWxlTnVtYmVyPjU2PC9GaWxlTnVtYmVyPgorICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgPHR2RXhwPjA8L3R2RXhwPgorICAgICAgPEZvY3VzPjA8L0ZvY3VzPgorICAgICAgPENvbHVtbk51bWJlcj4wPC9Db2x1bW5OdW1iZXI+CisgICAgICA8dHZFeHBPcHREbGc+MDwvdHZFeHBPcHREbGc+CisgICAgICA8VG9wTGluZT4wPC9Ub3BMaW5lPgorICAgICAgPEN1cnJlbnRMaW5lPjA8L0N1cnJlbnRMaW5lPgorICAgICAgPGJEYXZlMj4wPC9iRGF2ZTI+CisgICAgICA8UGF0aFdpdGhGaWxlTmFtZT4uLlwuLlx6a1xnYjIzMTJfMTYuYzwvUGF0aFdpdGhGaWxlTmFtZT4KKyAgICAgIDxGaWxlbmFtZVdpdGhvdXRQYXRoPmdiMjMxMl8xNi5jPC9GaWxlbmFtZVdpdGhvdXRQYXRoPgorICAgIDwvRmlsZT4KKyAgPC9Hcm91cD4KKworICA8R3JvdXA+CisgICAgPEdyb3VwTmFtZT5saWJxcjwvR3JvdXBOYW1lPgorICAgIDx0dkV4cD4wPC90dkV4cD4KKyAgICA8dHZFeHBPcHREbGc+MDwvdHZFeHBPcHREbGc+CisgICAgPGNiU2VsPjA8L2NiU2VsPgorICAgIDxGaWxlPgorICAgICAgPEdyb3VwTnVtYmVyPjg8L0dyb3VwTnVtYmVyPgorICAgICAgPEZpbGVOdW1iZXI+NTc8L0ZpbGVOdW1iZXI+CisgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICA8dHZFeHA+MDwvdHZFeHA+CisgICAgICA8Rm9jdXM+MDwvRm9jdXM+CisgICAgICA8Q29sdW1uTnVtYmVyPjA8L0NvbHVtbk51bWJlcj4KKyAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4KKyAgICAgIDxUb3BMaW5lPjA8L1RvcExpbmU+CisgICAgICA8Q3VycmVudExpbmU+MDwvQ3VycmVudExpbmU+CisgICAgICA8YkRhdmUyPjA8L2JEYXZlMj4KKyAgICAgIDxQYXRoV2l0aEZpbGVOYW1lPi4uXC4uXGxpYnFyXHFyZW5jb2RlLmM8L1BhdGhXaXRoRmlsZU5hbWU+CisgICAgICA8RmlsZW5hbWVXaXRob3V0UGF0aD5xcmVuY29kZS5jPC9GaWxlbmFtZVdpdGhvdXRQYXRoPgorICAgIDwvRmlsZT4KKyAgPC9Hcm91cD4KKworICA8R3JvdXA+CisgICAgPEdyb3VwTmFtZT5tc2dwYWNrPC9Hcm91cE5hbWU+CisgICAgPHR2RXhwPjA8L3R2RXhwPgorICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4KKyAgICA8Y2JTZWw+MDwvY2JTZWw+CisgICAgPEZpbGU+CisgICAgICA8R3JvdXBOdW1iZXI+OTwvR3JvdXBOdW1iZXI+CisgICAgICA8RmlsZU51bWJlcj41ODwvRmlsZU51bWJlcj4KKyAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgIDx0dkV4cD4wPC90dkV4cD4KKyAgICAgIDxGb2N1cz4wPC9Gb2N1cz4KKyAgICAgIDxDb2x1bW5OdW1iZXI+MDwvQ29sdW1uTnVtYmVyPgorICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPgorICAgICAgPFRvcExpbmU+MDwvVG9wTGluZT4KKyAgICAgIDxDdXJyZW50TGluZT4wPC9DdXJyZW50TGluZT4KKyAgICAgIDxiRGF2ZTI+MDwvYkRhdmUyPgorICAgICAgPFBhdGhXaXRoRmlsZU5hbWU+Li5cLi5cbXNncGFja1xjd3BhY2suYzwvUGF0aFdpdGhGaWxlTmFtZT4KKyAgICAgIDxGaWxlbmFtZVdpdGhvdXRQYXRoPmN3cGFjay5jPC9GaWxlbmFtZVdpdGhvdXRQYXRoPgorICAgIDwvRmlsZT4KKyAgPC9Hcm91cD4KKworPC9Qcm9qZWN0T3B0PgpkaWZmIC0tZ2l0IGEvZzQwMTMwMi9wcm9qZWN0L2c0MDEzMDIudXZwcm9qIGIvZzQwMTMwMi9wcm9qZWN0L2c0MDEzMDIudXZwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViMDgzYTYKLS0tIC9kZXYvbnVsbAorKysgYi9nNDAxMzAyL3Byb2plY3QvZzQwMTMwMi51dnByb2oKQEAgLTAsMCArMSwxNDM5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgc3RhbmRhbG9uZT0ibm8iID8+Cis8UHJvamVjdCB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6bm9OYW1lc3BhY2VTY2hlbWFMb2NhdGlvbj0icHJvamVjdF9wcm9qLnhzZCI+CisKKyAgPFNjaGVtYVZlcnNpb24+MS4xPC9TY2hlbWFWZXJzaW9uPgorCisgIDxIZWFkZXI+IyMjIHVWaXNpb24gUHJvamVjdCwgKEMpIEtlaWwgU29mdHdhcmU8L0hlYWRlcj4KKworICA8VGFyZ2V0cz4KKyAgICA8VGFyZ2V0PgorICAgICAgPFRhcmdldE5hbWU+ZmxvdzwvVGFyZ2V0TmFtZT4KKyAgICAgIDxUb29sc2V0TnVtYmVyPjB4NDwvVG9vbHNldE51bWJlcj4KKyAgICAgIDxUb29sc2V0TmFtZT5BUk0tQURTPC9Ub29sc2V0TmFtZT4KKyAgICAgIDxUYXJnZXRPcHRpb24+CisgICAgICAgIDxUYXJnZXRDb21tb25PcHRpb24+CisgICAgICAgICAgPERldmljZT5TVE0zMkYxMDNSQzwvRGV2aWNlPgorICAgICAgICAgIDxWZW5kb3I+U1RNaWNyb2VsZWN0cm9uaWNzPC9WZW5kb3I+CisgICAgICAgICAgPENwdT5JUkFNKDB4MjAwMDAwMDAtMHgyMDAwQkZGRikgSVJPTSgweDgwMDAwMDAtMHg4MDNGRkZGKSBDTE9DSyg4MDAwMDAwKSBDUFVUWVBFKCJDb3J0ZXgtTTMiKTwvQ3B1PgorICAgICAgICAgIDxGbGFzaFV0aWxTcGVjPjwvRmxhc2hVdGlsU3BlYz4KKyAgICAgICAgICA8U3RhcnR1cEZpbGU+IlNUQVJUVVBcU1RcU1RNMzJGMTB4XHN0YXJ0dXBfc3RtMzJmMTB4X2hkLnMiICgiU1RNMzIgSGlnaCBEZW5zaXR5IExpbmUgU3RhcnR1cCBDb2RlIik8L1N0YXJ0dXBGaWxlPgorICAgICAgICAgIDxGbGFzaERyaXZlckRsbD5VTDJDTTMoLU8xNCAtUzAgLUMwIC1OMDAoIkFSTSBDb3J0ZXgtTTMiKSAtRDAwKDFCQTAwNDc3KSAtTDAwKDQpIC1GTzcgLUZEMjAwMDAwMDAgLUZDODAwIC1GTjEgLUZGMFNUTTMyRjEweF81MTIgLUZTMDgwMDAwMDAgLUZMMDQwMDAwKTwvRmxhc2hEcml2ZXJEbGw+CisgICAgICAgICAgPERldmljZUlkPjQyMzA8L0RldmljZUlkPgorICAgICAgICAgIDxSZWdpc3RlckZpbGU+c3RtMzJmMTB4Lmg8L1JlZ2lzdGVyRmlsZT4KKyAgICAgICAgICA8TWVtb3J5RW52PjwvTWVtb3J5RW52PgorICAgICAgICAgIDxDbXA+PC9DbXA+CisgICAgICAgICAgPEFzbT48L0FzbT4KKyAgICAgICAgICA8TGlua2VyPjwvTGlua2VyPgorICAgICAgICAgIDxPSFN0cmluZz48L09IU3RyaW5nPgorICAgICAgICAgIDxJbmZpbmlvbk9wdGlvbkRsbD48L0luZmluaW9uT3B0aW9uRGxsPgorICAgICAgICAgIDxTTEU2NkNNaXNjPjwvU0xFNjZDTWlzYz4KKyAgICAgICAgICA8U0xFNjZBTWlzYz48L1NMRTY2QU1pc2M+CisgICAgICAgICAgPFNMRTY2TGlua2VyTWlzYz48L1NMRTY2TGlua2VyTWlzYz4KKyAgICAgICAgICA8U0ZERmlsZT48L1NGREZpbGU+CisgICAgICAgICAgPFVzZUVudj4wPC9Vc2VFbnY+CisgICAgICAgICAgPEJpblBhdGg+PC9CaW5QYXRoPgorICAgICAgICAgIDxJbmNsdWRlUGF0aD48L0luY2x1ZGVQYXRoPgorICAgICAgICAgIDxMaWJQYXRoPjwvTGliUGF0aD4KKyAgICAgICAgICA8UmVnaXN0ZXJGaWxlUGF0aD5TVFxTVE0zMkYxMHhcPC9SZWdpc3RlckZpbGVQYXRoPgorICAgICAgICAgIDxEQlJlZ2lzdGVyRmlsZVBhdGg+U1RcU1RNMzJGMTB4XDwvREJSZWdpc3RlckZpbGVQYXRoPgorICAgICAgICAgIDxUYXJnZXRTdGF0dXM+CisgICAgICAgICAgICA8RXJyb3I+MDwvRXJyb3I+CisgICAgICAgICAgICA8RXhpdENvZGVTdG9wPjA8L0V4aXRDb2RlU3RvcD4KKyAgICAgICAgICAgIDxCdXR0b25TdG9wPjA8L0J1dHRvblN0b3A+CisgICAgICAgICAgICA8Tm90R2VuZXJhdGVkPjA8L05vdEdlbmVyYXRlZD4KKyAgICAgICAgICAgIDxJbnZhbGlkRmxhc2g+MTwvSW52YWxpZEZsYXNoPgorICAgICAgICAgIDwvVGFyZ2V0U3RhdHVzPgorICAgICAgICAgIDxPdXRwdXREaXJlY3Rvcnk+Li5cb3V0Rmxvd1w8L091dHB1dERpcmVjdG9yeT4KKyAgICAgICAgICA8T3V0cHV0TmFtZT5HNDAxMzAyX2Zsb3c8L091dHB1dE5hbWU+CisgICAgICAgICAgPENyZWF0ZUV4ZWN1dGFibGU+MTwvQ3JlYXRlRXhlY3V0YWJsZT4KKyAgICAgICAgICA8Q3JlYXRlTGliPjA8L0NyZWF0ZUxpYj4KKyAgICAgICAgICA8Q3JlYXRlSGV4RmlsZT4xPC9DcmVhdGVIZXhGaWxlPgorICAgICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uPjE8L0RlYnVnSW5mb3JtYXRpb24+CisgICAgICAgICAgPEJyb3dzZUluZm9ybWF0aW9uPjE8L0Jyb3dzZUluZm9ybWF0aW9uPgorICAgICAgICAgIDxMaXN0aW5nUGF0aD4uLlxvdXRGbG93XDwvTGlzdGluZ1BhdGg+CisgICAgICAgICAgPEhleEZvcm1hdFNlbGVjdGlvbj4xPC9IZXhGb3JtYXRTZWxlY3Rpb24+CisgICAgICAgICAgPE1lcmdlMzJLPjA8L01lcmdlMzJLPgorICAgICAgICAgIDxDcmVhdGVCYXRjaEZpbGU+MDwvQ3JlYXRlQmF0Y2hGaWxlPgorICAgICAgICAgIDxCZWZvcmVDb21waWxlPgorICAgICAgICAgICAgPFJ1blVzZXJQcm9nMT4wPC9SdW5Vc2VyUHJvZzE+CisgICAgICAgICAgICA8UnVuVXNlclByb2cyPjA8L1J1blVzZXJQcm9nMj4KKyAgICAgICAgICAgIDxVc2VyUHJvZzFOYW1lPjwvVXNlclByb2cxTmFtZT4KKyAgICAgICAgICAgIDxVc2VyUHJvZzJOYW1lPjwvVXNlclByb2cyTmFtZT4KKyAgICAgICAgICAgIDxVc2VyUHJvZzFEb3MxNk1vZGU+MDwvVXNlclByb2cxRG9zMTZNb2RlPgorICAgICAgICAgICAgPFVzZXJQcm9nMkRvczE2TW9kZT4wPC9Vc2VyUHJvZzJEb3MxNk1vZGU+CisgICAgICAgICAgPC9CZWZvcmVDb21waWxlPgorICAgICAgICAgIDxCZWZvcmVNYWtlPgorICAgICAgICAgICAgPFJ1blVzZXJQcm9nMT4xPC9SdW5Vc2VyUHJvZzE+CisgICAgICAgICAgICA8UnVuVXNlclByb2cyPjA8L1J1blVzZXJQcm9nMj4KKyAgICAgICAgICAgIDxVc2VyUHJvZzFOYW1lPmNtZCAvYyBnaXR2ZXIuYmF0PC9Vc2VyUHJvZzFOYW1lPgorICAgICAgICAgICAgPFVzZXJQcm9nMk5hbWU+PC9Vc2VyUHJvZzJOYW1lPgorICAgICAgICAgICAgPFVzZXJQcm9nMURvczE2TW9kZT4wPC9Vc2VyUHJvZzFEb3MxNk1vZGU+CisgICAgICAgICAgICA8VXNlclByb2cyRG9zMTZNb2RlPjA8L1VzZXJQcm9nMkRvczE2TW9kZT4KKyAgICAgICAgICA8L0JlZm9yZU1ha2U+CisgICAgICAgICAgPEFmdGVyTWFrZT4KKyAgICAgICAgICAgIDxSdW5Vc2VyUHJvZzE+MTwvUnVuVXNlclByb2cxPgorICAgICAgICAgICAgPFJ1blVzZXJQcm9nMj4wPC9SdW5Vc2VyUHJvZzI+CisgICAgICAgICAgICA8VXNlclByb2cxTmFtZT5mcm9tZWxmIC0tYmluIC1vIC4uXG91dEZsb3dcQGwuYmluIC4uXG91dEZsb3dcQGwuYXhmPC9Vc2VyUHJvZzFOYW1lPgorICAgICAgICAgICAgPFVzZXJQcm9nMk5hbWU+PC9Vc2VyUHJvZzJOYW1lPgorICAgICAgICAgICAgPFVzZXJQcm9nMURvczE2TW9kZT4wPC9Vc2VyUHJvZzFEb3MxNk1vZGU+CisgICAgICAgICAgICA8VXNlclByb2cyRG9zMTZNb2RlPjA8L1VzZXJQcm9nMkRvczE2TW9kZT4KKyAgICAgICAgICA8L0FmdGVyTWFrZT4KKyAgICAgICAgICA8U2VsZWN0ZWRGb3JCYXRjaEJ1aWxkPjA8L1NlbGVjdGVkRm9yQmF0Y2hCdWlsZD4KKyAgICAgICAgICA8U1ZDU0lkU3RyaW5nPjwvU1ZDU0lkU3RyaW5nPgorICAgICAgICA8L1RhcmdldENvbW1vbk9wdGlvbj4KKyAgICAgICAgPENvbW1vblByb3BlcnR5PgorICAgICAgICAgIDxVc2VDUFBDb21waWxlcj4wPC9Vc2VDUFBDb21waWxlcj4KKyAgICAgICAgICA8UlZDVENvZGVDb25zdD4wPC9SVkNUQ29kZUNvbnN0PgorICAgICAgICAgIDxSVkNUWkk+MDwvUlZDVFpJPgorICAgICAgICAgIDxSVkNUT3RoZXJEYXRhPjA8L1JWQ1RPdGhlckRhdGE+CisgICAgICAgICAgPE1vZHVsZVNlbGVjdGlvbj4wPC9Nb2R1bGVTZWxlY3Rpb24+CisgICAgICAgICAgPEluY2x1ZGVJbkJ1aWxkPjE8L0luY2x1ZGVJbkJ1aWxkPgorICAgICAgICAgIDxBbHdheXNCdWlsZD4wPC9BbHdheXNCdWlsZD4KKyAgICAgICAgICA8R2VuZXJhdGVBc3NlbWJseUZpbGU+MDwvR2VuZXJhdGVBc3NlbWJseUZpbGU+CisgICAgICAgICAgPEFzc2VtYmxlQXNzZW1ibHlGaWxlPjA8L0Fzc2VtYmxlQXNzZW1ibHlGaWxlPgorICAgICAgICAgIDxQdWJsaWNzT25seT4wPC9QdWJsaWNzT25seT4KKyAgICAgICAgICA8U3RvcE9uRXhpdENvZGU+MzwvU3RvcE9uRXhpdENvZGU+CisgICAgICAgICAgPEN1c3RvbUFyZ3VtZW50PjwvQ3VzdG9tQXJndW1lbnQ+CisgICAgICAgICAgPEluY2x1ZGVMaWJyYXJ5TW9kdWxlcz48L0luY2x1ZGVMaWJyYXJ5TW9kdWxlcz4KKyAgICAgICAgPC9Db21tb25Qcm9wZXJ0eT4KKyAgICAgICAgPERsbE9wdGlvbj4KKyAgICAgICAgICA8U2ltRGxsTmFtZT5TQVJNQ00zLkRMTDwvU2ltRGxsTmFtZT4KKyAgICAgICAgICA8U2ltRGxsQXJndW1lbnRzPi1SRU1BUDwvU2ltRGxsQXJndW1lbnRzPgorICAgICAgICAgIDxTaW1EbGdEbGw+RENNLkRMTDwvU2ltRGxnRGxsPgorICAgICAgICAgIDxTaW1EbGdEbGxBcmd1bWVudHM+LXBDTTM8L1NpbURsZ0RsbEFyZ3VtZW50cz4KKyAgICAgICAgICA8VGFyZ2V0RGxsTmFtZT5TQVJNQ00zLkRMTDwvVGFyZ2V0RGxsTmFtZT4KKyAgICAgICAgICA8VGFyZ2V0RGxsQXJndW1lbnRzPjwvVGFyZ2V0RGxsQXJndW1lbnRzPgorICAgICAgICAgIDxUYXJnZXREbGdEbGw+VENNLkRMTDwvVGFyZ2V0RGxnRGxsPgorICAgICAgICAgIDxUYXJnZXREbGdEbGxBcmd1bWVudHM+LXBDTTM8L1RhcmdldERsZ0RsbEFyZ3VtZW50cz4KKyAgICAgICAgPC9EbGxPcHRpb24+CisgICAgICAgIDxEZWJ1Z09wdGlvbj4KKyAgICAgICAgICA8T1BUSFg+CisgICAgICAgICAgICA8SGV4U2VsZWN0aW9uPjE8L0hleFNlbGVjdGlvbj4KKyAgICAgICAgICAgIDxIZXhSYW5nZUxvd0FkZHJlc3M+MDwvSGV4UmFuZ2VMb3dBZGRyZXNzPgorICAgICAgICAgICAgPEhleFJhbmdlSGlnaEFkZHJlc3M+MDwvSGV4UmFuZ2VIaWdoQWRkcmVzcz4KKyAgICAgICAgICAgIDxIZXhPZmZzZXQ+MDwvSGV4T2Zmc2V0PgorICAgICAgICAgICAgPE9oMTY2UmVjTGVuPjE2PC9PaDE2NlJlY0xlbj4KKyAgICAgICAgICA8L09QVEhYPgorICAgICAgICAgIDxTaW11bGF0b3I+CisgICAgICAgICAgICA8VXNlU2ltdWxhdG9yPjA8L1VzZVNpbXVsYXRvcj4KKyAgICAgICAgICAgIDxMb2FkQXBwbGljYXRpb25BdFN0YXJ0dXA+MTwvTG9hZEFwcGxpY2F0aW9uQXRTdGFydHVwPgorICAgICAgICAgICAgPFJ1blRvTWFpbj4xPC9SdW5Ub01haW4+CisgICAgICAgICAgICA8UmVzdG9yZUJyZWFrcG9pbnRzPjE8L1Jlc3RvcmVCcmVha3BvaW50cz4KKyAgICAgICAgICAgIDxSZXN0b3JlV2F0Y2hwb2ludHM+MTwvUmVzdG9yZVdhdGNocG9pbnRzPgorICAgICAgICAgICAgPFJlc3RvcmVNZW1vcnlEaXNwbGF5PjE8L1Jlc3RvcmVNZW1vcnlEaXNwbGF5PgorICAgICAgICAgICAgPFJlc3RvcmVGdW5jdGlvbnM+MTwvUmVzdG9yZUZ1bmN0aW9ucz4KKyAgICAgICAgICAgIDxSZXN0b3JlVG9vbGJveD4xPC9SZXN0b3JlVG9vbGJveD4KKyAgICAgICAgICAgIDxMaW1pdFNwZWVkVG9SZWFsVGltZT4wPC9MaW1pdFNwZWVkVG9SZWFsVGltZT4KKyAgICAgICAgICA8L1NpbXVsYXRvcj4KKyAgICAgICAgICA8VGFyZ2V0PgorICAgICAgICAgICAgPFVzZVRhcmdldD4xPC9Vc2VUYXJnZXQ+CisgICAgICAgICAgICA8TG9hZEFwcGxpY2F0aW9uQXRTdGFydHVwPjE8L0xvYWRBcHBsaWNhdGlvbkF0U3RhcnR1cD4KKyAgICAgICAgICAgIDxSdW5Ub01haW4+MTwvUnVuVG9NYWluPgorICAgICAgICAgICAgPFJlc3RvcmVCcmVha3BvaW50cz4xPC9SZXN0b3JlQnJlYWtwb2ludHM+CisgICAgICAgICAgICA8UmVzdG9yZVdhdGNocG9pbnRzPjE8L1Jlc3RvcmVXYXRjaHBvaW50cz4KKyAgICAgICAgICAgIDxSZXN0b3JlTWVtb3J5RGlzcGxheT4xPC9SZXN0b3JlTWVtb3J5RGlzcGxheT4KKyAgICAgICAgICAgIDxSZXN0b3JlRnVuY3Rpb25zPjA8L1Jlc3RvcmVGdW5jdGlvbnM+CisgICAgICAgICAgICA8UmVzdG9yZVRvb2xib3g+MTwvUmVzdG9yZVRvb2xib3g+CisgICAgICAgICAgPC9UYXJnZXQ+CisgICAgICAgICAgPFJ1bkRlYnVnQWZ0ZXJCdWlsZD4wPC9SdW5EZWJ1Z0FmdGVyQnVpbGQ+CisgICAgICAgICAgPFRhcmdldFNlbGVjdGlvbj43PC9UYXJnZXRTZWxlY3Rpb24+CisgICAgICAgICAgPFNpbURsbHM+CisgICAgICAgICAgICA8Q3B1RGxsPjwvQ3B1RGxsPgorICAgICAgICAgICAgPENwdURsbEFyZ3VtZW50cz48L0NwdURsbEFyZ3VtZW50cz4KKyAgICAgICAgICAgIDxQZXJpcGhlcmFsRGxsPjwvUGVyaXBoZXJhbERsbD4KKyAgICAgICAgICAgIDxQZXJpcGhlcmFsRGxsQXJndW1lbnRzPjwvUGVyaXBoZXJhbERsbEFyZ3VtZW50cz4KKyAgICAgICAgICAgIDxJbml0aWFsaXphdGlvbkZpbGU+LlxtZXJnZS5pbmk8L0luaXRpYWxpemF0aW9uRmlsZT4KKyAgICAgICAgICA8L1NpbURsbHM+CisgICAgICAgICAgPFRhcmdldERsbHM+CisgICAgICAgICAgICA8Q3B1RGxsPjwvQ3B1RGxsPgorICAgICAgICAgICAgPENwdURsbEFyZ3VtZW50cz48L0NwdURsbEFyZ3VtZW50cz4KKyAgICAgICAgICAgIDxQZXJpcGhlcmFsRGxsPjwvUGVyaXBoZXJhbERsbD4KKyAgICAgICAgICAgIDxQZXJpcGhlcmFsRGxsQXJndW1lbnRzPjwvUGVyaXBoZXJhbERsbEFyZ3VtZW50cz4KKyAgICAgICAgICAgIDxJbml0aWFsaXphdGlvbkZpbGU+PC9Jbml0aWFsaXphdGlvbkZpbGU+CisgICAgICAgICAgICA8RHJpdmVyPlNlZ2dlclxKTDJDTTMuZGxsPC9Ecml2ZXI+CisgICAgICAgICAgPC9UYXJnZXREbGxzPgorICAgICAgICA8L0RlYnVnT3B0aW9uPgorICAgICAgICA8VXRpbGl0aWVzPgorICAgICAgICAgIDxGbGFzaDE+CisgICAgICAgICAgICA8VXNlVGFyZ2V0RGxsPjE8L1VzZVRhcmdldERsbD4KKyAgICAgICAgICAgIDxVc2VFeHRlcm5hbFRvb2w+MDwvVXNlRXh0ZXJuYWxUb29sPgorICAgICAgICAgICAgPFJ1bkluZGVwZW5kZW50PjA8L1J1bkluZGVwZW5kZW50PgorICAgICAgICAgICAgPFVwZGF0ZUZsYXNoQmVmb3JlRGVidWdnaW5nPjE8L1VwZGF0ZUZsYXNoQmVmb3JlRGVidWdnaW5nPgorICAgICAgICAgICAgPENhcGFiaWxpdHk+MTwvQ2FwYWJpbGl0eT4KKyAgICAgICAgICAgIDxEcml2ZXJTZWxlY3Rpb24+NDA5OTwvRHJpdmVyU2VsZWN0aW9uPgorICAgICAgICAgIDwvRmxhc2gxPgorICAgICAgICAgIDxGbGFzaDI+U2VnZ2VyXEpMMkNNMy5kbGw8L0ZsYXNoMj4KKyAgICAgICAgICA8Rmxhc2gzPiIiICgpPC9GbGFzaDM+CisgICAgICAgICAgPEZsYXNoND48L0ZsYXNoND4KKyAgICAgICAgPC9VdGlsaXRpZXM+CisgICAgICAgIDxUYXJnZXRBcm1BZHM+CisgICAgICAgICAgPEFybUFkc01pc2M+CisgICAgICAgICAgICA8R2VuZXJhdGVMaXN0aW5ncz4wPC9HZW5lcmF0ZUxpc3RpbmdzPgorICAgICAgICAgICAgPGFzSGxsPjE8L2FzSGxsPgorICAgICAgICAgICAgPGFzQXNtPjE8L2FzQXNtPgorICAgICAgICAgICAgPGFzTWFjWD4xPC9hc01hY1g+CisgICAgICAgICAgICA8YXNTeW1zPjE8L2FzU3ltcz4KKyAgICAgICAgICAgIDxhc0ZhbHM+MTwvYXNGYWxzPgorICAgICAgICAgICAgPGFzRGJnRD4xPC9hc0RiZ0Q+CisgICAgICAgICAgICA8YXNGb3JtPjE8L2FzRm9ybT4KKyAgICAgICAgICAgIDxsZExzdD4wPC9sZExzdD4KKyAgICAgICAgICAgIDxsZG1tPjE8L2xkbW0+CisgICAgICAgICAgICA8bGRYcmVmPjE8L2xkWHJlZj4KKyAgICAgICAgICAgIDxCaWdFbmQ+MDwvQmlnRW5kPgorICAgICAgICAgICAgPEFkc0FMc3Q+MTwvQWRzQUxzdD4KKyAgICAgICAgICAgIDxBZHNBQ3JmPjE8L0Fkc0FDcmY+CisgICAgICAgICAgICA8QWRzQU5vcD4wPC9BZHNBTm9wPgorICAgICAgICAgICAgPEFkc0FOb3Q+MDwvQWRzQU5vdD4KKyAgICAgICAgICAgIDxBZHNMTHN0PjE8L0Fkc0xMc3Q+CisgICAgICAgICAgICA8QWRzTG1hcD4xPC9BZHNMbWFwPgorICAgICAgICAgICAgPEFkc0xjZ3I+MTwvQWRzTGNncj4KKyAgICAgICAgICAgIDxBZHNMc3ltPjE8L0Fkc0xzeW0+CisgICAgICAgICAgICA8QWRzTHN6aT4xPC9BZHNMc3ppPgorICAgICAgICAgICAgPEFkc0x0b2k+MTwvQWRzTHRvaT4KKyAgICAgICAgICAgIDxBZHNMc3VuPjE8L0Fkc0xzdW4+CisgICAgICAgICAgICA8QWRzTHZlbj4xPC9BZHNMdmVuPgorICAgICAgICAgICAgPEFkc0xzeGY+MTwvQWRzTHN4Zj4KKyAgICAgICAgICAgIDxSdmN0Q2xzdD4wPC9SdmN0Q2xzdD4KKyAgICAgICAgICAgIDxHZW5QUGxzdD4wPC9HZW5QUGxzdD4KKyAgICAgICAgICAgIDxBZHNDcHVUeXBlPiJDb3J0ZXgtTTMiPC9BZHNDcHVUeXBlPgorICAgICAgICAgICAgPFJ2Y3REZXZpY2VOYW1lPjwvUnZjdERldmljZU5hbWU+CisgICAgICAgICAgICA8bU9TPjA8L21PUz4KKyAgICAgICAgICAgIDx1b2NSb20+MDwvdW9jUm9tPgorICAgICAgICAgICAgPHVvY1JhbT4wPC91b2NSYW0+CisgICAgICAgICAgICA8aGFkSVJPTT4xPC9oYWRJUk9NPgorICAgICAgICAgICAgPGhhZElSQU0+MTwvaGFkSVJBTT4KKyAgICAgICAgICAgIDxoYWRYUkFNPjA8L2hhZFhSQU0+CisgICAgICAgICAgICA8dW9jWFJhbT4wPC91b2NYUmFtPgorICAgICAgICAgICAgPFJ2ZHNWUD4wPC9SdmRzVlA+CisgICAgICAgICAgICA8aGFkSVJBTTI+MDwvaGFkSVJBTTI+CisgICAgICAgICAgICA8aGFkSVJPTTI+MDwvaGFkSVJPTTI+CisgICAgICAgICAgICA8U3R1cFNlbD44PC9TdHVwU2VsPgorICAgICAgICAgICAgPHVzZVVsaWI+MDwvdXNlVWxpYj4KKyAgICAgICAgICAgIDxFbmRTZWw+MDwvRW5kU2VsPgorICAgICAgICAgICAgPHVMdGNnPjA8L3VMdGNnPgorICAgICAgICAgICAgPFJvU2VsRD4zPC9Sb1NlbEQ+CisgICAgICAgICAgICA8UndTZWxEPjM8L1J3U2VsRD4KKyAgICAgICAgICAgIDxDb2RlU2VsPjA8L0NvZGVTZWw+CisgICAgICAgICAgICA8T3B0RmVlZD4wPC9PcHRGZWVkPgorICAgICAgICAgICAgPE5vWmkxPjA8L05vWmkxPgorICAgICAgICAgICAgPE5vWmkyPjA8L05vWmkyPgorICAgICAgICAgICAgPE5vWmkzPjA8L05vWmkzPgorICAgICAgICAgICAgPE5vWmk0PjA8L05vWmk0PgorICAgICAgICAgICAgPE5vWmk1PjA8L05vWmk1PgorICAgICAgICAgICAgPFJvMUNoaz4wPC9SbzFDaGs+CisgICAgICAgICAgICA8Um8yQ2hrPjA8L1JvMkNoaz4KKyAgICAgICAgICAgIDxSbzNDaGs+MDwvUm8zQ2hrPgorICAgICAgICAgICAgPElyMUNoaz4xPC9JcjFDaGs+CisgICAgICAgICAgICA8SXIyQ2hrPjA8L0lyMkNoaz4KKyAgICAgICAgICAgIDxSYTFDaGs+MDwvUmExQ2hrPgorICAgICAgICAgICAgPFJhMkNoaz4wPC9SYTJDaGs+CisgICAgICAgICAgICA8UmEzQ2hrPjA8L1JhM0Noaz4KKyAgICAgICAgICAgIDxJbTFDaGs+MTwvSW0xQ2hrPgorICAgICAgICAgICAgPEltMkNoaz4wPC9JbTJDaGs+CisgICAgICAgICAgICA8T25DaGlwTWVtb3JpZXM+CisgICAgICAgICAgICAgIDxPY20xPgorICAgICAgICAgICAgICAgIDxUeXBlPjA8L1R5cGU+CisgICAgICAgICAgICAgICAgPFN0YXJ0QWRkcmVzcz4weDA8L1N0YXJ0QWRkcmVzcz4KKyAgICAgICAgICAgICAgICA8U2l6ZT4weDA8L1NpemU+CisgICAgICAgICAgICAgIDwvT2NtMT4KKyAgICAgICAgICAgICAgPE9jbTI+CisgICAgICAgICAgICAgICAgPFR5cGU+MDwvVHlwZT4KKyAgICAgICAgICAgICAgICA8U3RhcnRBZGRyZXNzPjB4MDwvU3RhcnRBZGRyZXNzPgorICAgICAgICAgICAgICAgIDxTaXplPjB4MDwvU2l6ZT4KKyAgICAgICAgICAgICAgPC9PY20yPgorICAgICAgICAgICAgICA8T2NtMz4KKyAgICAgICAgICAgICAgICA8VHlwZT4wPC9UeXBlPgorICAgICAgICAgICAgICAgIDxTdGFydEFkZHJlc3M+MHgwPC9TdGFydEFkZHJlc3M+CisgICAgICAgICAgICAgICAgPFNpemU+MHgwPC9TaXplPgorICAgICAgICAgICAgICA8L09jbTM+CisgICAgICAgICAgICAgIDxPY200PgorICAgICAgICAgICAgICAgIDxUeXBlPjA8L1R5cGU+CisgICAgICAgICAgICAgICAgPFN0YXJ0QWRkcmVzcz4weDA8L1N0YXJ0QWRkcmVzcz4KKyAgICAgICAgICAgICAgICA8U2l6ZT4weDA8L1NpemU+CisgICAgICAgICAgICAgIDwvT2NtND4KKyAgICAgICAgICAgICAgPE9jbTU+CisgICAgICAgICAgICAgICAgPFR5cGU+MDwvVHlwZT4KKyAgICAgICAgICAgICAgICA8U3RhcnRBZGRyZXNzPjB4MDwvU3RhcnRBZGRyZXNzPgorICAgICAgICAgICAgICAgIDxTaXplPjB4MDwvU2l6ZT4KKyAgICAgICAgICAgICAgPC9PY201PgorICAgICAgICAgICAgICA8T2NtNj4KKyAgICAgICAgICAgICAgICA8VHlwZT4wPC9UeXBlPgorICAgICAgICAgICAgICAgIDxTdGFydEFkZHJlc3M+MHgwPC9TdGFydEFkZHJlc3M+CisgICAgICAgICAgICAgICAgPFNpemU+MHgwPC9TaXplPgorICAgICAgICAgICAgICA8L09jbTY+CisgICAgICAgICAgICAgIDxJUkFNPgorICAgICAgICAgICAgICAgIDxUeXBlPjA8L1R5cGU+CisgICAgICAgICAgICAgICAgPFN0YXJ0QWRkcmVzcz4weDIwMDAwMDAwPC9TdGFydEFkZHJlc3M+CisgICAgICAgICAgICAgICAgPFNpemU+MHhjMDAwPC9TaXplPgorICAgICAgICAgICAgICA8L0lSQU0+CisgICAgICAgICAgICAgIDxJUk9NPgorICAgICAgICAgICAgICAgIDxUeXBlPjE8L1R5cGU+CisgICAgICAgICAgICAgICAgPFN0YXJ0QWRkcmVzcz4weDgwMDAwMDA8L1N0YXJ0QWRkcmVzcz4KKyAgICAgICAgICAgICAgICA8U2l6ZT4weDQwMDAwPC9TaXplPgorICAgICAgICAgICAgICA8L0lST00+CisgICAgICAgICAgICAgIDxYUkFNPgorICAgICAgICAgICAgICAgIDxUeXBlPjA8L1R5cGU+CisgICAgICAgICAgICAgICAgPFN0YXJ0QWRkcmVzcz4weDA8L1N0YXJ0QWRkcmVzcz4KKyAgICAgICAgICAgICAgICA8U2l6ZT4weDA8L1NpemU+CisgICAgICAgICAgICAgIDwvWFJBTT4KKyAgICAgICAgICAgICAgPE9DUl9SVkNUMT4KKyAgICAgICAgICAgICAgICA8VHlwZT4xPC9UeXBlPgorICAgICAgICAgICAgICAgIDxTdGFydEFkZHJlc3M+MHgwPC9TdGFydEFkZHJlc3M+CisgICAgICAgICAgICAgICAgPFNpemU+MHgwPC9TaXplPgorICAgICAgICAgICAgICA8L09DUl9SVkNUMT4KKyAgICAgICAgICAgICAgPE9DUl9SVkNUMj4KKyAgICAgICAgICAgICAgICA8VHlwZT4xPC9UeXBlPgorICAgICAgICAgICAgICAgIDxTdGFydEFkZHJlc3M+MHgwPC9TdGFydEFkZHJlc3M+CisgICAgICAgICAgICAgICAgPFNpemU+MHgwPC9TaXplPgorICAgICAgICAgICAgICA8L09DUl9SVkNUMj4KKyAgICAgICAgICAgICAgPE9DUl9SVkNUMz4KKyAgICAgICAgICAgICAgICA8VHlwZT4xPC9UeXBlPgorICAgICAgICAgICAgICAgIDxTdGFydEFkZHJlc3M+MHgwPC9TdGFydEFkZHJlc3M+CisgICAgICAgICAgICAgICAgPFNpemU+MHgwPC9TaXplPgorICAgICAgICAgICAgICA8L09DUl9SVkNUMz4KKyAgICAgICAgICAgICAgPE9DUl9SVkNUND4KKyAgICAgICAgICAgICAgICA8VHlwZT4xPC9UeXBlPgorICAgICAgICAgICAgICAgIDxTdGFydEFkZHJlc3M+MHg4MDA0MDAwPC9TdGFydEFkZHJlc3M+CisgICAgICAgICAgICAgICAgPFNpemU+MHgzYzAwMDwvU2l6ZT4KKyAgICAgICAgICAgICAgPC9PQ1JfUlZDVDQ+CisgICAgICAgICAgICAgIDxPQ1JfUlZDVDU+CisgICAgICAgICAgICAgICAgPFR5cGU+MTwvVHlwZT4KKyAgICAgICAgICAgICAgICA8U3RhcnRBZGRyZXNzPjB4MDwvU3RhcnRBZGRyZXNzPgorICAgICAgICAgICAgICAgIDxTaXplPjB4MDwvU2l6ZT4KKyAgICAgICAgICAgICAgPC9PQ1JfUlZDVDU+CisgICAgICAgICAgICAgIDxPQ1JfUlZDVDY+CisgICAgICAgICAgICAgICAgPFR5cGU+MDwvVHlwZT4KKyAgICAgICAgICAgICAgICA8U3RhcnRBZGRyZXNzPjB4MDwvU3RhcnRBZGRyZXNzPgorICAgICAgICAgICAgICAgIDxTaXplPjB4MDwvU2l6ZT4KKyAgICAgICAgICAgICAgPC9PQ1JfUlZDVDY+CisgICAgICAgICAgICAgIDxPQ1JfUlZDVDc+CisgICAgICAgICAgICAgICAgPFR5cGU+MDwvVHlwZT4KKyAgICAgICAgICAgICAgICA8U3RhcnRBZGRyZXNzPjB4MDwvU3RhcnRBZGRyZXNzPgorICAgICAgICAgICAgICAgIDxTaXplPjB4MDwvU2l6ZT4KKyAgICAgICAgICAgICAgPC9PQ1JfUlZDVDc+CisgICAgICAgICAgICAgIDxPQ1JfUlZDVDg+CisgICAgICAgICAgICAgICAgPFR5cGU+MDwvVHlwZT4KKyAgICAgICAgICAgICAgICA8U3RhcnRBZGRyZXNzPjB4MDwvU3RhcnRBZGRyZXNzPgorICAgICAgICAgICAgICAgIDxTaXplPjB4MDwvU2l6ZT4KKyAgICAgICAgICAgICAgPC9PQ1JfUlZDVDg+CisgICAgICAgICAgICAgIDxPQ1JfUlZDVDk+CisgICAgICAgICAgICAgICAgPFR5cGU+MDwvVHlwZT4KKyAgICAgICAgICAgICAgICA8U3RhcnRBZGRyZXNzPjB4MjAwMDAwMDA8L1N0YXJ0QWRkcmVzcz4KKyAgICAgICAgICAgICAgICA8U2l6ZT4weGMwMDA8L1NpemU+CisgICAgICAgICAgICAgIDwvT0NSX1JWQ1Q5PgorICAgICAgICAgICAgICA8T0NSX1JWQ1QxMD4KKyAgICAgICAgICAgICAgICA8VHlwZT4wPC9UeXBlPgorICAgICAgICAgICAgICAgIDxTdGFydEFkZHJlc3M+MHgwPC9TdGFydEFkZHJlc3M+CisgICAgICAgICAgICAgICAgPFNpemU+MHgwPC9TaXplPgorICAgICAgICAgICAgICA8L09DUl9SVkNUMTA+CisgICAgICAgICAgICA8L09uQ2hpcE1lbW9yaWVzPgorICAgICAgICAgICAgPFJ2Y3RTdGFydFZlY3Rvcj48L1J2Y3RTdGFydFZlY3Rvcj4KKyAgICAgICAgICA8L0FybUFkc01pc2M+CisgICAgICAgICAgPENhZHM+CisgICAgICAgICAgICA8aW50ZXJ3PjE8L2ludGVydz4KKyAgICAgICAgICAgIDxPcHRpbT4xPC9PcHRpbT4KKyAgICAgICAgICAgIDxvVGltZT4wPC9vVGltZT4KKyAgICAgICAgICAgIDxTcGxpdExTPjA8L1NwbGl0TFM+CisgICAgICAgICAgICA8T25lRWxmUz4xPC9PbmVFbGZTPgorICAgICAgICAgICAgPFN0cmljdD4wPC9TdHJpY3Q+CisgICAgICAgICAgICA8RW51bUludD4wPC9FbnVtSW50PgorICAgICAgICAgICAgPFBsYWluQ2g+MDwvUGxhaW5DaD4KKyAgICAgICAgICAgIDxSb3BpPjA8L1JvcGk+CisgICAgICAgICAgICA8UndwaT4wPC9Sd3BpPgorICAgICAgICAgICAgPHdMZXZlbD4wPC93TGV2ZWw+CisgICAgICAgICAgICA8dVRodW1iPjA8L3VUaHVtYj4KKyAgICAgICAgICAgIDxWYXJpb3VzQ29udHJvbHM+CisgICAgICAgICAgICAgIDxNaXNjQ29udHJvbHM+LS1jOTkgLS1kaWFnX3N1cHByZXNzPTE4OCAtREZMT1dTRU5TT1I8L01pc2NDb250cm9scz4KKyAgICAgICAgICAgICAgPERlZmluZT5TVE0zMkYxMFhfSEQsVVNFX1NURFBFUklQSF9EUklWRVIsSFdfVjAyPC9EZWZpbmU+CisgICAgICAgICAgICAgIDxVbmRlZmluZT48L1VuZGVmaW5lPgorICAgICAgICAgICAgICA8SW5jbHVkZVBhdGg+Li5cc3JjOy4uXGxpYjsuLlwuLlxpY2NfYXBkdV9saWI7Li5cLi5cc3RfZndfbGliXGluYzsuLlwuLlxzdF9md19saWI7Li5cLi5cbGNkOy5cOy4uXC4uXHN5c19odzsuLlwuLlx6azsuLlwuLlxhcHBfZHJ2Oy4uXC4uXGxpYnFyOy4uXC4uXG1zZ3BhY2s7PC9JbmNsdWRlUGF0aD4KKyAgICAgICAgICAgIDwvVmFyaW91c0NvbnRyb2xzPgorICAgICAgICAgIDwvQ2Fkcz4KKyAgICAgICAgICA8QWFkcz4KKyAgICAgICAgICAgIDxpbnRlcnc+MTwvaW50ZXJ3PgorICAgICAgICAgICAgPFJvcGk+MDwvUm9waT4KKyAgICAgICAgICAgIDxSd3BpPjA8L1J3cGk+CisgICAgICAgICAgICA8dGh1bWI+MDwvdGh1bWI+CisgICAgICAgICAgICA8U3BsaXRMUz4wPC9TcGxpdExTPgorICAgICAgICAgICAgPFN3U3RrQ2hrPjA8L1N3U3RrQ2hrPgorICAgICAgICAgICAgPE5vV2Fybj4wPC9Ob1dhcm4+CisgICAgICAgICAgICA8VmFyaW91c0NvbnRyb2xzPgorICAgICAgICAgICAgICA8TWlzY0NvbnRyb2xzPjwvTWlzY0NvbnRyb2xzPgorICAgICAgICAgICAgICA8RGVmaW5lPjwvRGVmaW5lPgorICAgICAgICAgICAgICA8VW5kZWZpbmU+PC9VbmRlZmluZT4KKyAgICAgICAgICAgICAgPEluY2x1ZGVQYXRoPjwvSW5jbHVkZVBhdGg+CisgICAgICAgICAgICA8L1ZhcmlvdXNDb250cm9scz4KKyAgICAgICAgICA8L0FhZHM+CisgICAgICAgICAgPExEYWRzPgorICAgICAgICAgICAgPHVtZlRhcmc+MTwvdW1mVGFyZz4KKyAgICAgICAgICAgIDxSb3BpPjA8L1JvcGk+CisgICAgICAgICAgICA8UndwaT4wPC9Sd3BpPgorICAgICAgICAgICAgPG5vU3RMaWI+MDwvbm9TdExpYj4KKyAgICAgICAgICAgIDxSZXBGYWlsPjE8L1JlcEZhaWw+CisgICAgICAgICAgICA8dXNlRmlsZT4wPC91c2VGaWxlPgorICAgICAgICAgICAgPFRleHRBZGRyZXNzUmFuZ2U+MHgwODAwMDAwMDwvVGV4dEFkZHJlc3NSYW5nZT4KKyAgICAgICAgICAgIDxEYXRhQWRkcmVzc1JhbmdlPjB4MjAwMDAwMDA8L0RhdGFBZGRyZXNzUmFuZ2U+CisgICAgICAgICAgICA8U2NhdHRlckZpbGU+PC9TY2F0dGVyRmlsZT4KKyAgICAgICAgICAgIDxJbmNsdWRlTGlicz48L0luY2x1ZGVMaWJzPgorICAgICAgICAgICAgPEluY2x1ZGVMaWJzUGF0aD48L0luY2x1ZGVMaWJzUGF0aD4KKyAgICAgICAgICAgIDxNaXNjPjwvTWlzYz4KKyAgICAgICAgICAgIDxMaW5rZXJJbnB1dEZpbGU+PC9MaW5rZXJJbnB1dEZpbGU+CisgICAgICAgICAgICA8RGlzYWJsZWRXYXJuaW5ncz48L0Rpc2FibGVkV2FybmluZ3M+CisgICAgICAgICAgPC9MRGFkcz4KKyAgICAgICAgPC9UYXJnZXRBcm1BZHM+CisgICAgICA8L1RhcmdldE9wdGlvbj4KKyAgICAgIDxHcm91cHM+CisgICAgICAgIDxHcm91cD4KKyAgICAgICAgICA8R3JvdXBOYW1lPmxjZDwvR3JvdXBOYW1lPgorICAgICAgICAgIDxGaWxlcz4KKyAgICAgICAgICAgIDxGaWxlPgorICAgICAgICAgICAgICA8RmlsZU5hbWU+Z2xjZC5jPC9GaWxlTmFtZT4KKyAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5cLi5cbGNkXGdsY2QuYzwvRmlsZVBhdGg+CisgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgICA8RmlsZT4KKyAgICAgICAgICAgICAgPEZpbGVOYW1lPmdyYXBoaWNzLmM8L0ZpbGVOYW1lPgorICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlwuLlxsY2RcZ3JhcGhpY3MuYzwvRmlsZVBhdGg+CisgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgICA8RmlsZT4KKyAgICAgICAgICAgICAgPEZpbGVOYW1lPmdyYXBocy5jPC9GaWxlTmFtZT4KKyAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5cLi5cbGNkXGdyYXBocy5jPC9GaWxlUGF0aD4KKyAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICAgIDxGaWxlPgorICAgICAgICAgICAgICA8RmlsZU5hbWU+dGV4dC5jPC9GaWxlTmFtZT4KKyAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5cLi5cbGNkXHRleHQuYzwvRmlsZVBhdGg+CisgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgICA8RmlsZT4KKyAgICAgICAgICAgICAgPEZpbGVOYW1lPnRleHRfdGlueS5jPC9GaWxlTmFtZT4KKyAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5cLi5cbGNkXHRleHRfdGlueS5jPC9GaWxlUGF0aD4KKyAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICAgIDxGaWxlPgorICAgICAgICAgICAgICA8RmlsZU5hbWU+dW5pdF90ZXN0cy5jPC9GaWxlTmFtZT4KKyAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5cLi5cbGNkXHVuaXRfdGVzdHMuYzwvRmlsZVBhdGg+CisgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgICA8RmlsZT4KKyAgICAgICAgICAgICAgPEZpbGVOYW1lPmdsY2Rfc3BpLmM8L0ZpbGVOYW1lPgorICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlwuLlxsY2RcZ2xjZF9zcGkuYzwvRmlsZVBhdGg+CisgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgICA8RmlsZT4KKyAgICAgICAgICAgICAgPEZpbGVOYW1lPlNUNzU2NVIuYzwvRmlsZU5hbWU+CisgICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXC4uXGxjZFxTVDc1NjVSLmM8L0ZpbGVQYXRoPgorICAgICAgICAgICAgPC9GaWxlPgorICAgICAgICAgICAgPEZpbGU+CisgICAgICAgICAgICAgIDxGaWxlTmFtZT5zcGkuYzwvRmlsZU5hbWU+CisgICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXC4uXGxjZFxzcGkuYzwvRmlsZVBhdGg+CisgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgPC9GaWxlcz4KKyAgICAgICAgPC9Hcm91cD4KKyAgICAgICAgPEdyb3VwPgorICAgICAgICAgIDxHcm91cE5hbWU+aWNjX2FwZHVfbGliPC9Hcm91cE5hbWU+CisgICAgICAgICAgPEZpbGVzPgorICAgICAgICAgICAgPEZpbGU+CisgICAgICAgICAgICAgIDxGaWxlTmFtZT5kZXMuYzwvRmlsZU5hbWU+CisgICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXC4uXGljY19hcGR1X2xpYlxkZXMuYzwvRmlsZVBhdGg+CisgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgPC9GaWxlcz4KKyAgICAgICAgPC9Hcm91cD4KKyAgICAgICAgPEdyb3VwPgorICAgICAgICAgIDxHcm91cE5hbWU+c3c8L0dyb3VwTmFtZT4KKyAgICAgICAgICA8RmlsZXM+CisgICAgICAgICAgICA8RmlsZT4KKyAgICAgICAgICAgICAgPEZpbGVOYW1lPm5lY19hcGR1LmM8L0ZpbGVOYW1lPgorICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlxzcmNcbmVjX2FwZHUuYzwvRmlsZVBhdGg+CisgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgICA8RmlsZT4KKyAgICAgICAgICAgICAgPEZpbGVOYW1lPm5lY19oYXJkd2FyZS5jPC9GaWxlTmFtZT4KKyAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5cc3JjXG5lY19oYXJkd2FyZS5jPC9GaWxlUGF0aD4KKyAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICAgIDxGaWxlPgorICAgICAgICAgICAgICA8RmlsZU5hbWU+c3RtMzJmMTB4X2l0LmM8L0ZpbGVOYW1lPgorICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlxzcmNcc3RtMzJmMTB4X2l0LmM8L0ZpbGVQYXRoPgorICAgICAgICAgICAgPC9GaWxlPgorICAgICAgICAgICAgPEZpbGU+CisgICAgICAgICAgICAgIDxGaWxlTmFtZT5tYWluLmM8L0ZpbGVOYW1lPgorICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlwuLlxzdXB3aXNkb21cbWFpbi5jPC9GaWxlUGF0aD4KKyAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICAgIDxGaWxlPgorICAgICAgICAgICAgICA8RmlsZU5hbWU+c3BfY2FyZC5jPC9GaWxlTmFtZT4KKyAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5cLi5cc3Vwd2lzZG9tXHNwX2NhcmQuYzwvRmlsZVBhdGg+CisgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgICA8RmlsZT4KKyAgICAgICAgICAgICAgPEZpbGVOYW1lPnNwX2NvbW11bmljYXRlLmM8L0ZpbGVOYW1lPgorICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlwuLlxzdXB3aXNkb21cc3BfY29tbXVuaWNhdGUuYzwvRmlsZVBhdGg+CisgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgICA8RmlsZT4KKyAgICAgICAgICAgICAgPEZpbGVOYW1lPnNwX2NvbnN1bWUuYzwvRmlsZU5hbWU+CisgICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXC4uXHN1cHdpc2RvbVxzcF9jb25zdW1lLmM8L0ZpbGVQYXRoPgorICAgICAgICAgICAgPC9GaWxlPgorICAgICAgICAgICAgPEZpbGU+CisgICAgICAgICAgICAgIDxGaWxlTmFtZT5zcF9kYXRhLmM8L0ZpbGVOYW1lPgorICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlwuLlxzdXB3aXNkb21cc3BfZGF0YS5jPC9GaWxlUGF0aD4KKyAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICAgIDxGaWxlPgorICAgICAgICAgICAgICA8RmlsZU5hbWU+c3BfZGVzLmM8L0ZpbGVOYW1lPgorICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlwuLlxzdXB3aXNkb21cc3BfZGVzLmM8L0ZpbGVQYXRoPgorICAgICAgICAgICAgPC9GaWxlPgorICAgICAgICAgICAgPEZpbGU+CisgICAgICAgICAgICAgIDxGaWxlTmFtZT5zcF9kaXNwbGF5LmM8L0ZpbGVOYW1lPgorICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlwuLlxzdXB3aXNkb21cc3BfZGlzcGxheS5jPC9GaWxlUGF0aD4KKyAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICAgIDxGaWxlPgorICAgICAgICAgICAgICA8RmlsZU5hbWU+c3BfZmxhc2guYzwvRmlsZU5hbWU+CisgICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXC4uXHN1cHdpc2RvbVxzcF9mbGFzaC5jPC9GaWxlUGF0aD4KKyAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICAgIDxGaWxlPgorICAgICAgICAgICAgICA8RmlsZU5hbWU+c3BfbWVudS5jPC9GaWxlTmFtZT4KKyAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5cLi5cc3Vwd2lzZG9tXHNwX21lbnUuYzwvRmlsZVBhdGg+CisgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgICA8RmlsZT4KKyAgICAgICAgICAgICAgPEZpbGVOYW1lPnNwX21zZ3BhY2suYzwvRmlsZU5hbWU+CisgICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXC4uXHN1cHdpc2RvbVxzcF9tc2dwYWNrLmM8L0ZpbGVQYXRoPgorICAgICAgICAgICAgPC9GaWxlPgorICAgICAgICAgICAgPEZpbGU+CisgICAgICAgICAgICAgIDxGaWxlTmFtZT5zcF91dGlsLmM8L0ZpbGVOYW1lPgorICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlwuLlxzdXB3aXNkb21cc3BfdXRpbC5jPC9GaWxlUGF0aD4KKyAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICAgIDxGaWxlPgorICAgICAgICAgICAgICA8RmlsZU5hbWU+c3BfdXBncmFkZS5jPC9GaWxlTmFtZT4KKyAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5cLi5cc3Vwd2lzZG9tXHNwX3VwZ3JhZGUuYzwvRmlsZVBhdGg+CisgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgPC9GaWxlcz4KKyAgICAgICAgPC9Hcm91cD4KKyAgICAgICAgPEdyb3VwPgorICAgICAgICAgIDxHcm91cE5hbWU+bGliPC9Hcm91cE5hbWU+CisgICAgICAgICAgPEZpbGVzPgorICAgICAgICAgICAgPEZpbGU+CisgICAgICAgICAgICAgIDxGaWxlTmFtZT5HNDAxX2Rydl9od19WMDQubGliPC9GaWxlTmFtZT4KKyAgICAgICAgICAgICAgPEZpbGVUeXBlPjQ8L0ZpbGVUeXBlPgorICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5cbGliXEc0MDFfZHJ2X2h3X1YwNC5saWI8L0ZpbGVQYXRoPgorICAgICAgICAgICAgPC9GaWxlPgorICAgICAgICAgICAgPEZpbGU+CisgICAgICAgICAgICAgIDxGaWxlTmFtZT5nNDAxX3VhcnQ1X3YwMDEubGliPC9GaWxlTmFtZT4KKyAgICAgICAgICAgICAgPEZpbGVUeXBlPjQ8L0ZpbGVUeXBlPgorICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5cbGliXGc0MDFfdWFydDVfdjAwMS5saWI8L0ZpbGVQYXRoPgorICAgICAgICAgICAgPC9GaWxlPgorICAgICAgICAgIDwvRmlsZXM+CisgICAgICAgIDwvR3JvdXA+CisgICAgICAgIDxHcm91cD4KKyAgICAgICAgICA8R3JvdXBOYW1lPnN0X2Z3X2xpYjwvR3JvdXBOYW1lPgorICAgICAgICAgIDxGaWxlcz4KKyAgICAgICAgICAgIDxGaWxlPgorICAgICAgICAgICAgICA8RmlsZU5hbWU+Y29yZV9jbTMuYzwvRmlsZU5hbWU+CisgICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXC4uXHN0X2Z3X2xpYlxzcmNcY29yZV9jbTMuYzwvRmlsZVBhdGg+CisgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgICA8RmlsZT4KKyAgICAgICAgICAgICAgPEZpbGVOYW1lPm1pc2MuYzwvRmlsZU5hbWU+CisgICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXC4uXHN0X2Z3X2xpYlxzcmNcbWlzYy5jPC9GaWxlUGF0aD4KKyAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICAgIDxGaWxlPgorICAgICAgICAgICAgICA8RmlsZU5hbWU+c3RtMzJmMTB4X2FkYy5jPC9GaWxlTmFtZT4KKyAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5cLi5cc3RfZndfbGliXHNyY1xzdG0zMmYxMHhfYWRjLmM8L0ZpbGVQYXRoPgorICAgICAgICAgICAgPC9GaWxlPgorICAgICAgICAgICAgPEZpbGU+CisgICAgICAgICAgICAgIDxGaWxlTmFtZT5zdG0zMmYxMHhfYmtwLmM8L0ZpbGVOYW1lPgorICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlwuLlxzdF9md19saWJcc3JjXHN0bTMyZjEweF9ia3AuYzwvRmlsZVBhdGg+CisgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgICA8RmlsZT4KKyAgICAgICAgICAgICAgPEZpbGVOYW1lPnN0bTMyZjEweF9jYW4uYzwvRmlsZU5hbWU+CisgICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXC4uXHN0X2Z3X2xpYlxzcmNcc3RtMzJmMTB4X2Nhbi5jPC9GaWxlUGF0aD4KKyAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICAgIDxGaWxlPgorICAgICAgICAgICAgICA8RmlsZU5hbWU+c3RtMzJmMTB4X2NlYy5jPC9GaWxlTmFtZT4KKyAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5cLi5cc3RfZndfbGliXHNyY1xzdG0zMmYxMHhfY2VjLmM8L0ZpbGVQYXRoPgorICAgICAgICAgICAgPC9GaWxlPgorICAgICAgICAgICAgPEZpbGU+CisgICAgICAgICAgICAgIDxGaWxlTmFtZT5zdG0zMmYxMHhfY3JjLmM8L0ZpbGVOYW1lPgorICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlwuLlxzdF9md19saWJcc3JjXHN0bTMyZjEweF9jcmMuYzwvRmlsZVBhdGg+CisgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgICA8RmlsZT4KKyAgICAgICAgICAgICAgPEZpbGVOYW1lPnN0bTMyZjEweF9kYWMuYzwvRmlsZU5hbWU+CisgICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXC4uXHN0X2Z3X2xpYlxzcmNcc3RtMzJmMTB4X2RhYy5jPC9GaWxlUGF0aD4KKyAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICAgIDxGaWxlPgorICAgICAgICAgICAgICA8RmlsZU5hbWU+c3RtMzJmMTB4X2RiZ21jdS5jPC9GaWxlTmFtZT4KKyAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5cLi5cc3RfZndfbGliXHNyY1xzdG0zMmYxMHhfZGJnbWN1LmM8L0ZpbGVQYXRoPgorICAgICAgICAgICAgPC9GaWxlPgorICAgICAgICAgICAgPEZpbGU+CisgICAgICAgICAgICAgIDxGaWxlTmFtZT5zdG0zMmYxMHhfZG1hLmM8L0ZpbGVOYW1lPgorICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlwuLlxzdF9md19saWJcc3JjXHN0bTMyZjEweF9kbWEuYzwvRmlsZVBhdGg+CisgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgICA8RmlsZT4KKyAgICAgICAgICAgICAgPEZpbGVOYW1lPnN0bTMyZjEweF9leHRpLmM8L0ZpbGVOYW1lPgorICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlwuLlxzdF9md19saWJcc3JjXHN0bTMyZjEweF9leHRpLmM8L0ZpbGVQYXRoPgorICAgICAgICAgICAgPC9GaWxlPgorICAgICAgICAgICAgPEZpbGU+CisgICAgICAgICAgICAgIDxGaWxlTmFtZT5zdG0zMmYxMHhfZmxhc2guYzwvRmlsZU5hbWU+CisgICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXC4uXHN0X2Z3X2xpYlxzcmNcc3RtMzJmMTB4X2ZsYXNoLmM8L0ZpbGVQYXRoPgorICAgICAgICAgICAgPC9GaWxlPgorICAgICAgICAgICAgPEZpbGU+CisgICAgICAgICAgICAgIDxGaWxlTmFtZT5zdG0zMmYxMHhfZnNtYy5jPC9GaWxlTmFtZT4KKyAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5cLi5cc3RfZndfbGliXHNyY1xzdG0zMmYxMHhfZnNtYy5jPC9GaWxlUGF0aD4KKyAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICAgIDxGaWxlPgorICAgICAgICAgICAgICA8RmlsZU5hbWU+c3RtMzJmMTB4X2dwaW8uYzwvRmlsZU5hbWU+CisgICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXC4uXHN0X2Z3X2xpYlxzcmNcc3RtMzJmMTB4X2dwaW8uYzwvRmlsZVBhdGg+CisgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgICA8RmlsZT4KKyAgICAgICAgICAgICAgPEZpbGVOYW1lPnN0bTMyZjEweF9pMmMuYzwvRmlsZU5hbWU+CisgICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXC4uXHN0X2Z3X2xpYlxzcmNcc3RtMzJmMTB4X2kyYy5jPC9GaWxlUGF0aD4KKyAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICAgIDxGaWxlPgorICAgICAgICAgICAgICA8RmlsZU5hbWU+c3RtMzJmMTB4X3B3ci5jPC9GaWxlTmFtZT4KKyAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5cLi5cc3RfZndfbGliXHNyY1xzdG0zMmYxMHhfcHdyLmM8L0ZpbGVQYXRoPgorICAgICAgICAgICAgPC9GaWxlPgorICAgICAgICAgICAgPEZpbGU+CisgICAgICAgICAgICAgIDxGaWxlTmFtZT5zdG0zMmYxMHhfaXdkZy5jPC9GaWxlTmFtZT4KKyAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5cLi5cc3RfZndfbGliXHNyY1xzdG0zMmYxMHhfaXdkZy5jPC9GaWxlUGF0aD4KKyAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICAgIDxGaWxlPgorICAgICAgICAgICAgICA8RmlsZU5hbWU+c3RtMzJmMTB4X3JjYy5jPC9GaWxlTmFtZT4KKyAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5cLi5cc3RfZndfbGliXHNyY1xzdG0zMmYxMHhfcmNjLmM8L0ZpbGVQYXRoPgorICAgICAgICAgICAgPC9GaWxlPgorICAgICAgICAgICAgPEZpbGU+CisgICAgICAgICAgICAgIDxGaWxlTmFtZT5zdG0zMmYxMHhfcnRjLmM8L0ZpbGVOYW1lPgorICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlwuLlxzdF9md19saWJcc3JjXHN0bTMyZjEweF9ydGMuYzwvRmlsZVBhdGg+CisgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgICA8RmlsZT4KKyAgICAgICAgICAgICAgPEZpbGVOYW1lPnN0bTMyZjEweF9zZGlvLmM8L0ZpbGVOYW1lPgorICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlwuLlxzdF9md19saWJcc3JjXHN0bTMyZjEweF9zZGlvLmM8L0ZpbGVQYXRoPgorICAgICAgICAgICAgPC9GaWxlPgorICAgICAgICAgICAgPEZpbGU+CisgICAgICAgICAgICAgIDxGaWxlTmFtZT5zdG0zMmYxMHhfc3BpLmM8L0ZpbGVOYW1lPgorICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlwuLlxzdF9md19saWJcc3JjXHN0bTMyZjEweF9zcGkuYzwvRmlsZVBhdGg+CisgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgICA8RmlsZT4KKyAgICAgICAgICAgICAgPEZpbGVOYW1lPnN0bTMyZjEweF90aW0uYzwvRmlsZU5hbWU+CisgICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXC4uXHN0X2Z3X2xpYlxzcmNcc3RtMzJmMTB4X3RpbS5jPC9GaWxlUGF0aD4KKyAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICAgIDxGaWxlPgorICAgICAgICAgICAgICA8RmlsZU5hbWU+c3RtMzJmMTB4X3VzYXJ0LmM8L0ZpbGVOYW1lPgorICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlwuLlxzdF9md19saWJcc3JjXHN0bTMyZjEweF91c2FydC5jPC9GaWxlUGF0aD4KKyAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICAgIDxGaWxlPgorICAgICAgICAgICAgICA8RmlsZU5hbWU+c3RtMzJmMTB4X3d3ZGcuYzwvRmlsZU5hbWU+CisgICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXC4uXHN0X2Z3X2xpYlxzcmNcc3RtMzJmMTB4X3d3ZGcuYzwvRmlsZVBhdGg+CisgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgICA8RmlsZT4KKyAgICAgICAgICAgICAgPEZpbGVOYW1lPnN5c3RlbV9zdG0zMmYxMHguYzwvRmlsZU5hbWU+CisgICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXC4uXHN0X2Z3X2xpYlxzeXN0ZW1fc3RtMzJmMTB4LmM8L0ZpbGVQYXRoPgorICAgICAgICAgICAgPC9GaWxlPgorICAgICAgICAgICAgPEZpbGU+CisgICAgICAgICAgICAgIDxGaWxlTmFtZT5zdGFydHVwX3N0bTMyZjEweF9oZC5zPC9GaWxlTmFtZT4KKyAgICAgICAgICAgICAgPEZpbGVUeXBlPjI8L0ZpbGVUeXBlPgorICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5cLi5cc3RfZndfbGliXHN0YXJ0dXBfc3RtMzJmMTB4X2hkLnM8L0ZpbGVQYXRoPgorICAgICAgICAgICAgPC9GaWxlPgorICAgICAgICAgIDwvRmlsZXM+CisgICAgICAgIDwvR3JvdXA+CisgICAgICAgIDxHcm91cD4KKyAgICAgICAgICA8R3JvdXBOYW1lPnN5c19odzwvR3JvdXBOYW1lPgorICAgICAgICAgIDxGaWxlcz4KKyAgICAgICAgICAgIDxGaWxlPgorICAgICAgICAgICAgICA8RmlsZU5hbWU+a2V5cGFkLmM8L0ZpbGVOYW1lPgorICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlwuLlxzeXNfaHdca2V5cGFkLmM8L0ZpbGVQYXRoPgorICAgICAgICAgICAgPC9GaWxlPgorICAgICAgICAgICAgPEZpbGU+CisgICAgICAgICAgICAgIDxGaWxlTmFtZT5kcnZfYWRjLmM8L0ZpbGVOYW1lPgorICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlwuLlxzeXNfaHdcZHJ2X2FkYy5jPC9GaWxlUGF0aD4KKyAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICA8L0ZpbGVzPgorICAgICAgICA8L0dyb3VwPgorICAgICAgICA8R3JvdXA+CisgICAgICAgICAgPEdyb3VwTmFtZT56azwvR3JvdXBOYW1lPgorICAgICAgICAgIDxGaWxlcz4KKyAgICAgICAgICAgIDxGaWxlPgorICAgICAgICAgICAgICA8RmlsZU5hbWU+Z2IyMzEyXzE2LmM8L0ZpbGVOYW1lPgorICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlwuLlx6a1xnYjIzMTJfMTYuYzwvRmlsZVBhdGg+CisgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgPC9GaWxlcz4KKyAgICAgICAgPC9Hcm91cD4KKyAgICAgICAgPEdyb3VwPgorICAgICAgICAgIDxHcm91cE5hbWU+bGlicXI8L0dyb3VwTmFtZT4KKyAgICAgICAgICA8RmlsZXM+CisgICAgICAgICAgICA8RmlsZT4KKyAgICAgICAgICAgICAgPEZpbGVOYW1lPnFyZW5jb2RlLmM8L0ZpbGVOYW1lPgorICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlwuLlxsaWJxclxxcmVuY29kZS5jPC9GaWxlUGF0aD4KKyAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICA8L0ZpbGVzPgorICAgICAgICA8L0dyb3VwPgorICAgICAgICA8R3JvdXA+CisgICAgICAgICAgPEdyb3VwTmFtZT5tc2dwYWNrPC9Hcm91cE5hbWU+CisgICAgICAgICAgPEZpbGVzPgorICAgICAgICAgICAgPEZpbGU+CisgICAgICAgICAgICAgIDxGaWxlTmFtZT5jd3BhY2suYzwvRmlsZU5hbWU+CisgICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXC4uXG1zZ3BhY2tcY3dwYWNrLmM8L0ZpbGVQYXRoPgorICAgICAgICAgICAgPC9GaWxlPgorICAgICAgICAgIDwvRmlsZXM+CisgICAgICAgIDwvR3JvdXA+CisgICAgICA8L0dyb3Vwcz4KKyAgICA8L1RhcmdldD4KKyAgICA8VGFyZ2V0PgorICAgICAgPFRhcmdldE5hbWU+dGltZXI8L1RhcmdldE5hbWU+CisgICAgICA8VG9vbHNldE51bWJlcj4weDQ8L1Rvb2xzZXROdW1iZXI+CisgICAgICA8VG9vbHNldE5hbWU+QVJNLUFEUzwvVG9vbHNldE5hbWU+CisgICAgICA8VGFyZ2V0T3B0aW9uPgorICAgICAgICA8VGFyZ2V0Q29tbW9uT3B0aW9uPgorICAgICAgICAgIDxEZXZpY2U+U1RNMzJGMTAzUkM8L0RldmljZT4KKyAgICAgICAgICA8VmVuZG9yPlNUTWljcm9lbGVjdHJvbmljczwvVmVuZG9yPgorICAgICAgICAgIDxDcHU+SVJBTSgweDIwMDAwMDAwLTB4MjAwMEJGRkYpIElST00oMHg4MDAwMDAwLTB4ODAzRkZGRikgQ0xPQ0soODAwMDAwMCkgQ1BVVFlQRSgiQ29ydGV4LU0zIik8L0NwdT4KKyAgICAgICAgICA8Rmxhc2hVdGlsU3BlYz48L0ZsYXNoVXRpbFNwZWM+CisgICAgICAgICAgPFN0YXJ0dXBGaWxlPiJTVEFSVFVQXFNUXFNUTTMyRjEweFxzdGFydHVwX3N0bTMyZjEweF9oZC5zIiAoIlNUTTMyIEhpZ2ggRGVuc2l0eSBMaW5lIFN0YXJ0dXAgQ29kZSIpPC9TdGFydHVwRmlsZT4KKyAgICAgICAgICA8Rmxhc2hEcml2ZXJEbGw+VUwyQ00zKC1PMTQgLVMwIC1DMCAtTjAwKCJBUk0gQ29ydGV4LU0zIikgLUQwMCgxQkEwMDQ3NykgLUwwMCg0KSAtRk83IC1GRDIwMDAwMDAwIC1GQzgwMCAtRk4xIC1GRjBTVE0zMkYxMHhfNTEyIC1GUzA4MDAwMDAwIC1GTDA0MDAwMCk8L0ZsYXNoRHJpdmVyRGxsPgorICAgICAgICAgIDxEZXZpY2VJZD40MjMwPC9EZXZpY2VJZD4KKyAgICAgICAgICA8UmVnaXN0ZXJGaWxlPnN0bTMyZjEweC5oPC9SZWdpc3RlckZpbGU+CisgICAgICAgICAgPE1lbW9yeUVudj48L01lbW9yeUVudj4KKyAgICAgICAgICA8Q21wPjwvQ21wPgorICAgICAgICAgIDxBc20+PC9Bc20+CisgICAgICAgICAgPExpbmtlcj48L0xpbmtlcj4KKyAgICAgICAgICA8T0hTdHJpbmc+PC9PSFN0cmluZz4KKyAgICAgICAgICA8SW5maW5pb25PcHRpb25EbGw+PC9JbmZpbmlvbk9wdGlvbkRsbD4KKyAgICAgICAgICA8U0xFNjZDTWlzYz48L1NMRTY2Q01pc2M+CisgICAgICAgICAgPFNMRTY2QU1pc2M+PC9TTEU2NkFNaXNjPgorICAgICAgICAgIDxTTEU2Nkxpbmtlck1pc2M+PC9TTEU2Nkxpbmtlck1pc2M+CisgICAgICAgICAgPFNGREZpbGU+PC9TRkRGaWxlPgorICAgICAgICAgIDxVc2VFbnY+MDwvVXNlRW52PgorICAgICAgICAgIDxCaW5QYXRoPjwvQmluUGF0aD4KKyAgICAgICAgICA8SW5jbHVkZVBhdGg+PC9JbmNsdWRlUGF0aD4KKyAgICAgICAgICA8TGliUGF0aD48L0xpYlBhdGg+CisgICAgICAgICAgPFJlZ2lzdGVyRmlsZVBhdGg+U1RcU1RNMzJGMTB4XDwvUmVnaXN0ZXJGaWxlUGF0aD4KKyAgICAgICAgICA8REJSZWdpc3RlckZpbGVQYXRoPlNUXFNUTTMyRjEweFw8L0RCUmVnaXN0ZXJGaWxlUGF0aD4KKyAgICAgICAgICA8VGFyZ2V0U3RhdHVzPgorICAgICAgICAgICAgPEVycm9yPjA8L0Vycm9yPgorICAgICAgICAgICAgPEV4aXRDb2RlU3RvcD4wPC9FeGl0Q29kZVN0b3A+CisgICAgICAgICAgICA8QnV0dG9uU3RvcD4wPC9CdXR0b25TdG9wPgorICAgICAgICAgICAgPE5vdEdlbmVyYXRlZD4wPC9Ob3RHZW5lcmF0ZWQ+CisgICAgICAgICAgICA8SW52YWxpZEZsYXNoPjE8L0ludmFsaWRGbGFzaD4KKyAgICAgICAgICA8L1RhcmdldFN0YXR1cz4KKyAgICAgICAgICA8T3V0cHV0RGlyZWN0b3J5Pi4uXG91dFRpbWVyXDwvT3V0cHV0RGlyZWN0b3J5PgorICAgICAgICAgIDxPdXRwdXROYW1lPkc0MDEzMDJfdGltZXI8L091dHB1dE5hbWU+CisgICAgICAgICAgPENyZWF0ZUV4ZWN1dGFibGU+MTwvQ3JlYXRlRXhlY3V0YWJsZT4KKyAgICAgICAgICA8Q3JlYXRlTGliPjA8L0NyZWF0ZUxpYj4KKyAgICAgICAgICA8Q3JlYXRlSGV4RmlsZT4xPC9DcmVhdGVIZXhGaWxlPgorICAgICAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uPjE8L0RlYnVnSW5mb3JtYXRpb24+CisgICAgICAgICAgPEJyb3dzZUluZm9ybWF0aW9uPjE8L0Jyb3dzZUluZm9ybWF0aW9uPgorICAgICAgICAgIDxMaXN0aW5nUGF0aD4uLlxvdXRUaW1lclw8L0xpc3RpbmdQYXRoPgorICAgICAgICAgIDxIZXhGb3JtYXRTZWxlY3Rpb24+MTwvSGV4Rm9ybWF0U2VsZWN0aW9uPgorICAgICAgICAgIDxNZXJnZTMySz4wPC9NZXJnZTMySz4KKyAgICAgICAgICA8Q3JlYXRlQmF0Y2hGaWxlPjA8L0NyZWF0ZUJhdGNoRmlsZT4KKyAgICAgICAgICA8QmVmb3JlQ29tcGlsZT4KKyAgICAgICAgICAgIDxSdW5Vc2VyUHJvZzE+MDwvUnVuVXNlclByb2cxPgorICAgICAgICAgICAgPFJ1blVzZXJQcm9nMj4wPC9SdW5Vc2VyUHJvZzI+CisgICAgICAgICAgICA8VXNlclByb2cxTmFtZT48L1VzZXJQcm9nMU5hbWU+CisgICAgICAgICAgICA8VXNlclByb2cyTmFtZT48L1VzZXJQcm9nMk5hbWU+CisgICAgICAgICAgICA8VXNlclByb2cxRG9zMTZNb2RlPjA8L1VzZXJQcm9nMURvczE2TW9kZT4KKyAgICAgICAgICAgIDxVc2VyUHJvZzJEb3MxNk1vZGU+MDwvVXNlclByb2cyRG9zMTZNb2RlPgorICAgICAgICAgIDwvQmVmb3JlQ29tcGlsZT4KKyAgICAgICAgICA8QmVmb3JlTWFrZT4KKyAgICAgICAgICAgIDxSdW5Vc2VyUHJvZzE+MTwvUnVuVXNlclByb2cxPgorICAgICAgICAgICAgPFJ1blVzZXJQcm9nMj4wPC9SdW5Vc2VyUHJvZzI+CisgICAgICAgICAgICA8VXNlclByb2cxTmFtZT5jbWQgL2MgZ2l0dmVyLmJhdDwvVXNlclByb2cxTmFtZT4KKyAgICAgICAgICAgIDxVc2VyUHJvZzJOYW1lPjwvVXNlclByb2cyTmFtZT4KKyAgICAgICAgICAgIDxVc2VyUHJvZzFEb3MxNk1vZGU+MDwvVXNlclByb2cxRG9zMTZNb2RlPgorICAgICAgICAgICAgPFVzZXJQcm9nMkRvczE2TW9kZT4wPC9Vc2VyUHJvZzJEb3MxNk1vZGU+CisgICAgICAgICAgPC9CZWZvcmVNYWtlPgorICAgICAgICAgIDxBZnRlck1ha2U+CisgICAgICAgICAgICA8UnVuVXNlclByb2cxPjE8L1J1blVzZXJQcm9nMT4KKyAgICAgICAgICAgIDxSdW5Vc2VyUHJvZzI+MDwvUnVuVXNlclByb2cyPgorICAgICAgICAgICAgPFVzZXJQcm9nMU5hbWU+ZnJvbWVsZiAtLWJpbiAtbyAuLlxvdXRUaW1lclxAbC5iaW4gLi5cb3V0VGltZXJcQGwuYXhmPC9Vc2VyUHJvZzFOYW1lPgorICAgICAgICAgICAgPFVzZXJQcm9nMk5hbWU+PC9Vc2VyUHJvZzJOYW1lPgorICAgICAgICAgICAgPFVzZXJQcm9nMURvczE2TW9kZT4wPC9Vc2VyUHJvZzFEb3MxNk1vZGU+CisgICAgICAgICAgICA8VXNlclByb2cyRG9zMTZNb2RlPjA8L1VzZXJQcm9nMkRvczE2TW9kZT4KKyAgICAgICAgICA8L0FmdGVyTWFrZT4KKyAgICAgICAgICA8U2VsZWN0ZWRGb3JCYXRjaEJ1aWxkPjA8L1NlbGVjdGVkRm9yQmF0Y2hCdWlsZD4KKyAgICAgICAgICA8U1ZDU0lkU3RyaW5nPjwvU1ZDU0lkU3RyaW5nPgorICAgICAgICA8L1RhcmdldENvbW1vbk9wdGlvbj4KKyAgICAgICAgPENvbW1vblByb3BlcnR5PgorICAgICAgICAgIDxVc2VDUFBDb21waWxlcj4wPC9Vc2VDUFBDb21waWxlcj4KKyAgICAgICAgICA8UlZDVENvZGVDb25zdD4wPC9SVkNUQ29kZUNvbnN0PgorICAgICAgICAgIDxSVkNUWkk+MDwvUlZDVFpJPgorICAgICAgICAgIDxSVkNUT3RoZXJEYXRhPjA8L1JWQ1RPdGhlckRhdGE+CisgICAgICAgICAgPE1vZHVsZVNlbGVjdGlvbj4wPC9Nb2R1bGVTZWxlY3Rpb24+CisgICAgICAgICAgPEluY2x1ZGVJbkJ1aWxkPjE8L0luY2x1ZGVJbkJ1aWxkPgorICAgICAgICAgIDxBbHdheXNCdWlsZD4wPC9BbHdheXNCdWlsZD4KKyAgICAgICAgICA8R2VuZXJhdGVBc3NlbWJseUZpbGU+MDwvR2VuZXJhdGVBc3NlbWJseUZpbGU+CisgICAgICAgICAgPEFzc2VtYmxlQXNzZW1ibHlGaWxlPjA8L0Fzc2VtYmxlQXNzZW1ibHlGaWxlPgorICAgICAgICAgIDxQdWJsaWNzT25seT4wPC9QdWJsaWNzT25seT4KKyAgICAgICAgICA8U3RvcE9uRXhpdENvZGU+MzwvU3RvcE9uRXhpdENvZGU+CisgICAgICAgICAgPEN1c3RvbUFyZ3VtZW50PjwvQ3VzdG9tQXJndW1lbnQ+CisgICAgICAgICAgPEluY2x1ZGVMaWJyYXJ5TW9kdWxlcz48L0luY2x1ZGVMaWJyYXJ5TW9kdWxlcz4KKyAgICAgICAgPC9Db21tb25Qcm9wZXJ0eT4KKyAgICAgICAgPERsbE9wdGlvbj4KKyAgICAgICAgICA8U2ltRGxsTmFtZT5TQVJNQ00zLkRMTDwvU2ltRGxsTmFtZT4KKyAgICAgICAgICA8U2ltRGxsQXJndW1lbnRzPi1SRU1BUDwvU2ltRGxsQXJndW1lbnRzPgorICAgICAgICAgIDxTaW1EbGdEbGw+RENNLkRMTDwvU2ltRGxnRGxsPgorICAgICAgICAgIDxTaW1EbGdEbGxBcmd1bWVudHM+LXBDTTM8L1NpbURsZ0RsbEFyZ3VtZW50cz4KKyAgICAgICAgICA8VGFyZ2V0RGxsTmFtZT5TQVJNQ00zLkRMTDwvVGFyZ2V0RGxsTmFtZT4KKyAgICAgICAgICA8VGFyZ2V0RGxsQXJndW1lbnRzPjwvVGFyZ2V0RGxsQXJndW1lbnRzPgorICAgICAgICAgIDxUYXJnZXREbGdEbGw+VENNLkRMTDwvVGFyZ2V0RGxnRGxsPgorICAgICAgICAgIDxUYXJnZXREbGdEbGxBcmd1bWVudHM+LXBDTTM8L1RhcmdldERsZ0RsbEFyZ3VtZW50cz4KKyAgICAgICAgPC9EbGxPcHRpb24+CisgICAgICAgIDxEZWJ1Z09wdGlvbj4KKyAgICAgICAgICA8T1BUSFg+CisgICAgICAgICAgICA8SGV4U2VsZWN0aW9uPjE8L0hleFNlbGVjdGlvbj4KKyAgICAgICAgICAgIDxIZXhSYW5nZUxvd0FkZHJlc3M+MDwvSGV4UmFuZ2VMb3dBZGRyZXNzPgorICAgICAgICAgICAgPEhleFJhbmdlSGlnaEFkZHJlc3M+MDwvSGV4UmFuZ2VIaWdoQWRkcmVzcz4KKyAgICAgICAgICAgIDxIZXhPZmZzZXQ+MDwvSGV4T2Zmc2V0PgorICAgICAgICAgICAgPE9oMTY2UmVjTGVuPjE2PC9PaDE2NlJlY0xlbj4KKyAgICAgICAgICA8L09QVEhYPgorICAgICAgICAgIDxTaW11bGF0b3I+CisgICAgICAgICAgICA8VXNlU2ltdWxhdG9yPjE8L1VzZVNpbXVsYXRvcj4KKyAgICAgICAgICAgIDxMb2FkQXBwbGljYXRpb25BdFN0YXJ0dXA+MTwvTG9hZEFwcGxpY2F0aW9uQXRTdGFydHVwPgorICAgICAgICAgICAgPFJ1blRvTWFpbj4xPC9SdW5Ub01haW4+CisgICAgICAgICAgICA8UmVzdG9yZUJyZWFrcG9pbnRzPjE8L1Jlc3RvcmVCcmVha3BvaW50cz4KKyAgICAgICAgICAgIDxSZXN0b3JlV2F0Y2hwb2ludHM+MTwvUmVzdG9yZVdhdGNocG9pbnRzPgorICAgICAgICAgICAgPFJlc3RvcmVNZW1vcnlEaXNwbGF5PjE8L1Jlc3RvcmVNZW1vcnlEaXNwbGF5PgorICAgICAgICAgICAgPFJlc3RvcmVGdW5jdGlvbnM+MTwvUmVzdG9yZUZ1bmN0aW9ucz4KKyAgICAgICAgICAgIDxSZXN0b3JlVG9vbGJveD4xPC9SZXN0b3JlVG9vbGJveD4KKyAgICAgICAgICAgIDxMaW1pdFNwZWVkVG9SZWFsVGltZT4wPC9MaW1pdFNwZWVkVG9SZWFsVGltZT4KKyAgICAgICAgICA8L1NpbXVsYXRvcj4KKyAgICAgICAgICA8VGFyZ2V0PgorICAgICAgICAgICAgPFVzZVRhcmdldD4wPC9Vc2VUYXJnZXQ+CisgICAgICAgICAgICA8TG9hZEFwcGxpY2F0aW9uQXRTdGFydHVwPjE8L0xvYWRBcHBsaWNhdGlvbkF0U3RhcnR1cD4KKyAgICAgICAgICAgIDxSdW5Ub01haW4+MTwvUnVuVG9NYWluPgorICAgICAgICAgICAgPFJlc3RvcmVCcmVha3BvaW50cz4xPC9SZXN0b3JlQnJlYWtwb2ludHM+CisgICAgICAgICAgICA8UmVzdG9yZVdhdGNocG9pbnRzPjE8L1Jlc3RvcmVXYXRjaHBvaW50cz4KKyAgICAgICAgICAgIDxSZXN0b3JlTWVtb3J5RGlzcGxheT4xPC9SZXN0b3JlTWVtb3J5RGlzcGxheT4KKyAgICAgICAgICAgIDxSZXN0b3JlRnVuY3Rpb25zPjA8L1Jlc3RvcmVGdW5jdGlvbnM+CisgICAgICAgICAgICA8UmVzdG9yZVRvb2xib3g+MTwvUmVzdG9yZVRvb2xib3g+CisgICAgICAgICAgPC9UYXJnZXQ+CisgICAgICAgICAgPFJ1bkRlYnVnQWZ0ZXJCdWlsZD4wPC9SdW5EZWJ1Z0FmdGVyQnVpbGQ+CisgICAgICAgICAgPFRhcmdldFNlbGVjdGlvbj41PC9UYXJnZXRTZWxlY3Rpb24+CisgICAgICAgICAgPFNpbURsbHM+CisgICAgICAgICAgICA8Q3B1RGxsPjwvQ3B1RGxsPgorICAgICAgICAgICAgPENwdURsbEFyZ3VtZW50cz48L0NwdURsbEFyZ3VtZW50cz4KKyAgICAgICAgICAgIDxQZXJpcGhlcmFsRGxsPjwvUGVyaXBoZXJhbERsbD4KKyAgICAgICAgICAgIDxQZXJpcGhlcmFsRGxsQXJndW1lbnRzPjwvUGVyaXBoZXJhbERsbEFyZ3VtZW50cz4KKyAgICAgICAgICAgIDxJbml0aWFsaXphdGlvbkZpbGU+LlxtZXJnZS5pbmk8L0luaXRpYWxpemF0aW9uRmlsZT4KKyAgICAgICAgICA8L1NpbURsbHM+CisgICAgICAgICAgPFRhcmdldERsbHM+CisgICAgICAgICAgICA8Q3B1RGxsPjwvQ3B1RGxsPgorICAgICAgICAgICAgPENwdURsbEFyZ3VtZW50cz48L0NwdURsbEFyZ3VtZW50cz4KKyAgICAgICAgICAgIDxQZXJpcGhlcmFsRGxsPjwvUGVyaXBoZXJhbERsbD4KKyAgICAgICAgICAgIDxQZXJpcGhlcmFsRGxsQXJndW1lbnRzPjwvUGVyaXBoZXJhbERsbEFyZ3VtZW50cz4KKyAgICAgICAgICAgIDxJbml0aWFsaXphdGlvbkZpbGU+PC9Jbml0aWFsaXphdGlvbkZpbGU+CisgICAgICAgICAgICA8RHJpdmVyPlNlZ2dlclxKTDJDTTMuZGxsPC9Ecml2ZXI+CisgICAgICAgICAgPC9UYXJnZXREbGxzPgorICAgICAgICA8L0RlYnVnT3B0aW9uPgorICAgICAgICA8VXRpbGl0aWVzPgorICAgICAgICAgIDxGbGFzaDE+CisgICAgICAgICAgICA8VXNlVGFyZ2V0RGxsPjE8L1VzZVRhcmdldERsbD4KKyAgICAgICAgICAgIDxVc2VFeHRlcm5hbFRvb2w+MDwvVXNlRXh0ZXJuYWxUb29sPgorICAgICAgICAgICAgPFJ1bkluZGVwZW5kZW50PjA8L1J1bkluZGVwZW5kZW50PgorICAgICAgICAgICAgPFVwZGF0ZUZsYXNoQmVmb3JlRGVidWdnaW5nPjE8L1VwZGF0ZUZsYXNoQmVmb3JlRGVidWdnaW5nPgorICAgICAgICAgICAgPENhcGFiaWxpdHk+MTwvQ2FwYWJpbGl0eT4KKyAgICAgICAgICAgIDxEcml2ZXJTZWxlY3Rpb24+NDA5OTwvRHJpdmVyU2VsZWN0aW9uPgorICAgICAgICAgIDwvRmxhc2gxPgorICAgICAgICAgIDxGbGFzaDI+U2VnZ2VyXEpMMkNNMy5kbGw8L0ZsYXNoMj4KKyAgICAgICAgICA8Rmxhc2gzPiIiICgpPC9GbGFzaDM+CisgICAgICAgICAgPEZsYXNoND48L0ZsYXNoND4KKyAgICAgICAgPC9VdGlsaXRpZXM+CisgICAgICAgIDxUYXJnZXRBcm1BZHM+CisgICAgICAgICAgPEFybUFkc01pc2M+CisgICAgICAgICAgICA8R2VuZXJhdGVMaXN0aW5ncz4wPC9HZW5lcmF0ZUxpc3RpbmdzPgorICAgICAgICAgICAgPGFzSGxsPjE8L2FzSGxsPgorICAgICAgICAgICAgPGFzQXNtPjE8L2FzQXNtPgorICAgICAgICAgICAgPGFzTWFjWD4xPC9hc01hY1g+CisgICAgICAgICAgICA8YXNTeW1zPjE8L2FzU3ltcz4KKyAgICAgICAgICAgIDxhc0ZhbHM+MTwvYXNGYWxzPgorICAgICAgICAgICAgPGFzRGJnRD4xPC9hc0RiZ0Q+CisgICAgICAgICAgICA8YXNGb3JtPjE8L2FzRm9ybT4KKyAgICAgICAgICAgIDxsZExzdD4wPC9sZExzdD4KKyAgICAgICAgICAgIDxsZG1tPjE8L2xkbW0+CisgICAgICAgICAgICA8bGRYcmVmPjE8L2xkWHJlZj4KKyAgICAgICAgICAgIDxCaWdFbmQ+MDwvQmlnRW5kPgorICAgICAgICAgICAgPEFkc0FMc3Q+MTwvQWRzQUxzdD4KKyAgICAgICAgICAgIDxBZHNBQ3JmPjE8L0Fkc0FDcmY+CisgICAgICAgICAgICA8QWRzQU5vcD4wPC9BZHNBTm9wPgorICAgICAgICAgICAgPEFkc0FOb3Q+MDwvQWRzQU5vdD4KKyAgICAgICAgICAgIDxBZHNMTHN0PjE8L0Fkc0xMc3Q+CisgICAgICAgICAgICA8QWRzTG1hcD4xPC9BZHNMbWFwPgorICAgICAgICAgICAgPEFkc0xjZ3I+MTwvQWRzTGNncj4KKyAgICAgICAgICAgIDxBZHNMc3ltPjE8L0Fkc0xzeW0+CisgICAgICAgICAgICA8QWRzTHN6aT4xPC9BZHNMc3ppPgorICAgICAgICAgICAgPEFkc0x0b2k+MTwvQWRzTHRvaT4KKyAgICAgICAgICAgIDxBZHNMc3VuPjE8L0Fkc0xzdW4+CisgICAgICAgICAgICA8QWRzTHZlbj4xPC9BZHNMdmVuPgorICAgICAgICAgICAgPEFkc0xzeGY+MTwvQWRzTHN4Zj4KKyAgICAgICAgICAgIDxSdmN0Q2xzdD4wPC9SdmN0Q2xzdD4KKyAgICAgICAgICAgIDxHZW5QUGxzdD4wPC9HZW5QUGxzdD4KKyAgICAgICAgICAgIDxBZHNDcHVUeXBlPiJDb3J0ZXgtTTMiPC9BZHNDcHVUeXBlPgorICAgICAgICAgICAgPFJ2Y3REZXZpY2VOYW1lPjwvUnZjdERldmljZU5hbWU+CisgICAgICAgICAgICA8bU9TPjA8L21PUz4KKyAgICAgICAgICAgIDx1b2NSb20+MDwvdW9jUm9tPgorICAgICAgICAgICAgPHVvY1JhbT4wPC91b2NSYW0+CisgICAgICAgICAgICA8aGFkSVJPTT4xPC9oYWRJUk9NPgorICAgICAgICAgICAgPGhhZElSQU0+MTwvaGFkSVJBTT4KKyAgICAgICAgICAgIDxoYWRYUkFNPjA8L2hhZFhSQU0+CisgICAgICAgICAgICA8dW9jWFJhbT4wPC91b2NYUmFtPgorICAgICAgICAgICAgPFJ2ZHNWUD4wPC9SdmRzVlA+CisgICAgICAgICAgICA8aGFkSVJBTTI+MDwvaGFkSVJBTTI+CisgICAgICAgICAgICA8aGFkSVJPTTI+MDwvaGFkSVJPTTI+CisgICAgICAgICAgICA8U3R1cFNlbD44PC9TdHVwU2VsPgorICAgICAgICAgICAgPHVzZVVsaWI+MDwvdXNlVWxpYj4KKyAgICAgICAgICAgIDxFbmRTZWw+MDwvRW5kU2VsPgorICAgICAgICAgICAgPHVMdGNnPjA8L3VMdGNnPgorICAgICAgICAgICAgPFJvU2VsRD4zPC9Sb1NlbEQ+CisgICAgICAgICAgICA8UndTZWxEPjM8L1J3U2VsRD4KKyAgICAgICAgICAgIDxDb2RlU2VsPjA8L0NvZGVTZWw+CisgICAgICAgICAgICA8T3B0RmVlZD4wPC9PcHRGZWVkPgorICAgICAgICAgICAgPE5vWmkxPjA8L05vWmkxPgorICAgICAgICAgICAgPE5vWmkyPjA8L05vWmkyPgorICAgICAgICAgICAgPE5vWmkzPjA8L05vWmkzPgorICAgICAgICAgICAgPE5vWmk0PjA8L05vWmk0PgorICAgICAgICAgICAgPE5vWmk1PjA8L05vWmk1PgorICAgICAgICAgICAgPFJvMUNoaz4wPC9SbzFDaGs+CisgICAgICAgICAgICA8Um8yQ2hrPjA8L1JvMkNoaz4KKyAgICAgICAgICAgIDxSbzNDaGs+MDwvUm8zQ2hrPgorICAgICAgICAgICAgPElyMUNoaz4xPC9JcjFDaGs+CisgICAgICAgICAgICA8SXIyQ2hrPjA8L0lyMkNoaz4KKyAgICAgICAgICAgIDxSYTFDaGs+MDwvUmExQ2hrPgorICAgICAgICAgICAgPFJhMkNoaz4wPC9SYTJDaGs+CisgICAgICAgICAgICA8UmEzQ2hrPjA8L1JhM0Noaz4KKyAgICAgICAgICAgIDxJbTFDaGs+MTwvSW0xQ2hrPgorICAgICAgICAgICAgPEltMkNoaz4wPC9JbTJDaGs+CisgICAgICAgICAgICA8T25DaGlwTWVtb3JpZXM+CisgICAgICAgICAgICAgIDxPY20xPgorICAgICAgICAgICAgICAgIDxUeXBlPjA8L1R5cGU+CisgICAgICAgICAgICAgICAgPFN0YXJ0QWRkcmVzcz4weDA8L1N0YXJ0QWRkcmVzcz4KKyAgICAgICAgICAgICAgICA8U2l6ZT4weDA8L1NpemU+CisgICAgICAgICAgICAgIDwvT2NtMT4KKyAgICAgICAgICAgICAgPE9jbTI+CisgICAgICAgICAgICAgICAgPFR5cGU+MDwvVHlwZT4KKyAgICAgICAgICAgICAgICA8U3RhcnRBZGRyZXNzPjB4MDwvU3RhcnRBZGRyZXNzPgorICAgICAgICAgICAgICAgIDxTaXplPjB4MDwvU2l6ZT4KKyAgICAgICAgICAgICAgPC9PY20yPgorICAgICAgICAgICAgICA8T2NtMz4KKyAgICAgICAgICAgICAgICA8VHlwZT4wPC9UeXBlPgorICAgICAgICAgICAgICAgIDxTdGFydEFkZHJlc3M+MHgwPC9TdGFydEFkZHJlc3M+CisgICAgICAgICAgICAgICAgPFNpemU+MHgwPC9TaXplPgorICAgICAgICAgICAgICA8L09jbTM+CisgICAgICAgICAgICAgIDxPY200PgorICAgICAgICAgICAgICAgIDxUeXBlPjA8L1R5cGU+CisgICAgICAgICAgICAgICAgPFN0YXJ0QWRkcmVzcz4weDA8L1N0YXJ0QWRkcmVzcz4KKyAgICAgICAgICAgICAgICA8U2l6ZT4weDA8L1NpemU+CisgICAgICAgICAgICAgIDwvT2NtND4KKyAgICAgICAgICAgICAgPE9jbTU+CisgICAgICAgICAgICAgICAgPFR5cGU+MDwvVHlwZT4KKyAgICAgICAgICAgICAgICA8U3RhcnRBZGRyZXNzPjB4MDwvU3RhcnRBZGRyZXNzPgorICAgICAgICAgICAgICAgIDxTaXplPjB4MDwvU2l6ZT4KKyAgICAgICAgICAgICAgPC9PY201PgorICAgICAgICAgICAgICA8T2NtNj4KKyAgICAgICAgICAgICAgICA8VHlwZT4wPC9UeXBlPgorICAgICAgICAgICAgICAgIDxTdGFydEFkZHJlc3M+MHgwPC9TdGFydEFkZHJlc3M+CisgICAgICAgICAgICAgICAgPFNpemU+MHgwPC9TaXplPgorICAgICAgICAgICAgICA8L09jbTY+CisgICAgICAgICAgICAgIDxJUkFNPgorICAgICAgICAgICAgICAgIDxUeXBlPjA8L1R5cGU+CisgICAgICAgICAgICAgICAgPFN0YXJ0QWRkcmVzcz4weDIwMDAwMDAwPC9TdGFydEFkZHJlc3M+CisgICAgICAgICAgICAgICAgPFNpemU+MHhjMDAwPC9TaXplPgorICAgICAgICAgICAgICA8L0lSQU0+CisgICAgICAgICAgICAgIDxJUk9NPgorICAgICAgICAgICAgICAgIDxUeXBlPjE8L1R5cGU+CisgICAgICAgICAgICAgICAgPFN0YXJ0QWRkcmVzcz4weDgwMDAwMDA8L1N0YXJ0QWRkcmVzcz4KKyAgICAgICAgICAgICAgICA8U2l6ZT4weDQwMDAwPC9TaXplPgorICAgICAgICAgICAgICA8L0lST00+CisgICAgICAgICAgICAgIDxYUkFNPgorICAgICAgICAgICAgICAgIDxUeXBlPjA8L1R5cGU+CisgICAgICAgICAgICAgICAgPFN0YXJ0QWRkcmVzcz4weDA8L1N0YXJ0QWRkcmVzcz4KKyAgICAgICAgICAgICAgICA8U2l6ZT4weDA8L1NpemU+CisgICAgICAgICAgICAgIDwvWFJBTT4KKyAgICAgICAgICAgICAgPE9DUl9SVkNUMT4KKyAgICAgICAgICAgICAgICA8VHlwZT4xPC9UeXBlPgorICAgICAgICAgICAgICAgIDxTdGFydEFkZHJlc3M+MHgwPC9TdGFydEFkZHJlc3M+CisgICAgICAgICAgICAgICAgPFNpemU+MHgwPC9TaXplPgorICAgICAgICAgICAgICA8L09DUl9SVkNUMT4KKyAgICAgICAgICAgICAgPE9DUl9SVkNUMj4KKyAgICAgICAgICAgICAgICA8VHlwZT4xPC9UeXBlPgorICAgICAgICAgICAgICAgIDxTdGFydEFkZHJlc3M+MHgwPC9TdGFydEFkZHJlc3M+CisgICAgICAgICAgICAgICAgPFNpemU+MHgwPC9TaXplPgorICAgICAgICAgICAgICA8L09DUl9SVkNUMj4KKyAgICAgICAgICAgICAgPE9DUl9SVkNUMz4KKyAgICAgICAgICAgICAgICA8VHlwZT4xPC9UeXBlPgorICAgICAgICAgICAgICAgIDxTdGFydEFkZHJlc3M+MHgwPC9TdGFydEFkZHJlc3M+CisgICAgICAgICAgICAgICAgPFNpemU+MHgwPC9TaXplPgorICAgICAgICAgICAgICA8L09DUl9SVkNUMz4KKyAgICAgICAgICAgICAgPE9DUl9SVkNUND4KKyAgICAgICAgICAgICAgICA8VHlwZT4xPC9UeXBlPgorICAgICAgICAgICAgICAgIDxTdGFydEFkZHJlc3M+MHg4MDA0MDAwPC9TdGFydEFkZHJlc3M+CisgICAgICAgICAgICAgICAgPFNpemU+MHgzYzAwMDwvU2l6ZT4KKyAgICAgICAgICAgICAgPC9PQ1JfUlZDVDQ+CisgICAgICAgICAgICAgIDxPQ1JfUlZDVDU+CisgICAgICAgICAgICAgICAgPFR5cGU+MTwvVHlwZT4KKyAgICAgICAgICAgICAgICA8U3RhcnRBZGRyZXNzPjB4MDwvU3RhcnRBZGRyZXNzPgorICAgICAgICAgICAgICAgIDxTaXplPjB4MDwvU2l6ZT4KKyAgICAgICAgICAgICAgPC9PQ1JfUlZDVDU+CisgICAgICAgICAgICAgIDxPQ1JfUlZDVDY+CisgICAgICAgICAgICAgICAgPFR5cGU+MDwvVHlwZT4KKyAgICAgICAgICAgICAgICA8U3RhcnRBZGRyZXNzPjB4MDwvU3RhcnRBZGRyZXNzPgorICAgICAgICAgICAgICAgIDxTaXplPjB4MDwvU2l6ZT4KKyAgICAgICAgICAgICAgPC9PQ1JfUlZDVDY+CisgICAgICAgICAgICAgIDxPQ1JfUlZDVDc+CisgICAgICAgICAgICAgICAgPFR5cGU+MDwvVHlwZT4KKyAgICAgICAgICAgICAgICA8U3RhcnRBZGRyZXNzPjB4MDwvU3RhcnRBZGRyZXNzPgorICAgICAgICAgICAgICAgIDxTaXplPjB4MDwvU2l6ZT4KKyAgICAgICAgICAgICAgPC9PQ1JfUlZDVDc+CisgICAgICAgICAgICAgIDxPQ1JfUlZDVDg+CisgICAgICAgICAgICAgICAgPFR5cGU+MDwvVHlwZT4KKyAgICAgICAgICAgICAgICA8U3RhcnRBZGRyZXNzPjB4MDwvU3RhcnRBZGRyZXNzPgorICAgICAgICAgICAgICAgIDxTaXplPjB4MDwvU2l6ZT4KKyAgICAgICAgICAgICAgPC9PQ1JfUlZDVDg+CisgICAgICAgICAgICAgIDxPQ1JfUlZDVDk+CisgICAgICAgICAgICAgICAgPFR5cGU+MDwvVHlwZT4KKyAgICAgICAgICAgICAgICA8U3RhcnRBZGRyZXNzPjB4MjAwMDAwMDA8L1N0YXJ0QWRkcmVzcz4KKyAgICAgICAgICAgICAgICA8U2l6ZT4weGMwMDA8L1NpemU+CisgICAgICAgICAgICAgIDwvT0NSX1JWQ1Q5PgorICAgICAgICAgICAgICA8T0NSX1JWQ1QxMD4KKyAgICAgICAgICAgICAgICA8VHlwZT4wPC9UeXBlPgorICAgICAgICAgICAgICAgIDxTdGFydEFkZHJlc3M+MHgwPC9TdGFydEFkZHJlc3M+CisgICAgICAgICAgICAgICAgPFNpemU+MHgwPC9TaXplPgorICAgICAgICAgICAgICA8L09DUl9SVkNUMTA+CisgICAgICAgICAgICA8L09uQ2hpcE1lbW9yaWVzPgorICAgICAgICAgICAgPFJ2Y3RTdGFydFZlY3Rvcj48L1J2Y3RTdGFydFZlY3Rvcj4KKyAgICAgICAgICA8L0FybUFkc01pc2M+CisgICAgICAgICAgPENhZHM+CisgICAgICAgICAgICA8aW50ZXJ3PjE8L2ludGVydz4KKyAgICAgICAgICAgIDxPcHRpbT4xPC9PcHRpbT4KKyAgICAgICAgICAgIDxvVGltZT4wPC9vVGltZT4KKyAgICAgICAgICAgIDxTcGxpdExTPjA8L1NwbGl0TFM+CisgICAgICAgICAgICA8T25lRWxmUz4xPC9PbmVFbGZTPgorICAgICAgICAgICAgPFN0cmljdD4wPC9TdHJpY3Q+CisgICAgICAgICAgICA8RW51bUludD4wPC9FbnVtSW50PgorICAgICAgICAgICAgPFBsYWluQ2g+MDwvUGxhaW5DaD4KKyAgICAgICAgICAgIDxSb3BpPjA8L1JvcGk+CisgICAgICAgICAgICA8UndwaT4wPC9Sd3BpPgorICAgICAgICAgICAgPHdMZXZlbD4wPC93TGV2ZWw+CisgICAgICAgICAgICA8dVRodW1iPjA8L3VUaHVtYj4KKyAgICAgICAgICAgIDxWYXJpb3VzQ29udHJvbHM+CisgICAgICAgICAgICAgIDxNaXNjQ29udHJvbHM+LS1jOTkgLS1kaWFnX3N1cHByZXNzPTE4ODwvTWlzY0NvbnRyb2xzPgorICAgICAgICAgICAgICA8RGVmaW5lPlNUTTMyRjEwWF9IRCxVU0VfU1REUEVSSVBIX0RSSVZFUixIV19WMDI8L0RlZmluZT4KKyAgICAgICAgICAgICAgPFVuZGVmaW5lPjwvVW5kZWZpbmU+CisgICAgICAgICAgICAgIDxJbmNsdWRlUGF0aD4uLlxzcmM7Li5cbGliOy4uXC4uXGljY19hcGR1X2xpYjsuLlwuLlxzdF9md19saWJcaW5jOy4uXC4uXHN0X2Z3X2xpYjsuLlwuLlxsY2Q7Llw7Li5cLi5cc3lzX2h3Oy4uXC4uXHprOy4uXC4uXGFwcF9kcnY7Li5cLi5cbGlicXI7Li5cLi5cbXNncGFjazs8L0luY2x1ZGVQYXRoPgorICAgICAgICAgICAgPC9WYXJpb3VzQ29udHJvbHM+CisgICAgICAgICAgPC9DYWRzPgorICAgICAgICAgIDxBYWRzPgorICAgICAgICAgICAgPGludGVydz4xPC9pbnRlcnc+CisgICAgICAgICAgICA8Um9waT4wPC9Sb3BpPgorICAgICAgICAgICAgPFJ3cGk+MDwvUndwaT4KKyAgICAgICAgICAgIDx0aHVtYj4wPC90aHVtYj4KKyAgICAgICAgICAgIDxTcGxpdExTPjA8L1NwbGl0TFM+CisgICAgICAgICAgICA8U3dTdGtDaGs+MDwvU3dTdGtDaGs+CisgICAgICAgICAgICA8Tm9XYXJuPjA8L05vV2Fybj4KKyAgICAgICAgICAgIDxWYXJpb3VzQ29udHJvbHM+CisgICAgICAgICAgICAgIDxNaXNjQ29udHJvbHM+PC9NaXNjQ29udHJvbHM+CisgICAgICAgICAgICAgIDxEZWZpbmU+PC9EZWZpbmU+CisgICAgICAgICAgICAgIDxVbmRlZmluZT48L1VuZGVmaW5lPgorICAgICAgICAgICAgICA8SW5jbHVkZVBhdGg+PC9JbmNsdWRlUGF0aD4KKyAgICAgICAgICAgIDwvVmFyaW91c0NvbnRyb2xzPgorICAgICAgICAgIDwvQWFkcz4KKyAgICAgICAgICA8TERhZHM+CisgICAgICAgICAgICA8dW1mVGFyZz4xPC91bWZUYXJnPgorICAgICAgICAgICAgPFJvcGk+MDwvUm9waT4KKyAgICAgICAgICAgIDxSd3BpPjA8L1J3cGk+CisgICAgICAgICAgICA8bm9TdExpYj4wPC9ub1N0TGliPgorICAgICAgICAgICAgPFJlcEZhaWw+MTwvUmVwRmFpbD4KKyAgICAgICAgICAgIDx1c2VGaWxlPjA8L3VzZUZpbGU+CisgICAgICAgICAgICA8VGV4dEFkZHJlc3NSYW5nZT4weDA4MDAwMDAwPC9UZXh0QWRkcmVzc1JhbmdlPgorICAgICAgICAgICAgPERhdGFBZGRyZXNzUmFuZ2U+MHgyMDAwMDAwMDwvRGF0YUFkZHJlc3NSYW5nZT4KKyAgICAgICAgICAgIDxTY2F0dGVyRmlsZT48L1NjYXR0ZXJGaWxlPgorICAgICAgICAgICAgPEluY2x1ZGVMaWJzPjwvSW5jbHVkZUxpYnM+CisgICAgICAgICAgICA8SW5jbHVkZUxpYnNQYXRoPjwvSW5jbHVkZUxpYnNQYXRoPgorICAgICAgICAgICAgPE1pc2M+PC9NaXNjPgorICAgICAgICAgICAgPExpbmtlcklucHV0RmlsZT48L0xpbmtlcklucHV0RmlsZT4KKyAgICAgICAgICAgIDxEaXNhYmxlZFdhcm5pbmdzPjwvRGlzYWJsZWRXYXJuaW5ncz4KKyAgICAgICAgICA8L0xEYWRzPgorICAgICAgICA8L1RhcmdldEFybUFkcz4KKyAgICAgIDwvVGFyZ2V0T3B0aW9uPgorICAgICAgPEdyb3Vwcz4KKyAgICAgICAgPEdyb3VwPgorICAgICAgICAgIDxHcm91cE5hbWU+bGNkPC9Hcm91cE5hbWU+CisgICAgICAgICAgPEZpbGVzPgorICAgICAgICAgICAgPEZpbGU+CisgICAgICAgICAgICAgIDxGaWxlTmFtZT5nbGNkLmM8L0ZpbGVOYW1lPgorICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlwuLlxsY2RcZ2xjZC5jPC9GaWxlUGF0aD4KKyAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICAgIDxGaWxlPgorICAgICAgICAgICAgICA8RmlsZU5hbWU+Z3JhcGhpY3MuYzwvRmlsZU5hbWU+CisgICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXC4uXGxjZFxncmFwaGljcy5jPC9GaWxlUGF0aD4KKyAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICAgIDxGaWxlPgorICAgICAgICAgICAgICA8RmlsZU5hbWU+Z3JhcGhzLmM8L0ZpbGVOYW1lPgorICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlwuLlxsY2RcZ3JhcGhzLmM8L0ZpbGVQYXRoPgorICAgICAgICAgICAgPC9GaWxlPgorICAgICAgICAgICAgPEZpbGU+CisgICAgICAgICAgICAgIDxGaWxlTmFtZT50ZXh0LmM8L0ZpbGVOYW1lPgorICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlwuLlxsY2RcdGV4dC5jPC9GaWxlUGF0aD4KKyAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICAgIDxGaWxlPgorICAgICAgICAgICAgICA8RmlsZU5hbWU+dGV4dF90aW55LmM8L0ZpbGVOYW1lPgorICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlwuLlxsY2RcdGV4dF90aW55LmM8L0ZpbGVQYXRoPgorICAgICAgICAgICAgPC9GaWxlPgorICAgICAgICAgICAgPEZpbGU+CisgICAgICAgICAgICAgIDxGaWxlTmFtZT51bml0X3Rlc3RzLmM8L0ZpbGVOYW1lPgorICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlwuLlxsY2RcdW5pdF90ZXN0cy5jPC9GaWxlUGF0aD4KKyAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICAgIDxGaWxlPgorICAgICAgICAgICAgICA8RmlsZU5hbWU+Z2xjZF9zcGkuYzwvRmlsZU5hbWU+CisgICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXC4uXGxjZFxnbGNkX3NwaS5jPC9GaWxlUGF0aD4KKyAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICAgIDxGaWxlPgorICAgICAgICAgICAgICA8RmlsZU5hbWU+U1Q3NTY1Ui5jPC9GaWxlTmFtZT4KKyAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5cLi5cbGNkXFNUNzU2NVIuYzwvRmlsZVBhdGg+CisgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgICA8RmlsZT4KKyAgICAgICAgICAgICAgPEZpbGVOYW1lPnNwaS5jPC9GaWxlTmFtZT4KKyAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5cLi5cbGNkXHNwaS5jPC9GaWxlUGF0aD4KKyAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICA8L0ZpbGVzPgorICAgICAgICA8L0dyb3VwPgorICAgICAgICA8R3JvdXA+CisgICAgICAgICAgPEdyb3VwTmFtZT5pY2NfYXBkdV9saWI8L0dyb3VwTmFtZT4KKyAgICAgICAgICA8RmlsZXM+CisgICAgICAgICAgICA8RmlsZT4KKyAgICAgICAgICAgICAgPEZpbGVOYW1lPmRlcy5jPC9GaWxlTmFtZT4KKyAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5cLi5caWNjX2FwZHVfbGliXGRlcy5jPC9GaWxlUGF0aD4KKyAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICA8L0ZpbGVzPgorICAgICAgICA8L0dyb3VwPgorICAgICAgICA8R3JvdXA+CisgICAgICAgICAgPEdyb3VwTmFtZT5zdzwvR3JvdXBOYW1lPgorICAgICAgICAgIDxGaWxlcz4KKyAgICAgICAgICAgIDxGaWxlPgorICAgICAgICAgICAgICA8RmlsZU5hbWU+bmVjX2FwZHUuYzwvRmlsZU5hbWU+CisgICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXHNyY1xuZWNfYXBkdS5jPC9GaWxlUGF0aD4KKyAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICAgIDxGaWxlPgorICAgICAgICAgICAgICA8RmlsZU5hbWU+bmVjX2hhcmR3YXJlLmM8L0ZpbGVOYW1lPgorICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlxzcmNcbmVjX2hhcmR3YXJlLmM8L0ZpbGVQYXRoPgorICAgICAgICAgICAgPC9GaWxlPgorICAgICAgICAgICAgPEZpbGU+CisgICAgICAgICAgICAgIDxGaWxlTmFtZT5zdG0zMmYxMHhfaXQuYzwvRmlsZU5hbWU+CisgICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXHNyY1xzdG0zMmYxMHhfaXQuYzwvRmlsZVBhdGg+CisgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgICA8RmlsZT4KKyAgICAgICAgICAgICAgPEZpbGVOYW1lPm1haW4uYzwvRmlsZU5hbWU+CisgICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXC4uXHN1cHdpc2RvbVxtYWluLmM8L0ZpbGVQYXRoPgorICAgICAgICAgICAgPC9GaWxlPgorICAgICAgICAgICAgPEZpbGU+CisgICAgICAgICAgICAgIDxGaWxlTmFtZT5zcF9jYXJkLmM8L0ZpbGVOYW1lPgorICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlwuLlxzdXB3aXNkb21cc3BfY2FyZC5jPC9GaWxlUGF0aD4KKyAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICAgIDxGaWxlPgorICAgICAgICAgICAgICA8RmlsZU5hbWU+c3BfY29tbXVuaWNhdGUuYzwvRmlsZU5hbWU+CisgICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXC4uXHN1cHdpc2RvbVxzcF9jb21tdW5pY2F0ZS5jPC9GaWxlUGF0aD4KKyAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICAgIDxGaWxlPgorICAgICAgICAgICAgICA8RmlsZU5hbWU+c3BfY29uc3VtZS5jPC9GaWxlTmFtZT4KKyAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5cLi5cc3Vwd2lzZG9tXHNwX2NvbnN1bWUuYzwvRmlsZVBhdGg+CisgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgICA8RmlsZT4KKyAgICAgICAgICAgICAgPEZpbGVOYW1lPnNwX2RhdGEuYzwvRmlsZU5hbWU+CisgICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXC4uXHN1cHdpc2RvbVxzcF9kYXRhLmM8L0ZpbGVQYXRoPgorICAgICAgICAgICAgPC9GaWxlPgorICAgICAgICAgICAgPEZpbGU+CisgICAgICAgICAgICAgIDxGaWxlTmFtZT5zcF9kZXMuYzwvRmlsZU5hbWU+CisgICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXC4uXHN1cHdpc2RvbVxzcF9kZXMuYzwvRmlsZVBhdGg+CisgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgICA8RmlsZT4KKyAgICAgICAgICAgICAgPEZpbGVOYW1lPnNwX2Rpc3BsYXkuYzwvRmlsZU5hbWU+CisgICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXC4uXHN1cHdpc2RvbVxzcF9kaXNwbGF5LmM8L0ZpbGVQYXRoPgorICAgICAgICAgICAgPC9GaWxlPgorICAgICAgICAgICAgPEZpbGU+CisgICAgICAgICAgICAgIDxGaWxlTmFtZT5zcF9mbGFzaC5jPC9GaWxlTmFtZT4KKyAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5cLi5cc3Vwd2lzZG9tXHNwX2ZsYXNoLmM8L0ZpbGVQYXRoPgorICAgICAgICAgICAgPC9GaWxlPgorICAgICAgICAgICAgPEZpbGU+CisgICAgICAgICAgICAgIDxGaWxlTmFtZT5zcF9tZW51LmM8L0ZpbGVOYW1lPgorICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlwuLlxzdXB3aXNkb21cc3BfbWVudS5jPC9GaWxlUGF0aD4KKyAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICAgIDxGaWxlPgorICAgICAgICAgICAgICA8RmlsZU5hbWU+c3BfbXNncGFjay5jPC9GaWxlTmFtZT4KKyAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5cLi5cc3Vwd2lzZG9tXHNwX21zZ3BhY2suYzwvRmlsZVBhdGg+CisgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgICA8RmlsZT4KKyAgICAgICAgICAgICAgPEZpbGVOYW1lPnNwX3V0aWwuYzwvRmlsZU5hbWU+CisgICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXC4uXHN1cHdpc2RvbVxzcF91dGlsLmM8L0ZpbGVQYXRoPgorICAgICAgICAgICAgPC9GaWxlPgorICAgICAgICAgICAgPEZpbGU+CisgICAgICAgICAgICAgIDxGaWxlTmFtZT5zcF91cGdyYWRlLmM8L0ZpbGVOYW1lPgorICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlwuLlxzdXB3aXNkb21cc3BfdXBncmFkZS5jPC9GaWxlUGF0aD4KKyAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICA8L0ZpbGVzPgorICAgICAgICA8L0dyb3VwPgorICAgICAgICA8R3JvdXA+CisgICAgICAgICAgPEdyb3VwTmFtZT5saWI8L0dyb3VwTmFtZT4KKyAgICAgICAgICA8RmlsZXM+CisgICAgICAgICAgICA8RmlsZT4KKyAgICAgICAgICAgICAgPEZpbGVOYW1lPkc0MDFfZHJ2X2h3X1YwNC5saWI8L0ZpbGVOYW1lPgorICAgICAgICAgICAgICA8RmlsZVR5cGU+NDwvRmlsZVR5cGU+CisgICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlxsaWJcRzQwMV9kcnZfaHdfVjA0LmxpYjwvRmlsZVBhdGg+CisgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgICA8RmlsZT4KKyAgICAgICAgICAgICAgPEZpbGVOYW1lPmc0MDFfdWFydDVfdjAwMS5saWI8L0ZpbGVOYW1lPgorICAgICAgICAgICAgICA8RmlsZVR5cGU+NDwvRmlsZVR5cGU+CisgICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlxsaWJcZzQwMV91YXJ0NV92MDAxLmxpYjwvRmlsZVBhdGg+CisgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgPC9GaWxlcz4KKyAgICAgICAgPC9Hcm91cD4KKyAgICAgICAgPEdyb3VwPgorICAgICAgICAgIDxHcm91cE5hbWU+c3RfZndfbGliPC9Hcm91cE5hbWU+CisgICAgICAgICAgPEZpbGVzPgorICAgICAgICAgICAgPEZpbGU+CisgICAgICAgICAgICAgIDxGaWxlTmFtZT5jb3JlX2NtMy5jPC9GaWxlTmFtZT4KKyAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5cLi5cc3RfZndfbGliXHNyY1xjb3JlX2NtMy5jPC9GaWxlUGF0aD4KKyAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICAgIDxGaWxlPgorICAgICAgICAgICAgICA8RmlsZU5hbWU+bWlzYy5jPC9GaWxlTmFtZT4KKyAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5cLi5cc3RfZndfbGliXHNyY1xtaXNjLmM8L0ZpbGVQYXRoPgorICAgICAgICAgICAgPC9GaWxlPgorICAgICAgICAgICAgPEZpbGU+CisgICAgICAgICAgICAgIDxGaWxlTmFtZT5zdG0zMmYxMHhfYWRjLmM8L0ZpbGVOYW1lPgorICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlwuLlxzdF9md19saWJcc3JjXHN0bTMyZjEweF9hZGMuYzwvRmlsZVBhdGg+CisgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgICA8RmlsZT4KKyAgICAgICAgICAgICAgPEZpbGVOYW1lPnN0bTMyZjEweF9ia3AuYzwvRmlsZU5hbWU+CisgICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXC4uXHN0X2Z3X2xpYlxzcmNcc3RtMzJmMTB4X2JrcC5jPC9GaWxlUGF0aD4KKyAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICAgIDxGaWxlPgorICAgICAgICAgICAgICA8RmlsZU5hbWU+c3RtMzJmMTB4X2Nhbi5jPC9GaWxlTmFtZT4KKyAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5cLi5cc3RfZndfbGliXHNyY1xzdG0zMmYxMHhfY2FuLmM8L0ZpbGVQYXRoPgorICAgICAgICAgICAgPC9GaWxlPgorICAgICAgICAgICAgPEZpbGU+CisgICAgICAgICAgICAgIDxGaWxlTmFtZT5zdG0zMmYxMHhfY2VjLmM8L0ZpbGVOYW1lPgorICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlwuLlxzdF9md19saWJcc3JjXHN0bTMyZjEweF9jZWMuYzwvRmlsZVBhdGg+CisgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgICA8RmlsZT4KKyAgICAgICAgICAgICAgPEZpbGVOYW1lPnN0bTMyZjEweF9jcmMuYzwvRmlsZU5hbWU+CisgICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXC4uXHN0X2Z3X2xpYlxzcmNcc3RtMzJmMTB4X2NyYy5jPC9GaWxlUGF0aD4KKyAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICAgIDxGaWxlPgorICAgICAgICAgICAgICA8RmlsZU5hbWU+c3RtMzJmMTB4X2RhYy5jPC9GaWxlTmFtZT4KKyAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5cLi5cc3RfZndfbGliXHNyY1xzdG0zMmYxMHhfZGFjLmM8L0ZpbGVQYXRoPgorICAgICAgICAgICAgPC9GaWxlPgorICAgICAgICAgICAgPEZpbGU+CisgICAgICAgICAgICAgIDxGaWxlTmFtZT5zdG0zMmYxMHhfZGJnbWN1LmM8L0ZpbGVOYW1lPgorICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlwuLlxzdF9md19saWJcc3JjXHN0bTMyZjEweF9kYmdtY3UuYzwvRmlsZVBhdGg+CisgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgICA8RmlsZT4KKyAgICAgICAgICAgICAgPEZpbGVOYW1lPnN0bTMyZjEweF9kbWEuYzwvRmlsZU5hbWU+CisgICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXC4uXHN0X2Z3X2xpYlxzcmNcc3RtMzJmMTB4X2RtYS5jPC9GaWxlUGF0aD4KKyAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICAgIDxGaWxlPgorICAgICAgICAgICAgICA8RmlsZU5hbWU+c3RtMzJmMTB4X2V4dGkuYzwvRmlsZU5hbWU+CisgICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXC4uXHN0X2Z3X2xpYlxzcmNcc3RtMzJmMTB4X2V4dGkuYzwvRmlsZVBhdGg+CisgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgICA8RmlsZT4KKyAgICAgICAgICAgICAgPEZpbGVOYW1lPnN0bTMyZjEweF9mbGFzaC5jPC9GaWxlTmFtZT4KKyAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5cLi5cc3RfZndfbGliXHNyY1xzdG0zMmYxMHhfZmxhc2guYzwvRmlsZVBhdGg+CisgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgICA8RmlsZT4KKyAgICAgICAgICAgICAgPEZpbGVOYW1lPnN0bTMyZjEweF9mc21jLmM8L0ZpbGVOYW1lPgorICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlwuLlxzdF9md19saWJcc3JjXHN0bTMyZjEweF9mc21jLmM8L0ZpbGVQYXRoPgorICAgICAgICAgICAgPC9GaWxlPgorICAgICAgICAgICAgPEZpbGU+CisgICAgICAgICAgICAgIDxGaWxlTmFtZT5zdG0zMmYxMHhfZ3Bpby5jPC9GaWxlTmFtZT4KKyAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5cLi5cc3RfZndfbGliXHNyY1xzdG0zMmYxMHhfZ3Bpby5jPC9GaWxlUGF0aD4KKyAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICAgIDxGaWxlPgorICAgICAgICAgICAgICA8RmlsZU5hbWU+c3RtMzJmMTB4X2kyYy5jPC9GaWxlTmFtZT4KKyAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5cLi5cc3RfZndfbGliXHNyY1xzdG0zMmYxMHhfaTJjLmM8L0ZpbGVQYXRoPgorICAgICAgICAgICAgPC9GaWxlPgorICAgICAgICAgICAgPEZpbGU+CisgICAgICAgICAgICAgIDxGaWxlTmFtZT5zdG0zMmYxMHhfcHdyLmM8L0ZpbGVOYW1lPgorICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlwuLlxzdF9md19saWJcc3JjXHN0bTMyZjEweF9wd3IuYzwvRmlsZVBhdGg+CisgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgICA8RmlsZT4KKyAgICAgICAgICAgICAgPEZpbGVOYW1lPnN0bTMyZjEweF9pd2RnLmM8L0ZpbGVOYW1lPgorICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlwuLlxzdF9md19saWJcc3JjXHN0bTMyZjEweF9pd2RnLmM8L0ZpbGVQYXRoPgorICAgICAgICAgICAgPC9GaWxlPgorICAgICAgICAgICAgPEZpbGU+CisgICAgICAgICAgICAgIDxGaWxlTmFtZT5zdG0zMmYxMHhfcmNjLmM8L0ZpbGVOYW1lPgorICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlwuLlxzdF9md19saWJcc3JjXHN0bTMyZjEweF9yY2MuYzwvRmlsZVBhdGg+CisgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgICA8RmlsZT4KKyAgICAgICAgICAgICAgPEZpbGVOYW1lPnN0bTMyZjEweF9ydGMuYzwvRmlsZU5hbWU+CisgICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXC4uXHN0X2Z3X2xpYlxzcmNcc3RtMzJmMTB4X3J0Yy5jPC9GaWxlUGF0aD4KKyAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICAgIDxGaWxlPgorICAgICAgICAgICAgICA8RmlsZU5hbWU+c3RtMzJmMTB4X3NkaW8uYzwvRmlsZU5hbWU+CisgICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXC4uXHN0X2Z3X2xpYlxzcmNcc3RtMzJmMTB4X3NkaW8uYzwvRmlsZVBhdGg+CisgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgICA8RmlsZT4KKyAgICAgICAgICAgICAgPEZpbGVOYW1lPnN0bTMyZjEweF9zcGkuYzwvRmlsZU5hbWU+CisgICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXC4uXHN0X2Z3X2xpYlxzcmNcc3RtMzJmMTB4X3NwaS5jPC9GaWxlUGF0aD4KKyAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICAgIDxGaWxlPgorICAgICAgICAgICAgICA8RmlsZU5hbWU+c3RtMzJmMTB4X3RpbS5jPC9GaWxlTmFtZT4KKyAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5cLi5cc3RfZndfbGliXHNyY1xzdG0zMmYxMHhfdGltLmM8L0ZpbGVQYXRoPgorICAgICAgICAgICAgPC9GaWxlPgorICAgICAgICAgICAgPEZpbGU+CisgICAgICAgICAgICAgIDxGaWxlTmFtZT5zdG0zMmYxMHhfdXNhcnQuYzwvRmlsZU5hbWU+CisgICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXC4uXHN0X2Z3X2xpYlxzcmNcc3RtMzJmMTB4X3VzYXJ0LmM8L0ZpbGVQYXRoPgorICAgICAgICAgICAgPC9GaWxlPgorICAgICAgICAgICAgPEZpbGU+CisgICAgICAgICAgICAgIDxGaWxlTmFtZT5zdG0zMmYxMHhfd3dkZy5jPC9GaWxlTmFtZT4KKyAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5cLi5cc3RfZndfbGliXHNyY1xzdG0zMmYxMHhfd3dkZy5jPC9GaWxlUGF0aD4KKyAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICAgIDxGaWxlPgorICAgICAgICAgICAgICA8RmlsZU5hbWU+c3lzdGVtX3N0bTMyZjEweC5jPC9GaWxlTmFtZT4KKyAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5cLi5cc3RfZndfbGliXHN5c3RlbV9zdG0zMmYxMHguYzwvRmlsZVBhdGg+CisgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgICA8RmlsZT4KKyAgICAgICAgICAgICAgPEZpbGVOYW1lPnN0YXJ0dXBfc3RtMzJmMTB4X2hkLnM8L0ZpbGVOYW1lPgorICAgICAgICAgICAgICA8RmlsZVR5cGU+MjwvRmlsZVR5cGU+CisgICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlwuLlxzdF9md19saWJcc3RhcnR1cF9zdG0zMmYxMHhfaGQuczwvRmlsZVBhdGg+CisgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgPC9GaWxlcz4KKyAgICAgICAgPC9Hcm91cD4KKyAgICAgICAgPEdyb3VwPgorICAgICAgICAgIDxHcm91cE5hbWU+c3lzX2h3PC9Hcm91cE5hbWU+CisgICAgICAgICAgPEZpbGVzPgorICAgICAgICAgICAgPEZpbGU+CisgICAgICAgICAgICAgIDxGaWxlTmFtZT5rZXlwYWQuYzwvRmlsZU5hbWU+CisgICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXC4uXHN5c19od1xrZXlwYWQuYzwvRmlsZVBhdGg+CisgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgICA8RmlsZT4KKyAgICAgICAgICAgICAgPEZpbGVOYW1lPmRydl9hZGMuYzwvRmlsZU5hbWU+CisgICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXC4uXHN5c19od1xkcnZfYWRjLmM8L0ZpbGVQYXRoPgorICAgICAgICAgICAgPC9GaWxlPgorICAgICAgICAgIDwvRmlsZXM+CisgICAgICAgIDwvR3JvdXA+CisgICAgICAgIDxHcm91cD4KKyAgICAgICAgICA8R3JvdXBOYW1lPnprPC9Hcm91cE5hbWU+CisgICAgICAgICAgPEZpbGVzPgorICAgICAgICAgICAgPEZpbGU+CisgICAgICAgICAgICAgIDxGaWxlTmFtZT5nYjIzMTJfMTYuYzwvRmlsZU5hbWU+CisgICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXC4uXHprXGdiMjMxMl8xNi5jPC9GaWxlUGF0aD4KKyAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICA8L0ZpbGVzPgorICAgICAgICA8L0dyb3VwPgorICAgICAgICA8R3JvdXA+CisgICAgICAgICAgPEdyb3VwTmFtZT5saWJxcjwvR3JvdXBOYW1lPgorICAgICAgICAgIDxGaWxlcz4KKyAgICAgICAgICAgIDxGaWxlPgorICAgICAgICAgICAgICA8RmlsZU5hbWU+cXJlbmNvZGUuYzwvRmlsZU5hbWU+CisgICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXC4uXGxpYnFyXHFyZW5jb2RlLmM8L0ZpbGVQYXRoPgorICAgICAgICAgICAgPC9GaWxlPgorICAgICAgICAgIDwvRmlsZXM+CisgICAgICAgIDwvR3JvdXA+CisgICAgICAgIDxHcm91cD4KKyAgICAgICAgICA8R3JvdXBOYW1lPm1zZ3BhY2s8L0dyb3VwTmFtZT4KKyAgICAgICAgICA8RmlsZXM+CisgICAgICAgICAgICA8RmlsZT4KKyAgICAgICAgICAgICAgPEZpbGVOYW1lPmN3cGFjay5jPC9GaWxlTmFtZT4KKyAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5cLi5cbXNncGFja1xjd3BhY2suYzwvRmlsZVBhdGg+CisgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgPC9GaWxlcz4KKyAgICAgICAgPC9Hcm91cD4KKyAgICAgIDwvR3JvdXBzPgorICAgIDwvVGFyZ2V0PgorICA8L1RhcmdldHM+CisKKzwvUHJvamVjdD4KZGlmZiAtLWdpdCBhL2c0MDEzMDIvcHJvamVjdC9naXR2ZXIuYmF0IGIvZzQwMTMwMi9wcm9qZWN0L2dpdHZlci5iYXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTk2YzNjZQotLS0gL2Rldi9udWxsCisrKyBiL2c0MDEzMDIvcHJvamVjdC9naXR2ZXIuYmF0CkBAIC0wLDAgKzEsMTAgQEAKK0BlY2hvIG9mZgorU0VUIExJTkUxPSNpZm5kZWYgR0lUX1ZFUlNJT04KK1NFVCBMSU5FMj0jZGVmaW5lIEdJVF9WRVJTSU9OCitTRVQgTElORTM9I2VuZGlmCisKK0ZPUiAvRiAlJUkgSU4gKCdnaXQgZGVzY3JpYmUgLS1kaXJ0eSAtLWFsd2F5cyAtLXRhZ3MgLS1hYmJyZXY9NCcpIERPIFNFVCBWRVJTVFI9JSVJCisKK2VjaG8gJUxJTkUxJSAgPiAuLi8uLi9zdXB3aXNkb20vc3BfdmVyc2lvbi5oIAorZWNobyAlTElORTIlIF4iJVZFUlNUUiVeIiA+PiAuLi8uLi9zdXB3aXNkb20vc3BfdmVyc2lvbi5oIAorZWNobyAlTElORTMlID4+IC4uLy4uL3N1cHdpc2RvbS9zcF92ZXJzaW9uLmggClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZzQwMTMwMi9wcm9qZWN0L21lcmdlLmluaSBiL2c0MDEzMDIvcHJvamVjdC9tZXJnZS5pbmkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGVmZDlkMAotLS0gL2Rldi9udWxsCisrKyBiL2c0MDEzMDIvcHJvamVjdC9tZXJnZS5pbmkKQEAgLTAsMCArMSwxNiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIEZMQVNILklOSTogRkxBU0ggSW5pdGlhbGl6YXRpb24gRmlsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLy8gPDw8IFVzZSBDb25maWd1cmF0aW9uIFdpemFyZCBpbiBDb250ZXh0IE1lbnUgPj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHVWaXNpb24vQVJNIGRldmVsb3BtZW50IHRvb2xzLiAgICAgICAgICAgICAgICAgICAgKi8KKy8qIENvcHlyaWdodCAoYykgMjAwNS0yMDA2IEtlaWwgU29mdHdhcmUuIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgICAgICAgICAgICAgICovCisvKiBUaGlzIHNvZnR3YXJlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIGEgdmFsaWQsIGN1cnJlbnQsICAgICAgICAqLworLyogZW5kIHVzZXIgbGljZW5jZSBmcm9tIEtFSUwgZm9yIGEgY29tcGF0aWJsZSB2ZXJzaW9uIG9mIEtFSUwgc29mdHdhcmUgICAgICAgKi8KKy8qIGRldmVsb3BtZW50IHRvb2xzLiBOb3RoaW5nIGVsc2UgZ2l2ZXMgeW91IHRoZSByaWdodCB0byB1c2UgdGhpcyBzb2Z0d2FyZS4gICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworTE9BRCAuLlxoZXhcU1RNMzJJQVBDb21iaW5lNTEuaGV4ICAvLyBEb3dubG9hZCAgCitzYXZlIC4uXGhleFxHNDAxMzAyX2NvbWJpbmUuaGV4IDB4MDgwMDAwMDAsMHgwODAzRkZGRiAKKy8vZyxtYWluCisKKwpkaWZmIC0tZ2l0IGEvZzQwMTMwMi9zcmMvRzQwMV9kcnZfaHdfVjAxLmggYi9nNDAxMzAyL3NyYy9HNDAxX2Rydl9od19WMDEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYTYzNTkwCi0tLSAvZGV2L251bGwKKysrIGIvZzQwMTMwMi9zcmMvRzQwMV9kcnZfaHdfVjAxLmgKQEAgLTAsMCArMSw2MjMgQEAKKworI2lmbmRlZiAgIF9fRzQwMV9IV0RSVl9MSUJfSF9fCisjZGVmaW5lICAgX19HNDAxX0hXRFJWX0xJQl9IX18KKworI2luY2x1ZGUgInN0ZGludC5oIgorI2luY2x1ZGUgInN0bTMyZjEweC5oIgorI2luY2x1ZGUgImRydl91c2FydC5oIgorCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLyoKKwmz9cq8u6/Ksbv5tqjKscb3KDFtcykKKyovCitleHRlcm4gIHUzMiBTeXNUaWNrX2NmZyh2b2lkKTsKKy8qCisJx/22r8q508NTWVNUSUNLsvrJ+sqxu/mjrLKixeTWw1NZU1RJQ0vOqjFtc9Lns/bW0LbPo6zTptPDsuPQ6M3qCisJs8lTWVNUSUNL1tC2z7f+zvG6r8r9U3lzVGlja19IYW5kbGVyo6yyorX308NUaW1lclRpY2u6r8r9o6wKKwnN6rPJz9TKvsmow+ihos2o0bbL+dDotqjKsbXIstnX9worKi8KK2V4dGVybiAgdm9pZCBUaW1lclRpY2sodm9pZCk7CisJICAgCisKKy8qCisJu/HIocf9tq+y486su6S1xDMyzrttc7y2tc608LWxx7DWtaOsuMPWtcO/bXO4/NDCMbTOo6zDv7TOvNMxCisqLworZXh0ZXJuICB1MzIgdGltZXJfZ2V0X3RpY2tlcih2b2lkKTsKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8qCisJuabE3DogvMbL49a4tqizpLbIyv2+3cH3tcRjcmPQo9Hp1rUKKwnK5MjrOiBwQnVmZmVyo6zK/b7dwffWuNXrIEJ1ZmZlckxlbmd0aDogyv2+3cH319a92rOktsgKKwnK5LP2OiBjcmMxNgorKi8KK2V4dGVybiAgdTE2IGNhbGNDUkMoIHU4ICpwQnVmZmVyLCB1MTYgQnVmZmVyTGVuZ3RoKTsKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvL1JUQ8f9tq/P4LnYCisvL8qxvOS94bm5zOUKK3R5cGVkZWYgc3RydWN0Cit7CisJdWludDhfdAkJCXllYXI7CQkJCQkJLy/E6gkKKwl1aW50OF90CQkJbW9udGg7CQkJCQkJLy/UwgorCXVpbnQ4X3QJCQlkYXk7CQkJCQkJLy/I1QorCXVpbnQ4X3QgCQl3ZWVrOyAgICAJCQkJCS8v0MfG2gorCXVpbnQ4X3QgCQlob3VyOwkJCQkJCS8vyrEKKwl1aW50OF90IAkJbWludXRlOwkJCQkJCS8vt9YKKwl1aW50OF90IAkJc2Vjb25kOwkJCQkJCS8vw+sKK31fU3lzdGVtVGltZSA7CisvKgorCVJUQ7P1yry7rworKi8KK2V4dGVybiB2b2lkIHJ0Y19pbml0KHZvaWQpOworLyoKKwm78cihz7XNs8jVxtoKKyovCitleHRlcm4gdWludDhfdCAgcnRjX2dldF90aW1lKF9TeXN0ZW1UaW1lKiB0KTsKKworLyoKKwnJ6NbDz7XNs8jVxtoKKyovCitleHRlcm4gdWludDhfdCAgcnRjX3NldF90aW1lKF9TeXN0ZW1UaW1lKiB0KTsKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vRUVQUk9Nz+C52AorCisvLy8vI2RlZmluZSBFMlBST01fU0laRSAgICAoNjQqMTAyNC84VUwpCisvKgorCcq5xNxFMlBST03QtLGju6QKKyovCitleHRlcm4gdm9pZCBlMnByb21fbG9jayh2b2lkKTsJCisvKgorCcqnxNxFMlBST03QtLGju6QKKyovIAorZXh0ZXJuIHZvaWQgZTJwcm9tX3VubG9jayh2b2lkKTsKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyq5psTcOkkyQ9fcz9+z9cq8u68s1vezzNDyytfPyLX308O4w7PM0PIKKyqyzsr9OnRpbWVfZmFjdG9yINHTyrHPtcr9LNK7sOO0qzCjrMq508PErMjPtcS+zdDQCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitleHRlcm4gdm9pZCBlMnByb21faW5pdCh1MzIgdGltZV9mYWN0b3IpOworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiu5psTco7q009a4tqi12Na3v6rKvLbByKHWuLaos6S2yLXEyv2+3Qorss7K/aO6CisJKmRlc3RfYnVmZiAtILTmt8W2wbP2yv2+3bXE1rjV6worCSBhZGRyIC0gv6rKvLXY1rcKKwkgbGVuICAtINKqtsGz9rXEs6S2yAort7W72Na1o7oKKwkwIC0gs8m5pgorCTEgLSDKp7DcCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitleHRlcm4gdTggZTJwcm9tX3JlYWQodTggKmRlc3RfYnVmZiwgdTE2IGFkZHIsIHUxNiBsZW4pOworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiu5psTco7rQtEVFUFJPTaGjz/LWuLaotdjWt7+qyrzQtMjr1ri2qLOktsi1xMr9vt2howorss7K/aO6CisJKnNyY19idWZmIC0gtOa3xdC0yOvK/b7dtcTWuNXrCisJYWRkciAtIL+qyry12Na3CisJbGVuIC0g0qrQtMjrtcSzpLbICiu3tbvY1rWjugorCTAgLSCzybmmCisJMSAtIMqnsNwKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK2V4dGVybiB1OCBlMnByb21fd3JpdGUodTggKnNyY19idWZmLCB1MTYgYWRkciwgdTE2IGxlbik7CisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvL0FEQ8/gudgKKy8qCisJQURDs/XKvLuvCisqLworLy9leHRlcm4gdm9pZCBhZGNfaW5pdCh2b2lkKTsKKy8qCisJ06bTw7Lj0OjN6rPJU1lTVElDS9bQts+3/s7xuq/K/URNQTFfQ2hhbm5lbDFfSVJRSGFuZGxlcqOssqK199PDRE1BMV9DaGFubmVsMV9yZWFkuq/K/QorKi8KK2V4dGVybiB2b2lkIERNQTFfQ2hhbm5lbDFfcmVhZCh2b2lkKTsKKy8qCisJsrvQ6NKqzOG5qQorKi8KKy8vZXh0ZXJuIHVpbnQxNl90IGFkY19nZXRfdmFsKHVpbnQ4X3QgY2gpOworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy+3p8PFx/22r8/gudgKKyNkZWZpbmUgdmFsdmVfc3RhdGVfb24gICAxCisjZGVmaW5lIHZhbHZlX3N0YXRlX29mZiAgMAorCisvKgorCbP1yry7r7enw8XH/bavSU8KKyovCitleHRlcm4gdm9pZCB2YWx2ZV9pbml0KHZvaWQpOworCisvKgorCcno1sO3p8PF17TMrAorCXN0YXRlOiB2YWx2ZV9zdGF0ZV9vbiC78iB2YWx2ZV9zdGF0ZV9vZmYJCisqLworZXh0ZXJuIHZvaWQgdmFsdmVfc3RhX3NldCh1aW50OF90IHN0YSk7CisKKy8qCisJu/HIobenw8XXtMysCisJt7W72Na1OiB2YWx2ZV9zdGF0ZV9vbiC78iB2YWx2ZV9zdGF0ZV9vZmYJCisqLworZXh0ZXJuIHVpbnQ4X3QgdmFsdmVfc3RhX2dldCh2b2lkKTsKKworLyoKKwm3p8PFv9jWxsLfvK2jrNDotqjG2rX308PS0cf9tq+3p8PFv9jWxte0zKy7+qOsvajS6QorCdTa1vfRrbu31tC199PDCisqLworZXh0ZXJuIHZvaWQgdmFsdmVfY3RybCh2b2lkKTsKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vwffBv7zGz+C52AorLyoKKwnB98G/vMaz9cq8u68KKyovCitleHRlcm4gdm9pZCBpbml0Rmxvd1NlbnNvckRyaXZlcih2b2lkKTsKKy8qCisJuPzQwsH3wb+8xsL2s+W8xsr91rWjrNDotqjG2rX308O4w7qvyv2jrL2o0unU2lN5c1RpY2tfSGFuZGxlcrX308MKKyovCisvL2V4dGVybiB2b2lkIGZsb3dzZW5zb3JfdXBkYXRlX2NvdW50KHZvaWQpOworLyoKKwm78cihwffBv7zGwvaz5bzGyv3WtQorKi8KK2V4dGVybiB1MzIgIGZsb3dzZW5zb3JfZ2V0X2NvdW50KHZvaWQpOworLyoKKwnJ6NbDwffBv7zGwvaz5bzGyv3WtQorKi8KK2V4dGVybiB2b2lkIGZsb3dzZW5zb3Jfc2V0X2NvdW50KHUzMiB2YWwpOworCisvKgorCbvxyKHB98G/vMa158H3QUSyydH51rWjrNLUtMvF0LbPwffBv7zGyse38dLss6OjrL2o0unU2tb30a27t9bQtffTwyi158H31rU9QUTWtS80MDk1KjMuMy85LjEpCisqLworZXh0ZXJuIHUxNiBmbG93c2Vuc29yX3N0YSh2b2lkKTsKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vvPzFzM/gudgKKy8vvPzWtbao0uUKKyNkZWZpbmUgS0VZX05PTkUgICAgICAgICAoIDB1KSAgICAgICAgICAvL7/Vz9DXtMysCisjZGVmaW5lIEtFWV9ESUcwICAgICAgICAgKDEwdSkgICAgICAgICAgLy/K/dfWvPwwCisjZGVmaW5lIEtFWV9ESUcxICAgICAgICAgKCAxdSkgICAgICAgICAgLy/K/dfWvPwxCisjZGVmaW5lIEtFWV9ESUcyICAgICAgICAgKCAydSkgICAgICAgICAgLy/K/dfWvPwyCisjZGVmaW5lIEtFWV9ESUczICAgICAgICAgKCAzdSkgICAgICAgICAgLy/K/dfWvPwzCisjZGVmaW5lIEtFWV9ESUc0ICAgICAgICAgKCA0dSkgICAgICAgICAgLy/K/dfWvPw0CisjZGVmaW5lIEtFWV9ESUc1ICAgICAgICAgKCA1dSkgICAgICAgICAgLy/K/dfWvPw1CisjZGVmaW5lIEtFWV9ESUc2ICAgICAgICAgKCA2dSkgICAgICAgICAgLy/K/dfWvPw2CisjZGVmaW5lIEtFWV9ESUc3ICAgICAgICAgKCA3dSkgICAgICAgICAgLy/K/dfWvPw3CisjZGVmaW5lIEtFWV9ESUc4ICAgICAgICAgKCA4dSkgICAgICAgICAgLy/K/dfWvPw4CisjZGVmaW5lIEtFWV9ESUc5ICAgICAgICAgKCA5dSkgICAgICAgICAgLy/K/dfWvPw5CisjZGVmaW5lIEtFWV9FTlRFUiAgICAgICAgKDEydSkgICAgICAgICAgLy/It8jPvPwKKyNkZWZpbmUgS0VZX0NBTkNFTCAgICAgICAoMTF1KSAgICAgICAgICAvL8ihz/u8/AorCisvKgorCbz8xcyz9cq8u68KKyovCisvL2V4dGVybiB1aW50OF90IGtleXBhZF9pbml0KHZvaWQpOworLyoKKwm2wcihsLS8/Na1CisqLworLy9leHRlcm4gdWludDhfdCBrZXlwYWRfZ2V0X2tleSh2b2lkKTsKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vZmxhc2jP4LnYCisKKy8vuea48bao0uUKKyNkZWZpbmUgRkxBU0hfUEFHRV9TSVpFX1cyNVgzMgkyNTYgCisjZGVmaW5lIEZMQVNIX1NJWkUJCQkJKDQgKiAxMDI0ICogMTAyNCkKKyNkZWZpbmUgRkxBU0hfUEFHRV9OVU0JCQk4MTkyCisjZGVmaW5lIEZMQVNIX1NFQ1RPUl9TSVpFCQkoNCoxMDI0KQorI2RlZmluZSBGTEFTSF9TRUNUT1JfTlVNQkVSCQk1MTIKKyNkZWZpbmUgRkxBU0hfQkxPQ0tfU0laRQkJKDY0KjEwMjQpCisjZGVmaW5lIEZMQVNIX0JMT0NLX05VTQkJCTY0CisvL7e1u9jWtQorI2RlZmluZQlOQ19PSwkJCQkJMAkJCQkvL7LZ1/ezybmmCisjZGVmaW5lIE5DX0ZsYXNoRXJyCQkJCTB4MDAwMGZmZmYJCS8vtO3O8worI2RlZmluZQlOQ19FbHNlRVJSCQkJCTB4MDEJCQkvL8bk0+C07c7zCisjZGVmaW5lCU5DX1dyaXRlYWJsZQkJCTB4MDIJCQkvL9TK0O3QtAorCisvKgorCbP1yry7rworKi8KK2V4dGVybiB1MzIgSFdfRmxhc2hfSW5pdCh2b2lkKTsKKy8qCisJtsFERVZJQ0UgSUQKKyovCitleHRlcm4gdm9pZCBIV19GTEFTSF9KRURFQ19JRCh1aW50OF90ICpidWYpOworCisvKgorCbbBRkxBU0gKKyovCitleHRlcm4gdTMyIEhXX0ZsYXNoX1JlYWQodWludDMyX3QgYWRkciwgdWludDMyX3Qgc2l6ZSwJdWludDhfdCAqYnVmZmVyKTsKKy8qCisJ0rOywbP9CisqLworZXh0ZXJuIHUzMiBIV19GbGFzaF9QYWdlRXJhc2UodWludDMyX3QgcGFnZSk7CisvKgorCdKzseCzzAorKi8KK2V4dGVybiB1MzIgRmxhc2hfUGFnZV9Qcm9ncmFtKHVpbnQzMl90IGFkZHIsIHVpbnQzMl90IHNpemUsIHVpbnQ4X3QgKnBidWYpOwkKKy8qCisJ1fvGrLLBs/2jutDo0qq63LOkyrG85KOsyrW8yrLiytQ0MHMKKyovCitleHRlcm4gdTMyIEhXX0ZsYXNoX0NoaXBFcmFzZSh2b2lkKTsKKy8qCisJsru0+LLBs/21xNC0CisqLworZXh0ZXJuIHUzMiBIV19GbGFzaF9Ob3RFcmFzZVdyaXRlKHVpbnQzMl90IGRlc3QsIHVpbnQzMl90IHNpemUsIHVpbnQ4X3QgKnNyYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLyoKKwm0+LLBs/21xNC0CisqLworZXh0ZXJuIHUzMiBIV19GbGFzaF9TbWFydFdyaXRlKHVpbnQzMl90IGFkZHIsIHVpbnQzMl90IHNpemUsIHVpbnQ4X3QgKnNyYyk7CisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvL7+0w8W5t8/gudgKKy8qCisJuabE3Dqz9cq8u6+/tMPFubcKKyovCitleHRlcm4gdm9pZCBpbml0V2F0Y2hEb2codm9pZCk7CisvKgorCc65ubejrNDo0qrU2tb30a27t9bQtffTwworKi8KK2V4dGVybiB2b2lkIGZlZWRXYXRjaERvZyh2b2lkKTsKKworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy9taWZhcmUgb25lIGh3IGxpYgorCisjZGVmaW5lIEtFWUEgICAJCSAgICAweDYwICAgCSAgICAvL0HD3MLrCisjZGVmaW5lIEtFWUIgICAJCSAgICAweDYxICAgICAgICAvL0LD3MLrCSAKKworLy+yzsr9UmVxdWVzdE1vZGWjugorI2RlZmluZSBQSUNDX1JFUV9BTEwgCTB4NTIKKyNkZWZpbmUgUElDQ19SRVFfSURMRSAJMHgyNgorCisvKgorCbP1yry7r7bBv6i907/aCisqLworZXh0ZXJuICB2b2lkIEhXX1NQSV9SRl9DZmdJbml0KHZvaWQpOworCisvKgorCisgCbmmxNw6IFJDNTMwyc+157i0zrsgCisgICAgICAgICAgMS4gvatSQzUzMLTTtfS158Sjyr27vdDRo6yyos3qs8mz9cq8u68KKyAgICAgICAgICAyLiC78r2rUkM1MzDW2NDCuLTOuworKi8KKyAgZXh0ZXJuICB1OCBNMV9SQ1Jlc2V0KHZvaWQpOworCisvKgorCbmmxNw6ICDIobXDv6jQ8sHQusUKKwnK5LP2OiAgdWNoYXIgKnBTTiAgCQkJCS0gv6jQ8sHQusUKKwm3tbvYOiAgMC2y2df3s8m5piAgxuTL+9a1LbLZ1/fKp7DcICAgCisqLworZXh0ZXJuICB1OCBHZXRNMVNOKCB1OCAqcFNOICk7CisKKy8qCisKKyAJuabE3Dog0bC/qAorCbLOyv06IFJlcXVlc3RNb2RlLdGwv6jEo8q9o6zOqklETEUgu/IgQUxMCQlhdHEtv6jGrLXEwODQzSAg1N3O3tPDCisJt7W72DogtbHOqjB4MDAgyrGx7cq+09C/qKOst/HU8s7ev6gKKyovCitleHRlcm4gIHU4IE0xX1JlcXVlc3QodTggIFJlcXVlc3RNb2RlLCB1OCAqIGF0cSApOworCisvKgorCisgCbmmxNw6ILzT1NjD3NS/CisJss7K/Togw9zUvworCbe1u9g6ICAwLbLZ1/ezybmmICDG5Mv71rUtstnX98qnsNwgICAKKyovCisvL2V4dGVybiAgdTggTG9hZF9SQU0gKCB1OCAqIFJhd0NvZGUgKTsKKworLyoKKworIAm5psTcOiDNqLn9v+m6xb340NDQo9Hpo6zWp7PWUzUwo6xTNzC/qAorCbLOyv06IEF1dGhNb2RlLUHD3MLrILvyIELD3MLrIHNucjq/qM6o0ru6xSBibG9jazq/6brFIGtleTrD3NS/CisJt7W72DogIDAtstnX97PJuaYgIMbky/vWtS2y2df3yqew3CAgIAorKi8KK2V4dGVybiAgdTggTTFfQXV0aEJsayggdTggQXV0aE1vZGUsIHU4ICpTbnIsIHU4IEJsb2NrLCB1OCAqa2V5ICk7CisKK2V4dGVybiB1OCBNMV9TZWxlY3QodTggKlNucik7CisvKgorCQlNMV9FMlJlYWQgICAgICC2wcihUkM1MDC1xEUy1tC1xMr9vt0gCisJIAlBZGRyCQkgICAgIDpFMsbwyry12Na3KEFkZHIgPCA4MEggKQorCQlsZW5ndGgJCTrSqsfztsHIobXE19a92sr9KCDQodPatcjT2jE2ICkKKwkJcEJ1ZmZlcgkJOrbBs/bK/b7dtcS7urPlx/gKKwkJt7W72Na1CQmjujCx7cq+0LSzybmmCisqLworLy9leHRlcm4gIHU4IE0xX0UyUmVhZCggdTggQWRkciwgdTggbGVuZ3RoLCB1OCAqIHBCdWZmZXIpOworCisvKgorCQlNMV9FMldyaXRlICC9q8r9vt3QtMjrUkM1MDC1xEUy1tAKKwkgCUFkZHIJCTpFMsbwyry12Na3KCAweDEwIDw9QWRkciA8IDB4MWZmICkKKwkJbGVuZ3RoCQk60qrH89C0yOu1xNfWvdrK/Sgg0KHT2rXI09oxNiApCisJCXBCdWZmZXIJCTrSqtC0yOvK/b7dtcS7urPlx/gKKwkJt7W72Na1CQmjujCx7cq+0LSzybmmCisqLworLy9leHRlcm4gIHU4IE0xX0UyV3JpdGUoIHVuc2lnbmVkIGludCBBZGRyLCB1OCBsZW5ndGgsIHU4ICogcEJ1ZmZlcik7CisKKy8qCisgIAm5psTco7ogICAgICAgILbBv6iw5dOyvP619LXno7oKKwm6r8r91K3QzaO6ICAgIHZvaWQgSGFyZFB3ckR3bigpICAgICAgICAgICAgICAgICAgICAgINTdw7vT0NC0CisJss7K/aO6ICAJICDO3gorCbe1u9jWtaO6ICAgICAgzt4KKwnLtcP3o7oKKyAgIAkgICAgvau2wb+osOW1xFJGoapSU1S/2NbGz9/Ww86quN+158a9o6y2wb+osOW0ptPa07K8/rX0tefXtMyso6i159S01f2zo8zhuamjqaGjCisqLworZXh0ZXJuICB2b2lkIE0xX0hhcmRQd3JEd24oIHZvaWQgKTsKKworLyoKKwkJTTFfUENEU24gICAgtsHIoVJDNTAwtci2wb+o0L7GrLXE0PLB0LrFCisJCXBTbgkJCTrQ8sHQusW7urPlx/gKKwkJt7W72Na1CQmjujCx7cq+0LSzybmmCisqLworZXh0ZXJuIHVuc2lnbmVkIGNoYXIgTTFfUENEU24oIHVuc2lnbmVkIGNoYXIgKiBwQnVmZmVyKTsKKworLyoKKyAgCbmmxNyjuiAgICAgICAgtsG/qLDltsG/qNC+xqzJ5Ma1udix1aO6CisJuq/K/dSt0M2juiAgICB2b2lkIE0xX1JhZGlvT2ZmKCkKKyAgIAmyzsr9o7ogIAkgIM7eCisgICAJt7W72Na1o7ogICAgICDO3gorICAgCcu1w/ejugorICAgCSAgICC9q7bBv6iw5cnPtcS2wb+o0L7GrLXEyeTGtbeiy8252LX0LL21tc25prrEus221M3iuMnIxQorCQm0y8qxtsG/qNC+xqy7udTauaTX9y4KKyovCitleHRlcm4gdm9pZCBNMV9SYWRpb09mZiggdm9pZCApOworCisvKgorICAJuabE3KO6ICAgICAgICC2wb+osOW2wb+o0L7GrMnkxrW08r+qo7oKKwm6r8r91K3QzaO6ICAgIHZvaWQgTTFfUmFkaW9PbigpCisgICAJss7K/aO6ICAJICDO3gorICAgCbe1u9jWtaO6ICAgICAgzt4KKyAgIAnLtcP3o7oKKyAgIAkgICAgvau2wb+osOXJz7XEtsG/qNC+xqy1xMnkxrW3osvNtPK/qgorCisJCU0xX1JhZGlvT24oKSC6zSBNMV9SYWRpb09mZigpysfSu7bUuq/K/SzTw9Ta0ruw48fpv/bPwrXEvdrE3LrNvbW1zcnkxrW4ycjFyc8uCisqLworZXh0ZXJuIHZvaWQgTTFfUmFkaW9Pbiggdm9pZCApOworCisvKgorCQlGcmVhZCAgICAgICAgICC2wb/pyv2+3SAKKwkgCUJsb2NrCQk6tsG/6brFCisJCVJlYWRCdWZmZXIJOrbBs/a1xMr9vt21xLu6s+XH+AorCQm3tbvY1rUJCaO6MLHtyr62wbPJuaYKKyovCitleHRlcm4gdTggTTFfUmVhZCh1OCBCbG9jaywgdTggKiBSZWFkQnVmZmVyKTsKKworLyoKKwkJRndyaXRlICAgICDQtL/pyv2+3SAKKwkgCUJsb2NrCQk60LS/6brFCisJCVJlYWRCdWZmZXIJOtKq0LTK/b7dtcS7urPlx/gKKwkJt7W72Na1CQmjujCx7cq+0LSzybmmCisqLworZXh0ZXJuIHU4IE0xX1dyaXRlKCB1OCBCbG9jaywgdTggKiBXcml0ZUJ1ZmZlcik7CisKKy8qCisgIAm5psTco7ogICAgICAgILzssum2wb+o0L7GrMrHt/G3osnk1f2zoworCbqvyv3UrdDNo7ogICAgdTggTTFfVHJhblN0YSgpCisgICAJss7K/aO6ICAJICDO3gorICAgCbe1u9jWtaO6ICAgICAgMSAtINTYsqjOtLeiyeQKKwkJCQkgIDAgLSDU2LKot6LJ5AorKi8KKy8vZXh0ZXJuIHU4IE0xX1RyYW5TdGEoIHZvaWQgKTsKKworLyoKKwlIYWx0CisgCbmmxNyjuiDW1da5v6gKKwmyzsr9OiAgzt4KKwm3tbvY1rWjurWxzqoweDAwIMqxse3Kvr+o1tXWubPJuaYKKyovCitleHRlcm4gdTggTTFfSGFsdCggdm9pZCApOworCisvKgorCbmmxNyjuiAgTWlmYXJlv6i/6bbBKLqs0bC/qCwg0aG/qCwg0KPR6SwgtsG/qCjSu7/pKSwgv8m5qdGh1PEpo7oKKwnK5Mjro7ogIHU4ICpwU04gIAkJCQktIL+o0PLB0LrFCisgCQl1OCBNb2RlCQkJLSAoILj5vt22qNLltcSzo8G/se29+NDQIrvyItfpus8gKQorCQkgICBiaXQwIAkJCQktIEHD3MLru/JCw9zC6yggIDAgLSBBCTEgLSBCKSAgICAgCisJCSAgIGJpdDIJIAkJCQktIDAgLSDRsL+oICAgICAgIDEgLSCyu9Gwv6gKKwkJICAgYml0MwkJCQkJLSAwIC0gsrvQo9Hpw9zC6yAxIC0g0qrQo9Hpw9zC6worCQl1OCBCbG9jayAgICAJCQktINKqtsG1xL/pusUKKwkJdTggKnBLZXkJCQkJLSDJyMf4tsHQtMPcwusKKworCcrks/ajuiAgdTggKnBCdWZmZXIJCQktILbBs/a1xDE219a92sr9vt0KKwm3tbvY1rWjurWxzqoweDAwIMqx1f3It7bBs/YKKyovCitleHRlcm4gIHU4IE0xX0Jsa1JlYWQoIHU4IE1vZGUsIHU4IEJsb2NrLCB1OCAqcFNOLCB1OCAgKiBwQnVmZmVyLCB1OCAqcEtleSApOworCisvKgorCbmmxNyjuiAgTWlmYXJlv6i/6dC0KLqs0bC/qCwg0aG/qCwg0KPR6SwgtsG/qCjSu7/pKSwgv8m5qdGh1PEpo7oKKwnK5Mjro7ogIHU4ICpwU04gIAkJCQktIL+o0PLB0LrFCisJCXU4IE1vZGUJCQktICgguPm+3bao0uW1xLOjwb+x7b340NAiu/Ii1+m6zyApCisJCSAgIGJpdDAgCQkJCS0gQcPcwuu78kLD3MLrKCAgMCAtIEEJMSAtIEIpICAgICAKKwkJICAgYml0MgkgCQkJCS0gMCAtINGwv6ggICAgICAgMSAtILK70bC/qAorCQkgICBiaXQzCQkJCQktIDAgLSCyu9Cj0enD3MLrIDEgLSDSqtCj0enD3MLrCisJCXU4IEJsb2NrICAgIAkJCS0g0qq2wbXEv+m6xQorCQl1OCAqcEtleQkJCQktIMnIx/i2wdC0w9zC6worCQl1OCAqcEJ1ZmZlcgkJCS0g0qrQtMjrtcQxNtfWvdrK/b7dCisJt7W72Na1o7q1sc6qMHgwMCDKsdX9yLe2wbP2CisqLworZXh0ZXJuICB1OCBNMV9CbGtXcml0ZSggdTggTW9kZSwgdTggQmxvY2ssIHU4ICpwU04sIHU4ICogcEJ1ZmZlciwgdTggKnBLZXkgKTsKKworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy9DUFW/qLrNRVNBTcSjv+kKKworLy+5psTco7qz9cq8u69TQU3NqNG2vdO/2gorLy+yzsr9o7rO3gorLy+3tbvYo7rO3gorZXh0ZXJuIHZvaWQgSVNPNzgxNl9VU0FSVF9Jbml0KHZvaWQpOworCisvL2ljaLao0uUKKyNkZWZpbmUJUFJPVE9DT0xfVDBfQ0gxCQkJMQkJICAgICAgICAgICAgICAgIC8vIEVTQU3Eo7/pCisjZGVmaW5lIFBST1RPQ09MX1RDTF9QQ0QwCQkweDgwICAgICAgICAgICAgICAgICAgICAvL7fHvdO0pcq9v6gKKworLy+/qMnPteejrNPD09pTQU2/qMDkuLTOuworLy+yzsr9o7pjaWQ9MAorLy8gICAgICBpY2ggzai1wLrFCisvL7e1u9ijujCzybmmCitleHRlcm4gdW5zaWduZWQgc2hvcnQgR2VuX1Bvd2VyT25DYXJkKHVuc2lnbmVkIGNoYXIgY2lkLCBpbnQgaWNoKTsKKworLy+52LHVU0FNv6i159S0CisvL7LOyv2jumljaCDNqLXAusUKK2V4dGVybiB2b2lkIEdlbl9Qb3dlck9mZkNhcmQoaW50IGljaCk7CisKKy8vuabE3KO6v6i4tM67x7Cz9cq8u6/P4LnYyv2+3b3hubmjqNPD09pTQU278r+oxqyjqQorLy+yzsr9o7pjaWQ9MAorLy8gICAgICBpY2ggzai1wLrFCit2b2lkIEdlbl9SZXNldEluZm8oIHVuc2lnbmVkIGNoYXIgY2lkLCBpbnQgaWNoICk7CisvL7mmxNyjur+ouLTOu6Oov8nTw9PauLTOu1NBTbvyv6jGrKOpCisvL7LOyv2jumNpZD0wCisvLyAgICAgIGljaCDNqLXAusUKKy8vt7W72KO6MLPJuaYKK2V4dGVybiB1bnNpZ25lZCBzaG9ydCBHZW5fUmVzZXRDYXJkKHVuc2lnbmVkIGNoYXIgY2lkLCBpbnQgaWNoKTsKKworLy+5psTco7pBY3RpdmF0aW9uIG9mIGEgUElDQyBpbiBJRExFIG1vZGUuo6jTw9Pav6jGrKOpCisvL7LOyv2jumJyIChJTikgQmF1ZHJhdGUgZm9yIE1JRkFSRSBjb21tdW5pY2F0aW9uIDAgMTA2IGtCYXVkCisvLyAgICAgIGF0cSAoT1VUKSBBbnN3ZXIgdG8gUmVxdWVzdAorLy8gICAgICBzYWsgKE9VVCkgU2VsZWN0IGFja25vd2xlZGdlCisvLyAgICAgIHVpZCAoT1VUKSB1cCB0byAxMCBieXRlcyBVSUQKKy8vICAgICAgdWlkX2xlbiAoT1VUKSBsZW5ndGggb2YgdGhlIFVJRAorLy+3tbvYo7owIG9rCitleHRlcm4gc2hvcnQgTWY1MDBQaWNjQWN0aXZhdGVJZGxlKHVuc2lnbmVkIGNoYXIgYnIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICphdHEsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqc2FrLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKnVpZCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICp1aWRfbGVuKTsKKworLy+5psTco7pTZW5kcyB0aGUgUElDQyBpbnRvIHRoZSBoYWx0IHN0YXRlLgorLy+yzsr9o7pOb25lCisvL7e1u9ijujAgb2sKKy8vZXh0ZXJuIHNob3J0IE1mNTAwUGljY0hhbHQodm9pZCk7IAorCisvL7mmxNyjutTayeTGtb+ovNO158fSvfjI6zE0NDQzMy00x+m/9s/CsuLK1L+oxqy1xLTm1NoKKy8vss7K/aO6zt4KKy8vt7W72KO6MCC/qLTm1NoKKy8vICAgICAgxuTL+yC/qLK7tObU2gorZXh0ZXJuIHVuc2lnbmVkIGNoYXIgUElDQ19UY2xDaGVja1JGUm91bmdlKHZvaWQpOworCisvL7mmxNyjusr9vt29u7u7o6i/ydPD09q4tM67U0FNu/K/qMaso6kKKy8vss7K/aO6Y2lkPTAKKy8vICAgICAgbmFkX3NlbmQ9MAorLy8gICAgICBjbWRfYnVmIMP8we67urPlx/gKKy8vICAgICAgY21kX2xlbiDD/MHus6S2yAorLy8gICAgICBFeHBlY3RlZFJlc3BvbnNlTGVuZ3RoIMbazfu/qMasu9i4tLXEyv2+3bOktsgKKy8vICAgICAgcmVjX2J1ZiDTw9Pau/HIobe1u9jK/b7dtcTWuNXrCisvLyAgICAgIHJlY19idWZfbGVuIMq1vMq908rVtb21xMr9vt2zpLbIIAorLy8gICAgICBpY2ggzai1wLrFCisvL7e1u9ijujCzybmmICAgICAgICAgICAgIAorZXh0ZXJuIHVuc2lnbmVkIHNob3J0IEdlbl9FeGNoYW5nZSh1bnNpZ25lZCBjaGFyIGNpZCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBuYWRfc2VuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpjbWRfYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgY21kX2xlbiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBFeHBlY3RlZFJlc3BvbnNlTGVuZ3RoLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICoqcmVjX2J1ZiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqcmVjX2J1Zl9sZW4sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpY2gpOworCisvL7mmxNw6IMno1sMzREVTKMursbazpCnD3NS/CisvL7LOyv06IDE219a92sPc1L/WtQorLy+3tbvYOiAwILPJuaYKKy8vICAgICAgxuTL+yDKp7DcCisvL2V4dGVybiB1OCBkZXNfc2V0X2tleXModTgga2V5WzE2XSk7CisKKy8vuabE3DogM2Rlc7zTw9wKKy8vss7K/Togc3JjWzhdIMrkyOs419a92sP3zsTK/b7dCisvLyAgICAgIGRlc3RbOF0gyuSz9jjX1r3aw9zOxMr9vt0KKy8vt7W72Dogzt4KKy8vZXh0ZXJuIHZvaWQgZGVzX2VuY3J5cHQodTggc3JjIFsgOCBdLCB1OCBkZXN0IFsgOCBdKTsKKworLy+5psTcOiAzZGVzveLD3AorLy+yzsr9OiBzcmNbOF0gyuTI6zjX1r3aw9zOxMr9vt0KKy8vICAgICAgZGVzdFs4XSDK5LP2ONfWvdrD987Eyv2+3QorLy+3tbvYOiDO3gorLy9leHRlcm4gdm9pZCBkZXNfZGVjcnlwdCh1OCBzcmMgWyA4IF0sIHU4IGRlc3QgWyA4IF0pOworCisvL7mmxNw6ILLBs/1FU0FNv6rG1b+oveG5uaOssqLM5ru7s/XKvNb3v9jD3NS/zqoxNtfWvdrIqzAKKy8vss7K/Togzt4KKy8vt7W72DogMHg5MDAwILPJuaYKKy8vICAgICAgMHgwMDAwILK7yse/qsbVs/XKvEVTQU2/qL/VvOSjrLK7xNy9+NDQssGz/bLZ1/cKKy8vICAgICAgxuTL+yAgIMqnsNwKKy8vZXh0ZXJuIHUxNiBlcmFzZV9tZih2b2lkKTsKKworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy9DQU7NqNG2z+C52AordHlwZWRlZiBzdHJ1Y3QgCit7CisJdW5zaWduZWQgaW50ICAgaWQ7ICAgICAgICAgICAgICAgICAvKiAyOSBiaXQgaWRlbnRpZmllciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCXVuc2lnbmVkIGNoYXIgIGRhdGFbOF07ICAgICAgICAgICAgLyogRGF0YSBmaWVsZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKwl1bnNpZ25lZCBjaGFyICBsZW47ICAgICAgICAgICAgICAgIC8qIExlbmd0aCBvZiBkYXRhIGZpZWxkIGluIGJ5dGVzICAgICAgICAgICAgICAgICAgICovCisJdW5zaWduZWQgY2hhciAgY2g7ICAgICAgICAgICAgICAgICAvKiBPYmplY3QgY2hhbm5lbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCXVuc2lnbmVkIGNoYXIgIGZvcm1hdDsgICAgICAgICAgICAgLyogMCAtIFNUQU5EQVJELCAxLSBFWFRFTkRFRCBJREVOVElGSUVSICAgICAgICAgICAgKi8KKwl1bnNpZ25lZCBjaGFyICB0eXBlOyAgICAgICAgICAgICAgIC8qIDAgLSBEQVRBIEZSQU1FLCAxIC0gUkVNT1RFIEZSQU1FICAgICAgICAgICAgICAgICovCit9Q0FOX21zZzsgLy9DQU7NqNG2z/vPorao0uUKKworLy9DQU7NqNG2zai1wLao0uUoT2JqZWN0IGNoYW5uZWwpCisjZGVmaW5lIERFRl9DQU5fQ0hBTk5FTF9TRU5ECQkJMHgwMQorI2RlZmluZSBERUZfQ0FOX0NIQU5ORUxfUkVDVgkJCTB4MDEKKworLy9DQU7Wobjxyr0KKyNkZWZpbmUJU1RBTkRBUkRfRk9STUFUCTAKKyNkZWZpbmUJRVhURU5ERURfRk9STUFUCTEKKworLy9DQU7WocDg0M0KKyNkZWZpbmUJREFUQV9GUkFNRQkJMAorI2RlZmluZQlSRU1PVEVfRlJBTUUJMQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCis7uq/K/dSt0M2junVuc2lnbmVkIGludCBBUFBfQ0FOX0luaXQoIFUzMiBiYXVkLCBVMDggYWRkciApCis7uq/K/bmmxNyjurP1yry7r7rNxvS2r0NBTr/Y1sbG9worO8rkCSAgIMjro7piYXVkIC0gQ0FOsqjM2MLKIGFkZHIgLSC007v6tdjWtworO7e1ILvYINa1o7owIC0gs8m5piDG5Mv7IC0gyqew3CAKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitleHRlcm4gdW5zaWduZWQgaW50IEFQUF9DQU5fSW5pdCggdTMyIGJhdWQsIHU4IGFkZHIgKTsKKworLy/KudPDQ0FOv9jWxsb3t6LLzc/7z6IKK2V4dGVybiB1bnNpZ25lZCBpbnQgQ0FOX1NlbmQodW5zaWduZWQgaW50IGN0cmwsIENBTl9tc2cgKm1zZywgdW5zaWduZWQgc2hvcnQgdGltZW91dCk7CisKKy8vQ0FOv9jWxsb3vdPK1c/7z6IKK2V4dGVybiB1bnNpZ25lZCBpbnQgQ0FOX1JlY2lldmUoIENBTl9tc2cgKm1zZyApOworCisvL7vxyKFDQU63osvN17TMrCAwo7rDu7eiy80gIDGjutTat6LLzQorZXh0ZXJuIHVuc2lnbmVkIGNoYXIgR2V0X0NBTl9UeFN0YXRlKHZvaWQpOworCisvL7vxyKFDQU63osvN17TMrCAwo7rDu73TytUgIDGjutTavdPK1QorZXh0ZXJuIHVuc2lnbmVkIGNoYXIgR2V0X0NBTl9SeFN0YXRlKHZvaWQpOworCitleHRlcm4gdm9pZCBVU0JfSFBfQ0FOMV9UWCAodm9pZCk7CisKKworZXh0ZXJuIHZvaWQgVVNCX0xQX0NBTjFfUlgwKHZvaWQpOworCisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvL8/Uyr7P4LnYCisvKioKKyAqILTyv6qxs7niCisgKi8KK3ZvaWQgZ2xjZF9ia2xfb24odm9pZCk7CisKKy8qKgorICogudix1bGzueIKKyAqLwordm9pZCBnbGNkX2JrbF9vZmYodm9pZCk7CisKKy8qKgorICogs/XKvLuvTENEz9TKvgorICovCit2b2lkIGdsY2RfaW5pdCh2b2lkKTsKKworLyoqCisgKiDP1Mq+yv2+3QorICovCit2b2lkIGdsY2Rfd3JpdGUodm9pZCk7CisKKy8qKgorICogx+Wz/c/Uyr4KKyAqLwordm9pZCBnbGNkX2NsZWFyKHZvaWQpOworCisvKioKKyAqIMfls/3P1Mq+u7qz5cf4CisgKi8KK3ZvaWQgZ2xjZF9jbGVhcl9idWZmZXIodm9pZCk7CisKKy8vz9TKvrK/t9bH67LOvPvL+czhuanUtMLro6zQ6NKqtcTX1NDQ1Pa80worCisjZW5kaWYKZGlmZiAtLWdpdCBhL2c0MDEzMDIvc3JjL25lY19hcGR1LmMgYi9nNDAxMzAyL3NyYy9uZWNfYXBkdS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlMzE2OTMKLS0tIC9kZXYvbnVsbAorKysgYi9nNDAxMzAyL3NyYy9uZWNfYXBkdS5jCkBAIC0wLDAgKzEsMTAwIEBACisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSAiLi4vLi4vbmVjX2hhcmR3YXJlLmgiCisjaW5jbHVkZSAiLi4vLi4vbmVjX2FwZHUuaCIKKworI2RlZmluZSBSRVRDT0RFX09LICAweDkwMDAKKworaW50OCBwc2FtX3Bvd2Vyb24odWludDggY2lkKQoreworICByZXR1cm4gR2VuX1Bvd2VyT25DYXJkKGNpZCwgUFJPVE9DT0xfVDBfQ0gxKTsKK30KK3ZvaWQgcHNhbV9wb3dyZW9mZih1aW50OCBjaWQpCit7CisgIEdlbl9Qb3dlck9mZkNhcmQoY2lkKTsKK30KKworc3RhdGljIHVpbnQ4IGdQSUNDX1NOUls4XTsgCQkJLyog5Y2h54mHU07ljz8gKi8KK2ludDggY2FyZF9yZXF1ZXN0KHVpbnQ4KiBzYWssdWludDggc25yWzhdKQoreworICB1aW50OCBnUElDQ19TTlJfTEVOOwkJCQkJLyog5ok/6I635Y+W55qE5Y2h54mHU07mlbDmja7plb/luqYgKi8KKyAgdWludDggZ1BJQ0NfQVRRQVsyXTsJCQkJCS8qCSovCisgIHVpbnQ4IGdQSUNDX1NBSzsJCQkJCQkvKgkqLworCisgIGlmKCFNZjUwMFBpY2NBY3RpdmF0ZUlkbGUoMCwgZ1BJQ0NfQVRRQSwgJmdQSUNDX1NBSywgZ1BJQ0NfU05SLCAmZ1BJQ0NfU05SX0xFTikpCisgIHsKKyAgICAqc2FrID0gZ1BJQ0NfU0FLOworICAgIG1lbWNweShzbnIsZ1BJQ0NfU05SLDgpOworICAgIHJldHVybiAwOworICB9CisgIHJldHVybiAtMTsKK30KK2ludDggY2FyZF9tMV9tb2RlKHVpbnQ4IGNhcmRwaHlpZFs4XSkKK3sKKyAgdWludDggYnVmZlsyXTsKKyAgaWYoTTFfUmVxdWVzdChQSUNDX1JFUV9JRExFLCBidWZmKSkKKyAgeworICAgIGlmKE0xX1JlcXVlc3QoUElDQ19SRVFfSURMRSwgYnVmZikpCisgICAgeworICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgfQorICBpZighR2V0TTFTTihjYXJkcGh5aWQpKQorICB7CisgICAgaWYoIU0xX1NlbGVjdChjYXJkcGh5aWQpKQorICAgIHsKKyAgICAgIHJldHVybiAwOworICAgIH0KKyAgfQorICByZXR1cm4gLTE7Cit9CitpbnQ4IGNhcmRfcmZfcmVzZXQodm9pZCkKK3sKKyAgcmV0dXJuIE0xX1JDUmVzZXQoKTsKK30KK2ludDggY2FyZF9jcHVfbW9kZSh2b2lkKQoreworICBHZW5fUmVzZXRJbmZvKDAsIFBST1RPQ09MX1RDTF9QQ0QwKTsKKyAgcmV0dXJuIEdlbl9SZXNldENhcmQoMCwgUFJPVE9DT0xfVENMX1BDRDApOworfQoraW50OCBjYXJkX2NwdV9leGlzdCh2b2lkKQoreworICByZXR1cm4gUElDQ19UY2xDaGVja1JGUm91bmdlKCk7Cit9CisKK3ZvaWQgY2FyZF9yYWRpb19vbih2b2lkKQoreworICBNMV9SYWRpb09uKCk7Cit9Cit2b2lkIGNhcmRfcmFkaW9fb2ZmKHZvaWQpCit7CisgIE0xX1JhZGlvT2ZmKCk7Cit9Cit1aW50MTYgY2FyZF9tMV9hdXRoKHVpbnQ4KiBjYXJkcGh5aWQsdWludDggYmxvY2tubywgdWludDgga2V5WzZdKQoreworICByZXR1cm4gTTFfQXV0aEJsayhLRVlBLGNhcmRwaHlpZCxibG9ja25vLGtleSk7Cit9Cit1aW50MTYgY2FyZF9tMV9yZWFkKHVpbnQ4IGJsb2Nrbm8sdWludDggcmVhZGJ1ZlsxNl0pCit7CisgIHJldHVybiBNMV9SZWFkKGJsb2Nrbm8scmVhZGJ1Zik7Cit9Cit1aW50MTYgY2FyZF9tMV93cml0ZSh1aW50OCBibG9ja25vLHVpbnQ4IHdyaXRlYnVmWzE2XSkKK3sKKyAgcmV0dXJuIE0xX1dyaXRlKGJsb2Nrbm8sd3JpdGVidWYpOworfQordWludDE2IGNhcmRfY3B1X2V4Y2hhbmdlKHVpbnQ4KiBjbWRfYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4IGNtZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgdWludDggRXhwZWN0ZWRSZXNwb25zZUxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OCoqIHJlY19idWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgdWludDgqIHJlY19idWZfbGVuKQoreworICB1aW50MTYgcmV0OworICByZXQgPUdlbl9FeGNoYW5nZSgwLDAsIGNtZF9idWYsIGNtZF9sZW4sIEV4cGVjdGVkUmVzcG9uc2VMZW5ndGgsIHJlY19idWYsIHJlY19idWZfbGVuLAorICAgICAgICAgICAgICAgICAgICBQUk9UT0NPTF9UQ0xfUENEMCk7CisgIGlmKHJldCAhPSBSRVRDT0RFX09LKQorICB7CisgICAgcmV0dXJuIEdlbl9FeGNoYW5nZSgwLDAsIGNtZF9idWYsIGNtZF9sZW4sIEV4cGVjdGVkUmVzcG9uc2VMZW5ndGgsIHJlY19idWYsIHJlY19idWZfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgUFJPVE9DT0xfVENMX1BDRDApOworICB9CisgIHJldHVybiBSRVRDT0RFX09LOworfQorCmRpZmYgLS1naXQgYS9nNDAxMzAyL3NyYy9uZWNfaGFyZHdhcmUuYyBiL2c0MDEzMDIvc3JjL25lY19oYXJkd2FyZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmODZmZjMKLS0tIC9kZXYvbnVsbAorKysgYi9nNDAxMzAyL3NyYy9uZWNfaGFyZHdhcmUuYwpAQCAtMCwwICsxLDU5IEBACisjaW5jbHVkZSAiLi4vLi4vbmVjX2hhcmR3YXJlLmgiCisKKy8q07K8/rP1yry7ryovCit1aW50MTYgc3BfaW5pdCh2b2lkKQoreworICB2YWx2ZV9pbml0KCk7CisgIGluaXRGbG93U2Vuc29yRHJpdmVyKCk7CisgIFN5c1RpY2tfY2ZnKCk7CisgIGUycHJvbV9pbml0KDApOworICBIV19GbGFzaF9Jbml0KCk7CisgIHJ0Y19pbml0KCk7CisgIGdsY2RfaW5pdCgpOworICB1c2FydF9pbml0KCk7CisgIGluaXRXYXRjaERvZygpOworCisgIEhXX1NQSV9SRl9DZmdJbml0KCk7CisKKyAgSVNPNzgxNl9VU0FSVF9Jbml0KCk7ICAgIC8vU0FNxKO/6bP1yry7rworCisgIGlmKEdlbl9Qb3dlck9uQ2FyZCgwLFBST1RPQ09MX1QwX0NIMSkpICAvL7i0zrtTQU3Eo7/pyqew3AorICB7CisgICAgcmV0dXJuIDE7CisgIH0KKyAgcmV0dXJuIDA7Cit9CisvKs65ubcqLwordm9pZCBzcF9mZWVkX2RvZyh2b2lkKQoreworICBmZWVkV2F0Y2hEb2coKTsKK30KKworLyrW99Gtu7e199PDILenw8W/2NbGKi8KK3ZvaWQgc3BfdmFsdmVfY29udHJvbCh2b2lkKQoreworICB2YWx2ZV9jdHJsKCk7Cit9CisvKtb30a27t7X308Mgwvaz5bzGyv24/NDCv9jWxiovCit2b2lkIHNwX2Zsb3dzZW5zb3JfY29udHJvbCh2b2lkKQoreworICAvL2Zsb3dzZW5zb3JfdXBkYXRlX2NvdW50KCk7Cit9CisKKy8qu/HIobWxx7DB98G/vMbC9rPlvMbK/SovCit1aW50MzIgc3BfZmxvd3NlbnNvcl9nZXRfY291bnQodm9pZCkKK3sKKyAgcmV0dXJuIGZsb3dzZW5zb3JfZ2V0X2NvdW50KCk7Cit9CisKKy8qwffBv7zGwvaz5bzGyv3H5cHjICAgICAgKi8KK3ZvaWQgc3BfZmxvd3NlbnNvcl9jb3VudF9jbGVhcih2b2lkKQoreworICBmbG93c2Vuc29yX3NldF9jb3VudCgwKTsKK30KKy8qMC0twffBv7zG1f2zoyAxLS3B98G/vMbS7LOjKi8KK3VpbnQ4IHNwX2Zsb3dzZW5zb3JfY2hlY2tfdmFsaWQodm9pZCkKK3sKKyAgcmV0dXJuIGZsb3dzZW5zb3Jfc3RhKCk7Cit9CisKZGlmZiAtLWdpdCBhL2c0MDEzMDIvc3JjL3N0bTMyZjEweF9pdC5jIGIvZzQwMTMwMi9zcmMvc3RtMzJmMTB4X2l0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODJiNjgxMAotLS0gL2Rldi9udWxsCisrKyBiL2c0MDEzMDIvc3JjL3N0bTMyZjEweF9pdC5jCkBAIC0wLDAgKzEsMTY4IEBACisvKioKKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICogQGZpbGUgICAgUHJvamVjdC9TVE0zMkYxMHhfU3RkUGVyaXBoX1RlbXBsYXRlL3N0bTMyZjEweF9pdC5jIAorICAqIEBhdXRob3IgIE1DRCBBcHBsaWNhdGlvbiBUZWFtCisgICogQHZlcnNpb24gVjMuNS4wCisgICogQGRhdGUgICAgMDgtQXByaWwtMjAxMQorICAqIEBicmllZiAgIE1haW4gSW50ZXJydXB0IFNlcnZpY2UgUm91dGluZXMuCisgICogICAgICAgICAgVGhpcyBmaWxlIHByb3ZpZGVzIHRlbXBsYXRlIGZvciBhbGwgZXhjZXB0aW9ucyBoYW5kbGVyIGFuZCAKKyAgKiAgICAgICAgICBwZXJpcGhlcmFscyBpbnRlcnJ1cHQgc2VydmljZSByb3V0aW5lLgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKiBAYXR0ZW50aW9uCisgICoKKyAgKiBUSEUgUFJFU0VOVCBGSVJNV0FSRSBXSElDSCBJUyBGT1IgR1VJREFOQ0UgT05MWSBBSU1TIEFUIFBST1ZJRElORyBDVVNUT01FUlMKKyAgKiBXSVRIIENPRElORyBJTkZPUk1BVElPTiBSRUdBUkRJTkcgVEhFSVIgUFJPRFVDVFMgSU4gT1JERVIgRk9SIFRIRU0gVE8gU0FWRQorICAqIFRJTUUuIEFTIEEgUkVTVUxULCBTVE1JQ1JPRUxFQ1RST05JQ1MgU0hBTEwgTk9UIEJFIEhFTEQgTElBQkxFIEZPUiBBTlkKKyAgKiBESVJFQ1QsIElORElSRUNUIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBXSVRIIFJFU1BFQ1QgVE8gQU5ZIENMQUlNUyBBUklTSU5HCisgICogRlJPTSBUSEUgQ09OVEVOVCBPRiBTVUNIIEZJUk1XQVJFIEFORC9PUiBUSEUgVVNFIE1BREUgQlkgQ1VTVE9NRVJTIE9GIFRIRQorICAqIENPRElORyBJTkZPUk1BVElPTiBDT05UQUlORUQgSEVSRUlOIElOIENPTk5FQ1RJT04gV0lUSCBUSEVJUiBQUk9EVUNUUy4KKyAgKgorICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDT1BZUklHSFQgMjAxMSBTVE1pY3JvZWxlY3Ryb25pY3M8L2NlbnRlcj48L2gyPgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKi8KKworLyogSW5jbHVkZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyNpbmNsdWRlICJzdG0zMmYxMHhfaXQuaCIKKyNpbmNsdWRlICJHNDAxX2Rydl9od19WMDEuaCIKKworLyoqIEBhZGR0b2dyb3VwIFNUTTMyRjEweF9TdGRQZXJpcGhfVGVtcGxhdGUKKyAgKiBAeworICAqLworCisvKiBQcml2YXRlIHR5cGVkZWYgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyogUHJpdmF0ZSBkZWZpbmUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qIFByaXZhdGUgbWFjcm8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKiBQcml2YXRlIHZhcmlhYmxlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyogUHJpdmF0ZSBmdW5jdGlvbiBwcm90b3R5cGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qIFByaXZhdGUgZnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgIENvcnRleC1NMyBQcm9jZXNzb3IgRXhjZXB0aW9ucyBIYW5kbGVycyAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqCisgICogQGJyaWVmICBUaGlzIGZ1bmN0aW9uIGhhbmRsZXMgTk1JIGV4Y2VwdGlvbi4KKyAgKiBAcGFyYW0gIE5vbmUKKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgTk1JX0hhbmRsZXIodm9pZCkKK3sKK30KKworLyoqCisgICogQGJyaWVmICBUaGlzIGZ1bmN0aW9uIGhhbmRsZXMgSGFyZCBGYXVsdCBleGNlcHRpb24uCisgICogQHBhcmFtICBOb25lCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIEhhcmRGYXVsdF9IYW5kbGVyKHZvaWQpCit7CisgIC8qIEdvIHRvIGluZmluaXRlIGxvb3Agd2hlbiBIYXJkIEZhdWx0IGV4Y2VwdGlvbiBvY2N1cnMgKi8KKyAgd2hpbGUgKDEpCisgIHsKKyAgfQorfQorCisvKioKKyAgKiBAYnJpZWYgIFRoaXMgZnVuY3Rpb24gaGFuZGxlcyBNZW1vcnkgTWFuYWdlIGV4Y2VwdGlvbi4KKyAgKiBAcGFyYW0gIE5vbmUKKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgTWVtTWFuYWdlX0hhbmRsZXIodm9pZCkKK3sKKyAgLyogR28gdG8gaW5maW5pdGUgbG9vcCB3aGVuIE1lbW9yeSBNYW5hZ2UgZXhjZXB0aW9uIG9jY3VycyAqLworICB3aGlsZSAoMSkKKyAgeworICB9Cit9CisKKy8qKgorICAqIEBicmllZiAgVGhpcyBmdW5jdGlvbiBoYW5kbGVzIEJ1cyBGYXVsdCBleGNlcHRpb24uCisgICogQHBhcmFtICBOb25lCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIEJ1c0ZhdWx0X0hhbmRsZXIodm9pZCkKK3sKKyAgLyogR28gdG8gaW5maW5pdGUgbG9vcCB3aGVuIEJ1cyBGYXVsdCBleGNlcHRpb24gb2NjdXJzICovCisgIHdoaWxlICgxKQorICB7CisgIH0KK30KKworLyoqCisgICogQGJyaWVmICBUaGlzIGZ1bmN0aW9uIGhhbmRsZXMgVXNhZ2UgRmF1bHQgZXhjZXB0aW9uLgorICAqIEBwYXJhbSAgTm9uZQorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBVc2FnZUZhdWx0X0hhbmRsZXIodm9pZCkKK3sKKyAgLyogR28gdG8gaW5maW5pdGUgbG9vcCB3aGVuIFVzYWdlIEZhdWx0IGV4Y2VwdGlvbiBvY2N1cnMgKi8KKyAgd2hpbGUgKDEpCisgIHsKKyAgfQorfQorCisvKioKKyAgKiBAYnJpZWYgIFRoaXMgZnVuY3Rpb24gaGFuZGxlcyBTVkNhbGwgZXhjZXB0aW9uLgorICAqIEBwYXJhbSAgTm9uZQorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBTVkNfSGFuZGxlcih2b2lkKQoreworfQorCisvKioKKyAgKiBAYnJpZWYgIFRoaXMgZnVuY3Rpb24gaGFuZGxlcyBEZWJ1ZyBNb25pdG9yIGV4Y2VwdGlvbi4KKyAgKiBAcGFyYW0gIE5vbmUKKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgRGVidWdNb25fSGFuZGxlcih2b2lkKQoreworfQorCisvKioKKyAgKiBAYnJpZWYgIFRoaXMgZnVuY3Rpb24gaGFuZGxlcyBQZW5kU1ZDIGV4Y2VwdGlvbi4KKyAgKiBAcGFyYW0gIE5vbmUKKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgUGVuZFNWX0hhbmRsZXIodm9pZCkKK3sKK30KKworLyoqCisgICogQGJyaWVmICBUaGlzIGZ1bmN0aW9uIGhhbmRsZXMgU3lzVGljayBIYW5kbGVyLgorICAqIEBwYXJhbSAgTm9uZQorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBTeXNUaWNrX0hhbmRsZXIodm9pZCkKK3sKKwlUaW1lclRpY2soKTsKKwlDb21PdmVyVGltZVByb2NlZWQoKTsKK30KKwordm9pZCBVU0FSVDFfSVJRSGFuZGxlcih2b2lkKQoreworfQorCit2b2lkIFVBUlQ1X0lSUUhhbmRsZXIodm9pZCkKK3sKKwl1c2FydF9pc3JfcHJvYygpOwkgIAorCisJLy+0y7Smv8nM7bzT06bTw7LjtPrC6worfQorCit2b2lkIEFEQ19JUlFIYW5kbGVyKHZvaWQpCit7Cit9CisKK3ZvaWQgRE1BMV9DaGFubmVsMV9JUlFIYW5kbGVyKHZvaWQpCit7CisgIC8vRE1BMV9DaGFubmVsMV9yZWFkKCk7Cit9Cit2b2lkIFVTQl9IUF9DQU4xX1RYX0lSUUhhbmRsZXIgKHZvaWQpCit7CisgICBVU0JfSFBfQ0FOMV9UWCAoKTsKK30KK3ZvaWQgVVNCX0xQX0NBTjFfUlgwX0lSUUhhbmRsZXIgKHZvaWQpCit7CisgICBVU0JfTFBfQ0FOMV9SWDAoKTsKK30KZGlmZiAtLWdpdCBhL2c0MDEzMDIvc3JjL3N0bTMyZjEweF9pdC5oIGIvZzQwMTMwMi9zcmMvc3RtMzJmMTB4X2l0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWZkMTdjMAotLS0gL2Rldi9udWxsCisrKyBiL2c0MDEzMDIvc3JjL3N0bTMyZjEweF9pdC5oCkBAIC0wLDAgKzEsNjUgQEAKKy8qKgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKiBAZmlsZSAgICBQcm9qZWN0L1NUTTMyRjEweF9TdGRQZXJpcGhfVGVtcGxhdGUvc3RtMzJmMTB4X2l0LmggCisgICogQGF1dGhvciAgTUNEIEFwcGxpY2F0aW9uIFRlYW0KKyAgKiBAdmVyc2lvbiBWMy41LjAKKyAgKiBAZGF0ZSAgICAwOC1BcHJpbC0yMDExCisgICogQGJyaWVmICAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBoZWFkZXJzIG9mIHRoZSBpbnRlcnJ1cHQgaGFuZGxlcnMuCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqIEBhdHRlbnRpb24KKyAgKgorICAqIFRIRSBQUkVTRU5UIEZJUk1XQVJFIFdISUNIIElTIEZPUiBHVUlEQU5DRSBPTkxZIEFJTVMgQVQgUFJPVklESU5HIENVU1RPTUVSUworICAqIFdJVEggQ09ESU5HIElORk9STUFUSU9OIFJFR0FSRElORyBUSEVJUiBQUk9EVUNUUyBJTiBPUkRFUiBGT1IgVEhFTSBUTyBTQVZFCisgICogVElNRS4gQVMgQSBSRVNVTFQsIFNUTUlDUk9FTEVDVFJPTklDUyBTSEFMTCBOT1QgQkUgSEVMRCBMSUFCTEUgRk9SIEFOWQorICAqIERJUkVDVCwgSU5ESVJFQ1QgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIFdJVEggUkVTUEVDVCBUTyBBTlkgQ0xBSU1TIEFSSVNJTkcKKyAgKiBGUk9NIFRIRSBDT05URU5UIE9GIFNVQ0ggRklSTVdBUkUgQU5EL09SIFRIRSBVU0UgTUFERSBCWSBDVVNUT01FUlMgT0YgVEhFCisgICogQ09ESU5HIElORk9STUFUSU9OIENPTlRBSU5FRCBIRVJFSU4gSU4gQ09OTkVDVElPTiBXSVRIIFRIRUlSIFBST0RVQ1RTLgorICAqCisgICogPGgyPjxjZW50ZXI+JmNvcHk7IENPUFlSSUdIVCAyMDExIFNUTWljcm9lbGVjdHJvbmljczwvY2VudGVyPjwvaDI+CisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqLyAKKworLyogRGVmaW5lIHRvIHByZXZlbnQgcmVjdXJzaXZlIGluY2x1c2lvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyNpZm5kZWYgX19TVE0zMkYxMHhfSVRfSAorI2RlZmluZSBfX1NUTTMyRjEweF9JVF9ICisKKyNpZmRlZiBfX2NwbHVzcGx1cworIGV4dGVybiAiQyIgeworI2VuZGlmIAorCisvKiBJbmNsdWRlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCisjaW5jbHVkZSAic3RtMzJmMTB4LmgiCisKKy8qIEV4cG9ydGVkIHR5cGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKiBFeHBvcnRlZCBjb25zdGFudHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyogRXhwb3J0ZWQgbWFjcm8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qIEV4cG9ydGVkIGZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgTk1JX0hhbmRsZXIodm9pZCk7Cit2b2lkIEhhcmRGYXVsdF9IYW5kbGVyKHZvaWQpOwordm9pZCBNZW1NYW5hZ2VfSGFuZGxlcih2b2lkKTsKK3ZvaWQgQnVzRmF1bHRfSGFuZGxlcih2b2lkKTsKK3ZvaWQgVXNhZ2VGYXVsdF9IYW5kbGVyKHZvaWQpOwordm9pZCBTVkNfSGFuZGxlcih2b2lkKTsKK3ZvaWQgRGVidWdNb25fSGFuZGxlcih2b2lkKTsKK3ZvaWQgUGVuZFNWX0hhbmRsZXIodm9pZCk7Cit2b2lkIFN5c1RpY2tfSGFuZGxlcih2b2lkKTsKK3ZvaWQgVElNNF9JUlFIYW5kbGVyKHZvaWQpOwordm9pZCBVU0FSVDFfSVJRSGFuZGxlcih2b2lkKTsKK3ZvaWQgVUFSVDVfSVJRSGFuZGxlcih2b2lkKTsKK3ZvaWQgRE1BQ2hhbm5lbDRfSVJRSGFuZGxlcih2b2lkKTsKK3ZvaWQgRE1BQ2hhbm5lbDVfSVJRSGFuZGxlcih2b2lkKTsKK3ZvaWQgRVhUSTBfSVJRSGFuZGxlcih2b2lkKTsKK3ZvaWQgRVhUSTFfSVJRSGFuZGxlcih2b2lkKTsKK3ZvaWQgRE1BMV9DaGFubmVsMV9JUlFIYW5kbGVyKHZvaWQpOwordm9pZCBVU0JfSFBfQ0FOMV9UWF9JUlFIYW5kbGVyICh2b2lkKTsKK3ZvaWQgVVNCX0xQX0NBTjFfUlgwX0lSUUhhbmRsZXIgKHZvaWQpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyogX19TVE0zMkYxMHhfSVRfSCAqLworCisvKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIDIwMTEgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvaWNjX2FwZHVfbGliL0NQVS5IIGIvaWNjX2FwZHVfbGliL0NQVS5ICm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhOTMyY2UKLS0tIC9kZXYvbnVsbAorKysgYi9pY2NfYXBkdV9saWIvQ1BVLkgKQEAgLTAsMCArMSw1MiBAQAorLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCQkJCQkJCQkJCSBDIFAgVSDP4CC52CC1xCDTsiC8/iC2qCDS5SAKKyoKKyogICDX9yDV36O6CdXFvfgKKyogICCw5iCxvqO6CisqCcjVIMbao7oKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworCisjaWZuZGVmIF9fQ1BVX0hfXworI2RlZmluZSBfX0NQVV9IX18KKworIAorLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCQkJCQkJCQkJCSAgwOAg0M0gtqgg0uUgCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KKwl0eXBlZGVmICAgICAgICAgICAgdm9pZCAgICAgIENQVV9WT0lEOworCXR5cGVkZWYgIHVuc2lnbmVkICBjaGFyICAgICAgQ1BVX0NIQVI7ICAgICAgICAgICAgICAvKiAgOC1iaXQgY2hhcmFjdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKwl0eXBlZGVmICB1bnNpZ25lZCAgY2hhciAgICAgIENQVV9CT09MRUFOOyAgICAgICAgICAgLyogIDgtYml0IGJvb2xlYW4gb3IgbG9naWNhbCAgICAgICAgICAgICAgICAgICAgICAgICovCisJdHlwZWRlZiAgdW5zaWduZWQgIGNoYXIgICAgICBDUFVfSU5UMDhVOyAgICAgICAgICAgIC8qICA4LWJpdCB1bnNpZ25lZCBpbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCXR5cGVkZWYgICAgc2lnbmVkICBjaGFyICAgICAgQ1BVX0lOVDA4UzsgICAgICAgICAgICAvKiAgOC1iaXQgICBzaWduZWQgaW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKwl0eXBlZGVmICB1bnNpZ25lZCAgc2hvcnQgICAgIENQVV9JTlQxNlU7ICAgICAgICAgICAgLyogMTYtYml0IHVuc2lnbmVkIGludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICovCisJdHlwZWRlZiAgICBzaWduZWQgIHNob3J0ICAgICBDUFVfSU5UMTZTOyAgICAgICAgICAgIC8qIDE2LWJpdCAgIHNpZ25lZCBpbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCXR5cGVkZWYgIHVuc2lnbmVkICBpbnQgICAgICAgQ1BVX0lOVDMyVTsgICAgICAgICAgICAvKiAzMi1iaXQgdW5zaWduZWQgaW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKwl0eXBlZGVmICAgIHNpZ25lZCAgaW50ICAgICAgIENQVV9JTlQzMlM7ICAgICAgICAgICAgLyogMzItYml0ICAgc2lnbmVkIGludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgICovCisJdHlwZWRlZiAgICAgICAgICAgIGZsb2F0ICAgICBDUFVfRlAzMjsgICAgICAgICAgICAgIC8qIDMyLWJpdCBmbG9hdGluZyBwb2ludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCXR5cGVkZWYgICAgICAgICAgICBkb3VibGUgICAgQ1BVX0ZQNjQ7ICAgICAgICAgICAgICAvKiA2NC1iaXQgZmxvYXRpbmcgcG9pbnQgICAgICAgCQkJCQkgICAgKi8KKworCisJdHlwZWRlZiAgdW5zaWduZWQgIGNoYXIgICAgICB1Y2hhcjsKKwl0eXBlZGVmICB1bnNpZ25lZCAgc2hvcnQgICAgIHVzaG9ydDsKKwl0eXBlZGVmICB1bnNpZ25lZCAgaW50ICAgICAgIHVpbnQ7CisKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgkJCQkJCQkJCQkgICAgs6MgIMG/CisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KKworCisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoJCQkJCQkJCQkJICAgILHkICDBvyAKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworCisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9pY2NfYXBkdV9saWIvQ2FyZEVycm9yQ29kZS5oIGIvaWNjX2FwZHVfbGliL0NhcmRFcnJvckNvZGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOTU3ZTYzCi0tLSAvZGV2L251bGwKKysrIGIvaWNjX2FwZHVfbGliL0NhcmRFcnJvckNvZGUuaApAQCAtMCwwICsxLDU4IEBACisKKyNpZm5kZWYgQ0FSREVSUk5PX0gKKyNkZWZpbmUgQ0FSREVSUk5PX0gKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vIFQ9Q0wgRXJyb3IgQ29kZXMgICAgICAgICAgICAgICAgICAgICBCYXNlIEFkZHJlc3MgU3RhcnQ6ICAgICAtMTEwMAorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhc2UgQWRkcmVzcyBFbmQ6ICAgICAgIC0xMTUwCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKyNkZWZpbmUgVENMX0VSUl9CQVNFX1NUQVJUICAgICAgICAgICAgICAweDEwMDAKKworI2RlZmluZSBUQ0xfT0sgICAgICAgICAgICAgICAgICAgICAgICAgIDAKKy8vI2RlZmluZSBUQ0xfTk9UQUdFUlIgICAgICAgICAgICAgICAgICAgIChUQ0xfRVJSX0JBU0VfU1RBUlQgICArMHgxKQorI2RlZmluZSBUQ0xfQ1JDRVJSICAgICAgICAgICAgICAgICAgICAgIChUQ0xfRVJSX0JBU0VfU1RBUlQgICArMHgyKQorLy8jZGVmaW5lIFRDTF9QUklUWUVSUiAgICAgICAgICAgICAgICAgICAgKFRDTF9FUlJfQkFTRV9TVEFSVCAgICsweDMpCisjZGVmaW5lIFRDTF9PVEhFUkVSUiAgICAgICAgICAgICAgICAgICAgKFRDTF9FUlJfQkFTRV9TVEFSVCAgICsweDQpCisvLyNkZWZpbmUgVENMX1NFUk5SRVJSICAgICAgICAgICAgICAgICAgICAoVENMX0VSUl9CQVNFX1NUQVJUICAgKzB4NSkKKy8vI2RlZmluZSBUQ0xfQklUQ09VTlRFUlIgICAgICAgICAgICAgICAgIChUQ0xfRVJSX0JBU0VfU1RBUlQgICArMHg2KQorLy8jZGVmaW5lIFRDTF9QT0xMSU5HICAgICAgICAgICAgICAgICAgICAgKFRDTF9FUlJfQkFTRV9TVEFSVCAgICsweDcpCisvLyNkZWZpbmUgVENMX1JGX0NIQU5ORUwgICAgICAgICAgICAgICAgICAoVENMX0VSUl9CQVNFX1NUQVJUICAgKzB4OCkKKy8vI2RlZmluZSBUQ0xfTVVMVEFDVF9ESVNBQkxFRCAgICAgICAgICAgIChUQ0xfRVJSX0JBU0VfU1RBUlQgICArMHg5KQorLy8jZGVmaW5lIFRDTF9NVUxUQUNUX0VOQUJMRUQgICAgICAgICAgICAgKFRDTF9FUlJfQkFTRV9TVEFSVCAgICsweDEwKQorLy8jZGVmaW5lIFRDTF9DSURfTk9UX0FDVElWRSAgICAgICAgICAgICAgKFRDTF9FUlJfQkFTRV9TVEFSVCAgICsweDExKQorLy8jZGVmaW5lIFRDTF9CSVRBTlRJQ09MTCAgICAgICAgICAgICAgICAgKFRDTF9FUlJfQkFTRV9TVEFSVCAgICsweDEyKQorLy8jZGVmaW5lIFRDTF9VSURMRU4gICAgICAgICAgICAgICAgICAgICAgKFRDTF9FUlJfQkFTRV9TVEFSVCAgICsweDEzKQorI2RlZmluZSBUQ0xfQ0lESU5WQUxJRCAgICAgICAgICAgICAgICAgIChUQ0xfRVJSX0JBU0VfU1RBUlQgICArMHgxNCkKKyNkZWZpbmUgVENMX0FUU0xFTiAgICAgICAgICAgICAgICAgICAgICAoVENMX0VSUl9CQVNFX1NUQVJUICAgKzB4MTUpCisvLyNkZWZpbmUgVENMX05PX0FUU19BVkFJTEFCTEUgICAgICAgICAgICAoVENMX0VSUl9CQVNFX1NUQVJUICAgKzB4MTYpCisvLyNkZWZpbmUgVENMX0FUU19FUlJPUiAgICAgICAgICAgICAgICAgICAoVENMX0VSUl9CQVNFX1NUQVJUICAgKzB4MTcpCisjZGVmaW5lIFRDTF9GQVRBTF9QUk9UT0NPTCAgICAgICAgICAgICAgKFRDTF9FUlJfQkFTRV9TVEFSVCAgICsweDE4KQorLy8jZGVmaW5lIFRDTF9SRUNCVUZfT1ZFUkZMT1cgICAgICAgICAgICAgKFRDTF9FUlJfQkFTRV9TVEFSVCAgICsweDE5KQorLy8jZGVmaW5lIFRDTF9TRU5EQllURU5SICAgICAgICAgICAgICAgICAgKFRDTF9FUlJfQkFTRV9TVEFSVCAgICsweDIwKQorLy8jZGVmaW5lIFRDTF9UUkFOU01FUlJfSEFMVEVEICAgICAgICAgICAgKFRDTF9FUlJfQkFTRV9TVEFSVCAgICsweDIxKQorLy8jZGVmaW5lIFRDTF9UUkFOU01FUlJfTk9UQUcgICAgICAgICAgICAgKFRDTF9FUlJfQkFTRV9TVEFSVCAgICsweDIyKQorLy8jZGVmaW5lIFRDTF9CQVVEUkFURV9OT1RfU1VQUE9SVEVEX1BJQ0MgKFRDTF9FUlJfQkFTRV9TVEFSVCAgICsweDIzKQorLy8jZGVmaW5lIFRDTF9DSURfTk9UX1NVUFBPUlRFRCAgICAgICAgICAgKFRDTF9FUlJfQkFTRV9TVEFSVCAgICsweDI0KQorLy8jZGVmaW5lIFRDTF9OQURfTk9UX1NVUFBPUlRFRCAgICAgICAgICAgKFRDTF9FUlJfQkFTRV9TVEFSVCAgICsweDI1KQorLy8jZGVmaW5lIFRDTF9QUk9UT0NPTF9OT1RfU1VQUE9SVEVEICAgICAgKFRDTF9FUlJfQkFTRV9TVEFSVCAgICsweDI2KQorI2RlZmluZSBUQ0xfUFBTX0ZPUk1BVCAgICAgICAgICAgICAgICAgIChUQ0xfRVJSX0JBU0VfU1RBUlQgICArMHgyNykKKy8vI2RlZmluZSBUQ0xfRVJST1IgICAgICAgICAgICAgICAgICAgICAgIChUQ0xfRVJSX0JBU0VfU1RBUlQgICArMHgyOCkKKyNkZWZpbmUgVENMX05BRElOVkFMSUQgICAgICAgICAgICAgICAgICAoVENMX0VSUl9CQVNFX1NUQVJUICAgKzB4MzApCisvLyNkZWZpbmUgVENMX09USEVSX0VSUiAgICAgICAgICAgICAgICAgICAoVENMX0VSUl9CQVNFX1NUQVJUICAgKzB4MzEpCisvLyNkZWZpbmUgVENMX0JBVURSQVRFX05PVF9TVVBQT1JURURfUENEICAoVENMX0VSUl9CQVNFX1NUQVJUICAgKzB4MzIpCisvLyNkZWZpbmUgVENMX0NJRF9BQ1RJVkUgICAgICAgICAgICAgICAgICAoVENMX0VSUl9CQVNFX1NUQVJUICAgKzB4MzMpCisKKyNkZWZpbmUgVENMX0VSUl9CQVNFX0VORCAgICAgICAgICAgICAgICAoVENMX0VSUl9CQVNFX1NUQVJUICAgKzB4NDkpCisKKyNkZWZpbmUgVENMXzJMQVlFUl9FUlIgICAgICAgICAgICAgICAgCShUQ0xfRVJSX0JBU0VfU1RBUlQgICArMHg4MCkKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8vIENBUkRFUlJOT19ICisKZGlmZiAtLWdpdCBhL2ljY19hcGR1X2xpYi9JQ0NfQVBEVV9MSUIuSCBiL2ljY19hcGR1X2xpYi9JQ0NfQVBEVV9MSUIuSApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40Y2U0NjQ2Ci0tLSAvZGV2L251bGwKKysrIGIvaWNjX2FwZHVfbGliL0lDQ19BUERVX0xJQi5ICkBAIC0wLDAgKzEsNjggQEAKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkYgxKMgv+kg0+sgU0FNIMSjIL/pIElTTzc4MTYgx/0gtq8gv+IKKyoJCisqCQkJCQkJCQkgICBfX19fXyBJU083ODE2LTIg06bTw9Ct0unK/b7dtaXOuyDH/SC2r19fX19fCisqCisqICDD6CDK9qO6IL2r06bTw9Ct0umjqEFQRFWjqdOwyeS1vcnotqi1xLSryuTQrdLpKFRQRFUpus2907/ayc8KKyoKKyogIMXkINbDo7ogCisqICAgICAgICAgIENQVSAgICAgICAgIDogCisqICAgICAgICAgIM3iyrHW0yAgICAgIDogCisqICAgICAgICAgIENQVdTL0NDKsdbTIDogCisqICAgICAgICAgINTL0NC7t76zICAgIDogS2VpbCBBUk0gKCBSZWFsVmlldyBNREsgKSAgIHYzLjUwxsa94rDmsb4KKyogICAgICAgICAgu7e+s8no1sMgICAgOiAxKSDEo8q9OiAgICAKKyogICAgICAgICAgICAgICAgICAgICAgICAyKSDTxbuvOiDErMjPICggTGV2ZWwgMCAoLTAwKSAuLi4pCisqCisqICDXoiDS4qO6ILbUUkbEo7/pstnX98qxtcRTUEm907/aubLTw87KzOK1xLSmwO2howorKgorKiAgv+Igw/ujuiBJQ0NfQVBEVV9MSUJfVjIuMC5MSUIgCisqCisqICDX9yDV36O6IFpoYW5nX09TQDE2My5jb20KKyoKKyogILDmILG+o7ogMi4wCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorKiAgyNUgxtqjuiAyMDA5LTA1LTMxCisqCisqICAgICAgICBDb3B5cmlnaHQgKGMpIDIwMDgtMjAwOSAgIEJyYW5kLU5FVyBDLkEuUCBFbGVjdHJvbmljcyBUZWNobm9sb2d5IENPLixMVEQKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworCisjaWZuZGVmICAgX19JQ0NfQVBEVV9MSUJfSF9fCisjZGVmaW5lICAgX19JQ0NfQVBEVV9MSUJfSF9fCisKKworCisgICNpbmNsdWRlICAgIklDQ19BUERVX01hcGVyLkgiCisgICNpbmNsdWRlICAgIlQwVDEuSCIKKyAgI2luY2x1ZGUgICAiVENMLkgiCisgICNpbmNsdWRlICAgIklTT1VTQVJURHJpdmVyLkgiIAorICAjaW5jbHVkZSAgICJNRlJDNTAwLmgiCisgICNpbmNsdWRlICAgIk1mRXJyTm8uaCIKKyAgI2luY2x1ZGUgICAiUklDUmVnLmgiCisKKworLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCQkJCQkJCQkJCSAgs6Mgwb8KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworCisKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgkJCQkJCQkJCQkgILHkIMG/CisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KKworCisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogICAgICAgICAJCQkJCQkJCSAguq8gyv0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworCisKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pY2NfYXBkdV9saWIvSUNDX0FQRFVfTWFwZXIuYyBiL2ljY19hcGR1X2xpYi9JQ0NfQVBEVV9NYXBlci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5YjFiMzkKLS0tIC9kZXYvbnVsbAorKysgYi9pY2NfYXBkdV9saWIvSUNDX0FQRFVfTWFwZXIuYwpAQCAtMCwwICsxLDI2NCBAQAorLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgIElTTzc4MTYtMSBUMCxUMSgg06bTw9Ct0unK/b7dtaXOu7LjICkg06Yg08Mg0K0g0ukgsuMgx/0gtq8gCisqCQorKgkJCQkJCQkJICAgX19fX18gSVNPNzgxNi0yINOm08PQrdLpyv2+3bWlzrsgx/0gtq9fX19fXworKgorKiAgw+ggyvajuiBJQ7+o06bTw7Lj0K3S6dOwyeSzzNDyLL2r06bTw9Ct0umjqEFQRFWjqdOwyeS1vcnotqi1xLSryuTQrdLpKFRQRFUpus2907/ayc8KKyoKKyogIMXkINbDo7ogCisqICAgICAgICAgINTL0NC7t76zICAgIDogS2VpbCBBUk0gKCBSZWFsVmlldyBNREsgKSAgIHYzLjIzQcbGveKw5rG+CisqICAgICAgICAgILu3vrPJ6NbDICAgIDogMSkgxKPKvTogICAgICAgCisqICAgICAgICAgICAgICAgICAgICAgICAgMikg08W7rzogxKzIzyAoIExldmVsIDAgKC0wMCkgLi4uKQorKgorKiAg16Ig0uKjuiBUMCxUMbSryuTQrdLpt/u6z0lTTzc4MTYtMqOsRU1WserXvKO7CisqCisqICCy4yDD+6O6IElDQ19BUERVX01hcGVyLkggCisqCisqICDX9yDV36O6IFpoYW5nX09TQDE2My5jb20KKyoKKyogILDmILG+o7ogVjEuMCAgCisqICAgICAgICAgICAgICAgICAgCisqICDI1SDG2qO6IDIwMDgtMDMtMzEKKyoKKyogICAgQ29weXJpZ2h0IChjKSAyMDA4ICAgICAgICAgICAgIEJyYW5kLU5FVyBDLkEuUCBFbGVjdHJvbmljcyBUZWNobm9sb2d5IENPLixMVEQKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworCisgICNpbmNsdWRlICAgIkxJQl9JbmNsdWRlcy5IIgorICAgICAgICAgICAgIAorCisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoJCQkJCQkJCQkJICAgICCzoyDBvworKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisKKworLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCQkJCQkJCQkJCSAgICAgwOAg0M0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworCisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoJCQkJCQkJCQkJICAgICCx5CDBvworKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisvLz09PT0+Psirvtax5MG/CisgIHVuc2lnbmVkIGNoYXIgdWNNZW1Qb29sW01FTU9SWV9CVUZGRVJfU0laRV07CS8qIM2o0MW7urPlx/gs08O7p7+oyv2+3bLZ1/e1xMq1vMrE2rTmv9W85CAgICAgICAgICAgICAgICAgICAqLworICB1bnNpZ25lZCBjaGFyIHNjTWVtUG9vbFtNRU1PUllfQlVGRkVSX1NJWkVdOwkvKiDNqNDFu7qz5cf4LFNBTb+oyv2+3bLZ1/e1xMq1vMrE2rTmv9W85CAgICAgICAgICAgICAgICAgICAgKi8KKworCisvLz09PT0+Pr7Wsr+x5MG/CisgIElDQ1NUUlVDVCAgICAgSWNjSW5mbzsgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ7+o17TMrLao0uUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgUElDQ1NUUlVDVCAgICBQaWNjSW5mbzsJCSAgICAgICAgICAgICAgICAvKiBSRr+ozajQxdDFz6LK/b7dveG5uSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworCisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogICAgICAgICAJCQkJCQkJCSAgICAguq8gyv0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworCisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogICAgICAgICAJCQkJCQkJCSCz9SDKvCC7ryC/qCDQxSDPoiDK/SC+3SC94SC5uQorKgorKiAgw+ggyvajur3TtKXKvbfHvdO0pcq9ILP1IMq8ILuvIL+oINDFIM+iIMr9IL7dIL3hILm5CisqCisqICCyziDK/aO6aWNoICBpY7+ovdO/2rao0uUgIM/CsuPQrdLp0aHU8QorKiAgICAgICAgIGNpZCAgv6hJRLrFICAgICAgvdO0pcq9w7vT0Mqyw7S0y7LOyv2jrCC3x73TtKXKvcq508O0y7LOyv0KKyoKKyogILe1ILvYo7rO3gorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisgdm9pZCBHZW5fUmVzZXRJbmZvKCB1bnNpZ25lZCBjaGFyIGNpZCwgaW50IGljaCApCisgIHsKKwlzd2l0Y2ggKGljaCl7CisJCWNhc2UgUFJPVE9DT0xfVDBfQ0gwOiAgIC8vUFNBTTEKKwkJY2FzZSBQUk9UT0NPTF9UMF9DSDE6ICAgLy9QU0FNMgorICAgICAgICBjYXNlIFBST1RPQ09MX1QwX0NIMjogICAvL73TtKXKvUNQVQorCQljYXNlIFBST1RPQ09MX1QxX0NIMDoKKwkJICAgICBSZXNldEljY0luZm8oIGNpZCwmSWNjSW5mbyApOworCQlicmVhazsKKworCQljYXNlIFBST1RPQ09MX1RDTF9QQ0QwOgorCQkJIFJlc2V0UGljY0luZm8oIGNpZCwgJlBpY2NJbmZvICk7CisJCWJyZWFrOworCX0KKyAgfQorCisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogICAgICAgICAJCQkJCQkJCSC/qCDJzyC156OswOQguLQgzrsKKyoKKyogIMPoIMr2o7q907Slyr23x73TtKXKvSDJz7XnwOS4tM67CisqCisqICCyziDK/aO6aWNoICBpY7+ovdO/2rao0uUgIM/CsuPQrdLp0aHU8QorKiAgICAgICAgIGNpZCAgv6hJRLrFICAgICAgvdO0pcq9w7vT0Mqyw7S0y7LOyv2jrCC3x73TtKXKvcq508O0y7LOyv0KKyoKKyogILe1ILvYo7pJQ0Vycm9yQ29kZQorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisgdW5zaWduZWQgc2hvcnQgR2VuX1Bvd2VyT25DYXJkKCB1bnNpZ25lZCBjaGFyIGNpZCwgaW50IGljaCApCisgIHsKKwl1bnNpZ25lZCBzaG9ydCByY29kZSA9IDB4MDAzQTsKKwlzd2l0Y2ggKGljaCl7CisJCWNhc2UgUFJPVE9DT0xfVDBfQ0gwOiAgIC8vUFNBTTEKKwkJY2FzZSBQUk9UT0NPTF9UMF9DSDE6ICAgLy9QU0FNMgorICAgICAgICBjYXNlIFBST1RPQ09MX1QwX0NIMjogICAvL73TtKXKvUNQVQorCQljYXNlIFBST1RPQ09MX1QxX0NIMDoKKwkJCSBSZXNldEljY0luZm8oY2lkLCZJY2NJbmZvKTsKKwkJCSByY29kZSA9IFQwUG93ZXJPbkNhcmQoaWNoKTsKKwkJYnJlYWs7CisKKwkJY2FzZSBQUk9UT0NPTF9UQ0xfUENEMDoKKwkJCXJjb2RlID0gVGNsR2V0QXRzKGNpZCwmUGljY0luZm8pOworCQlicmVhazsKKwl9CisJcmV0dXJuIHJjb2RlOworICB9CisKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgICAgICAgIAkJCQkJCQkJICAgICAgICC/qCDPwiC15yAKKyoKKyogIMPoIMr2o7q/qM/CtecKKyoKKyogILLOIMr9o7ppY2ggIGljv6i907/atqjS5SAgz8Ky49Ct0unRodTxCisqCisqICC3tSC72KO6SUNFcnJvckNvZGUKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworIHZvaWQgR2VuX1Bvd2VyT2ZmQ2FyZCggaW50IGljaCApCisgIHsKKwlzd2l0Y2ggKGljaCl7CisJCWNhc2UgUFJPVE9DT0xfVDBfQ0gwOiAgIC8vUFNBTTEKKwkJY2FzZSBQUk9UT0NPTF9UMF9DSDE6ICAgLy9QU0FNMgorICAgICAgICBjYXNlIFBST1RPQ09MX1QwX0NIMjogICAvL73TtKXKvUNQVQorCQljYXNlIFBST1RPQ09MX1QxX0NIMDoKKwkJCVJlc2V0SWNjSW5mbygwLCZJY2NJbmZvKTsKKwkJCVQwUG93ZXJPZmZDYXJkKGljaCk7CisJCWJyZWFrOworCisJCWNhc2UgUFJPVE9DT0xfVENMX1BDRDA6CisJCWJyZWFrOworCX0KKwlyZXR1cm4gOworICB9CisKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgICAgICAgIAkJCQkJCQkJICAgICAgICC/qCDIyCC4tCDOuworKgorKiAgw+ggyvajur3TtKXKvbfHvdO0pcq9IMnPtefA5Li0zrsKKyoKKyogILLOIMr9o7ppY2ggIGljv6i907/atqjS5SAgz8Ky49Ct0unRodTxCisqICAgICAgICAgY2lkICC/qElEusUgICAgICC907Slyr3Du9PQyrLDtLTLss7K/aOsILfHvdO0pcq9yrnTw7TLss7K/QorKgorKiAgt7Ugu9ijuklDRXJyb3JDb2RlCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KKyB1bnNpZ25lZCBzaG9ydCBHZW5fUmVzZXRDYXJkKCB1bnNpZ25lZCBjaGFyIGNpZCwgaW50IGljaCApCisgIHsKKwl1bnNpZ25lZCBzaG9ydCByY29kZSA9IDB4MDAzQTsKKwlzd2l0Y2ggKGljaCl7CisJCWNhc2UgUFJPVE9DT0xfVDBfQ0gwOiAgIC8vUFNBTTEKKwkJY2FzZSBQUk9UT0NPTF9UMF9DSDE6ICAgLy9QU0FNMgorICAgICAgICBjYXNlIFBST1RPQ09MX1QwX0NIMjogICAvL73TtKXKvUNQVQorCQkJcmNvZGUgPSBUMFJlc2V0Q2FyZChpY2gsJkljY0luZm8pOworCQkJLy9pZihJY2NJbmZvLlQgPT0gMSkgaWNoKys7CisJCWJyZWFrOworCQkKKwkJY2FzZSBQUk9UT0NPTF9UMV9DSDA6CisJCQlyY29kZSA9IFQwUmVzZXRDYXJkKGljaCwmSWNjSW5mbyk7CisJCWJyZWFrOworCisJCWNhc2UgUFJPVE9DT0xfVENMX1BDRDA6CisJCQlyY29kZSA9IFRjbEdldEF0cyhjaWQsJlBpY2NJbmZvKTsKKwkJYnJlYWs7CisJfQorCXJldHVybiByY29kZTsKKyAgfQorCisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogICAgICAgICAJCQkJCQkJCSAgICC/qCDK/SC+3SC9uyC7uyCzzCDQ8gorKgorKiAgw+ggyvajur+oyv2+3b27u7uzzNDyLMr9vt20q8rk0+u908rVICAgICAgICAgICAg1N3Du9PQyrnTwz8KKyoKKyogILLOIMr9o7ppY2ggICAgICAgIGljv6i907/atqjS5SAgz8Ky49Ct0unRodTxCisqICAgICAgICAgY2lkICAgICAgIL+oSUS6xSAgICAgIL3TtKXKvcO709DKssO0tMuyzsr9o6wgt8e907Slyr3KudPDtMuyzsr9CisqICAgICAgICAgbmFkX3NlbmQKKyoKKyogILe1ILvYo7pJQ0Vycm9yQ29kZQorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisgdW5zaWduZWQgc2hvcnQgR2VuX0NoYW5nZUlTRkMoIHVuc2lnbmVkIGNoYXIgY2lkLCB1bnNpZ25lZCBjaGFyIG5hZF9zZW5kLCBpbnQgaWNoICkKKyAgeworCXVuc2lnbmVkIHNob3J0IHJjb2RlID0gMHgwMDNBOworCXN3aXRjaCAoaWNoKXsKKwkJY2FzZSBQUk9UT0NPTF9UMV9DSDA6CisJCQlyY29kZSA9IFQxSUZTQyhjaWQsbmFkX3NlbmQsaWNoJjB4ZmZmZmZmZmUpOworCQlicmVhazsKKwl9CisJcmV0dXJuIHJjb2RlOworICB9CisKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgICAgICAgIAkJCQkJCQkJICAgIL+oIMr9IL7dIL27ILu7ILPMINDyCisqCisqICDD6CDK9qO6v6jK/b7dvbu7u7PM0PIsyv2+3bSryuTT673TytUgICAKKyoKKyogILLOIMr9o7ppY2ggICAgICAgIGljv6i907/atqjS5SAgz8Ky49Ct0unRodTxCisqICAgICAgICAgY2lkICAgICAgIL+oSUS6xSAgICAgIL3TtKXKvcO709DKssO0tMuyzsr9o6wgt8e907Slyr3KudPDtMuyzsr9CisqICAgICAgICAgKmNtZF9idWYgILeiy821xMP8we67urPlx/jWuNXrCisqICAgICAgICAgY21kX2xlbiAgILeiy821xMP8we6zpLbICisqICAgICAgICAgRXhwZWN0ZWRSZXNwb25zZUxlbmd0aAorKiAgICAgICAgICoqcmVjX2J1ZiAgICAgIL3TytXK/b7du7qz5cf41rjV6worKiAgICAgICAgICpyZWNfYnVmX2xlbiAgIL3TytXK/b7ds6S2yAorKiAgICAgICAgIGljaCAgICAgICAgICAgIGljv6i907/atqjS5SAgz8Ky49Ct0unRodTxCisqCisqICC3tSC72KO6SUNFcnJvckNvZGUKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworIHVuc2lnbmVkIHNob3J0IEdlbl9FeGNoYW5nZSggdW5zaWduZWQgY2hhciBjaWQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBuYWRfc2VuZCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpjbWRfYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBjbWRfbGVuLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgRXhwZWN0ZWRSZXNwb25zZUxlbmd0aCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICoqcmVjX2J1ZiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpyZWNfYnVmX2xlbiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaWNoICkKKyAgeworCXVuc2lnbmVkIHNob3J0IHJjb2RlID0gMHgwMDNBOworLy8JcHJpbnRzZW5kKGNtZF9idWYsY21kX2xlbik7CisJc3dpdGNoIChpY2gpeworCQljYXNlIFBST1RPQ09MX1QwX0NIMDogICAvL1BTQU0xCisJCWNhc2UgUFJPVE9DT0xfVDBfQ0gxOiAgIC8vUFNBTTIKKyAgICAgICAgY2FzZSBQUk9UT0NPTF9UMF9DSDI6ICAgLy+907Slyr1DUFUKKwkJCXJjb2RlID0gVDBFeGNoYW5nZShjbWRfYnVmLGNtZF9sZW4scmVjX2J1ZixyZWNfYnVmX2xlbixpY2gpOworCQlicmVhazsKKwkJCisJCWNhc2UgUFJPVE9DT0xfVDFfQ0gwOgorCQkJcmNvZGUgPSBUMUV4Y2hhbmdlKGNpZCxuYWRfc2VuZCxjbWRfYnVmLGNtZF9sZW4scmVjX2J1ZixyZWNfYnVmX2xlbixpY2gmMHhmZmZmZmZmZSk7CisJCWJyZWFrOworCisJCWNhc2UgUFJPVE9DT0xfVENMX1BDRDA6CisJCQlyY29kZSA9IFRjbEV4Y2hhbmdlKGNpZCxuYWRfc2VuZCxjbWRfYnVmLGNtZF9sZW4sRXhwZWN0ZWRSZXNwb25zZUxlbmd0aCxyZWNfYnVmLHJlY19idWZfbGVuKTsKKwkJYnJlYWs7CisJfQorLy8JcHJpbnRyY3YoKnJlY19idWYsKnJlY19idWZfbGVuKTsKKwlyZXR1cm4gcmNvZGU7CisgIH0KKwpkaWZmIC0tZ2l0IGEvaWNjX2FwZHVfbGliL0lDQ19BUERVX01hcGVyLmggYi9pY2NfYXBkdV9saWIvSUNDX0FQRFVfTWFwZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZDdiYWMyCi0tLSAvZGV2L251bGwKKysrIGIvaWNjX2FwZHVfbGliL0lDQ19BUERVX01hcGVyLmgKQEAgLTAsMCArMSwxOTggQEAKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJU083ODE2LTEgVDAsVDEoINOm08PQrdLpyv2+3bWlzruy4yApINOmINPDINCtINLpILLjIMf9ILavIAorKgkKKyoJCQkJCQkJCSAgIF9fX19fIElTTzc4MTYtMiDTptPD0K3S6cr9vt21pc67IMf9ILavX19fX18KKyoKKyogIMPoIMr2o7ogvavTptPD0K3S6aOoQVBEVaOp07DJ5LW9yei2qLXEtKvK5NCt0ukoVFBEVSm6zb3Tv9rJzworKgorKiAgxeQg1sOjuiAKKyogICAgICAgICAgQ1BVICAgICAgICAgOiAKKyogICAgICAgICAgzeLKsdbTICAgICAgOiAKKyogICAgICAgICAgQ1BV1MvQ0Mqx1tMgOiAKKyogICAgICAgICAg1MvQ0Lu3vrMgICAgOiBLZWlsIEFSTSAoIFJlYWxWaWV3IE1ESyApICAgdjMuNTDGxr3isOaxvgorKiAgICAgICAgICC7t76zyejWwyAgICA6IDEpIMSjyr06ICAgIAorKiAgICAgICAgICAgICAgICAgICAgICAgIDIpINPFu686IMSsyM8gKCBMZXZlbCAwICgtMDApIC4uLikKKyoKKyogINeiINLio7ogVDAsVDG0q8rk0K3S6bf7us9JU083ODE2LTKjrEVNVrHq17yjuworKgorKiAgsuMgw/ujuiBJQ0NfQVBEVV9NYXBlci5IIAorKgorKiAg1/cg1d+juiBaaGFuZ19PU0AxNjMuY29tCisqCisqICCw5iCxvqO6IFYyLjAgIAorKiAgICAgICAgICAgICAgICAgIAorKiAgyNUgxtqjuiAyMDA5LTA1LTIxCisqCisqICAgICAgICBDb3B5cmlnaHQgKGMpIDIwMDgtMjAwOSAgIEJyYW5kLU5FVyBDLkEuUCBFbGVjdHJvbmljcyBUZWNobm9sb2d5IENPLixMVEQKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworCisjaWZuZGVmIF9fSUNDX0FQRFVfTWFwZXJfSF9fCisjZGVmaW5lIF9fSUNDX0FQRFVfTWFwZXJfSF9fCisKKworLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCQkJCQkJCQkJCSAgICAgs6Mgwb8KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworICAjZGVmaW5lCVBST1RPQ09MX1QwX0NIMAkJCVNMT1RfUFNBTTFfSUNDCQkgICAgLyogUFNBTTEJIAkJCQkJCQkJCQkgICAgICAgICAqLworICAjZGVmaW5lCVBST1RPQ09MX1QwX0NIMQkJCVNMT1RfUFNBTTJfSUNDCQkgICAgLyogUFNBTTIJIAkJCQkJCQkJCQkgICAgICAgICAqLworICAjZGVmaW5lCVBST1RPQ09MX1QwX0NIMgkJCVNMT1RfQ1BVX0lDQwkJICAgIC8qIFBTQU0zCdXiwO/W99Kqyse9073TtKXKvUNQVb+oICAgICAJCQkJCSAqLworCisvLyNkZWZpbmUgU0xPVF9QU0FNMV9JQ0MgICAgMCAgICAgIC8vIFBTQU0xCisvLyNkZWZpbmUgU0xPVF9QU0FNMl9JQ0MgICAgMSAgICAgIC8vIFBTQU0yCisvLyNkZWZpbmUgU0xPVF9DUFVfSUNDICAgICAgMiAgICAgIC8vIL3TtKXKvUNQVQorCisKKyAgI2RlZmluZSAgIFBST1RPQ09MX1QxX0NIMAkJCSgxPDw0KSsxCS8qIFBTQU1fUE9XRVIJIDc4MTYtMyBUPTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworICAjZGVmaW5lICAgUFJPVE9DT0xfVENMX1BDRDAJCTB4ODAJCS8qIDE0NDQzLTQgVD1DTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisKKyAgI2RlZmluZSAgIE1FTU9SWV9CVUZGRVJfU0laRSAgICAgIDI1NiAgICAgICAgIC8qIM2o0MW7urPlx/i089ChtqjS5SBQU0FNv6i1yCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoJCQkJCQkJCQkJICAgICDA4CDQzQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgkJCQkJCQkJCQkgICAgILHkIMG/CisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KKworIGV4dGVybiB1bnNpZ25lZCBjaGFyIHVjTWVtUG9vbFtNRU1PUllfQlVGRkVSX1NJWkVdOwkvKiDNqNDFu7qz5cf4LNPDu6e/qMr9vt2y2df3tcTKtbzKxNq05r/VvOQgICAgICAgICAgICovCisgZXh0ZXJuIHVuc2lnbmVkIGNoYXIgc2NNZW1Qb29sW01FTU9SWV9CVUZGRVJfU0laRV07CS8qIM2o0MW7urPlx/gsU0FNv6jK/b7dstnX97XEyrW8ysTatOa/1bzkICAgICAgICAgICAgKi8KKworCisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogICAgICAgICAJCQkJCQkJCSAgICAguq8gyv0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworIGV4dGVybiB2b2lkIEdlbl9SZXNldEluZm8oIHVuc2lnbmVkIGNoYXIgY2lkLCBpbnQgaWNoICk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qILP1IMq8ILuvIL+oINDFIM+iIMr9IL7dIL3hILm5ICAgICAgICAgICAgICAgICAgICAgKi8KKyBleHRlcm4gdW5zaWduZWQgc2hvcnQgR2VuX1Bvd2VyT25DYXJkKCB1bnNpZ25lZCBjaGFyIGNpZCwgaW50IGljaCApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiC/qCDJzyC156OswOQguLQgzrsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgZXh0ZXJuIHZvaWQgR2VuX1Bvd2VyT2ZmQ2FyZCggaW50IGljaCApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiC/qCDPwiC15yAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgZXh0ZXJuIHVuc2lnbmVkIHNob3J0IEdlbl9SZXNldENhcmQoIHVuc2lnbmVkIGNoYXIgY2lkLCBpbnQgaWNoICk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIL+oIMjIILi0IM67ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyBleHRlcm4gdW5zaWduZWQgc2hvcnQgR2VuX0NoYW5nZUlTRkMoIHVuc2lnbmVkIGNoYXIgY2lkLCB1bnNpZ25lZCBjaGFyIG5hZF9zZW5kLCBpbnQgaWNoICk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIL+oIMr9IL7dIL27ILu7ILPMINDyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyBleHRlcm4gdW5zaWduZWQgc2hvcnQgR2VuX0V4Y2hhbmdlKCB1bnNpZ25lZCBjaGFyIGNpZCwgdW5zaWduZWQgY2hhciBuYWRfc2VuZCwgdW5zaWduZWQgY2hhciAqY21kX2J1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGNtZF9sZW4sIHVuc2lnbmVkIGNoYXIgRXhwZWN0ZWRSZXNwb25zZUxlbmd0aCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqKnJlY19idWYsIHVuc2lnbmVkIGNoYXIgKnJlY19idWZfbGVuLCBpbnQgaWNoICk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIL+oIMr9IL7dIL27ILu7ILPMINDyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworCisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogICAgICAgICAJCQkJCQkJCSCz9SDKvCC7ryC/qCDQxSDPoiDK/SC+3SC94SC5uQorKgorKiAgw+ggyvajur3TtKXKvbfHvdO0pcq9ILP1IMq8ILuvIL+oINDFIM+iIMr9IL7dIL3hILm5CisqCisqICCyziDK/aO6aWNoICBpY7+ovdO/2rao0uUgIM/CsuPQrdLp0aHU8QorKiAgICAgICAgIGNpZCAgv6hJRLrFICAgICAgvdO0pcq9w7vT0Mqyw7S0y7LOyv2jrCC3x73TtKXKvcq508O0y7LOyv0KKyoKKyogILe1ILvYo7rO3gorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisvLyB2b2lkIEdlbl9SZXNldEluZm8oIHVuc2lnbmVkIGNoYXIgY2lkLCBpbnQgaWNoICkKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgICAgICAgIAkJCQkJCQkJIL+oIMnPILXno6zA5CC4tCDOuworKgorKiAgw+ggyvajur3TtKXKvbfHvdO0pcq9IMnPtefA5Li0zrsKKyoKKyogILLOIMr9o7ppY2ggIGljv6i907/atqjS5SAgz8Ky49Ct0unRodTxCisqICAgICAgICAgY2lkICC/qElEusUgICAgICC907Slyr3Du9PQyrLDtLTLss7K/aOsILfHvdO0pcq9yrnTw7TLss7K/QorKgorKiAgt7Ugu9ijuklDRXJyb3JDb2RlCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KKy8vIHVuc2lnbmVkIHNob3J0IEdlbl9Qb3dlck9uQ2FyZCggdW5zaWduZWQgY2hhciBjaWQsIGludCBpY2ggKQorLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICAgICAgICAgCQkJCQkJCQkgICAgICAgIL+oIM/CILXnIAorKgorKiAgw+ggyvajur+oz8K15worKgorKiAgss4gyv2jumljaCAgaWO/qL3Tv9q2qNLlICDPwrLj0K3S6dGh1PEKKyoKKyogILe1ILvYo7pJQ0Vycm9yQ29kZQorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisvLyB2b2lkIEdlbl9Qb3dlck9mZkNhcmQoIGludCBpY2ggKQorLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICAgICAgICAgCQkJCQkJCQkgICAgICAgIL+oIMjIILi0IM67CisqCisqICDD6CDK9qO6vdO0pcq9t8e907Slyr0gyc+158DkuLTOuworKgorKiAgss4gyv2jumljaCAgaWO/qL3Tv9q2qNLlICDPwrLj0K3S6dGh1PEKKyogICAgICAgICBjaWQgIL+oSUS6xSAgICAgIL3TtKXKvcO709DKssO0tMuyzsr9o6wgt8e907Slyr3KudPDtMuyzsr9CisqCisqICC3tSC72KO6SUNFcnJvckNvZGUKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworLy8gdW5zaWduZWQgc2hvcnQgR2VuX1Jlc2V0Q2FyZCggdW5zaWduZWQgY2hhciBjaWQsIGludCBpY2ggKQorLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICAgICAgICAgCQkJCQkJCQkgICAgv6ggyv0gvt0gvbsgu7sgs8wg0PIKKyoKKyogIMPoIMr2o7q/qMr9vt29u7u7s8zQ8izK/b7dtKvK5NPrvdPK1SAgICAgICAgICAgINTdw7vT0Mq508M/CisqCisqICCyziDK/aO6aWNoICAgICAgICBpY7+ovdO/2rao0uUgIM/CsuPQrdLp0aHU8QorKiAgICAgICAgIGNpZCAgICAgICC/qElEusUgICAgICC907Slyr3Du9PQyrLDtLTLss7K/aOsILfHvdO0pcq9yrnTw7TLss7K/QorKiAgICAgICAgIG5hZF9zZW5kCisqCisqICC3tSC72KO6SUNFcnJvckNvZGUKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworLy8gdW5zaWduZWQgc2hvcnQgR2VuX0NoYW5nZUlTRkMoIHVuc2lnbmVkIGNoYXIgY2lkLCB1bnNpZ25lZCBjaGFyIG5hZF9zZW5kLCBpbnQgaWNoICkKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgICAgICAgIAkJCQkJCQkJICAgIL+oIMr9IL7dIL27ILu7ILPMINDyCisqCisqICDD6CDK9qO6v6jK/b7dvbu7u7PM0PIsyv2+3bSryuTT673TytUgICAKKyoKKyogILLOIMr9o7ppY2ggICAgICAgIGljv6i907/atqjS5SAgz8Ky49Ct0unRodTxCisqICAgICAgICAgY2lkICAgICAgIL+oSUS6xSAgICAgIL3TtKXKvcO709DKssO0tMuyzsr9o6wgt8e907Slyr3KudPDtMuyzsr9CisqICAgICAgICAgKmNtZF9idWYgILeiy821xMP8we67urPlx/jWuNXrCisqICAgICAgICAgY21kX2xlbiAgILeiy821xMP8we6zpLbICisqICAgICAgICAgRXhwZWN0ZWRSZXNwb25zZUxlbmd0aAorKiAgICAgICAgICoqcmVjX2J1ZiAgICAgIL3TytXK/b7du7qz5cf41rjV6worKiAgICAgICAgICpyZWNfYnVmX2xlbiAgIL3TytXK/b7ds6S2yAorKiAgICAgICAgIGljaCAgICAgICAgICAgIGljv6i907/atqjS5SAgz8Ky49Ct0unRodTxCisqCisqICC3tSC72KO6SUNFcnJvckNvZGUKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworLy8gdW5zaWduZWQgc2hvcnQgR2VuX0V4Y2hhbmdlKCB1bnNpZ25lZCBjaGFyIGNpZCwgCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgbmFkX3NlbmQsIAorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpjbWRfYnVmLAorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGNtZF9sZW4sIAorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIEV4cGVjdGVkUmVzcG9uc2VMZW5ndGgsIAorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICoqcmVjX2J1ZiwgCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKnJlY19idWZfbGVuLCAKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGljaCApCisKKworCisKKworCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaWNjX2FwZHVfbGliL0lTT1VTQVJURHJpdmVyLkggYi9pY2NfYXBkdV9saWIvSVNPVVNBUlREcml2ZXIuSApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNGMyM2QwCi0tLSAvZGV2L251bGwKKysrIGIvaWNjX2FwZHVfbGliL0lTT1VTQVJURHJpdmVyLkgKQEAgLTAsMCArMSwxNzYgQEAKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElTTzc4MTYgVVNBUlQgtdcgsuMg07IgvP4gvdMgv9ogx/0gtq8gCisqCQorKgkJCQkJCQkJCSAgICBfX19fX9OyILz+ILXXILLjICg3ODE2KSDH/SC2r19fX19fCisqCisqICDD6CDK9qO6INb30qrN6rPJCisqICAgICAgICAgICAxKSDS7LK9v6iy6dGvt73KvbbByKEvt6LLzdK7uPbX1rf7ICAgICAgICAo1vfSqsrH1NqxvrLjtffTwykKKyogICAgICAgICAgIDIpIElDv6i1xLi0zrujrMnPteejrM/CteejrLzssuK1yNOyvP6y2df3ICjU2rG+suPT61QwVDGy47vhtffTwykKKyogICAgICAgICAgIDMpIFQwLFQx0K3S6bSryuTK/b7dtaXUqtOzyeQgICAgICAgICAgICAgICjW99KqysfU2lQwVDGy47X308MpCisqCisqICDF5CDWw6O6IAorKiAgICAgICAgICBDUFUgICAgICAgICA6IAorKiAgICAgICAgICDN4sqx1tMgICAgICA6IAorKiAgICAgICAgICBDUFXUy9DQyrHW0yA6IAorKiAgICAgICAgICDUy9DQu7e+syAgICA6IEtlaWwgQVJNICggUmVhbFZpZXcgTURLICkgICB2My41MMbGveKw5rG+CisqICAgICAgICAgILu3vrPJ6NbDICAgIDogMSkgxKPKvTogICAgCisqICAgICAgICAgICAgICAgICAgICAgICAgMikg08W7rzogxKzIzyAoIExldmVsIDAgKC0wMCkgLi4uKQorKgorKiAg16Ig0uKjuiC4tM6706a08LXIuf2zzLf7us9JU083ODE2LTKjrEVNVrHq17yjuworKgorKiAgsuMgw/ujuiBJU09VU0FSVERyaXZlci5DIAorKgorKiAg1/cg1d+juiBaaGFuZ19PU0AxNjMuY29tCisqCisqICCw5iCxvqO6IFYyLjAgIAorKiAgICAgICAgICAgICAgICAgIAorKiAgyNUgxtqjuiAyMDA4LTA1LTIxCisqCisqICAgICAgICBDb3B5cmlnaHQgKGMpIDIwMDgtMjAwOSAgIEJyYW5kLU5FVyBDLkEuUCBFbGVjdHJvbmljcyBUZWNobm9sb2d5IENPLixMVEQKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworCisKKyNpZm5kZWYgX19JU09VU0FSVERyaXZlcl9IX18KKyNkZWZpbmUgX19JU09VU0FSVERyaXZlcl9IX18KKworCisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoJCQkJCQkJCQkJICAgICCzoyDBvworKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisvL9PDu6e2qMqxxvcKKyNkZWZpbmUgTUFYVVNFUlRJTUVSUwkJCTE2CQkvL9PDu6e2qMqxxvfK/cG/CisjZGVmaW5lIE1BWFRJTUVSU1RJQ0sJCQkxMDAwMDAJLy/Tw7untqjKscb31+6088qxvOSzpLbIKLWlzrsxbXMpCisvLworI2RlZmluZSBVRVJUSU1FU1RBVFVTX1NUT1AJCTAJCS8v08O7p7aoyrHG99e0zKwtzaPWuQorI2RlZmluZSBVRVJUSU1FU1RBVFVTX1JVTgkJMQkJLy/Tw7untqjKscb317TMrC3Uy9DQCisjZGVmaW5lIFVFUlRJTUVTVEFUVVNfUklOSU5HCTIJCS8v08O7p7aoyrHG99e0zKwttb3KsQorI2RlZmluZSBVRVJUSU1FU1RBVFVTX0VSUk9SCQkzCQkvL9PDu6e2qMqxxvfXtMysLbW9yrEKKworLy/Tw7untqjKscb3SUQKKyNkZWZpbmUgVElEX0dFTlRJTUVSCQkwCQkvL82o08O2qMqxxvcs08PT2tHTyrFEZWxheQorI2RlZmluZSBUSURfTUFJTkxPT1BUSU1FUgkxCQkvL9b30a27t7/Y1sa/qLaoyrHG9worI2RlZmluZSBUSURfSUNDQ0hBUlRJTUVSCTIJCS8v19a3+7SryuSzrMqxtqjKscb3CisjZGVmaW5lIFRJRF9JQ0NUSU1FUgkJMwkJLy9JQ7+otqjKscb3CisjZGVmaW5lIFRJRF9QSUNDVElNRVIJCTQJCS8vSUO/qLaoyrHG9worCisjZGVmaW5lIFRJRF9MRURBVElNRVIJCTUJCS8vTEVELUG2qMqxxvcKKyNkZWZpbmUgVElEX0xFREJUSU1FUgkJNgkJLy9MRUQtQraoyrHG9worI2RlZmluZSBUSURfTEVEQ1RJTUVSCQk3CQkvL0xFRC1DtqjKscb3CisjZGVmaW5lIFRJRF9CRUVQVElNRVIJCTgJCS8vQkVFULaoyrHG9worCisKKy8vPT09PT09PT09PT09Pj4gU0FNIENhcmQgVVNBUlS2qNLlCisjZGVmaW5lIFBTQU0xX1VTQVJUICAgVVNBUlQyICAgICAvLyBQU0FNMSAgLy/Vxb2tzrCjrMuuv9jG99PDtcTKx1VBUlQyCisvLzIwMTQuMDguMTkgvqPHvyBHMjEwMTMwMMuuv9jG9yBTQU3KudPDVVNBUlQzCisjZGVmaW5lIFBTQU0yX1VTQVJUICAgVVNBUlQzICAgICAvLyBQU0FNMgorI2RlZmluZSBDUFVfVVNBUlQgICAgIFVTQVJUMiAgICAgLy8gvdO0pcq9Q1BVv6gKKworCisvLz09PT09PT09PT09PT4+IFBTQU0xIENhcmQKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisjZGVmaW5lIFBpbl9TQU0xX0NBUkRfSU8JCQlHUElPX1Bpbl85CQkJLyogUEE5IL+oyv2+3SAgSVJRIDc4MTYqLworI2RlZmluZSBQaW5fU0FNMV9DQVJEX0NMSwkJCUdQSU9fUGluXzgJCQkvKiBQQTggv6jKsdbTICBJUlEgNzgxNiovCisjZGVmaW5lIFBpbl9TQU0xX0NBUkRfUkVBRFkJCSAgICBHUElPX1Bpbl8xMgkJCS8qIFBBMTIgv6i+zdD3vOyy4tDFusUgIElSUSA3ODE2Ki8KKyNkZWZpbmUgUGluX1NBTTFfQ0FSRF9SRVNFVAkJICAgIEdQSU9fUGluXzExCQkJLyogUEExMSC/qLi0zru/2NbG0MW6xSAgUlNUNzgxNiovCisjZGVmaW5lIFBpbl9TQU0xX0NBUkRfVkNDCQkJR1BJT19QaW5fMAkJCS8qIFBCMCC/qLXn1LS/2NbG0MW6xSAgUG93ZXJPbiovCisvLyNkZWZpbmUgUGluX1NBTTFfQ0FSRF8zNQkJCUdQSU9fUGluXzcJCQkvKiBQQzA3ILXn1LS159G5v9jWxr/Y1sbQxbrFKi8KKy8vI2RlZmluZSBQaW5fU0FNMV9DQVJEX0NBUkQJCUdQSU9fUGluXzgJCQkvKiBQQzA4IL+oxqyy5cjrvOyy4tDFusUqLworCisjZGVmaW5lICBHUElPX1NBTTFfQ0FSRF9JT0NMSyAgICAgICAgIEdQSU9BCisjZGVmaW5lICBHUElPX1NBTTFfQ0FSRF9SRUFEWSAgICAgICAgIEdQSU9BCisjZGVmaW5lICBHUElPX1NBTTFfQ0FSRF9SRVNFVCAgICAgICAgIEdQSU9BCisjZGVmaW5lICBHUElPX1NBTTFfQ0FSRF9WQ0MgICAgICAgICAgIEdQSU9CCisKKy8vPT09PT09PT09PT09Pj4gUFNBTTIgQ2FyZAorLy8yMDA5LjA2LjA00e7OxMrZuMS2r6OssNG53L3FtqjS5bjEzqpDUFW/qMuuv9jG99StwO3NvLbU06a1xLncvcUKKyNkZWZpbmUgUGluX1NBTTJfQ0FSRF9JTwkJCUdQSU9fUGluXzEwCQkJLyogUEIxMCC/qMr9vt0gIElSUSA3ODE2Ki8KKyNkZWZpbmUgUGluX1NBTTJfQ0FSRF9DTEsJCQlHUElPX1Bpbl8xMQkJCS8qIFBCMTAgv6jKsdbTICBJUlEgNzgxNiovCisjZGVmaW5lIFBpbl9TQU0yX0NBUkRfUkVTRVQJCSAgICBHUElPX1Bpbl84CQkJLyogUEEwIL+ouLTOu7/Y1sbQxbrFICBSU1Q3ODE2Ki8KKy8vMjAxNC4wOC4xOSC+o8e/IEcyMTAxMzAwy66/2Mb3ILK71NnKudPDUkVBRFksVkNDLFZDQ19TRUxFQ1TQxbrFCisvLyNkZWZpbmUgUGluX1NBTTJfQ0FSRF9SRUFEWQkJR1BJT19QaW5fNQkJICAgIC8qIFBBMSC/qL7N0Pe87LLi0MW6xSAgSVJRIDc4MTYqLworLy8jZGVmaW5lIFBpbl9TQU0yX0NBUkRfVkNDCQkJR1BJT19QaW5fNgkJCS8qIFBDMyC/qLXn1LS/2NbG0MW6xSAgUG93ZXJPbiovCisvLyNkZWZpbmUgUGluX1NBTTJfQ0FSRF9WQ0NfU0VMRUNUCUdQSU9fUGluXzcJCQkvKiBQQTQgv6i159S0v9jWxtDFusUgIFBvd2VyT24qLworCisjZGVmaW5lICBHUElPX1NBTTJfQ0FSRF9JT0NMSyAgICAgICAgIEdQSU9CCisjZGVmaW5lICBHUElPX1NBTTJfQ0FSRF9SRVNFVCAgICAgICAgIEdQSU9DCisvLzIwMTQuMDguMTkgvqPHvyBHMjEwMTMwMMuuv9jG9yCyu9TZyrnTw1JFQURZLFZDQyxWQ0NfU0VMRUNU0MW6xQorLy8jZGVmaW5lICBHUElPX1NBTTJfQ0FSRF9SRUFEWSAgICAgICAgIEdQSU9CCisvLyNkZWZpbmUgIEdQSU9fU0FNMl9DQVJEX1ZDQ19TRUxFQ1QJICBHUElPQgkJCisvLyNkZWZpbmUgIEdQSU9fU0FNMl9DQVJEX1ZDQyAgICAgICAgICAgR1BJT0IKKworLy89PT09PT09PT09PT0+PiBDUFUgQ2FyZAorCisjZGVmaW5lIFBpbl9DUFVfQ0FSRF9JTwkJCSAgICBHUElPX1Bpbl84CQkJLyogUEQ4IL+oyv2+3SAgSVJRIDc4MTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgUGluX0NQVV9DQVJEX0NMSwkJCUdQSU9fUGluXzEwICAgICAgICAgLyogUEQxMCC/qMqx1tMgIElSUSA3ODE2Ki8KKyNkZWZpbmUgUGluX0NQVV9DQVJEX1JFQURZCQkgICAgR1BJT19QaW5fMQkJCS8qIFBCMSC/qL7N0Pe87LLi0MW6xSAgSVJRIDc4MTYqLworI2RlZmluZSBQaW5fQ1BVX0NBUkRfUkVTRVQJCSAgICBHUElPX1Bpbl85CQkJLyogUEQ5IL+ouLTOu7/Y1sbQxbrFICBSU1Q3ODE2Ki8KKyNkZWZpbmUgUGluX0NQVV9DQVJEX1ZDQwkJCUdQSU9fUGluXzAJCQkvKiBQRDAgv6i159S0v9jWxtDFusUgIFBvd2VyT24qLworI2RlZmluZSBQaW5fQ1BVX0NBUkRfMzUJCQkgICAgR1BJT19QaW5fMQkJCS8qIFBEMSC159S0tefRub/Y1sa/2NbG0MW6xSovCisjZGVmaW5lIFBpbl9DUFVfQ0FSRF9DQVJECQkJR1BJT19QaW5fMgkJCS8qIFBEMiC/qMassuXI67zssuLQxbrFKi8KKworI2RlZmluZSAgR1BJT19DUFVfQ0FSRF9JT0NMSyAgICAgICAgIEdQSU9ECisjZGVmaW5lICBHUElPX0NQVV9DQVJEX1JFQURZICAgICAgICAgR1BJT0IKKyNkZWZpbmUgIEdQSU9fQ1BVX0NBUkRfUkVTRVQgICAgICAgICBHUElPRAorI2RlZmluZSAgR1BJT19DUFVfQ0FSRF9WQ0MgICAgICAgICAgIEdQSU9ECisjZGVmaW5lICBHUElPX0NQVV9DQVJEXzM1ICAgICAgICAgICAgR1BJT0QKKyNkZWZpbmUgIEdQSU9fQ1BVX0NBUkRfQ0FSRCAgICAgICAgICBHUElPRAorCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCisvL7Su0NC907/atqjS5QorCisjZGVmaW5lIFNMT1RfUFNBTTFfSUNDICAgIDAgICAgICAvLyBQU0FNMQorI2RlZmluZSBTTE9UX1BTQU0yX0lDQyAgICAxICAgICAgLy8gUFNBTTIKKyNkZWZpbmUgU0xPVF9DUFVfSUNDICAgICAgMiAgICAgIC8vIL3TtKXKvUNQVQorCisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoJCQkJCQkJCQkJICAgICDA4CDQzQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisvL7aoyrHG973hubm2qNLlCit0eXBlZGVmIHN0cnVjdCBfU1VzZXJUaW1lcnsKKwl2b2xhdGlsZSB1bnNpZ25lZCBpbnQgRGVhZGxpbmU7CisJdm9sYXRpbGUgdW5zaWduZWQgaW50IFJlTG9hZFRpY2tOdW07Cit9IFNVc2VyVGltZXIsKlBTVXNlclRpbWVyOworCisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoJCQkJCQkJCQkJICAgICCx5CDBvworKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisKKyBleHRlcm4gdm9sYXRpbGUgdW5zaWduZWQgaW50IFBTQU1fVGltZVRpY2s7ICAgICAgICAvKiBDdXJyZW50IFRpbWUgVGljayAqLworIGV4dGVybiBTVXNlclRpbWVyIFVzZXJUaW1lcltNQVhVU0VSVElNRVJTXTsJCS8qIFVzZXIgUHJvZ3JhbSBUaW1lciovCisKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgICAgICAgIAkJCQkJCQkJICAgICC6ryDK/QorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisKKyBleHRlcm4gIHZvaWQgSVNPNzgxNl9VU0FSVF9Jbml0KCB2b2lkICk7CisKKyBleHRlcm4gIHZvaWQgUmVzZXRUaWNrQ291bnQodm9pZCk7CisgZXh0ZXJuICB2b2lkIENoZWNrUmVzZXRUaWNrQ291bnQodm9pZCk7CisgZXh0ZXJuICB1bnNpZ25lZCBpbnQgQmVnaW5UaW1lcih1bnNpZ25lZCBpbnQgVGltZXJJRCwgdW5zaWduZWQgaW50IFRpbWVyVGlja0NvdW50KTsKKyBleHRlcm4gIHVuc2lnbmVkIGludCBTdG9wVGltZXIodW5zaWduZWQgaW50IFRpbWVySUQpOworIGV4dGVybiAgdW5zaWduZWQgaW50IEdldFRpbWVyU3RhdHVzKGNvbnN0IHVuc2lnbmVkIGludCBUaW1lcklELGNvbnN0IGludCBBdXRvU3RvcCk7CisgZXh0ZXJuICB2b2lkIERlbGF5IChpbnQgdGljayk7CisKKworCisKKworCisKKworCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvaWNjX2FwZHVfbGliL0lTT1VTQVJURHJpdmVyLmMgYi9pY2NfYXBkdV9saWIvSVNPVVNBUlREcml2ZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZTdkMzAxCi0tLSAvZGV2L251bGwKKysrIGIvaWNjX2FwZHVfbGliL0lTT1VTQVJURHJpdmVyLmMKQEAgLTAsMCArMSw5ODcgQEAKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElTTzc4MTYgVVNBUlQgtdcgsuMg07IgvP4gvdMgv9ogx/0gtq8gCisqCQorKgkJCQkJCQkJCSAgICBfX19fX9OyILz+ILXXILLjICg3ODE2KSDH/SC2r19fX19fCisqCisqICDD6CDK9qO6INb30qrN6rPJCisqICAgICAgICAgICAxKSDS7LK9v6iy6dGvt73KvbbByKEvt6LLzdK7uPbX1rf7ICAgICAgICAo1vfSqsrH1NqxvrLjtffTwykKKyogICAgICAgICAgIDIpIElDv6i1xLi0zrujrMnPteejrM/CteejrLzssuK1yNOyvP6y2df3ICjU2rG+suPT61QwVDGy47vhtffTwykKKyogICAgICAgICAgIDMpIFQwLFQx0K3S6bSryuTK/b7dtaXUqtOzyeQgICAgICAgICAgICAgICjW99KqysfU2lQwVDGy47X308MpCisqCisqICDF5CDWw6O6IAorKgorKiAg16Ig0uKjuiC4tM6706a08LXIuf2zzLf7us9JU083ODE2LTKjrEVNVrHq17yjuworKgorKiAgsuMgw/ujuiBJU09VU0FSVERyaXZlci5DIAorKgorKiAg1/cg1d+juiBaaGFuZ19PU0AxNjMuY29tCisqCisqICCw5iCxvqO6IFYxLjAgIAorKiAgICAgICAgICAgICAgICAgIAorKiAgyNUgxtqjuiAyMDA4LTAzLTI1CisqCisqICAgIENvcHlyaWdodCAoYykgMjAwOCAgICAgICAgICAgICBCcmFuZC1ORVcgQy5BLlAgRWxlY3Ryb25pY3MgVGVjaG5vbG9neSBDTy4sTFRECisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KKworCisjaW5jbHVkZSAgICJMSUJfSW5jbHVkZXMuSCIgCisKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgkJCQkJCQkJCQkgICAgILOjIMG/CisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KKyB1bnNpZ25lZCBzaG9ydCBGSVRhYmxlW10gPSB7MzcyLDM3Miw1NTgsNzQ0LDExMTYsMTQ4OCwxODYwLDM3MiwxMjgsNTEyLDc2OCwxMDI0LDE1MzYsMjA0OH07IC8qIEZJICAgICAgICAgICAqLworIHVuc2lnbmVkIGNoYXIgIERJVGFibGVbXSA9IHsxLDEsMiw0LDgsMTYsMzIsMSwxMiwyMH07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogREkgICAgICAgICAgICovCisKK3ZvbGF0aWxlIHVuc2lnbmVkIGludCAgYkZlRmxhZ3NbM107Cit2b2xhdGlsZSB1bnNpZ25lZCBjaGFyIGJGZUNvdW50WzNdOwordm9sYXRpbGUgdW5zaWduZWQgY2hhciBpYlNsb3Q7CisKKworSUNDU1RSVUNUICAqVDAxQ3VycmVudEljY0luZm87ICAgICAgICAgICAgICAgICAgIC8qIElDQ1NUUlVDVNTaVDBUMS5o1tC2qNLltcS1scewv6jQxc+i17TMrL3hubnM5SAgICAgICAgICAqLworCit2b2xhdGlsZSAgIHVuc2lnbmVkIGludCBQU0FNX1RpbWVUaWNrOyAgICAgICAgICAgLyogQ3VycmVudCBUaW1lIFRpY2sgKi8KK1NVc2VyVGltZXIgVXNlclRpbWVyW01BWFVTRVJUSU1FUlNdOwkJICAgICAvKiBVc2VyIFByb2dyYW0gVGltZXIqLworCisKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgICAgICAgIAkJCQkJCQkJICAgICC6ryDK/QorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisKKworLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICAgICAgICAgCQkJCQkJCQkgICDI7SC8/iC2qCDKsSCyvyC31gorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisKKy8vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyogRnVuY3Rpb24gTmFtZSAgICAgICA6IFJlc2V0VGlja0NvdW50KCkKKy8vKiBPYmplY3QgICAgICAgICAgICAgIDogc3lzdGltZXIgdGljayA9IDAKKy8vKiBJbnB1dCBQYXJhbWV0ZXJzICAgIDoKKy8vKiBPdXRwdXQgUGFyYW1ldGVycyAgIDoKKy8vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCit2b2lkIFJlc2V0VGlja0NvdW50KHZvaWQpCit7CisJaW50IFRpbWVySUQ7CisJUFNBTV9UaW1lVGljayA9IDA7CisJZm9yKFRpbWVySUQ9MDtUaW1lcklEPE1BWFVTRVJUSU1FUlM7VGltZXJJRCsrKQorCXsKKwkJVXNlclRpbWVyW1RpbWVySURdLkRlYWRsaW5lID0gMDsKKwl9Cit9Cit2b2lkIHVwZGF0ZV9zYW1fdGlja2VyKHZvaWQpCit7CisgIFBTQU1fVGltZVRpY2srKzsKK30KKy8vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyogRnVuY3Rpb24gTmFtZSAgICAgICA6IENoZWNrUmVzZXRUaWNrQ291bnQoKQorLy8qIE9iamVjdCAgICAgICAgICAgICAgOiBzeXN0aW1lciB0aWNrID0gMAorLy8qIElucHV0IFBhcmFtZXRlcnMgICAgOgorLy8qIE91dHB1dCBQYXJhbWV0ZXJzICAgOgorLy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3ZvaWQgQ2hlY2tSZXNldFRpY2tDb3VudCh2b2lkKQoreworCWludCBUaW1lcklEOworCWZvcihUaW1lcklEPTA7VGltZXJJRDxNQVhVU0VSVElNRVJTO1RpbWVySUQrKykKKwl7CisJCWlmKFVzZXJUaW1lcltUaW1lcklEXS5EZWFkbGluZSAhPSAwKQorCQl7CisJCQlVc2VyVGltZXJbVGltZXJJRF0uRGVhZGxpbmUgLT0gMHgxMDAwMDAwMDsKKwkJfQorCX0KKwlQU0FNX1RpbWVUaWNrIC09IDB4MTAwMDAwMDA7Cit9CisvLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8qIEZ1bmN0aW9uIE5hbWUgICAgICAgOiBCZWdpblRpbWVyKCkKKy8vKiBPYmplY3QgICAgICAgICAgICAgIDogQmVnaW4gYSB1c2VyIHRpbWVyIHdpdGggdGljayAKKy8vKiBJbnB1dCBQYXJhbWV0ZXJzICAgIDoKKy8vKiBPdXRwdXQgUGFyYW1ldGVycyAgIDoKKy8vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCit1bnNpZ25lZCBpbnQgQmVnaW5UaW1lcih1bnNpZ25lZCBpbnQgVGltZXJJRCwgdW5zaWduZWQgaW50IFRpbWVyVGlja0NvdW50KQoreworCWlmKCBUaW1lcklEID49IE1BWFVTRVJUSU1FUlMpCXJldHVybiAwOworCWlmKFRpbWVyVGlja0NvdW50ID09IDApCisJCVRpbWVyVGlja0NvdW50ID0gVXNlclRpbWVyW1RpbWVySURdLlJlTG9hZFRpY2tOdW07CisJaWYoVGltZXJUaWNrQ291bnQgPiBNQVhUSU1FUlNUSUNLKQorCQlUaW1lclRpY2tDb3VudCA9IE1BWFRJTUVSU1RJQ0s7CQorCVVzZXJUaW1lcltUaW1lcklEXS5SZUxvYWRUaWNrTnVtID0gVGltZXJUaWNrQ291bnQ7CisJVXNlclRpbWVyW1RpbWVySURdLkRlYWRsaW5lID0gUFNBTV9UaW1lVGljaytUaW1lclRpY2tDb3VudDsKKwlyZXR1cm4gVGltZXJJRDsKK30KKworLy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vKiBGdW5jdGlvbiBOYW1lICAgICAgIDogU3RvcFRpbWVyKCkKKy8vKiBPYmplY3QgICAgICAgICAgICAgIDogU3RvcCBhIHVzZXIgdGltZXIgd2l0aCB0aWNrIAorLy8qIElucHV0IFBhcmFtZXRlcnMgICAgOgorLy8qIE91dHB1dCBQYXJhbWV0ZXJzICAgOgorLy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3Vuc2lnbmVkIGludCBTdG9wVGltZXIodW5zaWduZWQgaW50IFRpbWVySUQpCit7CisJaWYoIFRpbWVySUQgPj0gTUFYVVNFUlRJTUVSUykJcmV0dXJuIFVFUlRJTUVTVEFUVVNfRVJST1I7CisJVXNlclRpbWVyW1RpbWVySURdLkRlYWRsaW5lID0gMDsKKwlyZXR1cm4gVGltZXJJRDsKK30KKworLy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vKiBGdW5jdGlvbiBOYW1lICAgICAgIDogR2V0VGltZXJTdGF0dXMoKQorLy8qIE9iamVjdCAgICAgICAgICAgICAgOiBCZWdpbiBhIHVzZXIgdGltZXIgd2l0aCB0aWNrIAorLy8qIElucHV0IFBhcmFtZXRlcnMgICAgOgorLy8qIE91dHB1dCBQYXJhbWV0ZXJzICAgOgorLy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3Vuc2lnbmVkIGludCBHZXRUaW1lclN0YXR1cyhjb25zdCB1bnNpZ25lZCBpbnQgVGltZXJJRCxjb25zdCBpbnQgQXV0b1N0b3ApCQkvL7e0yMbOysziCit7CisJdW5zaWduZWQgaW50IHJldGNvZGUgPSBVRVJUSU1FU1RBVFVTX0VSUk9SOworCQorCWlmKFRpbWVySUQgPiBNQVhVU0VSVElNRVJTKQorCQlyZXRjb2RlID0gVUVSVElNRVNUQVRVU19FUlJPUjsKKwkKKwllbHNlIGlmKFVzZXJUaW1lcltUaW1lcklEXS5EZWFkbGluZSA9PSAwKQorCQlyZXRjb2RlID0gVUVSVElNRVNUQVRVU19TVE9QOwkJCisJZWxzZSBpZihVc2VyVGltZXJbVGltZXJJRF0uRGVhZGxpbmUgPiBQU0FNX1RpbWVUaWNrKQorCXsKKwkJaWYoKFVzZXJUaW1lcltUaW1lcklEXS5EZWFkbGluZSAtIFBTQU1fVGltZVRpY2spID4gUFNBTV9UaW1lVGljaytVc2VyVGltZXJbVGltZXJJRF0uUmVMb2FkVGlja051bSkKKwkJCUJlZ2luVGltZXIoVGltZXJJRCwwKTsKKwkJZWxzZQorCQkJcmV0Y29kZSA9IFVFUlRJTUVTVEFUVVNfUlVOOworCX0KKwllbHNlCisJeworCQlpZihBdXRvU3RvcCkKKwkJCVVzZXJUaW1lcltUaW1lcklEXS5EZWFkbGluZSA9IDA7CisJCWVsc2UKKwkJCVVzZXJUaW1lcltUaW1lcklEXS5EZWFkbGluZSA9IFBTQU1fVGltZVRpY2srVXNlclRpbWVyW1RpbWVySURdLlJlTG9hZFRpY2tOdW07CisJCQkKKwkJcmV0Y29kZSA9IFVFUlRJTUVTVEFUVVNfUklOSU5HOworCX0KKwlyZXR1cm4gcmV0Y29kZTsKK30KKworLy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vKiBGdW5jdGlvbiBOYW1lICAgICAgIDogRGVsYXkoKQorLy8qIE9iamVjdCAgICAgICAgICAgICAgOiBEZWxheSB3aXRoIHRpY2sgCisvLyogSW5wdXQgUGFyYW1ldGVycyAgICA6CisvLyogT3V0cHV0IFBhcmFtZXRlcnMgICA6CisvLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy92b2lkIERlbGF5IChpbnQgdGljaykgeworLy8gICAgQmVnaW5UaW1lcihUSURfR0VOVElNRVIsdGljayk7CisvLyAgIHdoaWxlKEdldFRpbWVyU3RhdHVzKFRJRF9HRU5USU1FUiwxKSAhPSBVRVJUSU1FU1RBVFVTX1JJTklORyk7CisvL30KKworLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICAgICAgICAgCQkJCQkJCQkgICDI7SC8/iC2qCDKsSCyvyC31iAgIEVORAorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisKK3Vuc2lnbmVkIGNoYXIgSVNPX0dldENoYXIoIGludCBpY2ggKTsgICAgICAgICAgICAgLyog0uyyvb+osunRr7e9yr22wcih0ru49tfWt/sgICAg1rvU2rG+zsS8/tbQtffTwyAgICAgICAgICovCisKKworLy/KudPDtqjKscb3VElNMiBDSDSjrLL6yfpFU0FNyrHW09DFusUKK3N0YXRpYyB2b2lkIFNBTTJfQ0xLX0luaXQodm9pZCkKK3sKKwlUSU1fVGltZUJhc2VJbml0VHlwZURlZiBUSU1fVGltZUJhc2VJbml0U3RydWN0OworCVRJTV9PQ0luaXRUeXBlRGVmICAgICAgIFRJTV9PQ0luaXRTdHJ1Y3Q7CisKKwlSQ0NfQVBCMVBlcmlwaENsb2NrQ21kKFJDQ19BUEIxUGVyaXBoX1RJTTIsIEVOQUJMRSk7CisKKwlHUElPX1BpblJlbWFwQ29uZmlnKEdQSU9fUGFydGlhbFJlbWFwMl9USU0yLCBFTkFCTEUpOworCQorCVRJTV9UaW1lQmFzZUluaXRTdHJ1Y3QuVElNX1BlcmlvZCAgICA9IDg7CSAJCisJVElNX1RpbWVCYXNlSW5pdFN0cnVjdC5USU1fUHJlc2NhbGVyID0gMTsKKwlUSU1fVGltZUJhc2VJbml0U3RydWN0LlRJTV9DbG9ja0RpdmlzaW9uID0gMDsKKwlUSU1fVGltZUJhc2VJbml0U3RydWN0LlRJTV9Db3VudGVyTW9kZSA9IFRJTV9Db3VudGVyTW9kZV9VcDsgCisJVElNX1RpbWVCYXNlSW5pdChUSU0yLCAmVElNX1RpbWVCYXNlSW5pdFN0cnVjdCk7CisKKwlUSU1fT0NJbml0U3RydWN0LlRJTV9PQ01vZGUgPSBUSU1fT0NNb2RlX1BXTTE7CQorCVRJTV9PQ0luaXRTdHJ1Y3QuVElNX091dHB1dFN0YXRlID0gVElNX091dHB1dFN0YXRlX0VuYWJsZTsKKwlUSU1fT0NJbml0U3RydWN0LlRJTV9QdWxzZSA9IDQ7CisJVElNX09DSW5pdFN0cnVjdC5USU1fT0NQb2xhcml0eSA9IFRJTV9PQ1BvbGFyaXR5X0hpZ2g7CisJVElNX09DNEluaXQoVElNMiwgJlRJTV9PQ0luaXRTdHJ1Y3QpOworCQorCVRJTV9DbWQoVElNMiwgRU5BQkxFKTsKK30KKworLy8gUFNBTTK/qNf5s/XKvLuvCit2b2lkIFNBTTJfQ2FyZF9Jbml0KCB2b2lkICkKK3sKKyAgICBHUElPX0luaXRUeXBlRGVmICBHUElPX0luaXRTdHJ1Y3R1cmU7CisgICAgVVNBUlRfSW5pdFR5cGVEZWYgVVNBUlRfSW5pdFN0cnVjdHVyZTsKKyAgICBVU0FSVF9DbG9ja0luaXRUeXBlRGVmICBVU0FSVF9DbG9ja0luaXRTdHJ1Y3R1cmU7CisKKyAgICAvKiBFbmFibGUgICBjbG9ja3MgMzZNKi8KKyAgICBSQ0NfQVBCMVBlcmlwaENsb2NrQ21kKFJDQ19BUEIxUGVyaXBoX1VTQVJUMywgRU5BQkxFKTsgCisgICAgUkNDX0FQQjJQZXJpcGhDbG9ja0NtZChSQ0NfQVBCMlBlcmlwaF9HUElPQnxSQ0NfQVBCMlBlcmlwaF9HUElPQ3xSQ0NfQVBCMlBlcmlwaF9BRklPLCBFTkFCTEUpOyAKKworICAgIC8vPT09PT0+PiAgU0FNMl9DQVJEX0lPIHwgU0FNMl9DQVJEX0NMSworICAgIEdQSU9fSW5pdFN0cnVjdHVyZS5HUElPX1BpbiAgID0gUGluX1NBTTJfQ0FSRF9JTzsKKyAgICBHUElPX0luaXRTdHJ1Y3R1cmUuR1BJT19TcGVlZCA9IEdQSU9fU3BlZWRfNTBNSHo7CisgICAgR1BJT19Jbml0U3RydWN0dXJlLkdQSU9fTW9kZSAgPSBHUElPX01vZGVfQUZfT0Q7CisgICAgR1BJT19Jbml0KCBHUElPX1NBTTJfQ0FSRF9JT0NMSywgJkdQSU9fSW5pdFN0cnVjdHVyZSApOwkKKwkgCisgICAgR1BJT19Jbml0U3RydWN0dXJlLkdQSU9fUGluICAgPSBQaW5fU0FNMl9DQVJEX0NMSzsKKyAgICBHUElPX0luaXRTdHJ1Y3R1cmUuR1BJT19TcGVlZCA9IEdQSU9fU3BlZWRfNTBNSHo7CisgICAgR1BJT19Jbml0U3RydWN0dXJlLkdQSU9fTW9kZSAgPSBHUElPX01vZGVfQUZfUFA7CisgICAgR1BJT19Jbml0KCBHUElPX1NBTTJfQ0FSRF9JT0NMSywgJkdQSU9fSW5pdFN0cnVjdHVyZSApOworCisgICAgLy89PT09PT4+IFNBTTJfQ0FSRF9SRVNFVAorICAgIEdQSU9fSW5pdFN0cnVjdHVyZS5HUElPX1BpbiAgID0gUGluX1NBTTJfQ0FSRF9SRVNFVDsKKyAgICBHUElPX0luaXRTdHJ1Y3R1cmUuR1BJT19TcGVlZCA9IEdQSU9fU3BlZWRfNTBNSHo7CisgICAgR1BJT19Jbml0U3RydWN0dXJlLkdQSU9fTW9kZSAgPSBHUElPX01vZGVfT3V0X1BQOworICAgIEdQSU9fSW5pdCggR1BJT19TQU0yX0NBUkRfUkVTRVQsICZHUElPX0luaXRTdHJ1Y3R1cmUpOworCisgICAgR1BJT19SZXNldEJpdHMoR1BJT19TQU0yX0NBUkRfUkVTRVQsIFBpbl9TQU0yX0NBUkRfUkVTRVQpOworCisgICAgVVNBUlRfU2V0UHJlc2NhbGVyKFBTQU0yX1VTQVJULCAweDA1KTsKKyAgCisgICAgLyogVVNBUlQxIEd1YXJkIFRpbWUgc2V0IHRvIDIgQml0ICovCisgICAgVVNBUlRfU2V0R3VhcmRUaW1lKFBTQU0yX1VTQVJULCAyKTsKKyAgCisgICAgVVNBUlRfU3RydWN0SW5pdCgmVVNBUlRfSW5pdFN0cnVjdHVyZSk7CisgICAgVVNBUlRfSW5pdFN0cnVjdHVyZS5VU0FSVF9CYXVkUmF0ZSA9IDEwNzUzOworICAgIFVTQVJUX0luaXRTdHJ1Y3R1cmUuVVNBUlRfV29yZExlbmd0aCA9IFVTQVJUX1dvcmRMZW5ndGhfOWI7CisgICAgVVNBUlRfSW5pdFN0cnVjdHVyZS5VU0FSVF9TdG9wQml0cyA9IFVTQVJUX1N0b3BCaXRzXzFfNTsKKyAgICBVU0FSVF9Jbml0U3RydWN0dXJlLlVTQVJUX1Bhcml0eSA9IFVTQVJUX1Bhcml0eV9FdmVuOworICAgCisgICAKKyAgICBVU0FSVF9DbG9ja0luaXRTdHJ1Y3R1cmUuVVNBUlRfQ2xvY2sgPSBVU0FSVF9DbG9ja19FbmFibGU7CisKKyAgICBVU0FSVF9Jbml0KFBTQU0yX1VTQVJULCAmVVNBUlRfSW5pdFN0cnVjdHVyZSk7CisgICAgVVNBUlRfQ2xvY2tJbml0KCBQU0FNMl9VU0FSVCwgJlVTQVJUX0Nsb2NrSW5pdFN0cnVjdHVyZSApOworCisgICAgLyogRW5hYmxlIFVTQVJUMiAqLworICAgIFVTQVJUX0NtZChQU0FNMl9VU0FSVCwgRU5BQkxFKTsKKworICAgIC8qIEVuYWJsZSB0aGUgTkFDSyBUcmFuc21pc3Npb24gKi8KKyAgICBVU0FSVF9TbWFydENhcmROQUNLQ21kKFBTQU0yX1VTQVJULCBFTkFCTEUpOworCisgICAgLyogRW5hYmxlIHRoZSBTbWFydCBDYXJkIEludGVyZmFjZSAqLworICAgIFVTQVJUX1NtYXJ0Q2FyZENtZChQU0FNMl9VU0FSVCwgRU5BQkxFKTsKK30KKworLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgICAgILP1yry7rworKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KK3ZvaWQgSVNPNzgxNl9VU0FSVF9Jbml0KCB2b2lkICkKK3sgICAgCisgICAgU0FNMl9DYXJkX0luaXQoKTsKKyAgICBTQU0yX0NMS19Jbml0KCk7CisKKyAgICAvKiBDb25maWd1cmUgdGhlIFN5c3RlbSBUaWNrICovCisgICAgUmVzZXRUaWNrQ291bnQoKTsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogRnVuY3Rpb24gTmFtZSAgOiBQYXJpdHlFcnJvckhhbmRsZXIKKyogRGVzY3JpcHRpb24gICAgOiBSZXNlbmRzIHRoZSBieXRlIHRoYXQgZmFpbGVkIHRvIGJlIHJlY2VpdmVkIChieSB0aGUgU21hcnRjYXJkKQorKiAgICAgICAgICAgICAgICAgIGNvcnJlY3RseS4KKyogSW5wdXQgICAgICAgICAgOiBOb25lCisqIE91dHB1dCAgICAgICAgIDogTm9uZQorKiBSZXR1cm4gICAgICAgICA6IE5vbmUKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCit2b2lkIFBhcml0eUVycm9ySGFuZGxlcihVU0FSVF9UeXBlRGVmICogcFVTQVJUKQoreworCWJGZUZsYWdzW2liU2xvdF0gPSAxOworfQorCisvLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyogRnVuY3Rpb24gTmFtZSAgICAgICA6IGlzSUNDYXJkUmVhZHkKKy8vKiBPYmplY3QgICAgICAgICAgICAgIDogvOyy4r+ovLC159S017TMrAorLy8qIElucHV0IFBhcmFtZXRlcnMgICAgOiBub25lCisvLyogT3V0cHV0IFBhcmFtZXRlcnMgICA6ILe1u9jWtaO6MS3V/bOjLDA9vq+xqNe0zKwKKy8vKiBGdW5jdGlvbnMgY2FsbGVkICAgIDogv6jGrFBvd2VyT27S1LrztffTwworLy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorY2hhciBpc0lDQ2FyZFJlYWR5KGludCBpY2gpCit7CisgICAgcmV0dXJuIDE7Cit9CisKKyAKKy8vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vKiBGdW5jdGlvbiBOYW1lICAgICAgIDogSUNDX1Jlc2V0Q2FyZAorLy8qIE9iamVjdCAgICAgICAgICAgICAgOiC/qMjIuLTOuworLy8qIElucHV0IFBhcmFtZXRlcnMgICAgOiBpY2ggPSBDSE5MX0lDQy9QU0FNMV9QT1dFUi9QU0FNMl9QT1dFUl9PTgorLy8qIE91dHB1dCBQYXJhbWV0ZXJzICAgOiC3tbvY1rWjuklDRXJyb3JDb2RlCisvLyogRnVuY3Rpb25zIGNhbGxlZCAgICA6IG5vbmUKKy8vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3Vuc2lnbmVkIHNob3J0IElDQ19SZXNldENhcmQoaW50IGljaCkKK3sJCisJdTMyIHk7CisJdTMyIHBwcyA9IDA7CisJdTggdGVtcF9idWZmZXJbMTJdOworCXU4ICBjX3RtcDsKKwl1OCAgdGEyOworCVVTQVJUX0luaXRUeXBlRGVmIFVTQVJUX0luaXRTdHJ1Y3R1cmU7CisgICAgVVNBUlRfQ2xvY2tJbml0VHlwZURlZiAgVVNBUlRfQ2xvY2tJbml0U3RydWN0dXJlOworCQorCS8vUkVTRVTWw7XNtefGvaOsvfjI67i0zrvXtMysCisgICAgR1BJT19SZXNldEJpdHMoR1BJT19TQU0yX0NBUkRfUkVTRVQsIFBpbl9TQU0yX0NBUkRfUkVTRVQpOworCS8qIEVuYWJsZSBVU0FSVDEgKi8KKwlVU0FSVF9DbWQoVVNBUlQzLCBESVNBQkxFKTsKKwkKKwkvKiBFbmFibGUgdGhlIFNtYXJ0IENhcmQgSW50ZXJmYWNlICovCisJVVNBUlRfU21hcnRDYXJkQ21kKFVTQVJUMywgRElTQUJMRSk7CisKKyAgICBVU0FSVF9TZXRQcmVzY2FsZXIoVVNBUlQzLCAweDA1KTsKKyAgICAKKwkvKiBVU0FSVDEgR3VhcmQgVGltZSBzZXQgdG8gMiBCaXQgKi8KKwlVU0FSVF9TZXRHdWFyZFRpbWUoVVNBUlQzLCAyKTsKKwkKKwlVU0FSVF9TdHJ1Y3RJbml0KCZVU0FSVF9Jbml0U3RydWN0dXJlKTsKKwlVU0FSVF9Jbml0U3RydWN0dXJlLlVTQVJUX0JhdWRSYXRlID0gMTA3NTMgKiBUMDFDdXJyZW50SWNjSW5mby0+RVhESTsKKwlVU0FSVF9Jbml0U3RydWN0dXJlLlVTQVJUX1dvcmRMZW5ndGggPSBVU0FSVF9Xb3JkTGVuZ3RoXzliOworCVVTQVJUX0luaXRTdHJ1Y3R1cmUuVVNBUlRfU3RvcEJpdHMgPSBVU0FSVF9TdG9wQml0c18xXzU7CisJVVNBUlRfSW5pdFN0cnVjdHVyZS5VU0FSVF9QYXJpdHkgPSBVU0FSVF9QYXJpdHlfRXZlbjsKKworCVVTQVJUX0Nsb2NrSW5pdFN0cnVjdHVyZS5VU0FSVF9DbG9jayA9IFVTQVJUX0Nsb2NrX0VuYWJsZTsKKwkKKwlVU0FSVF9Jbml0KFVTQVJUMywgJlVTQVJUX0luaXRTdHJ1Y3R1cmUpOworCVVTQVJUX0Nsb2NrSW5pdCggVVNBUlQzLCAmVVNBUlRfQ2xvY2tJbml0U3RydWN0dXJlICk7CisJCisJLyogRW5hYmxlIFVTQVJUMSAqLworCVVTQVJUX0NtZChVU0FSVDMsIEVOQUJMRSk7CisJCisJLyogRW5hYmxlIHRoZSBOQUNLIFRyYW5zbWlzc2lvbiAqLworCVVTQVJUX1NtYXJ0Q2FyZE5BQ0tDbWQoVVNBUlQzLCBFTkFCTEUpOworCQorCS8qIEVuYWJsZSB0aGUgU21hcnQgQ2FyZCBJbnRlcmZhY2UgKi8KKwlVU0FSVF9TbWFydENhcmRDbWQoVVNBUlQzLCBFTkFCTEUpOworCQorCS8vxvS2r7i0zrvQxbrF0dPKsbaoyrEKKwlCZWdpblRpbWVyKFRJRF9JQ0NUSU1FUiwgMTIpOwkJCisJd2hpbGUgKCBHZXRUaW1lclN0YXR1cyhUSURfSUNDVElNRVIsMSkgIT0gVUVSVElNRVNUQVRVU19SSU5JTkcpCisJeworCQkvL7XItP00MDAwMC00NTAwMLj2v6jKsdbTLy+4tM670MW6xcqxvOQ9MTJtcyC8xsvj0sC+3aO6KE1DSy8xMyA9IDMuNjg2NDBNSHopo6wxMm1zIM/gtbHT2jQ0MjM2Lji49r+oyrHW06OsyrW8yraoyrHKsbzktcTX7rTz1rUKKwkJaWYoaXNJQ0NhcmRSZWFkeShpY2gpPT0wKQorCQl7CisJCQlTdG9wVGltZXIoVElEX0lDQ1RJTUVSKTsKKwkJCWJyZWFrOworCQl9CisJfQorCisJLy9SRVNFVNbDuN+158a9o6y9+MjrQVRStsHIode0zKwKKyAgICBHUElPX1NldEJpdHMoR1BJT19TQU0yX0NBUkRfUkVTRVQsIFBpbl9TQU0yX0NBUkRfUkVTRVQpOyAKKwkKKwlUMDFDdXJyZW50SWNjSW5mby0+VFMgPSAweDNiOwkJCQkvL8rXz8jErMjP1f3P8tS8tqgKKwkKKwkvL7bByKG/qNOmtPDQ8sHQQVRSCisJLy8gUmVhZCBBVFIgVFMKKwlUMDFDdXJyZW50SWNjSW5mby0+VFMgPSBJU09fR2V0Q2hhcihpY2gpOwkvL9XiwO/Q6NKq0ru49jQyMDAwQ0xPQ0u1xLOsyrG2qMqxCisJaWYoVDAxQ3VycmVudEljY0luZm8tPlRTID09IDB4ZmYpCisJeworCQlpZihUMDFDdXJyZW50SWNjSW5mby0+SUNFcnJvckNvZGUhPTApCisJCXsKKwkJCWlmKFQwMUN1cnJlbnRJY2NJbmZvLT5JQ0Vycm9yQ29kZT09NSkKKwkJCXsKKwkJCQlUMDFDdXJyZW50SWNjSW5mby0+SUNFcnJvckNvZGU9MHgwMDNBOwkvL7bByKFUU7OsyrEsUFNBTb+o1/nOqr/Vo6EKKwkJCX0KKwkJCWlmKFQwMUN1cnJlbnRJY2NJbmZvLT5JQ0Vycm9yQ29kZT09NCkKKwkJCXsKKwkJCQlUMDFDdXJyZW50SWNjSW5mby0+SUNFcnJvckNvZGU9MzsJLy+2zMK3saO7pCzK082svfDK9L3p1soKKwkJCX0KKwkJCXJldHVybiBUMDFDdXJyZW50SWNjSW5mby0+SUNFcnJvckNvZGU7CisJCX0KKwl9CisJaWYoKFQwMUN1cnJlbnRJY2NJbmZvLT5UUyE9MHgzYikgJiYgKFQwMUN1cnJlbnRJY2NJbmZvLT5UUyE9MHgzZikpCisJeworCQlUMDFDdXJyZW50SWNjSW5mby0+SUNFcnJvckNvZGU9NjsKKwkJcmV0dXJuIFQwMUN1cnJlbnRJY2NJbmZvLT5JQ0Vycm9yQ29kZTsJLy9UU7K7yse6z7eotcRJQ7+oo6y+3L74CisJfQkKKwkvLyBSZWFkIEFUUiBUMAorCVQwMUN1cnJlbnRJY2NJbmZvLT5UMCA9IElTT19HZXRDaGFyKGljaCk7CisJaWYoVDAxQ3VycmVudEljY0luZm8tPlQwID09IDB4ZmYpCisJCWlmKFQwMUN1cnJlbnRJY2NJbmZvLT5JQ0Vycm9yQ29kZSE9MCkKKwkJCXJldHVybiBUMDFDdXJyZW50SWNjSW5mby0+SUNFcnJvckNvZGU7CisJeSA9IFQwMUN1cnJlbnRJY2NJbmZvLT5UMCAmIDB4RjA7CisJCisJLy8gUmVhZCBBVFIgVDEKKwlpZiAoeSkgeworCQlpZiAoeSAmIDB4MTApICAgLy8gVEFbaV0JLy9BVFItVEExCVRBMbSry81GSbrNREm1xNa1KFQ9MMqxzqoweDAwu/IweDExLFQ9Mcqxo6xE1qez1jGhojKhojS8sM60wLTG5Mv7tcTIoda1KQorCQl7CisJCQljX3RtcCA9IElTT19HZXRDaGFyKGljaCk7CisJCQlpZihjX3RtcCA9PSAweGZmKQorCQkJCWlmKFQwMUN1cnJlbnRJY2NJbmZvLT5JQ0Vycm9yQ29kZSE9MCkKKwkJCQkJcmV0dXJuIFQwMUN1cnJlbnRJY2NJbmZvLT5JQ0Vycm9yQ29kZTsKKwkJCVQwMUN1cnJlbnRJY2NJbmZvLT5ESSA9IGNfdG1wICYgMHgwZjsKKwkJCVQwMUN1cnJlbnRJY2NJbmZvLT5GSSA9IChjX3RtcD4+NCkgJiAweDBmOworCQkJcHBzID0gMTsKKwkJCWlmKChUMDFDdXJyZW50SWNjSW5mby0+Rkk9PTcpfHwoVDAxQ3VycmVudEljY0luZm8tPkZJPT04KXx8KFQwMUN1cnJlbnRJY2NJbmZvLT5GST49MHgwRSkpCisJCQl7CisJCQkJVDAxQ3VycmVudEljY0luZm8tPkZJID0gMTsKKwkJCQlwcHMgPSAwOworCQkJfQkJCQorCQkJaWYoKFQwMUN1cnJlbnRJY2NJbmZvLT5EST09MCl8fChUMDFDdXJyZW50SWNjSW5mby0+REk9PTcpfHwoVDAxQ3VycmVudEljY0luZm8tPkZJPj0weDBBKSkKKwkJCXsKKwkJCQlUMDFDdXJyZW50SWNjSW5mby0+RkkgPSAxOworCQkJCXBwcyA9IDA7CisJCQl9CisJCQlpZigoVDAxQ3VycmVudEljY0luZm8tPkRJID4gMSB8fCBUMDFDdXJyZW50SWNjSW5mby0+RkkgPiAxKSAmJiAoKFQwMUN1cnJlbnRJY2NJbmZvLT5UMCAmIDB4ZjApPT0weDYwKSkKKwkJCXsKKwkJCQlUMDFDdXJyZW50SWNjSW5mby0+SUNFcnJvckNvZGU9NjsKKwkJCQlyZXR1cm4gVDAxQ3VycmVudEljY0luZm8tPklDRXJyb3JDb2RlOwkvL1RTsrvKx7rPt6i1xElDv6ijrL7cvvgKKwkJCX0KKwkJfQorCQllbHNlCisJCXsKKwkJCVQwMUN1cnJlbnRJY2NJbmZvLT5ESSA9IDE7IAorCQkJVDAxQ3VycmVudEljY0luZm8tPkZJID0gMTsKKwkJCXBwcyA9IDA7CisJCX0KKwkJaWYgKHkgJiAweDIwKSAgIC8vIFRCW2ldCS8vQVRSLVRCMQlUQjG0q8vNUEkxus1JSda1KLHgs8y159G5us2158H3KQorCQl7CisJCQljX3RtcCA9IElTT19HZXRDaGFyKGljaCk7CisJCQlpZihjX3RtcCAhPSAweDApCS8v1ru908rcVEIxPTC1xNOmtPAsseCzzLXn0bm6zbXnwfcKKwkJCXsKKwkJCQlUMDFDdXJyZW50SWNjSW5mby0+SUNFcnJvckNvZGU9NjsKKwkJCQlyZXR1cm4gVDAxQ3VycmVudEljY0luZm8tPklDRXJyb3JDb2RlOworCQkJfQorCQl9CisJCWlmICh5ICYgMHg0MCkgICAvLyBUQ1tpXQkvL0FUUi1UQzEJtKvLzU7WtSyx7cq+1Pa807W91+7QobPW0PjKsbzktcS27s3isaO7pMqxvOQoZXR1yv0pCisJCXsKKwkJCWNfdG1wID0gSVNPX0dldENoYXIoaWNoKTsKKwkJCWlmKGNfdG1wID09IDB4ZmYpCisJCQkJaWYoVDAxQ3VycmVudEljY0luZm8tPklDRXJyb3JDb2RlIT0wKQorCQkJCQlyZXR1cm4gVDAxQ3VycmVudEljY0luZm8tPklDRXJyb3JDb2RlOwkKKwkJCQorICAgICAgICAgICAgVDAxQ3VycmVudEljY0luZm8tPk4gPSBjX3RtcDsKKwkJfQorCQllbHNlCisJCXsKKwkJCVQwMUN1cnJlbnRJY2NJbmZvLT5OID0gMjsKKwkJfQorCisJCWlmICh5ICYgMHg4MCkgIC8vIFREW2ldCQkvL0FUUi1URDEJyse38bu50qq3osvNuPy24LXEvdO/2tfWvdrS1LywuvPQ+LSryuTL+cq508O1xNCt0unA4NDNLCi99tans9Ywus0x0K3S6TB4ODGjrL7cvvjG5Mv71rUpCisJCXsKKwkJCVQwMUN1cnJlbnRJY2NJbmZvLT5URDEgPSBJU09fR2V0Q2hhcihpY2gpOworCQkJaWYoVDAxQ3VycmVudEljY0luZm8tPlREMSA9PSAweGZmKQorCQkJCWlmKFQwMUN1cnJlbnRJY2NJbmZvLT5JQ0Vycm9yQ29kZSE9MCkKKwkJCQkJcmV0dXJuIFQwMUN1cnJlbnRJY2NJbmZvLT5JQ0Vycm9yQ29kZTsKKwkJCXkgPSAgVDAxQ3VycmVudEljY0luZm8tPlREMSAmIDB4RjA7CisJCQlUMDFDdXJyZW50SWNjSW5mby0+VCA9IFQwMUN1cnJlbnRJY2NJbmZvLT5URDEgJiAweDBGOwkvL1Q9PworCQl9CisJCWVsc2UKKwkJeworCQkJVDAxQ3VycmVudEljY0luZm8tPlREMSA9IDA7CisJCQlUMDFDdXJyZW50SWNjSW5mby0+VCA9IDA7CisJCQl5ID0gMDsKKwkJfQorCX0KKworCS8vVDAxQ3VycmVudEljY0luZm8tPlNQTU9EID0gMDsJLy8JzNi2qMSjyr27ucrHvbu7pcSjyr0KKworCS8vIFJlYWQgQVRSIFQyCisJdGEyID0gMDsKKwlpZiAoeSkgeworCQlpZiAoeSAmIDB4MTApICAgLy8gVEFbaV0JLy9BVFItVEEyCczYtqjEo8q9u7nKx9LUvbu7pcSjyr0KKwkJeworCQkJY190bXAgPSBJU09fR2V0Q2hhcihpY2gpOworCQkJaWYoY190bXAgPT0gMHhmZikKKwkJCXsKKwkJCQlpZihUMDFDdXJyZW50SWNjSW5mby0+SUNFcnJvckNvZGUhPTApCisJCQkJCXJldHVybiBUMDFDdXJyZW50SWNjSW5mby0+SUNFcnJvckNvZGU7CisJCQl9CisJCQlUMDFDdXJyZW50SWNjSW5mby0+U1BNT0QgPSBjX3RtcDsJLy/M2LaoxKPKvSC7ucrHIL27u6XEo8q9IGI4PTDT0LjEseTE3MGmo6w9Mc7euMSx5MTcwaaju2I1PTGyu9PJvdO/2tfWvdq2qNLlo6w9ML3Tv9rX1r3atqjS5aO7YjQtYjEg0K3S6VQKKwkJCXRhMiA9IDE7CisJCX0KKwkJaWYgKHkgJiAweDIwKSAgIC8vIFRCW2ldCS8vQVRSLVRCMglUQjK0q8vNUEkyo6xQSTLTw9PayLe2qElDv6jL+dDotcSx4LPMtefRuVC1xNa1CisJCXsKKwkJCWNfdG1wID0gSVNPX0dldENoYXIoaWNoKTsKKwkJCWlmKGNfdG1wICE9IDB4MCkJLy/Wu73TytxUQjE9MLXE06a08Cyx4LPMtefRubrNtefB9worCQkJeworCQkJCVQwMUN1cnJlbnRJY2NJbmZvLT5JQ0Vycm9yQ29kZT02OworCQkJCXJldHVybiBUMDFDdXJyZW50SWNjSW5mby0+SUNFcnJvckNvZGU7CisJCQl9CisJCX0KKwkJaWYgKHkgJiAweDQwKSAgIC8vIFRDW2ldCS8vQVRSLVRDMglUQzIg16jTw9PaVD0wINCt0umjrLKitKvLzbmk1/e1yLT9yrG85NX7yv0oV0kpLLmk1/e1yLT9yrG85M6qo7o5NjChwUShwVdJCisJCXsKKwkJCWNfdG1wID0gSVNPX0dldENoYXIoaWNoKTsKKwkJCVQwMUN1cnJlbnRJY2NJbmZvLT5XSSA9IGNfdG1wOworCQkJaWYoY190bXAgPT0gMHhmZikKKwkJCQlpZihUMDFDdXJyZW50SWNjSW5mby0+SUNFcnJvckNvZGUhPTApCisJCQkJCXJldHVybiBUMDFDdXJyZW50SWNjSW5mby0+SUNFcnJvckNvZGU7CisJCX0KKwkJZWxzZQorCQl7CisJCQlUMDFDdXJyZW50SWNjSW5mby0+V0kgPSAxMDsKKwkJfQorCQlpZiAoeSAmIDB4ODApICAvLyBURFtpXQkJLy9BVFItVEQyCVREMrHtyr7Kx7fxu7nSqreiy824/LbgtcS907/a19a92tLUvLC689D4tKvK5Mv5yrnTw7XE0K3S6cDg0M0oMHgzMSkKKwkJeworCQkJVDAxQ3VycmVudEljY0luZm8tPlREMiA9IElTT19HZXRDaGFyKGljaCk7CisJCQlpZihUMDFDdXJyZW50SWNjSW5mby0+VEQyID09IDB4ZmYpCisJCQkJaWYoVDAxQ3VycmVudEljY0luZm8tPklDRXJyb3JDb2RlIT0wKQorCQkJCQlyZXR1cm4gVDAxQ3VycmVudEljY0luZm8tPklDRXJyb3JDb2RlOworCQkJeSA9ICBUMDFDdXJyZW50SWNjSW5mby0+VEQyICYgMHhGMDsKKwkJfQorCQllbHNlCisJCXsKKwkJCVQwMUN1cnJlbnRJY2NJbmZvLT5URDIgPSAwOworCQkJeSA9IDA7CisJCX0KKwl9CisJZWxzZQorCXsKKwkJVDAxQ3VycmVudEljY0luZm8tPldJID0gMTA7CisJfQorCS8vIFJlYWQgQVRSIFQzCisJaWYgKHkpIHsKKwkJaWYgKHkgJiAweDEwKSAgIC8vIFRBW2ldCS8vQVRSLVRBMwm72MvNSUO/qLXE0MXPotPytPPQodX7yv0oSUZTSSkKKwkJeworCQkJY190bXAgPSBJU09fR2V0Q2hhcihpY2gpOworCQkJaWYoY190bXAgPT0gMHhmZikKKwkJCQlpZihUMDFDdXJyZW50SWNjSW5mby0+SUNFcnJvckNvZGUhPTApCisJCQkJCXJldHVybiBUMDFDdXJyZW50SWNjSW5mby0+SUNFcnJvckNvZGU7CisJCQlUMDFDdXJyZW50SWNjSW5mby0+SUZTSSA9IGNfdG1wOworCQl9CisJCWVsc2UKKwkJeworCQkJVDAxQ3VycmVudEljY0luZm8tPklGU0kgPSAzMjsKKwkJfQorCQlpZiAoeSAmIDB4MjApICAgLy8gVEJbaV0JLy9BVFItVEIzCdPDwLS8xsvjQ1dUus1CV1S1xENXSbrNQldJ1rUKKwkJeworCQkJY190bXAgPSBJU09fR2V0Q2hhcihpY2gpOworCQkJaWYoY190bXAgPT0gMHhmZikKKwkJCQlpZihUMDFDdXJyZW50SWNjSW5mby0+SUNFcnJvckNvZGUhPTApCisJCQkJCXJldHVybiBUMDFDdXJyZW50SWNjSW5mby0+SUNFcnJvckNvZGU7CisJCQlUMDFDdXJyZW50SWNjSW5mby0+Q1dJID0gY190bXAgJiAweDA3OworCQkJVDAxQ3VycmVudEljY0luZm8tPkJXSSA9IChjX3RtcCAmIDB4NzApPj40OworCQl9CisJCWVsc2UKKwkJeworCQkJVDAxQ3VycmVudEljY0luZm8tPkJXSSA9IDA7CisJCQlUMDFDdXJyZW50SWNjSW5mby0+Q1dJID0gMDsKKwkJfQorCQlpZiAoeSAmIDB4NDApICAgLy8gVENbaV0JLy9BVFItVEMzCcv508O1xL/ptO3O87zssuK0+sLrtcTA4NDNCisJCXsKKwkJCWNfdG1wID0gSVNPX0dldENoYXIoaWNoKTsKKwkJCWlmKGNfdG1wID09IDB4ZmYpCisJCQkJaWYoVDAxQ3VycmVudEljY0luZm8tPklDRXJyb3JDb2RlIT0wKQorCQkJCQlyZXR1cm4gVDAxQ3VycmVudEljY0luZm8tPklDRXJyb3JDb2RlOworCQkJVDAxQ3VycmVudEljY0luZm8tPkNyYyA9IGNfdG1wICYgMHgwMTsKKwkJfQorCQllbHNlCisJCXsKKwkJCVQwMUN1cnJlbnRJY2NJbmZvLT5DcmMgPSAwOwkvL0NSQworCQl9CisJCWlmICh5ICYgMHg4MCkgIC8vIFREW2ldCQkvL0FUUi1URDMJVEQzuvPQ+FRBCisJCXsKKwkJCWNfdG1wID0gSVNPX0dldENoYXIoaWNoKTsKKwkJCWlmKGNfdG1wID09IDB4ZmYpCisJCQkJaWYoVDAxQ3VycmVudEljY0luZm8tPklDRXJyb3JDb2RlIT0wKQorCQkJCQlyZXR1cm4gVDAxQ3VycmVudEljY0luZm8tPklDRXJyb3JDb2RlOworCQkJaWYoKGNfdG1wICYgMHgxZikgPT0gMHgxZikKKwkJCQljX3RtcCA9IElTT19HZXRDaGFyKGljaCk7CisJCX0KKwl9CisJZm9yKHkgPSAwO3kgPCAoVDAxQ3VycmVudEljY0luZm8tPlQwICYgMHgwZikgJiYgeSA8IDE2OyB5KyspCisJeworCQlUMDFDdXJyZW50SWNjSW5mby0+TVJjdkJ1ZmZlclt5XSA9IElTT19HZXRDaGFyKGljaCk7CisJCWlmKFQwMUN1cnJlbnRJY2NJbmZvLT5NUmN2QnVmZmVyW3ldID09IDB4ZmYpCisJCQlpZihUMDFDdXJyZW50SWNjSW5mby0+SUNFcnJvckNvZGUhPTApCisJCQkJcmV0dXJuIFQwMUN1cnJlbnRJY2NJbmZvLT5JQ0Vycm9yQ29kZTsKKwl9CisJVDAxQ3VycmVudEljY0luZm8tPk1SY3ZCdWZmZXJbeV0gPSAwOworICAgIAorCS8vIFJlYWQgQVRSIFRDSworCWlmIChUMDFDdXJyZW50SWNjSW5mby0+VCA9PSAxKSB7CisJCVQwMUN1cnJlbnRJY2NJbmZvLT5FVENLID0gSVNPX0dldENoYXIoaWNoKTsKKwkJaWYoVDAxQ3VycmVudEljY0luZm8tPkVUQ0sgPT0gMHhmZikKKwkJCWlmKFQwMUN1cnJlbnRJY2NJbmZvLT5JQ0Vycm9yQ29kZSE9MCkKKwkJCQlyZXR1cm4gVDAxQ3VycmVudEljY0luZm8tPklDRXJyb3JDb2RlOworCX0KKwllbHNlCisJeworCQlUMDFDdXJyZW50SWNjSW5mby0+RVRDSyA9IDA7CisJfQorCisJLy+wtNXVQVRS1ri2qLLOyv3W2NDCs/XKvLuvvdO/2gorCWlmKFQwMUN1cnJlbnRJY2NJbmZvLT5UID09IDAgfHwgVDAxQ3VycmVudEljY0luZm8tPlQgPT0gMSkKKwl7CisJCSBVU0FSVF9TZXRHdWFyZFRpbWUoVVNBUlQzLCBUMDFDdXJyZW50SWNjSW5mby0+Tik7CisJCSBVU0FSVF9TdHJ1Y3RJbml0KCZVU0FSVF9Jbml0U3RydWN0dXJlKTsKKworCQkgaWYodGEyICE9IDApCisJCSB7CisJCSAJaWYoKFQwMUN1cnJlbnRJY2NJbmZvLT5TUE1PRCYweDEwKSA9PSAwKQorCQkJeworCQkJCVVTQVJUX0luaXRTdHJ1Y3R1cmUuVVNBUlRfQmF1ZFJhdGUgPSA0MDAwMDAwdWwvKEZJVGFibGVbVDAxQ3VycmVudEljY0luZm8tPkZJXS9ESVRhYmxlW1QwMUN1cnJlbnRJY2NJbmZvLT5ESV0pOworCQkJfQorCQkJZWxzZQkvL9CtyczEo8q9tcRGbi9EbrvxtcMs1N3KsbGjwfTIscqh1rUKKwkJCXsKKwkJCQlVU0FSVF9Jbml0U3RydWN0dXJlLlVTQVJUX0JhdWRSYXRlID0gMTA3NTMqIFQwMUN1cnJlbnRJY2NJbmZvLT5FWERJOworCQkJfQorCQkgfQorCQkgZWxzZQorCQkgeworICAgICAgICAgICAgcHBzID0gMDsKKwkJIAlpZihwcHMpCisJCQl7CisJCQkJY2hhciBJU09fUHV0U3RyKHVuc2lnbmVkIGNoYXIgKnBjaCwgaW50IGxlbiwgaW50IGljaCk7CisKKwkJCQlCZWdpblRpbWVyKFRJRF9JQ0NUSU1FUiwgMTApOworCQkJCXRlbXBfYnVmZmVyWzBdID0gMHhGRjsKKwkJCQl0ZW1wX2J1ZmZlclsxXSA9IDB4MTA7CisJCQkJdGVtcF9idWZmZXJbMl0gPSAweDk1Oy8vKFQwMUN1cnJlbnRJY2NJbmZvLT5GSTw8NCl8KFQwMUN1cnJlbnRJY2NJbmZvLT5ESSk7CisJCQkJdGVtcF9idWZmZXJbM10gPSAodGVtcF9idWZmZXJbMF1edGVtcF9idWZmZXJbMV0pXnRlbXBfYnVmZmVyWzJdOworCQkJCWlmKElTT19QdXRTdHIodGVtcF9idWZmZXIsIDQsIGljaCkgPT0gMCkKKwkJCQl7CisJCQkJCWNfdG1wID0gSVNPX0dldENoYXIoaWNoKTsgCisJCQkJCWlmKGNfdG1wID09IDB4ZmYpCisJCQkJCQlpZihUMDFDdXJyZW50SWNjSW5mby0+SUNFcnJvckNvZGUhPTApCisJCQkJCQkJcmV0dXJuIFQwMUN1cnJlbnRJY2NJbmZvLT5JQ0Vycm9yQ29kZTsKKwkJCQkJdGVtcF9idWZmZXJbNF0gPSBjX3RtcDsJCisKKwkJCQkJY190bXAgPSBJU09fR2V0Q2hhcihpY2gpOyAKKwkJCQkJaWYoY190bXAgPT0gMHhmZikKKwkJCQkJCWlmKFQwMUN1cnJlbnRJY2NJbmZvLT5JQ0Vycm9yQ29kZSE9MCkKKwkJCQkJCQlyZXR1cm4gVDAxQ3VycmVudEljY0luZm8tPklDRXJyb3JDb2RlOworCQkJCQl0ZW1wX2J1ZmZlcls1XSA9IGNfdG1wOworCisJCQkJCWNfdG1wID0gSVNPX0dldENoYXIoaWNoKTsgCisJCQkJCWlmKGNfdG1wID09IDB4ZmYpCisJCQkJCQlpZihUMDFDdXJyZW50SWNjSW5mby0+SUNFcnJvckNvZGUhPTApCisJCQkJCQkJcmV0dXJuIFQwMUN1cnJlbnRJY2NJbmZvLT5JQ0Vycm9yQ29kZTsKKwkJCQkJdGVtcF9idWZmZXJbNl0gPSBjX3RtcDsKKworCQkJCQljX3RtcCA9IElTT19HZXRDaGFyKGljaCk7IAorCQkJCQlpZihjX3RtcCA9PSAweGZmKQorCQkJCQkJaWYoVDAxQ3VycmVudEljY0luZm8tPklDRXJyb3JDb2RlIT0wKQorCQkJCQkJCXJldHVybiBUMDFDdXJyZW50SWNjSW5mby0+SUNFcnJvckNvZGU7CisJCQkJCXRlbXBfYnVmZmVyWzddID0gY190bXA7CisJCQkJCWlmKG1lbWNtcCh0ZW1wX2J1ZmZlciwgdGVtcF9idWZmZXIrNCwgNCkgPT0gMCkKKwkJCQkJeworCQkJCQkJVVNBUlRfSW5pdFN0cnVjdHVyZS5VU0FSVF9CYXVkUmF0ZSA9IDQwMDAwMDB1bC8oRklUYWJsZVtUMDFDdXJyZW50SWNjSW5mby0+RkldL0RJVGFibGVbVDAxQ3VycmVudEljY0luZm8tPkRJXSk7CisJCQkJCX0KKwkJCQkJZWxzZQkvL9CtyczEo8q9tcRGbi9EbrvxtcMs1N3KsbGjwfTIscqh1rUKKwkJCQkJeworCQkJCQkJVVNBUlRfSW5pdFN0cnVjdHVyZS5VU0FSVF9CYXVkUmF0ZSA9IDEwNzUzKiBUMDFDdXJyZW50SWNjSW5mby0+RVhESTsKKwkJCQkJfQorCQkJCX0KKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQlVU0FSVF9Jbml0U3RydWN0dXJlLlVTQVJUX0JhdWRSYXRlID0gMTA3NTMqIFQwMUN1cnJlbnRJY2NJbmZvLT5FWERJOworCQkJfQorCQkgfQkJCisJCSAKKwkJVVNBUlRfSW5pdFN0cnVjdHVyZS5VU0FSVF9Xb3JkTGVuZ3RoID0gVVNBUlRfV29yZExlbmd0aF85YjsKKwkJVVNBUlRfSW5pdFN0cnVjdHVyZS5VU0FSVF9TdG9wQml0cyA9IFVTQVJUX1N0b3BCaXRzXzFfNTsKKwkJVVNBUlRfSW5pdFN0cnVjdHVyZS5VU0FSVF9QYXJpdHkgPSBVU0FSVF9QYXJpdHlfRXZlbjsKKwkKKyAgICAJVVNBUlRfQ2xvY2tJbml0U3RydWN0dXJlLlVTQVJUX0Nsb2NrID0gVVNBUlRfQ2xvY2tfRW5hYmxlOworCQkKKwkJVVNBUlRfSW5pdChVU0FSVDMsICZVU0FSVF9Jbml0U3RydWN0dXJlKTsKKwkJVVNBUlRfQ2xvY2tJbml0KCBVU0FSVDMsICZVU0FSVF9DbG9ja0luaXRTdHJ1Y3R1cmUgKTsKKworCQkvKiBFbmFibGUgVVNBUlQxICovCisJCVVTQVJUX0NtZChVU0FSVDMsIEVOQUJMRSk7CisJCQorCQkvKiBFbmFibGUgdGhlIE5BQ0sgVHJhbnNtaXNzaW9uICovCisJCVVTQVJUX1NtYXJ0Q2FyZE5BQ0tDbWQoVVNBUlQzLCBFTkFCTEUpOworCQkKKwkJLyogRW5hYmxlIHRoZSBTbWFydCBDYXJkIEludGVyZmFjZSAqLworCQlVU0FSVF9TbWFydENhcmRDbWQoVVNBUlQzLCBFTkFCTEUpOworCX0KKwllbHNlCisJeworCQlUMDFDdXJyZW50SWNjSW5mby0+SUNFcnJvckNvZGU9NjsKKwkJcmV0dXJuIFQwMUN1cnJlbnRJY2NJbmZvLT5JQ0Vycm9yQ29kZTsJLy9UU7K7yse6z7eotcRJQ7+oo6y+3L74CisJfQkKKwlUMDFDdXJyZW50SWNjSW5mby0+SUNFcnJvckNvZGUgPSAwOworCXJldHVybiBUMDFDdXJyZW50SWNjSW5mby0+SUNFcnJvckNvZGU7Cit9CisKKy8vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vKiBGdW5jdGlvbiBOYW1lICAgICAgIDogSUNDX1Bvd2VyT25DYXJkCisvLyogT2JqZWN0ICAgICAgICAgICAgICA6IL+oyc+15yy4tM67CisvLyogSW5wdXQgUGFyYW1ldGVycyAgICA6IGljaCA9IAorLy8qIE91dHB1dCBQYXJhbWV0ZXJzICAgOiC3tbvY1rWjuklDRXJyb3JDb2RlCisvLyogRnVuY3Rpb25zIGNhbGxlZCAgICA6IG5vbmUKKy8vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3Vuc2lnbmVkIHNob3J0IElDQ19Qb3dlck9uQ2FyZChpbnQgaWNoKQoreworCWludCByY29kZTsKKwkKKwkvL1JFU0VU1sO1zbXnxr2jrL34yOu4tM6717TMrAorCUdQSU9fUmVzZXRCaXRzKEdQSU9fU0FNMl9DQVJEX1JFU0VULCBQaW5fU0FNMl9DQVJEX1JFU0VUKTsgCisKKwkvL7XItP2/qLXn1LS+zdD3CisJQmVnaW5UaW1lcihUSURfSUNDVElNRVIsIDIwKTsJCS8vtci0/bXn1LS+zdD30MW6xcqxvOQ9MTBtcyDV/bOjx+m/9s/CTFRDMTc1NiA1dXMKKwl3aGlsZSAoaXNJQ0NhcmRSZWFkeShpY2gpID09IDApCisJewkJCQkJCQkJCS8vzrS+zdD317TMrAorCQlpZihHZXRUaW1lclN0YXR1cyhUSURfSUNDVElNRVIsMSkgPT0gVUVSVElNRVNUQVRVU19SSU5JTkcpCisJCXsKKwkJCWJyZWFrOworCQl9CisJfQorCVVTQVJUX1NtYXJ0Q2FyZENtZChVU0FSVDMsIEVOQUJMRSk7CisKKwlyY29kZSA9IElDQ19SZXNldENhcmQoaWNoKTsKKwlpZihyY29kZSkKKwl7CisJCVQwMUN1cnJlbnRJY2NJbmZvLT5FWERJID0gNDsKKwkJcmNvZGUgPSBJQ0NfUmVzZXRDYXJkKGljaCk7CQkvL8jIuLTOu8qnsNws1NnAtNK7tM4KKwl9CisJcmV0dXJuIAlyY29kZTsKK30KKworLy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8qIEZ1bmN0aW9uIE5hbWUgICAgICAgOiBJQ0NfUG93ZXJPZmZDYXJkCisvLyogT2JqZWN0ICAgICAgICAgICAgICA6IL+oz8K15worLy8qIElucHV0IFBhcmFtZXRlcnMgICAgOiBpY2ggPSBDSE5MX0lDQy9QU0FNMV9QT1dFUi9QU0FNMl9QT1dFUl9PTgorLy8qIE91dHB1dCBQYXJhbWV0ZXJzICAgOiBub25lCisvLyogRnVuY3Rpb25zIGNhbGxlZCAgICA6IG5vbmUKKy8vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3ZvaWQgSUNDX1Bvd2VyT2ZmQ2FyZChpbnQgaWNoKQoreworICAgIEdQSU9fUmVzZXRCaXRzKEdQSU9fU0FNMl9DQVJEX1JFU0VULCBQaW5fU0FNMl9DQVJEX1JFU0VUKTsKKyAgICBCZWdpblRpbWVyKFRJRF9JQ0NUSU1FUiwgMik7CisgICAgd2hpbGUgKEdldFRpbWVyU3RhdHVzKFRJRF9JQ0NUSU1FUiwxKSAhPSBVRVJUSU1FU1RBVFVTX1JJTklORyl7fTsKKyAgICAvL8qx1tPNo9a5CisgICAgVVNBUlRfU21hcnRDYXJkQ21kKFBTQU0yX1VTQVJULCBESVNBQkxFKTsgCisJcmV0dXJuIDsKK30KKworLy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8qIEZ1bmN0aW9uIE5hbWUgICAgICAgOiBJU09fR2V0Q2hhcgorLy8qIE9iamVjdCAgICAgICAgICAgICAgOiDS7LK9v6iy6dGvt73KvbbByKHSu7j219a3+worLy8qIElucHV0IFBhcmFtZXRlcnMgICAgOiBpY2g9SUO/qL3Tv9oKKy8vKiBPdXRwdXQgUGFyYW1ldGVycyAgIDogt7W72DB4ZmbKsSzQ6NKqvOyy4klDRXJyb3JDb2Rlo6zG5Mv81rXOqr3TytW1vbXE19a3+worLy8qIEZ1bmN0aW9ucyBjYWxsZWQgICAgOiBub25lCisvLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCit1bnNpZ25lZCBjaGFyIElTT19HZXRDaGFyKGludCBpY2gpCit7CisJY2hhciByY29kZTsKKworCUJlZ2luVGltZXIoVElEX0lDQ0NIQVJUSU1FUiwzMDApOwkJCQkJLy8yMDExLjMuNLrF1cW9rc6wtffV+6Ossru199X7TUFDMtCj0emzrMqxCisJd2hpbGUoVVNBUlRfR2V0RmxhZ1N0YXR1cyhVU0FSVDMsIFVTQVJUX0ZMQUdfUlhORSkgPT0gUkVTRVQpCS8vytW1vdfWt/sKKwl7CisJCWlmKFVTQVJUX0dldEZsYWdTdGF0dXMoVVNBUlQzLCBVU0FSVF9GTEFHX1BFKSAhPSBSRVNFVCkJLy/G5sW80KPR6QorCQl7CisJCQlVU0FSVF9SZWNlaXZlRGF0YShVU0FSVDMpOwkvL7i0zrvXtMysvMS05sb3CisJCQlUMDFDdXJyZW50SWNjSW5mby0+SUNFcnJvckNvZGUgPSAweDAwMDc7CisJCQlyZXR1cm4gMHhmZjsKKwkJfQorCQkvL3Rlc3QgCQkKKwkJaWYoR2V0VGltZXJTdGF0dXMoVElEX0lDQ0NIQVJUSU1FUiwxKSA9PSBVRVJUSU1FU1RBVFVTX1JJTklORykJLy+908rVu/qzrMqxCQkJCQorCQl7CisJCQlUMDFDdXJyZW50SWNjSW5mby0+SUNFcnJvckNvZGUgPSAweDAwMDU7CisJCQlyZXR1cm4gMHhmZjsKKwkJfQkJCisJCWlmKGlzSUNDYXJkUmVhZHkoaWNoKT09MCkKKwkJeworCQkJVDAxQ3VycmVudEljY0luZm8tPklDRXJyb3JDb2RlID0gMHgwMDA0OworCQkJcmV0dXJuIDB4ZmY7CisJCX0KKwl9CisJVDAxQ3VycmVudEljY0luZm8tPklDRXJyb3JDb2RlID0gMDsKKwlyY29kZSA9IFVTQVJUX1JlY2VpdmVEYXRhKFVTQVJUMyk7CS8vvdPK1dK7uPbX1rf7CisJaWYoVDAxQ3VycmVudEljY0luZm8tPlRTID09IDB4M2YpCisJCXJjb2RlID0gfnJjb2RlOworCXJldHVybiByY29kZTt9CisKKy8vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vKiBGdW5jdGlvbiBOYW1lICAgICAgIDogSVNPX0dldFByb2NCeXRlCisvLyogT2JqZWN0ICAgICAgICAgICAgICA6ILXDtb25/bPM19a92qOssqLX98XQts+9+NK7sr2908rVU1cyCisvLyogSW5wdXQgUGFyYW1ldGVycyAgICA6IGNoPUlOUyxpY2g9SUO/qL3Tv9oKKy8vKiBPdXRwdXQgUGFyYW1ldGVycyAgIDogt7W72DA9uf2zzNfWvdrT60lOU8/gzawsMS0yNTU9tO3O8yhUMDFDdXJyZW50SWNjSW5mby0+SUNFcnJvckNvZGW07c7ztPrC6yksNnh4eC85eHh4PVNXMVNXMgorLy8qIEZ1bmN0aW9ucyBjYWxsZWQgICAgOiBub25lCisvLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCit1bnNpZ25lZCBzaG9ydCBJU09fR2V0UHJvY0J5dGUodW5zaWduZWQgY2hhciBjaCwgaW50IGljaCkKK3sKKwl1bnNpZ25lZCBjaGFyIGNjaDEsY2NoMjsKKworLy8JVVNBUlQzLT5VU19DUiA9IEFUOTFDX1VTX1JFVFRPOwkvL9bY1Ni908rVxvezrMqxCisJcnZjY2NoMToKKwljY2gxID0gSVNPX0dldENoYXIoaWNoKTsKKwlpZihjY2gxID09IDB4ZmYpCisJCWlmKFQwMUN1cnJlbnRJY2NJbmZvLT5JQ0Vycm9yQ29kZSE9MCkKKwkJCXJldHVybiAodW5zaWduZWQgc2hvcnQpVDAxQ3VycmVudEljY0luZm8tPklDRXJyb3JDb2RlOworCWlmKChjY2gxID09IGNoIHx8IGNjaDEgPT0gfmNoICB8fCBjY2gxID09IDB4NjApICYmIGNoICE9IDB4MDApCisJeworCQlpZihjY2gxID09IDB4NjApCisJCQlnb3RvIHJ2Y2NjaDE7CisJCXJldHVybiAodW5zaWduZWQgc2hvcnQpIDA7CisJfQorCWVsc2UKKwl7CisJCWNjaDIgPSBJU09fR2V0Q2hhcihpY2gpOworCQlpZihjY2gyID09IDB4ZmYpCisJCQlpZihUMDFDdXJyZW50SWNjSW5mby0+SUNFcnJvckNvZGUhPTApCisJCQkJcmV0dXJuICh1bnNpZ25lZCBzaG9ydClUMDFDdXJyZW50SWNjSW5mby0+SUNFcnJvckNvZGU7CisJCVQwMUN1cnJlbnRJY2NJbmZvLT5JQ0Vycm9yQ29kZSA9IChjY2gxPDw4IHwgY2NoMik7CisJCXJldHVybiAodW5zaWduZWQgc2hvcnQpVDAxQ3VycmVudEljY0luZm8tPklDRXJyb3JDb2RlOwkvL1NXMS5TVzIKKwl9Cit9CisKKy8vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vKiBGdW5jdGlvbiBOYW1lICAgICAgIDogSVNPX1B1dFN0cgorLy8qIE9iamVjdCAgICAgICAgICAgICAgOiDS7LK9v6iy6dGvt73Kvbeis/bSu7j219a3+7SuCisvLyogSW5wdXQgUGFyYW1ldGVycyAgICA6IGljaD1JQ7+ovdO/2gorLy8qIE91dHB1dCBQYXJhbWV0ZXJzICAgOiC3tbvYt8cwyrEs0OjSqrzssuJJQ0Vycm9yQ29kZQorLy8qIEZ1bmN0aW9ucyBjYWxsZWQgICAgOiBub25lCisvLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitjaGFyIElTT19QdXRTdHIodW5zaWduZWQgY2hhciAqcGNoLCBpbnQgbGVuLCBpbnQgaWNoKQoreworCXVuc2lnbmVkIGNoYXIgaSxyY29kZTsKKwljaGFyIGNoOworCisJLy/G9Lav0MW6xdHTyrG2qMqxLy/O1cbmv6jQ6NKq0dPKsSCxqM7E1q685AorCUJlZ2luVGltZXIoVElEX0lDQ1RJTUVSLCAyKTsJCS8v0MW6xcqxvOQ9MW1zCisJd2hpbGUgKCBHZXRUaW1lclN0YXR1cyhUSURfSUNDVElNRVIsMSkgIT0gVUVSVElNRVNUQVRVU19SSU5JTkcpOworCisJcmNvZGUgPSAwOworCisJZm9yKGk9MDtpPGxlbjtpKyspCisJeworCQljaCA9IHBjaFtpXTsKKwkJaWYoVDAxQ3VycmVudEljY0luZm8tPlRTID09IDB4M2YpCisJCQljaCA9IH5jaDsJCS8vt7TP8tS8tqgKKwkJCQorCQlpYlNsb3QgPSBpY2g7CisJCWJGZUZsYWdzW2liU2xvdF0gPSAwOworCQliRmVDb3VudFtpYlNsb3RdID0gMDsKKwkJVVNBUlRfU2VuZERhdGEoVVNBUlQzLGNoKTsJLy+3osvN0ru49tfWt/sKKworCQl3aGlsZShVU0FSVF9HZXRGbGFnU3RhdHVzKFVTQVJUMywgVVNBUlRfRkxBR19UQykgPT0gUkVTRVQpCS8vu7qz5cb3v9WjvworCQl7CisJCQlpZihiRmVGbGFnc1tpYlNsb3RdKQorCQkJeworCQkJCWlmKGJGZUNvdW50W2liU2xvdF0gPj0zICkJLy+0q8rk1ti3oqOstO3O87Tvtb3X7rTzyv0KKwkJCQl7CisJCQkJCVVTQVJUX0NsZWFyRmxhZyhVU0FSVDMsVVNBUlRfRkxBR19QRXxVU0FSVF9GTEFHX0ZFfFVTQVJUX0ZMQUdfTkV8VVNBUlRfRkxBR19PUkV8VVNBUlRfRkxBR19SWE5FfFVTQVJUX0ZMQUdfVFhFKTsJLy+4tM6717TMrLzEtObG9worCQkJCQlUMDFDdXJyZW50SWNjSW5mby0+SUNFcnJvckNvZGUgPSAweDAwMDc7CisJCQkJCXJjb2RlID0gVDAxQ3VycmVudEljY0luZm8tPklDRXJyb3JDb2RlOworCQkJCQlicmVhazsKKwkJCQl9CisJCQkJaWJTbG90ID0gaWNoOworCQkJCWJGZUZsYWdzW2liU2xvdF0gPSAwOworCQkJCWJGZUNvdW50W2liU2xvdF0rKzsKKwkJCQlVU0FSVF9TZW5kRGF0YShVU0FSVDMsY2gpOwkvL9bYt6LLzdK7uPbX1rf7CisJCQl9CisJCQlpZihpc0lDQ2FyZFJlYWR5KGljaCk9PTApCisJCQl7CisJCQkJVDAxQ3VycmVudEljY0luZm8tPklDRXJyb3JDb2RlID0gNDsKKwkJCQlyY29kZSA9IFQwMUN1cnJlbnRJY2NJbmZvLT5JQ0Vycm9yQ29kZTsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQorCQlpZihyY29kZSAhPSAwKQorCQkJYnJlYWs7CisJfQorCSh2b2lkKVVTQVJUX1JlY2VpdmVEYXRhKFVTQVJUMyk7CisJcmV0dXJuIHJjb2RlOworICB9CisKKworLy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8qIEZ1bmN0aW9uIE5hbWUgICAgICAgOiBJQ0NfVFBEVQorLy8qIE9iamVjdCAgICAgICAgICAgICAgOiDQrdLptKvK5Mr9vt21pdSq07PJ5AorLy8qIElucHV0IFBhcmFtZXRlcnMgICAgOiBzY21kPTXX1r3aw/zB7tfWt/u0rta41eujqENMQaGiSU5ToaJQMaGiUDK6zVAzo6ksCisvLyoJCQkJCQlzZGF0YT23osvNL73TytXK/b7du7qz5cil1rjV66OsY3RsPdCt0um/2NbG19a3+6OovPvPwsr2o6ksICpyZWNfYnl0ZWxlbr3TytzK/b7dtcSzpLbIo6xpY2g9SUO/qL3Tv9oKKy8vKgkJCQkJCWN0bD0wzt7K/b7d1qFzY21kWzRdPTAsIGN0bD0xt6LLzcr9vt3WoS/WobOktsjTyXNjbWRbNF3It7aoLCBjdGw9Mr3TytXK/b7d1qEKKy8vKiBPdXRwdXQgUGFyYW1ldGVycyAgIDogt7W72ElDRXJyb3JDb2RlPVNXMSBTVzK78tXfMC0yNTW1xM7vwO2y47TtzvO0+sLrCisvLyogRnVuY3Rpb25zIGNhbGxlZCAgICA6IG5vbmUKKy8vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3Vuc2lnbmVkIHNob3J0IFQwX1RQRFUodW5zaWduZWQgY2hhciAqIHNjbWQsIHVuc2lnbmVkIGNoYXIgKiBzZGF0YSwgaW50IGN0bCwgdW5zaWduZWQgY2hhciAqcmVjX2J5dGVsZW4sIGludCBpY2gpCit7CisJdW5zaWduZWQgY2hhciBjY2gxOworCXVuc2lnbmVkIHNob3J0IHJjb2RlLGksaWxlbjsgCisKKwlVU0FSVF9DbGVhckZsYWcoVVNBUlQzLFVTQVJUX0ZMQUdfUEV8VVNBUlRfRkxBR19GRXxVU0FSVF9GTEFHX05FfFVTQVJUX0ZMQUdfT1JFfFVTQVJUX0ZMQUdfUlhORXxVU0FSVF9GTEFHX1RYRSk7CS8vuLTOu9e0zKy8xLTmxvcKKworCWlmKElTT19QdXRTdHIoc2NtZCwgNSwgaWNoKSAhPSAweDApCS8vt6LLzcP8we7NtworCXsKKwkJcmV0dXJuIFQwMUN1cnJlbnRJY2NJbmZvLT5JQ0Vycm9yQ29kZTsJIAorCX0KKworCSpyZWNfYnl0ZWxlbiA9IDA7CisKKwlyY29kZSA9IElTT19HZXRQcm9jQnl0ZShzY21kWzFdLCBpY2gpOworCWlmKHJjb2RlID09IDApCisJewkJCQkJCQkJCQkvL7e1u9jWtdPrSU5Tz+DNrLvyzqoweDYwCisJCWlmKGN0bCA9PSAxKQorCQl7CQkJCQkJCQkJCS8vuPrL5sP8we7K/b7d0OjSqreiy80KKwkJCWlmKElTT19QdXRTdHIoc2RhdGEsIHNjbWRbNF0sIGljaCkgIT0gMHgwKQkvL7eiy83K/b7dCisJCQl7CisJCQkJcmV0dXJuIFQwMUN1cnJlbnRJY2NJbmZvLT5JQ0Vycm9yQ29kZTsKKwkJCX0gCQkKKwkJfQorCQllbHNlCisJCXsKKwkJCWlsZW4gPSBzY21kWzRdOworCQkJZm9yKGk9MDtpPGlsZW47aSsrKQorCQkJeworCQkJCWNjaDEgPSBJU09fR2V0Q2hhcihpY2gpOworCQkJCWlmKGNjaDEgPT0gMHhmZikKKwkJCQkJaWYoVDAxQ3VycmVudEljY0luZm8tPklDRXJyb3JDb2RlIT0wKQorCQkJCQkJcmV0dXJuIFQwMUN1cnJlbnRJY2NJbmZvLT5JQ0Vycm9yQ29kZTsKKwkJCQlzZGF0YVtpXT1jY2gxOworCQkJfQorCQkJKnJlY19ieXRlbGVuID0gaWxlbjsKKwkJfQkKKwkJcmNvZGUgPSBJU09fR2V0UHJvY0J5dGUoMCwgaWNoKTsKKwl9CisJVDAxQ3VycmVudEljY0luZm8tPklDRXJyb3JDb2RlID0gcmNvZGU7CisJcmV0dXJuIHJjb2RlOworfQorCisvLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyogRnVuY3Rpb24gTmFtZSAgICAgICA6IFQxX1RQRFUKKy8vKiBPYmplY3QgICAgICAgICAgICAgIDogVD0xINCt0um0q8rkyv2+3bWl1KrTs8nkCisvLyogSW5wdXQgUGFyYW1ldGVycyAgICA6IAorLy8qIE91dHB1dCBQYXJhbWV0ZXJzICAgOiC3tbvYSUNFcnJvckNvZGU9U1cxIFNXMrvy1d8wLTI1NbXEzu/A7bLjtO3O87T6wusKKy8vKiBGdW5jdGlvbnMgY2FsbGVkICAgIDogbm9uZQorLy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQordW5zaWduZWQgc2hvcnQgVDFfVFBEVSh1bnNpZ25lZCBjaGFyICpzZW5kX2RhdGEsdW5zaWduZWQgY2hhciBzZW5kX2J5dGVsZW4sdW5zaWduZWQgY2hhciAqcmVjX2RhdGEsdW5zaWduZWQgY2hhciAqcmVjX2J5dGVsZW4sIGludCBpY2gpCit7CisJdW5zaWduZWQgY2hhciBjY2gxOworCXVuc2lnbmVkIGNoYXIgaSxyTGVuOworCisJVVNBUlRfQ2xlYXJGbGFnKFVTQVJUMyxVU0FSVF9GTEFHX1BFfFVTQVJUX0ZMQUdfRkV8VVNBUlRfRkxBR19ORXxVU0FSVF9GTEFHX09SRXxVU0FSVF9GTEFHX1JYTkV8VVNBUlRfRkxBR19UWEUpOwkvL7i0zrvXtMysvMS05sb3CisJCisJaWYoSVNPX1B1dFN0cihzZW5kX2RhdGEsIHNlbmRfYnl0ZWxlbiwgaWNoKSAhPSAweDApCS8vt6LLzcr9vt3WoQorCXsKKwkJcmV0dXJuIFQwMUN1cnJlbnRJY2NJbmZvLT5JQ0Vycm9yQ29kZTsKKwl9CisgICAgCisJckxlbiA9IDM7CisJZm9yKGk9MDtpPHJMZW47aSsrKQkJLy+908rVTkFEoaJQQ0KhokxFTgorCXsKKwkJY2NoMSA9IElTT19HZXRDaGFyKGljaCk7CisJCWlmKGNjaDEgPT0gMHhmZikKKwkJeworCQkJaWYoVDAxQ3VycmVudEljY0luZm8tPklDRXJyb3JDb2RlPT01KQorCQkJCXJldHVybiBUMDFDdXJyZW50SWNjSW5mby0+SUNFcnJvckNvZGU7CisJCX0KKwkJKihyZWNfZGF0YStpKT1jY2gxOworCX0KKworCXJMZW4gKz0gKihyZWNfZGF0YSsyKTsJLy/K/b7ds6S2yAorCWlmKFQwMUN1cnJlbnRJY2NJbmZvLT5DcmMgPT0gMSkKKwkJckxlbiArPSAyOworCWVsc2UKKwkJckxlbiArPSAxOworCQkKKwlmb3IoaT0zO2k8ckxlbjtpKyspCQkvL73TytXK/b7d1qG6zUxSQworCXsKKwkJY2NoMSA9IElTT19HZXRDaGFyKGljaCk7CisJCWlmKGNjaDEgPT0gMHhmZikKKwkJeworCQkJaWYoVDAxQ3VycmVudEljY0luZm8tPklDRXJyb3JDb2RlPT01KQorCQkJCXJldHVybiBUMDFDdXJyZW50SWNjSW5mby0+SUNFcnJvckNvZGU7CisJCX0KKwkJKihyZWNfZGF0YStpKT1jY2gxOworCX0KKwkqcmVjX2J5dGVsZW4gPSByTGVuOworCVQwMUN1cnJlbnRJY2NJbmZvLT5JQ0Vycm9yQ29kZSA9IDA7CisJcmV0dXJuIFQwMUN1cnJlbnRJY2NJbmZvLT5JQ0Vycm9yQ29kZTsKK30KKwpkaWZmIC0tZ2l0IGEvaWNjX2FwZHVfbGliL0xJQl9JbmNsdWRlcy5IIGIvaWNjX2FwZHVfbGliL0xJQl9JbmNsdWRlcy5ICm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiMzdlNDQKLS0tIC9kZXYvbnVsbAorKysgYi9pY2NfYXBkdV9saWIvTElCX0luY2x1ZGVzLkgKQEAgLTAsMCArMSw1NCBAQAorCisKKyNpZm5kZWYgICBfX0xJQl9JbmNsdWRlc19IX18KKyNkZWZpbmUgICBfX0xJQl9JbmNsdWRlc19IX18KKworCisKKyAgI2luY2x1ZGUgICA8c3RyaW5nLmg+CisgICNpbmNsdWRlICAgIkNQVS5IIiAgCisgICNpbmNsdWRlICAgInN0bTMyZjEweC5oIgkKKworICAjaW5jbHVkZSAgICJJQ0NfQVBEVV9MSUIuSCIKKworICAjaW5jbHVkZSAgICJDYXJkRXJyb3JDb2RlLkgiCisgICNpbmNsdWRlICAgIk1pZmFyZV9PbmVfSFdfTElCLkgiCisKKworLy8yMDA5LjA2LjA00e7OxMrZuMS2r6OssNG53L3FtqjS5bjEzqpDUFW/qMuuv9jG99StwO3NvLbU06a1xLncvcUKKyNkZWZpbmUJUGluX01pZmFyZV9TQ0sJCUdQSU9fUGluXzEzCisjZGVmaW5lCVBpbl9NaWZhcmVfTUlTTwkJR1BJT19QaW5fMTQKKyNkZWZpbmUJUGluX01pZmFyZV9NT1NJCQlHUElPX1Bpbl8xNQorCisjZGVmaW5lCVBpbl9NaWZhcmVfUlNUCQlHUElPX1Bpbl82CisjZGVmaW5lCVBpbl9NaWZhcmVfTlNTCQlHUElPX1Bpbl8xMgorCisjZGVmaW5lCUdQSU9fTUFGSVJFX1NQSQkJR1BJT0IKKyNkZWZpbmUJR1BJT19NQUZJUkVfUlNUCQlHUElPQworI2RlZmluZSBHUElPX01BRklSRV9OU1MJCUdQSU9CCisKKworI2RlZmluZQlNaWZhcmVfU1BJeCAgICAgICAgIFNQSTIgCisJCisKKworLy9EYXRhQ29udmVydD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitleHRlcm4gdW5zaWduZWQgY2hhciAqIExFSW50VG80U3RyKGludCBpLHVuc2lnbmVkIGNoYXIgKiBzdHIpOworZXh0ZXJuIHVuc2lnbmVkIGNoYXIgKiBMRUludFRvM1N0cihpbnQgaSx1bnNpZ25lZCBjaGFyICogc3RyKTsKK2V4dGVybiB1bnNpZ25lZCBjaGFyICogTEVJbnRUbzJTdHIoaW50IGksdW5zaWduZWQgY2hhciAqIHN0cik7CitleHRlcm4gdW5zaWduZWQgaW50IEJFNFN0clRvSW50KHVuc2lnbmVkIGNoYXIgKnN0cik7CitleHRlcm4gdW5zaWduZWQgaW50IEJFM1N0clRvSW50KHVuc2lnbmVkIGNoYXIgKnN0cik7CitleHRlcm4gdW5zaWduZWQgc2hvcnQgQkUyU3RyVG9JbnQodW5zaWduZWQgY2hhciAqc3RyKTsKK2V4dGVybiBpbnQgQ29tcGFyZV90d29fZGF0YSh1bnNpZ25lZCBjaGFyICp4cDEsdW5zaWduZWQgY2hhciAqeHAyLHVuc2lnbmVkIGNoYXIgbik7CitleHRlcm4gdW5zaWduZWQgY2hhciBpc0xlYXAodW5zaWduZWQgc2hvcnQgeWVhcik7CitleHRlcm4gdW5zaWduZWQgY2hhciBpc1ZhbGlkRGF0ZSh1bnNpZ25lZCBjaGFyICogcHNDbG9jayk7CitleHRlcm4gdW5zaWduZWQgY2hhciBYT1IodW5zaWduZWQgY2hhciAqYnVmZmVyLHVuc2lnbmVkIGNoYXIgbGVuZ3RoKTsKK2V4dGVybiB1bnNpZ25lZCBzaG9ydCBnZXRfY3JjXzE2ICh1bnNpZ25lZCBzaG9ydCBzdGFydCwgY2hhciAqcCwgdW5zaWduZWQgc2hvcnQgbik7CitleHRlcm4gdm9pZCBDYWxDcmMxNih1bnNpZ25lZCBjaGFyKiBpbnB1dCwgdW5zaWduZWQgY2hhciogQ3JjMTYsIHVuc2lnbmVkIGludCBsZW4pOworCisKKworCisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9pY2NfYXBkdV9saWIvTWZFcnJOby5oIGIvaWNjX2FwZHVfbGliL01mRXJyTm8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZDNlZWViCi0tLSAvZGV2L251bGwKKysrIGIvaWNjX2FwZHVfbGliL01mRXJyTm8uaApAQCAtMCwwICsxLDExNCBAQAorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8gICAgQ29weXJpZ2h0IChjKSwgUGhpbGlwcyBTZW1pY29uZHVjdG9ycyBHcmF0a29ybgorLy8KKy8vICAgICAgICAgICAgICAgICAgICAgKEMpUEhJTElQUyBFbGVjdHJvbmljcyBOLlYuIDIwMDAKKy8vICAgICAgICAgICAgICAgICAgICAgICAgQWxsIHJpZ2h0cyBhcmUgcmVzZXJ2ZWQuIAorLy8gIFBoaWxpcHMgcmVzZXJ2ZXMgdGhlIHJpZ2h0IHRvIG1ha2UgY2hhbmdlcyB3aXRob3V0IG5vdGljZSBhdCBhbnkgdGltZS4KKy8vIFBoaWxpcHMgbWFrZXMgbm8gd2FycmFudHksIGV4cHJlc3NlZCwgaW1wbGllZCBvciBzdGF0dXRvcnksIGluY2x1ZGluZyBidXQKKy8vIG5vdCBsaW1pdGVkIHRvIGFueSBpbXBsaWVkIHdhcnJhbnR5IG9mIG1lcmNoYW50aWJpbGl0eSBvciBmaXRuZXNzIGZvciBhbnkKKy8vcGFydGljdWxhciBwdXJwb3NlLCBvciB0aGF0IHRoZSB1c2Ugd2lsbCBub3QgaW5mcmluZ2UgYW55IHRoaXJkIHBhcnR5IHBhdGVudCwKKy8vIGNvcHlyaWdodCBvciB0cmFkZW1hcmsuIFBoaWxpcHMgbXVzdCBub3QgYmUgbGlhYmxlIGZvciBhbnkgbG9zcyBvciBkYW1hZ2UKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlzaW5nIGZyb20gaXRzIHVzZS4KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKyNpZm5kZWYgTUZFUlJOT19ICisjZGVmaW5lIE1GRVJSTk9fSAorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8gUmVhZGVyIEVycm9yIENvZGVzICAgICAgICAgICAgICAgICAgIEJhc2UgQWRkcmVzcyBTdGFydDogICAgICAweDIwMDAKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYXNlIEFkZHJlc3MgRW5kOiAgICAgICAgMHgyOTk5CisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKyNkZWZpbmUgUkVBREVSX0VSUl9CQVNFX1NUQVJUICAgICAgICAgICAoMHgyMDAwKQorI2RlZmluZSBNSV9PSyAgICAgICAgICAgICAgICAgICAgICAgICAgICgwKQorI2RlZmluZSBNSV9DSEtfT0sgICAgICAgICAgICAgICAgICAgICAgICgwKQorI2RlZmluZSBNSV9DUkNfWkVSTyAgICAgICAgICAgICAgICAgICAgICgwKQorLy8gSUNPREUxIEVycm9yICAgQ29kZXMKKyNkZWZpbmUgIEkxX09LICAgICAgICAgICAgICAgICAgICAgICAgICAoMCkKKyNkZWZpbmUgIEkxX05PX0VSUiAgICAgICAgICAgICAgICAgICAgICAoMCkKKworI2RlZmluZSBNSV9OT1RBR0VSUiAgICAgICAgICAgICAgICAgICAgIChSRUFERVJfRVJSX0JBU0VfU1RBUlQgKyAweDEpCisjZGVmaW5lIE1JX0NIS19GQUlMRUQgICAgICAgICAgICAgICAgICAgKFJFQURFUl9FUlJfQkFTRV9TVEFSVCArIDB4MSkKKyNkZWZpbmUgTUlfQ1JDRVJSICAgICAgICAgICAgICAgICAgICAgICAoUkVBREVSX0VSUl9CQVNFX1NUQVJUICsgMHgyKQorI2RlZmluZSBNSV9DSEtfQ09NUEVSUiAgICAgICAgICAgICAgICAgIChSRUFERVJfRVJSX0JBU0VfU1RBUlQgKyAweDIpCisjZGVmaW5lIE1JX0VNUFRZICAgICAgICAgICAgICAgICAgICAgICAgKFJFQURFUl9FUlJfQkFTRV9TVEFSVCArIDB4MykKKyNkZWZpbmUgTUlfQVVUSEVSUiAgICAgICAgICAgICAgICAgICAgICAoUkVBREVSX0VSUl9CQVNFX1NUQVJUICsgMHg0KQorI2RlZmluZSBNSV9QQVJJVFlFUlIgICAgICAgICAgICAgICAgICAgIChSRUFERVJfRVJSX0JBU0VfU1RBUlQgKyAweDUpCisjZGVmaW5lIE1JX0NPREVFUlIgICAgICAgICAgICAgICAgICAgICAgKFJFQURFUl9FUlJfQkFTRV9TVEFSVCArIDB4NikKKworI2RlZmluZSBNSV9TRVJOUkVSUiAgICAgICAgICAgICAgICAgICAgIChSRUFERVJfRVJSX0JBU0VfU1RBUlQgKyAweDgpCisjZGVmaW5lIE1JX0tFWUVSUiAgICAgICAgICAgICAgICAgICAgICAgKFJFQURFUl9FUlJfQkFTRV9TVEFSVCArIDB4OSkKKyNkZWZpbmUgTUlfTk9UQVVUSEVSUiAgICAgICAgICAgICAgICAgICAoUkVBREVSX0VSUl9CQVNFX1NUQVJUICsgMHgxMCkKKyNkZWZpbmUgTUlfQklUQ09VTlRFUlIgICAgICAgICAgICAgICAgICAoUkVBREVSX0VSUl9CQVNFX1NUQVJUICsgMHgxMSkKKyNkZWZpbmUgTUlfQllURUNPVU5URVJSICAgICAgICAgICAgICAgICAoUkVBREVSX0VSUl9CQVNFX1NUQVJUICsgMHgxMikKKyNkZWZpbmUgTUlfSURMRSAgICAgICAgICAgICAgICAgICAgICAgICAoUkVBREVSX0VSUl9CQVNFX1NUQVJUICsgMHgxMykKKyNkZWZpbmUgTUlfVFJBTlNFUlIgICAgICAgICAgICAgICAgICAgICAoUkVBREVSX0VSUl9CQVNFX1NUQVJUICsgMHgxNCkKKyNkZWZpbmUgTUlfV1JJVEVFUlIgICAgICAgICAgICAgICAgICAgICAoUkVBREVSX0VSUl9CQVNFX1NUQVJUICsgMHgxNSkKKyNkZWZpbmUgTUlfSU5DUkVSUiAgICAgICAgICAgICAgICAgICAgICAoUkVBREVSX0VSUl9CQVNFX1NUQVJUICsgMHgxNikKKyNkZWZpbmUgTUlfREVDUkVSUiAgICAgICAgICAgICAgICAgICAgICAoUkVBREVSX0VSUl9CQVNFX1NUQVJUICsgMHgxNykKKyNkZWZpbmUgTUlfUkVBREVSUiAgICAgICAgICAgICAgICAgICAgICAoUkVBREVSX0VSUl9CQVNFX1NUQVJUICsgMHgxOCkKKyNkZWZpbmUgTUlfT1ZGTEVSUiAgICAgICAgICAgICAgICAgICAgICAoUkVBREVSX0VSUl9CQVNFX1NUQVJUICsgMHgxOSkKKyNkZWZpbmUgTUlfUE9MTElORyAgICAgICAgICAgICAgICAgICAgICAoUkVBREVSX0VSUl9CQVNFX1NUQVJUICsgMHgyMCkKKyNkZWZpbmUgTUlfRlJBTUlOR0VSUiAgICAgICAgICAgICAgICAgICAoUkVBREVSX0VSUl9CQVNFX1NUQVJUICsgMHgyMSkKKyNkZWZpbmUgTUlfQUNDRVNTRVJSICAgICAgICAgICAgICAgICAgICAoUkVBREVSX0VSUl9CQVNFX1NUQVJUICsgMHgyMikKKyNkZWZpbmUgTUlfVU5LTk9XTl9DT01NQU5EICAgICAgICAgICAgICAoUkVBREVSX0VSUl9CQVNFX1NUQVJUICsgMHgyMykKKyNkZWZpbmUgTUlfQ09MTEVSUiAgICAgICAgICAgICAgICAgICAgICAoUkVBREVSX0VSUl9CQVNFX1NUQVJUICsgMHgyNCkKKyNkZWZpbmUgTUlfUkVTRVRFUlIgICAgICAgICAgICAgICAgICAgICAoUkVBREVSX0VSUl9CQVNFX1NUQVJUICsgMHgyNSkKKyNkZWZpbmUgTUlfSU5JVEVSUiAgICAgICAgICAgICAgICAgICAgICAoUkVBREVSX0VSUl9CQVNFX1NUQVJUICsgMHgyNSkKKyNkZWZpbmUgTUlfSU5URVJGQUNFRVJSICAgICAgICAgICAgICAgICAoUkVBREVSX0VSUl9CQVNFX1NUQVJUICsgMHgyNikKKyNkZWZpbmUgTUlfQUNDRVNTVElNRU9VVCAgICAgICAgICAgICAgICAoUkVBREVSX0VSUl9CQVNFX1NUQVJUICsgMHgyNykKKyNkZWZpbmUgTUlfTk9CSVRXSVNFQU5USUNPTEwgICAgICAgICAgICAoUkVBREVSX0VSUl9CQVNFX1NUQVJUICsgMHgyOCkKKyNkZWZpbmUgTUlfUVVJVCAgICAgICAgICAgICAgICAgICAgICAgICAoUkVBREVSX0VSUl9CQVNFX1NUQVJUICsgMHgzMCkKKyNkZWZpbmUgTUlfQ09ESU5HRVJSICAgICAgICAgICAgICAgICAgICAoUkVBREVSX0VSUl9CQVNFX1NUQVJUICsgMHgzMSkKKyNkZWZpbmUgTUlfU0VOREJZVEVOUiAgICAgICAgICAgICAgICAgICAoUkVBREVSX0VSUl9CQVNFX1NUQVJUICsgMHg1MSkKKyNkZWZpbmUgTUlfQ0FTQ0xFVkVYICAgICAgICAgICAgICAgICAgICAoUkVBREVSX0VSUl9CQVNFX1NUQVJUICsgMHg1MikgICAgCisjZGVmaW5lIE1JX1NFTkRCVUZfT1ZFUkZMT1cgICAgICAgICAgICAgKFJFQURFUl9FUlJfQkFTRV9TVEFSVCArIDB4NTMpCisjZGVmaW5lIE1JX0JBVURSQVRFX05PVF9TVVBQT1JURUQgICAgICAgKFJFQURFUl9FUlJfQkFTRV9TVEFSVCArIDB4NTQpCisjZGVmaW5lIE1JX1NBTUVfQkFVRFJBVEVfUkVRVUlSRUQgICAgICAgKFJFQURFUl9FUlJfQkFTRV9TVEFSVCArIDB4NTUpCisKKyNkZWZpbmUgTUlfV1JPTkdfUEFSQU1FVEVSX1ZBTFVFICAgICAgICAoUkVBREVSX0VSUl9CQVNFX1NUQVJUICsgMHg2MCkKKworLy8gSUNPREUxIEVycm9yICAgQ29kZXMKKyNkZWZpbmUgIEkxX1dST05HUEFSQU0gICAgICAgICAgICAgICAgICAoUkVBREVSX0VSUl9CQVNFX1NUQVJUICsgMHg2MSkKKyNkZWZpbmUgIEkxX05ZSU1QTEVNRU5URUQgICAgICAgICAgICAgICAoUkVBREVSX0VSUl9CQVNFX1NUQVJUICsgMHg2MikKKyNkZWZpbmUgIEkxX1RTUkVBRFkgICAgICAgICAgICAgICAgICAgICAoUkVBREVSX0VSUl9CQVNFX1NUQVJUICsgMHg2MykKKworI2RlZmluZSAgSTFfVElNRU9VVCAgICAgICAgICAgICAgICAgICAgIChSRUFERVJfRVJSX0JBU0VfU1RBUlQgKyAweDcwKQorI2RlZmluZSAgSTFfTk9XUklURSAgICAgICAgICAgICAgICAgICAgIChSRUFERVJfRVJSX0JBU0VfU1RBUlQgKyAweDcxKQorI2RlZmluZSAgSTFfTk9IQUxUICAgICAgICAgICAgICAgICAgICAgIChSRUFERVJfRVJSX0JBU0VfU1RBUlQgKyAweDcyKQorI2RlZmluZSAgSTFfTUlTU19BTlRJQ09MTCAgICAgICAgICAgICAgIChSRUFERVJfRVJSX0JBU0VfU1RBUlQgKyAweDczKSAKKworI2RlZmluZSAgSTFfQ09NTV9BQk9SVCAgICAgICAgICAgICAgICAgIChSRUFERVJfRVJSX0JBU0VfU1RBUlQgKyAweDgyKQorCisjZGVmaW5lIE1JX0JSRUFLICAgICAgICAgICAgICAgICAgICAgICAgKFJFQURFUl9FUlJfQkFTRV9TVEFSVCArIDB4OTkpCisjZGVmaW5lIE1JX05ZX0lNUExFTUVOVEVEICAgICAgICAgICAgICAgKFJFQURFUl9FUlJfQkFTRV9TVEFSVCArIDB4MTAwKQorI2RlZmluZSBNSV9OT19NRlJDICAgICAgICAgICAgICAgICAgICAgIChSRUFERVJfRVJSX0JBU0VfU1RBUlQgKyAweDEwMSkKKyNkZWZpbmUgTUlfTUZSQ19OT1RBVVRIICAgICAgICAgICAgICAgICAoUkVBREVSX0VSUl9CQVNFX1NUQVJUICsgMHgxMDIpCisjZGVmaW5lIE1JX1dST05HX0RFU19NT0RFICAgICAgICAgICAgICAgKFJFQURFUl9FUlJfQkFTRV9TVEFSVCArIDB4MTAzKQorI2RlZmluZSBNSV9IT1NUX0FVVEhfRkFJTEVEICAgICAgICAgICAgIChSRUFERVJfRVJSX0JBU0VfU1RBUlQgKyAweDEwNCkKKworI2RlZmluZSBNSV9XUk9OR19MT0FEX01PREUgICAgICAgICAgICAgIChSRUFERVJfRVJSX0JBU0VfU1RBUlQgKyAweDEwNikKKyNkZWZpbmUgTUlfV1JPTkdfREVTS0VZICAgICAgICAgICAgICAgICAoUkVBREVSX0VSUl9CQVNFX1NUQVJUICsgMHgxMDcpCisjZGVmaW5lIE1JX01LTE9BRF9GQUlMRUQgICAgICAgICAgICAgICAgKFJFQURFUl9FUlJfQkFTRV9TVEFSVCArIDB4MTA4KQorI2RlZmluZSBNSV9GSUZPRVJSICAgICAgICAgICAgICAgICAgICAgIChSRUFERVJfRVJSX0JBU0VfU1RBUlQgKyAweDEwOSkKKyNkZWZpbmUgTUlfV1JPTkdfQUREUiAgICAgICAgICAgICAgICAgICAoUkVBREVSX0VSUl9CQVNFX1NUQVJUICsgMHgxMTApCisjZGVmaW5lIE1JX0RFU0tFWUxPQURfRkFJTEVEICAgICAgICAgICAgKFJFQURFUl9FUlJfQkFTRV9TVEFSVCArIDB4MTExKQorI2RlZmluZSBNSV9SRUNCVUZfT1ZFUkZMT1cgICAgICAgICAgICAgIChSRUFERVJfRVJSX0JBU0VfU1RBUlQgKyAweDExMikKKyNkZWZpbmUgTUlfV1JPTkdfU0VMX0NOVCAgICAgICAgICAgICAgICAoUkVBREVSX0VSUl9CQVNFX1NUQVJUICsgMHgxMTQpCisKKyNkZWZpbmUgTUlfV1JPTkdfVEVTVF9NT0RFICAgICAgICAgICAgICAoUkVBREVSX0VSUl9CQVNFX1NUQVJUICsgMHgxMTcpCisjZGVmaW5lIE1JX1RFU1RfRkFJTEVEICAgICAgICAgICAgICAgICAgKFJFQURFUl9FUlJfQkFTRV9TVEFSVCArIDB4MTE4KQorI2RlZmluZSBNSV9UT0NfRVJST1IgICAgICAgICAgICAgICAgICAgIChSRUFERVJfRVJSX0JBU0VfU1RBUlQgKyAweDExOSkKKyNkZWZpbmUgTUlfQ09NTV9BQk9SVCAgICAgICAgICAgICAgICAgICAoUkVBREVSX0VSUl9CQVNFX1NUQVJUICsgMHgxMjApCisjZGVmaW5lIE1JX0lOVkFMSURfQkFTRSAgICAgICAgICAgICAgICAgKFJFQURFUl9FUlJfQkFTRV9TVEFSVCArIDB4MTIxKQorI2RlZmluZSBNSV9NRlJDX1JFU0VUICAgICAgICAgICAgICAgICAgIChSRUFERVJfRVJSX0JBU0VfU1RBUlQgKyAweDEyMikKKyNkZWZpbmUgTUlfV1JPTkdfVkFMVUUgICAgICAgICAgICAgICAgICAoUkVBREVSX0VSUl9CQVNFX1NUQVJUICsgMHgxMjMpCisjZGVmaW5lIE1JX1ZBTEVSUiAgICAgICAgICAgICAgICAgICAgICAgKFJFQURFUl9FUlJfQkFTRV9TVEFSVCArIDB4MTI0KQorCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLy8gTUZFUlJOT19ICmRpZmYgLS1naXQgYS9pY2NfYXBkdV9saWIvTWZSYzUwMC5oIGIvaWNjX2FwZHVfbGliL01mUmM1MDAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NmFjM2E4Ci0tLSAvZGV2L251bGwKKysrIGIvaWNjX2FwZHVfbGliL01mUmM1MDAuaApAQCAtMCwwICsxLDE4MiBAQAorLyoKKyogICAgICAgICBDb3B5cmlnaHQgKGMpLCBQaGlsaXBzIFNlbWljb25kdWN0b3JzIEdyYXRrb3JuIC8gQXVzdHJpYQorKgorKiAgICAgICAgICAgICAgICAgICAgIChDKVBISUxJUFMgRWxlY3Ryb25pY3MgTi5WLjIwMDAKKyogICAgICAgQWxsIHJpZ2h0cyBhcmUgcmVzZXJ2ZWQuIFJlcHJvZHVjdGlvbiBpbiB3aG9sZSBvciBpbiBwYXJ0IGlzIAorKiAgICAgIHByb2hpYml0ZWQgd2l0aG91dCB0aGUgd3JpdHRlbiBjb25zZW50IG9mIHRoZSBjb3B5cmlnaHQgb3duZXIuCisqICBQaGlsaXBzIHJlc2VydmVzIHRoZSByaWdodCB0byBtYWtlIGNoYW5nZXMgd2l0aG91dCBub3RpY2UgYXQgYW55IHRpbWUuCisqIFBoaWxpcHMgbWFrZXMgbm8gd2FycmFudHksIGV4cHJlc3NlZCwgaW1wbGllZCBvciBzdGF0dXRvcnksIGluY2x1ZGluZyBidXQKKyogbm90IGxpbWl0ZWQgdG8gYW55IGltcGxpZWQgd2FycmFudHkgb2YgbWVyY2hhbnRhYmlsaXR5IG9yIGZpdG5lc3MgZm9yIGFueQorKnBhcnRpY3VsYXIgcHVycG9zZSwgb3IgdGhhdCB0aGUgdXNlIHdpbGwgbm90IGluZnJpbmdlIGFueSB0aGlyZCBwYXJ0eSBwYXRlbnQsCisqIGNvcHlyaWdodCBvciB0cmFkZW1hcmsuIFBoaWxpcHMgbXVzdCBub3QgYmUgbGlhYmxlIGZvciBhbnkgbG9zcyBvciBkYW1hZ2UKKyogICAgICAgICAgICAgICAgICAgICAgICAgIGFyaXNpbmcgZnJvbSBpdHMgdXNlLgorKi8KKworI2lmbmRlZiBNRlJDNTAwX0gKKyNkZWZpbmUgTUZSQzUwMF9ICisKKy8vIFBDRCBDb25maWd1cmF0aW9uCit1bnNpZ25lZCBzaG9ydCBNZjUwMFBjZENvbmZpZyh2b2lkKTsKKworLy8gQWN0aXZlIEFudGVubmEgU2xhdmUgQ29uZmlndXJhdGlvbiBvZiB0aGUgTUYgUkM1MDAuCit1bnNpZ25lZCBzaG9ydCBNZjUwMEFjdGl2ZUFudGVubmFTbGF2ZUNvbmZpZyh2b2lkKTsKKworLy8gQWN0aXZlIEFudGVubmEgTWFzdGVyIENvbmZpZ3VyYXRpb24gb2YgdGhlIE1GIFJDIDUwMAordW5zaWduZWQgc2hvcnQgTWY1MDBBY3RpdmVBbnRlbm5hTWFzdGVyQ29uZmlnKHZvaWQpOworCisvLyBTZXQgZGVmYXVsdCBhdHRyaWJ1dGVzIGZvciB0aGUgYmF1ZHJhdGUgZGl2aWRlcgordW5zaWduZWQgc2hvcnQgTWY1MDBQY2RTZXREZWZhdWx0QXR0cmliKHZvaWQpOworCisvLyBTZXQgYXR0cmlidXRlcyBmb3IgdGhlIGJhdWRyYXRlIGRpdmlkZXIgCit1bnNpZ25lZCBzaG9ydCBNZjUwMFBjZFNldEF0dHJpYih1bnNpZ25lZCBjaGFyIERTSSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgRFJJKTsKKworLy8gR2V0IHRyYW5zbWlzc2lvbiBwcm9wZXJ0aWVzIG9mIHRoZSBQQ0QKK3Vuc2lnbmVkIHNob3J0IE1mNTAwUGNkR2V0QXR0cmliKHVuc2lnbmVkIGNoYXIgKkZTQ0ltYXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKkZTREltYXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKkRTc3VwcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqRFJzdXBwLAorICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpEUkVRRFMpOworCisvLyBQSUNDIFJlcXVlc3QgY29tbWFuZAordW5zaWduZWQgc2hvcnQgTWY1MDBQaWNjUmVxdWVzdCh1bnNpZ25lZCBjaGFyIHJlcV9jb2RlLCAKKyAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqYXRxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgCisvLyBQSUNDIFJlcXVlc3QgY29tbWFuZCBmb3IgSVNPIDE0NDQzIEEtNCBDb21tYW5kIHNldAordW5zaWduZWQgc2hvcnQgTWY1MDBQaWNjQ29tbW9uUmVxdWVzdCh1bnNpZ25lZCBjaGFyIHJlcV9jb2RlLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqYXRxKTsgIAorCisvLyBQSUNDIEFudGljb2xsaXNpb24gQ29tbWFuZAordW5zaWduZWQgc2hvcnQgTWY1MDBQaWNjQW50aWNvbGwgKHVuc2lnbmVkIGNoYXIgYmNudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpzbnIpOworCisvLyBQSUNDIENhc2NhZGVkIEFudGljb2xsaXNpb24gQ29tbWFuZAordW5zaWduZWQgc2hvcnQgTWY1MDBQaWNjQ2FzY0FudGljb2xsICh1bnNpZ25lZCBjaGFyIHNlbGVjdF9jb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGJjbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKnNucik7ICAgICAgICAgICAgICAgICAgICAgCisKKy8vIFBJQ0MgU2VsZWN0IENvbW1hbmQKK3Vuc2lnbmVkIHNob3J0IE1mNTAwUGljY1NlbGVjdCh1bnNpZ25lZCBjaGFyICpzbnIsIAorICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKnNhayk7CisKKy8vIFBJQ0MgU2VsZWN0IENvbW1hbmQKK3Vuc2lnbmVkIHNob3J0IE1mNTAwUGljY0Nhc2NTZWxlY3QodW5zaWduZWQgY2hhciBzZWxlY3RfY29kZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKnNuciwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKnNhayk7IAorCisvLyBBY3RpdmF0aW9uIG9mIGEgUElDQyBpbiBJRExFIG1vZGUKK3Vuc2lnbmVkIHNob3J0IE1mNTAwUGljY0FjdGl2YXRlSWRsZSh1bnNpZ25lZCBjaGFyIGJyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqYXRxLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKnNhaywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICp1aWQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqdWlkX2xlbik7CisKKy8vIEFjdGl2YXRpb24gb2YgYWxsIFBJQ0MncyBpbiB0aGUgUkYgZmllbGQKK3Vuc2lnbmVkIHNob3J0IE1mNTAwUGljY0FjdGl2YXRlV2FrZXVwKHVuc2lnbmVkIGNoYXIgYnIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKmF0cSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKnNhaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqdWlkLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciB1aWRfbGVuKTsKKworLy8gTUlGQVJFriAgQXV0aGVudGljYXRpb24KK3Vuc2lnbmVkIHNob3J0IE1mNTAwUGljY0F1dGgodW5zaWduZWQgY2hhciBhdXRoX21vZGUsIAorICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIga2V5X3NlY3RvciwgCisgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBibG9jayk7ICAgCisgIAorLy8gTUlGQVJFIK4gQXV0aGVudGljYXRpb24gd2l0aCAga2V5cyBzdG9yZWQgIGluIHRoZSBNRiBSQyA1MDAncyBFRVBST00uCit1bnNpZ25lZCBzaG9ydCBNZjUwMFBpY2NBdXRoRTIoIHVuc2lnbmVkIGNoYXIgYXV0aF9tb2RlLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpzbnIsICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBrZXlfc2VjdG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgYmxvY2spOyAKKworLy8gQXV0aGVudGljYXRpb24gS2V5IENvZGluZwordW5zaWduZWQgc2hvcnQgTWY1MDBIb3N0Q29kZUtleSh1bnNpZ25lZCBjaGFyICp1bmNvZGVkLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpjb2RlZCk7IAorCisvLyBLZXkgTG9hZGluZyBpbnRvIHRoZSBNRiBSQzUwMCdzIEVFUFJPTS4KK3Vuc2lnbmVkIHNob3J0IE1mNTAwUGNkTG9hZEtleUUyKHVuc2lnbmVkIGNoYXIga2V5X3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgc2VjdG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICp1bmNvZGVkX2tleXMpOyAKKyAgICAgICAgICAgICAgICAgICAgIAorLy8gQXV0aGVudGljYXRpb24gd2l0aCBkaXJlY3Qga2V5IGxvYWRpbmcgZm9ybSB0aGUgbWljcm9jb250cm9sbGVyCit1bnNpZ25lZCBzaG9ydCBNZjUwMFBpY2NBdXRoS2V5KHVuc2lnbmVkIGNoYXIgYXV0aF9tb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKnNuciwgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICprZXlzLCAgCisgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBzZWN0b3IpOyAgIAorICAgICAgICAgICAgICAgICAgICAgCisvLyBQSUNDIFJlYWQgQmxvY2sKK3Vuc2lnbmVkIHNob3J0IE1mNTAwUGljY1JlYWQodW5zaWduZWQgY2hhciBhZGRyLCAgCisgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIqIGRhdGEpOworCisvLyBQSUNDIFJlYWQgQmxvY2sgb2YgdmFyaWFibGUgbGVuZ3RoCit1bnNpZ25lZCBzaG9ydCBNZjUwMFBpY2NDb21tb25SZWFkKHVuc2lnbmVkIGNoYXIgY21kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGFkZHIsICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBkYXRhbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpkYXRhKTsKKyAgICAgICAgICAgICAgICAgIAorLy8gUElDQyBXcml0ZSBCbG9jawordW5zaWduZWQgc2hvcnQgTWY1MDBQaWNjV3JpdGUodW5zaWduZWQgY2hhciBhZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqZGF0YSk7CisKKy8vIFBJQ0MgV3JpdGUgNCBCeXRlIEJsb2NrCit1bnNpZ25lZCBzaG9ydCBNZjUwMFBpY2NXcml0ZTQodW5zaWduZWQgY2hhciBhZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKmRhdGEpOworICAgICAgICAgICAgICAgICAgICAgICAKKy8vIFBJQ0MgV3JpdGUgQmxvY2sgb2YgdmFyaWFibGUgbGVuZ3RoCit1bnNpZ25lZCBzaG9ydCBNZjUwMFBpY2NDb21tb25Xcml0ZSh1bnNpZ25lZCBjaGFyIGNtZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgYWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgZGF0YWxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKmRhdGEpOworCisvLyBQSUNDIFZhbHVlIEJsb2NrIE9wZXJhdGlvbgordW5zaWduZWQgc2hvcnQgTWY1MDBQaWNjVmFsdWUodW5zaWduZWQgY2hhciBkZF9tb2RlLCAKKyAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBhZGRyLCAKKyAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgdHJhbnNfYWRkcik7CisKKy8vIFBJQ0MgVmFsdWUgQmxvY2sgT3BlcmF0aW9uIGZvciBDYXJkcyB3aXRoIGF1dG9tYXRpYyB0cmFuc2ZlcgordW5zaWduZWQgc2hvcnQgTWY1MDBQaWNjVmFsdWVEZWJpdCh1bnNpZ25lZCBjaGFyIGRkX21vZGUsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGFkZHIsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICp2YWx1ZSk7CisKKy8vIEV4Y2hhbmdlIERhdGEgQmxvY2tzIFBDRCAtLT4gUElDQyAtLT4gUENECit1bnNpZ25lZCBzaG9ydCBNZjUwMFBpY2NFeGNoYW5nZUJsb2NrKHVuc2lnbmVkIGNoYXIgKnNlbmRfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCBzZW5kX2J5dGVsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqcmVjX2RhdGEsICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCAqcmVjX2J5dGVsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBhcHBlbmRfY3JjLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHRpbWVvdXQgKTsgICAgICAgICAgICAgICAgICAKKworLy8gUElDQyBIYWx0Cit1bnNpZ25lZCBzaG9ydCBNZjUwMFBpY2NIYWx0KHZvaWQpOworCisvLyBSZXNldCB0aGUgcmVhZGVyIGljIAordW5zaWduZWQgc2hvcnQgUGNkUmVzZXQodm9pZCk7CisKKy8vIEV4Y2hhbmdlIERhdGEgU3RyZWFtIFBDRCAtLT4gUElDQyAtLT4gUENECit1bnNpZ25lZCBzaG9ydCBFeGNoYW5nZUJ5dGVTdHJlYW0odW5zaWduZWQgY2hhciBDbWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqc2VuZF9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0IHNlbmRfYnl0ZWxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpyZWNfZGF0YSwgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0ICpyZWNfYnl0ZWxlbik7CisKKy8vIFNldCBSRiBjb21tdW5pY2F0aW9uIHRpbWVvdXQgCit1bnNpZ25lZCBzaG9ydCBQY2RTZXRUbW8odW5zaWduZWQgbG9uZyBudW1iZXJPZkV0dXMpOworCisvLyBSZWFkIFNlcmlhbCBOdW1iZXIgZnJvbSBSZWFkZXIgSUMKK3Vuc2lnbmVkIHNob3J0IFBjZEdldFNucih1bnNpZ25lZCBjaGFyICpzbnIpOworCisvLyBSZWFkIEVFUFJPTSBNZW1vcnkgQmxvY2sKK3Vuc2lnbmVkIHNob3J0IFBjZFJlYWRFMih1bnNpZ25lZCBzaG9ydCBzdGFydGFkZHIsICAKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyKiBkYXRhKTsKKworLy8gV3JpdGVzIGRhdGEgdG8gdGhlIHJlYWRlciBJQydzIEVFUFJPTSBibG9ja3MuCit1bnNpZ25lZCBzaG9ydCBQY2RXcml0ZUUyKCAgdW5zaWduZWQgc2hvcnQgc3RhcnRhZGRyLAorICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIqIGRhdGEpOworCisvLyBUdXJucyBPTi9PRkYgUkYgZmllbGQKK3Vuc2lnbmVkIHNob3J0IFBjZFJmUmVzZXQodW5zaWduZWQgc2hvcnQgbXMpOyAgICAKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pY2NfYXBkdV9saWIvTWZSYzUwMHVDLmMgYi9pY2NfYXBkdV9saWIvTWZSYzUwMHVDLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDU3MTU5MQotLS0gL2Rldi9udWxsCisrKyBiL2ljY19hcGR1X2xpYi9NZlJjNTAwdUMuYwpAQCAtMCwwICsxLDE4MjEgQEAKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vICAgIENvcHlyaWdodCAoYyksIFBoaWxpcHMgU2VtaWNvbmR1Y3RvcnMgR3JhdGtvcm4KKy8vCisvLyAgICAgICAgICAgICAgICAgIChDKVBISUxJUFMgRWxlY3Ryb25pY3MgTi5WLjIwMDAKKy8vICAgICAgICAgICAgICAgICAgICAgQWxsIHJpZ2h0cyBhcmUgcmVzZXJ2ZWQuIAorLy8gIFBoaWxpcHMgcmVzZXJ2ZXMgdGhlIHJpZ2h0IHRvIG1ha2UgY2hhbmdlcyB3aXRob3V0IG5vdGljZSBhdCBhbnkgdGltZS4KKy8vIFBoaWxpcHMgbWFrZXMgbm8gd2FycmFudHksIGV4cHJlc3NlZCwgaW1wbGllZCBvciBzdGF0dXRvcnksIGluY2x1ZGluZyBidXQKKy8vIG5vdCBsaW1pdGVkIHRvIGFueSBpbXBsaWVkIHdhcnJhbnR5IG9mIG1lcmNoYW50aWJpbGl0eSBvciBmaXRuZXNzIGZvciBhbnkKKy8vcGFydGljdWxhciBwdXJwb3NlLCBvciB0aGF0IHRoZSB1c2Ugd2lsbCBub3QgaW5mcmluZ2UgYW55IHRoaXJkIHBhcnR5IHBhdGVudCwKKy8vIGNvcHlyaWdodCBvciB0cmFkZW1hcmsuIFBoaWxpcHMgbXVzdCBub3QgYmUgbGlhYmxlIGZvciBhbnkgbG9zcyBvciBkYW1hZ2UKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlzaW5nIGZyb20gaXRzIHVzZS4KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorCisjaW5jbHVkZSAiUklDUmVnLmgiCisjaW5jbHVkZSAiTWZSYzUwMC5oIgorI2luY2x1ZGUgIlBJQ0NDbWRDb25zdC5oIgorI2luY2x1ZGUgIk1mRXJyTm8uaCIKKworLy8gc3RvcmFnZSBidWZmZXIgZm9yIHJlY2VpdmUgYW5kIHRyYW5zbWl0IHJvdXRpbmVzCisvL3sKKyNkZWZpbmUgTUVNT1JZX0JVRkZFUl9TSVpFICAgIDI1NgordW5zaWduZWQgY2hhciAgTWVtUG9vbFtNRU1PUllfQlVGRkVSX1NJWkVdOworCit1bnNpZ25lZCBjaGFyICpNU25kQnVmZmVyID0gTWVtUG9vbDsgLy8gcG9pbnRlciB0byB0aGUgdHJhbnNtaXQgYnVmZmVyCit1bnNpZ25lZCBjaGFyICpNUmN2QnVmZmVyID0gTWVtUG9vbDsgLy8gcG9pbnRlciB0byB0aGUgcmVjZWl2ZSBidWZmZXIKKy8vfQorCitleHRlcm4gdm9pZCBIV19TUElfUkZfQ2ZnSW5pdCh2b2lkKTsKK2V4dGVybiB2b2lkIE1GUkM1MDBfUnN0U2V0KHZvaWQpOworZXh0ZXJuIHZvaWQgTUZSQzUwMF9Sc3RDbHIodm9pZCk7CisKK3ZvaWQgQ2FsdWxhdGVDUkModW5zaWduZWQgY2hhciAqcEluZGF0YSx1bnNpZ25lZCBjaGFyIGxlbix1bnNpZ25lZCBjaGFyICpwT3V0RGF0YSk7CisKKyNkZWZpbmUgUkVBREVSX1JFU0VUICAgICAgIE1GUkM1MDBfUnN0Q2xyKCkKKyNkZWZpbmUgUkVBREVSX0NMRUFSX1JFU0VUIE1GUkM1MDBfUnN0U2V0KCkKKworLy8gV3JpdGUgb25lIGJ5dGUgdG8gdGhlIHJlYWRlciBJQyBhZGRyZXNzIHNwYWNlCisvKiEKKyogLW8gIGFkZHJlc3MgIChJTikgcmVhZGVyIGljIHJlZ2lzdGVyIGFkZHJlc3MKKyogLW8gIHZhbHVlICAgIChJTikgOCBiaXQgdmFsdWUKKyogcmV0dXJuOiBub25lCisqCisqIEZ1bmN0aW9uIGZvciB3cml0dGluZyBvbmUgY2hhciB0byB0aGUgcmVhZGVyIG1vZHVsZQorKgorKiBUaGUgcmVhZGVyIG1vZHVsZSBpcyBjb25uZWN0ZWQgdG8gYSAxNiBiaXQgZGVtdWx0aXBsZXhlZCBidXMsCisqIHRoZXJlZm9yZSB0aGUgYWRkcmVzcyBwaW4gb2YgdGhlIHJlYWRlciBtb2R1bGUgaXMgbWFwcGVkIGFzCisqIGZvbGxvd3M6IFxuCisqIHVDICAgICAgICAgICAgIFJlYWRlciBcbgorKiBBMSAgICAgICAgICAgICAgIEEwICAgXG4KKyogQTIgICAgICAgICAgICAgICBBMSAgIFxuCisqIEEzICAgICAgICAgICAgICAgQTIgICBcbgorKgorKiBJbiBvcmRlciB0byBnZXQgdGhlIGNvcnJlY3QgYWRkcmVzcywgdGhlIG9yaWdpbmFsIGFkZHJlc3MgbmVlZCB0byAKKyogYmUgbXVsdGlwbGllZCBieSAyLgorKi8KKworZXh0ZXJuIHZvaWQgV3JpdGVSYXdSQyh1bnNpZ25lZCBjaGFyIHZhbHVlLCB1bnNpZ25lZCBjaGFyIGFkZHIpOworCisvLyEgUmVhZCBvbmUgYnl0ZSBmcm9tIHRoZSByZWFkZXIgSUMgYWRkcmVzcyBzcGFjZQorLyohCisqIC1vICBhZGRyZXNzICAoSU4pIHJlYWRlciBpYyByZWdpc3RlciBhZGRyZXNzCisqIC1vICB2YWx1ZSAgICAoSU4pIDggYml0IHZhbHVlCisqIHJldHVybjogbm9uZQorKgorKiBGdW5jdGlvbiBmb3IgcmVhZGluZyBvbmUgY2hhciBmcm9tIHRoZSByZWFkZXIgbW9kdWxlCisqCisqIFRoZSByZWFkZXIgbW9kdWxlIGlzIGNvbm5lY3RlZCB0byBhIDE2IGJpdCBkZW11bHRpcGxleGVkIGJ1cywKKyogdGhlcmVmb3JlIHRoZSBhZGRyZXNzIHBpbiBvZiB0aGUgcmVhZGVyIG1vZHVsZSBpcyBtYXBwZWQgYXMKKyogZm9sbG93czogXG4KKyogdUMgICAgICAgICAgICAgUmVhZGVyIFxuCisqIEExICAgICAgICAgICAgICAgQTAgICBcbgorKiBBMiAgICAgICAgICAgICAgIEExICAgXG4KKyogQTMgICAgICAgICAgICAgICBBMiAgIFxuCisqCisqIEluIG9yZGVyIHRvIGdldCB0aGUgY29ycmVjdCBhZGRyZXNzLCB0aGUgb3JpZ2luYWwgYWRkcmVzcyBuZWVkIHRvIAorKiBiZSBtdWx0aXBsaWVkIGJ5IDIuCisqLworZXh0ZXJuIHVuc2lnbmVkIGNoYXIgUmVhZFJhd1JDKHVuc2lnbmVkIGNoYXIgYWRkcik7CisKKworLy8hIFdyaXRlIG9uZSBieXRlIHRvIHRoZSByZWFkZXIgSUMgYWRkcmVzcyBzcGFjZQorLyohCisqIC1vICBhZGRyZXNzICAoSU4pIHJlYWRlciBpYyByZWdpc3RlciBhZGRyZXNzCisqIC1vICB2YWx1ZSAgICAoSU4pIDggYml0IHZhbHVlCisqIHJldHVybjogbm9uZQorKgorKiBUaGlzIGZ1bmN0aW9uIGRldGVybWluZXMgdGhlIG5lY2Vzc2FyeSBwYWdlIGFkZHJlc3Mgb2YgdGhlIAorKiByZWFkZXIgbW9kdWxlIGFuZCB3cml0ZXMgdGhlIHBhZ2UgbnVtYmVyIHRvIHRoZSBwYWdlIAorKiByZWdpc3RlciBhbmQgdGhlIHZhbHVlIHRvIHRoZSBzcGVjaWZpZWQgYWRkcmVzcy4KKyovCit2b2lkIFdyaXRlUkModW5zaWduZWQgY2hhciBBZGRyZXNzLCB1bnNpZ25lZCBjaGFyIHZhbHVlKTsKKworLy8hIFdyaXRlIG9uZSBieXRlIHRvIHRoZSByZWFkZXIgSUMgYWRkcmVzcyBzcGFjZQorLyoKKyogLW8gIGFkZHJlc3MgICAoSU4pIHJlYWRlciBJQyByZWdpc3RlciBhZGRyZXNzCisqIHJldHVybjogdmFsdWUgICAgOCBiaXQgZGF0YSwgcmVhZCBmcm9tIHRoZSByZWFkZXIgaWMgYWRkcmVzcyBzcGFjZQorKgorKiBUaGlzIGZ1bmN0aW9uIGRldGVybWluZXMgdGhlIG5lY2Vzc2FyeSBwYWdlIGFkZHJlc3Mgb2YgdGhlIAorKiByZWFkZXIgbW9kdWxlIGFuZCB3cml0ZXMgdGhlIHBhZ2UgbnVtYmVyIHRvIHRoZSBwYWdlIAorKiByZWdpc3RlciBhbmQgcmVhZHMgdGhlIHZhbHVlIGZyb20gdGhlIHNwZWNpZmllZCBhZGRyZXNzLgorKi8KK3Vuc2lnbmVkIGNoYXIgUmVhZFJDKHVuc2lnbmVkIGNoYXIgQWRkcmVzcyk7CisKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8gICAgICAgICAgRyBFIE4gRSBSIEkgQyAgICBXIFIgSSBUIEUKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KK3ZvaWQgV3JpdGVSQyh1bnNpZ25lZCBjaGFyIEFkZHJlc3MsIHVuc2lnbmVkIGNoYXIgdmFsdWUpCit7CisgICBXcml0ZVJhd1JDKHZhbHVlLCBBZGRyZXNzKTsgICAgICAgICAgICAgIC8vIHdyaXRlIHZhbHVlIGF0IHRoZSBzcGVjaWZpZWQgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWRkcmVzcworfQorCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLyAgICAgICAgICBHIEUgTiBFIFIgSSBDICAgIFIgRSBBIEQKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KK3Vuc2lnbmVkIGNoYXIgUmVhZFJDKHVuc2lnbmVkIGNoYXIgQWRkcmVzcykKK3sKKyAgIHJldHVybiBSZWFkUmF3UkMoQWRkcmVzcyk7ICAgICAgICAgICAgICAvLyByZWFkIHZhbHVlIGF0IHRoZSBzcGVjaWZpZWQgCit9ICAKKworLy8vIFNldCBSZWFkZXIgSUMgUmVnaXN0ZXIgQml0CisvKiEKKyogLW8gIHJlZyAgKElOKQorKiAgICAgICAgICAgICByZWdpc3RlciBhZGRyZXNzCisqIC1vICBtYXNrIChJTikKKyogICAgICAgICAgICAgQml0IG1hc2sgdG8gc2V0CisqIHJldHVybjogICAgIG5vbmUKKyogICAgICAgICAgICAgIAorKiBUaGlzIGZ1bmN0aW9uIHBlcmZvcm1zIGEgcmVhZCAtIG1vZGlmeSAtIHdyaXRlIHNlcXVlbmNlCisqIG9uIHRoZSBzcGVjaWZpZWQgcmVnaXN0ZXIuIEFsbCBiaXRzIHdpdGggYSAxIGluIHRoZSBtYXNrCisqIGFyZSBzZXQgLSBhbGwgb3RoZXIgYml0cyBrZWVwIHRoZWlyIG9yaWdpbmFsIHZhbHVlLgorKi8KK3ZvaWQgU2V0Qml0TWFzayh1bnNpZ25lZCBjaGFyIHJlZyx1bnNpZ25lZCBjaGFyIG1hc2spOworCisvLy8gQ2xlYXIgUmVhZGVyIElDIFJlZ2lzdGVyIEJpdAorLyohCisqIC1vICByZWcgIChJTikKKyogICAgICAgICAgICAgcmVnaXN0ZXIgYWRkcmVzcworKiAtbyAgbWFzayAoSU4pCisqICAgICAgICAgICAgIEJpdCBtYXNrIHRvIGNsZWFyCisqIHJldHVybjogbm9uZQorKiAgICAgICAgICAgICAgCisqIFRoaXMgZnVuY3Rpb24gcGVyZm9ybXMgYSByZWFkIC0gbW9kaWZ5IC0gd3JpdGUgc2VxdWVuY2UKKyogb24gdGhlIHNwZWNpZmllZCByZWdpc3Rlci4gQWxsIGJpdHMgd2l0aCBhIDEgaW4gdGhlIG1hc2sKKyogYXJlIGNsZWFyZWQgLSBhbGwgb3RoZXIgYml0cyBrZWVwIHRoZWlyIG9yaWdpbmFsIHZhbHVlLgorKi8KK3ZvaWQgQ2xlYXJCaXRNYXNrKHVuc2lnbmVkIGNoYXIgcmVnLHVuc2lnbmVkIGNoYXIgbWFzayk7CisKKy8vLyBGbHVzaCByZW1haW5pbmcgZGF0YSBmcm9tIHRoZSBGSUZPCisvKiEKKyogLW8gIG5vbmUKKyogcmV0dXJuOiBub25lCisqICAgICAgICAgICAgICAKKyogVGhpcyBmdW5jdGlvbiBlcmFzZXMgIGFsbCByZW1haW5pbmcgZGF0YSBpbiB0aGUgTUYgUkMgNTAwJ3MgRklGTyAuCisqIEJlZm9yZSB3cml0aW5nIG5ldyBkYXRhIG9yIHN0YXJ0aW5nIGEgbmV3IGNvbW1hbmQsIGFsbCByZW1haW5pbmcgZGF0YSAKKyogZnJvbSBmb3JtZXIgIGNvbW1hbmRzIHNob3VsZCBiZSBkZWxldGVkLgorKi8KK3ZvaWQgRmx1c2hGSUZPKHZvaWQpOworCisvLy8gU2xlZXAgc2V2ZXJhbCBtaWxsaXNlY29uZHMKKy8qCitUaGUgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBmdW5jdGlvbiBkZXBlbmRzIGhlYXZpbHkKK29uIHRoZSBtaWNyb2NvbnRyb2xsZXIgaW4gdXNlLiBUaGUgbWVhc3VyZW1lbnQgbmVlZCBub3QgdG8gYmUKK3ZlcnkgYWNjdXJhdGUuIE9ubHkgbWFrZSBzdXJlLCB0aGF0IHRoZSBwZXJpb2RlIGlzIG5vdCBzaG9ydGVyLCB0aGFuCit0aGUgcmVxdWlyZWQgb25lLgorKi8KK3ZvaWQgU2xlZXBNcyh1bnNpZ25lZCBzaG9ydCBtcykKK3sKKwlpbnQgaTsKKwlmb3IoaT0wO2k8NDIwMCptcztpKyspOyAKK30KKworLy8vIFNsZWVwIHNldmVyYWwgbWljcm9zZWNvbmRzCisvKgorVGhlIGltcGxlbWVudGF0aW9uIG9mIHRoaXMgZnVuY3Rpb24gZGVwZW5kcyBoZWF2aWx5CitvbiB0aGUgbWljcm9jb250cm9sbGVyIGluIHVzZS4gVGhlIG1lYXN1cmVtZW50IG5lZWQgbm90IHRvIGJlCit2ZXJ5IGFjY3VyYXRlLiBPbmx5IG1ha2Ugc3VyZSwgdGhhdCB0aGUgcGVyaW9kZSBpcyBub3Qgc2hvcnRlciwgdGhhbgordGhlIHJlcXVpcmVkIG9uZS4KKyovCit2b2lkIFNsZWVwVXModW5zaWduZWQgc2hvcnQgdXMpCit7CisJaW50IGk7CisgICAgZm9yKCBpID0gMDsgaSA8IDIwICogdXM7IGkrKyApOwkKK30KKyAgCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8gICAgICAgICBTIGUgdCAgIFQgaSBtIGUgbyB1IHQgICBMIEUgTiBHIFQgSAorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KK3Vuc2lnbmVkIHNob3J0IFBjZFNldFRtbyh1bnNpZ25lZCBsb25nIHRtb0xlbmd0aCkKK3sJCisgICBXcml0ZVJDKFRNb2RlUmVnLDB4OEQpOworICAgV3JpdGVSQyhUUHJlc2NhbGVyUmVnLDB4M0UpOworICAgV3JpdGVSQyhUUmVsb2FkUmVnSCwweDAxKTsgCisgICBXcml0ZVJDKFRSZWxvYWRSZWdMLDB4NjQpOyAgICAgICAgICAgICAgCisgICByZXR1cm4gTUlfT0s7Cit9CisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vICAgICAgICAgICAgICAgICBSIEUgUyBFIFQgCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwordW5zaWduZWQgc2hvcnQgUGNkUmZSZXNldCh1bnNpZ25lZCBzaG9ydCBtcykKK3sKKyAgIGNoYXIgICBzdGF0dXMgPSBNSV9PSzsKKworICAgQ2xlYXJCaXRNYXNrKFR4Q29udHJvbFJlZywgMHgwMyk7ICAvLyBUeDJSRi1FbiwgVHgxUkYtRW4gZGlzYWJsZW4KKyAgIGlmIChtcyA+IDApCisgICB7CisgICAgICBTbGVlcE1zKG1zKTsgICAgICAgICAgICAgICAgICAgICAgLy8gRGVsYXkgZm9yIDEgbXMgCisgICAgICBTZXRCaXRNYXNrKFR4Q29udHJvbFJlZywgMHgwMyk7ICAgIC8vIFR4MlJGLUVuLCBUeDFSRi1FbiBlbmFibGUKKyAgIH0KKyAgIHJldHVybiBzdGF0dXM7Cit9CisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vICAgUyBFIFQgICBBICAgQiBJIFQgICBNIEEgUyBLIAorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KK3ZvaWQgU2V0Qml0TWFzayh1bnNpZ25lZCBjaGFyIHJlZyx1bnNpZ25lZCBjaGFyIG1hc2spIC8vIAoreworICAgY2hhciAgIHRtcCAgICA9IDB4MDsKKworICAgdG1wID0gUmVhZFJDKHJlZyk7CisgICBXcml0ZVJDKHJlZyx0bXAgfCBtYXNrKTsgIC8vIHNldCBiaXQgbWFzaworfQorCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLyAgIEMgTCBFIEEgUiAgIEEgICBCIEkgVCAgIE0gQSBTIEsgCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwordm9pZCBDbGVhckJpdE1hc2sodW5zaWduZWQgY2hhciByZWcsdW5zaWduZWQgY2hhciBtYXNrKSAvLyAKK3sKKyAgIGNoYXIgICB0bXAgICAgPSAweDA7CisKKyAgIHRtcCA9IFJlYWRSQyhyZWcpOworICAgV3JpdGVSQyhyZWcsdG1wICYgKH5tYXNrKSk7ICAvLyBjbGVhciBiaXQgbWFzaworfQorCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8gICAgICAgICAgICAgICAgICBGIEwgVSBTIEggICAgRiBJIEYgTworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KK3ZvaWQgRmx1c2hGSUZPKHZvaWQpCit7ICAKKyAgIFNldEJpdE1hc2soRklGT0xldmVsUmVnLCAweDgwKTsKK30KKwordm9pZCBDYWx1bGF0ZUNSQyh1bnNpZ25lZCBjaGFyICpwSW5kYXRhLHVuc2lnbmVkIGNoYXIgbGVuLHVuc2lnbmVkIGNoYXIgKnBPdXREYXRhKQoreworICAgIHVuc2lnbmVkIGNoYXIgaSxuOworICAgIENsZWFyQml0TWFzayhEaXZJcnFSZWcsMHgwNCk7CisgICAgV3JpdGVSQyhDb21tYW5kUmVnLFBDRF9JRExFKTsKKyAgICBTZXRCaXRNYXNrKEZJRk9MZXZlbFJlZywweDgwKTsKKyAgICBmb3IgKGk9MDsgaTxsZW47IGkrKykKKyAgICB7ICAgV3JpdGVSQyhGSUZPRGF0YVJlZywgKihwSW5kYXRhK2kpKTsgICB9CisgICAgV3JpdGVSQyhDb21tYW5kUmVnLCBQQ0RfQ0FMQ0NSQyk7CisgICAgaSA9IDB4RkY7CisgICAgZG8gCisgICAgeworICAgICAgICBuID0gUmVhZFJDKERpdklycVJlZyk7CisgICAgICAgIGktLTsKKyAgICB9CisgICAgd2hpbGUgKChpIT0wKSAmJiAhKG4mMHgwNCkpOworICAgIHBPdXREYXRhWzBdID0gUmVhZFJDKENSQ1Jlc3VsdFJlZ0wpOworICAgIHBPdXREYXRhWzFdID0gUmVhZFJDKENSQ1Jlc3VsdFJlZ00pOworfQorCisKKworLy9NMb+ostnX973Tv9oKKyNkZWZpbmUgTTFfQklUX0FVVEgJCTB4MDggCQkJCS8vIGJpdDMJw9zC69Cj0em/2NbGzrsgLSAwIC0gsrvQo9Hpw9zC6yAxIC0g0qrQo9Hpw9zC6worI2RlZmluZSBNMV9CSVRfUlFTVAkJMHgwNCAJCQkJLy8gYml0MgnRsL+ov9jWxs67IC0gMCAtINGwv6ggICAgICAgMSAtILK70bC/qAorI2RlZmluZSBNMV9CSVRfQVVUSFRZUEUJMHgwMyAJCQkJLy8gYml0MQliaXQww9zC67/Y1sbOuyAtIEHD3MLru/JCw9zC6yggIDAgLSBBCTEgLSBCKQorCisjZGVmaW5lIE1JX0VSUiAgICAgICAgICAweDAyCisKKyNkZWZpbmUgTTFfT0sgCQkJMHgwMAorI2RlZmluZSBNMV9FUlJfUkVRVUVTVAkweDAxCisjZGVmaW5lIE0xX0VSUl9BTlRJCQkweDAyCisjZGVmaW5lIE0xX0VSUl9TRUxFQ1QJMHgwMworI2RlZmluZSBNMV9FUlJfUkVBRCAgIAkweDA1CisjZGVmaW5lIE0xX0VSUl9XUklURSAgCTB4MDYKKyNkZWZpbmUgTTFfRVJSX0FVVEggIAkweDA3CisjZGVmaW5lIE0xX0VSUl9USU1FT1VUICAweDExCisjZGVmaW5lIE0xX0VSUl9DT01NCQkweDEyCisjZGVmaW5lIE0xX0VSUl9CSVRTCQkweDEzCisjZGVmaW5lIE0xX0VSUl9BQ0sJCTB4MTQKKyNkZWZpbmUgTTFfRVJSX0FVVEgxCTB4MTUKKyNkZWZpbmUgTTFfRVJSX0FVVEgyCTB4MTYKKyNkZWZpbmUgTTFfRVJSX1NOUkNISwkweDE3CisjZGVmaW5lIE0xX0VSUl9SQ1ZCSVRTICAweDE4CisjZGVmaW5lIE0xX0VSUl9CQURDT01NQU5EIDB4MTkKKyNkZWZpbmUgTTFfRVJSX1BDREZBSUwJMHgzMAorCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vuaYgICAgxNyjus2ouf1SQzUyMrrNSVNPMTQ0NDO/qM2o0bYKKy8vss7K/cu1w/ejukNvbW1hbmRbSU5dOlJDNTIyw/zB7tfWCisvLyAgICAgICAgICBwSW5EYXRhW0lOXTrNqLn9UkM1MjK3osvNtb2/qMastcTK/b7dCisvLyAgICAgICAgICBJbkxlbkJ5dGVbSU5dOreiy83K/b7dtcTX1r3as6S2yAorLy8gICAgICAgICAgcE91dERhdGFbT1VUXTq908rVtb21xL+oxqy3tbvYyv2+3QorLy8gICAgICAgICAgKnBPdXRMZW5CaXRbT1VUXTq3tbvYyv2+3bXEzruzpLbICisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KK3Vuc2lnbmVkIHNob3J0IFBjZENvbU1GNTIyKHVuc2lnbmVkIGNoYXIgQ29tbWFuZCwgCisgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKnBJbkRhdGEsIAorICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIEluTGVuQnl0ZSwKKyAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqcE91dERhdGEsIAorICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgICpwT3V0TGVuQml0KQoreworICAgIHVuc2lnbmVkIHNob3J0IHN0YXR1cyA9IE1JX0VSUjsKKyAgICB1bnNpZ25lZCBjaGFyIGlycUVuICAgPSAweDAwOworICAgIHVuc2lnbmVkIGNoYXIgd2FpdEZvciA9IDB4MDA7CisgICAgdW5zaWduZWQgY2hhciBsYXN0Qml0czsKKyAgICB1bnNpZ25lZCBjaGFyIG47CisgICAgdW5zaWduZWQgaW50IGk7CisJCisgICAgc3dpdGNoIChDb21tYW5kKQorICAgIHsKKyAgICAgICBjYXNlIFBDRF9BVVRIRU5UOgorICAgICAgICAgIGlycUVuICAgPSAweDEyOworICAgICAgICAgIHdhaXRGb3IgPSAweDEwOworICAgICAgICAgIGJyZWFrOworICAgICAgIGNhc2UgUENEX1RSQU5TQ0VJVkU6CisgICAgICAgICAgaXJxRW4gICA9IDB4Nzc7CisgICAgICAgICAgd2FpdEZvciA9IDB4MzA7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgZGVmYXVsdDoKKyAgICAgICAgIGJyZWFrOworICAgIH0KKyAgIAorICAgIFdyaXRlUkMoQ29tSUVuUmVnLGlycUVufDB4ODApOworICAgIENsZWFyQml0TWFzayhDb21JcnFSZWcsMHg4MCk7CisgICAgV3JpdGVSQyhDb21tYW5kUmVnLFBDRF9JRExFKTsKKyAgICBTZXRCaXRNYXNrKEZJRk9MZXZlbFJlZywweDgwKTsKKyAgICAKKyAgICBmb3IgKGk9MDsgaTxJbkxlbkJ5dGU7IGkrKykKKyAgICB7ICAgV3JpdGVSQyhGSUZPRGF0YVJlZywgcEluRGF0YVtpXSk7ICAgIH0KKyAgICBXcml0ZVJDKENvbW1hbmRSZWcsIENvbW1hbmQpOworICAgCisgICAgCisgICAgaWYgKENvbW1hbmQgPT0gUENEX1RSQU5TQ0VJVkUpCisgICAgeyAgICBTZXRCaXRNYXNrKEJpdEZyYW1pbmdSZWcsMHg4MCk7ICB9CisgICAgCisgICAgaSA9IDUwMDsvL7j5vt3KsdbTxrXCyrX31fujrLLZ1/dNMb+o1+6087XItP3KsbzkMjVtcworICAgIGRvIAorICAgIHsKKyAgICAgICAgIG4gPSBSZWFkUkMoQ29tSXJxUmVnKTsKKyAgICAgICAgIGktLTsKKyAgICB9CisgICAgd2hpbGUgKChpIT0wKSAmJiAhKG4mMHgwMSkgJiYgIShuJndhaXRGb3IpKTsKKyAgICBDbGVhckJpdE1hc2soQml0RnJhbWluZ1JlZywweDgwKTsKKyAgICAgICAgIAorCSpwT3V0TGVuQml0ID0gMDsKKwlpZiAoaSE9MCkKKyAgICB7ICAgIAorICAgICAgICAgaWYoIShSZWFkUkMoRXJyb3JSZWcpJjB4MUIpKQorICAgICAgICAgeworICAgICAgICAgICAgIHN0YXR1cyA9IE1JX09LOworICAgICAgICAgICAgIGlmIChuICYgaXJxRW4gJiAweDAxKQorICAgICAgICAgICAgIHsgICBzdGF0dXMgPSBNSV9OT1RBR0VSUjsgICB9CisgICAgICAgICAgICAgaWYgKENvbW1hbmQgPT0gUENEX1RSQU5TQ0VJVkUpCisgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgCW4gPSBSZWFkUkMoRklGT0xldmVsUmVnKTsKKyAgICAgICAgICAgICAgCWxhc3RCaXRzID0gUmVhZFJDKENvbnRyb2xSZWcpICYgMHgwNzsKKyAgICAgICAgICAgICAgICBpZiAobGFzdEJpdHMpCisgICAgICAgICAgICAgICAgeyAgICpwT3V0TGVuQml0ID0gKG4tMSkqOCArIGxhc3RCaXRzOyAgIH0KKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgeyAgICpwT3V0TGVuQml0ID0gbio4OyAgIH0KKyAgICAgICAgICAgICAgICBpZiAobiA9PSAwKQorICAgICAgICAgICAgICAgIHsgICBuID0gMTsgICAgfQorICAgICAgICAgICAgICAgIGlmIChuID4gMTgpICAgICAgLy9tMb+o1+608zE419a92gorICAgICAgICAgICAgICAgIHsgICBuID0gMTg7ICAgfQorICAgICAgICAgICAgICAgIGZvciAoaT0wOyBpPG47IGkrKykKKyAgICAgICAgICAgICAgICB7ICAgcE91dERhdGFbaV0gPSBSZWFkUkMoRklGT0RhdGFSZWcpOyAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICB9CisgICAgICAgICBlbHNlCisgICAgICAgICB7ICAgc3RhdHVzID0gTUlfRVJSOyAgIH0KKyAgICAgICAgCisgICB9CisgICAKKworICAgU2V0Qml0TWFzayhDb250cm9sUmVnLDB4ODApOyAgICAgICAgICAgLy8gc3RvcCB0aW1lciBub3cKKyAgIFdyaXRlUkMoQ29tbWFuZFJlZyxQQ0RfSURMRSk7IAorICAgcmV0dXJuIHN0YXR1czsKK30KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvL7mmICAgIMTco7rRsL+oCisvL7LOyv3LtcP3OiByZXFfY29kZVtJTl060bC/qLe9yr0KKy8vICAgICAgICAgICAgICAgIDB4NTIgPSDRsLjQ06bH+MTay/nT0Lf7us8xNDQ0M0Gx6te8tcS/qAorLy8gICAgICAgICAgICAgICAgMHgyNiA9INGwzrS9+Mjr0N3D39e0zKy1xL+oCisvLyAgICAgICAgICBwVGFnVHlwZVtPVVRdo7q/qMaswODQzbT6wusKKy8vICAgICAgICAgICAgICAgIDB4NDQwMCA9IE1pZmFyZV9VbHRyYUxpZ2h0CisvLyAgICAgICAgICAgICAgICAweDA0MDAgPSBNaWZhcmVfT25lKFM1MCkKKy8vICAgICAgICAgICAgICAgIDB4MDIwMCA9IE1pZmFyZV9PbmUoUzcwKQorLy8gICAgICAgICAgICAgICAgMHgwODAwID0gTWlmYXJlX1BybyhYKQorLy8gICAgICAgICAgICAgICAgMHg0NDAzID0gTWlmYXJlX0RFU0ZpcmUKKy8vt7UgICAgu9g6ILPJuaa3tbvYTUlfT0sKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwordW5zaWduZWQgc2hvcnQgUGNkUmVxdWVzdCh1bnNpZ25lZCBjaGFyIHJlcV9jb2RlLHVuc2lnbmVkIGNoYXIgKnBUYWdUeXBlKQoreworICAgdW5zaWduZWQgc2hvcnQgc3RhdHVzOyAgCisgICB1bnNpZ25lZCBpbnQgIHVuTGVuOyAKKyAgIAorICAgQ2xlYXJCaXRNYXNrKFN0YXR1czJSZWcsMHgwOCk7CisgICBXcml0ZVJDKEJpdEZyYW1pbmdSZWcsMHgwNyk7CisgICBTZXRCaXRNYXNrKFR4Q29udHJvbFJlZywweDAzKTsKKyAKKyAgIE1TbmRCdWZmZXJbMF0gPSByZXFfY29kZTsKKworICAgc3RhdHVzID0gUGNkQ29tTUY1MjIoUENEX1RSQU5TQ0VJVkUsIE1TbmRCdWZmZXIsIDEsIE1SY3ZCdWZmZXIsICZ1bkxlbik7CisgICAKKyAgIGlmICgoc3RhdHVzID09IE1JX09LKSAmJiAodW5MZW4gPT0gMHgxMCkpCisgICB7ICAKKyAgICAgICAgaWYocFRhZ1R5cGUpCisgICAgICAgIHsKKyAgICAgICAgICAgKnBUYWdUeXBlICAgICA9IE1SY3ZCdWZmZXJbMF07CisgICAgICAgICAgICoocFRhZ1R5cGUrMSkgPSBNUmN2QnVmZmVyWzFdOworICAgICAgICB9CisgICB9CisgICBlbHNlCisgICB7ICAgc3RhdHVzID0gTUlfRVJSOyAgIH0KKyAgIAorICAgcmV0dXJuIHN0YXR1czsKK30KKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvL7mmICAgIMTco7q3wLPl17IKKy8vss7K/cu1w/c6IHBTbnJbT1VUXTq/qMas0PLB0LrFo6w019a92gorLy+3tSAgICC72Dogs8m5pre1u9hNSV9PSworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vICAKK3Vuc2lnbmVkIHNob3J0IFBjZEFudGljb2xsKHVuc2lnbmVkIGNoYXIgKnBTbnIpCit7CisgICAgdW5zaWduZWQgc2hvcnQgc3RhdHVzOworICAgIHVuc2lnbmVkIGNoYXIgaSxzbnJfY2hlY2s9MDsKKyAgICB1bnNpZ25lZCBpbnQgIHVuTGVuOworCisJQ2xlYXJCaXRNYXNrKFN0YXR1czJSZWcsMHgwOCk7CisgICAgV3JpdGVSQyhCaXRGcmFtaW5nUmVnLDB4MDApOworICAgIENsZWFyQml0TWFzayhDb2xsUmVnLDB4ODApOworIAorICAgIE1TbmRCdWZmZXJbMF0gPSBQSUNDX0FOVElDT0xMMTsKKyAgICBNU25kQnVmZmVyWzFdID0gMHgyMDsKKworICAgIHN0YXR1cyA9IFBjZENvbU1GNTIyKFBDRF9UUkFOU0NFSVZFLCBNU25kQnVmZmVyLCAyLCBNUmN2QnVmZmVyLCAmdW5MZW4pOworCisgICAgaWYgKHN0YXR1cyA9PSBNSV9PSykKKyAgICB7CisgICAgCSBmb3IgKGk9MDsgaTw0OyBpKyspCisgICAgICAgICB7ICAgCisgICAgICAgICAgICAgKihwU25yK2kpICA9IE1SY3ZCdWZmZXJbaV07CisgICAgICAgICAgICAgc25yX2NoZWNrIF49IE1SY3ZCdWZmZXJbaV07CisgICAgICAgICB9CisgICAgICAgICBpZiAoc25yX2NoZWNrICE9IE1SY3ZCdWZmZXJbaV0pCisgICAgICAgICB7ICAgc3RhdHVzID0gTUlfRVJSOyAgICB9CisgICAgfQorICAgIAorICAgIFNldEJpdE1hc2soQ29sbFJlZywweDgwKTsKKyAgICByZXR1cm4gc3RhdHVzOworfQorCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vuaYgICAgxNyjutGhtqi/qMasCisvL7LOyv3LtcP3OiBwU25yW0lOXTq/qMas0PLB0LrFo6w019a92gorLy+3tSAgICC72Dogs8m5pre1u9hNSV9PSworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCit1bnNpZ25lZCBzaG9ydCBQY2RTZWxlY3QodW5zaWduZWQgY2hhciAqcFNuciwgdW5zaWduZWQgY2hhciogc2FrKQoreworICAgIHVuc2lnbmVkIHNob3J0IHN0YXR1czsKKyAgICB1bnNpZ25lZCBjaGFyIGk7CisgICAgdW5zaWduZWQgaW50ICB1bkxlbjsKKyAgICAKKyAgICBNU25kQnVmZmVyWzBdID0gUElDQ19BTlRJQ09MTDE7CisgICAgTVNuZEJ1ZmZlclsxXSA9IDB4NzA7CisgICAgTVNuZEJ1ZmZlcls2XSA9IDA7CisgICAgZm9yIChpPTA7IGk8NDsgaSsrKQorICAgIHsKKyAgICAJTVNuZEJ1ZmZlcltpKzJdID0gKihwU25yK2kpOworICAgIAlNU25kQnVmZmVyWzZdICBePSAqKHBTbnIraSk7CisgICAgfQorICAgIENhbHVsYXRlQ1JDKE1TbmRCdWZmZXIsIDcsJk1TbmRCdWZmZXJbN10pOworICAKKyAgICBDbGVhckJpdE1hc2soU3RhdHVzMlJlZywweDA4KTsKKworICAgIHN0YXR1cyA9IFBjZENvbU1GNTIyKFBDRF9UUkFOU0NFSVZFLCBNU25kQnVmZmVyLCA5LCBNUmN2QnVmZmVyLCAmdW5MZW4pOworICAgIAorICAgIGlmICgoc3RhdHVzID09IE1JX09LKSAmJiAodW5MZW4gPT0gMHgxOCkpCisgICAgeworICAgICAgICAqc2FrICAgPSBNUmN2QnVmZmVyWzBdOworICAgICAgICBzdGF0dXMgPSBNSV9PSzsKKyAgICB9CisgICAgZWxzZQorICAgIHsgICBzdGF0dXMgPSBNSV9FUlI7ICAgIH0KKworICAgIHJldHVybiBzdGF0dXM7Cit9CisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy+5piAgICDE3KO60enWpL+oxqzD3MLrCisvL7LOyv3LtcP3OiBhdXRoX21vZGVbSU5dOiDD3MLr0enWpMSjyr0KKy8vICAgICAgICAgICAgICAgICAweDYwID0g0enWpEHD3NS/CisvLyAgICAgICAgICAgICAgICAgMHg2MSA9INHp1qRCw9zUvyAKKy8vICAgICAgICAgIGFkZHJbSU5do7q/6bXY1rcKKy8vICAgICAgICAgIHBLZXlbSU5do7rD3MLrCisvLyAgICAgICAgICBwU25yW0lOXaO6v6jGrNDywdC6xaOsNNfWvdoKKy8vt7UgICAgu9g6ILPJuaa3tbvYTUlfT0sKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLyAgICAgICAgICAgICAgIAordW5zaWduZWQgc2hvcnQgUGNkQXV0aFN0YXRlKHVuc2lnbmVkIGNoYXIgYXV0aF9tb2RlLHVuc2lnbmVkIGNoYXIgYWRkcix1bnNpZ25lZCBjaGFyICpwS2V5LHVuc2lnbmVkIGNoYXIgKnBTbnIpCit7CisgICAgdW5zaWduZWQgc2hvcnQgc3RhdHVzOworICAgIHVuc2lnbmVkIGludCAgIHVuTGVuOworICAgIHVuc2lnbmVkIGNoYXIgIGk7IAorCisJTVNuZEJ1ZmZlclswXSA9IGF1dGhfbW9kZTsKKyAgICBNU25kQnVmZmVyWzFdID0gYWRkcjsKKyAgICBmb3IgKGk9MDsgaTw2OyBpKyspCisgICAgeyAgICBNU25kQnVmZmVyW2krMl0gPSAqKHBLZXkraSk7ICAgfQorICAgIGZvciAoaT0wOyBpPDY7IGkrKykKKyAgICB7ICAgIE1TbmRCdWZmZXJbaSs4XSA9ICoocFNucitpKTsgICB9CisgICAgCisgICAgc3RhdHVzID0gUGNkQ29tTUY1MjIoUENEX0FVVEhFTlQsIE1TbmRCdWZmZXIsIDEyLCBNUmN2QnVmZmVyLCAmdW5MZW4pOworICAgIGlmICgoc3RhdHVzICE9IE1JX09LKSB8fCAoIShSZWFkUkMoU3RhdHVzMlJlZykgJiAweDA4KSkpCisgICAgeyAgIHN0YXR1cyA9IE1JX0VSUjsgICB9CisgICAgCisgICAgcmV0dXJuIHN0YXR1czsKK30KKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvL7mmICAgIMTco7q2wcihTTG/qNK7v+nK/b7dCisvL7LOyv3LtcP3OiBhZGRyW0lOXaO6v+m12Na3CisvLyAgICAgICAgICBwRGF0YVtPVVRdo7q2wbP2tcTK/b7do6wxNtfWvdoKKy8vt7UgICAgu9g6ILPJuaa3tbvYTUlfT0sKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLyAKK3Vuc2lnbmVkIHNob3J0IFBjZFJlYWQodW5zaWduZWQgY2hhciBhZGRyLHVuc2lnbmVkIGNoYXIgKnBEYXRhKQoreworICAgIHVuc2lnbmVkIHNob3J0IHN0YXR1czsKKyAgICB1bnNpZ25lZCBpbnQgICB1bkxlbjsKKyAgICB1bnNpZ25lZCBjaGFyICBpOworCisJTVNuZEJ1ZmZlclswXSA9IFBJQ0NfUkVBRDE2OworCU1TbmRCdWZmZXJbMV0gPSBhZGRyOworICAgIENhbHVsYXRlQ1JDKE1TbmRCdWZmZXIsIDIsICZNU25kQnVmZmVyWzJdKTsKKyAgIAorICAgIHN0YXR1cyA9IFBjZENvbU1GNTIyKFBDRF9UUkFOU0NFSVZFLCBNU25kQnVmZmVyLCA0LCBNUmN2QnVmZmVyLCAmdW5MZW4pOworICAgIGlmICgoc3RhdHVzID09IE1JX09LKSAmJiAodW5MZW4gPT0gMHg5MCkpCisgICAgeworICAgICAgICBmb3IgKGk9MDsgaTwxNjsgaSsrKQorICAgICAgICB7ICAgICoocERhdGEraSkgPSBNUmN2QnVmZmVyW2ldOyAgIH0KKyAgICB9CisgICAgZWxzZQorICAgIHsgICBzdGF0dXMgPSBNSV9FUlI7ICAgfQorICAgIAorICAgIHJldHVybiBzdGF0dXM7Cit9CisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy+5piAgICDE3KO60LTK/b7dtb1NMb+o0ru/6QorLy+yzsr9y7XD9zogYWRkcltJTl2jur/ptdjWtworLy8gICAgICAgICAgcERhdGFbSU5do7rQtMjrtcTK/b7do6wxNtfWvdoKKy8vt7UgICAgu9g6ILPJuaa3tbvYTUlfT0sKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLyAgICAgICAgICAgICAgICAgIAordW5zaWduZWQgc2hvcnQgUGNkV3JpdGUodW5zaWduZWQgY2hhciBhZGRyLHVuc2lnbmVkIGNoYXIgKnBEYXRhKQoreworICAgIHVuc2lnbmVkIHNob3J0IHN0YXR1czsKKyAgICB1bnNpZ25lZCBpbnQgICB1bkxlbjsKKyAgICB1bnNpZ25lZCBjaGFyICBpOyAKKworCU1TbmRCdWZmZXJbMF0gPSBQSUNDX1dSSVRFMTY7CisJTVNuZEJ1ZmZlclsxXSA9IGFkZHI7CisgICAgQ2FsdWxhdGVDUkMoTVNuZEJ1ZmZlciwgMiwgJk1TbmRCdWZmZXJbMl0pOworIAorICAgIHN0YXR1cyA9IFBjZENvbU1GNTIyKFBDRF9UUkFOU0NFSVZFLCBNU25kQnVmZmVyLCA0LCBNUmN2QnVmZmVyLCAmdW5MZW4pOworCisgICAgaWYgKChzdGF0dXMgIT0gTUlfT0spIHx8ICh1bkxlbiAhPSA0KSB8fCAoKE1SY3ZCdWZmZXJbMF0gJiAweDBGKSAhPSAweDBBKSkKKyAgICB7ICAgc3RhdHVzID0gTUlfRVJSOyAgIH0KKyAgICAgICAgCisgICAgaWYgKHN0YXR1cyA9PSBNSV9PSykKKyAgICB7CisgICAgICAgIGZvciAoaT0wOyBpPDE2OyBpKyspCisgICAgICAgIHsgICAgTVNuZEJ1ZmZlcltpXSA9ICoocERhdGEraSk7ICAgfQorICAgICAgICBDYWx1bGF0ZUNSQyhNU25kQnVmZmVyLCAxNiwgJk1TbmRCdWZmZXJbMTZdKTsKKworICAgICAgICBzdGF0dXMgPSBQY2RDb21NRjUyMihQQ0RfVFJBTlNDRUlWRSwgTVNuZEJ1ZmZlciwgMTgsIE1SY3ZCdWZmZXIsICZ1bkxlbik7CisgICAgICAgIGlmICgoc3RhdHVzICE9IE1JX09LKSB8fCAodW5MZW4gIT0gNCkgfHwgKChNUmN2QnVmZmVyWzBdICYgMHgwRikgIT0gMHgwQSkpCisgICAgICAgIHsgICBzdGF0dXMgPSBNSV9FUlI7ICAgfQorICAgIH0KKyAgICAKKyAgICByZXR1cm4gc3RhdHVzOworfQorCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vuaYgICAgxNyjusP8we6/qMasvfjI69Ddw9/XtMysCisvL7e1ICAgILvYOiCzybmmt7W72E1JX09LCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KK3Vuc2lnbmVkIHNob3J0IFBjZEhhbHQodm9pZCkKK3sKKyAgICB1bnNpZ25lZCBzaG9ydCBzdGF0dXM7CisgICAgdW5zaWduZWQgaW50ICB1bkxlbjsKKworICAgIE1TbmRCdWZmZXJbMF0gPSBQSUNDX0hBTFQ7CisJTVNuZEJ1ZmZlclsxXSA9IDA7CisgICAgQ2FsdWxhdGVDUkMoTVNuZEJ1ZmZlciwgMiwgJk1TbmRCdWZmZXJbMl0pOworIAorICAgIHN0YXR1cyA9IFBjZENvbU1GNTIyKFBDRF9UUkFOU0NFSVZFLCBNU25kQnVmZmVyLCA0LCBNUmN2QnVmZmVyLCAmdW5MZW4pOworCisgICAgcmV0dXJuIHN0YXR1czsKK30KKworZXh0ZXJuIHZvaWQgSFdfU2xlZXBVcyggdW5zaWduZWQgc2hvcnQgdXMgKTsKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvL7mmICAgIMTco7q4tM67UkM1MjIKKy8vt7UgICAgu9g6ILPJuaa3tbvYTUlfT0sKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwordW5zaWduZWQgc2hvcnQgUGNkUmVzZXQodm9pZCkKK3sKKyAgICBNRlJDNTAwX1JzdFNldCgpOworICAgIEhXX1NsZWVwVXMoNTAwKTsKKyAgICBNRlJDNTAwX1JzdENscigpOworICAgIEhXX1NsZWVwVXMoMjAwKTsKKyAgICBNRlJDNTAwX1JzdFNldCgpOworICAgIEhXX1NsZWVwVXMoNTAwKTsKKworICAgIFdyaXRlUkMoQ29tbWFuZFJlZyxQQ0RfUkVTRVRQSEFTRSk7ICAgIAorICAgIFdyaXRlUkMoTW9kZVJlZywweDNEKTsgICAgICAgICAgICAvL7rNTWlmYXJlv6jNqNG2o6xDUkOz9cq81rUweDYzNjMKKyAgICBXcml0ZVJDKFRSZWxvYWRSZWdMLDMwKTsgICAgICAgICAgCisgICAgV3JpdGVSQyhUUmVsb2FkUmVnSCwwKTsKKyAgICBXcml0ZVJDKFRNb2RlUmVnLDB4OEQpOworICAgIFdyaXRlUkMoVFByZXNjYWxlclJlZywweDNFKTsKKyAgICBXcml0ZVJDKFR4QXNrUmVnLDB4NDApOworICAgCisgICAgcmV0dXJuIE1JX09LOworfQorCit1bnNpZ25lZCBjaGFyIE0xX0Jsa1JlYWQodW5zaWduZWQgY2hhciBNb2RlLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIEJsb2NrLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpwU04sIAorICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKnBCdWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqcEtleSkKK3sKKyAgICB1bnNpZ25lZCBjaGFyICBhdXRoX21vZGU7CisgICAgdW5zaWduZWQgY2hhciAgYnVmZlsyMF07CisgICAgdW5zaWduZWQgY2hhciAgc2FrOworICAgIAorICAgIGlmKE1vZGUmTTFfQklUX0FVVEhUWVBFJjB4MDEpCisgICAgeworICAgICAgICBhdXRoX21vZGUgPSBQSUNDX0FVVEhFTlQxQjsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgYXV0aF9tb2RlID0gUElDQ19BVVRIRU5UMUE7CisgICAgfQorCisgICAgaWYoKE1vZGUmTTFfQklUX1JRU1QpID09IDApCisgICAgeworICAgICAgICBpZihQY2RSZXF1ZXN0KFBJQ0NfUkVRSURMLCBidWZmKSkKKyAgICAgICAgICAgIGlmKFBjZFJlcXVlc3QoUElDQ19SRVFJREwsIGJ1ZmYpKQorICAgICAgICAgICAgICAgIHJldHVybiBNSV9FUlI7CisgICAgICAgCisgICAgICAgIGlmKFBjZEFudGljb2xsKHBTTikpCisgICAgICAgICAgICByZXR1cm4gTTFfRVJSX0FOVEk7CisJCisgICAgCWlmKFBjZFNlbGVjdChwU04sICZzYWspKQorCQkJcmV0dXJuIE0xX0VSUl9TRUxFQ1Q7CisJCQorICAgICAgICBpZihQY2RBdXRoU3RhdGUoYXV0aF9tb2RlLCBCbG9jaywgcEtleSwgcFNOKSkKKyAgICAgICAgICAgIHJldHVybiBNMV9FUlJfQVVUSDsKKwl9CisJZWxzZQorCXsJaWYoTW9kZSYgTTFfQklUX0FVVEgpCisJCXsgCQkKKyAgICAgICAgICAgIGlmKFBjZEF1dGhTdGF0ZShhdXRoX21vZGUsIEJsb2NrLCBwS2V5LCBwU04pKQorICAgICAgICAgICAgICAgIHJldHVybiBNMV9FUlJfQVVUSDsJCisJCX0KKwl9CisKKwlpZihQY2RSZWFkKEJsb2NrLCBidWZmKSkgIC8vZmlyc3QgcmVhZAorCQlyZXR1cm4gTTFfRVJSX1JFQUQ7CisKKyAgICBtZW1jcHkocEJ1ZmZlciwgYnVmZiwgMTYpOworCisJaWYoUGNkUmVhZChCbG9jaywgYnVmZikpICAvL3NlY29uZCByZWFkCisJCXJldHVybiBNMV9FUlJfUkVBRDsJCisJZWxzZQorCXsKKwkJaWYoIG1lbWNtcChwQnVmZmVyLCBidWZmLCAxNikpCisgICAgICAgICAgICByZXR1cm4gTTFfRVJSX1JFQUQ7CisJfQorCisJcmV0dXJuIE1JX09LOworfQorCisKK3Vuc2lnbmVkIGNoYXIgTTFfQmxrV3JpdGUoICB1bnNpZ25lZCBjaGFyIE1vZGUsdW5zaWduZWQgY2hhciBCbG9jaywgdW5zaWduZWQgY2hhciAqcFNOLCB1bnNpZ25lZCBjaGFyICogcEJ1ZmZlciwgdW5zaWduZWQgY2hhciAqcEtleSApCit7CisgICAgdW5zaWduZWQgY2hhciAgYXV0aF9tb2RlOworICAgIHVuc2lnbmVkIGNoYXIgIGJ1ZmZbMjBdOworICAgIHVuc2lnbmVkIGNoYXIgIGk7CisgICAgdW5zaWduZWQgY2hhciAgc2FrOworICAgIAorICAgIGlmKE1vZGUmTTFfQklUX0FVVEhUWVBFJjB4MDEpCisgICAgeworICAgICAgICBhdXRoX21vZGUgPSBQSUNDX0FVVEhFTlQxQjsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgYXV0aF9tb2RlID0gUElDQ19BVVRIRU5UMUE7CisgICAgfQorICAgIC8vUGNkUmVzZXQoKTsKKyAgICBpZigoTW9kZSZNMV9CSVRfUlFTVCkgPT0gMCkKKyAgICB7CisgICAgICAgIGlmKFBjZFJlcXVlc3QoUElDQ19SRVFJREwsIGJ1ZmYpKQorICAgICAgICAgICAgaWYoUGNkUmVxdWVzdChQSUNDX1JFUUlETCwgYnVmZikpCisgICAgICAgICAgICAgICAgcmV0dXJuIE1JX0VSUjsKKyAgICAgICAKKyAgICAgICAgaWYoUGNkQW50aWNvbGwocFNOKSkKKyAgICAgICAgICAgIHJldHVybiBNMV9FUlJfQU5USTsKKwkKKyAgICAJaWYoUGNkU2VsZWN0KHBTTiwgJnNhaykpCisJCQlyZXR1cm4gTTFfRVJSX1NFTEVDVDsKKwkJCisgICAgICAgIGlmKFBjZEF1dGhTdGF0ZShhdXRoX21vZGUsIEJsb2NrLCBwS2V5LCBwU04pKQorICAgICAgICAgICAgcmV0dXJuIE0xX0VSUl9BVVRIOworCX0KKwllbHNlCisJewlpZihNb2RlJiBNMV9CSVRfQVVUSCkKKwkJeyAJCQorICAgICAgICAgICAgaWYoUGNkQXV0aFN0YXRlKGF1dGhfbW9kZSwgQmxvY2ssIHBLZXksIHBTTikpCisgICAgICAgICAgICAgICAgcmV0dXJuIE0xX0VSUl9BVVRIOworCQl9CisJfQkKKworCWlmKFBjZFdyaXRlKCBCbG9jaywgcEJ1ZmZlcikpCisJCXJldHVybiggTTFfRVJSX1dSSVRFICk7CisKKwlpID0gMDsKKwlpZiggQmxvY2sgPCAxMjgpCisJeworCQlpZigoQmxvY2sgJSA0KSA9PSAzICkKKwkJCWkgPSAxOworCX0KKwllbHNlCisJeworCQlpZiggKEJsb2NrIC0gMTI4KSAlIDE2ID09IDE1ICkKKwkJCWkgPSAxOworCX0KKyAJaWYoIGkgPT0gMCApCisJewkKKyAgICAgICAgaWYoUGNkUmVhZChCbG9jaywgYnVmZikpCisJCQlyZXR1cm4gTTFfRVJSX1dSSVRFOworCQllbHNlCisJCXsKKwkJCWlmKG1lbWNtcChwQnVmZmVyLCBidWZmLCAxNikgIT0gMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gTTFfRVJSX1dSSVRFOworCQl9CisJfQorCQorCXJldHVybiBNSV9PSzsKK30KKwordm9pZCBNMV9SQ1Jlc2V0KHZvaWQpCit7CisgICAgUGNkUmVzZXQoKTsKK30KKwordW5zaWduZWQgY2hhciBHZXRNMVNOKHVuc2lnbmVkIGNoYXIgKnBTTikKK3sKKyAgICBpZihQY2RBbnRpY29sbChwU04pKQorICAgICAgICByZXR1cm4gTTFfRVJSX0FOVEk7CisKKyAgICByZXR1cm4gTUlfT0s7Cit9CisKK3Vuc2lnbmVkIGNoYXIgTTFfUmVxdWVzdCh1bnNpZ25lZCBjaGFyIFJlcXVlc3RNb2RlLCB1bnNpZ25lZCBjaGFyKiBhdHEpCit7CisgICAgIGlmKFBjZFJlcXVlc3QoUmVxdWVzdE1vZGUsIGF0cSkpCisgICAgICAgIHJldHVybiAgTTFfRVJSX1JFUVVFU1Q7CisKKyAgICByZXR1cm4gTUlfT0s7Cit9CisKK3Vuc2lnbmVkIGNoYXIgTTFfQW50aSh1bnNpZ25lZCBjaGFyIEJjbnQsIHVuc2lnbmVkIGNoYXIgKlNucikKK3sKKyAgICBpZihQY2RBbnRpY29sbChTbnIpKQorICAgICAgICByZXR1cm4gTTFfRVJSX0FOVEk7CisKKyAgICByZXR1cm4gTUlfT0s7Cit9CisKK3Vuc2lnbmVkIGNoYXIgTTFfU2VsZWN0KHVuc2lnbmVkIGNoYXIgKlNucikKK3sKKyAgICB1bnNpZ25lZCBjaGFyIHNhazsKKworICAgIGlmKFBjZFNlbGVjdChTbnIsICZzYWspKQorICAgICAgICByZXR1cm4gIE0xX0VSUl9TRUxFQ1Q7CisKKyAgICByZXR1cm4gTUlfT0s7Cit9CisKK3Vuc2lnbmVkIGNoYXIgTTFfQXV0aEJsayh1bnNpZ25lZCBjaGFyIEF1dGhNb2RlLCB1bnNpZ25lZCBjaGFyICpTbnIsIHVuc2lnbmVkIGNoYXIgQmxvY2ssIHVuc2lnbmVkIGNoYXIgKmtleSApCit7CisgICAgaWYoUGNkQXV0aFN0YXRlKEF1dGhNb2RlLCBCbG9jaywga2V5LCBTbnIpKSAgCisgICAgICAgIHJldHVybiBNMV9FUlJfQVVUSDsKKworICAgIHJldHVybiBNSV9PSzsKK30KKwordm9pZCBNMV9IYXJkUHdyRHduKHZvaWQpCit7CisgICAgUkVBREVSX1JFU0VUOworfQorCit1bnNpZ25lZCBjaGFyIE0xX1BDRFNuKHVuc2lnbmVkIGNoYXIgKiBwQnVmZmVyKQoreworICAgIHJldHVybiBNSV9PSzsKK30KKwordm9pZCBNMV9SYWRpb09mZih2b2lkKQoreworICAgUGNkUmZSZXNldCgwKTsKK30KKwordm9pZCBNMV9SYWRpb09uKHZvaWQpCit7CisgICBQY2RSZlJlc2V0KDEpOworfQorCit1bnNpZ25lZCBjaGFyIE0xX1JlYWQodW5zaWduZWQgY2hhciBCbG9jaywgdW5zaWduZWQgY2hhciogUmVhZEJ1ZmZlcikKK3sKKyAgICBpZihQY2RSZWFkKEJsb2NrLCBSZWFkQnVmZmVyKSkKKyAgICAgICAgcmV0dXJuIE0xX0VSUl9SRUFEOworCisgICAgcmV0dXJuIE1JX09LOworfQorCit1bnNpZ25lZCBjaGFyIE0xX1dyaXRlKHVuc2lnbmVkIGNoYXIgQmxvY2ssIHVuc2lnbmVkIGNoYXIqIFdyaXRlQnVmZmVyKQoreworICAgIGlmKFBjZFdyaXRlKEJsb2NrLCBXcml0ZUJ1ZmZlcikpCisgICAgICAgIHJldHVybiBNMV9FUlJfV1JJVEU7CisKKyAgICByZXR1cm4gTUlfT0s7Cit9CisKK3Vuc2lnbmVkIGNoYXIgTTFfSGFsdCh2b2lkKQoreworICAgIFBjZEhhbHQoKTsKKworICAgIHJldHVybiBNSV9PSzsKK30KKworCisjaWYgMAorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vICAgICAgIE0gSSBGIEEgUiBFICAgUCBJIEMgQyAgIEEgQyBUIEkgViBBIFQgSSBPIE4gICAgUyBFIFEgRSBOIEMgRQorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KK3Vuc2lnbmVkIHNob3J0IE1mNTAwUGljY0FjdGl2YXRlSWRsZSh1bnNpZ25lZCBjaGFyIGJyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqYXRxLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKnNhaywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICp1aWQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqdWlkX2xlbikKK3sKKyAgICB1bnNpZ25lZCBzaG9ydCBzdGF0dXMgPSBNSV9PSzsKKyAgICAKKyAgICBzdGF0dXMgPSBNMV9SZXF1ZXN0KFBJQ0NfUkVRSURMLGF0cSk7CisgICAgaWYoc3RhdHVzICE9IE1JX09LKSByZXR1cm4gc3RhdHVzOworIAorICAgIHN0YXR1cyA9IE0xX0FudGkoMCwgdWlkKTsgCisgICAgaWYoc3RhdHVzICE9IE1JX09LKSByZXR1cm4gc3RhdHVzOyAKKyAgICAqdWlkX2xlbiA9IDQ7CisgICAgCisgICAgaWYoUGNkU2VsZWN0KHVpZCwgc2FrKSkgcmV0dXJuIHN0YXR1czsKKworICAgIHJldHVybiBNSV9PSzsKK30KKworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLyAgICAgICAgICAgUCBJIEMgQyAgIEUgWCBDIEggQSBOIEcgRSAgIEIgTCBPIEMgSworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KK3Vuc2lnbmVkIHNob3J0IE1mNTAwUGljY0V4Y2hhbmdlQmxvY2sodW5zaWduZWQgY2hhciAqc2VuZF9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgc2VuZF9ieXRlbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqcmVjX2RhdGEsICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0ICpyZWNfYnl0ZWxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgYXBwZW5kX2NyYywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHRpbWVvdXQgKQoreworICAgY2hhciAgIHN0YXR1cyA9IE1JX09LOworICAgCisgICBzZW5kX2J5dGVsZW4gLT0gMjsKKyAgIGlmIChhcHBlbmRfY3JjKQorICAgeworICAgICAgICBDYWx1bGF0ZUNSQyhzZW5kX2RhdGEsIHNlbmRfYnl0ZWxlbiwgc2VuZF9kYXRhK3NlbmRfYnl0ZWxlbik7CisgICAgICAgIHNlbmRfYnl0ZWxlbiArPSAyOworICAgfQorICAgCQorICAgUGNkU2V0VG1vKHRpbWVvdXQpOworCisgICBzdGF0dXMgPSBFeGNoYW5nZUJ5dGVTdHJlYW0oUENEX1RSQU5TQ0VJVkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VuZF9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbmRfYnl0ZWxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNfYnl0ZWxlbik7CisgICAvLyBldmVuIGlmIGFuIGVycm9yIG9jY3VyZWQsIHRoZSBkYXRhIHNob3VsZCBiZQorICAgLy8gcmV0dXJuZWQgLSBmb3IgZGVidWdnaW5nIHJlYXNvbnMKKworICAgaWYgKGFwcGVuZF9jcmMpCisgICB7CisgICAgICAqcmVjX2J5dGVsZW4gKz0gMjsgLy8gZm9yIHR3byBDUkMgYnl0ZXMKKyAgICAgIHJlY19kYXRhWypyZWNfYnl0ZWxlbiAtIDJdID0gMHgwMDsKKyAgICAgIHJlY19kYXRhWypyZWNfYnl0ZWxlbiAtIDFdID0gMHgwMDsKKyAgIH0KKworICAgcmV0dXJuIHN0YXR1czsKK30gCisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLyAgICAgICAgICAgRSBYIEMgSCBBIE4gRyBFICAgQiBZIFQgRSAgIFMgVCBSIEUgQSBNCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwordW5zaWduZWQgc2hvcnQgRXhjaGFuZ2VCeXRlU3RyZWFtKHVuc2lnbmVkIGNoYXIgQ21kLAorICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqc2VuZF9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgc2VuZF9ieXRlbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqcmVjX2RhdGEsICAKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0ICpyZWNfYnl0ZWxlbikKK3sKKyAgIHVuc2lnbmVkIHNob3J0IHN0YXR1cyA9IE1JX09LOworICAgdW5zaWduZWQgaW50ICB1bkxlbjsgCisKKyAgIEZsdXNoRklGTygpOyAgICAvLyBlbXB0eSBGSUZPCisKKyAgIGlmIChzZW5kX2J5dGVsZW4gPiAwKQorICAgeworICAgICAgbWVtY3B5KE1TbmRCdWZmZXIsIHNlbmRfZGF0YSwgc2VuZF9ieXRlbGVuKTsgLy8gd3JpdGUgbiBieXRlcyAKKworICAgICAgLy8gd3JpdGUgbG9hZCBjb21tYW5kCisgICAgICBzdGF0dXMgPSBQY2RDb21NRjUyMihQQ0RfVFJBTlNDRUlWRSwgTVNuZEJ1ZmZlciwgc2VuZF9ieXRlbGVuLCBNUmN2QnVmZmVyLCAmdW5MZW4pOworCisgICAgICAvLyBjb3B5IGRhdGEgdG8gb3V0cHV0LCBldmVuIGluIGNhc2Ugb2YgYW4gZXJyb3IKKyAgICAgICpyZWNfYnl0ZWxlbiA9IHVuTGVuLzg7CisgICAgICBpZiAoKnJlY19ieXRlbGVuKQorICAgICAgeworICAgICAgICAgbWVtY3B5KHJlY19kYXRhLCBNUmN2QnVmZmVyLCAqcmVjX2J5dGVsZW4pOworICAgICAgfQorICAgfQorICAgZWxzZQorICAgeworICAgICAgc3RhdHVzID0gTUlfV1JPTkdfUEFSQU1FVEVSX1ZBTFVFOworICAgfQorICAgcmV0dXJuIHN0YXR1czsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorI2Vsc2UKKy8vIHN0cnVjdCBkZWZpbml0aW9uIGZvciBhIGNvbW11bmljYXRpb24gY2hhbm5lbCBiZXR3ZWVuIGZ1bmN0aW9uIGFuZCBJU1IKK3R5cGVkZWYgc3RydWN0IAorICAgICAgICAgeworICAgICAgICAgICAgdW5zaWduZWQgY2hhciAgY21kOyAgICAgICAgICAgLy8hPCBjb21tYW5kIGNvZGUgCisgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICBpcnFTb3VyY2U7ICAgICAvLyE8IHdoaWNoIGludGVycnVwdHMgaGF2ZSBvY2N1cmVkCisgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCBzdGF0dXM7ICAgICAgICAvLyE8IGNvbW11bmljYXRpb24gc3RhdHVzCisgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCBuQnl0ZXNTZW50OyAgICAvLyE8IGhvdyBtYW55IGJ5dGVzIGFscmVhZHkgc2VudAorICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgbkJ5dGVzVG9TZW5kOyAgLy8hPCBob3cgbWFueSBieXRlcyB0byBzZW5kCisgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCBuQnl0ZXNSZWNlaXZlZDsvLyE8IGhvdyBtYW55IGJ5dGVzIHJlY2VpdmVkCisgICAgICAgICAgICB1bnNpZ25lZCBsb25nICBuQml0c1JlY2VpdmVkOyAvLyE8IGhvdyBtYW55IGJpdHMgcmVjZWl2ZWQKKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgIGNvbGxQb3M7ICAgICAgIC8qITwgYXQgd2hpY2ggcG9zaXRpb24gb2NjdXJlZCBhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xsaXNpb24qLworICAgICAgICAgICAgdW5zaWduZWQgY2hhciAgZXJyRmxhZ3M7ICAgICAgLy8hPCBlcnJvciBmbGFncworICAgICAgICAgICAgdW5zaWduZWQgY2hhciAgc2F2ZUVycm9yU3RhdGU7Ly8hPCBhY2N1bXVsYXRlZCBlcnJvciBmbGFncyBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vITwgbXVsdGlwbGUgcmVzcG9uc2VzCisgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICBSeEFsaWduV0E7ICAgICAvLyE8IHdvcmthcm91bmQgZm9yIFJ4QWxpZ24gPSA3CisgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICBEaXNhYmxlREY7ICAgICAvLyE8IGRpc2FibGUgZGlzdHVyYmFuY2UgZmlsdGVyCisgICAgICAgICB9IE1mQ21kSW5mbzsKKworLy8gQ29udmluaWVuY2UgZnVuY3Rpb24gZm9yIGluaXRpYWxpc2luZyB0aGUgY29tbXVuaWNhdGlvbiBzdHJ1Y3R1cmUuCisjZGVmaW5lIFJlc2V0SW5mbyhpbmZvKSAgICBcCisgICAgICAgICAgICBpbmZvLmNtZCAgICAgICAgICAgID0gMDsgXAorICAgICAgICAgICAgaW5mby5zdGF0dXMgICAgICAgICA9IE1JX09LO1wKKyAgICAgICAgICAgIGluZm8uaXJxU291cmNlICAgICAgPSAwOyBcCisgICAgICAgICAgICBpbmZvLm5CeXRlc1NlbnQgICAgID0gMDsgXAorICAgICAgICAgICAgaW5mby5uQnl0ZXNUb1NlbmQgICA9IDA7IFwKKyAgICAgICAgICAgIGluZm8ubkJ5dGVzUmVjZWl2ZWQgPSAwOyBcCisgICAgICAgICAgICBpbmZvLm5CaXRzUmVjZWl2ZWQgID0gMDsgXAorICAgICAgICAgICAgaW5mby5jb2xsUG9zICAgICAgICA9IDA7IFwKKyAgICAgICAgICAgIGluZm8uZXJyRmxhZ3MgICAgICAgPSAwOyBcCisgICAgICAgICAgICBpbmZvLnNhdmVFcnJvclN0YXRlID0gMDsgXAorICAgICAgICAgICAgaW5mby5SeEFsaWduV0EgICAgICA9IDA7IFwKKyAgICAgICAgICAgIGluZm8uRGlzYWJsZURGICAgICAgPSAwOworCisvLyBJbiBvcmRlciB0byBleGNoYW5nZSBzb21lIHZhbHVlcyBiZXR3ZWVuIHRoZSBJU1IgYW5kIHRoZSBjYWxsaW5nIGZ1bmN0aW9uLAorLy8gYSBzdHJ1Y3QgaXMgcHJvdmlkZWQuIAordm9sYXRpbGUgTWZDbWRJbmZvICAgICBNSW5mbzsgICAgICAgICAgICAgICAgICAKKworLy8gY29tbXVuaWNhdGlvbiBpbmZvIHN0dWN0dXJlCitzdGF0aWMgICB2b2xhdGlsZSBNZkNtZEluZm8gICAgICpNcElzckluZm8gPSAwOyAKKy8vIElTUiBzZW5kIGJ1ZmZlcgorc3RhdGljICAgdm9sYXRpbGUgdW5zaWduZWQgY2hhciAqTXBJc3JPdXQgPSAwOyAKKy8vIElTUiByZWNlaXZlIGJ1ZmZlcgorc3RhdGljICAgdm9sYXRpbGUgdW5zaWduZWQgY2hhciAqTXBJc3JJbiA9IDA7ICAgCisKKy8vIHN0b3JhZ2Ugb2YgdGhlIGxhc3Qgc2VsZWN0ZWQgc2VyaWFsIG51bWJlciBpbmNsdWRpbmcgY2hlY2sgYnl0ZS4KKy8vIEZvciBtdWx0aSBsZXZlbCBzZXJpYWwgbnVtYmVycywgb25seSB0aGUgZmlyc3QgNCBieXRlcyBhcmUgc3RvcmVkLgordW5zaWduZWQgY2hhciBNTGFzdFNlbGVjdGVkU25yWzVdOworCisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vICAgICAgICAgICAgICAgICAgICAgICBJbnRlcnJ1cHQgSGFuZGxlciBSSUMKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vaW50ZXJydXB0IChSRUFERVJfSU5UKQordm9pZCBTaW5nbGVSZXNwb25zZUlzcih2b2lkKQoreworICAgc3RhdGljIHVuc2lnbmVkIGNoYXIgIGlycUJpdHM7CisgICBzdGF0aWMgdW5zaWduZWQgY2hhciAgaXJxTWFzazsgICAgICAgCisgICBzdGF0aWMgdW5zaWduZWQgY2hhciAgbmJ5dGVzOworICAgc3RhdGljIHVuc2lnbmVkIGNoYXIgIGNudDsKKyAgIHVuc2lnbmVkIGludCBpID0gMDsKKworICAgaWYgKE1wSXNySW5mbyAmJiBNcElzck91dCAmJiBNcElzckluKSAgLy8gdHJhbnNmZXIgcG9pbnRlcnMgaGF2ZSB0byBiZSBzZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvcnJlY3RseQorICAgeworICAgICAgTXBJc3JJbmZvLT5lcnJGbGFncyA9IFJlYWRSQyhFcnJvclJlZykgJiAweDBGOyAvLyBzYXZlIGVycm9yIHN0YXRlCisKKwkgIC8vd2hpbGUoIChSZWFkUkMoU3RhdHVzMVJlZykgJiAweDEwKSkgLy8gbG9vcCB3aGlsZSBJUlEgcGVuZGluZworCSAgd2hpbGUoMSkKKyAgICAgIHsKKyAgICAgICAgIGlmKChpKyspID4gNTAwKSBicmVhazsKKwkJIAorICAgICAgICAgaXJxTWFzayA9IFJlYWRSQyhDb21JRW5SZWcpOyAvLyByZWFkIGVuYWJsZWQgaW50ZXJydXB0cworICAgICAgICAgLy8gcmVhZCBwZW5kaW5nIGludGVycnVwdHMKKyAgICAgICAgIGlycUJpdHMgPSBSZWFkUkMoQ29tSXJxUmVnKSAmIGlycU1hc2s7CisgICAgICAgICBNcElzckluZm8tPmlycVNvdXJjZSB8PSBpcnFCaXRzOyAvLyBzYXZlIHBlbmRpbmcgaW50ZXJydXB0cworCisgICAgICAgICBpZighKGlycUJpdHMmMHg3RikpIGJyZWFrOworCisgICAgICAgICAvLyoqKioqKioqKioqKiBMb0FsZXJ0SVJRICoqKioqKioqKioqKioqKioqKgorICAgICAgICAgaWYgKGlycUJpdHMgJiAweDA0KSAgICAvLyBMb0FsZXJ0CisgICAgICAgICB7ICAKKyAgICAgICAgICAgIG5ieXRlcyA9IERFRl9GSUZPX0xFTkdUSCAtIFJlYWRSQyhGSUZPTGV2ZWxSZWcpOworICAgICAgICAgICAgLy8gbGVzcyBieXRlcyB0byBzZW5kLCB0aGFuIHNwYWNlIGluIEZJRk8KKyAgICAgICAgICAgIGlmICgoTXBJc3JJbmZvLT5uQnl0ZXNUb1NlbmQgLSBNcElzckluZm8tPm5CeXRlc1NlbnQpIDw9IG5ieXRlcykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgIG5ieXRlcyA9IE1wSXNySW5mby0+bkJ5dGVzVG9TZW5kIC0gTXBJc3JJbmZvLT5uQnl0ZXNTZW50OworCQkJICAgaXJxTWFzayAmPSB+MHgwNDsKKyAgICAgICAgICAgICAgIENsZWFyQml0TWFzayhDb21JRW5SZWcsIDB4MDQpOyAvLyBkaXNhYmxlIExvQWxlcnQgSVJRCisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyB3cml0ZSByZW1haW5pbmcgZGF0YSB0byB0aGUgRklGTworICAgICAgICAgICAgZm9yICggY250ID0gMDtjbnQgPCBuYnl0ZXM7Y250KyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICBXcml0ZVJDKEZJRk9EYXRhUmVnLCBNcElzck91dFtNcElzckluZm8tPm5CeXRlc1NlbnRdKTsKKyAgICAgICAgICAgICAgIE1wSXNySW5mby0+bkJ5dGVzU2VudCsrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKChSZWFkUkMoU3RhdHVzMlJlZykgJiAweDA3KSA9PSAweDAxKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIFNldEJpdE1hc2soQml0RnJhbWluZ1JlZywgMHg4MCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBXcml0ZVJDKENvbUlycVJlZywgMHgwNCk7ICAvLyByZXNldCBJUlEgYml0CisgICAgICAgICB9CisgICAgICAKKyAgICAgICAgIC8vKioqKioqKioqKioqKiBUeElSUSBIYW5kbGluZyAqKioqKioqKioqKioqKgorICAgICAgICAgaWYgKGlycUJpdHMgJiAweDQwKSAgICAgICAvLyBUeElSUQorICAgICAgICAgeworICAgICAgICAgICAgV3JpdGVSQyhDb21JcnFSZWcsIDB4NDApOyAgICAvLyByZXNldCBJUlEgYml0IAorICAgICAgICAgICAgU2V0Qml0TWFzayhDb21JRW5SZWcsIDB4MDgpOyAvLyBlbmFibGUgSGlBbGVydCBJcnEgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlc3BvbnNlCisgICAgICAgICAgICBpZiAoTXBJc3JJbmZvLT5SeEFsaWduV0EpICAgIC8vIGlmIGNtZCBpcyBhbnRpY29sbGlzaW9uIGFuZCA3IGJpdHMgYXJlIGtub3duCisgICAgICAgICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN3aXRjaCBvZmYgcGFyaXR5IGdlbmVyYXRpb24KKyAgICAgICAgICAgICAgIFNldEJpdE1hc2soUkZVMUQsIDB4MTApOyAgLy8gUnhDUkMgYW5kIFR4Q1JDIGRpc2FibGUsIHBhcml0eSBkaXNhYmxlCisJCQkgICBDbGVhckJpdE1hc2soVHhNb2RlUmVnLCAweDgwKTsKKwkJCSAgIENsZWFyQml0TWFzayhSeE1vZGVSZWcsIDB4ODApOworICAgICAgICAgICAgfQorICAgICAgICAgfQorICAgICAgICAgLy8qKioqKioqKioqKioqKioqIFJ4SVJRIEhhbmRsaW5nICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgICAgIGlmIChpcnFCaXRzICYgMHgyMCkgLy8gUnhJUlEgLSBwb3NzaWJsZSBFbmQgb2YgcmVzcG9uc2UgcHJvY2Vzc2luZworICAgICAgICAgeworICAgICAgICAgICAgIC8vIG5vIGVycm9yIG9yIGNvbGxpc2lvbiBkdXJpbmcKKyAgICAgICAgICAgIGlmIChNcElzckluZm8tPkRpc2FibGVERiB8fCAoTXBJc3JJbmZvLT5lcnJGbGFncyA9PSAweDAwKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgIFdyaXRlUkMoQ29tbWFuZFJlZywgMHgwMCk7IC8vIGNhbmNlbCBjdXJyZW50IGNvbW1hbmQKKyAgICAgICAgICAgICAgIGlycUJpdHMgfD0gMHgxMDsgLy8gc2V0IGlkbGUgZmxhZyBpbiBvcmRlciB0byBzaWduYWwgdGhlIGVuZCBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwcm9jZXNzaW5nLiBGb3Igc2luZ2xlIHJlcG9uc2UgcHJvY2Vzc2luZywgdGhpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmbGFnIGlzIGFscmVhZHkgc2V0LgorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSAvLyBlcnJvciBvY2N1cmVkIC0gZmx1c2ggZGF0YSBhbmQgY29udGludWUgcmVjZWl2aW5nCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICBNcElzckluZm8tPnNhdmVFcnJvclN0YXRlID0gTXBJc3JJbmZvLT5lcnJGbGFnczsgLy8gc2F2ZSBlcnJvciBzdGF0ZQorICAgICAgICAgICAgICAgTXBJc3JJbmZvLT5lcnJGbGFncyA9IDA7IC8vIHJlc2V0IGVycm9yIGZsYWdzIGZvciBuZXh0IHJlY2VpcHRpb24KKyAgICAgICAgICAgICAgIFdyaXRlUkMoRklGT0xldmVsUmVnLCAweDgwKTsKKyAgICAgICAgICAgICAgIE1wSXNySW5mby0+bkJ5dGVzUmVjZWl2ZWQgPSAweDAwOworICAgICAgICAgICAgICAgaXJxQml0cyAmPSB+MHgyMDsgLy8gY2xlYXIgaW50ZXJydXB0IHJlcXVlc3QKKyAgICAgICAgICAgICAgIFdyaXRlUkMoQ29tSXJxUmVnLCAweDIwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKworICAgICAgICAgLy8qKioqKioqKioqKioqIEhpQWxlcnRJUlEgb3IgUnhJUlEgSGFuZGxpbmcgKioqKioqKioqKioqKioqKioqCisgICAgICAgICBpZiAoaXJxQml0cyAmIDB4MzgpIC8vIEhpQWxlcnQsIElkbGUgb3IgdmFsaWQgUnhJUlEKKyAgICAgICAgIHsKKyAgICAgICAgICAgIC8vIHJlYWQgc29tZSBieXRlcyAoIGxlbmd0aCBvZiBGSUZPIHF1ZXVlKSAgICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBpbnRvIHRoZSByZWNlaXZlIGJ1ZmZlcgorICAgICAgICAgICAgbmJ5dGVzID0gUmVhZFJDKEZJRk9MZXZlbFJlZyk7CisgICAgICAgICAgICAvLyByZWFkIGRhdGUgZnJvbSB0aGUgRklGTyBhbmQgc3RvcmUgdGhlbSBpbiB0aGUgcmVjZWl2ZSBidWZmZXIKKyAgICAgICAgICAgIGRvCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZm9yICggY250ID0gMDsgY250IDwgbmJ5dGVzOyBjbnQrKykgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgLy8gYWNjZXB0IG5vIG1vcmUgZGF0YSwgdGhhbiByZXNlcnZlZCBtZW1vcnkgc3BhY2UKKyAgICAgICAgICAgICAgICAgICBpZiAoTXBJc3JJbmZvLT5uQnl0ZXNSZWNlaXZlZCA8IE1FTU9SWV9CVUZGRVJfU0laRSkgCisgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgIE1wSXNySW5bTXBJc3JJbmZvLT5uQnl0ZXNSZWNlaXZlZF0gPSBSZWFkUkMoRklGT0RhdGFSZWcpOworICAgICAgICAgICAgICAgICAgICAgIE1wSXNySW5mby0+bkJ5dGVzUmVjZWl2ZWQrKzsKKyAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICBNcElzckluZm8tPnN0YXR1cyA9IE1JX1JFQ0JVRl9PVkVSRkxPVzsKKyAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIC8vIGNoZWNrIGZvciByZW1haW5pbmcgYnl0ZXMKKyAgICAgICAgICAgICAgICBuYnl0ZXMgPSBSZWFkUkMoRklGT0xldmVsUmVnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHdoaWxlIChNcElzckluZm8tPnN0YXR1cyA9PSBNSV9PSyAmJiBuYnl0ZXMgPiAwKTsKKyAgICAgICAgICAgIFdyaXRlUkMoQ29tSXJxUmVnLCAweDI4ICYgaXJxQml0cyk7ICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlc2V0IElSUSBiaXQgLSBpZGxlIGlycSB3aWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiZSBkZWxldGVkIGluIGEgc2VwZXJhdGUgc2VjdGlvbgorICAgICAgICAgfSAgIAorCisgICAgICAgICAvLyoqKioqKioqKioqKiogYWRkaXRpb25hbCBIaUFsZXJ0SVJRIEhhbmRsaW5nICoqKgorICAgICAgICAgaWYgKGlycUJpdHMgJiAweDA4KQorICAgICAgICAgeworICAgICAgICAgICAgLy8gaWYgaGlnaEFsZXJ0SVJRIGlzIHBlbmRpbmcgYW5kIHRoZSByZWNlaXZlciBpcyBzdGlsbAorICAgICAgICAgICAgLy8gcnVubmluZywgdGhlbiB0aGUgdGltZW91dCBjb3VudGVyIHNob3VsZCBiZSBzdG9wcGVkLAorICAgICAgICAgICAgLy8gb3RoZXJ3aXNlIGEgdGltZW91dCBjb3VsZCBvY2N1cmUgd2hpbGUgcmVjZWl2aW5nIAorICAgICAgICAgICAgLy8gY29ycmVjdCBkYXRhCisgICAgICAgICAgICBpZiAoKFJlYWRSQyhTdGF0dXMyUmVnKSAmIDB4MDcpID09IDB4MDYpCisgICAgICAgICAgICB7ICAgICAgCisgICAgICAgICAgICAgICBjbnQgPSBSZWFkUkMoQ29udHJvbFJlZyk7IC8vIHJlYWQgY29udHJvbCByZWdpc3RlcgorICAgICAgICAgICAgICAgV3JpdGVSQyhDb250cm9sUmVnLCBjbnR8MHg4MCk7IC8vIHN0b3AgcmVhZGVyIElDIHRpbWVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd3JpdGUgbW9kaWZpZWQgcmVnaXN0ZXIKKyAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKworICAgICAgICAgLy8qKioqKioqKioqKioqKiBhZGRpdGlvbmFsIElkbGVJUlEgSGFuZGxpbmcgKioqKioqCisgICAgICAgICBpZiAoaXJxQml0cyAmIDB4MTApICAgICAvLyBJZGxlIElSUQorICAgICAgICAgeyAKKyAgICAgICAgICAgIENsZWFyQml0TWFzayhDb21JRW5SZWcsIDB4MDEpOy8vIGRpc2FibGUgVGltZXIgSVJRCisgICAgICAgICAgICBXcml0ZVJDKENvbUlycVJlZywgMHgxMSk7ICAgIC8vIGRpc2FibGUgVGltZXIgSVJRIHJlcXVlc3QKKyAgICAgICAgICAgIGlycUJpdHMgJj0gfjB4MDE7ICAgLy8gY2xlYXIgVGltZXIgSVJRIGluIGxvY2FsIHZhcgorICAgICAgICAgICAgTXBJc3JJbmZvLT5pcnFTb3VyY2UgJj0gfjB4MDE7IC8vIGNsZWFyIFRpbWVyIElSUSBpbiBpbmZvIHZhcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gaWRsZSByZWNlaXZlZCwgdGhlbiBjYW5jZWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aW1lb3V0CisgICAgICAgICAgICBNcElzckluZm8tPmlycVNvdXJjZSB8PSAweDEwOyAvLyBzZXQgaWRsZS1mbGFnIGluIGNhc2Ugb2YgdmFsaWQgcngtaXJxCisgICAgICAgICAgICAvLyBzdGF0dXMgc2hvdWxkIHN0aWxsIGJlIE1JX09LCisgICAgICAgICAgICAvLyBubyBlcnJvciAtIG9ubHkgdXNlZCBmb3Igd2FrZSB1cAorICAgICAgICAgfQorICAgICAgIAorICAgICAgICAgLy8qKioqKioqKioqKioqIFRpbWVySVJRIEhhbmRsaW5nICoqKioqKioqKioqCisgICAgICAgICBpZiAoaXJxQml0cyAmIDB4MDEpICAgICAgIC8vIHRpbWVyIElSUQorICAgICAgICAgeworICAgICAgICAgICAgV3JpdGVSQyhDb21JcnFSZWcsIDB4MDEpOyAvLyByZXNldCBJUlEgYml0IAorICAgICAgICAgICAgLy8gb25seSBpZiBubyBvdGhlciBlcnJvciBvY2N1cmVkCisgICAgICAgICAgICBpZiAoTXBJc3JJbmZvLT5zdGF0dXMgPT0gTUlfT0spCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICBNcElzckluZm8tPnN0YXR1cyA9IE1JX05PVEFHRVJSOyAvLyB0aW1lb3V0IGVycm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdGhlcndpc2UgaWdub3JlIHRoZSBpbnRlcnJ1cHQKKyAgICAgICAgICAgIH0KKyAgICAgICAgIH0gICAgICAgICAKKyAgICAgIH0KKyAgIH0KK30KKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8gICAgICAgVyBSIEkgVCBFICAgQSAgIFAgQyBEICAgQyBPIE0gTSBBIE4gRCAKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCit1bnNpZ25lZCBzaG9ydCAgUGNkU2luZ2xlUmVzcG9uc2VDbWQodW5zaWduZWQgY2hhciBjbWQsCisgICAgICAgICAgICAgICB2b2xhdGlsZSB1bnNpZ25lZCBjaGFyKiBzZW5kLCAKKyAgICAgICAgICAgICAgIHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIqIHJjdiwKKyAgICAgICAgICAgICAgIHZvbGF0aWxlIE1mQ21kSW5mbyAqaW5mbykKK3sgICAgCisgICB1bnNpZ25lZCBzaG9ydCAgICAgICAgICBzdGF0dXMgICAgPSBNSV9PSzsKKyAgIHVuc2lnbmVkIGNoYXIgbGFzdEJpdHM7CisgICB1bnNpZ25lZCBjaGFyIHZhbGlkRXJyb3JGbGFncyA9IDB4MUY7CisgICB1bnNpZ25lZCBjaGFyIGlycUVuICAgICA9IDB4MDA7CisgICB1bnNpZ25lZCBjaGFyIHdhaXRGb3IgICA9IDB4MDA7IAorICAgdW5zaWduZWQgY2hhciB3YXRlckxldmVsQmFja3VwOworICAgdW5zaWduZWQgaW50ICBpID0gMDsKKworICAgV3JpdGVSQyhDb21JRW5SZWcsIDApOyAgICAgLy8gZGlzYWJsZSBhbGwgaW50ZXJydXB0cworICAgV3JpdGVSQyhDb21JcnFSZWcsIDB4ODApOyAgLy8gY2xlYXIgYWxsIGludGVycnVwdCByZXF1ZXN0cworCisgICAvLyBwbGVhc2UgcGF5IGF0dGVudGlvbiB0byB0aGUgc2VxdWVuY2Ugb2YgZm9sbG93aW5nIGNvbW1hbmRzCisgICAvLyBhdCBmaXJzdCBlbXB0eSB0aGUgRklGTworICAgLy8gc2Vjb25kIHdhaXQgZm9yIHByb2JhYmx5IGUyIHByb2dyYW1taW5nIGluIHByb2dyZXNzCisgICAvLyB0aGlyZCBjYW5jZWwgY29tbWFuZAorICAgLy8KKyAgIC8vIEFUVEVOVElPTjogdGhlIGd1YXJkIHRpbWVyIG11c3Qgbm90IGV4cGlyZSBlYXJsaWVyIHRoYW4gMTAgbXMKKyAgIEZsdXNoRklGTygpOyAgICAgICAgICAgIC8vIGZsdXNoIEZJRk8gYnVmZmVyCisKKyAgIFdyaXRlUkMoQ29tbWFuZFJlZywgUENEX0lETEUpOyAKKyAgICAgCisgICAvLyBTZXQgd2F0ZXIgbGV2ZWwgdG8gdGhlIGRlZmF1bHQgdmFsdWUgKHNlZS4gJ1BjZEJhc2ljUmVnaXN0ZXJDb25maWd1cmF0aW9uKCknKSAgIAorICAgd2F0ZXJMZXZlbEJhY2t1cCA9IFJlYWRSQyhXYXRlckxldmVsUmVnKTsKKyAgIFdyaXRlUkMoV2F0ZXJMZXZlbFJlZywgMHgyMCk7CisKKyAgIC8vIHNhdmUgaW5mbyBzdHJ1Y3R1cmVzIHRvIG1vZHVsZSBwb2ludGVycworICAgTXBJc3JJbmZvID0gaW5mbzsgIAorICAgTXBJc3JPdXQgID0gc2VuZDsKKyAgIE1wSXNySW4gICA9IHJjdjsKKworICAgaW5mby0+aXJxU291cmNlID0gMHgwOyAvLyByZXNldCBpbnRlcnJ1cHQgZmxhZ3MKKworICAgLy8gZGVwZW5kaW5nIG9uIHRoZSBjb21tYW5kIGNvZGUsIGFwcHJvcHJpYXRlIGludGVycnVwdHMgYXJlIGVuYWJsZWQgKGlycUVuKQorICAgLy8gYW5kIHRoZSBjb21taXQgaW50ZXJydXB0IGlzIGNob29zZW4gKHdhaXRGb3IpLgorICAgc3dpdGNoKGNtZCkKKyAgIHsgCisgICAgICBjYXNlIFBDRF9JRExFOiAgICAgICAgICAgICAgICAgICAvLyBub3RoaW5nIGVsc2UgcmVxdWlyZWQKKyAgICAgICAgIGlycUVuID0gMHgwMDsKKyAgICAgICAgIHdhaXRGb3IgPSAweDAwOworICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIFBDRF9BVVRIRU5UOiAgICAgICAgICAgICAgICAvL0lkbGVJUnEKKyAgICAgICAgIGlycUVuICAgPSAweDEyOworICAgICAgICAgd2FpdEZvciA9IDB4MTA7IAorICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIFBDRF9UUkFOU0NFSVZFOiAgICAgICAgICAgICAvLyBUeElycSwgUnhJcnEsIElkbGVJUnEgYW5kIExvQWxlcnQKKyAgICAgICAgIGluZm8tPm5CaXRzUmVjZWl2ZWQgPSAtKChSZWFkUkMoQml0RnJhbWluZ1JlZykgPj4gNCkmMHgwNyk7CisgICAgICAgICBpcnFFbiA9IDB4Nzc7CisgICAgICAgICB3YWl0Rm9yID0gMHgzMDsKKyAgICAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgIHN0YXR1cyA9IE1JX1VOS05PV05fQ09NTUFORDsKKyAgICAgICAgIGJyZWFrOworICAgfSAKKyAgIAorICAgaWYgKHN0YXR1cyA9PSBNSV9PSykKKyAgIHsgICAgICAgICAgICAgICAKKyAgICAgIC8vIEluaXRpYWxpemUgdUMgVGltZXIgZm9yIGdsb2JhbCBUaW1lb3V0IG1hbmFnZW1lbnQKKyAgICAgIGlycUVuIHw9IDB4MDE7ICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWx3YXlzIGVuYWJsZSB0aW1vdXQgaXJxCisgICAgICB3YWl0Rm9yIHw9IDB4MDE7ICAgICAgICAgICAgICAgICAgICAgIC8vIGFsd2F5cyB3YWl0IGZvciB0aW1lb3V0IAorCisgICAgICBXcml0ZVJDKENvbUlFblJlZywgaXJxRW4pOyAgLy9uZWNlc3NhcnkgaW50ZXJydXB0cyBhcmUgZW5hYmxlZCAvLyBjb3VudCB1cCBmcm9tIDEKKyAgICAgIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgbmJ5dGVzOworCisJCQlpZihNcElzckluZm8tPm5CeXRlc1RvU2VuZD5ERUZfRklGT19MRU5HVEgpCisJCQl7CisJCQkJbmJ5dGVzID0gREVGX0ZJRk9fTEVOR1RIOworCQkJfQorCQkJZWxzZQorCQkJeworCQkJCW5ieXRlcyA9IE1wSXNySW5mby0+bkJ5dGVzVG9TZW5kOworICAgICAgICAgICAgICAgQ2xlYXJCaXRNYXNrKENvbUlFblJlZywgMHgwNCk7IC8vIGRpc2FibGUgTG9BbGVydCBJUlEKKwkJCX0KKyAgICAgICAgICAgIC8vIHdyaXRlIHJlbWFpbmluZyBkYXRhIHRvIHRoZSBGSUZPCisgICAgICAgICAgICBmb3IgKCBpID0gMDtpIDwgbmJ5dGVzO2krKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgIFdyaXRlUkMoRklGT0RhdGFSZWcsIE1wSXNyT3V0W01wSXNySW5mby0+bkJ5dGVzU2VudF0pOworICAgICAgICAgICAgICAgTXBJc3JJbmZvLT5uQnl0ZXNTZW50Kys7CisgICAgICAgICAgICB9CisgICAgICB9CisKKyAgICAgIFdyaXRlUkMoQ29tbWFuZFJlZywgY21kKTsgICAgICAgICAgICAgICAvL3N0YXJ0IGNvbW1hbmQgCisgICAgICBpZihjbWQgPT0gUENEX1RSQU5TQ0VJVkUpIAorCSAgICAgIFNldEJpdE1hc2soQml0RnJhbWluZ1JlZywgMHg4MCk7ICAgIC8vc3RhcnQgc2VuZAorCisgICAgICAvLyB3YWl0IGZvciBjb21tbWFuZCBjb21wbGV0aW9uCisgICAgICAvLyBhIGNvbW1hbmQgaXMgY29tcGxldGVkLCBpZiB0aGUgY29ycmVzcG9uZGluZyBpbnRlcnJ1cHQgb2NjdXJzCisgICAgICAvLyBvciBhIHRpbWVvdXQgaXMgc2lnbmFsZWQgIAorICAgICAgd2hpbGUoMSkKKyAgICAgIHsKKyAgICAgICAgIFNpbmdsZVJlc3BvbnNlSXNyKCk7CisgICAgICAgICBpZih3YWl0Rm9yJjB4MjApCisgICAgICAgICB7CisgICAgICAgICAgICBpZihNcElzckluZm8tPmlycVNvdXJjZSYweDIwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIE1wSXNySW5mby0+aXJxU291cmNlICY9IDB4MDE7CisgICAgICAgICAgICAgICAgaWYoTXBJc3JJbmZvLT5zdGF0dXMgPT0gTUlfTk9UQUdFUlIpCisgICAgICAgICAgICAgICAgICAgIE1wSXNySW5mby0+c3RhdHVzID0gTUlfT0s7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICB9CisgICAgICAgICBlbHNlCisgICAgICAgICB7CisgICAgICAgICAgICBpZihNcElzckluZm8tPmlycVNvdXJjZSYweDEwKSBicmVhazsKKyAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgaWYoTXBJc3JJbmZvLT5pcnFTb3VyY2UmMHgwMSkgYnJlYWs7CisKKwkJIGlmKChpKyspID4gMzAwMCkgYnJlYWs7CisgICAgICB9CisKKyAgICAgIFNldEJpdE1hc2soQ29udHJvbFJlZywgMHg4MCk7ICAgICAgICAgLy8gc3RvcCB0aW1lciBub3cKKyAgICAgIFdyaXRlUkMoQ29tSUVuUmVnLCAwKTsgICAgICAgICAgICAgICAgLy8gZGlzYWJsZSBhbGwgaW50ZXJydXB0cworICAgICAgV3JpdGVSQyhDb21JcnFSZWcsIDB4ODApOyAgICAgICAgICAgICAvLyBjbGVhciBhbGwgaW50ZXJydXB0IHJlcXVlc3RzCisgICAgICAKKyAgICAgIFdyaXRlUkMoQ29tbWFuZFJlZywgUENEX0lETEUpOyAgICAgICAgLy8gcmVzZXQgY29tbWFuZCByZWdpc3RlcgorCisgICAgICBzdGF0dXMgPSBNcElzckluZm8tPnN0YXR1czsgICAgICAgICAgLy8gc2V0IHN0YXR1cworICAgICAgaWYgKE1wSXNySW5mby0+aXJxU291cmNlICYgMHgwMSkgICAgIC8vIGlmIHRpbWVvdXQgZXhwaXJlZCAtIGxvb2sgYXQgb2xkIGVycm9yIHN0YXRlCisgICAgICAgICBNcElzckluZm8tPmVyckZsYWdzIHw9IE1wSXNySW5mby0+c2F2ZUVycm9yU3RhdGU7CisgICAgICBNcElzckluZm8tPmVyckZsYWdzICY9ICB2YWxpZEVycm9yRmxhZ3M7CisgICAgICBpZiAoTXBJc3JJbmZvLT5lcnJGbGFncykgLy8gZXJyb3Igb2NjdXJlZAorICAgICAgeworICAgICAgICAgaWYgKE1wSXNySW5mby0+ZXJyRmxhZ3MgJiAweDA4KSAgIC8vIGNvbGxpc2lvbiBkZXRlY3RlZAorICAgICAgICAgeworICAgICAgICAgICAgaW5mby0+Y29sbFBvcyA9IFJlYWRSQyhDb2xsUmVnKSYweDFGOyAvLyByZWFkIGNvbGxpc2lvbiBwb3NpdGlvbgorICAgICAgICAgICAgc3RhdHVzID0gTUlfQ09MTEVSUjsKKyAgICAgICAgIH0KKyAgICAgICAgIGVsc2UKKyAgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChNcElzckluZm8tPmVyckZsYWdzICYgMHgwMikgICAvLyBwYXJpdHkgZXJyb3IKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgIHN0YXR1cyA9IE1JX1BBUklUWUVSUjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAgICAgICAgIGlmIChNcElzckluZm8tPmVyckZsYWdzICYgMHgwMSkgICAvLyBmcmFtaW5nIGVycm9yCisgICAgICAgICB7CisgICAgICAgICAgICBzdGF0dXMgPSBNSV9GUkFNSU5HRVJSOworICAgICAgICAgfQorICAgICAgICAgZWxzZQorICAgICAgICAgaWYgKE1wSXNySW5mby0+ZXJyRmxhZ3MgJiAweDEwKSAgIC8vIEZJRk8gb3ZlcmZsb3cKKyAgICAgICAgIHsKKyAgICAgICAgICAgIEZsdXNoRklGTygpOworICAgICAgICAgICAgc3RhdHVzID0gTUlfT1ZGTEVSUjsKKyAgICAgICAgIH0KKyAgICAgICAgIGVsc2UKKyAgICAgICAgIGlmIChNcElzckluZm8tPmVyckZsYWdzICYgMHgwNCkgLy8gQ1JDIGVycm9yCisgICAgICAgICB7CisgICAgICAgICAgICBzdGF0dXMgPSBNSV9DUkNFUlI7CisgICAgICAgICB9CisgICAgICAgICBlbHNlCisgICAgICAgICBpZiAoc3RhdHVzID09IE1JX09LKQorICAgICAgICAgICAgc3RhdHVzID0gTUlfTllfSU1QTEVNRU5URUQ7CisgICAgICAgICAvLyBrZXkgZXJyb3Igb2NjdXJlcyBhbHdheXMsIGJlY2F1c2Ugb2YgCisgICAgICAgICAvLyBtaXNzaW5nIGNyeXB0byAxIGtleXMgbG9hZGVkCisgICAgICB9CisgICAgICAvLyBpZiB0aGUgbGFzdCBjb21tYW5kIHdhcyBUUkFOU0NFSVZFLCB0aGUgbnVtYmVyIG9mIAorICAgICAgLy8gcmVjZWl2ZWQgYml0cyBtdXN0IGJlIGNhbGN1bGF0ZWQgLSBldmVuIGlmIGFuIGVycm9yIG9jY3VyZWQKKyAgICAgIGlmIChjbWQgPT0gUENEX1RSQU5TQ0VJVkUgfHwgY21kID09IFBDRF9SRUNFSVZFKQorICAgICAgeworICAgICAgICAgLy8gbnVtYmVyIG9mIGJpdHMgaW4gdGhlIGxhc3QgYnl0ZQorICAgICAgICAgbGFzdEJpdHMgPSBSZWFkUkMoQ29udHJvbFJlZykgJiAweDA3OworICAgICAgICAgaWYgKGxhc3RCaXRzKQorICAgICAgICAgICAgaW5mby0+bkJpdHNSZWNlaXZlZCArPSAoaW5mby0+bkJ5dGVzUmVjZWl2ZWQtMSkgKiA4ICsgbGFzdEJpdHM7CisgICAgICAgICBlbHNlCisgICAgICAgICAgICBpbmZvLT5uQml0c1JlY2VpdmVkICs9IGluZm8tPm5CeXRlc1JlY2VpdmVkICogODsKKyAgICAgIH0KKyAgIH0KKworICAgTXBJc3JJbmZvID0gMDsgICAgICAgICAvLyByZXNldCBpbnRlcmZhY2UgdmFyaWFibGVzIGZvciBJU1IKKyAgIE1wSXNyT3V0ICA9IDA7CisgICBNcElzckluICAgPSAwOyAKKworICAgLy8gcmVzdG9yZSB0aGUgcHJldmlvdXMgdmFsdWUgZm9yIHRoZSBGSUZPIHdhdGVyIGxldmVsCisgICBXcml0ZVJDKFdhdGVyTGV2ZWxSZWcsIHdhdGVyTGV2ZWxCYWNrdXApOworCisgICByZXR1cm4gc3RhdHVzOworfSAgCisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vICAgICAgICBTIEUgVCAgIEQgRSBGIEEgVSBMIFQgICAgQyBPIE0gTSAgIEEgVCBUIFIgSSBCIFMKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCit1bnNpZ25lZCBzaG9ydCBNZjUwMFBjZFNldERlZmF1bHRBdHRyaWIodm9pZCkKK3sKKyAgIFdyaXRlUkMoVE1vZGVSZWcsMHg4RCk7CisgICBXcml0ZVJDKFRQcmVzY2FsZXJSZWcsMHgzRSk7CisgICBXcml0ZVJDKFRSZWxvYWRSZWdILDB4MDApOyAKKyAgIFdyaXRlUkMoVFJlbG9hZFJlZ0wsMHg2NCk7CisgICBXcml0ZVJDKFR4QXNrUmVnLDB4NDApOworICAgV3JpdGVSQyhNb2RlUmVnLDB4M0QpOworICAgcmV0dXJuIE1JX09LOworfQorCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8gICAgICAgICAgTSBJIEYgQSBSIEUgICAgQSBOIFQgSSBDIE8gTCBMIEkgUyBJIE8gTgorLy8gZm9yIGV4dGVuZGVkIHNlcmlhbCBudW1iZXJzCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwordW5zaWduZWQgc2hvcnQgTWY1MDBQaWNjQ2FzY0FudGljb2xsICh1bnNpZ25lZCBjaGFyIHNlbGVjdF9jb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgYmNudCwgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqc25yKSAgICAgICAKK3sKKyAgIHVuc2lnbmVkIHNob3J0ICBzdGF0dXMgPSBNSV9PSzsKKyAgIGNoYXIgIHNucl9pbls0XTsgICAgICAgICAvLyBjb3B5IG9mIHRoZSBpbnB1dCBwYXJhbWV0ZXIgc25yCisgICBjaGFyICBuYnl0ZXMgPSAwOyAgICAgICAgLy8gaG93IG1hbnkgYnl0ZXMgcmVjZWl2ZWQKKyAgIGNoYXIgIG5iaXRzID0gMDsgICAgICAgICAvLyBob3cgbWFueSBiaXRzIHJlY2VpdmVkCisgICBjaGFyICBjb21wbGV0ZSA9IDA7ICAgICAgLy8gY29tcGxldGUgc25yIHJlY2l2ZWQKKyAgIHNob3J0IGkgICAgICAgID0gMDsKKyAgIGNoYXIgIGJ5dGVPZmZzZXQgPSAwOworICAgdW5zaWduZWQgY2hhciBzbnJfY3JjOyAgIC8vIGNoZWNrIGJ5dGUgY2FsY3VsYXRpb24KKyAgIHVuc2lnbmVkIGNoYXIgc25yX2NoZWNrOworICAgdW5zaWduZWQgY2hhciBkdW1teVNoaWZ0MTsgICAgICAgLy8gZHVtbXkgYnl0ZSBmb3Igc25yIHNoaWZ0CisgICB1bnNpZ25lZCBjaGFyIGR1bW15U2hpZnQyOyAgICAgICAvLyBkdW1teSBieXRlIGZvciBzbnIgc2hpZnQgICAKKyAKKyAgIC8vKioqKioqKioqKioqKiBJbml0aWFsaXNpZXJ1bmcgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICBpZiAoKHN0YXR1cyA9IE1mNTAwUGNkU2V0RGVmYXVsdEF0dHJpYigpKSA9PSBNSV9PSykKKyAgIHsKKyAgICAgIFBjZFNldFRtbygxMDYpOworICAgICAgCisgICAgICBtZW1jcHkoc25yX2luLHNuciw0KTsgICAKKworCSAgQ2xlYXJCaXRNYXNrKFN0YXR1czJSZWcsIDB4MDgpOworICAgICAgV3JpdGVSQyhCaXRGcmFtaW5nUmVnLCAwKTsKKyAgICAgIENsZWFyQml0TWFzayhDb2xsUmVnLCAweDA4KTsKKyAgICAgICAgIAorICAgICAgLy8qKioqKioqKioqKioqKiBBbnRpY29sbGlzaW9uIExvb3AgKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICBjb21wbGV0ZT0wOworICAgICAgd2hpbGUgKCFjb21wbGV0ZSAmJiAoc3RhdHVzID09IE1JX09LKSApCisgICAgICB7CisgICAgICAgICAvLyBpZiB0aGVyZSBpcyBhIGNvbW11bmljYXRpb24gcHJvYmxlbSBvbiB0aGUgUkYgaW50ZXJmYWNlLCBiY250IAorICAgICAgICAgLy8gY291bGQgYmUgbGFyZ2VyIHRoYW4gMzIgLSBmb2xvd2luZyBsb29wcyB3aWxsIGJlIGRlZmVjdGl2ZS4KKyAgICAgICAgIGlmIChiY250ID4gMzIpCisgICAgICAgICB7CisgICAgICAgICAgICBzdGF0dXMgPSBNSV9XUk9OR19QQVJBTUVURVJfVkFMVUU7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgIH0KKyAgICAgICAgIFJlc2V0SW5mbyhNSW5mbyk7CisgICAgICAgICBNSW5mby5jbWQgPSBzZWxlY3RfY29kZTsgICAvLyBwYXNzIGNvbW1hbmQgZmxhZyB0byBJU1IgICAgICAgIAorICAgICAgICAgTUluZm8uRGlzYWJsZURGID0gMTsKKyAgICAgICAgIC8vV3JpdGVSQyhSZWdDaGFubmVsUmVkdW5kYW5jeSwweDAzKTsgLy8gUnhDUkMgYW5kIFR4Q1JDIGRpc2FibGUsIHBhcml0eSBlbmFibGUKKyAgICAgICAgIENsZWFyQml0TWFzayhUeE1vZGVSZWcsIDB4ODApOworICAgICAgICAgQ2xlYXJCaXRNYXNrKFJ4TW9kZVJlZywgMHg4MCk7CisgICAgICAgICBuYml0cyA9IGJjbnQgJSA4OyAgIC8vIHJlbWFpbmluZyBudW1iZXIgb2YgYml0cworICAgICAgICAgaWYgKG5iaXRzKQorICAgICAgICAgeworICAgICAgICAgICAgV3JpdGVSQyhCaXRGcmFtaW5nUmVnLCBuYml0cyA8PCA0IHwgbmJpdHMpOyAvLyBUeExhc3RCaXRzL1J4QWxpZ24gYXVmIG5iX2JpCisgICAgICAgICAgICBuYnl0ZXMgPSBiY250IC8gOCArIDE7ICAgCisgICAgICAgICAgICAvLyBudW1iZXIgb2YgYnl0ZXMga25vd24KKyAgIAorICAgICAgICAgICAgLy8gaW4gb3JkZXIgdG8gc29sdmUgYW4gaW5jb25zaXN0YW5jeSBpbiB0aGUgYW50aWNvbGxpc2lvbiBzZXF1ZW5jZQorICAgICAgICAgICAgLy8gKHdpbGwgYmUgc29sdmVkIHNvb24pLCB0aGUgY2FzZSBvZiA3IGJpdHMgaGFzIHRvIGJlIHRyZWF0ZWQgaW4gYQorICAgICAgICAgICAgLy8gc2VwYXJhdGUgd2F5CisgICAgICAgICAgICBpZiAobmJpdHMgPT0gNyApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAJTUluZm8uUnhBbGlnbldBID0gMTsKKyAgICAgICAgICAgICAgIE1JbmZvLm5CaXRzUmVjZWl2ZWQgPSA3OyAvLyBzZXQgZmxhZyBmb3IgNyBiaXQgYW50aWNvbGwsIHdoaWNoIGlzIGV2YWx1YXRlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluIHRoZSBJU1JuQml0c1JlY2VpdmVkICAgICAgICAKKyAgICAgICAgICAgICAgIFdyaXRlUkMoQml0RnJhbWluZ1JlZywgbmJpdHMpOyAvLyByZXNldCBSeEFsaWduIHRvIHplcm8KKyAgICAgICAgICAgIH0KKyAgICAgICAgIH0gCisgICAgICAgICBlbHNlCisgICAgICAgICB7CisgICAgICAgICAgICBuYnl0ZXMgPSBiY250IC8gODsKKyAgICAgICAgIH0KKyAgCisgICAgICAgICBNU25kQnVmZmVyWzBdID0gc2VsZWN0X2NvZGU7CisgICAgICAgICBNU25kQnVmZmVyWzFdID0gMHgyMCArICgoYmNudC84KSA8PCA0KSArIG5iaXRzOyAvL251bWJlciBvZiBieXRlcyBzZW5kCisgICAgICAgICAgICAgICAgICAKKyAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuYnl0ZXM7IGkrKykgIC8vIFNlbmRlIEJ1ZmZlciBiZXNjaHJlaWJlbgorICAgICAgICAgeworICAgICAgICAgICAgTVNuZEJ1ZmZlcltpICsgMl0gPSBzbnJfaW5baV07CisgICAgICAgICB9CisgICAgICAgICBNSW5mby5uQnl0ZXNUb1NlbmQgICA9IDIgKyBuYnl0ZXM7ICAgIAorCisgICAgICAgICBzdGF0dXMgPSBQY2RTaW5nbGVSZXNwb25zZUNtZChQQ0RfVFJBTlNDRUlWRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBNU25kQnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1SY3ZCdWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJk1JbmZvKTsKKworICAgICAgICAgIC8vIGluIG9yZGVyIHRvIHNvbHZlIGFuIGluY29uc2lzdGFuY3kgaW4gdGhlIGFudGljb2xsaXNpb24gc2VxdWVuY2UKKyAgICAgICAgICAvLyAod2lsbCBiZSBzb2x2ZWQgc29vbiksIHRoZSBjYXNlIG9mIDcgYml0cyBoYXMgdG8gYmUgdHJlYXRlZCBpbiBhCisgICAgICAgICAgLy8gc2VwYXJhdGUgd2F5IAorICAgICAgICAgaWYgKE1JbmZvLlJ4QWxpZ25XQSkKKyAgICAgICAgIHsKKyAgICAgICAgICAgIC8vIHJlb3JkZXIgcmVjZWl2ZWQgYml0cworICAgICAgICAgICAgZHVtbXlTaGlmdDEgPSAweDAwOworICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IE1JbmZvLm5CeXRlc1JlY2VpdmVkOyBpKyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZHVtbXlTaGlmdDIgPSBNUmN2QnVmZmVyW2ldOworICAgICAgICAgICAgICAgIE1SY3ZCdWZmZXJbaV0gPSAoZHVtbXlTaGlmdDEgPj4gKGkrMSkpIHwgKE1SY3ZCdWZmZXJbaV0gPDwgKDctaSkpOworICAgICAgICAgICAgICAgIGR1bW15U2hpZnQxID0gZHVtbXlTaGlmdDI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBNSW5mby5uQml0c1JlY2VpdmVkIC09IE1JbmZvLm5CeXRlc1JlY2VpdmVkOyAvLyBzdWJ0cmFjdCByZWNlaXZlZCBwYXJpdHkgYml0cworICAgICAgICAgICAgLy8gcmVjYWxjdWxhdGlvbiBvZiBjb2xsaXNpb24gcG9zaXRpb24KKyAgICAgICAgICAgIGlmICggTUluZm8uY29sbFBvcyApIE1JbmZvLmNvbGxQb3MgKz0gNyAtIChNSW5mby5jb2xsUG9zICsgNikgLyA5OworICAgICAgICAgfQorICAgICAgICAgCisgICAgICAgICBpZiAoIHN0YXR1cyA9PSBNSV9PSyB8fCBzdGF0dXMgPT0gTUlfQ09MTEVSUikgICAgLy8gbm8gb3RoZXIgb2NjdXJlZAorICAgICAgICAgeworCisgICAgICAgICAgICBieXRlT2Zmc2V0ID0gMDsKKyAgICAgICAgICAgIGlmICggbmJpdHMgIT0gMCApICAgICAgICAgICAvLyBsYXN0IGJ5dGUgd2FzIG5vdCBjb21wbGV0ZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgc25yX2luW25ieXRlcyAtIDFdID0gc25yX2luW25ieXRlcyAtIDFdIHwgTVJjdkJ1ZmZlclswXTsKKyAgICAgICAgICAgICAgIGJ5dGVPZmZzZXQgPSAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZm9yICggaSA9MDsgaSA8ICg0IC0gbmJ5dGVzKTsgaSsrKSAgICAgCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICBzbnJfaW5bbmJ5dGVzICsgaV0gPSBNUmN2QnVmZmVyW2kgKyBieXRlT2Zmc2V0XTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIFIgZSBzIHAgbyBuIHMgZSAgIFAgciBvIGMgZSBzIHMgaSBuIGcgICAKKyAgICAgICAgICAgIGlmICggTUluZm8ubkJpdHNSZWNlaXZlZCAhPSAoNDAgLSBiY250KSApIC8vIG5vdCA1IGJ5dGVzIGFuc3dlcmVkCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICBzdGF0dXMgPSBNSV9CSVRDT1VOVEVSUjsKKyAgICAgICAgICAgIH0gCisgICAgICAgICAgICBlbHNlIAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgaWYgKHN0YXR1cyAhPSBNSV9DT0xMRVJSICkgLy8gbm8gZXJyb3IgYW5kIG5vIGNvbGxpc2lvbgorICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgLy8gU2VyQ2ggY2hlY2sKKyAgICAgICAgICAgICAgICAgIHNucl9jcmMgPSBzbnJfaW5bMF0gXiBzbnJfaW5bMV0gXiBzbnJfaW5bMl0gXiBzbnJfaW5bM107CisgICAgICAgICAgICAgICAgICBzbnJfY2hlY2sgPSBNUmN2QnVmZmVyW01JbmZvLm5CeXRlc1JlY2VpdmVkIC0gMV07CisgICAgICAgICAgICAgICAgICBpZiAoc25yX2NyYyAhPSBzbnJfY2hlY2spCisgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICBzdGF0dXMgPSBNSV9TRVJOUkVSUjsKKyAgICAgICAgICAgICAgICAgIH0gCisgICAgICAgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZSA9IDE7CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAgIC8vIGNvbGxpc2lvbiBvY2N1cmVkCisgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICBiY250ID0gYmNudCArIE1JbmZvLmNvbGxQb3MgLSBuYml0czsKKyAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IE1JX09LOworICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICB9CisgICAvLyB0cmFuc2ZlciBzbnJfaW4gdG8gc25yIC0gZXZlbiBpbiBjYXNlIG9mIGFuIGVycm9yIC0gZm9yIAorICAgLy8gZGVidWdnaW5nIHJlYXNvbnMKKyAgIG1lbWNweShzbnIsc25yX2luLDQpOworCisgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS1FaW5zdGVsbHVuZ2VuIGF1cyBJbml0aWFsaXNpZXJ1bmcgcnVlY2tzZXR6ZW4gCisgICBTZXRCaXRNYXNrKENvbGxSZWcsIDB4ODApOworICAgCisgICByZXR1cm4gc3RhdHVzOyAgCit9CisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLyAgICAgICAgICBNIEkgRiBBIFIgRSAgIEMgTyBNIE0gTyBOICAgUiBFIFEgVSBFIFMgVCAKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCit1bnNpZ25lZCBzaG9ydCBNZjUwMFBpY2NDb21tb25SZXF1ZXN0KHVuc2lnbmVkIGNoYXIgcmVxX2NvZGUsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKmF0cSkKK3sKKyAgIHVuc2lnbmVkIHNob3J0IHN0YXR1cyA9IE1JX09LOworCisgICAgLy8qKioqKioqKioqKioqIGluaXRpYWxpemUgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICBpZiAoKHN0YXR1cyA9IE1mNTAwUGNkU2V0RGVmYXVsdEF0dHJpYigpKSA9PSBNSV9PSykKKyAgIHsKKyAgIAorICAgICAgUGNkU2V0VG1vKDYwKTsgCisgICAgICAKKwkgIENsZWFyQml0TWFzayhUeE1vZGVSZWcsIDB4ODApOyAgICAgICAvLyBSeENSQyBhbmQgVHhDUkMgZGlzYWJsZSwgcGFyaXR5IGVuYWJsZQorCSAgQ2xlYXJCaXRNYXNrKFJ4TW9kZVJlZywgMHg4MCk7CisJICBDbGVhckJpdE1hc2soUkZVMUQsIDB4MTApOworICAgICAgCisgICAgICBDbGVhckJpdE1hc2soU3RhdHVzMlJlZywgMHgwOCk7ICAgICAgLy8gZGlzYWJsZSBjcnlwdG8gMSB1bml0ICAgCisgICAgICBXcml0ZVJDKEJpdEZyYW1pbmdSZWcsIDB4MDcpOyAgICAgICAgLy8gc2V0IFR4TGFzdEJpdHMgdG8gNyAKKyAgICAgIFNldEJpdE1hc2soVHhDb250cm9sUmVnLDB4MDMpOworICAgICAgCisgICAgICBSZXNldEluZm8oTUluZm8pOyAgIAorICAgICAgTVNuZEJ1ZmZlclswXSA9IHJlcV9jb2RlOworICAgICAgTUluZm8ubkJ5dGVzVG9TZW5kICAgPSAxOyAgIAorICAgICAgTUluZm8uRGlzYWJsZURGID0gMTsKKyAgICAgIHN0YXR1cyA9IFBjZFNpbmdsZVJlc3BvbnNlQ21kKFBDRF9UUkFOU0NFSVZFLAorICAgICAgICAgICAgICAgICAgICAgICAgIE1TbmRCdWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgTVJjdkJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAmTUluZm8pOworICAgICAgaWYgKChzdGF0dXMgPT0gTUlfT0spICYmIChNSW5mby5uQml0c1JlY2VpdmVkICE9IDE2KSkgLy8gMiBieXRlcyBleHBlY3RlZAorICAgICAgeworICAgICAgICAgc3RhdHVzID0gTUlfQklUQ09VTlRFUlI7CisgICAgICB9IAorICAgICAgaWYgKChzdGF0dXMgPT0gTUlfQ09MTEVSUikgJiYgKE1JbmZvLm5CaXRzUmVjZWl2ZWQgPT0gMTYpKSAvLworICAgICAgICAgc3RhdHVzID0gTUlfT0s7IC8vIGFsbCByZWNlaXZlZCB0YWctdHlwZXMgYXJlIGNvbWJpbmVkIHRvIHRoZSAxNiBiaXQKKyAgICAgICAgIAorICAgICAgLy8gaW4gYW55IGNhc2UsIGNvcHkgcmVjZWl2ZWQgZGF0YSB0byBvdXRwdXQgLSBmb3IgZGVidWdnaW5nIHJlYXNvbnMKKyAgICAgIGlmIChNSW5mby5uQnl0ZXNSZWNlaXZlZCA+PSAyKQorICAgICAgeworICAgICAgICAgbWVtY3B5KGF0cSwodW5zaWduZWQgY2hhciopTVJjdkJ1ZmZlciwyKTsgICAgICAKKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgIHsKKyAgICAgICAgIGlmIChNSW5mby5uQnl0ZXNSZWNlaXZlZCA9PSAxKQorICAgICAgICAgICAgYXRxWzBdID0gTVJjdkJ1ZmZlclswXTsKKyAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGF0cVswXSA9IDB4MDA7CisgICAgICAgICBhdHFbMV0gPSAweDAwOworICAgICAgfQorICAgfQorICAgcmV0dXJuIHN0YXR1czsgCit9CisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8gICAgICAgICAgTSBJIEYgQSBSIEUgICAgQyBBIFMgQyBBIEQgRSBEICAgUyBFIEwgRSBDIFQgCisvLyAgZm9yIGV4dGVuZGVkIHNlcmlhbCBudW1iZXIKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCit1bnNpZ25lZCBzaG9ydCBNZjUwMFBpY2NDYXNjU2VsZWN0KHVuc2lnbmVkIGNoYXIgc2VsZWN0X2NvZGUsIAorICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqc25yLAorICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqc2FrKQoreworICAgdW5zaWduZWQgc2hvcnQgICBzdGF0dXMgPSBNSV9PSzsgCisKKyAgIGlmICgoc3RhdHVzID0gTWY1MDBQY2RTZXREZWZhdWx0QXR0cmliKCkpID09IE1JX09LKQorICAgeworICAgICAgUGNkU2V0VG1vKDEwNik7CisgICAgCisgICAgICAvL1dyaXRlUkMoUmVnQ2hhbm5lbFJlZHVuZGFuY3ksMHgwRik7IC8vIFJ4Q1JDLFR4Q1JDLCBQYXJpdHkgZW5hYmxlCisgICAgICAvL0NsZWFyQml0TWFzayhSZWdDb250cm9sLDB4MDgpOyAgICAvLyBkaXNhYmxlIGNyeXB0byAxIHVuaXQKKyAgIAorICAgICAgLy8qKioqKioqKioqKioqIENtZCBTZXF1ZW5jZSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIAorICAgICAgUmVzZXRJbmZvKE1JbmZvKTsgICAKKyAgICAgIE1TbmRCdWZmZXJbMF0gPSBzZWxlY3RfY29kZTsKKyAgICAgIE1TbmRCdWZmZXJbMV0gPSAweDcwOyAgICAgICAgIC8vIG51bWJlciBvZiBieXRlcyBzZW5kCisgICAgICAKKyAgICAgIG1lbWNweSgodW5zaWduZWQgY2hhciopTVNuZEJ1ZmZlciArIDIsc25yLDQpOworICAgICAgTVNuZEJ1ZmZlcls2XSA9IE1TbmRCdWZmZXJbMl0gCisgICAgICAgICAgICAgICAgICAgICAgXiBNU25kQnVmZmVyWzNdIAorICAgICAgICAgICAgICAgICAgICAgIF4gTVNuZEJ1ZmZlcls0XSAKKyAgICAgICAgICAgICAgICAgICAgICBeIE1TbmRCdWZmZXJbNV07CisgICAgICBNSW5mby5uQnl0ZXNUb1NlbmQgICA9IDc7CisgICAgICBNSW5mby5EaXNhYmxlREYgPSAxOworCisJICBXcml0ZVJDKE1vZGVSZWcsIDB4MDEpOworCSAgU2V0Qml0TWFzayhUeE1vZGVSZWcsIDB4ODApOworCSAgU2V0Qml0TWFzayhSeE1vZGVSZWcsIDB4ODApOworCSAgQ2xlYXJCaXRNYXNrKFJGVTFELCAweDEwKTsKKwkgIENsZWFyQml0TWFzayhTdGF0dXMyUmVnLCAweDA4KTsKKyAgICAgIHN0YXR1cyA9IFBjZFNpbmdsZVJlc3BvbnNlQ21kKFBDRF9UUkFOU0NFSVZFLAorICAgICAgICAgICAgICAgICAgICAgICAgICBNU25kQnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBNUmN2QnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmTUluZm8pOworICAgCisgICAgICAqc2FrID0gMDsgICAKKyAgICAgIGlmIChzdGF0dXMgPT0gTUlfT0spICAgIC8vIG5vIHRpbWVvdXQgb2NjdXJlZAorICAgICAgeworICAgICAgICAgaWYgKE1JbmZvLm5CaXRzUmVjZWl2ZWQgIT0gOCkgICAgLy8gbGFzdCBieXRlIGlzIG5vdCBjb21wbGV0ZQorICAgICAgICAgeworICAgICAgICAgICAgc3RhdHVzID0gTUlfQklUQ09VTlRFUlI7CisgICAgICAgICB9CisgICAgICAgICBlbHNlCisgICAgICAgICB7CisgICAgICAgICAgICBtZW1jcHkoTUxhc3RTZWxlY3RlZFNucixzbnIsNCk7ICAgICAgICAgICAgCisgICAgICAgICB9CisgICAgICB9CisgICAgICAvLyBjb3B5IHJlY2VpdmVkIGRhdGEgaW4gYW55IGNhc2UgLSBmb3IgZGVidWdnaW5nIHJlYXNvbnMKKyAgICAgICpzYWsgPSBNUmN2QnVmZmVyWzBdOworICAgfQorICAgcmV0dXJuIHN0YXR1czsKK30KKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vICAgICAgIE0gSSBGIEEgUiBFICAgUCBJIEMgQyAgIEEgQyBUIEkgViBBIFQgSSBPIE4gICAgUyBFIFEgRSBOIEMgRQorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KK3Vuc2lnbmVkIHNob3J0IE1mNTAwUGljY0FjdGl2YXRlSWRsZSh1bnNpZ25lZCBjaGFyIGJyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqYXRxLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKnNhaywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICp1aWQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqdWlkX2xlbikKK3sKKyAgdW5zaWduZWQgY2hhciBjYXNjYWRlX2xldmVsOworICB1bnNpZ25lZCBjaGFyIHNlbF9jb2RlOworICB1bnNpZ25lZCBjaGFyIHVpZF9pbmRleDsKKyAgdW5zaWduZWQgc2hvcnQgc3RhdHVzID0gTUlfT0s7CisgIHVuc2lnbmVkIGNoYXIgY21kQVNFTDsKKworICAqdWlkX2xlbiAgICAgID0gMDsKKworICAvL2NhbGwgYWN0aXZhdGlvbiB3aXRoIGRlZi4gZGl2cworICBzdGF0dXMgPSBNZjUwMFBjZFNldERlZmF1bHRBdHRyaWIoKTsKKyAgaWYgKHN0YXR1cyA9PSBNSV9PSykKKyAgeworICAgICBzdGF0dXMgPSBNZjUwMFBpY2NDb21tb25SZXF1ZXN0KFBJQ0NfUkVRSURMLGF0cSk7CisgIH0KKyAgaWYgKHN0YXR1cyA9PSBNSV9PSykKKyAgeworICAgICBpZigoYXRxWzBdICYgMHgxRikgPT0gMHgwMCkgLy8gY2hlY2sgbG93ZXIgNSBiaXRzLCBmb3IgdGFnLXR5cGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFsbCB0YWdzIHdpdGhpbiB0aGlzIDUgYml0cyBoYXZlIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwcm92aWRlIGEgYml0d2lzZSBhbnRpY29sbGlzaW9uCisgICAgIHsKKyAgICAgICAgc3RhdHVzID0gTUlfTk9CSVRXSVNFQU5USUNPTEw7CisgICAgIH0KKyAgfQorICBpZiAoc3RhdHVzID09IE1JX09LKQorICB7CisgICAgICAvL0dldCBVSUQgaW4gMSAtIDMgbGV2ZWxzIChzdGFuZGFyZCwgW2RvdWJsZV0sIFt0cmlwbGVdICkKKyAgICAgIC8vLS0tLS0tLQorICAgICAgc3dpdGNoKGJyKQorICAgICAgeworICAgICAgICAgY2FzZSAwOiBjbWRBU0VMID0gUElDQ19BTlRJQ09MTDE7IGJyZWFrOworICAgICAgICAgY2FzZSAxOiBjbWRBU0VMID0gUElDQ19BTlRJQ09MTDExOyBicmVhazsKKyAgICAgICAgIGNhc2UgMjogY21kQVNFTCA9IFBJQ0NfQU5USUNPTEwxMjsgYnJlYWs7CisgICAgICAgICBjYXNlIDM6IGNtZEFTRUwgPSBQSUNDX0FOVElDT0xMMTM7IGJyZWFrOworICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgc3RhdHVzID0gTUlfQkFVRFJBVEVfTk9UX1NVUFBPUlRFRDsgYnJlYWs7CisgICAgICB9CisgIH0KKyAgaWYgKHN0YXR1cyA9PSBNSV9PSykKKyAgeworICAgICAgY2FzY2FkZV9sZXZlbCA9IDA7CisgICAgICB1aWRfaW5kZXggICAgID0gMDsKKyAgICAgIGRvCisgICAgICB7CisgICAgICAgIC8vU2VsZWN0IGNvZGUgZGVwZW5kcyBvbiBjYXNjYWRlIGxldmVsCisgICAgICAgIHNlbF9jb2RlICAgPSBjbWRBU0VMICsgKDIgKiBjYXNjYWRlX2xldmVsKTsKKyAgICAgICAgY21kQVNFTCA9IFBJQ0NfQU5USUNPTEwxOyAvLyByZXNldCBhbnRpY29sbGlzdGlvbiBsZXZlbCBmb3IgY2FsY3VsYXRpb24KKyAgICAgICAgLy9BTlRJQ09MTElTSU9OCisgICAgICAgIHN0YXR1cyA9IE1mNTAwUGljY0Nhc2NBbnRpY29sbChzZWxfY29kZSwgMCwgJnVpZFt1aWRfaW5kZXhdKTsKKyAgICAgICAgLy9TRUxFQ1QKKyAgICAgICAgaWYgKHN0YXR1cyA9PSBNSV9PSykKKyAgICAgICAgeworICAgICAgICAgICBzdGF0dXMgPSBNZjUwMFBpY2NDYXNjU2VsZWN0KHNlbF9jb2RlLCAmdWlkW3VpZF9pbmRleF0sIHNhayk7CisgICAgICAgICAgIGlmIChzdGF0dXMgPT0gTUlfT0spCisgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgY2FzY2FkZV9sZXZlbCsrOworCisgICAgICAgICAgICAgIC8vd2UgZGlmZmVyIGNhc2NhZGVkIGFuZCB1bmNhc2NhZGVkIFVJRHMKKyAgICAgICAgICAgICAgaWYgKCpzYWsgJiAweDA0KSAvLyBpZiBjYXNjYWRlZCwgYml0IDIgaXMgc2V0IGluIGFuc3dlciB0byBzZWxlY3QKKyAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAvL3RoaXMgVUlEIGlzIGNhc2NhZGVkLCByZW1vdmUgdGhlIGNhc2NhZGVkIHRhZyB0aGF0IGlzCisgICAgICAgICAgICAgICAgIC8vMHg4OCBhcyBmaXJzdCBvZiB0aGUgNCBieXRlIHJlY2VpdmVkCisgICAgICAgICAgICAgICAgIG1lbW1vdmUoJnVpZFt1aWRfaW5kZXhdLCAmdWlkW3VpZF9pbmRleCArIDFdLCAzKTsKKyAgICAgICAgICAgICAgICAgdWlkX2luZGV4ICs9IDM7CisgICAgICAgICAgICAgICAgICp1aWRfbGVuICs9IDM7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIC8vdGhpcyBVSUQgaXMgbm90IGNhc2NhZGVkIC0+IHRoZSBsZW5ndGggaXMgNCBieXRlcworICAgICAgICAgICAgICAgICB1aWRfaW5kZXggKz0gNDsKKyAgICAgICAgICAgICAgICAgKnVpZF9sZW4gKz0gNDsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIHdoaWxlKChzdGF0dXMgPT0gTUlfT0spICAgICAgICAvLyBlcnJvciBzdGF0dXMKKyAgICAgICAgICAgICYmICgqc2FrICYgMHgwNCkgICAgICAgICAvLyBubyBmdXJ0aGVyIGNhc2NhZGUgbGV2ZWwKKyAgICAgICAgICAgICYmIChjYXNjYWRlX2xldmVsIDwgMykpOyAvLyBoaWdoZXN0IGNhc2NhZGUgbGV2ZWwgaXMgcmVhY2hlZAorICAgfQorICAgaWYgKHN0YXR1cyA9PSBNSV9PSykKKyAgIHsKKyAgICAgIC8vRXhpdCBmdW5jdGlvbiwgaWYgY2FzY2FkZSBsZXZlbCBpcyB0cmlwbGUgYW5kIHNhayBpbmRpY2F0ZXMgYW5vdGhlcgorICAgICAgLy9jYXNjYXNlIGxldmVsLgorICAgICAgaWYgKChjYXNjYWRlX2xldmVsID09IDMpICYmICgqc2FrICYgMHgwNCkpCisgICAgICB7CisgICAgICAgICAqdWlkX2xlbiA9IDA7CisgICAgICAgICBzdGF0dXMgPSBNSV9DQVNDTEVWRVg7CisgICAgICB9CisgICAgICAvL01mNTAwUGNkU2V0QXR0cmliKGJyLGJyKTsKKyAgIH0KKyAgIHJldHVybiAoc3RhdHVzKTsKK30KKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vICAgICAgICAgICBFIFggQyBIIEEgTiBHIEUgICBCIFkgVCBFICAgUyBUIFIgRSBBIE0KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCit1bnNpZ25lZCBzaG9ydCBFeGNoYW5nZUJ5dGVTdHJlYW0odW5zaWduZWQgY2hhciBDbWQsCisgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpzZW5kX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCBzZW5kX2J5dGVsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpyZWNfZGF0YSwgIAorICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgKnJlY19ieXRlbGVuKQoreworICAgdW5zaWduZWQgc2hvcnQgc3RhdHVzID0gTUlfT0s7CisKKyAgIEZsdXNoRklGTygpOyAgICAvLyBlbXB0eSBGSUZPCisgICBSZXNldEluZm8oTUluZm8pOyAvLyBpbml0aWFsaXNlIElTUiBJbmZvIHN0cnVjdHVyZQorCisgICBpZiAoc2VuZF9ieXRlbGVuID4gMCkKKyAgIHsKKyAgICAgIG1lbWNweSgodW5zaWduZWQgY2hhciAqKU1TbmRCdWZmZXIsc2VuZF9kYXRhLHNlbmRfYnl0ZWxlbik7IC8vIHdyaXRlIG4gYnl0ZXMgCisgICAgICBNSW5mby5uQnl0ZXNUb1NlbmQgPSBzZW5kX2J5dGVsZW47CisgICAgICAvLyB3cml0ZSBsb2FkIGNvbW1hbmQKKyAgICAgIHN0YXR1cyA9IFBjZFNpbmdsZVJlc3BvbnNlQ21kKENtZCwKKyAgICAgICAgICAgICAgICAgICAgICBNU25kQnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgIE1SY3ZCdWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgJk1JbmZvKTsKKyAgICAgICpyZWNfYnl0ZWxlbiA9IE1JbmZvLm5CeXRlc1JlY2VpdmVkOworICAgICAgLy8gY29weSBkYXRhIHRvIG91dHB1dCwgZXZlbiBpbiBjYXNlIG9mIGFuIGVycm9yCisgICAgICBpZiAoKnJlY19ieXRlbGVuKQorICAgICAgeworICAgICAgICAgbWVtY3B5KHJlY19kYXRhLCh1bnNpZ25lZCBjaGFyICopTVJjdkJ1ZmZlciwqcmVjX2J5dGVsZW4pOworICAgICAgfQorICAgfQorICAgZWxzZQorICAgeworICAgICAgc3RhdHVzID0gTUlfV1JPTkdfUEFSQU1FVEVSX1ZBTFVFOworICAgfQorICAgcmV0dXJuIHN0YXR1czsKK30gICAgIAorCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLyAgICAgICAgICAgUCBJIEMgQyAgIEUgWCBDIEggQSBOIEcgRSAgIEIgTCBPIEMgSworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KK3Vuc2lnbmVkIHNob3J0IE1mNTAwUGljY0V4Y2hhbmdlQmxvY2sodW5zaWduZWQgY2hhciAqc2VuZF9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgc2VuZF9ieXRlbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqcmVjX2RhdGEsICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0ICpyZWNfYnl0ZWxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgYXBwZW5kX2NyYywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHRpbWVvdXQgKQoreworICAgY2hhciAgIHN0YXR1cyA9IE1JX09LOworCisgICBpZiAoYXBwZW5kX2NyYykKKyAgIHsKKyAgICAgIC8vIFJ4Q1JDIGFuZCBUeENSQyBlbmFibGUsIHBhcml0eSBlbmFibGUKKyAgICAgIFdyaXRlUkMoTW9kZVJlZywgMHgwMSk7CisJICBTZXRCaXRNYXNrKFR4TW9kZVJlZywgMHg4MCk7CisJICBTZXRCaXRNYXNrKFJ4TW9kZVJlZywgMHg4MCk7CisJICBDbGVhckJpdE1hc2soUkZVMUQsIDB4MTApOworCSAgV3JpdGVSQyhNb2RlUmVnLCAweDAxKTsKKyAgICAgIHNlbmRfYnl0ZWxlbiAtPSAyOworICAgfQorICAgZWxzZQorICAgeworICAgICAgLy8gUnhDUkMgYW5kIFR4Q1JDIGRpc2FibGUsIHBhcml0eSBlbmFibGUKKyAgICAgIENsZWFyQml0TWFzayhUeE1vZGVSZWcsIDB4ODApOworCSAgQ2xlYXJCaXRNYXNrKFJ4TW9kZVJlZywgMHg4MCk7CisJICBDbGVhckJpdE1hc2soUkZVMUQsIDB4MTApOworICAgfQorICAgCQorICAgUGNkU2V0VG1vKHRpbWVvdXQpOworCisgICBzdGF0dXMgPSBFeGNoYW5nZUJ5dGVTdHJlYW0oUENEX1RSQU5TQ0VJVkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VuZF9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbmRfYnl0ZWxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNfYnl0ZWxlbik7CisgICAvLyBldmVuIGlmIGFuIGVycm9yIG9jY3VyZWQsIHRoZSBkYXRhIHNob3VsZCBiZQorICAgLy8gcmV0dXJuZWQgLSBmb3IgZGVidWdnaW5nIHJlYXNvbnMKKworICAgaWYgKGFwcGVuZF9jcmMpCisgICB7CisgICAgICAqcmVjX2J5dGVsZW4gKz0gMjsgLy8gZm9yIHR3byBDUkMgYnl0ZXMKKyAgICAgIHJlY19kYXRhWypyZWNfYnl0ZWxlbiAtIDJdID0gMHgwMDsKKyAgICAgIHJlY19kYXRhWypyZWNfYnl0ZWxlbiAtIDFdID0gMHgwMDsKKyAgIH0KKworICAgcmV0dXJuIHN0YXR1czsKK30gIAorCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvaWNjX2FwZHVfbGliL01mUmNTUEkuYyBiL2ljY19hcGR1X2xpYi9NZlJjU1BJLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDdjMjAwYwotLS0gL2Rldi9udWxsCisrKyBiL2ljY19hcGR1X2xpYi9NZlJjU1BJLmMKQEAgLTAsMCArMSwxMDggQEAKKyNpbmNsdWRlICJzcGkuaCIKKyAgICAgICAgICAgICAgICAgCisjZGVmaW5lIER1bW15X0J5dGUgMHhBNQorCisjZGVmaW5lIE1GUkM1MDBfQ1NfTE9XKCkgICAgICAgIFNQSV9TRUxFQ1RfQ0gxKCkKKyNkZWZpbmUgTUZSQzUwMF9DU19ISUdIKCkgICAgICAgU1BJX0RFU0VMRUNUX0NIMSgpCisKKyNkZWZpbmUgTUZSQzUwMF9SU1RfTE9XKCkgICAgICAgR1BJT19SZXNldEJpdHMoR1BJT0MsIEdQSU9fUGluXzYpCisjZGVmaW5lIE1GUkM1MDBfUlNUX0hJR0goKSAgICAgIEdQSU9fU2V0Qml0cyhHUElPQywgR1BJT19QaW5fNikKKworLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg0dMgyrEguq8gyv0gICB1UworKiAgICAgINeiINLio7ogvqu2yM7KzOIKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworIHZvaWQgSFdfU2xlZXBVcyh1aW50MTZfdCB1cykKK3sKKwl1aW50MzJfdCBpOworCisJZm9yKCBpID0gMDsgaSA8IDYgKiB1czsgaSsrKTsKK30KKworLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg0dMgyrEguq8gyv0gICBtUworKiAgICAgINeiINLio7ogvqu2yM7KzOIKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLwordm9pZCBIV19TbGVlcE1zKHVpbnQxNl90IG1zKQoreworCXVpbnQzMl90IGk7CisKKwlmb3IoIGkgPSAwOyBpIDwgMzM2MSAqIG1zOyBpKysgKTsKK30KKworLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkYgU1BJIMXkINbDILP1IMq8ILuvCisqICAgCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KK3ZvaWQgSFdfU1BJX1JGX0NmZ0luaXQodm9pZCkKK3sKKwlHUElPX0luaXRUeXBlRGVmIEdQSU9fSW5pdFN0cnVjdHVyZTsKKyAgICAKKyAgICBSQ0NfQVBCMlBlcmlwaENsb2NrQ21kKFJDQ19BUEIyUGVyaXBoX0dQSU9DLCBFTkFCTEUpOworCUdQSU9fSW5pdFN0cnVjdHVyZS5HUElPX1BpbiA9IEdQSU9fUGluXzY7CisJR1BJT19Jbml0U3RydWN0dXJlLkdQSU9fU3BlZWQgPSBHUElPX1NwZWVkXzUwTUh6OworCUdQSU9fSW5pdFN0cnVjdHVyZS5HUElPX01vZGUgPSBHUElPX01vZGVfT3V0X1BQOworCUdQSU9fSW5pdChHUElPQywgJkdQSU9fSW5pdFN0cnVjdHVyZSk7IAkKKyAgICBNRlJDNTAwX1JTVF9ISUdIKCk7ICAgIAorICAgIHNwaV9pbml0KCk7Cit9CisKK3VpbnQ4X3Qgc3BpX3JjNTAwX3NlbmRfYnl0ZSh1aW50OF90IGJ5dGUpCit7CisgICAgcmV0dXJuIHNwaV90cmFuc2l2ZShieXRlLCAxMDApOworfQorCisKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFAgQyBEICC2wSDSuyC49iDX1iC92gorKgorKiAgIAkJCQkJCQkJCQkJINK7ILDjILbBCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KK3VpbnQ4X3QgUmVhZFJhd1JDKHVpbnQ4X3QgYWRkcikKK3sKKwl1OCBpOworICAgIAorCWFkZHIgPSAoKGFkZHI8PDEpfDB4ODApJjB4ZmU7CisgICAgTUZSQzUwMF9DU19MT1coKTsKKwlzcGlfcmM1MDBfc2VuZF9ieXRlKGFkZHIpOworCWkgPSBzcGlfcmM1MDBfc2VuZF9ieXRlKER1bW15X0J5dGUpOworICAgIE1GUkM1MDBfQ1NfSElHSCgpOworCXJldHVybiBpOworfQorCisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQIEMgRCAg0LQg0rsguPYg19YgvdoKKyoKKyogICAJCQkJCQkJCQkJCSDSuyCw4yDQtAorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCit2b2lkIFdyaXRlUmF3UkModWludDhfdCB2YWx1ZSwgdWludDhfdCBhZGRyKQoreworCWFkZHIgPSAoYWRkciA8PCAxKSAmIDB4N2U7CisgICAgTUZSQzUwMF9DU19MT1coKTsKKwlzcGlfcmM1MDBfc2VuZF9ieXRlKGFkZHIpOworCXNwaV9yYzUwMF9zZW5kX2J5dGUodmFsdWUpOworICAgIE1GUkM1MDBfQ1NfSElHSCgpOworfQorCit2b2lkIE1GUkM1MDBfUnN0U2V0KHZvaWQpCit7CisJTUZSQzUwMF9SU1RfSElHSCgpOwkKK30KKwordm9pZCBNRlJDNTAwX1JzdENscih2b2lkKQoreworCU1GUkM1MDBfUlNUX0xPVygpOwkKK30KKwpkaWZmIC0tZ2l0IGEvaWNjX2FwZHVfbGliL01pZmFyZV9PbmVfSFdfTElCLkggYi9pY2NfYXBkdV9saWIvTWlmYXJlX09uZV9IV19MSUIuSApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYWI2YmEwCi0tLSAvZGV2L251bGwKKysrIGIvaWNjX2FwZHVfbGliL01pZmFyZV9PbmVfSFdfTElCLkgKQEAgLTAsMCArMSw0MjMgQEAKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWlmYXJlIE9uZSDTsiC8/iC11yCy4yDH/SC2ryC/4gorKgkKKyoJCQkJCQkJCQkgICAgX19fX1/TsiC8/iC11yCy4yDH/SC2r19fX19fCisqCisqICDD6CDK9qO6IM3qs8lNaWZhcmUgT25lv6i1xNOyvP6117LjstnX96O7CisqCisqICDF5CDWw6O6IAorKiAgICAgICAgICBDUFUgICAgICAgICA6IAorKiAgICAgICAgICDN4sqx1tMgICAgICA6IAorKiAgICAgICAgICBDUFXUy9DQyrHW0yA6IAorKiAgICAgICAgICDUy9DQu7e+syAgICA6IEtlaWwgQVJNICggUmVhbFZpZXcgTURLICkgICB2My41MMbGveKw5rG+CisqICAgICAgICAgILu3vrPJ6NbDICAgIDogMSkgxKPKvTogICAgCisqICAgICAgICAgICAgICAgICAgICAgICAgMikg08W7rzogxKzIzyAoIExldmVsIDAgKC0wMCkgLi4uKQorKgorKiAg16Ig0uKjuiCz/VJlYWRSQ6OsV3JpdGVSQ7qvyv3N4qOsxuTL/E0xv6iy2df3uq/K/ba809BTUEm2y7/axeTWw6Osy/nS1Mbky/y12Le9tffTw9Xi0Km6r8r9yrGjrL7NsrvTw7340NAKKyogICAgICAgICAgU1BJtsu/2sXk1sOy2df3KEhXX1NQSV9SRl9DZmdJbml0KaGjCisqCisqICC/4iDD+6O6IE1pZmFyZV9PbmVfSFdfVjIuMC5MSUIgCisqCisqICDX9yDV36O6IFpoYW5nX09TQDE2My5jb20KKyoKKyogILDmILG+o7ogMi4wCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorKiAgyNUgxtqjuiAyMDA5LTA1LTMxCisqCisqICAgICAgICBDb3B5cmlnaHQgKGMpIDIwMDgtMjAwOSAgIEJyYW5kLU5FVyBDLkEuUCBFbGVjdHJvbmljcyBUZWNobm9sb2d5IENPLixMVEQKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworCisKKyNpZm5kZWYgX19NaWZhcmVfT25lX0hXX0xJQl9IX18KKyNkZWZpbmUgX19NaWZhcmVfT25lX0hXX0xJQl9IX18KKworI2luY2x1ZGUgIlBJQ0NDbWRDb25zdC5oIgorI2luY2x1ZGUgIk1GUkM1MDAuaCIKKworLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCQkJCQkJCQkJCSAgs6Mgwb8KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworCisvLyBSQzUwMLXEvMS05sb3tqjS5brNs6PK/bao0uUKKyAgI2RlZmluZSAgICBNSV9PSyAgICAgICAgICAgICAgICAgICAgICAoMCkKKworICAjZGVmaW5lICAgIEJVRkZFUl9TSVpFX1JGQ2FyZCAgICAgICAgIDY0CisKKy8qIFNQScf9tq/G98Tasr/XtMysICovCisgICNkZWZpbmUgICAgSURMRSAgICAgICAgICAgICAgICAgICAgICAgMHgwMAorICAjZGVmaW5lCSBCVVNZCQkJCQkJMHgwMQorICAjZGVmaW5lCSBFUlJPUgkJCQkJCTB4MDIKKworLyogv6i907/aU1BJ17TMrLe1u9jWtSAqLworICAjZGVmaW5lICAgIFJGQ0lfQlVTWSAgICAgICAgICAgICAgICAgIDB4MDAKKyAgI2RlZmluZSAgICBSRkNJX09LICAgICAgICAgICAgICAgICAgICAweDAxCisgICNkZWZpbmUgICAgUkZDSV9FUlJPUiAgICAgICAgICAgICAgICAgMHgwMgorCisvL1JGv6i/2NbG0MW6xQorICAjZGVmaW5lICAgIFJGQ19SRVNFVCAgICAgICAgICAgICAgICAgICgxPDw5KSAgICAgICAvKiBQQTkgUka/qLi0zru/2NbG0MW6xSi92sTcv9jWxikgICAgICAgICAgICAgICAgICAgICAgKi8KKworLyogvMS05sb3tqjS5SAqLworICAjZGVmaW5lICAgIFJlZ1BhZ2UgICAgICAgICAgICAgICAgICAgIDB4MDAgICAvLyE8IFBhZ2UgU2VsZWN0IFJlZ2lzdGVyCisgICNkZWZpbmUgICAgUmVnQ29tbWFuZCAgICAgICAgICAgICAgICAgMHgwMSAgIC8vITwgQ29tbWFuZCBSZWdpc3RlcgorICAjZGVmaW5lICAgIFJlZ0ZJRk9EYXRhICAgICAgICAgICAgICAgIDB4MDIgICAvLyE8IEZpRm8gUmVnaXN0ZXIKKworLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCQkJCQkJCQkJCSAgseQgwb8KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworIHR5cGVkZWYgc3RydWN0IF9SRklEZXNjCisgIHsKKwl2b2xhdGlsZSB1bnNpZ25lZCBjaGFyCXN0YXRlOworCXVuc2lnbmVkIGNoYXIJCQljb21tYW5kWzJdOworCXVuc2lnbmVkIGNoYXIJCQlkYXRhQnVmZmVyWzJdOworICB9IFJGSURlc2MsICpwUkZJRGVzYzsKKworIGV4dGVybiBSRklEZXNjICAgZ1JGSURlc2M7CisKKworCisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogICAgICAgICAJCQkJCQkJCSAgICC6ryAgICDK/QorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisKKy8vU1BJLkMgIAorLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg0dMgyrEguq8gyv0gICB1UworKiAgICAgICBUaHVtYsSjyr0rvbuy5sSjyr0KKyoKKyogINeiINLio7rUy9DQxKPKvbK70rvR+aOsyO28/tHTyrGyu9K70fmhoworKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisgIGV4dGVybiAgICAgdm9pZCAgICAgICAgICAgSFdfU2xlZXBVcyggdW5zaWduZWQgc2hvcnQgdXMgKTsgICAgICAgICAvKiB1U8jtvP7R08qxuq/K/SAgICAgICAgICAgICAgICAgICAgICAqLworLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg0dMgyrEguq8gyv0gICBtUworKiAgICAgICBUaHVtYsSjyr0rvbuy5sSjyr0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworICBleHRlcm4gICAgIHZvaWQgICAgICAgICAgIEhXX1NsZWVwTXMoIHVuc2lnbmVkIHNob3J0IG1zICk7ICAgICAgICAgLyogbVPI7bz+0dPKsbqvyv0gICAgICAgICAgICAgICAgICAgICAgKi8KKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJGIFNQSSDF5CDWwyCz9SDKvCC7rworKiAgIAorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisgIGV4dGVybiAgICAgdm9pZCAgICAgICAgICAgSFdfU1BJX1JGX0NmZ0luaXQoIHZvaWQgKTsgICAgICAgICAgICAgICAvKiBTUEkgUkYgxeTWw7P1yry7ryAgICAgICAgICAgICAgICAgICAqLworLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENEILXIILT9IL3TIMrVCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgxNqyv7X308MKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworICBleHRlcm4gICAgIHVuc2lnbmVkIGNoYXIgIEhXX1JGSV9XYWl0UmVhZHkoIHVuc2lnbmVkIGludCB0aW1lb3V0ICk7CQorLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUCBDIEQgILbBINK7ILj2INfWIL3aCisqCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8JCQkJCQkJCQkJCQkgCisgIGV4dGVybiAgICAgdW5zaWduZWQgY2hhciAgUmVhZFJDKCB1bnNpZ25lZCBjaGFyIGFkZHIgKTsKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFAgQyBEICDQtCDSuyC49iDX1iC92gorKgorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisgIGV4dGVybiAgICAgdm9pZCAgICAgICAgICAgV3JpdGVSQyggdW5zaWduZWQgY2hhciB2YWx1ZSwgdW5zaWduZWQgY2hhciBhZGRyICk7CisKKy8vR2V0TTFTbi5DCisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogILmmIMTco7ogIMihtcO/qNDywdC6xQorKiAgyuQgs/ajuiAgdW5zaWduZWQgY2hhciAqcFNOICAJCQkJLSC/qNDywdC6xQorKiAgt7W72Na1o7ogMLPJuaYKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworICBleHRlcm4gICAgIHVuc2lnbmVkIGNoYXIgR2V0TTFTTiggdW5zaWduZWQgY2hhciAqcFNOICk7CisKKy8vTTFfQmFzaWMuQworLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICAJCda00NDD/MHux7DJ6Laoz+DTprzEtObG9wkJCQkgxNqyv7X308MKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworICBleHRlcm4gICAgIHZvaWQgICAgICAgICAgIFJjUmVnUnN0KCB2b2lkICk7CisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogICAgICAgICAgICAgICDIoVJDNTAww/zB7r3hufsJCQkJCisqCWNtZAkJOiBSQzUzMMP8we7X1gorKglSY3ZCdWZmCTogw/zB7tX9yLfWtNDQuvPK1bW9tcTK/b7dCisqCbe1u9jWtQmjusP8we7WtNDQx+m/9iAgIAorKiAJQjogICDKx7fxs8m5pgkJCQkJCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KKyAgZXh0ZXJuICAgICB1bnNpZ25lZCBjaGFyICAgICAgICAgIFJjQ29tUmVzdWx0KHVuc2lnbmVkIGNoYXIgY21kLCB1bnNpZ25lZCBjaGFyICpSY3ZCdWZmKTsKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgCQkgvNPU2M+1zbPD3MLrtb1SQzUzMCBLZXlCdWZmZXIJCQkKKyoJCSCyzsr9o7ogUmF3Q29kZSAgIAktICAg0qq809TYtcQ219a92sPcwuu1xNa41eujqLTm09pJREFUQcf4o6kKKyoJCSC3tbvYo7ogMCAgIAkgICAJLSAgILLZ1/ezybmmCisqICAgICAgICAgICAgICAgITAJCQktICAgstnX98qnsNwKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworICBleHRlcm4gICAgIHVuc2lnbmVkIGNoYXIgICAgICAgICAgTG9hZF9SQU0gKCB1bnNpZ25lZCBjaGFyICogUmF3Q29kZSApOworLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIAm5piDE3CAgIKO6ICDRsL+oCisqCbLOIMr9ICAgOglSZXF1ZXN0TW9kZQkJOiDRsL+oxKPKvaOszqpJRExFILvyIEFMTAkJCisqCQkgICAgICAgIGF0cQkJCQk6IL+oxqy1xMDg0M0gINTdzt7TwworKgm3tSC72CDWtaO6ICC1sc6qMHgwMCDKsbHtyr7T0L+oo6y38dTyzt6/qAorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisgIGV4dGVybiAgICAgdW5zaWduZWQgY2hhciAgICAgICAgICBNMV9SZXF1ZXN0KCB1bnNpZ25lZCBjaGFyIFJlcXVlc3RNb2RlLCB1bnNpZ25lZCBjaGFyICogYXRxICk7CisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogCbmmxNyjuiC/ubPlzbuy4srUCisqCbLOyv06CUJjbnQJCTogv7mz5c27v6jQ8sHQusXUpNbDzrvK/QkJCisqCQkJU25yCQkJo7rUpNbDu/K1w7W9tcS/qLXE0PLB0LrFCisqCbe1u9jWtaO6tbHOqjB4MDAgyrGx7cq+1f3It7XDtb2/qLXE0PLB0LrFo6y38dTyzrTV/ci3tcO1vQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisgIGV4dGVybiAgICAgdW5zaWduZWQgY2hhciAgICAgICAgICBNMV9BbnRpKHVuc2lnbmVkIGNoYXIgQmNudCwgdW5zaWduZWQgY2hhciAqU25yKTsKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAJuabE3KO6INGhv6gKKyoJss7K/ToJU25yCQkJo7q/qLXE0PLB0LrFCisqCbe1u9jWtaO6tbHOqjB4MDAgyrGx7cq+1f3It9Ghv6izybmmCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KKyAgZXh0ZXJuICAgICB1bnNpZ25lZCBjaGFyICAgICAgICAgIE0xX1NlbGVjdCggdW5zaWduZWQgY2hhciAqU25yICk7CisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoJCQlBdXRoX0Jsb2NrIKOozai5/b/pusW9+NDQ0KPR6aOs1qez1lM1MKOsUzcwv6ijqQorKiAJu/LE3KO6CdCj0ekJCQkJCQkgICAgIAorKiAJss7K/ToJIEF1dGhNb2RlCTpBw9zC6yC78iBCw9zC6wkJIAorKgkJCSBCbG9jawkJOrbB0LS/6brFCQkgICAgIAorKgkJCSBTbnIJCTq/qNDywdC6xQkJICAgICAKKyogCbe1u9jWtaO6MDCx7cq+w9zC69X9yLcgICAgCQkJCSAKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworICBleHRlcm4gICAgIHVuc2lnbmVkIGNoYXIgICAgICAgICAgTTFfQXV0aEJsayggdW5zaWduZWQgY2hhciBBdXRoTW9kZSwgdW5zaWduZWQgY2hhciAqU25yLCB1bnNpZ25lZCBjaGFyIEJsb2NrLCB1bnNpZ25lZCBjaGFyICprZXkgKTsKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgkJCSAgIFJDNTMwvMS05sb3s/XKvLuvIAorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisgIGV4dGVybiAgICAgdW5zaWduZWQgY2hhciAgICAgICAgICBSQ0NvbmZpZyh2b2lkKTsKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgkJCSAgIFJDNTMwyc+157i0zrsgCisqICAgICAxLiC9q1JDNTMwtNO19LXnxKPKvbu90NGjrLKizeqzybP1yry7rworKiAgICAgMi4gu/K9q1JDNTMw1tjQwri0zrsKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworICBleHRlcm4gICAgIHVuc2lnbmVkIGNoYXIgICAgICAgICAgTTFfUkNSZXNldCh2b2lkKTsKKworLy9NMV9CbGtSZWFkLkMKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKrmmxNyjuiAgTWlmYXJlv6i/6bbBKLqs0bC/qCwg0aG/qCwg0KPR6SwgtsG/qCjSu7/pKSwgv8m5qdGh1PEpo7oKKyrK5Mjro7ogIHVuc2lnbmVkIGNoYXIgKnBTTiAgCQkJCS0gv6jQ8sHQusUKKyoJCXVuc2lnbmVkIGNoYXIgTW9kZQkJCS0gKCC4+b7dtqjS5bXEs6PBv7HtvfjQ0CK78iLX6brPICkKKyoJCSAgIGJpdDAgCQkJCS0gQcPcwuu78kLD3MLrKCAgMCAtIEEJMSAtIEIpICAgICAKKyoJCSAgIGJpdDIJIAkJCQktIDAgLSDRsL+oICAgICAgIDEgLSCyu9Gwv6gKKyoJCSAgIGJpdDMJCQkJCS0gMCAtILK70KPR6cPcwusgMSAtINKq0KPR6cPcwusKKyoJCXVuc2lnbmVkIGNoYXIgQmxvY2sgICAgCQkJLSDSqrbBtcS/6brFCisqCQl1bnNpZ25lZCBjaGFyICpwS2V5CQkJCS0gycjH+LbB0LTD3MLrCisqCisqyuSz9qO6ICB1bnNpZ25lZCBjaGFyICpwQnVmZmVyCQkJLSC2wbP2tcQxNtfWvdrK/b7dCisqt7W72Na1o7q1sc6qMHgwMCDKsdX9yLe2wbP2CisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KKyAgZXh0ZXJuICAgICB1bnNpZ25lZCBjaGFyICBNMV9CbGtSZWFkKCB1bnNpZ25lZCBjaGFyIE1vZGUsIHVuc2lnbmVkIGNoYXIgQmxvY2ssIHVuc2lnbmVkIGNoYXIgKnBTTiwgdW5zaWduZWQgY2hhciAgKiBwQnVmZmVyLCB1bnNpZ25lZCBjaGFyICpwS2V5ICk7CisKKy8vTTFfQmxrV3JpdGUuQworLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisquabE3KO6ICBNaWZhcmW/qL/p0LQouqzRsL+oLCDRob+oLCDQo9HpLCC2wb+oKNK7v+kpLCC/ybmp0aHU8SmjugorKsrkyOujuiAgdW5zaWduZWQgY2hhciAqcFNOICAJCQkJLSC/qNDywdC6xQorKgkJdW5zaWduZWQgY2hhciBNb2RlCQkJLSAoILj5vt22qNLltcSzo8G/se29+NDQIrvyItfpus8gKQorKgkJICAgYml0MCAJCQkJLSBBw9zC67vyQsPcwusoICAwIC0gQQkxIC0gQikgICAgIAorKgkJICAgYml0MgkgCQkJCS0gMCAtINGwv6ggICAgICAgMSAtILK70bC/qAorKgkJICAgYml0MwkJCQkJLSAwIC0gsrvQo9Hpw9zC6yAxIC0g0qrQo9Hpw9zC6worKgkJdW5zaWduZWQgY2hhciBCbG9jayAgICAJCQktINKqtsG1xL/pusUKKyoJCXVuc2lnbmVkIGNoYXIgKnBLZXkJCQkJLSDJyMf4tsHQtMPcwusKKyoJCXVuc2lnbmVkIGNoYXIgKnBCdWZmZXIJCQktINKq0LTI67XEMTbX1r3ayv2+3QorKre1u9jWtaO6tbHOqjB4MDAgyrHV/ci3tsGz9gorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisgIGV4dGVybiAgICAgdW5zaWduZWQgY2hhciAgTTFfQmxrV3JpdGUoIHVuc2lnbmVkIGNoYXIgTW9kZSwgdW5zaWduZWQgY2hhciBCbG9jaywgdW5zaWduZWQgY2hhciAqcFNOLCB1bnNpZ25lZCBjaGFyICogcEJ1ZmZlciwgdW5zaWduZWQgY2hhciAqcEtleSApOworCisvL00xX0UyUmVhZC5DCisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoJCU0xX0UyUmVhZCAgICC2wcihUkM1MDC1xEUy1tC1xMr9vt0gCisqCSAJQWRkcgkJOkUyxvDKvLXY1rcoQWRkciA8IDgwSCApCisqCQlsZW5ndGgJCTrSqsfztsHIobXE19a92sr9KCDQodPatcjT2jE2ICkKKyoJCXBCdWZmZXIJCTq2wbP2yv2+3bXEu7qz5cf4CisqCQm3tbvY1rUJCaO6MLHtyr7QtLPJuaYKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworICBleHRlcm4gICAgIHVuc2lnbmVkIGNoYXIgIE0xX0UyUmVhZCggdW5zaWduZWQgY2hhciBBZGRyLCB1bnNpZ25lZCBjaGFyIGxlbmd0aCwgdW5zaWduZWQgY2hhciAqIHBCdWZmZXIpOworCisvL00xX0UyV1JJVEUuQworLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCQlNMV9FMldyaXRlICC9q8r9vt3QtMjrUkM1MDC1xEUy1tAKKyoJIAlBZGRyCQk6RTLG8Mq8tdjWtyggMHgxMCA8PUFkZHIgPCAweDFmZiApCisqCQlsZW5ndGgJCTrSqsfz0LTI67XE19a92sr9KCDQodPatcjT2jE2ICkKKyoJCXBCdWZmZXIJCTrSqtC0yOvK/b7dtcS7urPlx/gKKyoJCbe1u9jWtQkJo7owse3KvtC0s8m5pgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisgIGV4dGVybiAgICAgdW5zaWduZWQgY2hhciAgTTFfRTJXcml0ZSggdW5zaWduZWQgaW50IEFkZHIsIHVuc2lnbmVkIGNoYXIgbGVuZ3RoLCB1bnNpZ25lZCBjaGFyICogcEJ1ZmZlcik7CisKKy8vTTFfSGFyZFB3ckR3bi5DCisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogIAm5psTco7ogICAgICAgILbBv6iw5dOyvP619LXno7oKKyoJuq/K/dSt0M2juiAgICB2b2lkIEhhcmRQd3JEd24oKSAgICAgICAgICAgICAgICAgICAgICDU3cO709DQtAorKiAgILLOyv2juiAgCSAgzt4KKyogICC3tbvY1rWjuiAgICAgIM7eCisqICAgy7XD96O6CisqICAgCSAgICC9q7bBv6iw5bXEUkahqlJTVL/Y1sbP39bDzqq437Xnxr2jrLbBv6iw5bSm09rTsrz+tfS159e0zKyjqLXn1LTV/bOjzOG5qaOpoaMKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworICBleHRlcm4gICAgIHZvaWQgICBNMV9IYXJkUHdyRHduKCB2b2lkICk7CisKKy8vTTFfUENEU24uQworLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCQlNMV9QQ0RTbiAgICC2wcihUkM1MDC1yLbBv6jQvsastcTQ8sHQusUKKyoJCXBTbgkJCTrQ8sHQusW7urPlx/gKKyoJCbe1u9jWtQkJo7owse3KvtC0s8m5pgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisgIGV4dGVybiAgICAgdW5zaWduZWQgY2hhciAgIE0xX1BDRFNuKCB1bnNpZ25lZCBjaGFyICogcEJ1ZmZlcik7CisKKy8vTTFfUmFkaW9PZmYuQworLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICAJuabE3KO6ICAgICAgICC2wb+osOW2wb+o0L7GrMnkxrW52LHVo7oKKyoJuq/K/dSt0M2juiAgICB2b2lkIE0xX1JhZGlvT2ZmKCkKKyogICAJss7K/aO6ICAJICDO3gorKiAgIAm3tbvY1rWjuiAgICAgIM7eCisqICAgCcu1w/ejugorKiAgIAkgICAgvau2wb+osOXJz7XEtsG/qNC+xqy1xMnkxrW3osvNudi19Cy9tbXNuaa6xLrNttTN4rjJyMUKKyoJCbTLyrG2wb+o0L7GrLu51Nq5pNf3LgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisgIGV4dGVybiAgICAgdm9pZCAgIE0xX1JhZGlvT2ZmKCB2b2lkICk7CisKKy8vTTFfUmFkaW9Pbi5DCisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogIAm5psTco7ogICAgICAgILbBv6iw5bbBv6jQvsasyeTGtbTyv6qjugorKgm6r8r91K3QzaO6ICAgIHZvaWQgTTFfUmFkaW9PbigpCisqICAgCbLOyv2juiAgCSAgzt4KKyogICAJt7W72Na1o7ogICAgICDO3gorKiAgIAnLtcP3o7oKKyogICAJICAgIL2rtsG/qLDlyc+1xLbBv6jQvsastcTJ5Ma1t6LLzbTyv6oKKyoKKyoJCU0xX1JhZGlvT24oKSC6zSBNMV9SYWRpb09mZigpysfSu7bUuq/K/SzTw9Ta0ruw48fpv/bPwrXEvdrE3LrNvbW1zcnkxrW4ycjFyc8uCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KKyAgZXh0ZXJuICAgICB2b2lkICAgTTFfUmFkaW9Pbiggdm9pZCApOworCisvL00xX1Jhd1JlYWQuQworLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCQkJICBGcmVhZCAgICAgtsG/6cr9vt0gCisqCSAJQmxvY2sJCTq2wb/pusUKKyoJCVJlYWRCdWZmZXIJOrbBs/a1xMr9vt21xLu6s+XH+KOs1NpJREFUQcf4CisqCQm3tbvY1rUJCaO6MLHtyr62wbPJuaYKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworICBleHRlcm4gICAgIHVuc2lnbmVkIGNoYXIgIE0xX1JlYWQodW5zaWduZWQgY2hhciBCbG9jaywgdW5zaWduZWQgY2hhciAqIFJlYWRCdWZmZXIpOworCisvL00xX3Jhd1dyaXRlLkMKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgkJCSAgRndyaXRlICAgICDQtL/pyv2+3SAKKyoJIAlCbG9jawkJOtC0v+m6xQorKgkJUmVhZEJ1ZmZlcgk60qrQtMr9vt21xLu6s+XH+KOs1NpJREFUQcf4CisqCQm3tbvY1rUJCaO6MLHtyr7QtLPJuaYKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworICBleHRlcm4gICAgIHVuc2lnbmVkIGNoYXIgIE0xX1dyaXRlKCB1bnNpZ25lZCBjaGFyIEJsb2NrLCB1bnNpZ25lZCBjaGFyICogV3JpdGVCdWZmZXIpOworCisvL00xX1RpbWVyLkMKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgICAgILmmxNw6ICAgxvS2r01pZmFyZbbBv6jH/bavtcSzrMqxtqjKscb3ICAgICAgINTdw7vT0NC0CisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KKyAgZXh0ZXJuICAgICB2b2lkICAgICAgICAgIE0xVGltZXJUb1N0YXJ0KCB2b2lkICk7CisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogICAgICC5psTcOiAgIM2j1rlNaWZhcmW2wb+ox/22r7XEs6zKsbaoyrHG9yAgICAgICDU3cO709DQtAorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisgIGV4dGVybiAgICAgdm9pZCAgICAgICAgICBNMVRpbWVyVG9TdG9wKCB2b2lkICk7CisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogICAgICC5psTcOiAgIMihtcNNaWZhcmW2wb+ox/22r7XEs6zKsbaoyrHG99e0zKwgICDU3cO709DQtAorKgkgILe1u9jWtTogMSAgLSAgs6zKsbaoyrHG99Lns/YoILOsyrEgKQorKgkgICAgICAgICAgMCAgLSAgs6zKsbaoyrHG98600uez9gorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisgIGV4dGVybiAgICAgdW5zaWduZWQgY2hhciBNMVRpbWVyVG9TdGEoIHZvaWQgKTsKKworLy9NMV9UcmFuU3RhLkMKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgCbmmxNyjuiAgICAgICAgvOyy6bbBv6jQvsasyse38beiyeTV/bOjCisqCbqvyv3UrdDNo7ogICAgdW5zaWduZWQgY2hhciBNMV9UcmFuU3RhKCkKKyogICAJss7K/aO6ICAJICDO3gorKiAgIAm3tbvY1rWjuiAgICAgIDEgLSDU2LKozrS3osnkCisqCQkJCSAgMCAtINTYsqi3osnkCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KKyAgZXh0ZXJuICAgICB1bnNpZ25lZCBjaGFyICAgIE0xX1RyYW5TdGEoIHZvaWQgKTsKKy8vCisKKworLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCQnWtb/ptcS807z1stnX9zogzeqzyUJsb2Nr1rW/6bXEvNOhorz1oaJSZXN0b3Jlo6yyor2r1rW0q8jrVHJhbkJsb2Nr1tAKKyoJCWNtZAkJCaO6vNMoUElDQ19BREQpoaK89ShQSUNDX1NVQimholJlc3RvcmUoUElDQ19SRVNUT1JFKcP8we4KKyoJIAlCbG9jawkJOtSt1rW/6brFCisqCQlWYWx1ZQkJOsvE19a92ta1x/ijqNX9o6kKKyoJCVRyYW5CbG9jawmjuta1tKvI67XEv+m6xQorKgkJt7W72Na1CQmjujCx7cq+tsGzybmmo6zG5Mv8zqq07c7ztPrC6worKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisKKyBleHRlcm4gCXVuc2lnbmVkIGNoYXIgTTFfVmFsdWUoIHVuc2lnbmVkIGNoYXIgY21kLCB1bnNpZ25lZCBjaGFyIEJsb2NrLCB1bnNpZ25lZCBjaGFyICogVmFsdWUsIHVuc2lnbmVkIGNoYXIgVHJhbkJsb2NrICk7CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKwkJCQkJIEhhbHQKKyAJuabE3KO6INbV1rm/qAorCbLOyv06ICDO3gorCbe1u9jWtaO6tbHOqjB4MDAgyrGx7cq+v6jW1da5s8m5pgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK2V4dGVybiB1bnNpZ25lZCBjaGFyIE0xX0hhbHQoIHZvaWQgKTsKKworZXh0ZXJuIHVuc2lnbmVkIGNoYXIgUElDQ19UY2xDaGVja1JGUm91bmdlKCB2b2lkICkgOworCisKKyNlbmRpZgorCisKZGlmZiAtLWdpdCBhL2ljY19hcGR1X2xpYi9QSUNDQ21kQ29uc3QuaCBiL2ljY19hcGR1X2xpYi9QSUNDQ21kQ29uc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZGJmYmEwCi0tLSAvZGV2L251bGwKKysrIGIvaWNjX2FwZHVfbGliL1BJQ0NDbWRDb25zdC5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisqICAgICAgICAgQ29weXJpZ2h0IChjKSwgUGhpbGlwcyBTZW1pY29uZHVjdG9ycyBHcmF0a29ybiAvIEF1c3RyaWEKKyoKKyogICAgICAgICAgICAgICAgICAgICAoQylQSElMSVBTIEVsZWN0cm9uaWNzIE4uVi4yMDAwCisqICAgICAgIEFsbCByaWdodHMgYXJlIHJlc2VydmVkLiBSZXByb2R1Y3Rpb24gaW4gd2hvbGUgb3IgaW4gcGFydCBpcyAKKyogICAgICBwcm9oaWJpdGVkIHdpdGhvdXQgdGhlIHdyaXR0ZW4gY29uc2VudCBvZiB0aGUgY29weXJpZ2h0IG93bmVyLgorKiAgUGhpbGlwcyByZXNlcnZlcyB0aGUgcmlnaHQgdG8gbWFrZSBjaGFuZ2VzIHdpdGhvdXQgbm90aWNlIGF0IGFueSB0aW1lLgorKiBQaGlsaXBzIG1ha2VzIG5vIHdhcnJhbnR5LCBleHByZXNzZWQsIGltcGxpZWQgb3Igc3RhdHV0b3J5LCBpbmNsdWRpbmcgYnV0CisqIG5vdCBsaW1pdGVkIHRvIGFueSBpbXBsaWVkIHdhcnJhbnR5IG9mIG1lcmNoYW50YWJpbGl0eSBvciBmaXRuZXNzIGZvciBhbnkKKypwYXJ0aWN1bGFyIHB1cnBvc2UsIG9yIHRoYXQgdGhlIHVzZSB3aWxsIG5vdCBpbmZyaW5nZSBhbnkgdGhpcmQgcGFydHkgcGF0ZW50LAorKiBjb3B5cmlnaHQgb3IgdHJhZGVtYXJrLiBQaGlsaXBzIG11c3Qgbm90IGJlIGxpYWJsZSBmb3IgYW55IGxvc3Mgb3IgZGFtYWdlCisqICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlzaW5nIGZyb20gaXRzIHVzZS4KKyovCisKKy8qISBcZmlsZSBQSUNDQ21kQ29uc3QuaAorKgorKiBQcm9qZWt0OiBNRiBFViBYMDAgRmlybXdhcmUKKyoKKyogJFdvcmtmaWxlOjogUElDQ0NtZENvbnN0LmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCAKKyogJE1vZHRpbWU6OiA1LjEyLjAxIDY6NTIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQgCisqICRBdXRob3I6OiBIYiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkCisqICRSZXZpc2lvbjo6IDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkCisqCisqLworI2lmbmRlZiBQSUNDQ01EQ09OU1RfSAorI2RlZmluZSBQSUNDQ01EQ09OU1RfSAorCisKKy8qKiBcbmFtZSBQSUNDIENvbW1hbmRzCisqIFxpbmdyb3VwIG1pZmFyZQorKiBDb21tYW5kcyB3aGljaCBhcmUgaGFuZGxlZCBieSB0aGUgdGFnCisqCisqIEVhY2ggdGFnIGNvbW1hbmQgaXMgd3JpdHRlbiB0byB0aGUgcmVhZGVyIElDIGFuZCB0cmFuc2ZlcmVkIHZpYSBSRgorKi8KKyNkZWZpbmUgUElDQ19SRVFJREwgICAgICAgIDB4MjYgICAgICAgICAvLyE8IHJlcXVlc3QgaWRsZQorI2RlZmluZSBQSUNDX1JFUUFMTCAgICAgICAgMHg1MiAgICAgICAgIC8vITwgcmVxdWVzdCBhbGwKKyNkZWZpbmUgUElDQ19BTlRJQ09MTDEgICAgIDB4OTMgICAgICAgICAvLyE8IGFudGljb2xsaXNpb24gbGV2ZWwgMSAxMDYga0JhdWQKKyNkZWZpbmUgUElDQ19BTlRJQ09MTDExICAgIDB4OTIgICAgICAgICAvLyE8IGFudGljb2xsaXNpb24gbGV2ZWwgMSAyMTIga0JhdWQKKyNkZWZpbmUgUElDQ19BTlRJQ09MTDEyICAgIDB4OTQgICAgICAgICAvLyE8IGFudGljb2xsaXNpb24gbGV2ZWwgMSA0MjQga0JhdWQKKyNkZWZpbmUgUElDQ19BTlRJQ09MTDEzICAgIDB4OTggICAgICAgICAvLyE8IGFudGljb2xsaXNpb24gbGV2ZWwgMSA4NDgga0JhdWQKKyNkZWZpbmUgUElDQ19BTlRJQ09MTDIgICAgIDB4OTUgICAgICAgICAvLyE8IGFudGljb2xsaXNpb24gbGV2ZWwgMgorI2RlZmluZSBQSUNDX0FOVElDT0xMMyAgICAgMHg5NyAgICAgICAgIC8vITwgYW50aWNvbGxpc2lvbiBsZXZlbCAzCisjZGVmaW5lIFBJQ0NfQVVUSEVOVDFBICAgICAweDYwICAgICAgICAgLy8hPCBhdXRoZW50aWNhdGlvbiB1c2luZyBrZXkgQQorI2RlZmluZSBQSUNDX0FVVEhFTlQxQiAgICAgMHg2MSAgICAgICAgIC8vITwgYXV0aGVudGljYXRpb24gdXNpbmcga2V5IEIKKyNkZWZpbmUgUElDQ19SRUFEMTYgICAgICAgIDB4MzAgICAgICAgICAvLyE8IHJlYWQgMTYgYnl0ZSBibG9jaworI2RlZmluZSBQSUNDX1dSSVRFMTYgICAgICAgMHhBMCAgICAgICAgIC8vITwgd3JpdGUgMTYgYnl0ZSBibG9jaworI2RlZmluZSBQSUNDX1dSSVRFNCAgICAgICAgMHhBMiAgICAgICAgIC8vITwgd3JpdGUgNCBieXRlIGJsb2NrCisjZGVmaW5lIFBJQ0NfREVDUkVNRU5UICAgICAweEMwICAgICAgICAgLy8hPCBkZWNyZW1lbnQgdmFsdWUKKyNkZWZpbmUgUElDQ19JTkNSRU1FTlQgICAgIDB4QzEgICAgICAgICAvLyE8IGluY3JlbWVudCB2YWx1ZQorI2RlZmluZSBQSUNDX1JFU1RPUkUgICAgICAgMHhDMiAgICAgICAgIC8vITwgcmVzdG9yZSBjb21tYW5kIGNvZGUKKyNkZWZpbmUgUElDQ19UUkFOU0ZFUiAgICAgIDB4QjAgICAgICAgICAvLyE8IHRyYW5zZmVyIGNvbW1hbmQgY29kZQorI2RlZmluZSBQSUNDX0hBTFQgICAgICAgICAgMHg1MCAgICAgICAgIC8vITwgaGFsdAorCisjZW5kaWYgLy8gUElDQ0NNRENPTlNUX0gKZGlmZiAtLWdpdCBhL2ljY19hcGR1X2xpYi9SSUNSZWcuSCBiL2ljY19hcGR1X2xpYi9SSUNSZWcuSApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMDgzYTNhCi0tLSAvZGV2L251bGwKKysrIGIvaWNjX2FwZHVfbGliL1JJQ1JlZy5ICkBAIC0wLDAgKzEsMTE1IEBACisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vICAgIENvcHlyaWdodCAoYyksIFBoaWxpcHMgU2VtaWNvbmR1Y3RvcnMgR3JhdGtvcm4KKy8vCisvLyAgICAgICAgICAgICAgICAgICAgIChDKVBISUxJUFMgRWxlY3Ryb25pY3MgTi5WLiAyMDAwCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsIHJpZ2h0cyBhcmUgcmVzZXJ2ZWQuIAorLy8gIFBoaWxpcHMgcmVzZXJ2ZXMgdGhlIHJpZ2h0IHRvIG1ha2UgY2hhbmdlcyB3aXRob3V0IG5vdGljZSBhdCBhbnkgdGltZS4KKy8vIFBoaWxpcHMgbWFrZXMgbm8gd2FycmFudHksIGV4cHJlc3NlZCwgaW1wbGllZCBvciBzdGF0dXRvcnksIGluY2x1ZGluZyBidXQKKy8vIG5vdCBsaW1pdGVkIHRvIGFueSBpbXBsaWVkIHdhcnJhbnR5IG9mIG1lcmNoYW50aWJpbGl0eSBvciBmaXRuZXNzIGZvciBhbnkKKy8vcGFydGljdWxhciBwdXJwb3NlLCBvciB0aGF0IHRoZSB1c2Ugd2lsbCBub3QgaW5mcmluZ2UgYW55IHRoaXJkIHBhcnR5IHBhdGVudCwKKy8vIGNvcHlyaWdodCBvciB0cmFkZW1hcmsuIFBoaWxpcHMgbXVzdCBub3QgYmUgbGlhYmxlIGZvciBhbnkgbG9zcyBvciBkYW1hZ2UKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlzaW5nIGZyb20gaXRzIHVzZS4KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLyohIFxmaWxlIFJJQ1JlZy5oCisqCisqIFJlZ2lzdGVyIFNldHRpbmcgb2YgdGhlIHJlYWRlciBJQworKi8KKyNpZm5kZWYgUklDUkVHX0gKKyNkZWZpbmUgUklDUkVHX0gKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCit7CisjZW5kaWYKKworLy9DVjUyMCByZWdzCisvLyBQQUdFIDAKKyNkZWZpbmUgICAgIFJGVTAwICAgICAgICAgICAgICAgICAweDAwICAgIAorI2RlZmluZSAgICAgQ29tbWFuZFJlZyAgICAgICAgICAgIDB4MDEgICAgCisjZGVmaW5lICAgICBDb21JRW5SZWcgICAgICAgICAgICAgMHgwMiAgICAKKyNkZWZpbmUgICAgIERpdmxFblJlZyAgICAgICAgICAgICAweDAzICAgIAorI2RlZmluZSAgICAgQ29tSXJxUmVnICAgICAgICAgICAgIDB4MDQgICAgCisjZGVmaW5lICAgICBEaXZJcnFSZWcgICAgICAgICAgICAgMHgwNQorI2RlZmluZSAgICAgRXJyb3JSZWcgICAgICAgICAgICAgIDB4MDYgICAgCisjZGVmaW5lICAgICBTdGF0dXMxUmVnICAgICAgICAgICAgMHgwNyAgICAKKyNkZWZpbmUgICAgIFN0YXR1czJSZWcgICAgICAgICAgICAweDA4ICAgIAorI2RlZmluZSAgICAgRklGT0RhdGFSZWcgICAgICAgICAgIDB4MDkKKyNkZWZpbmUgICAgIEZJRk9MZXZlbFJlZyAgICAgICAgICAweDBBCisjZGVmaW5lICAgICBXYXRlckxldmVsUmVnICAgICAgICAgMHgwQgorI2RlZmluZSAgICAgQ29udHJvbFJlZyAgICAgICAgICAgIDB4MEMKKyNkZWZpbmUgICAgIEJpdEZyYW1pbmdSZWcgICAgICAgICAweDBECisjZGVmaW5lICAgICBDb2xsUmVnICAgICAgICAgICAgICAgMHgwRQorI2RlZmluZSAgICAgUkZVMEYgICAgICAgICAgICAgICAgIDB4MEYKKy8qUEFHRSAxICovCisjZGVmaW5lICAgICBSRlUxMCAgICAgICAgICAgICAgICAgMHgxMAorI2RlZmluZSAgICAgTW9kZVJlZyAgICAgICAgICAgICAgIDB4MTEKKyNkZWZpbmUgICAgIFR4TW9kZVJlZyAgICAgICAgICAgICAweDEyCisjZGVmaW5lICAgICBSeE1vZGVSZWcgICAgICAgICAgICAgMHgxMworI2RlZmluZSAgICAgVHhDb250cm9sUmVnICAgICAgICAgIDB4MTQKKyNkZWZpbmUgICAgIFR4QXNrUmVnICAgICAgICAgICAgICAweDE1CisjZGVmaW5lICAgICBUeFNlbFJlZyAgICAgICAgICAgICAgMHgxNgorI2RlZmluZSAgICAgUnhTZWxSZWcgICAgICAgICAgICAgIDB4MTcKKyNkZWZpbmUgICAgIFJ4VGhyZXNob2xkUmVnICAgICAgICAweDE4CisjZGVmaW5lICAgICBEZW1vZFJlZyAgICAgICAgICAgICAgMHgxOQorI2RlZmluZSAgICAgUkZVMUEgICAgICAgICAgICAgICAgIDB4MUEKKyNkZWZpbmUgICAgIFJGVTFCICAgICAgICAgICAgICAgICAweDFCCisjZGVmaW5lICAgICBNaWZhcmVSZWcgICAgICAgICAgICAgMHgxQworI2RlZmluZSAgICAgUkZVMUQgICAgICAgICAgICAgICAgIDB4MUQKKyNkZWZpbmUgICAgIFJGVTFFICAgICAgICAgICAgICAgICAweDFFCisjZGVmaW5lICAgICBTZXJpYWxTcGVlZFJlZyAgICAgICAgMHgxRgorLypQQUdFIDIgKi8KKyNkZWZpbmUgICAgIFJGVTIwICAgICAgICAgICAgICAgICAweDIwICAKKyNkZWZpbmUgICAgIENSQ1Jlc3VsdFJlZ00gICAgICAgICAweDIxCisjZGVmaW5lICAgICBDUkNSZXN1bHRSZWdMICAgICAgICAgMHgyMgorI2RlZmluZSAgICAgUkZVMjMgICAgICAgICAgICAgICAgIDB4MjMKKyNkZWZpbmUgICAgIE1vZFdpZHRoUmVnICAgICAgICAgICAweDI0CisjZGVmaW5lICAgICBSRlUyNSAgICAgICAgICAgICAgICAgMHgyNQorI2RlZmluZSAgICAgUkZDZmdSZWcgICAgICAgICAgICAgIDB4MjYKKyNkZWZpbmUgICAgIEdzTlJlZyAgICAgICAgICAgICAgICAweDI3CisjZGVmaW5lICAgICBDV0dzQ2ZnUmVnICAgICAgICAgICAgMHgyOAorI2RlZmluZSAgICAgTW9kR3NDZmdSZWcgICAgICAgICAgIDB4MjkKKyNkZWZpbmUgICAgIFRNb2RlUmVnICAgICAgICAgICAgICAweDJBCisjZGVmaW5lICAgICBUUHJlc2NhbGVyUmVnICAgICAgICAgMHgyQgorI2RlZmluZSAgICAgVFJlbG9hZFJlZ0ggICAgICAgICAgIDB4MkMKKyNkZWZpbmUgICAgIFRSZWxvYWRSZWdMICAgICAgICAgICAweDJECisjZGVmaW5lICAgICBUQ291bnRlclZhbHVlUmVnSCAgICAgMHgyRQorI2RlZmluZSAgICAgVENvdW50ZXJWYWx1ZVJlZ0wgICAgIDB4MkYKKy8qIFBBR0UgMyAqLworI2RlZmluZSAgICAgUkZVMzAgICAgICAgICAgICAgICAgIDB4MzAKKyNkZWZpbmUgICAgIFRlc3RTZWwxUmVnICAgICAgICAgICAweDMxCisjZGVmaW5lICAgICBUZXN0U2VsMlJlZyAgICAgICAgICAgMHgzMgorI2RlZmluZSAgICAgVGVzdFBpbkVuUmVnICAgICAgICAgIDB4MzMKKyNkZWZpbmUgICAgIFRlc3RQaW5WYWx1ZVJlZyAgICAgICAweDM0CisjZGVmaW5lICAgICBUZXN0QnVzUmVnICAgICAgICAgICAgMHgzNQorI2RlZmluZSAgICAgQXV0b1Rlc3RSZWcgICAgICAgICAgIDB4MzYKKyNkZWZpbmUgICAgIFZlcnNpb25SZWcgICAgICAgICAgICAweDM3CisjZGVmaW5lICAgICBBbmFsb2dUZXN0UmVnICAgICAgICAgMHgzOAorI2RlZmluZSAgICAgVGVzdERBQzFSZWcgICAgICAgICAgIDB4MzkgIAorI2RlZmluZSAgICAgVGVzdERBQzJSZWcgICAgICAgICAgIDB4M0EgICAKKyNkZWZpbmUgICAgIFRlc3RBRENSZWcgICAgICAgICAgICAweDNCICAgCisjZGVmaW5lICAgICBSRlUzQyAgICAgICAgICAgICAgICAgMHgzQyAgIAorI2RlZmluZSAgICAgUkZVM0QgICAgICAgICAgICAgICAgIDB4M0QgICAKKyNkZWZpbmUgICAgIFJGVTNFICAgICAgICAgICAgICAgICAweDNFICAgCisjZGVmaW5lICAgICBSRlUzRgkJICAgICAgICAgIDB4M0YKKworCisjZGVmaW5lICAgICBERUZfRklGT19MRU5HVEggICAgICAgNjQgIC8vITwgZGVmYXVsdCBGSUZPIHNpemUKKworLy8gICAgICAgICAgICAgICAgICAgUCBDIEQgLSBDIE8gTSBNIEEgTiBEIFMKKyNkZWZpbmUgUENEX0lETEUgICAgICAgICAgICAgIDB4MDAgICAgICAgICAgICAgICAvL8ihz/u1sceww/zB7gorI2RlZmluZSBQQ0RfQVVUSEVOVCAgICAgICAgICAgMHgwRSAgICAgICAgICAgICAgIC8v0enWpMPc1L8JTUlGQVJFILHq17zIz9akCisjZGVmaW5lIFBDRF9SRUNFSVZFICAgICAgICAgICAweDA4ICAgICAgICAgICAgICAgLy+908rVyv2+3QorI2RlZmluZSBQQ0RfVFJBTlNNSVQgICAgICAgICAgMHgwNCAgICAgICAgICAgICAgIC8vt6LLzcr9vt0KKyNkZWZpbmUgUENEX1RSQU5TQ0VJVkUgICAgICAgIDB4MEMgICAgICAgICAgICAgICAvL7eiy82yor3TytXK/b7dCisjZGVmaW5lIFBDRF9SRVNFVFBIQVNFICAgICAgICAweDBGICAgICAgICAgICAgICAgLy+4tM67CisjZGVmaW5lIFBDRF9DQUxDQ1JDICAgICAgICAgICAweDAzICAgICAgICAgICAgICAgLy9DUkO8xsvjCisjZGVmaW5lIFBDRF9TT0ZUUlNUICAgICAgICAgICAweDBGICAgICAgICAgICAgICAgLy/I7bz+uLTOuworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLy9SSUNSRUdfSAorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLyBFbmQgb2YgRmlsZQorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCmRpZmYgLS1naXQgYS9pY2NfYXBkdV9saWIvVDBUMS5jIGIvaWNjX2FwZHVfbGliL1QwVDEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOGY5ZDdiCi0tLSAvZGV2L251bGwKKysrIGIvaWNjX2FwZHVfbGliL1QwVDEuYwpAQCAtMCwwICsxLDQ2MiBAQAorLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVNPNzgxNi0xIFQwLFQxKMG0IMK3ILLjKSC0qyDK5CDQrSDS6SDH/SC2ryAKKyoJCisqCQkJCQkJCQkJICAgIF9fX19fIElTTzc4MTYtMiDBtCDCtyCy4yDH/SC2r19fX19fCisqCisqICDD6CDK9qO6INb30qrN6rPJIFQwLFQxKMr9vt3BtMK3suMptKvK5NCt0ukgyv2+3b27u7sKKyoKKyogIMXkINbDo7ogCisqICAgICAgICAgINTL0NC7t76zICAgIDogS2VpbCBBUk0gKCBSZWFsVmlldyBNREsgKSAgIHYzLjA1xsa94rDmsb4KKyogICAgICAgICAgu7e+s8no1sMgICAgOiAxKSDEo8q9OiBUaHVtYi1Nb2RlICsgVXNlIENyb3NzLU1vZHVsZSBPcHRpbWl6YXRpb24gICAgICAgICAgCisqICAgICAgICAgICAgICAgICAgICAgICAgMikg08W7rzogxKzIzyAoIExldmVsIDAgKC0wMCkgLi4uKQorKgorKiAg16Ig0uKjuiBUMCxUMbSryuTQrdLpt/u6z0lTTzc4MTYtMqOsRU1WserXvKO7CisqCisqICCy4yDD+6O6IFQwVDEuQyAKKyoKKyogINf3INXfo7ogWmhhbmdfT1NAMTYzLmNvbQorKgorKiAgsOYgsb6juiBWMS4wICAKKyogICAgICAgICAgICAgICAgICAKKyogIMjVIMbao7ogMjAwOC0wMy0zMQorKgorKiAgICBDb3B5cmlnaHQgKGMpIDIwMDggICAgICAgICAgICAgQnJhbmQtTkVXIEMuQS5QIEVsZWN0cm9uaWNzIFRlY2hub2xvZ3kgQ08uLExURAorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisKKyAgI2luY2x1ZGUgICAiTElCX0luY2x1ZGVzLkgiCisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoJCQkJCQkJCQkJICAgICCzoyDBvworKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisvLyAjZGVmaW5lIE1FTU9SWV9CVUZGRVJfU0laRSAgICAyNTYKKworLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCQkJCQkJCQkJCSAgICAgwOAg0M0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworCisKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgkJCQkJCQkJCQkgICAgILHkIMG/CisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KKy8vIGV4dGVybiB1bnNpZ25lZCBjaGFyIHVjTWVtUG9vbFtdOyAgICAgICAgICAgIC8vtb3Ksbry06bIpbX0IElDQ19BRFBVX01hcGVyLkPW0Lao0uW5/QorLy8gZXh0ZXJuIHVuc2lnbmVkIGNoYXIgc2NNZW1Qb29sW107ICAgICAgICAgICAgLy+1vcqxuvLTpsiltfQgSUNDX0FEUFVfTWFwZXIuQ9bQtqjS5bn9CisKKy8vIElDQ1NUUlVDVAkqVDAxQ3VycmVudEljY0luZm87CSAgICAgICAgICAvL7Wxx7Cy2df3tcS/qNDFz6K2qNLlICBJU09VU0FSVERyaXZlci5D1tC2qNLluf0KKworLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICAgICAgICAgCQkJCQkJCQkgICAgILqvIMr9CisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KKy8vIGV4dGVybiB2b2lkIFNsZWVwVXModW5zaWduZWQgc2hvcnQgdXMpOworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiu6r8r9uabE3KO6ttTK/dfp1tC1xNSqy9i9+NDQ0uy78goryOu/2rLOyv2jumJ1ZmZlcizK/dfpyte12Na3o7tsZW5ndGgsyv3X6bOktsgKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwordW5zaWduZWQgY2hhciBYT1IodW5zaWduZWQgY2hhciAqYnVmZmVyLHVuc2lnbmVkIGNoYXIgbGVuZ3RoKQoreworCXVuc2lnbmVkIGNoYXIgcmVzdWx0OworCXVuc2lnbmVkIGNoYXIgaTsKKwlyZXN1bHQgPTA7CisJZm9yKGkgPTA7aTwgbGVuZ3RoO2krKykKKwl7CisJCXJlc3VsdCBePWJ1ZmZlcltpXTsKKwl9CisgIHJldHVybihyZXN1bHQpOworfQordm9pZCBDYWxDcmMxNih1bnNpZ25lZCBjaGFyKiBpbnB1dCwgdW5zaWduZWQgY2hhciogQ3JjMTYsIHVuc2lnbmVkIGludCBsZW4pICAgCit7CisJdW5zaWduZWQgaW50IHRlbXA9MHg2MzYzOworICAgIHVuc2lnbmVkIGludCBpOworICAgIHVuc2lnbmVkIGNoYXIgajsKKworCWZvciggaT0wOyBpPGxlbjsgaSsrICkKKwl7CQorCSAgdGVtcCA9IHRlbXAgXigodW5zaWduZWQgaW50KWlucHV0W2ldKTsKKwkgIGZvciAoaiA9IDA7IGogPCA4OyBqKyspCisJICB7CisJCWlmICh0ZW1wICYgMHgwMDAxKQorCQl7CisJCSAgdGVtcCA9ICh0ZW1wID4+IDEpIF4gMHg4NDA4OworCSAgICAgICAgfQorCQllbHNlCisJCXsKKwkJICB0ZW1wID0gKHRlbXAgPj4gMSk7CisJCX0KKwkgIH0KKwl9CisJQ3JjMTZbMF0gPSAodW5zaWduZWQgY2hhcikodGVtcCk7CisgIAlDcmMxNlsxXSA9ICh1bnNpZ25lZCBjaGFyKSh0ZW1wPj44KTsKK30gCisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogICAgICAgICAJCQkJCQkJCSAgIElDIL+oIMflILP9ILv5ILG+INDFIM+iCisqCisqICDD6CDK9qO6vdMgtKUgs/Ugyrwgu68gv6gg0MUgz6Igyv0gvt0gveEgubkKKyoKKyogILLOIMr9o7ppY2ggIGljv6i907/atqjS5SAgz8Ky49Ct0unRodTxCisqICAgICAgICAgY2lkICDU3cO709DKudPDCisqCisqICC3tSC72KO6zt4KKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworIHZvaWQgUmVzZXRJY2NJbmZvKCB1bnNpZ25lZCBjaGFyIGNpZCwgSUNDU1RSVUNUICppbmZvICkKKyAgeworCVQwMUN1cnJlbnRJY2NJbmZvID0gaW5mbzsKKwlpbmZvLT5FWERJID0gMTsKKwlpbmZvLT5ibGtuciA9IDA7CisgIAlpbmZvLT5NU25kQnVmZmVyID0gc2NNZW1Qb29sOwkJLy+3osvNw/zB7ru6s+XH+AlTQU2/qLXEu7qz5cf4o6y21NPavdO0pb+o06bTw6OstMu0ptDo0qrW2NDCyei8xgorICAJaW5mby0+TVJjdkJ1ZmZlciA9IHNjTWVtUG9vbDsJCS8vvdPK1cP8we67urPlx/gKKyAgfQorCisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogICAgICAgICAJCQkJCQkJCSAgIElDIL+oIMnPILXnILKiILi0IM67CisqCisqICDD6CDK9qO6SVNPNzgxNiBUPTAg0K3S6UlDv6jJz7XnsqK4tM67ICAgICAgICAgIMS/x7BUPTAsVD0x0K3S6ba8yrnTw7TLtffTw7TLuq/K/T8KKyoKKyogILLOIMr9o7ppY2ggIGljv6i907/atqjS5SAgz8Ky49Ct0unRodTxCisqCisqICC3tSC72KO6zt4KKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworIHVuc2lnbmVkIHNob3J0IFQwUG93ZXJPbkNhcmQoIGludCBpY2ggKQorICB7CisJcmV0dXJuIElDQ19Qb3dlck9uQ2FyZCggaWNoICk7ICAgICAgLy+/qCDJzyC15yCyoiC4tCDOuworICB9CisKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgICAgICAgIAkJCQkJCQkJICAgSUMgv6ggz8IgtecgtKUgteMgys0gt8UKKyoKKyogIMPoIMr2o7pJU083ODE2IFQ9MCDQrdLpSUO/qM/Ctee0pbXjys23xSAgICAgICAgICDJz7XnwOS4tM67uvO199PDwcu0y7qvyv0/CisqCisqICCyziDK/aO6aWNoICBpY7+ovdO/2rao0uUgIM/CsuPQrdLp0aHU8QorKgorKiAgt7Ugu9ijus7eCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KKyB2b2lkIFQwUG93ZXJPZmZDYXJkKCBpbnQgaWNoICkKKyAgeworCUlDQ19Qb3dlck9mZkNhcmQoIGljaCApOworICB9CisKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgICAgICAgIAkJCQkJCQkJICAgVDAg0K0g0ukgv6ggyMgguLQgzrsgKMDkuLTOuykKKyoKKyogIMPoIMr2o7pJU083ODE2IFQ9MCC/qCDIyCC4tCDOuyAgICAgICAgICDEv8ewVD0wLFQ9MdCt0um2vMq508O0y7i0zrsKKyoKKyogILLOIMr9o7ppY2ggICAgaWO/qL3Tv9q2qNLlICDPwrLj0K3S6dGh1PEKKyogICAgICAgICAqSW5mbyAgSUO/qLWxx7DXtMystqjS5QorKgorKiAgt7Ugu9ijus7eCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KKyB1bnNpZ25lZCBzaG9ydCBUMFJlc2V0Q2FyZCggaW50IGljaCwgSUNDU1RSVUNUICpJbmZvICkKKyAgeworCVQwMUN1cnJlbnRJY2NJbmZvID0gSW5mbzsgLy8gaW50aWFsaXplIHBvaW50ZXIgdG8gUGljYyBpbmZvIHN0cnVjdHVyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR2xvYmFsIHBvaW50ZXIgdG8gdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBQaWNjICAKKwkJCSAgICAgICAgICAgICAgICAgIC8vIGZvciB1c2VkIGluIG90aGVyIHJvdXRpbmUuIAorCQkJCQorCXJldHVybiBJQ0NfUmVzZXRDYXJkKCBpY2ggKTsKKyAgfQorCisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogICAgICAgICAJCQkJCQkJCSAgIFQwINCtINLpIMr9IL7dIL27ILu7ICAgICAKKyoKKyogIMPoIMr2o7pJU083ODE2IFQ9MLSryuTQrdLpyv2+3b27u7ujrNb30qrKx82ouf03ODE2zai5/b/az9+3osvNyv2+3bKivdPK1cr9vt0KKyoKKyogILLOIMr9o7oqc2VuZF9idWYgICAgICAgt6LLzcr9vt27urPlx/jWuNXrCisqICAgICAgICAgc25kX2J1Zl9sZW4gICAgILeiy83K/b7ds6S2yAorKiAgICAgICAgICoqcmVjX2J1ZiAgICAgICC908rVyv2+3bu6s+XH+Na41esKKyogICAgICAgICAqcmVjX2J1Zl9sZW4gICAgvdPK1cr9vt2zpLbICisqICAgICAgICAgaWNoICAgICAgICAgICAgIGljv6i907/atqjS5SAgz8Ky49Ct0unRodTxCisqCisqICC3tSC72KO6stnX97PJuaa78sqnsNzXtMyswusKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworIHVuc2lnbmVkIHNob3J0IFQwRXhjaGFuZ2UoIHVuc2lnbmVkIGNoYXIgKnNuZF9idWYsIHVuc2lnbmVkIGNoYXIgc25kX2J1Zl9sZW4sIHVuc2lnbmVkIGNoYXIgKipyZWNfYnVmLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpyZWNfYnVmX2xlbiwgaW50IGljaCApCisgIHsKKwl1bnNpZ25lZCBzaG9ydCByY29kZTsKKwkKKwltZW1jcHkoVDAxQ3VycmVudEljY0luZm8tPk1TbmRCdWZmZXIsc25kX2J1Ziw1KTsKKwlpZihzbmRfYnVmX2xlbiA+IDUpCisJeworCQlyY29kZSA9IFQwX1RQRFUoVDAxQ3VycmVudEljY0luZm8tPk1TbmRCdWZmZXIsIHNuZF9idWYrNSwgMSxyZWNfYnVmX2xlbiwgaWNoKTsKKwl9CisJZWxzZQorCXsKKwkJcmNvZGUgPSBUMF9UUERVKFQwMUN1cnJlbnRJY2NJbmZvLT5NU25kQnVmZmVyLCBUMDFDdXJyZW50SWNjSW5mby0+TVJjdkJ1ZmZlciwgMCwgcmVjX2J1Zl9sZW4sIGljaCk7CisJfQorCWlmKChyY29kZSAmIDB4ZmYwMCkgPT0gMHg2MTAwKQkJLy+3tbvYMHg2MXh4IHh4vs3Kx7e1u9i1xLvYy83K/b7ds6S2yAorCXsKKwkJVDAxQ3VycmVudEljY0luZm8tPk1TbmRCdWZmZXJbMF0gPSAweDAwOworCQlUMDFDdXJyZW50SWNjSW5mby0+TVNuZEJ1ZmZlclsxXSA9IDB4QzA7CisJCVQwMUN1cnJlbnRJY2NJbmZvLT5NU25kQnVmZmVyWzJdID0gMHgwMDsKKwkJVDAxQ3VycmVudEljY0luZm8tPk1TbmRCdWZmZXJbM10gPSAweDAwOworCQlUMDFDdXJyZW50SWNjSW5mby0+TVNuZEJ1ZmZlcls0XSA9IHJjb2RlICYgMHhmZjsKKwkJcmNvZGUgPSBUMF9UUERVKFQwMUN1cnJlbnRJY2NJbmZvLT5NU25kQnVmZmVyLCBUMDFDdXJyZW50SWNjSW5mby0+TVJjdkJ1ZmZlciwgMiwgcmVjX2J1Zl9sZW4sIGljaCk7CS8vR2V0UmVzcG9uc2UKKwkJLy8qcmVjX2J1Zl9sZW4gPSBUMDFDdXJyZW50SWNjSW5mby0+TVNuZEJ1ZmZlcls0XTsKKwl9CisJZWxzZSBpZigocmNvZGUgJiAweGZmMDApID09IDB4NkMwMCkJCS8vt7W72DB4NkN4eCB4eL7Nyse3tbvYtcS72MvNyv2+3bOktsgKKwl7CisJCVQwMUN1cnJlbnRJY2NJbmZvLT5NU25kQnVmZmVyWzRdID0gcmNvZGUgJiAweGZmOworCQlyY29kZSA9IFQwX1RQRFUoVDAxQ3VycmVudEljY0luZm8tPk1TbmRCdWZmZXIsIFQwMUN1cnJlbnRJY2NJbmZvLT5NUmN2QnVmZmVyLCAyLCByZWNfYnVmX2xlbiwgaWNoKTsJLy+808jrTGW687XEw/zB7gorLy8JCSpyZWNfYnVmX2xlbiA9IFQwMUN1cnJlbnRJY2NJbmZvLT5NU25kQnVmZmVyWzRdOworCX0KKwkqcmVjX2J1ZiA9IFQwMUN1cnJlbnRJY2NJbmZvLT5NUmN2QnVmZmVyOworCXJldHVybiByY29kZTsKKyAgfQorCisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogICAgICAgICAJCQkJCQkJCSAgIFQxINCtINLpIMr9IL7dIL27ILu7CisqCisqICDD6CDK9qO6SVNPNzgxNiBUPTG0q8rk0K3S6cr9vt29u7u7o6zW99KqysfNqLn9NzgxNs2ouf2/2s/ft6LLzcr9vt2yor3TytXK/b7dCisqCisqICCyziDK/aO6CisqICAgICAgICAgY2lkICAgICAgICAgINTdw7vT0Mq508M/CisqICAgICAgICAgbmFkX3NlbmQKKyogICAgICAgICAqY21kX2J1ZiAgICAgt6LLzcP8we67urPlx/jWuNXrCisqICAgICAgICAgY21kX2xlbiAgICAgILeiy83D/MHuyv2+3bOktsgKKyogICAgICAgICAqKnJlY19idWYgICAgvdPK1cr9vt27urPlx/jWuNXrCisqICAgICAgICAgKnJlY19idWZfbGVuIL3TytXK/b7ds6S2yAorKiAgICAgICAgIGljaCAgICAgICAgICBpY7+ovdO/2rao0uUgIM/CsuPQrdLp0aHU8QorKgorKiAgt7Ugu9ijurLZ1/ezybmmu/LKp7Dc17TMrMLrCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KKyB1bnNpZ25lZCBzaG9ydCBUMUV4Y2hhbmdlKHVuc2lnbmVkIGNoYXIgY2lkLCB1bnNpZ25lZCBjaGFyIG5hZF9zZW5kLHVuc2lnbmVkIGNoYXIgKmNtZF9idWYsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBjbWRfbGVuLCB1bnNpZ25lZCBjaGFyICoqcmVjX2J1ZiwgdW5zaWduZWQgY2hhciAqcmVjX2J1Zl9sZW4sIGludCBpY2gpCisgIHsKKwlzaG9ydCB3Q2FyZFN0YXR1cz0wLCB3UHJvdG9jb2xTdGF0dXM9MDsKKwl1bnNpZ25lZCBjaGFyIFNlbmRfbGVuZ3RoLFJlc3BvbnNlTGVuZ3RoOworCXVuc2lnbmVkIGNoYXIgQnVmSW5kZXg7CisJCisJQnVmSW5kZXggPSAwOworCQorCVQwMUN1cnJlbnRJY2NJbmZvLT5NU25kQnVmZmVyW0J1ZkluZGV4KytdID0gbmFkX3NlbmQ7CQkvL05BRAorCVQwMUN1cnJlbnRJY2NJbmZvLT5NU25kQnVmZmVyW0J1ZkluZGV4KytdID0gVDAxQ3VycmVudEljY0luZm8tPmJsa25yPDw2OwkvL1BDQgorCVQwMUN1cnJlbnRJY2NJbmZvLT5NU25kQnVmZmVyW0J1ZkluZGV4KytdID0gY21kX2xlbjsJCS8vTEVOCisJbWVtY3B5KCYoVDAxQ3VycmVudEljY0luZm8tPk1TbmRCdWZmZXJbQnVmSW5kZXhdKSxjbWRfYnVmLGNtZF9sZW4pOworCVNlbmRfbGVuZ3RoID0gQnVmSW5kZXgrY21kX2xlbjsKKwlpZihUMDFDdXJyZW50SWNjSW5mby0+Q3JjPT0xKQorCXsKKwkJQ2FsQ3JjMTYoVDAxQ3VycmVudEljY0luZm8tPk1TbmRCdWZmZXIsVDAxQ3VycmVudEljY0luZm8tPk1TbmRCdWZmZXIrU2VuZF9sZW5ndGgsU2VuZF9sZW5ndGgpOworCQlTZW5kX2xlbmd0aCArPSAyOworCX0KKwllbHNlCisJeworCQlUMDFDdXJyZW50SWNjSW5mby0+TVNuZEJ1ZmZlcltTZW5kX2xlbmd0aF0gPSBYT1IoVDAxQ3VycmVudEljY0luZm8tPk1TbmRCdWZmZXIsU2VuZF9sZW5ndGgpOworCQlTZW5kX2xlbmd0aCArPSAxOworCX0KKwkKKyAgICB3UHJvdG9jb2xTdGF0dXMgPSBUMV9UUERVKFQwMUN1cnJlbnRJY2NJbmZvLT5NU25kQnVmZmVyLFNlbmRfbGVuZ3RoLFQwMUN1cnJlbnRJY2NJbmZvLT5NUmN2QnVmZmVyLCZSZXNwb25zZUxlbmd0aCxpY2gpOworICAgICAgICAJCisJaWYoIHdQcm90b2NvbFN0YXR1cyAhPSBUQ0xfT0sgKQorCXsKKwkJLy8JRXJyb3I6IGNvdWxkIG5vdCBleGNoYW5nZSBpbmZvIGJsb2NrcyB3aXRoIHRoZSBjYXJkLgorCSAgIAlyZXR1cm4gKHdQcm90b2NvbFN0YXR1cyk7CisJfQorCisJLy8JQ2hlY2sgaWYgcmVjZWl2ZWQgYmxvY2sgaXMgYSBTLWJsb2NrIGZvciBXVFgKKyAgICB3aGlsZSggKFQwMUN1cnJlbnRJY2NJbmZvLT5NUmN2QnVmZmVyWzFdJjB4ZTMpID09IDB4YzMgKQorCXsKKwkJVDAxQ3VycmVudEljY0luZm8tPk1TbmRCdWZmZXJbMF0gPSBuYWRfc2VuZDsKKwkJVDAxQ3VycmVudEljY0luZm8tPk1TbmRCdWZmZXJbMV0gPSAweGUzOworICAgICAgICBUMDFDdXJyZW50SWNjSW5mby0+TVNuZEJ1ZmZlclsyXSA9IDE7CisgICAgICAgIFQwMUN1cnJlbnRJY2NJbmZvLT5NU25kQnVmZmVyWzNdID0gVDAxQ3VycmVudEljY0luZm8tPk1SY3ZCdWZmZXJbM107CisJCVNlbmRfbGVuZ3RoID0gNDsKKwkJaWYoVDAxQ3VycmVudEljY0luZm8tPkNyYz09MSkKKwkJeworCQkJQ2FsQ3JjMTYoVDAxQ3VycmVudEljY0luZm8tPk1TbmRCdWZmZXIsVDAxQ3VycmVudEljY0luZm8tPk1TbmRCdWZmZXIrU2VuZF9sZW5ndGgsU2VuZF9sZW5ndGgpOworCQkJU2VuZF9sZW5ndGggKz0gMjsKKwkJfQorCQllbHNlCisJCXsKKwkJCVQwMUN1cnJlbnRJY2NJbmZvLT5NU25kQnVmZmVyW1NlbmRfbGVuZ3RoXSA9IFhPUihUMDFDdXJyZW50SWNjSW5mby0+TVNuZEJ1ZmZlcixTZW5kX2xlbmd0aCk7CisJCQlTZW5kX2xlbmd0aCArPSAxOworCQl9CisgICAgICAgIAkKKwkJLy8JQ29tbXVuaWNhdGUgdGhlIHByZXBhcmVkIGJ1ZmZlciB0byB0aGUgY2FyZCBhbmQgZ2V0IGl0cyByZXNwb25zZS4KKyAgICAJd1Byb3RvY29sU3RhdHVzID0gVDFfVFBEVShUMDFDdXJyZW50SWNjSW5mby0+TVNuZEJ1ZmZlcixTZW5kX2xlbmd0aCxUMDFDdXJyZW50SWNjSW5mby0+TVJjdkJ1ZmZlciwmUmVzcG9uc2VMZW5ndGgsaWNoKTsKKyAgICAgICAgaWYoIHdQcm90b2NvbFN0YXR1cyAhPSBUQ0xfT0sgKQorCQl7CisJCQkvLwlFcnJvcjogY291bGQgbm90IGV4Y2hhbmdlIGluZm8gYmxvY2tzIHdpdGggdGhlIGNhcmQuCisgICAgICAJCXJldHVybiAod1Byb3RvY29sU3RhdHVzKTsKKwkJfQorCX0KKwkvLwlDaGVjayBpZiByZWNlaXZlZCBibG9jayBpcyBhIEktYmxvY2sgZm9yIGNoYWluCisgICAgd2hpbGUoIChUMDFDdXJyZW50SWNjSW5mby0+TVJjdkJ1ZmZlclsxXSYweEEwKSA9PSAweDIwICkJLy/Q6NKq1tjJ6LzGCisJeworLy8JCWlmKFQwMUN1cnJlbnRJY2NJbmZvLT5ibGtuciAhPSAoKFQwMUN1cnJlbnRJY2NJbmZvLT5NUmN2QnVmZmVyWzFdPj42KSYweDAxKSApCQorLy8JCXsKKy8vCQkJLy8JRXJyb3I6IGJsb2NrIG51bWJlciBub3QgZXF1YWwuCisJICAgCQlyZXR1cm4gKFRDTF9GQVRBTF9QUk9UT0NPTCk7CisvLwkJfQorLy8JICAgIFQwMUN1cnJlbnRJY2NJbmZvLT5ibGtuciBePSAxOwkvLyBUb2dnbGUgYmxvY2sgbnVtYmVyCisvLworLy8JCVQwMUN1cnJlbnRJY2NJbmZvLT5NU25kQnVmZmVyWzBdID0gbmFkX3NlbmQ7CisvLwkJVDAxQ3VycmVudEljY0luZm8tPk1TbmRCdWZmZXJbMV0gPSAweDgwIHwgVDAxQ3VycmVudEljY0luZm8tPmJsa25yPDw0OworLy8gICAgICAgIFQwMUN1cnJlbnRJY2NJbmZvLT5NU25kQnVmZmVyWzJdID0gMDsKKy8vCQlTZW5kX2xlbmd0aCA9IDM7CisvLwkJaWYoVDAxQ3VycmVudEljY0luZm8tPkNyYz09MSkKKy8vCQl7CisvLwkJCUNhbENyYzE2KFQwMUN1cnJlbnRJY2NJbmZvLT5NU25kQnVmZmVyLFQwMUN1cnJlbnRJY2NJbmZvLT5NU25kQnVmZmVyK1NlbmRfbGVuZ3RoLFNlbmRfbGVuZ3RoKTsKKy8vCQkJU2VuZF9sZW5ndGggKz0gMjsKKy8vCQl9CisvLwkJZWxzZQorLy8JCXsKKy8vCQkJVDAxQ3VycmVudEljY0luZm8tPk1TbmRCdWZmZXJbU2VuZF9sZW5ndGhdID0gWE9SKFQwMUN1cnJlbnRJY2NJbmZvLT5NU25kQnVmZmVyLFNlbmRfbGVuZ3RoKTsKKy8vCQkJU2VuZF9sZW5ndGggKz0gMTsKKy8vCQl9CisvLyAgICAgICAgCQorLy8JCS8vCUNvbW11bmljYXRlIHRoZSBwcmVwYXJlZCBidWZmZXIgdG8gdGhlIGNhcmQgYW5kIGdldCBpdHMgcmVzcG9uc2UuCisvLyAgICAJd1Byb3RvY29sU3RhdHVzID0gVDFfVFBEVShUMDFDdXJyZW50SWNjSW5mby0+TVNuZEJ1ZmZlcixTZW5kX2xlbmd0aCxUMDFDdXJyZW50SWNjSW5mby0+TVJjdkJ1ZmZlciwmUmVzcG9uc2VMZW5ndGgsaWNoKTsKKy8vICAgICAgICBpZiggd1Byb3RvY29sU3RhdHVzICE9IFRDTF9PSyApCisvLwkJeworLy8JCQkvLwlFcnJvcjogY291bGQgbm90IGV4Y2hhbmdlIGluZm8gYmxvY2tzIHdpdGggdGhlIGNhcmQuCisvLyAgICAgIAkJcmV0dXJuICh3UHJvdG9jb2xTdGF0dXMpOworLy8JCX0KKwl9CisJLy8JQ2hlY2sgdGhlIGxlbmd0aCBvZiB0aGUgcmVzcG9uc2UuIEl0IG11c3QgYmUgPiAxIGFuZCA8PSBzZ2JNQVhfSU5GT19GUkFNRV9TSVpFIGluIGFsbCBjYXNlcy4KKwlpZiggKFJlc3BvbnNlTGVuZ3RoIDwgNCkgfHwgKFJlc3BvbnNlTGVuZ3RoID4gMjU0KSkKKwl7CisJCS8vCUVycm9yOiBibG9jayB3aXRoIGluYXBwcm9wcmlhdGUgbnVtYmVyIG9mIGJ5dGVzIHJlY2VpdmVkIGZyb20gdGhlIGNhcmQuCisJCXJldHVybiBUQ0xfRkFUQUxfUFJPVE9DT0w7CisJfQorCisJaWYobmFkX3NlbmQgIT0gVDAxQ3VycmVudEljY0luZm8tPk1SY3ZCdWZmZXJbMF0pCisJeworCQkvLwlFcnJvcjogbmFkIG5vdCBlcXVhbC4KKyAgIAkJcmV0dXJuICggVENMX05BRElOVkFMSUQgKTsKKwl9CisJaWYoVDAxQ3VycmVudEljY0luZm8tPkNyYyAhPSAwKQorCXsKKwkJd0NhcmRTdGF0dXMgPSBUQ0xfRkFUQUxfUFJPVE9DT0w7Ly/S1LrztNPQwrao0uUKKwl9CisJCisJaWYoWE9SKFQwMUN1cnJlbnRJY2NJbmZvLT5NUmN2QnVmZmVyLFJlc3BvbnNlTGVuZ3RoKSAhPSAwKQkvL7340NBMUkPQo9HpCisJeworICAgCQlyZXR1cm4gKCBUQ0xfQ1JDRVJSICk7CisJfQorCWlmKChUMDFDdXJyZW50SWNjSW5mby0+TVJjdkJ1ZmZlclsxXSAmIDB4ODApICE9IDB4MDApCS8vsrvKx0m/6QorCXsKKwkJc3dpdGNoKFQwMUN1cnJlbnRJY2NJbmZvLT5NUmN2QnVmZmVyWzFdICYgMHgwZikKKwkJeworCQkJY2FzZSAwOgorCQkgICAJCXJldHVybiBUQ0xfT1RIRVJFUlI7CisJCQljYXNlIDE6CisJCSAgIAkJcmV0dXJuIFRDTF9DUkNFUlI7CisJCQljYXNlIDI6CisJCSAgIAkJcmV0dXJuIFRDTF9PVEhFUkVSUjsKKwkJfQorCX0KKwkvL2Jsb2NrIG51bWJlciBlcXVhbAorCWlmKFQwMUN1cnJlbnRJY2NJbmZvLT5ibGtuciAhPSAoKFQwMUN1cnJlbnRJY2NJbmZvLT5NUmN2QnVmZmVyWzFdPj42KSYweDAxKSApCQorCXsKKwkJLy8JRXJyb3I6IGJsb2NrIG51bWJlciBub3QgZXF1YWwuCisgICAJCXJldHVybiAoVENMX0ZBVEFMX1BST1RPQ09MKTsKKwl9CisgICAgVDAxQ3VycmVudEljY0luZm8tPmJsa25yIF49IDE7CS8vIFRvZ2dsZSBibG9jayBudW1iZXIKKworCWlmKChSZXNwb25zZUxlbmd0aC00KSA9PSBUMDFDdXJyZW50SWNjSW5mby0+TVJjdkJ1ZmZlclsyXSkKKwl7CisJCSpyZWNfYnVmID0gVDAxQ3VycmVudEljY0luZm8tPk1SY3ZCdWZmZXIrMzsKKwkJd0NhcmRTdGF0dXMgPSBUMDFDdXJyZW50SWNjSW5mby0+TVJjdkJ1ZmZlcltSZXNwb25zZUxlbmd0aC0zXTw8OCB8IFQwMUN1cnJlbnRJY2NJbmZvLT5NUmN2QnVmZmVyW1Jlc3BvbnNlTGVuZ3RoLTJdOworCQkqcmVjX2J1Zl9sZW4gPSBSZXNwb25zZUxlbmd0aCAtIDQ7CisJfQorCWVsc2UKKwl7CisJCXdDYXJkU3RhdHVzID0gVENMX0ZBVEFMX1BST1RPQ09MOy8v0tS687TT0MK2qNLlCisJfQorCXJldHVybiB3Q2FyZFN0YXR1czsJCisgIH0KKworLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICAgICAgICAgCQkJCQkJCQkgICBUMSDQrSDS6SDK/SC+3SC0qyDLzSDT6yC90yDK1QorKgorKiAgw+ggyvajuklTTzc4MTYgVD0xtKvK5NCt0unK/b7dvbu7u6Os1vfSqsrHzai5/Tc4MTbNqLn9v9rP37eiy83K/b7dsqK908rVyv2+3SAgINTdw7vT0Mq508M/Pz8KKyoKKyogILLOIMr9o7oKKyogICAgICAgICBjaWQgICAgICAgICAg1N3Du9PQyrnTwz8KKyogICAgICAgICBuYWRfc2VuZAorKiAgICAgICAgIGljaCAgICAgICAgICBpY7+ovdO/2rao0uUgIM/CsuPQrdLp0aHU8QorKgorKiAgt7Ugu9ijurLZ1/ezybmmu/LKp7Dc17TMrMLrCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KKyB1bnNpZ25lZCBzaG9ydCBUMUlGU0MoIHVuc2lnbmVkIGNoYXIgY2lkLCB1bnNpZ25lZCBjaGFyIG5hZF9zZW5kLCBpbnQgaWNoICkKKyAgeworCXNob3J0IHdDYXJkU3RhdHVzPTAsIHdQcm90b2NvbFN0YXR1cz0wOworCXVuc2lnbmVkIGNoYXIgU2VuZF9sZW5ndGgsUmVzcG9uc2VMZW5ndGg7CisJCisJVDAxQ3VycmVudEljY0luZm8tPk1TbmRCdWZmZXJbMF0gPSBuYWRfc2VuZDsKKwlUMDFDdXJyZW50SWNjSW5mby0+TVNuZEJ1ZmZlclsxXSA9IDB4QzE7CS8vSUZTQyBSZXF1ZXN0CisgICAgVDAxQ3VycmVudEljY0luZm8tPk1TbmRCdWZmZXJbMl0gPSAxOworICAgIFQwMUN1cnJlbnRJY2NJbmZvLT5NU25kQnVmZmVyWzNdID0gVDAxQ3VycmVudEljY0luZm8tPklGU0k7CisJU2VuZF9sZW5ndGggPSA0OworCWlmKFQwMUN1cnJlbnRJY2NJbmZvLT5DcmM9PTEpCisJeworCQlDYWxDcmMxNihUMDFDdXJyZW50SWNjSW5mby0+TVNuZEJ1ZmZlcixUMDFDdXJyZW50SWNjSW5mby0+TVNuZEJ1ZmZlcitTZW5kX2xlbmd0aCxTZW5kX2xlbmd0aCk7CisJCVNlbmRfbGVuZ3RoICs9IDI7CisJfQorCWVsc2UKKwl7CisJCVQwMUN1cnJlbnRJY2NJbmZvLT5NU25kQnVmZmVyW1NlbmRfbGVuZ3RoXSA9IFhPUihUMDFDdXJyZW50SWNjSW5mby0+TVNuZEJ1ZmZlcixTZW5kX2xlbmd0aCk7CisJCVNlbmRfbGVuZ3RoICs9IDE7CisJfQorICAgIAkKKwkvLwlDb21tdW5pY2F0ZSB0aGUgcHJlcGFyZWQgYnVmZmVyIHRvIHRoZSBjYXJkIGFuZCBnZXQgaXRzIHJlc3BvbnNlLgorCXdQcm90b2NvbFN0YXR1cyA9IFQxX1RQRFUoVDAxQ3VycmVudEljY0luZm8tPk1TbmRCdWZmZXIsU2VuZF9sZW5ndGgsVDAxQ3VycmVudEljY0luZm8tPk1SY3ZCdWZmZXIsJlJlc3BvbnNlTGVuZ3RoLGljaCk7CisgICAgaWYoIHdQcm90b2NvbFN0YXR1cyAhPSBUQ0xfT0sgKQorCXsKKwkJLy8JRXJyb3I6IGNvdWxkIG5vdCBleGNoYW5nZSBpbmZvIGJsb2NrcyB3aXRoIHRoZSBjYXJkLgorICAJCXJldHVybiAod1Byb3RvY29sU3RhdHVzKTsKKwl9CisJaWYoIChSZXNwb25zZUxlbmd0aCA8IDQpIHx8IChSZXNwb25zZUxlbmd0aCA+IDI1NCkpCisJeworCQkvLwlFcnJvcjogYmxvY2sgd2l0aCBpbmFwcHJvcHJpYXRlIG51bWJlciBvZiBieXRlcyByZWNlaXZlZCBmcm9tIHRoZSBjYXJkLgorCQlyZXR1cm4gVENMX0ZBVEFMX1BST1RPQ09MOworCX0KKworCWlmKG5hZF9zZW5kICE9IFQwMUN1cnJlbnRJY2NJbmZvLT5NUmN2QnVmZmVyWzBdKQorCXsKKwkJLy8JRXJyb3I6IG5hZCBub3QgZXF1YWwuCisgICAJCXJldHVybiAoIFRDTF9OQURJTlZBTElEICk7CisJfQorCWlmKFQwMUN1cnJlbnRJY2NJbmZvLT5DcmMgIT0gMCkKKwl7CisJCXdDYXJkU3RhdHVzID0gVENMX0ZBVEFMX1BST1RPQ09MOy8v0tS687TT0MK2qNLlCisJfQorCQorCWlmKFhPUihUMDFDdXJyZW50SWNjSW5mby0+TVJjdkJ1ZmZlcixSZXNwb25zZUxlbmd0aCkgIT0gMCkJLy+9+NDQTFJD0KPR6QorCXsKKyAgIAkJcmV0dXJuICggVENMX0NSQ0VSUiApOworCX0KKwlpZigoVDAxQ3VycmVudEljY0luZm8tPk1SY3ZCdWZmZXJbMV0gJiAweEUxKSAhPSAweEUxKQkvL7K7ysdTv+lJRlNDIEFjaworCXsKKyAgIAkJcmV0dXJuIFRDTF9PVEhFUkVSUjsKKwl9CisJcmV0dXJuIHdDYXJkU3RhdHVzOwkKKyAgfQorCmRpZmYgLS1naXQgYS9pY2NfYXBkdV9saWIvVDBUMS5oIGIvaWNjX2FwZHVfbGliL1QwVDEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjFhNjEwCi0tLSAvZGV2L251bGwKKysrIGIvaWNjX2FwZHVfbGliL1QwVDEuaApAQCAtMCwwICsxLDIwNyBAQAorLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgIElTTzc4MTYtMSBUMCxUMSjBtCDCtyCy4yzTsiC8/iC90yC/2iCy4yApILSrIMrkINCtINLpIMf9ILavIAorKgkKKyoJCQkJCQkJCSAgIF9fX19fIElTTzc4MTYtMiDBtCDCtyCy4yDTsiC8/iC90yC/2iCy4yDH/SC2r19fX19fCisqCisqICDD6CDK9qO6INb30qrN6rPJIFQwLFQxKMr9vt3BtMK3suMptKvK5NCt0ukgyv2+3b27u7sKKyoKKyogIMXkINbDo7ogCisqICAgICAgICAgIENQVSAgICAgICAgIDogCisqICAgICAgICAgIM3iyrHW0yAgICAgIDogCisqICAgICAgICAgIENQVdTL0NDKsdbTIDogCisqICAgICAgICAgINTL0NC7t76zICAgIDogS2VpbCBBUk0gKCBSZWFsVmlldyBNREsgKSAgIHYzLjUwxsa94rDmsb4KKyogICAgICAgICAgu7e+s8no1sMgICAgOiAxKSDEo8q9OiAgICAKKyogICAgICAgICAgICAgICAgICAgICAgICAyKSDTxbuvOiDErMjPICggTGV2ZWwgMCAoLTAwKSAuLi4pCisqCisqICDXoiDS4qO6IFQwLFQxtKvK5NCt0um3+7rPSVNPNzgxNi0yo6xFTVax6te8o7sKKyoKKyogILLjIMP7o7ogVDBUMS5IIAorKgorKiAg1/cg1d+juiBaaGFuZ19PU0AxNjMuY29tCisqCisqICCw5iCxvqO6IFYyLjAgIAorKiAgICAgICAgICAgICAgICAgIAorKiAgyNUgxtqjuiAyMDA5LTA1LTIxCisqCisqICAgICAgICBDb3B5cmlnaHQgKGMpIDIwMDgtMjAwOSAgIEJyYW5kLU5FVyBDLkEuUCBFbGVjdHJvbmljcyBUZWNobm9sb2d5IENPLixMVEQKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworCisjaWZuZGVmIF9fVDBUMV9IX18KKyNkZWZpbmUgX19UMFQxX0hfXworCisKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgkJCQkJCQkJCQkgICAgILOjIMG/CisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KKworCisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoJCQkJCQkJCQkJICAgICDA4CDQzQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisvLz09PT09PT09Pj5JQ7+otbHHsNe0zKy94bm5zOW2qNLlCisgdHlwZWRlZiBzdHJ1Y3QKKyAgeworCXVuc2lnbmVkIGNoYXIgVFM7CS8vQVRSLVRTCb32vdPK3DNius0zZgorCXVuc2lnbmVkIGNoYXIgVDA7CS8vQVRSLVQwCisJdW5zaWduZWQgY2hhciBURDE7CS8vQVRSLVREMQnKx7fxu7nSqreiy824/LbgtcS907/a19a92tLUvLC689D4tKvK5Mv5yrnTw7XE0K3S6cDg0M0sKL321qez1jC6zTHQrdLpMHg4MaOsvty++Mbky/vWtSkKKwl1bnNpZ25lZCBjaGFyIFREMjsJLy9BVFItVEQyCVREMrHtyr7Kx7fxu7nSqreiy824/LbgtcS907/a19a92tLUvLC689D4tKvK5Mv5yrnTw7XE0K3S6cDg0M0oMHgzMSkKKwl1bnNpZ25lZCBjaGFyIEVUQ0s7CS8vQVRSLVRDSwm87NHpuLTOu9OmtPDG2rzky/m3osvNyv2+3c3q1fvQ1AorCXVuc2lnbmVkIGNoYXIgVDsJLy/QrdLpwODQzSBUPTAgVD0xCisJdW5zaWduZWQgY2hhciBFWERJOwkvL7fHserXvLi0zrvTprTw0PLB0LXEsqjM2MLKz7XK/QorCXVuc2lnbmVkIGNoYXIgU1BNT0Q7Ly/M2LaoxKPKvSC7ucrHIL27u6XEo8q9IGI4PTDT0LjEseTE3MGmo6w9Mc7euMSx5MTcwaaju2I1PTGyu9PJvdO/2tfWvdq2qNLlo6w9ML3Tv9rX1r3atqjS5aO7YjQtYjEg0K3S6VQKKwl1bnNpZ25lZCBjaGFyIEZJOwkvL8qx1tPGtcLK16q7u9LyCisJdW5zaWduZWQgY2hhciBESTsJLy+xyMzYwsq1973a0vLX0worCXVuc2lnbmVkIGNoYXIgV0k7CS8vSUO/qLeiy821xMjO0uLSu7j219a3+8bwyrzOu8nPyf3R2NPr08lJQ7+ou/LW1bbLtKvLzbXEx7DSu9fWt/u1xMbwyrzOu8nPyf3R2NauvOS1xNfutPO85Lj0tcS5pNf3tci0/cqxvOQKKwl1bnNpZ25lZCBjaGFyIFBJMTsJLy/It7aoSUO/qMv50Oi1xNfutPOx4LPMtefRuVDWtaGjUEkxPTCx7cq+SUO/qLK7yrnTw1ZwcKGjCisJdW5zaWduZWQgY2hhciBJSTsJLy9JMdTaYjZ+YjfOu9bQtqjS5aOs08PT2si3tqhJQ7+oy/nQ6LXE1+6087Hgs8y158H3Sda1oaNQSTE9MLHtyr6yu8q508O0y7LOyv0KKwl1bnNpZ25lZCBjaGFyIE47ICAgIC8vVEMxtKvLzU7Wrta1o6xOzqq27s3isaO7pMqxvOQKKwl1bnNpZ25lZCBjaGFyIElGU0k7IC8vse3KvklDv6jQxc+i0/K089ChtcSz9cq81rXV+8r9CisJdW5zaWduZWQgY2hhciBCV0k7ICAvL7/ptci0/cqxvOTV+8r9KEJsb2NrIFdhaXRpbmcgVGltZSBJbnRlZ2VyKQorCXVuc2lnbmVkIGNoYXIgQ1dJOyAgLy/X1rf7tci0/cqxvOTV+8r9KENoYXJhY3RlciBXYWl0aW5nIFRpbWUgSW50ZWdlcikKKwl1bnNpZ25lZCBjaGFyIENyYzsgIC8vyN/T4NCj0ekoQ1JDPTEvTG9uZ2l0dWRpbmFsIFJlZHVuZGFuY3kgQ2hlY2s9MCkKKyAgCXVuc2lnbmVkIGNoYXIgYmxrbnI7Ly+/7LXE0PLB0LrFCisJdW5zaWduZWQgY2hhciAqTVNuZEJ1ZmZlcjsJCS8vt6LLzcP8we67urPlx/gKKwl1bnNpZ25lZCBjaGFyICpNUmN2QnVmZmVyOwkJLy+908rVw/zB7ru6s+XH+AorCisJaW50IElDRXJyb3JDb2RlOwkvL7+otO3O87T6wusgSUNDYXJkX2Vycm9yX01zZ1tdCisgIH1JQ0NTVFJVQ1Q7CisKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgkJCQkJCQkJCQkgICAgILHkIMG/CisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KKyAgZXh0ZXJuIElDQ1NUUlVDVCAgKlQwMUN1cnJlbnRJY2NJbmZvOyAgICAgICAgICAgICAvKiBJQ7+otbHHsNe0zKy2qNLlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogICAgICAgICAJCQkJCQkJCSAgICAguq8gyv0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworCisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogICAgILSryuSy473Tv9otLc6709rTsrz+x/22r7PM0PLW0CBJU09VU0FSVERyaXZlci5DICAgICAgLS0tPiAoMSkKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworIGV4dGVybiB1bnNpZ25lZCBzaG9ydCBJQ0NfUG93ZXJPbkNhcmQoIGludCBpY2ggKTsgICAgIC8qIL+oIMnPILXnILKiILi0IM67ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisKKyBleHRlcm4gdm9pZCAgICAgICAgICAgSUNDX1Bvd2VyT2ZmQ2FyZCggaW50IGljaCApOyAgICAvKiC/qCDPwiC15yC0pSC14yDKzSC3xSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisgZXh0ZXJuIHVuc2lnbmVkIHNob3J0IElDQ19SZXNldENhcmQoIGludCBpY2ggKTsgICAgICAgLyogv6ggyMgguLQgzrsgKMDkuLTOuykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworIGV4dGVybiB1bnNpZ25lZCBzaG9ydCBUMF9UUERVKCB1bnNpZ25lZCBjaGFyICpzY21kLCB1bnNpZ25lZCBjaGFyICpzZGF0YSwgaW50IGN0bCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqcmVjX2J5dGVsZW4sIGludCBpY2ggKTsgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVDAg0K0g0ukgtKsgyuQgyv0gvt0gtaUg1Kog07MgyeQgICAgICAgICAgICAgICAgICAgKi8KKyBleHRlcm4gdW5zaWduZWQgc2hvcnQgVDFfVFBEVSggdW5zaWduZWQgY2hhciAqc2VuZF9kYXRhLCB1bnNpZ25lZCBjaGFyIHNlbmRfYnl0ZWxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqcmVjX2RhdGEsIHVuc2lnbmVkIGNoYXIgKnJlY19ieXRlbGVuLCBpbnQgaWNoICk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVDEg0K0g0ukgtKsgyuQgyv0gvt0gtaUg1Kog07MgyeQgICAgICAgICAgICAgICAgICAgKi8KKworLy89PT09PT09PT4+tKvK5LLjvdO/2i0tzrvT2tOyvP7H/bavs8zQ8tbQIC0tPiBJU09VU0FSVERyaXZlci5DCisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICC/qCDJzyC15yCyoiC4tCDOuworKiBGdW5jdGlvbiBOYW1lICAgICAgIDogSUNDX1Bvd2VyT25DYXJkCisqIE9iamVjdCAgICAgICAgICAgICAgOiC/qMnPtecsuLTOuyAgICAgICDW99KqysfKudPD0tRMVEMxNzU20L7GrMqxyrnTwyAgIAorKiBJbnB1dCBQYXJhbWV0ZXJzICAgIDogaWNoID0gCisqIE91dHB1dCBQYXJhbWV0ZXJzICAgOiC3tbvY1rWjuklDRXJyb3JDb2RlCisqIEZ1bmN0aW9ucyBjYWxsZWQgICAgOiBub25lCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KKy8vIHVuc2lnbmVkIHNob3J0IElDQ19Qb3dlck9uQ2FyZCggaW50IGljaCApCisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgv6ggz8IgtecgtKUgteMgys0gt8UKKyogRnVuY3Rpb24gTmFtZSAgICAgICA6IElDQ19Qb3dlck9mZkNhcmQKKyogT2JqZWN0ICAgICAgICAgICAgICA6IL+oz8K15yAgICAgICAgINDot/u6z0lTTzc4MTYtMrHq17yjrFZDQzwwLjRW0OjSqtOyvP61xMXkus/Ktc/WCisqIElucHV0IFBhcmFtZXRlcnMgICAgOiBpY2ggPSBDSE5MX0lDQy9QU0FNMV9QT1dFUi9QU0FNMl9QT1dFUl9PTgorKiBPdXRwdXQgUGFyYW1ldGVycyAgIDogbm9uZQorKiBGdW5jdGlvbnMgY2FsbGVkICAgIDogbm9uZQorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisvLyB2b2lkIElDQ19Qb3dlck9mZkNhcmQoIGludCBpY2ggKQorLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICC/qCDIyCC4tCDOuyAowOS4tM67KQorKiBGdW5jdGlvbiBOYW1lICAgICAgIDogSUNDX1Jlc2V0Q2FyZAorKiBPYmplY3QgICAgICAgICAgICAgIDogv6jIyLi0zrsgKMDkuLTOu6Oswb3V37G+1sq2vNK70fmjrNa7ysfWtNDQtcTM9bz+srvSu9H5KaGjuLTOu9OmtPC3+7rPSVNPNzgxNiBFTVYyMDAwCisqICAgICAgICAgICAgICAgICAgICAgICAgserXvC4gCisqIElucHV0IFBhcmFtZXRlcnMgICAgOiBpY2ggPSBDSE5MX0lDQy9QU0FNMV9QT1dFUi9QU0FNMl9QT1dFUl9PTgorKiBPdXRwdXQgUGFyYW1ldGVycyAgIDogt7W72Na1o7pJQ0Vycm9yQ29kZQorKiBGdW5jdGlvbnMgY2FsbGVkICAgIDogbm9uZQorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisvLyB1bnNpZ25lZCBzaG9ydCBJQ0NfUmVzZXRDYXJkKCBpbnQgaWNoICkKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFQwINCtINLpILSrIMrkIMr9IL7dILWlINSqINOzIMnkCisqIEZ1bmN0aW9uIE5hbWUgICAgICAgOiBJQ0NfVFBEVQorKiBPYmplY3QgICAgICAgICAgICAgIDog0K3S6bSryuTK/b7dtaXUqtOzyeQKKyogSW5wdXQgUGFyYW1ldGVycyAgICA6IHNjbWQ9NdfWvdrD/MHu19a3+7Su1rjV66OoQ0xBoaJJTlOholAxoaJQMrrNUDOjqSwKKyoJCQkJCQlzZGF0YT23osvNL73TytXK/b7du7qz5cil1rjV66OsY3RsPdCt0um/2NbG19a3+6OovPvPwsr2o6ksICpyZWNfYnl0ZWxlbr3TytzK/b7dtcSzpLbIo6xpY2g9SUO/qL3Tv9oKKyoJCQkJCQljdGw9MM7eyv2+3dahc2NtZFs0XT0wLCBjdGw9Mbeiy83K/b7d1qEv1qGzpLbI08lzY21kWzRdyLe2qCwgY3RsPTK908rVyv2+3dahCisqIE91dHB1dCBQYXJhbWV0ZXJzICAgOiC3tbvYSUNFcnJvckNvZGU9U1cxIFNXMrvy1d8wLTI1NbXEzu/A7bLjtO3O87T6wusKKyogRnVuY3Rpb25zIGNhbGxlZCAgICA6IG5vbmUKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworLy8gdW5zaWduZWQgc2hvcnQgVDBfVFBEVSggdW5zaWduZWQgY2hhciAqc2NtZCwgdW5zaWduZWQgY2hhciAqc2RhdGEsIGludCBjdGwsIHVuc2lnbmVkIGNoYXIgKnJlY19ieXRlbGVuLCBpbnQgaWNoICkKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUMSDQrSDS6SC0qyDK5CDK/SC+3SC1pSDUqiDTsyDJ5AorKiBGdW5jdGlvbiBOYW1lICAgICAgIDogVDFfVFBEVQorKiBPYmplY3QgICAgICAgICAgICAgIDogVD0xINCt0um0q8rkyv2+3bWl1KrTs8nkCisqIElucHV0IFBhcmFtZXRlcnMgICAgOiAKKyogT3V0cHV0IFBhcmFtZXRlcnMgICA6ILe1u9hJQ0Vycm9yQ29kZT1TVzEgU1cyu/LV3zAtMjU1tcTO78DtsuO07c7ztPrC6worKiBGdW5jdGlvbnMgY2FsbGVkICAgIDogbm9uZQorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisvLyB1bnNpZ25lZCBzaG9ydCBUMV9UUERVKCB1bnNpZ25lZCBjaGFyICpzZW5kX2RhdGEsIHVuc2lnbmVkIGNoYXIgc2VuZF9ieXRlbGVuLCB1bnNpZ25lZCBjaGFyICpyZWNfZGF0YSwKKy8vICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKnJlY19ieXRlbGVuLCBpbnQgaWNoICkKKworCisKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgICAgttTN4r+qt8W1xLX308MgICAgICBUMFQxLkMgICAgICAgICAgICAgICAgICAgICAgICAgICAtLS0+ICgyKQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisgZXh0ZXJuIHZvaWQgICAgICAgICAgIFJlc2V0SWNjSW5mbyggdW5zaWduZWQgY2hhciBjaWQsIElDQ1NUUlVDVCAqaW5mbyApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICovCisgZXh0ZXJuIHVuc2lnbmVkIHNob3J0IFQwUG93ZXJPbkNhcmQoIGludCBpY2ggKTsgICAgICAvKiAgKi8KKworIGV4dGVybiB2b2lkICAgICAgICAgICBUMFBvd2VyT2ZmQ2FyZCggaW50IGljaCApOyAgICAgLyogICovCisKKyBleHRlcm4gdW5zaWduZWQgc2hvcnQgVDBSZXNldENhcmQoIGludCBpY2gsIElDQ1NUUlVDVCAqSW5mbyApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICovCisgZXh0ZXJuIHVuc2lnbmVkIHNob3J0IFQwRXhjaGFuZ2UoIHVuc2lnbmVkIGNoYXIgKnNuZF9idWYsIHVuc2lnbmVkIGNoYXIgc25kX2J1Zl9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKipyZWNfYnVmLCB1bnNpZ25lZCBjaGFyICpyZWNfYnVmX2xlbiwgaW50IGljaCApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICovCisgZXh0ZXJuIHVuc2lnbmVkIHNob3J0IFQxRXhjaGFuZ2UoIHVuc2lnbmVkIGNoYXIgY2lkLCB1bnNpZ25lZCBjaGFyIG5hZF9zZW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpzbmRfYnVmLCB1bnNpZ25lZCBjaGFyIHNuZF9idWZfbGVuLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqKnJlY19idWYsIHVuc2lnbmVkIGNoYXIgKnJlY19idWZfbGVuLCBpbnQgaWNoICk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgKi8KKyBleHRlcm4gdW5zaWduZWQgc2hvcnQgVDFJRlNDKCB1bnNpZ25lZCBjaGFyIGNpZCwgdW5zaWduZWQgY2hhciBuYWRfc2VuZCwgaW50IGljaCApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICovCisKKy8vPT09PT09PT0+PrbUzeK/qrfFtcS199PDIC0tPiBUMFQxLkMKKworCisKKworCisKKworI2VuZGlmIC8vX19UMFQxX0hfXworCmRpZmYgLS1naXQgYS9pY2NfYXBkdV9saWIvVENMLkMgYi9pY2NfYXBkdV9saWIvVENMLkMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzRkNjY3OAotLS0gL2Rldi9udWxsCisrKyBiL2ljY19hcGR1X2xpYi9UQ0wuQwpAQCAtMCwwICsxLDUwMiBAQAorLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVNPNzgxNi0xIFQ9Q0wowbQgwrcgsuMpILSrIMrkINCtINLpIMf9ILavIAorKgkKKyoJCQkJCQkJCQkgICAgX19fX18gSVNPNzgxNi0yIMG0IMK3ILLjIMf9ILavX19fX18KKyoKKyogIMPoIMr2o7og1vfSqs3qs8kgVD1DTCjK/b7dwbTCt7LjKbSryuTQrdLpIMr9vt29u7u7ICAgIFQ9Q0wgRkNECisqCisqICDF5CDWw6O6IAorKiAgICAgICAgICDUy9DQu7e+syAgICA6IEtlaWwgQVJNICggUmVhbFZpZXcgTURLICkgICB2My4wNcbGveKw5rG+CisqICAgICAgICAgILu3vrPJ6NbDICAgIDogMSkgxKPKvTogVGh1bWItTW9kZSArIFVzZSBDcm9zcy1Nb2R1bGUgT3B0aW1pemF0aW9uICAgICAgICAgIAorKiAgICAgICAgICAgICAgICAgICAgICAgIDIpINPFu686IMSsyM8gKCBMZXZlbCAwICgtMDApIC4uLikKKyoKKyogINeiINLio7ogVD1DTCC0q8rk0K3S6bf7us9JU08xNDQ0M7Hq17yjuworKgorKiAgsuMgw/ujuiBUQ0wuQyAKKyoKKyogINf3INXfo7ogWmhhbmdfT1NAMTYzLmNvbQorKgorKiAgsOYgsb6juiBWMS4wICAKKyogICAgICAgICAgICAgICAgICAKKyogIMjVIMbao7ogMjAwOC0wNC0wNworKgorKiAgICBDb3B5cmlnaHQgKGMpIDIwMDggICAgICAgICAgICAgQnJhbmQtTkVXIEMuQS5QIEVsZWN0cm9uaWNzIFRlY2hub2xvZ3kgQ08uLExURAorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisKKyAgI2luY2x1ZGUgICAiTElCX0luY2x1ZGVzLkgiCisKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgkJCQkJCQkJCQkgICAgILOjIMG/CisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KKyAgY29uc3QgdW5zaWduZWQgaW50IGZzZFRhYmxlWzldID0gezE2LDI0LDMyLDQwLDQ4LDY0LDk2LDEyOCwyNTZ9OworCisKKworLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCQkJCQkJCQkJCSAgICAgwOAg0M0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworCisKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgkJCQkJCQkJCQkgICAgILHkIMG/CisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KKy8vIGV4dGVybiAgdW5zaWduZWQgY2hhciAgIHVjTWVtUG9vbFtdOyAgICAgLyogSUNDX0FQRFVfTWFwZXLW0Lao0uW5/SAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLy8gZXh0ZXJuICB1bnNpZ25lZCBjaGFyICAgc2NNZW1Qb29sW107ICAgICAvKiBJQ0NfQVBEVV9NYXBlctbQtqjS5bn9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisKKyBQSUNDU1RSVUNUICAqVGNsQ3VycmVudFBpY2NJbmZvOyAgICAgICAgICAgLyogVENMILWxx7BJQ7+o0MXPoiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLy8gVFRMU1RSVUNUICAgZ0lDQ0luZm9bM107ICAgICAgICAgICAgICAgICAgIC8qIDO49rLlstsJCQkJCQkJCQkJCQkJCSAqLworCisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogICAgICAgICAJCQkJCQkJCSAgICAguq8gyv0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworCisvL2V4dGVybiB2b2lkIFJGSV9DZmdTUElGb3JSRkNhcmQodm9pZCk7CitleHRlcm4gdm9pZCBTZXRCaXRNYXNrKHVuc2lnbmVkIGNoYXIgcmVnLHVuc2lnbmVkIGNoYXIgbWFzayk7CitleHRlcm4gdm9pZCBDbGVhckJpdE1hc2sodW5zaWduZWQgY2hhciByZWcsdW5zaWduZWQgY2hhciBtYXNrKTsKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgICAgICAgIAkJCQkJCQkJICAgILi0IM67IFBJQ0Mgu/kgsb4g0MUgz6IKKyoKKyogIMPoIMr2o7ogILi0zrtQSUNDtcS7+bG+0MXPoiy71ri0y/nT0LHkwb+1xNa1ICAgIFNlbmRzIHRoZSBSQVRTIGNvbW1hbmQgYW5kIHBhcnNlcyB0aGUgQVRTCisqCisqICCyziDK/aO6ICBjaWQgIDogIL+oSUS6xSAgICAgIL3TtKXKvcO709DKssO0tMuyzsr9o6wgt8e907Slyr3KudPDtMuyzsr9CisqICAgICAgICAgICBpbmZvIDogIFJGv6jNqNDF0MXPosr9vt294bm5CisqCisqICC3tSC72KO6ICDO3gorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisgdm9pZCBSZXNldFBpY2NJbmZvKCB1bnNpZ25lZCBjaGFyIGNpZCwgUElDQ1NUUlVDVCAqaW5mbyApCisgIHsKKyAgCWluZm8tPmNpZCAgPSBjaWQ7CisJaW5mby0+ZnNjaSA9IFRDTEZTRFNORE1BWDsKKyAgCWluZm8tPmZzZGkgPSBUQ0xGU0RSRUNNQVg7CisgIAlpbmZvLT5mc2MgID0gZnNkVGFibGVbaW5mby0+ZnNjaV07CisgIAlpbmZvLT5mc2QgID0gZnNkVGFibGVbaW5mby0+ZnNkaV07CisgIAlpbmZvLT5md2kgID0gNDsKKyAgCWluZm8tPnd0eCAgPSAwOworICAJaW5mby0+Y2lkU3VwcCA9IDE7CisgIAlpbmZvLT5uYWRTdXBwID0gMDsKKyAgCWluZm8tPnBpY2NEaXYgPSAwOworICAJaW5mby0+cGNkRGl2ICA9IDA7CisgIAlpbmZvLT5ibGtuciAgID0gMDsKKyAgCWluZm8tPmRzaSA9IDM7ICAgICAgLy9kaXZpZGVyIFBJQ0MgLT4gUENEICAKKyAgCWluZm8tPmRyaSA9IDM7ICAgICAgLy9kaXZpZGVyIFBDRCAtPiBQSUNDICAKKyAgCWluZm8tPk1TbmRCdWZmZXIgPSB1Y01lbVBvb2w7CQkvL7eiy83D/MHuu7qz5cf4CdPDu6e/qLu6s+XH+CDHsMzho7q3x73TtKW/qLa8ysfTw7unv6gKKyAgCWluZm8tPk1SY3ZCdWZmZXIgPSB1Y01lbVBvb2w7CQkvL73TytXD/MHuu7qz5cf4CisgIH0KKworLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICAgICAgICAgCQkJCQkJCQkgICAgICAgILvxIMihIEFUUworKgorKiAgw+ggyvajuiAgu/EgyKEgQVRTICAgICAgICAgICAgIFNlbmRzIHRoZSBSQVRTIGNvbW1hbmQgYW5kIHBhcnNlcyB0aGUgQVRTCisqCisqICCyziDK/aO6ICBjaWQgIL+oSUS6xSAgICAgIL3TtKXKvcO709DKssO0tMuyzsr9o6wgt8e907Slyr3KudPDtMuyzsr9CisqICAgICAgICAgICBpbmZvICBSRr+ozajQxdDFz6LK/b7dveG5uQorKgorKiAgt7Ugu9ijuiAgc3RhdHVzCisqICAgICAgICAgICAgICAgICAgIFRDTF9PSworKiAgICAgICAgICAgICAgICAgICBUQ0xfQVRTTEVOICAgICAgICAgICAgQVRTIG9mIGludmFsaWQgbGVuZ3RoCisqICAgICAgICAgICAgICAgICAgIFRDTF9BVFNfRk9STUFUX0VSUiAgICBFcnJvciBpbiBBVFMgRm9ybWF0LgorKiAgICAgICAgICAgICAgICAgICBNSV9SRUNCVUZfT1ZFUkZMT1cgICAgQVRTIGJ1ZmZlciB0b28gc21hbGwuCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KKyB1bnNpZ25lZCBzaG9ydCBUY2xHZXRBdHMoIHVuc2lnbmVkIGNoYXIgY2lkLCBQSUNDU1RSVUNUICpJbmZvICkKKyAgeworCXVuc2lnbmVkIHNob3J0IHN0YXR1czsKKwl1bnNpZ25lZCBjaGFyIFRMLFQwLGk9MjsKKwl1bnNpZ25lZCBzaG9ydCBhdHNfbGVuPU1FTU9SWV9CVUZGRVJfU0laRTsKKyAKKyAgICBIV19TUElfUkZfQ2ZnSW5pdCgpOworCisJVGNsQ3VycmVudFBpY2NJbmZvID0gSW5mbzsgLy8gaW50aWFsaXplIHBvaW50ZXIgdG8gUGljYyBpbmZvIHN0cnVjdHVyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEdsb2JhbCBwb2ludGVyIHRvIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgUGljYyAgCisJCQkgICAgLy8gZm9yIHVzZWQgaW4gb3RoZXIgcm91dGluZS4gCisJCQkJCisJVGNsQ3VycmVudFBpY2NJbmZvLT5mc2RpID0gVENMRlNEUkVDTUFYOworCVRjbEN1cnJlbnRQaWNjSW5mby0+ZnNkID0gZnNkVGFibGVbVENMRlNEUkVDTUFYXTsKKworCWlmIChjaWQgPiAxNCkKKwkgIHJldHVybiBUQ0xfQ0lESU5WQUxJRDsKKworCVRjbEN1cnJlbnRQaWNjSW5mby0+TVNuZEJ1ZmZlclswXT0weEUwOyAJLy8gUkFUUyBjb21tYW5kcworCS8vVGNsQ3VycmVudFBpY2NJbmZvLT5NU25kQnVmZmVyWzFdPVRjbEN1cnJlbnRQaWNjSW5mby0+ZnNkaTsJLy8gRlNESSAmIENJRAorCVRjbEN1cnJlbnRQaWNjSW5mby0+TVNuZEJ1ZmZlclsxXT0oVGNsQ3VycmVudFBpY2NJbmZvLT5mc2RpPDw0KXxjaWQ7CS8vIEZTREkgJiBDSUQKKwlpZigoc3RhdHVzPU1mNTAwUGljY0V4Y2hhbmdlQmxvY2soVGNsQ3VycmVudFBpY2NJbmZvLT5NU25kQnVmZmVyLDQsVGNsQ3VycmVudFBpY2NJbmZvLT5NUmN2QnVmZmVyLCZhdHNfbGVuLDEsNjQxKSk9PU1JX09LKSAvLyBsZW5ndGggaW5jbCBDUkMKKwl7CisJICAgIC8qIEFUUyByZWNlaXZlZCAqLworICAJCVRMID0gVGNsQ3VycmVudFBpY2NJbmZvLT5NUmN2QnVmZmVyWzBdOworCQlpZiAoVEwpCisJCXsKKwkJICBUMCA9IFRjbEN1cnJlbnRQaWNjSW5mby0+TVJjdkJ1ZmZlclsxXTsKKwkJICBUY2xDdXJyZW50UGljY0luZm8tPmZzY2kgPSBUMCYweDBmOyAvL21heCBQSUNDIHJlY2VpdmUgbGVuZ2h0CisJCSAgVGNsQ3VycmVudFBpY2NJbmZvLT5mc2MgPSBmc2RUYWJsZVtJbmZvLT5mc2NpXTsJCisKKwkJICAvLyBUQSByZWNlaXZlZD8JCisJICAJICBpZiAoVDAmMHg0MCl7CisJCSAgICBUY2xDdXJyZW50UGljY0luZm8tPnBpY2NEaXYgPSBUY2xDdXJyZW50UGljY0luZm8tPk1SY3ZCdWZmZXJbaSsrXTsKKwkJICB9CisJCSAgZWxzZSB7CisJCSAgICBUY2xDdXJyZW50UGljY0luZm8tPnBpY2NEaXYgPSAwOyAvLyBkZWZhdWx0IHZhbHVlCisJCSAgfQorCQkgIC8vIFRCIHJlY2VpdmVkPworCQkgIGlmIChUMCYweDIwKXsKKwkJICAgIFRjbEN1cnJlbnRQaWNjSW5mby0+ZndpID0gKFRjbEN1cnJlbnRQaWNjSW5mby0+TVJjdkJ1ZmZlcltpKytdPj40KSYweDBmOworCQkgIH0KKwkJICBlbHNlIHsKKwkJICAgIEluZm8tPmZ3aSA9IDQ7IC8vIGRlZmF1bHQgdmFsdWUgCisJCSAgfQorCQkgIC8vIFRDIHJlY2VpdmVkPworCQkgIGlmIChUMCYweDEwKXsKKwkJICAgIFRjbEN1cnJlbnRQaWNjSW5mby0+Y2lkU3VwcCA9IChUY2xDdXJyZW50UGljY0luZm8tPk1SY3ZCdWZmZXJbaV0+PjEpJjB4MDE7CSAJCSAJCQorCQkgICAgVGNsQ3VycmVudFBpY2NJbmZvLT5uYWRTdXBwID0gKFRjbEN1cnJlbnRQaWNjSW5mby0+TVJjdkJ1ZmZlcltpKytdKSYweDAxOworCQkgIH0KKwkJICBlbHNlIHsKKwkJICAgIFRjbEN1cnJlbnRQaWNjSW5mby0+Y2lkU3VwcCA9IDE7IC8vIGRlZmF1bHQgdmFsdWUJIAkJIAkJCisJCSAgICBUY2xDdXJyZW50UGljY0luZm8tPm5hZFN1cHAgPSAwOyAvLyBkZWZhdWx0IHZhbHVlCisJCSAgfQkJCQkJIAkJIAkJCisgICAgICAgICAgVGNsQ3VycmVudFBpY2NJbmZvLT5jaWQgPSBjaWQ7CisJCSAgVGNsQ3VycmVudFBpY2NJbmZvLT5ibGtuciA9IDA7CisJCSAgLy8gYXBwbGljYXRpb24gc3BlY2lmaWMgZGF0YSBhdmFpbGFibGU/CQorLy8JCSAgaWYgKGkgIT0gVEwpeworLy8JCSAgICAqYXBwX2luZl9sZW4gPSBUTCAtIGk7CisvLwkJICAgIGFwcF9pbmYgPSAmTVJjdkJ1ZmZlcltpXTsKKy8vCQkgIH0KKy8vCQkgIGVsc2UgeworLy8JCSAgICAqYXBwX2luZl9sZW4gPSAwOworLy8JCSAgfQkKKy8vCQkgIGlmIChpICE9IFRMKQorLy8JCQkgIHByaW50ZigiUElDQyBBVFJDID0gJXNcblxyIixUY2xDdXJyZW50UGljY0luZm8tPk1SY3ZCdWZmZXIraSk7CisJCX0KKwkJZWxzZQorCQkgIHN0YXR1cyA9IFRDTF9BVFNMRU47CisJfQorCWVsc2UKKwkJaWYoc3RhdHVzICE9IE1JX05PVEFHRVJSKQorCQkJc3RhdHVzID0gVENMXzJMQVlFUl9FUlI7CisJCisJcmV0dXJuIHN0YXR1czsJCSAgCisgIH0gCisKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgICAgICAgIAkJCQkJCQkJICAgICAgICBJQyC/qCBQUFMKKyoKKyogIMPoIMr2o7ogIElDv6ggUFBTICAgU2VuZHMgdGhlIFByb3RvY29sIGFuZCBQYXJhbWV0ZXIgc2VsZWN0aW9uIGFuZCBjaGVja3MgdGhlIGFuc3dlci4gIAorKiAgICAgICAgICAgIElmIGEgdmFsaWQgUFBTIHJlc3BvbnNlIGlzIHJlY2VpdmVkIGl0IGNhbGxzIFBjZFNldEF0dHJpYigpIHdpdGggZHNpIGFuZCBkcmkuCisqICAgICAgICAgICAgVGhlcmUgaXMgbm8gcmV0cnkgYXR0ZW1wdC4KKyoKKyogILLOIMr9o7ogIGNpZCAgv6hJRLrFIGNpZCBvZiB0YXJnZXQgcGljYworKiAgICAgICAgICAgZHNpICBEaXZpZGVyIFNlbmQgSW50ZWdlciB0byBzd2l0Y2ggdG8KKyogICAgICAgICAgIGRyaSAgRGl2aWRlciBSZWNlaXZlIEludGVnZXIgdG8gc3dpdGNoIHRvCisqCisqICC3tSC72KO6ICBUQ0wuLiAgIFBQUyBzcGVjaWZpYyBlcnJvciBjb2RlCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KKyB1bnNpZ25lZCBzaG9ydCBUY2xQcHMoIHVuc2lnbmVkIGNoYXIgY2lkLCB1bnNpZ25lZCBjaGFyIGRzaSwgdW5zaWduZWQgY2hhciBkcmkgKQorICB7CisJdW5zaWduZWQgc2hvcnQgc3RhdHVzOworCXVuc2lnbmVkIHNob3J0IGJSZXNwb25zZUxlbmd0aDsKKworICAgIEhXX1NQSV9SRl9DZmdJbml0KCk7CisKKwlpZiAoY2lkID4gMTQpCisJICByZXR1cm4gVENMX0NJRElOVkFMSUQ7CisKKwlUY2xDdXJyZW50UGljY0luZm8tPk1TbmRCdWZmZXJbMF09MHhEMHxjaWQ7IAkvLyBQUFMgY29tbWFuZHMgICYgQ0lECisJVGNsQ3VycmVudFBpY2NJbmZvLT5NU25kQnVmZmVyWzFdPTB4MTE7CisJVGNsQ3VycmVudFBpY2NJbmZvLT5NU25kQnVmZmVyWzJdPWRzaTw8MiB8IGRyaTsKKworICAgIC8vV3JpdGVSQyhSZWdDaGFubmVsUmVkdW5kYW5jeSwweDBGKTsgICAgCisgICAgV3JpdGVSQyhNb2RlUmVnLCAweDAxKTsKKyAgICBTZXRCaXRNYXNrKFR4TW9kZVJlZywgMHg4MCk7CisgICAgU2V0Qml0TWFzayhSeE1vZGVSZWcsIDB4ODApOworICAgIENsZWFyQml0TWFzayhSRlUxRCwgMHgxMCk7IAorICAgIFBjZFNldFRtbygzMiooMTw8VGNsQ3VycmVudFBpY2NJbmZvLT5md2kpKzEpOyAgLy8wODA1MTIKKworICAgIHN0YXR1cyA9IChzaG9ydCkgRXhjaGFuZ2VCeXRlU3RyZWFtKFBDRF9UUkFOU0NFSVZFLCBUY2xDdXJyZW50UGljY0luZm8tPk1TbmRCdWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgCTMsIFRjbEN1cnJlbnRQaWNjSW5mby0+TVJjdkJ1ZmZlciwgJmJSZXNwb25zZUxlbmd0aCk7CisJaWYoIHN0YXR1cyAhPSBNSV9PSyApCisJeworCQkvLwlFcnJvcjogY291bGQgbm90IGV4Y2hhbmdlIGluZm8gYmxvY2tzIHdpdGggdGhlIGNhcmQuCisJCWlmKHN0YXR1cyAhPSBNSV9OT1RBR0VSUikKKwkJCXN0YXR1cyA9IFRDTF8yTEFZRVJfRVJSOworCSAgIAlyZXR1cm4gc3RhdHVzOworCX0KKwlpZihiUmVzcG9uc2VMZW5ndGggIT0gMSkKKwkJICBzdGF0dXMgPSBUQ0xfUFBTX0ZPUk1BVDsKKwlpZihUY2xDdXJyZW50UGljY0luZm8tPk1SY3ZCdWZmZXJbMF0gIT0gMHhEMCkKKwkJICBzdGF0dXMgPSBUQ0xfUFBTX0ZPUk1BVDsKKwkKKwlyZXR1cm4gc3RhdHVzOwkJICAKKyAgfSAKKworLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICAgICAgICAgCQkJCQkJCQkgICAgICAgIFRDTCDK/SC+3SC9uyC7uworKgorKiAgw+ggyvajuiAgVENMIMr9IL7dIL27ILu7CisqICAgICAgICAgICAgRXhjaGFuZ2VzIERhdGEgd2l0aCB0aGUgUGljYyB1c2luZyB0aGUgZGl2aWRlcnMgc2V0IGVpdGhlciBkdXJpbmcKKyogICAgICAgICAgICB0aGUgYWN0aXZhdGlvbiBzZXF1ZW5jZSBvciB3aXRoIFRjbFBwcygpLiBPbiB0cmFuc21pc3Npb24gZXJyb3JzIGxpa2UKKyogICAgICAgICAgICBhIEVEQyBjaGVjayBlcnJvciBvciBhIFRpbWVvdXQgaXQgdHJpZXMgdG8gcmV0cmFuc21pdCAKKyogICAgICAgICAgICBkYXRhIHVwIHRvICdtYXhSZXRyaWVzJyB0aW1lcyBzcGVjaWZpZWQgaW4gVGNsSW5pdCwgCisqICAgICAgICAgICAgdGhlbiBpdCB0cmllcyB0byBkZXNsZWN0IHRoZSBwaWNjLgorKgorKiAgss4gyv2juiAgCisqICAgICAgIElOOiAgdW5zaWduZWQgY2hhciBjaWQgICAgICAgICAgIGNpZCBvZiB0YXJnZXQgcGljYworKiAgICAgICBJTjogIHVuc2lnbmVkIGNoYXIgbmFkX3NlbmQgICAgICBOb2RlIEFEZHJlc3MgZm9yIHNlbmRpbmcKKyogICAgICAgSU46ICB1bnNpZ25lZCBjaGFyICpzbmRfYnVmICAgICAgc2VuZCBkYXRhIGJ1ZmZlcgorKiAgICAgICBJTjogIHVuc2lnbmVkIGxvbmcgc25kX2J1Zl9sZW4gICBzZW5kIGRhdGEgbGVuZ3RoCisqICAgICAgIElOOiAgdW5zaWduZWQgbG9uZyBFeHBlY3RlZFJlc3BvbnNlTGVuZ3RoCisqCisqICAgSU4vT1VUOiAgdW5zaWduZWQgbG9uZyAqcmVjX2J1Zl9sZW4gIHJlYyBidWYgc2l6ZSAmIHJlYydkIGRhdGEgbGVuZ3RoCisqCisqICAgICAgT1VUOiAgdW5zaWduZWQgY2hhciAqbmFkX3JlY2VpdmUgIFJlY2VpdmVkIE5vZGUgQURkcmVzcworKiAgICAgIE9VVDogIHVuc2lnbmVkIGNoYXIgKnJlY19idWYgICAgICByZWNlaXZlIGRhdGEgYnVmZmVyCisqCisqICC3tSC72KO6ICAgVENMX09LICAgIFN1Y2VzcworKiAgICAgICAgICAgIFRDTF9UUkFOU01FUlJfSEFMVEVEICAgIEVycm9yIGR1cmluZyB0cmFuc21pc3Npb24sCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGljYyB3YXMgZGVzZWxlY3RlZCBzdWNjZXNzZnVsbHkuCisqICAgICAgICAgICAgVENMX1RSQU5TTUVSUl9OT1RBRyAgICAgRXJyb3IgZHVyaW5nIHRyYW5zbWlzc2lvbiwKKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQaWNjIGNvdWxkIG5vdCBiZSBkZXNlbGVjdGVkIGFuZCBpcworKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9lcmQuCisqICAgICAgICAgICAgTUlfUkVDQlVGX09WRVJGTE9XICAgICAgbW9yZSB0aGFuICpyZWNfYnVmX2xlbiBieXRlcyByZWMnZAorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisgdW5zaWduZWQgc2hvcnQgVGNsRXhjaGFuZ2UoIHVuc2lnbmVkIGNoYXIgIGNpZCwgdW5zaWduZWQgY2hhciAgbmFkX3NlbmQsIHVuc2lnbmVkIGNoYXIgICpzbmRfYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICBzbmRfYnVmX2xlbiwgdW5zaWduZWQgY2hhciBFeHBlY3RlZFJlc3BvbnNlTGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICAqKnJlY19idWYsIHVuc2lnbmVkIGNoYXIgICpyZWNfYnVmX2xlbiApCisgIHsKKwlzaG9ydCB3Q2FyZFN0YXR1cz0wLCB3UHJvdG9jb2xTdGF0dXM9MDsKKwl1bnNpZ25lZCBzaG9ydCBiUmVzcG9uc2VMZW5ndGgsQnVmSW5kZXg7CisJCisJSFdfU1BJX1JGX0NmZ0luaXQoKTsKKworCUJ1ZkluZGV4ID0gMDsKKwlUY2xDdXJyZW50UGljY0luZm8tPk1TbmRCdWZmZXJbQnVmSW5kZXgrK10gPSAweDAyIHwgVGNsQ3VycmVudFBpY2NJbmZvLT5ibGtucjsKKwlpZihUY2xDdXJyZW50UGljY0luZm8tPmNpZFN1cHApCisJeworCQlUY2xDdXJyZW50UGljY0luZm8tPk1TbmRCdWZmZXJbMF0gfD0gMHgwODsKKwkJVGNsQ3VycmVudFBpY2NJbmZvLT5NU25kQnVmZmVyW0J1ZkluZGV4KytdID0gY2lkOworCX0KKwlpZihUY2xDdXJyZW50UGljY0luZm8tPm5hZFN1cHApCisJeworCQlUY2xDdXJyZW50UGljY0luZm8tPk1TbmRCdWZmZXJbMF0gfD0gMHgwNDsKKwkJVGNsQ3VycmVudFBpY2NJbmZvLT5NU25kQnVmZmVyW0J1ZkluZGV4KytdID0gbmFkX3NlbmQ7CisJfQorCW1lbWNweSgmKFRjbEN1cnJlbnRQaWNjSW5mby0+TVNuZEJ1ZmZlcltCdWZJbmRleF0pLHNuZF9idWYsc25kX2J1Zl9sZW4pOworCQorCS8vCUNvbW11bmljYXRlIHRoZSBwcmVwYXJlZCBidWZmZXIgdG8gdGhlIGNhcmQgYW5kIGdldCBpdHMgcmVzcG9uc2UuCisgICAgLy8gCVJ4Q1JDIGFuZCBUeENSQyBlbmFibGUsIHBhcml0eSBlbmFibGUKKyAgICAvL1dyaXRlUkMoUmVnQ2hhbm5lbFJlZHVuZGFuY3ksMHgwRik7CisgICAgV3JpdGVSQyhNb2RlUmVnLCAweDAxKTsKKyAgICBTZXRCaXRNYXNrKFR4TW9kZVJlZywgMHg4MCk7CisgICAgU2V0Qml0TWFzayhSeE1vZGVSZWcsIDB4ODApOworICAgIENsZWFyQml0TWFzayhSRlUxRCwgMHgxMCk7IAorLy8JUGNkU2V0VG1vKDMyKigxPDxUY2xDdXJyZW50UGljY0luZm8tPmZ3aSkpOyAgICAgLy8wODAyMTUKKwlQY2RTZXRUbW8oMzIqKDE8PFRjbEN1cnJlbnRQaWNjSW5mby0+ZndpKSsxKTsgICAvLzA4MDUxMgorCisgICAgd1Byb3RvY29sU3RhdHVzID0gKHNob3J0KSBFeGNoYW5nZUJ5dGVTdHJlYW0oUENEX1RSQU5TQ0VJVkUsIFRjbEN1cnJlbnRQaWNjSW5mby0+TVNuZEJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAJc25kX2J1Zl9sZW4rQnVmSW5kZXgsIFRjbEN1cnJlbnRQaWNjSW5mby0+TVJjdkJ1ZmZlciwgJmJSZXNwb25zZUxlbmd0aCk7CisgICAgICAgIAkKKwlpZiggd1Byb3RvY29sU3RhdHVzICE9IE1JX09LICkKKwl7CisJCS8vCUVycm9yOiBjb3VsZCBub3QgZXhjaGFuZ2UgaW5mbyBibG9ja3Mgd2l0aCB0aGUgY2FyZC4KKwkJaWYod1Byb3RvY29sU3RhdHVzICE9IE1JX05PVEFHRVJSKQorCQkJd1Byb3RvY29sU3RhdHVzID0gVENMXzJMQVlFUl9FUlI7CisJICAgCXJldHVybiAod1Byb3RvY29sU3RhdHVzKTsKKwl9CisKKwkvLwlDaGVjayBpZiByZWNlaXZlZCBibG9jayBpcyBhIFMtYmxvY2sgZm9yIFdUWAorICAgIHdoaWxlKCAoVGNsQ3VycmVudFBpY2NJbmZvLT5NUmN2QnVmZmVyWzBdJjB4ZjApID09IDB4ZjAgKQorCXsKKwkJVGNsQ3VycmVudFBpY2NJbmZvLT5NU25kQnVmZmVyWzBdID0gMHhmYTsKKwkJVGNsQ3VycmVudFBpY2NJbmZvLT5NU25kQnVmZmVyWzFdID0gY2lkOworICAgICAgICBUY2xDdXJyZW50UGljY0luZm8tPk1TbmRCdWZmZXJbMl0gPSBUY2xDdXJyZW50UGljY0luZm8tPk1TbmRCdWZmZXJbMl0mMHgzZjsKKyAgICAgICAgCQorCQkvLwlDb21tdW5pY2F0ZSB0aGUgcHJlcGFyZWQgYnVmZmVyIHRvIHRoZSBjYXJkIGFuZCBnZXQgaXRzIHJlc3BvbnNlLgorICAgIAl3UHJvdG9jb2xTdGF0dXMgPSAoc2hvcnQpRXhjaGFuZ2VCeXRlU3RyZWFtKFBDRF9UUkFOU0NFSVZFLCBUY2xDdXJyZW50UGljY0luZm8tPk1TbmRCdWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgCQkzLCBUY2xDdXJyZW50UGljY0luZm8tPk1SY3ZCdWZmZXIsICZiUmVzcG9uc2VMZW5ndGgpOworICAgICAgICBpZiggd1Byb3RvY29sU3RhdHVzICE9IE1JX09LICkKKwkJeworCQkJLy8JRXJyb3I6IGNvdWxkIG5vdCBleGNoYW5nZSBpbmZvIGJsb2NrcyB3aXRoIHRoZSBjYXJkLgorCQkJaWYod1Byb3RvY29sU3RhdHVzICE9IE1JX05PVEFHRVJSKQorCQkJCXdQcm90b2NvbFN0YXR1cyA9IFRDTF8yTEFZRVJfRVJSOworICAgICAgCQlyZXR1cm4gKHdQcm90b2NvbFN0YXR1cyk7CisJCX0KKwl9CisJaWYoVGNsQ3VycmVudFBpY2NJbmZvLT5ibGtuciA9PSAoVGNsQ3VycmVudFBpY2NJbmZvLT5NUmN2QnVmZmVyWzBdfDB4MDEpICkJLy9ibG9jayBudW1iZXIgZXF1YWwKKwl7CisJCS8vCUVycm9yOiBibG9jayBudW1iZXIgbm90IGVxdWFsLgorICAgCQlyZXR1cm4gKFRDTF9GQVRBTF9QUk9UT0NPTCk7CisJfQorICAgIFRjbEN1cnJlbnRQaWNjSW5mby0+YmxrbnIgXj0gMTsJLy8gVG9nZ2xlIGJsb2NrIG51bWJlcgorCisJQnVmSW5kZXggPSAxOworCWlmKFRjbEN1cnJlbnRQaWNjSW5mby0+TVJjdkJ1ZmZlclswXSAmIDB4MDgpCisJeworCQlpZihjaWQgIT0gVGNsQ3VycmVudFBpY2NJbmZvLT5NU25kQnVmZmVyW0J1ZkluZGV4KytdKQorCQl7CisJCQkvLwlFcnJvcjogY2lkIG5vdCBlcXVhbC4KKwkgICAJCXJldHVybiAoVENMX0NJRElOVkFMSUQpOworCQl9CisJfQorCWlmKFRjbEN1cnJlbnRQaWNjSW5mby0+TVJjdkJ1ZmZlclswXSAmIDB4MDQpCisJeworCQlpZihuYWRfc2VuZCAhPSBUY2xDdXJyZW50UGljY0luZm8tPk1TbmRCdWZmZXJbQnVmSW5kZXgrK10pCisJCXsKKwkJCS8vCUVycm9yOiBuYWQgbm90IGVxdWFsLgorCSAgIAkJcmV0dXJuICggVENMX05BRElOVkFMSUQgKTsKKwkJfQorCX0KKworLy8gICAgaWYoIChUY2xDdXJyZW50UGljY0luZm8tPk1SY3ZCdWZmZXJbMF0mMHhlMCkgPT0gMHhhMCApCisvLwl7CisvLwkJcHJpbnRmKCJDaGFpbmluZ1xyXG4iKTsKKy8vCX0KKwkKKwkvLwlDaGVjayB0aGUgbGVuZ3RoIG9mIHRoZSByZXNwb25zZS4gSXQgbXVzdCBiZSA+IDEgYW5kIDw9IHNnYk1BWF9JTkZPX0ZSQU1FX1NJWkUgaW4gYWxsIGNhc2VzLgorCS8vCVN1YnN0cmFjdCA0IGJ5dGVzIG9mIFQ9Q0wgb3ZlcmhlYWQgKFBDQixDSUQsQ1JDMTYpCisJKnJlY19idWZfbGVuID0gYlJlc3BvbnNlTGVuZ3RoLTI7CisJaWYoICgqcmVjX2J1Zl9sZW4gPT0gMCkgfHwgKCpyZWNfYnVmX2xlbiA+IFRjbEN1cnJlbnRQaWNjSW5mby0+ZnNjKSkKKwl7CisJCS8vCUVycm9yOiBibG9jayB3aXRoIGluYXBwcm9wcmlhdGUgbnVtYmVyIG9mIGJ5dGVzIHJlY2VpdmVkIGZyb20gdGhlIGNhcmQuCisJCXJldHVybiBUQ0xfRkFUQUxfUFJPVE9DT0w7CisJfQorCWlmKCpyZWNfYnVmX2xlbiA+PSAyKQorCXsKKwkJKnJlY19idWYgPSBUY2xDdXJyZW50UGljY0luZm8tPk1SY3ZCdWZmZXIrQnVmSW5kZXg7CisJCXdDYXJkU3RhdHVzID0gKihUY2xDdXJyZW50UGljY0luZm8tPk1SY3ZCdWZmZXIrQnVmSW5kZXgrKnJlY19idWZfbGVuLTIpPDw4IHwgKihUY2xDdXJyZW50UGljY0luZm8tPk1SY3ZCdWZmZXIrQnVmSW5kZXgrKnJlY19idWZfbGVuLTEpOworCQkqcmVjX2J1Zl9sZW4gLT0gMjsKKwl9CisJZWxzZQorCXsKKwkJcmV0dXJuIChUQ0xfRkFUQUxfUFJPVE9DT0wpOworCX0KKworCWlmKCgod0NhcmRTdGF0dXMgJiAweGYwMDApICE9IDB4NjAwMCkgJiYgKCh3Q2FyZFN0YXR1cyAmIDB4ZjAwMCkgIT0gMHg5MDAwKSkKKwkgeyByZXR1cm4gKFRDTF9GQVRBTF9QUk9UT0NPTCk7IH0JLy/S/rLY09C52LSryuS48cq9oaLNqNDF0K3S6c/gudi1xLTtzvMgICAgMDgwNTEyCisKKwlyZXR1cm4gd0NhcmRTdGF0dXM7CisgIH0KKworLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICAgICAgICAgCQkJCQkJCQkgICAgICAgIFRDTCDIoSDP+yDRoSC2qAorKgorKiAgw+ggyvajuiAgVENMIMihIM/7INGhILaoCisqICAgICAgICAgICAgRGVzZWxlY3RzIHRoZSBzcGVjaWZpZWQgUGljYyB1c2luZyB0aGUgZGl2aWRlciBzZXQgcHJldmlvdXNseQorKiAgICAgICAgICAgIGR1cmluZyB0aGUgYWN0aXZhdGlvbiBzZXF1ZW5jZSBvciB1c2luZyBUY2xQcHMoKS4KKyogICAgICAgICAgICBPbiBUQ0xfVFJBTlNNRVJSX05PVEFHIHRoZSBDSUQgaXMgcmVsZWFzZWQgYW5kIHNvIHRoaXMgcGljYworKiAgICAgICAgICAgIGlzIGlnbm9yZWQuCisqCisqICCyziDK/aO6ICBjaWQgIL+oSUS6xQorKiAgICAgICAgICAgSU46ICB1bnNpZ25lZCBjaGFyIGNpZCAgICAgY2lkIG9mIHRoZSB0YXJnZXQgcGljYworKgorKiAgt7Ugu9ijuiAgVENMX09LICAgIFBpY2Mgc3VjZXNzZnVsbHkgZGVzZWxlY3RlZAorICAgICAgICAgICAgVENMX1RSQU5TTUVSUl9OT1RBRyAgIFBpY2MgY291bGRuJ3QgYmUgZGVzZWxlY3RlZC4KKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworIHVuc2lnbmVkIHNob3J0IFRjbERlc2VsZWN0KCB1bnNpZ25lZCBjaGFyIGNpZCApCisgIHsKKwl1bnNpZ25lZCBzaG9ydCBzdGF0dXM7CisJdW5zaWduZWQgc2hvcnQgYlJlc3BvbnNlTGVuZ3RoOworCisJSFdfU1BJX1JGX0NmZ0luaXQoKTsKKworCWlmIChjaWQgPiAxNCkKKwkgIHJldHVybiBUQ0xfQ0lESU5WQUxJRDsKKworCVRjbEN1cnJlbnRQaWNjSW5mby0+TVNuZEJ1ZmZlclswXT0weENBOyAJLy8gRGVTZWxlY3QgY29tbWFuZHMKKwlUY2xDdXJyZW50UGljY0luZm8tPk1TbmRCdWZmZXJbMV09Y2lkOworCisgICAgLy9Xcml0ZVJDKFJlZ0NoYW5uZWxSZWR1bmRhbmN5LDB4MEYpOyAgIAorICAgIFdyaXRlUkMoTW9kZVJlZywgMHgwMSk7CisgICAgU2V0Qml0TWFzayhUeE1vZGVSZWcsIDB4ODApOworICAgIFNldEJpdE1hc2soUnhNb2RlUmVnLCAweDgwKTsKKyAgICBDbGVhckJpdE1hc2soUkZVMUQsIDB4MTApOworCVBjZFNldFRtbygzMiooMTw8VGNsQ3VycmVudFBpY2NJbmZvLT5md2kpKzEpOyAgIC8vMDgwNTEyCisKKyAgICBzdGF0dXMgPSAoc2hvcnQpIEV4Y2hhbmdlQnl0ZVN0cmVhbShQQ0RfVFJBTlNDRUlWRSwgVGNsQ3VycmVudFBpY2NJbmZvLT5NU25kQnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkyLCBUY2xDdXJyZW50UGljY0luZm8tPk1SY3ZCdWZmZXIsICZiUmVzcG9uc2VMZW5ndGgpOworCWlmKCBzdGF0dXMgIT0gTUlfT0sgKQorCXsKKwkJLy8JRXJyb3I6IGNvdWxkIG5vdCBleGNoYW5nZSBpbmZvIGJsb2NrcyB3aXRoIHRoZSBjYXJkLgorCQlpZihzdGF0dXMgIT0gTUlfTk9UQUdFUlIpCisJCQlzdGF0dXMgPSBUQ0xfMkxBWUVSX0VSUjsKKwkgICAJcmV0dXJuIHN0YXR1czsKKwl9CisJaWYoYlJlc3BvbnNlTGVuZ3RoICE9IDIpCisJCSAgc3RhdHVzID0gVENMX0ZBVEFMX1BST1RPQ09MOworCWlmKFRjbEN1cnJlbnRQaWNjSW5mby0+TVJjdkJ1ZmZlclswXSAhPSAweENBKQorCQkgIHN0YXR1cyA9IFRDTF9GQVRBTF9QUk9UT0NPTDsKKwkKKwlyZXR1cm4gc3RhdHVzOwkJICAKKyAgfSAKKworLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICAgICAgICAgCQkJCQkJCSAgINTayeTGtb+ovNO158fSvfjI6zE0NDQzMy00x+m/9s/CsuLK1L+oxqy1xLTm1NoKKyoKKyogIMPoIMr2o7ogINTayeTGtb+ovNO158fSvfjI6zE0NDQzMy00x+m/9s/CsuLK1L+oxqy1xLTm1NoKKyoKKyogILLOIMr9o7ogILzssuJDUFW/qMrHt/HA67+qCisqICAgICAKKyogILe1ILvYo7ogIDAgICAgv6i7ubTm1NoKKyogICAgICAgICAgILfHMCAgv6jGrMDrv6oKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworIHVuc2lnbmVkIGNoYXIgUElDQ19UY2xDaGVja1JGUm91bmdlKCB2b2lkICkKKyAgeworCXNob3J0IHdQcm90b2NvbFN0YXR1cz0wOworCXVuc2lnbmVkIHNob3J0IGJSZXNwb25zZUxlbmd0aDsKKwl1bnNpZ25lZCBjaGFyICBjaWQ9MDsJCQkJICAvL9ei0uIKKworICAgIEhXX1NQSV9SRl9DZmdJbml0KCk7CisKKwlUY2xDdXJyZW50UGljY0luZm8tPk1TbmRCdWZmZXJbMF0gPSAweEJBIHwgVGNsQ3VycmVudFBpY2NJbmZvLT5ibGtucjsKKwlUY2xDdXJyZW50UGljY0luZm8tPk1TbmRCdWZmZXJbMV0gPSBjaWQ7CisJCisJLy8JQ29tbXVuaWNhdGUgdGhlIHByZXBhcmVkIGJ1ZmZlciB0byB0aGUgY2FyZCBhbmQgZ2V0IGl0cyByZXNwb25zZS4KKyAgICAvLyAJUnhDUkMgYW5kIFR4Q1JDIGVuYWJsZSwgcGFyaXR5IGVuYWJsZQorICAgIC8vV3JpdGVSQyggUmVnQ2hhbm5lbFJlZHVuZGFuY3ksIDB4MEYgKTsgICAgCisgICAgV3JpdGVSQyhNb2RlUmVnLCAweDAxKTsKKyAgICBTZXRCaXRNYXNrKFR4TW9kZVJlZywgMHg4MCk7CisgICAgU2V0Qml0TWFzayhSeE1vZGVSZWcsIDB4ODApOworICAgIENsZWFyQml0TWFzayhSRlUxRCwgMHgxMCk7CisJUGNkU2V0VG1vKCAzMiAqICggMSA8PCBUY2xDdXJyZW50UGljY0luZm8tPmZ3aSApICk7CisJCisgICAgd1Byb3RvY29sU3RhdHVzID0gRXhjaGFuZ2VCeXRlU3RyZWFtKCBQQ0RfVFJBTlNDRUlWRSwgCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUY2xDdXJyZW50UGljY0luZm8tPk1TbmRCdWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAyLCAKKwkJCQkJCQkJCQkgIFRjbEN1cnJlbnRQaWNjSW5mby0+TVJjdkJ1ZmZlciwgCisJCQkJCQkJCQkJICAmYlJlc3BvbnNlTGVuZ3RoICk7CisJaWYoIHdQcm90b2NvbFN0YXR1cyAhPSAwICkKKwkgeworCQkvLwlFcnJvcjogY291bGQgbm90IGV4Y2hhbmdlIGluZm8gYmxvY2tzIHdpdGggdGhlIGNhcmQuCisJICAgCXJldHVybiAoIDB4RjMgKTsvL1NMT1RFUlJPUl9ERUFDVElWQVRFRF9QUk9UT0NPTAorCSB9CisJLy8JQ2hlY2sgaWYgcmVjZWl2ZWQgYmxvY2sgaXMgYSBTLWJsb2NrIGZvciBXVFgKKyAgICBpZiggKCAoIFRjbEN1cnJlbnRQaWNjSW5mby0+TVJjdkJ1ZmZlclswXSAmIDB4QjAgKSA9PSAweEEwICkgfHwgCisJICAgICggKCBUY2xDdXJyZW50UGljY0luZm8tPk1SY3ZCdWZmZXJbMF0gJiAweEMwICkgPT0gMHgwMCApICkKKwkgeyByZXR1cm4gMDsgfSAvL9PQv6i05tTaCisJcmV0dXJuIDB4RjM7ICAgLy9TTE9URVJST1JfREVBQ1RJVkFURURfUFJPVE9DT0w7CisgIH0KKwpkaWZmIC0tZ2l0IGEvaWNjX2FwZHVfbGliL1RDTC5IIGIvaWNjX2FwZHVfbGliL1RDTC5ICm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5ZGMzYTEKLS0tIC9kZXYvbnVsbAorKysgYi9pY2NfYXBkdV9saWIvVENMLkgKQEAgLTAsMCArMSwyNDYgQEAKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElTTzc4MTYtMSBUPUNMKMG0IMK3ILLjKSC0qyDK5CDQrSDS6SDH/SC2ryAKKyoJCisqCQkJCQkJCQkJICAgIF9fX19fIElTTzc4MTYtMiDBtCDCtyCy4yDH/SC2r19fX19fCisqCisqICDD6CDK9qO6INb30qrN6rPJIFQ9Q0woyv2+3cG0wrey4ym0q8rk0K3S6SDK/b7dvbu7uyAgICBUPUNMIEZDRAorKgorKiAgxeQg1sOjuiAKKyogICAgICAgICAgQ1BVICAgICAgICAgOiAKKyogICAgICAgICAgzeLKsdbTICAgICAgOiAKKyogICAgICAgICAgQ1BV1MvQ0Mqx1tMgOiAKKyogICAgICAgICAg1MvQ0Lu3vrMgICAgOiBLZWlsIEFSTSAoIFJlYWxWaWV3IE1ESyApICAgdjMuNTDGxr3isOaxvgorKiAgICAgICAgICC7t76zyejWwyAgICA6IDEpIMSjyr06ICAgIAorKiAgICAgICAgICAgICAgICAgICAgICAgIDIpINPFu686IMSsyM8gKCBMZXZlbCAwICgtMDApIC4uLikKKyoKKyogINeiINLio7ogVD1DTCC0q8rk0K3S6bf7us9JU08xNDQ0M7Hq17yjuworKgorKiAgsuMgw/ujuiBUQ0wuSCAKKyoKKyogINf3INXfo7ogWmhhbmdfT1NAMTYzLmNvbQorKgorKiAgsOYgsb6juiBWMi4wICAKKyogICAgICAgICAgICAgICAgICAKKyogIMjVIMbao7ogMjAwOS0wNS0yMQorKgorKiAgICAgICAgQ29weXJpZ2h0IChjKSAyMDA4LTIwMDkgICBCcmFuZC1ORVcgQy5BLlAgRWxlY3Ryb25pY3MgVGVjaG5vbG9neSBDTy4sTFRECisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KKyNpZm5kZWYgX19UQ0xfSF9fCisjZGVmaW5lIF9fVENMX0hfXworCisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoJCQkJCQkJCQkJICAgICCzoyDBvworKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIKK3sKKyNlbmRpZgorCisvKiBJU08xNDQ0MyBTdXBwb3J0IFByb3BlcnRpZXMKKyogU29tZSBvZiB0aGUgcHJvdG9rb2xsIGZ1bmN0aW9ucyBvZiBJU08xNDQ0MyBuZWVkcyBpbmZvcm1hdGlvbiBhYm91dAorKiB0aGUgY2FwYWJpbGl0eSBvZiB0aGUgcmVhZGVyIGRldmljZSwgd2hpY2ggYXJlIHByb3ZpZGVkIGJ5IHRoaXMKKyogY29uc3RhbnRzLgorKi8KKy8veworI2RlZmluZSBUQ0xGU0RTTkRNQVggICA4ICAgLy8vPCBtYXguIGZyYW1lIHNpemUgc2VuZAorI2RlZmluZSBUQ0xGU0RSRUNNQVggICA4ICAgLy8vPCBtYXguIGZyYW1lIHNpemUgcmN2CisjZGVmaW5lIFRDTERTTUFYICAgICAgIDMgICAvLy88IG1heC4gYmF1ZHJhdGUgZGl2aWRlciBQSUNDIC0tPiBQQ0QKKyNkZWZpbmUgVENMRFJNQVggICAgICAgMyAgIC8vLzwgbWF4LiBiYXVkcmF0ZSBkaXZpZGVyIFBDRCAtLT4gUElDQworCisjZGVmaW5lIFRDTERTREZMVCAgICAgIDAgICAvLy88IGRlZmF1bHQgYmF1ZHJhdGUgZGl2aWRlciBQSUNDIC0tPiBQQ0QKKyNkZWZpbmUgVENMRFJERkxUICAgICAgMCAgIC8vLzwgZGVmYXVsdCBiYXVkcmF0ZSBkaXZpZGVyIFBDRCAtLT4gUElDQworLy99CisKKworI2RlZmluZSAgREVGX0ZJRk9fTEVOR1RIICAgIDY0ICAvLyE8IGRlZmF1bHQgRklGTyBzaXplCisKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCQkJCQkJCQkJCSAgICAgwOAg0M0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworLy9QSUNDIGluZm8gc3RydWN0CisgdHlwZWRlZiBzdHJ1Y3QgCisgIHsKKyAgCXVuc2lnbmVkIGNoYXIgY2lkOworICAJdW5zaWduZWQgY2hhciBmc2NpOworICAJdW5zaWduZWQgY2hhciBmc2RpOworICAJdW5zaWduZWQgaW50ICBmc2M7CisgIAl1bnNpZ25lZCBpbnQgIGZzZDsKKyAgCXVuc2lnbmVkIGNoYXIgZndpOworICAJdW5zaWduZWQgY2hhciB3dHg7CisgIAl1bnNpZ25lZCBjaGFyIGNpZFN1cHA7CisgIAl1bnNpZ25lZCBjaGFyIG5hZFN1cHA7CisgIAl1bnNpZ25lZCBjaGFyIHBpY2NEaXY7CisgIAl1bnNpZ25lZCBjaGFyIHBjZERpdjsKKyAgCXVuc2lnbmVkIGNoYXIgYmxrbnI7CS8vLy+/7LXE0PLB0LrFCisgIAl1bnNpZ25lZCBjaGFyIGRzaTsgICAgICAvL2RpdmlkZXIgUElDQyAtPiBQQ0QgIAorICAJdW5zaWduZWQgY2hhciBkcmk7ICAgICAgLy9kaXZpZGVyIFBDRCAtPiBQSUNDICAKKwl1bnNpZ25lZCBjaGFyICpNU25kQnVmZmVyOwkJLy+3osvNw/zB7ru6s+XH+AorCXVuc2lnbmVkIGNoYXIgKk1SY3ZCdWZmZXI7CQkvL73TytXD/MHuu7qz5cf4CisgIH1QSUNDU1RSVUNUOworCisKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgkJCQkJCQkJCQkgICAgILHkIMG/CisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KKyAgZXh0ZXJuICBQSUNDU1RSVUNUICAqVGNsQ3VycmVudFBpY2NJbmZvOyAgLy8gc3RydWN0dXJlIHBvaW50ZXIgZm9yIGN1cnJlbnQgc2VsZWN0ZWQgUGljYworCisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogICAgICAgICAJCQkJCQkJCSAgICAguq8gyv0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworCisgZXh0ZXJuIHZvaWQgUmVzZXRQaWNjSW5mbyggdW5zaWduZWQgY2hhciBjaWQsIFBJQ0NTVFJVQ1QgKmluZm8gKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAqLworIGV4dGVybiB1bnNpZ25lZCBzaG9ydCBUY2xHZXRBdHMoIHVuc2lnbmVkIGNoYXIgY2lkLCBQSUNDU1RSVUNUICpJbmZvICk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgKi8KKyBleHRlcm4gdW5zaWduZWQgc2hvcnQgVGNsUHBzKCB1bnNpZ25lZCBjaGFyIGNpZCwgdW5zaWduZWQgY2hhciBkc2ksIHVuc2lnbmVkIGNoYXIgZHJpICk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgKi8KKyBleHRlcm4gdW5zaWduZWQgc2hvcnQgVGNsRXhjaGFuZ2UoIHVuc2lnbmVkIGNoYXIgIGNpZCwgdW5zaWduZWQgY2hhciAgbmFkX3NlbmQsIHVuc2lnbmVkIGNoYXIgICpzbmRfYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAgc25kX2J1Zl9sZW4sIHVuc2lnbmVkIGNoYXIgRXhwZWN0ZWRSZXNwb25zZUxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgICoqcmVjX2J1ZiwgdW5zaWduZWQgY2hhciAgKnJlY19idWZfbGVuICk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgKi8KKyBleHRlcm4gdW5zaWduZWQgc2hvcnQgVGNsRGVzZWxlY3QoIHVuc2lnbmVkIGNoYXIgY2lkICk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgKi8KKyBleHRlcm4gdW5zaWduZWQgY2hhciAgUElDQ19UY2xDaGVja1JGUm91bmdlKCB2b2lkICk7IC8qICAqLworCisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogICAgICAgICAJCQkJCQkJCSAgICC4tCDOuyBQSUNDILv5ILG+INDFIM+iCisqCisqICDD6CDK9qO6ICC4tM67UElDQ7XEu/mxvtDFz6Isu9a4tMv509Cx5MG/tcTWtSAgICBTZW5kcyB0aGUgUkFUUyBjb21tYW5kIGFuZCBwYXJzZXMgdGhlIEFUUworKgorKiAgss4gyv2juiAgY2lkICA6ICC/qElEusUgICAgICC907Slyr3Du9PQyrLDtLTLss7K/aOsILfHvdO0pcq9yrnTw7TLss7K/QorKiAgICAgICAgICAgaW5mbyA6ICBSRr+ozajQxdDFz6LK/b7dveG5uQorKgorKiAgt7Ugu9ijuiAgzt4KKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworLy8gdm9pZCBSZXNldFBpY2NJbmZvKCB1bnNpZ25lZCBjaGFyIGNpZCwgUElDQ1NUUlVDVCAqaW5mbyApCisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogICAgICAgICAJCQkJCQkJCSAgICAgICAgu/EgyKEgQVRTCisqCisqICDD6CDK9qO6ICC78SDIoSBBVFMgICAgICAgICAgICAgU2VuZHMgdGhlIFJBVFMgY29tbWFuZCBhbmQgcGFyc2VzIHRoZSBBVFMKKyoKKyogILLOIMr9o7ogIGNpZCAgv6hJRLrFICAgICAgvdO0pcq9w7vT0Mqyw7S0y7LOyv2jrCC3x73TtKXKvcq508O0y7LOyv0KKyogICAgICAgICAgIGluZm8gIFJGv6jNqNDF0MXPosr9vt294bm5CisqCisqICC3tSC72KO6ICBzdGF0dXMKKyogICAgICAgICAgICAgICAgICAgVENMX09LCisqICAgICAgICAgICAgICAgICAgIFRDTF9BVFNMRU4gICAgICAgICAgICBBVFMgb2YgaW52YWxpZCBsZW5ndGgKKyogICAgICAgICAgICAgICAgICAgVENMX0FUU19GT1JNQVRfRVJSICAgIEVycm9yIGluIEFUUyBGb3JtYXQuCisqICAgICAgICAgICAgICAgICAgIE1JX1JFQ0JVRl9PVkVSRkxPVyAgICBBVFMgYnVmZmVyIHRvbyBzbWFsbC4KKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworLy8gdW5zaWduZWQgc2hvcnQgVGNsR2V0QXRzKCB1bnNpZ25lZCBjaGFyIGNpZCwgUElDQ1NUUlVDVCAqSW5mbyApCisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogICAgICAgICAJCQkJCQkJCSAgICAgICAgSUMgv6ggUFBTCisqCisqICDD6CDK9qO6ICBJQ7+oIFBQUyAgIFNlbmRzIHRoZSBQcm90b2NvbCBhbmQgUGFyYW1ldGVyIHNlbGVjdGlvbiBhbmQgY2hlY2tzIHRoZSBhbnN3ZXIuICAKKyogICAgICAgICAgICBJZiBhIHZhbGlkIFBQUyByZXNwb25zZSBpcyByZWNlaXZlZCBpdCBjYWxscyBQY2RTZXRBdHRyaWIoKSB3aXRoIGRzaSBhbmQgZHJpLgorKiAgICAgICAgICAgIFRoZXJlIGlzIG5vIHJldHJ5IGF0dGVtcHQuCisqCisqICCyziDK/aO6ICBjaWQgIL+oSUS6xSBjaWQgb2YgdGFyZ2V0IHBpY2MKKyogICAgICAgICAgIGRzaSAgRGl2aWRlciBTZW5kIEludGVnZXIgdG8gc3dpdGNoIHRvCisqICAgICAgICAgICBkcmkgIERpdmlkZXIgUmVjZWl2ZSBJbnRlZ2VyIHRvIHN3aXRjaCB0bworKgorKiAgt7Ugu9ijuiAgVENMLi4gICBQUFMgc3BlY2lmaWMgZXJyb3IgY29kZQorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisvLyB1bnNpZ25lZCBzaG9ydCBUY2xQcHMoIHVuc2lnbmVkIGNoYXIgY2lkLCB1bnNpZ25lZCBjaGFyIGRzaSwgdW5zaWduZWQgY2hhciBkcmkgKQorLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICAgICAgICAgCQkJCQkJCQkgICAgICAgIFRDTCDK/SC+3SC9uyC7uworKgorKiAgw+ggyvajuiAgVENMIMr9IL7dIL27ILu7CisqICAgICAgICAgICAgRXhjaGFuZ2VzIERhdGEgd2l0aCB0aGUgUGljYyB1c2luZyB0aGUgZGl2aWRlcnMgc2V0IGVpdGhlciBkdXJpbmcKKyogICAgICAgICAgICB0aGUgYWN0aXZhdGlvbiBzZXF1ZW5jZSBvciB3aXRoIFRjbFBwcygpLiBPbiB0cmFuc21pc3Npb24gZXJyb3JzIGxpa2UKKyogICAgICAgICAgICBhIEVEQyBjaGVjayBlcnJvciBvciBhIFRpbWVvdXQgaXQgdHJpZXMgdG8gcmV0cmFuc21pdCAKKyogICAgICAgICAgICBkYXRhIHVwIHRvICdtYXhSZXRyaWVzJyB0aW1lcyBzcGVjaWZpZWQgaW4gVGNsSW5pdCwgCisqICAgICAgICAgICAgdGhlbiBpdCB0cmllcyB0byBkZXNsZWN0IHRoZSBwaWNjLgorKgorKiAgss4gyv2juiAgCisqICAgICAgIElOOiAgdW5zaWduZWQgY2hhciBjaWQgICAgICAgICAgIGNpZCBvZiB0YXJnZXQgcGljYworKiAgICAgICBJTjogIHVuc2lnbmVkIGNoYXIgbmFkX3NlbmQgICAgICBOb2RlIEFEZHJlc3MgZm9yIHNlbmRpbmcKKyogICAgICAgSU46ICB1bnNpZ25lZCBjaGFyICpzbmRfYnVmICAgICAgc2VuZCBkYXRhIGJ1ZmZlcgorKiAgICAgICBJTjogIHVuc2lnbmVkIGxvbmcgc25kX2J1Zl9sZW4gICBzZW5kIGRhdGEgbGVuZ3RoCisqICAgICAgIElOOiAgdW5zaWduZWQgbG9uZyBFeHBlY3RlZFJlc3BvbnNlTGVuZ3RoCisqCisqICAgSU4vT1VUOiAgdW5zaWduZWQgbG9uZyAqcmVjX2J1Zl9sZW4gIHJlYyBidWYgc2l6ZSAmIHJlYydkIGRhdGEgbGVuZ3RoCisqCisqICAgICAgT1VUOiAgdW5zaWduZWQgY2hhciAqbmFkX3JlY2VpdmUgIFJlY2VpdmVkIE5vZGUgQURkcmVzcworKiAgICAgIE9VVDogIHVuc2lnbmVkIGNoYXIgKnJlY19idWYgICAgICByZWNlaXZlIGRhdGEgYnVmZmVyCisqCisqICC3tSC72KO6ICAgVENMX09LICAgIFN1Y2VzcworKiAgICAgICAgICAgIFRDTF9UUkFOU01FUlJfSEFMVEVEICAgIEVycm9yIGR1cmluZyB0cmFuc21pc3Npb24sCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGljYyB3YXMgZGVzZWxlY3RlZCBzdWNjZXNzZnVsbHkuCisqICAgICAgICAgICAgVENMX1RSQU5TTUVSUl9OT1RBRyAgICAgRXJyb3IgZHVyaW5nIHRyYW5zbWlzc2lvbiwKKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQaWNjIGNvdWxkIG5vdCBiZSBkZXNlbGVjdGVkIGFuZCBpcworKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9lcmQuCisqICAgICAgICAgICAgTUlfUkVDQlVGX09WRVJGTE9XICAgICAgbW9yZSB0aGFuICpyZWNfYnVmX2xlbiBieXRlcyByZWMnZAorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisvLyB1bnNpZ25lZCBzaG9ydCBUY2xFeGNoYW5nZSggdW5zaWduZWQgY2hhciAgY2lkLCB1bnNpZ25lZCBjaGFyICBuYWRfc2VuZCwgdW5zaWduZWQgY2hhciAgKnNuZF9idWYsCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAgc25kX2J1Zl9sZW4sIHVuc2lnbmVkIGNoYXIgRXhwZWN0ZWRSZXNwb25zZUxlbmd0aCwKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICAqKnJlY19idWYsIHVuc2lnbmVkIGNoYXIgICpyZWNfYnVmX2xlbiApCisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogICAgICAgICAJCQkJCQkJCSAgICAgICAgVENMIMihIM/7INGhILaoCisqCisqICDD6CDK9qO6ICBUQ0wgyKEgz/sg0aEgtqgKKyogICAgICAgICAgICBEZXNlbGVjdHMgdGhlIHNwZWNpZmllZCBQaWNjIHVzaW5nIHRoZSBkaXZpZGVyIHNldCBwcmV2aW91c2x5CisqICAgICAgICAgICAgZHVyaW5nIHRoZSBhY3RpdmF0aW9uIHNlcXVlbmNlIG9yIHVzaW5nIFRjbFBwcygpLgorKiAgICAgICAgICAgIE9uIFRDTF9UUkFOU01FUlJfTk9UQUcgdGhlIENJRCBpcyByZWxlYXNlZCBhbmQgc28gdGhpcyBwaWNjCisqICAgICAgICAgICAgaXMgaWdub3JlZC4KKyoKKyogILLOIMr9o7ogIGNpZCAgv6hJRLrFCisqICAgICAgICAgICBJTjogIHVuc2lnbmVkIGNoYXIgY2lkICAgICBjaWQgb2YgdGhlIHRhcmdldCBwaWNjCisqCisqICC3tSC72KO6ICBUQ0xfT0sgICAgUGljYyBzdWNlc3NmdWxseSBkZXNlbGVjdGVkCisgICAgICAgICAgICBUQ0xfVFJBTlNNRVJSX05PVEFHICAgUGljYyBjb3VsZG4ndCBiZSBkZXNlbGVjdGVkLgorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisvLyB1bnNpZ25lZCBzaG9ydCBUY2xEZXNlbGVjdCggdW5zaWduZWQgY2hhciBjaWQgKQorLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICAgICAgICAgCQkJCQkJCSAgINTayeTGtb+ovNO158fSvfjI6zE0NDQzMy00x+m/9s/CsuLK1L+oxqy1xLTm1NoKKyoKKyogIMPoIMr2o7ogINTayeTGtb+ovNO158fSvfjI6zE0NDQzMy00x+m/9s/CsuLK1L+oxqy1xLTm1NoKKyoKKyogILLOIMr9o7ogILzssuJDUFW/qMrHt/HA67+qCisqICAgICAKKyogILe1ILvYo7ogIDAgICAgv6i7ubTm1NoKKyogICAgICAgICAgILfHMCAgv6jGrMDrv6oKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworLy8gdW5zaWduZWQgY2hhciBQSUNDX1RjbENoZWNrUkZSb3VuZ2UoIHZvaWQgKQorCisKKworCisKKworCisjZW5kaWYgCmRpZmYgLS1naXQgYS9pY2NfYXBkdV9saWIvZGVzLmMgYi9pY2NfYXBkdV9saWIvZGVzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjQwYzdjMQotLS0gL2Rldi9udWxsCisrKyBiL2ljY19hcGR1X2xpYi9kZXMuYwpAQCAtMCwwICsxLDQ5MyBAQAorLyoKKyAqICBGSVBTLTQ2LTMgY29tcGxpYW50IDNERVMgaW1wbGVtZW50YXRpb24KKyAqCisgKiAgQ29weXJpZ2h0IChDKSAyMDAxLTIwMDMgIENocmlzdG9waGUgRGV2aW5lCisgKgorICogIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgKi8KKworI2luY2x1ZGUgImRlcy5oIgorCisvKiB0aGUgZWlnaHQgREVTIFMtYm94ZXMgKi8KKworY29uc3QgdWludDMyIFNCMVs2NF0gPQoreworICAgIDB4MDEwMTA0MDAsIDB4MDAwMDAwMDAsIDB4MDAwMTAwMDAsIDB4MDEwMTA0MDQsCisgICAgMHgwMTAxMDAwNCwgMHgwMDAxMDQwNCwgMHgwMDAwMDAwNCwgMHgwMDAxMDAwMCwKKyAgICAweDAwMDAwNDAwLCAweDAxMDEwNDAwLCAweDAxMDEwNDA0LCAweDAwMDAwNDAwLAorICAgIDB4MDEwMDA0MDQsIDB4MDEwMTAwMDQsIDB4MDEwMDAwMDAsIDB4MDAwMDAwMDQsCisgICAgMHgwMDAwMDQwNCwgMHgwMTAwMDQwMCwgMHgwMTAwMDQwMCwgMHgwMDAxMDQwMCwKKyAgICAweDAwMDEwNDAwLCAweDAxMDEwMDAwLCAweDAxMDEwMDAwLCAweDAxMDAwNDA0LAorICAgIDB4MDAwMTAwMDQsIDB4MDEwMDAwMDQsIDB4MDEwMDAwMDQsIDB4MDAwMTAwMDQsCisgICAgMHgwMDAwMDAwMCwgMHgwMDAwMDQwNCwgMHgwMDAxMDQwNCwgMHgwMTAwMDAwMCwKKyAgICAweDAwMDEwMDAwLCAweDAxMDEwNDA0LCAweDAwMDAwMDA0LCAweDAxMDEwMDAwLAorICAgIDB4MDEwMTA0MDAsIDB4MDEwMDAwMDAsIDB4MDEwMDAwMDAsIDB4MDAwMDA0MDAsCisgICAgMHgwMTAxMDAwNCwgMHgwMDAxMDAwMCwgMHgwMDAxMDQwMCwgMHgwMTAwMDAwNCwKKyAgICAweDAwMDAwNDAwLCAweDAwMDAwMDA0LCAweDAxMDAwNDA0LCAweDAwMDEwNDA0LAorICAgIDB4MDEwMTA0MDQsIDB4MDAwMTAwMDQsIDB4MDEwMTAwMDAsIDB4MDEwMDA0MDQsCisgICAgMHgwMTAwMDAwNCwgMHgwMDAwMDQwNCwgMHgwMDAxMDQwNCwgMHgwMTAxMDQwMCwKKyAgICAweDAwMDAwNDA0LCAweDAxMDAwNDAwLCAweDAxMDAwNDAwLCAweDAwMDAwMDAwLAorICAgIDB4MDAwMTAwMDQsIDB4MDAwMTA0MDAsIDB4MDAwMDAwMDAsIDB4MDEwMTAwMDQKK307CisKK2NvbnN0IHVpbnQzMiBTQjJbNjRdID0KK3sKKyAgICAweDgwMTA4MDIwLCAweDgwMDA4MDAwLCAweDAwMDA4MDAwLCAweDAwMTA4MDIwLAorICAgIDB4MDAxMDAwMDAsIDB4MDAwMDAwMjAsIDB4ODAxMDAwMjAsIDB4ODAwMDgwMjAsCisgICAgMHg4MDAwMDAyMCwgMHg4MDEwODAyMCwgMHg4MDEwODAwMCwgMHg4MDAwMDAwMCwKKyAgICAweDgwMDA4MDAwLCAweDAwMTAwMDAwLCAweDAwMDAwMDIwLCAweDgwMTAwMDIwLAorICAgIDB4MDAxMDgwMDAsIDB4MDAxMDAwMjAsIDB4ODAwMDgwMjAsIDB4MDAwMDAwMDAsCisgICAgMHg4MDAwMDAwMCwgMHgwMDAwODAwMCwgMHgwMDEwODAyMCwgMHg4MDEwMDAwMCwKKyAgICAweDAwMTAwMDIwLCAweDgwMDAwMDIwLCAweDAwMDAwMDAwLCAweDAwMTA4MDAwLAorICAgIDB4MDAwMDgwMjAsIDB4ODAxMDgwMDAsIDB4ODAxMDAwMDAsIDB4MDAwMDgwMjAsCisgICAgMHgwMDAwMDAwMCwgMHgwMDEwODAyMCwgMHg4MDEwMDAyMCwgMHgwMDEwMDAwMCwKKyAgICAweDgwMDA4MDIwLCAweDgwMTAwMDAwLCAweDgwMTA4MDAwLCAweDAwMDA4MDAwLAorICAgIDB4ODAxMDAwMDAsIDB4ODAwMDgwMDAsIDB4MDAwMDAwMjAsIDB4ODAxMDgwMjAsCisgICAgMHgwMDEwODAyMCwgMHgwMDAwMDAyMCwgMHgwMDAwODAwMCwgMHg4MDAwMDAwMCwKKyAgICAweDAwMDA4MDIwLCAweDgwMTA4MDAwLCAweDAwMTAwMDAwLCAweDgwMDAwMDIwLAorICAgIDB4MDAxMDAwMjAsIDB4ODAwMDgwMjAsIDB4ODAwMDAwMjAsIDB4MDAxMDAwMjAsCisgICAgMHgwMDEwODAwMCwgMHgwMDAwMDAwMCwgMHg4MDAwODAwMCwgMHgwMDAwODAyMCwKKyAgICAweDgwMDAwMDAwLCAweDgwMTAwMDIwLCAweDgwMTA4MDIwLCAweDAwMTA4MDAwCit9OworCitjb25zdCB1aW50MzIgU0IzWzY0XSA9Cit7CisgICAgMHgwMDAwMDIwOCwgMHgwODAyMDIwMCwgMHgwMDAwMDAwMCwgMHgwODAyMDAwOCwKKyAgICAweDA4MDAwMjAwLCAweDAwMDAwMDAwLCAweDAwMDIwMjA4LCAweDA4MDAwMjAwLAorICAgIDB4MDAwMjAwMDgsIDB4MDgwMDAwMDgsIDB4MDgwMDAwMDgsIDB4MDAwMjAwMDAsCisgICAgMHgwODAyMDIwOCwgMHgwMDAyMDAwOCwgMHgwODAyMDAwMCwgMHgwMDAwMDIwOCwKKyAgICAweDA4MDAwMDAwLCAweDAwMDAwMDA4LCAweDA4MDIwMjAwLCAweDAwMDAwMjAwLAorICAgIDB4MDAwMjAyMDAsIDB4MDgwMjAwMDAsIDB4MDgwMjAwMDgsIDB4MDAwMjAyMDgsCisgICAgMHgwODAwMDIwOCwgMHgwMDAyMDIwMCwgMHgwMDAyMDAwMCwgMHgwODAwMDIwOCwKKyAgICAweDAwMDAwMDA4LCAweDA4MDIwMjA4LCAweDAwMDAwMjAwLCAweDA4MDAwMDAwLAorICAgIDB4MDgwMjAyMDAsIDB4MDgwMDAwMDAsIDB4MDAwMjAwMDgsIDB4MDAwMDAyMDgsCisgICAgMHgwMDAyMDAwMCwgMHgwODAyMDIwMCwgMHgwODAwMDIwMCwgMHgwMDAwMDAwMCwKKyAgICAweDAwMDAwMjAwLCAweDAwMDIwMDA4LCAweDA4MDIwMjA4LCAweDA4MDAwMjAwLAorICAgIDB4MDgwMDAwMDgsIDB4MDAwMDAyMDAsIDB4MDAwMDAwMDAsIDB4MDgwMjAwMDgsCisgICAgMHgwODAwMDIwOCwgMHgwMDAyMDAwMCwgMHgwODAwMDAwMCwgMHgwODAyMDIwOCwKKyAgICAweDAwMDAwMDA4LCAweDAwMDIwMjA4LCAweDAwMDIwMjAwLCAweDA4MDAwMDA4LAorICAgIDB4MDgwMjAwMDAsIDB4MDgwMDAyMDgsIDB4MDAwMDAyMDgsIDB4MDgwMjAwMDAsCisgICAgMHgwMDAyMDIwOCwgMHgwMDAwMDAwOCwgMHgwODAyMDAwOCwgMHgwMDAyMDIwMAorfTsKKworY29uc3QgdWludDMyIFNCNFs2NF0gPQoreworICAgIDB4MDA4MDIwMDEsIDB4MDAwMDIwODEsIDB4MDAwMDIwODEsIDB4MDAwMDAwODAsCisgICAgMHgwMDgwMjA4MCwgMHgwMDgwMDA4MSwgMHgwMDgwMDAwMSwgMHgwMDAwMjAwMSwKKyAgICAweDAwMDAwMDAwLCAweDAwODAyMDAwLCAweDAwODAyMDAwLCAweDAwODAyMDgxLAorICAgIDB4MDAwMDAwODEsIDB4MDAwMDAwMDAsIDB4MDA4MDAwODAsIDB4MDA4MDAwMDEsCisgICAgMHgwMDAwMDAwMSwgMHgwMDAwMjAwMCwgMHgwMDgwMDAwMCwgMHgwMDgwMjAwMSwKKyAgICAweDAwMDAwMDgwLCAweDAwODAwMDAwLCAweDAwMDAyMDAxLCAweDAwMDAyMDgwLAorICAgIDB4MDA4MDAwODEsIDB4MDAwMDAwMDEsIDB4MDAwMDIwODAsIDB4MDA4MDAwODAsCisgICAgMHgwMDAwMjAwMCwgMHgwMDgwMjA4MCwgMHgwMDgwMjA4MSwgMHgwMDAwMDA4MSwKKyAgICAweDAwODAwMDgwLCAweDAwODAwMDAxLCAweDAwODAyMDAwLCAweDAwODAyMDgxLAorICAgIDB4MDAwMDAwODEsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDA4MDIwMDAsCisgICAgMHgwMDAwMjA4MCwgMHgwMDgwMDA4MCwgMHgwMDgwMDA4MSwgMHgwMDAwMDAwMSwKKyAgICAweDAwODAyMDAxLCAweDAwMDAyMDgxLCAweDAwMDAyMDgxLCAweDAwMDAwMDgwLAorICAgIDB4MDA4MDIwODEsIDB4MDAwMDAwODEsIDB4MDAwMDAwMDEsIDB4MDAwMDIwMDAsCisgICAgMHgwMDgwMDAwMSwgMHgwMDAwMjAwMSwgMHgwMDgwMjA4MCwgMHgwMDgwMDA4MSwKKyAgICAweDAwMDAyMDAxLCAweDAwMDAyMDgwLCAweDAwODAwMDAwLCAweDAwODAyMDAxLAorICAgIDB4MDAwMDAwODAsIDB4MDA4MDAwMDAsIDB4MDAwMDIwMDAsIDB4MDA4MDIwODAKK307CisKK2NvbnN0IHVpbnQzMiBTQjVbNjRdID0KK3sKKyAgICAweDAwMDAwMTAwLCAweDAyMDgwMTAwLCAweDAyMDgwMDAwLCAweDQyMDAwMTAwLAorICAgIDB4MDAwODAwMDAsIDB4MDAwMDAxMDAsIDB4NDAwMDAwMDAsIDB4MDIwODAwMDAsCisgICAgMHg0MDA4MDEwMCwgMHgwMDA4MDAwMCwgMHgwMjAwMDEwMCwgMHg0MDA4MDEwMCwKKyAgICAweDQyMDAwMTAwLCAweDQyMDgwMDAwLCAweDAwMDgwMTAwLCAweDQwMDAwMDAwLAorICAgIDB4MDIwMDAwMDAsIDB4NDAwODAwMDAsIDB4NDAwODAwMDAsIDB4MDAwMDAwMDAsCisgICAgMHg0MDAwMDEwMCwgMHg0MjA4MDEwMCwgMHg0MjA4MDEwMCwgMHgwMjAwMDEwMCwKKyAgICAweDQyMDgwMDAwLCAweDQwMDAwMTAwLCAweDAwMDAwMDAwLCAweDQyMDAwMDAwLAorICAgIDB4MDIwODAxMDAsIDB4MDIwMDAwMDAsIDB4NDIwMDAwMDAsIDB4MDAwODAxMDAsCisgICAgMHgwMDA4MDAwMCwgMHg0MjAwMDEwMCwgMHgwMDAwMDEwMCwgMHgwMjAwMDAwMCwKKyAgICAweDQwMDAwMDAwLCAweDAyMDgwMDAwLCAweDQyMDAwMTAwLCAweDQwMDgwMTAwLAorICAgIDB4MDIwMDAxMDAsIDB4NDAwMDAwMDAsIDB4NDIwODAwMDAsIDB4MDIwODAxMDAsCisgICAgMHg0MDA4MDEwMCwgMHgwMDAwMDEwMCwgMHgwMjAwMDAwMCwgMHg0MjA4MDAwMCwKKyAgICAweDQyMDgwMTAwLCAweDAwMDgwMTAwLCAweDQyMDAwMDAwLCAweDQyMDgwMTAwLAorICAgIDB4MDIwODAwMDAsIDB4MDAwMDAwMDAsIDB4NDAwODAwMDAsIDB4NDIwMDAwMDAsCisgICAgMHgwMDA4MDEwMCwgMHgwMjAwMDEwMCwgMHg0MDAwMDEwMCwgMHgwMDA4MDAwMCwKKyAgICAweDAwMDAwMDAwLCAweDQwMDgwMDAwLCAweDAyMDgwMTAwLCAweDQwMDAwMTAwCit9OworCitjb25zdCB1aW50MzIgU0I2WzY0XSA9Cit7CisgICAgMHgyMDAwMDAxMCwgMHgyMDQwMDAwMCwgMHgwMDAwNDAwMCwgMHgyMDQwNDAxMCwKKyAgICAweDIwNDAwMDAwLCAweDAwMDAwMDEwLCAweDIwNDA0MDEwLCAweDAwNDAwMDAwLAorICAgIDB4MjAwMDQwMDAsIDB4MDA0MDQwMTAsIDB4MDA0MDAwMDAsIDB4MjAwMDAwMTAsCisgICAgMHgwMDQwMDAxMCwgMHgyMDAwNDAwMCwgMHgyMDAwMDAwMCwgMHgwMDAwNDAxMCwKKyAgICAweDAwMDAwMDAwLCAweDAwNDAwMDEwLCAweDIwMDA0MDEwLCAweDAwMDA0MDAwLAorICAgIDB4MDA0MDQwMDAsIDB4MjAwMDQwMTAsIDB4MDAwMDAwMTAsIDB4MjA0MDAwMTAsCisgICAgMHgyMDQwMDAxMCwgMHgwMDAwMDAwMCwgMHgwMDQwNDAxMCwgMHgyMDQwNDAwMCwKKyAgICAweDAwMDA0MDEwLCAweDAwNDA0MDAwLCAweDIwNDA0MDAwLCAweDIwMDAwMDAwLAorICAgIDB4MjAwMDQwMDAsIDB4MDAwMDAwMTAsIDB4MjA0MDAwMTAsIDB4MDA0MDQwMDAsCisgICAgMHgyMDQwNDAxMCwgMHgwMDQwMDAwMCwgMHgwMDAwNDAxMCwgMHgyMDAwMDAxMCwKKyAgICAweDAwNDAwMDAwLCAweDIwMDA0MDAwLCAweDIwMDAwMDAwLCAweDAwMDA0MDEwLAorICAgIDB4MjAwMDAwMTAsIDB4MjA0MDQwMTAsIDB4MDA0MDQwMDAsIDB4MjA0MDAwMDAsCisgICAgMHgwMDQwNDAxMCwgMHgyMDQwNDAwMCwgMHgwMDAwMDAwMCwgMHgyMDQwMDAxMCwKKyAgICAweDAwMDAwMDEwLCAweDAwMDA0MDAwLCAweDIwNDAwMDAwLCAweDAwNDA0MDEwLAorICAgIDB4MDAwMDQwMDAsIDB4MDA0MDAwMTAsIDB4MjAwMDQwMTAsIDB4MDAwMDAwMDAsCisgICAgMHgyMDQwNDAwMCwgMHgyMDAwMDAwMCwgMHgwMDQwMDAxMCwgMHgyMDAwNDAxMAorfTsKKworY29uc3QgdWludDMyIFNCN1s2NF0gPQoreworICAgIDB4MDAyMDAwMDAsIDB4MDQyMDAwMDIsIDB4MDQwMDA4MDIsIDB4MDAwMDAwMDAsCisgICAgMHgwMDAwMDgwMCwgMHgwNDAwMDgwMiwgMHgwMDIwMDgwMiwgMHgwNDIwMDgwMCwKKyAgICAweDA0MjAwODAyLCAweDAwMjAwMDAwLCAweDAwMDAwMDAwLCAweDA0MDAwMDAyLAorICAgIDB4MDAwMDAwMDIsIDB4MDQwMDAwMDAsIDB4MDQyMDAwMDIsIDB4MDAwMDA4MDIsCisgICAgMHgwNDAwMDgwMCwgMHgwMDIwMDgwMiwgMHgwMDIwMDAwMiwgMHgwNDAwMDgwMCwKKyAgICAweDA0MDAwMDAyLCAweDA0MjAwMDAwLCAweDA0MjAwODAwLCAweDAwMjAwMDAyLAorICAgIDB4MDQyMDAwMDAsIDB4MDAwMDA4MDAsIDB4MDAwMDA4MDIsIDB4MDQyMDA4MDIsCisgICAgMHgwMDIwMDgwMCwgMHgwMDAwMDAwMiwgMHgwNDAwMDAwMCwgMHgwMDIwMDgwMCwKKyAgICAweDA0MDAwMDAwLCAweDAwMjAwODAwLCAweDAwMjAwMDAwLCAweDA0MDAwODAyLAorICAgIDB4MDQwMDA4MDIsIDB4MDQyMDAwMDIsIDB4MDQyMDAwMDIsIDB4MDAwMDAwMDIsCisgICAgMHgwMDIwMDAwMiwgMHgwNDAwMDAwMCwgMHgwNDAwMDgwMCwgMHgwMDIwMDAwMCwKKyAgICAweDA0MjAwODAwLCAweDAwMDAwODAyLCAweDAwMjAwODAyLCAweDA0MjAwODAwLAorICAgIDB4MDAwMDA4MDIsIDB4MDQwMDAwMDIsIDB4MDQyMDA4MDIsIDB4MDQyMDAwMDAsCisgICAgMHgwMDIwMDgwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMiwgMHgwNDIwMDgwMiwKKyAgICAweDAwMDAwMDAwLCAweDAwMjAwODAyLCAweDA0MjAwMDAwLCAweDAwMDAwODAwLAorICAgIDB4MDQwMDAwMDIsIDB4MDQwMDA4MDAsIDB4MDAwMDA4MDAsIDB4MDAyMDAwMDIKK307CisKK2NvbnN0IHVpbnQzMiBTQjhbNjRdID0KK3sKKyAgICAweDEwMDAxMDQwLCAweDAwMDAxMDAwLCAweDAwMDQwMDAwLCAweDEwMDQxMDQwLAorICAgIDB4MTAwMDAwMDAsIDB4MTAwMDEwNDAsIDB4MDAwMDAwNDAsIDB4MTAwMDAwMDAsCisgICAgMHgwMDA0MDA0MCwgMHgxMDA0MDAwMCwgMHgxMDA0MTA0MCwgMHgwMDA0MTAwMCwKKyAgICAweDEwMDQxMDAwLCAweDAwMDQxMDQwLCAweDAwMDAxMDAwLCAweDAwMDAwMDQwLAorICAgIDB4MTAwNDAwMDAsIDB4MTAwMDAwNDAsIDB4MTAwMDEwMDAsIDB4MDAwMDEwNDAsCisgICAgMHgwMDA0MTAwMCwgMHgwMDA0MDA0MCwgMHgxMDA0MDA0MCwgMHgxMDA0MTAwMCwKKyAgICAweDAwMDAxMDQwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDEwMDQwMDQwLAorICAgIDB4MTAwMDAwNDAsIDB4MTAwMDEwMDAsIDB4MDAwNDEwNDAsIDB4MDAwNDAwMDAsCisgICAgMHgwMDA0MTA0MCwgMHgwMDA0MDAwMCwgMHgxMDA0MTAwMCwgMHgwMDAwMTAwMCwKKyAgICAweDAwMDAwMDQwLCAweDEwMDQwMDQwLCAweDAwMDAxMDAwLCAweDAwMDQxMDQwLAorICAgIDB4MTAwMDEwMDAsIDB4MDAwMDAwNDAsIDB4MTAwMDAwNDAsIDB4MTAwNDAwMDAsCisgICAgMHgxMDA0MDA0MCwgMHgxMDAwMDAwMCwgMHgwMDA0MDAwMCwgMHgxMDAwMTA0MCwKKyAgICAweDAwMDAwMDAwLCAweDEwMDQxMDQwLCAweDAwMDQwMDQwLCAweDEwMDAwMDQwLAorICAgIDB4MTAwNDAwMDAsIDB4MTAwMDEwMDAsIDB4MTAwMDEwNDAsIDB4MDAwMDAwMDAsCisgICAgMHgxMDA0MTA0MCwgMHgwMDA0MTAwMCwgMHgwMDA0MTAwMCwgMHgwMDAwMTA0MCwKKyAgICAweDAwMDAxMDQwLCAweDAwMDQwMDQwLCAweDEwMDAwMDAwLCAweDEwMDQxMDAwCit9OworCisvKiBQQzE6IGxlZnQgYW5kIHJpZ2h0IGhhbHZlcyBiaXQtc3dhcCAqLworCitjb25zdCB1aW50MzIgTEhzWzE2XSA9Cit7CisgICAgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMSwgMHgwMDAwMDEwMCwgMHgwMDAwMDEwMSwKKyAgICAweDAwMDEwMDAwLCAweDAwMDEwMDAxLCAweDAwMDEwMTAwLCAweDAwMDEwMTAxLAorICAgIDB4MDEwMDAwMDAsIDB4MDEwMDAwMDEsIDB4MDEwMDAxMDAsIDB4MDEwMDAxMDEsCisgICAgMHgwMTAxMDAwMCwgMHgwMTAxMDAwMSwgMHgwMTAxMDEwMCwgMHgwMTAxMDEwMQorfTsKKworY29uc3QgdWludDMyIFJIc1sxNl0gPQoreworICAgIDB4MDAwMDAwMDAsIDB4MDEwMDAwMDAsIDB4MDAwMTAwMDAsIDB4MDEwMTAwMDAsCisgICAgMHgwMDAwMDEwMCwgMHgwMTAwMDEwMCwgMHgwMDAxMDEwMCwgMHgwMTAxMDEwMCwKKyAgICAweDAwMDAwMDAxLCAweDAxMDAwMDAxLCAweDAwMDEwMDAxLCAweDAxMDEwMDAxLAorICAgIDB4MDAwMDAxMDEsIDB4MDEwMDAxMDEsIDB4MDAwMTAxMDEsIDB4MDEwMTAxMDEsCit9OworCisvKiBwbGF0Zm9ybS1pbmRlcGVuZGFudCAzMi1iaXQgaW50ZWdlciBtYW5pcHVsYXRpb24gbWFjcm9zICovCisKKyNkZWZpbmUgR0VUX1VJTlQzMihuLGIsaSkgICAgICAgICAgICAgICAgICAgICAgIFwKK3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAobikgPSAoICh1aW50MzIpIChiKVsoaSkgICAgXSA8PCAyNCApICAgICAgIFwKKyAgICAgICAgfCAoICh1aW50MzIpIChiKVsoaSkgKyAxXSA8PCAxNiApICAgICAgIFwKKyAgICAgICAgfCAoICh1aW50MzIpIChiKVsoaSkgKyAyXSA8PCAgOCApICAgICAgIFwKKyAgICAgICAgfCAoICh1aW50MzIpIChiKVsoaSkgKyAzXSAgICAgICApOyAgICAgIFwKK30KKworI2RlZmluZSBQVVRfVUlOVDMyKG4sYixpKSAgICAgICAgICAgICAgICAgICAgICAgXAoreyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIChiKVsoaSkgICAgXSA9ICh1aW50OCkgKCAobikgPj4gMjQgKTsgICAgICAgXAorICAgIChiKVsoaSkgKyAxXSA9ICh1aW50OCkgKCAobikgPj4gMTYgKTsgICAgICAgXAorICAgIChiKVsoaSkgKyAyXSA9ICh1aW50OCkgKCAobikgPj4gIDggKTsgICAgICAgXAorICAgIChiKVsoaSkgKyAzXSA9ICh1aW50OCkgKCAobikgICAgICAgKTsgICAgICAgXAorfQorCisvKiBJbml0aWFsIFBlcm11dGF0aW9uIG1hY3JvICovCisKKyNkZWZpbmUgREVTX0lQKFgsWSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCit7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFQgPSAoKFggPj4gIDQpIF4gWSkgJiAweDBGMEYwRjBGOyBZIF49IFQ7IFggXj0gKFQgPDwgIDQpOyAgIFwKKyAgICBUID0gKChYID4+IDE2KSBeIFkpICYgMHgwMDAwRkZGRjsgWSBePSBUOyBYIF49IChUIDw8IDE2KTsgICBcCisgICAgVCA9ICgoWSA+PiAgMikgXiBYKSAmIDB4MzMzMzMzMzM7IFggXj0gVDsgWSBePSAoVCA8PCAgMik7ICAgXAorICAgIFQgPSAoKFkgPj4gIDgpIF4gWCkgJiAweDAwRkYwMEZGOyBYIF49IFQ7IFkgXj0gKFQgPDwgIDgpOyAgIFwKKyAgICBZID0gKChZIDw8IDEpIHwgKFkgPj4gMzEpKSAmIDB4RkZGRkZGRkY7ICAgICAgICAgICAgICAgICAgICBcCisgICAgVCA9IChYIF4gWSkgJiAweEFBQUFBQUFBOyBZIF49IFQ7IFggXj0gVDsgICAgICAgICAgICAgICAgICAgXAorICAgIFggPSAoKFggPDwgMSkgfCAoWCA+PiAzMSkpICYgMHhGRkZGRkZGRjsgICAgICAgICAgICAgICAgICAgIFwKK30KKworLyogRmluYWwgUGVybXV0YXRpb24gbWFjcm8gKi8KKworI2RlZmluZSBERVNfRlAoWCxZKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgWCA9ICgoWCA8PCAzMSkgfCAoWCA+PiAxKSkgJiAweEZGRkZGRkZGOyAgICAgICAgICAgICAgICAgICAgXAorICAgIFQgPSAoWCBeIFkpICYgMHhBQUFBQUFBQTsgWCBePSBUOyBZIF49IFQ7ICAgICAgICAgICAgICAgICAgIFwKKyAgICBZID0gKChZIDw8IDMxKSB8IChZID4+IDEpKSAmIDB4RkZGRkZGRkY7ICAgICAgICAgICAgICAgICAgICBcCisgICAgVCA9ICgoWSA+PiAgOCkgXiBYKSAmIDB4MDBGRjAwRkY7IFggXj0gVDsgWSBePSAoVCA8PCAgOCk7ICAgXAorICAgIFQgPSAoKFkgPj4gIDIpIF4gWCkgJiAweDMzMzMzMzMzOyBYIF49IFQ7IFkgXj0gKFQgPDwgIDIpOyAgIFwKKyAgICBUID0gKChYID4+IDE2KSBeIFkpICYgMHgwMDAwRkZGRjsgWSBePSBUOyBYIF49IChUIDw8IDE2KTsgICBcCisgICAgVCA9ICgoWCA+PiAgNCkgXiBZKSAmIDB4MEYwRjBGMEY7IFkgXj0gVDsgWCBePSAoVCA8PCAgNCk7ICAgXAorfQorCisvKiBERVMgcm91bmQgbWFjcm8gKi8KKworI2RlZmluZSBERVNfUk9VTkQoWCxZKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAoreyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFQgPSAqU0srKyBeIFg7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFkgXj0gU0I4WyAoVCAgICAgICkgJiAweDNGIF0gXiAgICAgICAgICAgICAgXAorICAgICAgICAgU0I2WyAoVCA+PiAgOCkgJiAweDNGIF0gXiAgICAgICAgICAgICAgXAorICAgICAgICAgU0I0WyAoVCA+PiAxNikgJiAweDNGIF0gXiAgICAgICAgICAgICAgXAorICAgICAgICAgU0IyWyAoVCA+PiAyNCkgJiAweDNGIF07ICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFQgPSAqU0srKyBeICgoWCA8PCAyOCkgfCAoWCA+PiA0KSk7ICAgICAgICAgXAorICAgIFkgXj0gU0I3WyAoVCAgICAgICkgJiAweDNGIF0gXiAgICAgICAgICAgICAgXAorICAgICAgICAgU0I1WyAoVCA+PiAgOCkgJiAweDNGIF0gXiAgICAgICAgICAgICAgXAorICAgICAgICAgU0IzWyAoVCA+PiAxNikgJiAweDNGIF0gXiAgICAgICAgICAgICAgXAorICAgICAgICAgU0IxWyAoVCA+PiAyNCkgJiAweDNGIF07ICAgICAgICAgICAgICAgXAorfQorCisvKiBERVMga2V5IHNjaGVkdWxlICovCisKK2ludCBkZXNfbWFpbl9rcyggdWludDMyIFNLWzMyXSwgdWludDgga2V5WzhdICkKK3sKKyAgICBpbnQgaTsKKyAgICB1aW50MzIgWCwgWSwgVDsKKworICAgIEdFVF9VSU5UMzIoIFgsIGtleSwgMCApOworICAgIEdFVF9VSU5UMzIoIFksIGtleSwgNCApOworCisgICAgLyogUGVybXV0ZWQgQ2hvaWNlIDEgKi8KKworICAgIFQgPSAgKChZID4+ICA0KSBeIFgpICYgMHgwRjBGMEYwRjsgIFggXj0gVDsgWSBePSAoVCA8PCAgNCk7CisgICAgVCA9ICAoKFkgICAgICApIF4gWCkgJiAweDEwMTAxMDEwOyAgWCBePSBUOyBZIF49IChUICAgICAgKTsKKworICAgIFggPSAgIChMSHNbIChYICAgICAgKSAmIDB4Rl0gPDwgMykgfCAoTEhzWyAoWCA+PiAgOCkgJiAweEYgXSA8PCAyKQorICAgICAgICB8IChMSHNbIChYID4+IDE2KSAmIDB4Rl0gPDwgMSkgfCAoTEhzWyAoWCA+PiAyNCkgJiAweEYgXSAgICAgKQorICAgICAgICB8IChMSHNbIChYID4+ICA1KSAmIDB4Rl0gPDwgNykgfCAoTEhzWyAoWCA+PiAxMykgJiAweEYgXSA8PCA2KQorICAgICAgICB8IChMSHNbIChYID4+IDIxKSAmIDB4Rl0gPDwgNSkgfCAoTEhzWyAoWCA+PiAyOSkgJiAweEYgXSA8PCA0KTsKKworICAgIFkgPSAgIChSSHNbIChZID4+ICAxKSAmIDB4Rl0gPDwgMykgfCAoUkhzWyAoWSA+PiAgOSkgJiAweEYgXSA8PCAyKQorICAgICAgICB8IChSSHNbIChZID4+IDE3KSAmIDB4Rl0gPDwgMSkgfCAoUkhzWyAoWSA+PiAyNSkgJiAweEYgXSAgICAgKQorICAgICAgICB8IChSSHNbIChZID4+ICA0KSAmIDB4Rl0gPDwgNykgfCAoUkhzWyAoWSA+PiAxMikgJiAweEYgXSA8PCA2KQorICAgICAgICB8IChSSHNbIChZID4+IDIwKSAmIDB4Rl0gPDwgNSkgfCAoUkhzWyAoWSA+PiAyOCkgJiAweEYgXSA8PCA0KTsKKworICAgIFggJj0gMHgwRkZGRkZGRjsKKyAgICBZICY9IDB4MEZGRkZGRkY7CisKKyAgICAvKiBjYWxjdWxhdGUgc3Via2V5cyAqLworCisgICAgZm9yKCBpID0gMDsgaSA8IDE2OyBpKysgKQorICAgIHsKKyAgICAgICAgaWYoIGkgPCAyIHx8IGkgPT0gOCB8fCBpID09IDE1ICkKKyAgICAgICAgeworICAgICAgICAgICAgWCA9ICgoWCA8PCAgMSkgfCAoWCA+PiAyNykpICYgMHgwRkZGRkZGRjsKKyAgICAgICAgICAgIFkgPSAoKFkgPDwgIDEpIHwgKFkgPj4gMjcpKSAmIDB4MEZGRkZGRkY7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBYID0gKChYIDw8ICAyKSB8IChYID4+IDI2KSkgJiAweDBGRkZGRkZGOworICAgICAgICAgICAgWSA9ICgoWSA8PCAgMikgfCAoWSA+PiAyNikpICYgMHgwRkZGRkZGRjsKKyAgICAgICAgfQorCisgICAgICAgICpTSysrID0gICAoKFggPDwgIDQpICYgMHgyNDAwMDAwMCkgfCAoKFggPDwgMjgpICYgMHgxMDAwMDAwMCkKKyAgICAgICAgICAgICAgICB8ICgoWCA8PCAxNCkgJiAweDA4MDAwMDAwKSB8ICgoWCA8PCAxOCkgJiAweDAyMDgwMDAwKQorICAgICAgICAgICAgICAgIHwgKChYIDw8ICA2KSAmIDB4MDEwMDAwMDApIHwgKChYIDw8ICA5KSAmIDB4MDAyMDAwMDApCisgICAgICAgICAgICAgICAgfCAoKFggPj4gIDEpICYgMHgwMDEwMDAwMCkgfCAoKFggPDwgMTApICYgMHgwMDA0MDAwMCkKKyAgICAgICAgICAgICAgICB8ICgoWCA8PCAgMikgJiAweDAwMDIwMDAwKSB8ICgoWCA+PiAxMCkgJiAweDAwMDEwMDAwKQorICAgICAgICAgICAgICAgIHwgKChZID4+IDEzKSAmIDB4MDAwMDIwMDApIHwgKChZID4+ICA0KSAmIDB4MDAwMDEwMDApCisgICAgICAgICAgICAgICAgfCAoKFkgPDwgIDYpICYgMHgwMDAwMDgwMCkgfCAoKFkgPj4gIDEpICYgMHgwMDAwMDQwMCkKKyAgICAgICAgICAgICAgICB8ICgoWSA+PiAxNCkgJiAweDAwMDAwMjAwKSB8ICgoWSAgICAgICkgJiAweDAwMDAwMTAwKQorICAgICAgICAgICAgICAgIHwgKChZID4+ICA1KSAmIDB4MDAwMDAwMjApIHwgKChZID4+IDEwKSAmIDB4MDAwMDAwMTApCisgICAgICAgICAgICAgICAgfCAoKFkgPj4gIDMpICYgMHgwMDAwMDAwOCkgfCAoKFkgPj4gMTgpICYgMHgwMDAwMDAwNCkKKyAgICAgICAgICAgICAgICB8ICgoWSA+PiAyNikgJiAweDAwMDAwMDAyKSB8ICgoWSA+PiAyNCkgJiAweDAwMDAwMDAxKTsKKworICAgICAgICAqU0srKyA9ICAgKChYIDw8IDE1KSAmIDB4MjAwMDAwMDApIHwgKChYIDw8IDE3KSAmIDB4MTAwMDAwMDApCisgICAgICAgICAgICAgICAgfCAoKFggPDwgMTApICYgMHgwODAwMDAwMCkgfCAoKFggPDwgMjIpICYgMHgwNDAwMDAwMCkKKyAgICAgICAgICAgICAgICB8ICgoWCA+PiAgMikgJiAweDAyMDAwMDAwKSB8ICgoWCA8PCAgMSkgJiAweDAxMDAwMDAwKQorICAgICAgICAgICAgICAgIHwgKChYIDw8IDE2KSAmIDB4MDAyMDAwMDApIHwgKChYIDw8IDExKSAmIDB4MDAxMDAwMDApCisgICAgICAgICAgICAgICAgfCAoKFggPDwgIDMpICYgMHgwMDA4MDAwMCkgfCAoKFggPj4gIDYpICYgMHgwMDA0MDAwMCkKKyAgICAgICAgICAgICAgICB8ICgoWCA8PCAxNSkgJiAweDAwMDIwMDAwKSB8ICgoWCA+PiAgNCkgJiAweDAwMDEwMDAwKQorICAgICAgICAgICAgICAgIHwgKChZID4+ICAyKSAmIDB4MDAwMDIwMDApIHwgKChZIDw8ICA4KSAmIDB4MDAwMDEwMDApCisgICAgICAgICAgICAgICAgfCAoKFkgPj4gMTQpICYgMHgwMDAwMDgwOCkgfCAoKFkgPj4gIDkpICYgMHgwMDAwMDQwMCkKKyAgICAgICAgICAgICAgICB8ICgoWSAgICAgICkgJiAweDAwMDAwMjAwKSB8ICgoWSA8PCAgNykgJiAweDAwMDAwMTAwKQorICAgICAgICAgICAgICAgIHwgKChZID4+ICA3KSAmIDB4MDAwMDAwMjApIHwgKChZID4+ICAzKSAmIDB4MDAwMDAwMTEpCisgICAgICAgICAgICAgICAgfCAoKFkgPDwgIDIpICYgMHgwMDAwMDAwNCkgfCAoKFkgPj4gMjEpICYgMHgwMDAwMDAwMik7CisgICAgfQorCisgICAgcmV0dXJuKCAwICk7Cit9CisKK2ludCBkZXNfc2V0X2tleSggZGVzX2NvbnRleHQgKmN0eCwgdWludDgga2V5WzhdICkKK3sKKyAgICBpbnQgaTsKKworICAgIC8qIHNldHVwIGVuY3J5cHRpb24gc3Via2V5cyAqLworCisgICAgZGVzX21haW5fa3MoIGN0eC0+ZXNrLCBrZXkgKTsKKworICAgIC8qIHNldHVwIGRlY3J5cHRpb24gc3Via2V5cyAqLworCisgICAgZm9yKCBpID0gMDsgaSA8IDMyOyBpICs9IDIgKQorICAgIHsKKyAgICAgICAgY3R4LT5kc2tbaSAgICBdID0gY3R4LT5lc2tbMzAgLSBpXTsKKyAgICAgICAgY3R4LT5kc2tbaSArIDFdID0gY3R4LT5lc2tbMzEgLSBpXTsKKyAgICB9CisKKyAgICByZXR1cm4oIDAgKTsKK30KKworLyogREVTIDY0LWJpdCBibG9jayBlbmNyeXB0aW9uL2RlY3J5cHRpb24gKi8KKwordm9pZCBkZXNfY3J5cHQoIHVpbnQzMiBTS1szMl0sIHVpbnQ4IGlucHV0WzhdLCB1aW50OCBvdXRwdXRbOF0gKQoreworICAgIHVpbnQzMiBYLCBZLCBUOworCisgICAgR0VUX1VJTlQzMiggWCwgaW5wdXQsIDAgKTsKKyAgICBHRVRfVUlOVDMyKCBZLCBpbnB1dCwgNCApOworCisgICAgREVTX0lQKCBYLCBZICk7CisKKyAgICBERVNfUk9VTkQoIFksIFggKTsgIERFU19ST1VORCggWCwgWSApOworICAgIERFU19ST1VORCggWSwgWCApOyAgREVTX1JPVU5EKCBYLCBZICk7CisgICAgREVTX1JPVU5EKCBZLCBYICk7ICBERVNfUk9VTkQoIFgsIFkgKTsKKyAgICBERVNfUk9VTkQoIFksIFggKTsgIERFU19ST1VORCggWCwgWSApOworICAgIERFU19ST1VORCggWSwgWCApOyAgREVTX1JPVU5EKCBYLCBZICk7CisgICAgREVTX1JPVU5EKCBZLCBYICk7ICBERVNfUk9VTkQoIFgsIFkgKTsKKyAgICBERVNfUk9VTkQoIFksIFggKTsgIERFU19ST1VORCggWCwgWSApOworICAgIERFU19ST1VORCggWSwgWCApOyAgREVTX1JPVU5EKCBYLCBZICk7CisKKyAgICBERVNfRlAoIFksIFggKTsKKworICAgIFBVVF9VSU5UMzIoIFksIG91dHB1dCwgMCApOworICAgIFBVVF9VSU5UMzIoIFgsIG91dHB1dCwgNCApOworfQorCit2b2lkIGRlc19lbmNyeXB0KCBkZXNfY29udGV4dCAqY3R4LCB1aW50OCBpbnB1dFs4XSwgdWludDggb3V0cHV0WzhdICkKK3sKKyAgICBkZXNfY3J5cHQoIGN0eC0+ZXNrLCBpbnB1dCwgb3V0cHV0ICk7Cit9CisKK3ZvaWQgZGVzX2RlY3J5cHQoIGRlc19jb250ZXh0ICpjdHgsIHVpbnQ4IGlucHV0WzhdLCB1aW50OCBvdXRwdXRbOF0gKQoreworICAgIGRlc19jcnlwdCggY3R4LT5kc2ssIGlucHV0LCBvdXRwdXQgKTsKK30KKworLyogVHJpcGxlLURFUyBrZXkgc2NoZWR1bGUgKi8KKworaW50IGRlczNfc2V0XzJrZXlzKCBkZXMzX2NvbnRleHQgKmN0eCwgdWludDgga2V5MVs4XSwgdWludDgga2V5Mls4XSApCit7CisgICAgaW50IGk7CisKKyAgICBkZXNfbWFpbl9rcyggY3R4LT5lc2sgICAgICwga2V5MSApOworICAgIGRlc19tYWluX2tzKCBjdHgtPmRzayArIDMyLCBrZXkyICk7CisKKyAgICBmb3IoIGkgPSAwOyBpIDwgMzI7IGkgKz0gMiApCisgICAgeworICAgICAgICBjdHgtPmRza1tpICAgICBdID0gY3R4LT5lc2tbMzAgLSBpXTsKKyAgICAgICAgY3R4LT5kc2tbaSArICAxXSA9IGN0eC0+ZXNrWzMxIC0gaV07CisKKyAgICAgICAgY3R4LT5lc2tbaSArIDMyXSA9IGN0eC0+ZHNrWzYyIC0gaV07CisgICAgICAgIGN0eC0+ZXNrW2kgKyAzM10gPSBjdHgtPmRza1s2MyAtIGldOworCisgICAgICAgIGN0eC0+ZXNrW2kgKyA2NF0gPSBjdHgtPmVza1sgICAgIGldOworICAgICAgICBjdHgtPmVza1tpICsgNjVdID0gY3R4LT5lc2tbIDEgKyBpXTsKKworICAgICAgICBjdHgtPmRza1tpICsgNjRdID0gY3R4LT5kc2tbICAgICBpXTsKKyAgICAgICAgY3R4LT5kc2tbaSArIDY1XSA9IGN0eC0+ZHNrWyAxICsgaV07CisgICAgfQorCisgICAgcmV0dXJuKCAwICk7Cit9CisKK2ludCBkZXMzX3NldF8za2V5cyggZGVzM19jb250ZXh0ICpjdHgsIHVpbnQ4IGtleTFbOF0sIHVpbnQ4IGtleTJbOF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OCBrZXkzWzhdICkKK3sKKyAgICBpbnQgaTsKKworICAgIGRlc19tYWluX2tzKCBjdHgtPmVzayAgICAgLCBrZXkxICk7CisgICAgZGVzX21haW5fa3MoIGN0eC0+ZHNrICsgMzIsIGtleTIgKTsKKyAgICBkZXNfbWFpbl9rcyggY3R4LT5lc2sgKyA2NCwga2V5MyApOworCisgICAgZm9yKCBpID0gMDsgaSA8IDMyOyBpICs9IDIgKQorICAgIHsKKyAgICAgICAgY3R4LT5kc2tbaSAgICAgXSA9IGN0eC0+ZXNrWzk0IC0gaV07CisgICAgICAgIGN0eC0+ZHNrW2kgKyAgMV0gPSBjdHgtPmVza1s5NSAtIGldOworCisgICAgICAgIGN0eC0+ZXNrW2kgKyAzMl0gPSBjdHgtPmRza1s2MiAtIGldOworICAgICAgICBjdHgtPmVza1tpICsgMzNdID0gY3R4LT5kc2tbNjMgLSBpXTsKKworICAgICAgICBjdHgtPmRza1tpICsgNjRdID0gY3R4LT5lc2tbMzAgLSBpXTsKKyAgICAgICAgY3R4LT5kc2tbaSArIDY1XSA9IGN0eC0+ZXNrWzMxIC0gaV07CisgICAgfQorCisgICAgcmV0dXJuKCAwICk7Cit9CisKKy8qIFRyaXBsZS1ERVMgNjQtYml0IGJsb2NrIGVuY3J5cHRpb24vZGVjcnlwdGlvbiAqLworCit2b2lkIGRlczNfY3J5cHQoIHVpbnQzMiBTS1s5Nl0sIHVpbnQ4IGlucHV0WzhdLCB1aW50OCBvdXRwdXRbOF0gKQoreworICAgIHVpbnQzMiBYLCBZLCBUOworCisgICAgR0VUX1VJTlQzMiggWCwgaW5wdXQsIDAgKTsKKyAgICBHRVRfVUlOVDMyKCBZLCBpbnB1dCwgNCApOworCisgICAgREVTX0lQKCBYLCBZICk7CisKKyAgICBERVNfUk9VTkQoIFksIFggKTsgIERFU19ST1VORCggWCwgWSApOworICAgIERFU19ST1VORCggWSwgWCApOyAgREVTX1JPVU5EKCBYLCBZICk7CisgICAgREVTX1JPVU5EKCBZLCBYICk7ICBERVNfUk9VTkQoIFgsIFkgKTsKKyAgICBERVNfUk9VTkQoIFksIFggKTsgIERFU19ST1VORCggWCwgWSApOworICAgIERFU19ST1VORCggWSwgWCApOyAgREVTX1JPVU5EKCBYLCBZICk7CisgICAgREVTX1JPVU5EKCBZLCBYICk7ICBERVNfUk9VTkQoIFgsIFkgKTsKKyAgICBERVNfUk9VTkQoIFksIFggKTsgIERFU19ST1VORCggWCwgWSApOworICAgIERFU19ST1VORCggWSwgWCApOyAgREVTX1JPVU5EKCBYLCBZICk7CisKKyAgICBERVNfUk9VTkQoIFgsIFkgKTsgIERFU19ST1VORCggWSwgWCApOworICAgIERFU19ST1VORCggWCwgWSApOyAgREVTX1JPVU5EKCBZLCBYICk7CisgICAgREVTX1JPVU5EKCBYLCBZICk7ICBERVNfUk9VTkQoIFksIFggKTsKKyAgICBERVNfUk9VTkQoIFgsIFkgKTsgIERFU19ST1VORCggWSwgWCApOworICAgIERFU19ST1VORCggWCwgWSApOyAgREVTX1JPVU5EKCBZLCBYICk7CisgICAgREVTX1JPVU5EKCBYLCBZICk7ICBERVNfUk9VTkQoIFksIFggKTsKKyAgICBERVNfUk9VTkQoIFgsIFkgKTsgIERFU19ST1VORCggWSwgWCApOworICAgIERFU19ST1VORCggWCwgWSApOyAgREVTX1JPVU5EKCBZLCBYICk7CisKKyAgICBERVNfUk9VTkQoIFksIFggKTsgIERFU19ST1VORCggWCwgWSApOworICAgIERFU19ST1VORCggWSwgWCApOyAgREVTX1JPVU5EKCBYLCBZICk7CisgICAgREVTX1JPVU5EKCBZLCBYICk7ICBERVNfUk9VTkQoIFgsIFkgKTsKKyAgICBERVNfUk9VTkQoIFksIFggKTsgIERFU19ST1VORCggWCwgWSApOworICAgIERFU19ST1VORCggWSwgWCApOyAgREVTX1JPVU5EKCBYLCBZICk7CisgICAgREVTX1JPVU5EKCBZLCBYICk7ICBERVNfUk9VTkQoIFgsIFkgKTsKKyAgICBERVNfUk9VTkQoIFksIFggKTsgIERFU19ST1VORCggWCwgWSApOworICAgIERFU19ST1VORCggWSwgWCApOyAgREVTX1JPVU5EKCBYLCBZICk7CisKKyAgICBERVNfRlAoIFksIFggKTsKKworICAgIFBVVF9VSU5UMzIoIFksIG91dHB1dCwgMCApOworICAgIFBVVF9VSU5UMzIoIFgsIG91dHB1dCwgNCApOworfQorCit2b2lkIGRlczNfZW5jcnlwdCggZGVzM19jb250ZXh0ICpjdHgsIHVpbnQ4IGlucHV0WzhdLCB1aW50OCBvdXRwdXRbOF0gKQoreworICAgIGRlczNfY3J5cHQoIGN0eC0+ZXNrLCBpbnB1dCwgb3V0cHV0ICk7Cit9CisKK3ZvaWQgZGVzM19kZWNyeXB0KCBkZXMzX2NvbnRleHQgKmN0eCwgdWludDggaW5wdXRbOF0sIHVpbnQ4IG91dHB1dFs4XSApCit7CisgICAgZGVzM19jcnlwdCggY3R4LT5kc2ssIGlucHV0LCBvdXRwdXQgKTsKK30KZGlmZiAtLWdpdCBhL2ljY19hcGR1X2xpYi9kZXMuaCBiL2ljY19hcGR1X2xpYi9kZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZjU3NjVlCi0tLSAvZGV2L251bGwKKysrIGIvaWNjX2FwZHVfbGliL2Rlcy5oCkBAIC0wLDAgKzEsMzcgQEAKKyNpZm5kZWYgX0RFU19ICisjZGVmaW5lIF9ERVNfSAorCisjaWZuZGVmIHVpbnQ4CisjZGVmaW5lIHVpbnQ4ICB1bnNpZ25lZCBjaGFyCisjZW5kaWYKKworI2lmbmRlZiB1aW50MzIKKyNkZWZpbmUgdWludDMyIHVuc2lnbmVkIGxvbmcKKyNlbmRpZgorCit0eXBlZGVmIHN0cnVjdAoreworICAgIHVpbnQzMiBlc2tbMzJdOyAgICAgLyogREVTIGVuY3J5cHRpb24gc3Via2V5cyAqLworICAgIHVpbnQzMiBkc2tbMzJdOyAgICAgLyogREVTIGRlY3J5cHRpb24gc3Via2V5cyAqLworfQorZGVzX2NvbnRleHQ7CisKK3R5cGVkZWYgc3RydWN0Cit7CisgICAgdWludDMyIGVza1s5Nl07ICAgICAvKiBUcmlwbGUtREVTIGVuY3J5cHRpb24gc3Via2V5cyAqLworICAgIHVpbnQzMiBkc2tbOTZdOyAgICAgLyogVHJpcGxlLURFUyBkZWNyeXB0aW9uIHN1YmtleXMgKi8KK30KK2RlczNfY29udGV4dDsKKworaW50ICBkZXNfc2V0X2tleSggZGVzX2NvbnRleHQgKmN0eCwgdWludDgga2V5WzhdICk7Cit2b2lkIGRlc19lbmNyeXB0KCBkZXNfY29udGV4dCAqY3R4LCB1aW50OCBpbnB1dFs4XSwgdWludDggb3V0cHV0WzhdICk7Cit2b2lkIGRlc19kZWNyeXB0KCBkZXNfY29udGV4dCAqY3R4LCB1aW50OCBpbnB1dFs4XSwgdWludDggb3V0cHV0WzhdICk7CisKK2ludCAgZGVzM19zZXRfMmtleXMoIGRlczNfY29udGV4dCAqY3R4LCB1aW50OCBrZXkxWzhdLCB1aW50OCBrZXkyWzhdICk7CitpbnQgIGRlczNfc2V0XzNrZXlzKCBkZXMzX2NvbnRleHQgKmN0eCwgdWludDgga2V5MVs4XSwgdWludDgga2V5Mls4XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OCBrZXkzWzhdICk7CisKK3ZvaWQgZGVzM19lbmNyeXB0KCBkZXMzX2NvbnRleHQgKmN0eCwgdWludDggaW5wdXRbOF0sIHVpbnQ4IG91dHB1dFs4XSApOwordm9pZCBkZXMzX2RlY3J5cHQoIGRlczNfY29udGV4dCAqY3R4LCB1aW50OCBpbnB1dFs4XSwgdWludDggb3V0cHV0WzhdICk7CisKKyNlbmRpZiAvKiBkZXMuaCAqLwpkaWZmIC0tZ2l0IGEvaWNjX2FwZHVfbGliL2VyYXNlX21mLmMgYi9pY2NfYXBkdV9saWIvZXJhc2VfbWYuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YjYxZTVhCi0tLSAvZGV2L251bGwKKysrIGIvaWNjX2FwZHVfbGliL2VyYXNlX21mLmMKQEAgLTAsMCArMSwxMzggQEAKKyNpbmNsdWRlICJkZXMuaCIKKyNpbmNsdWRlICJzdHJpbmcuaCIKKyNpbmNsdWRlICJlcmFzZV9tZi5oIiAKKworI2RlZmluZSBfX3JlY292ZXJ5X2tleV9fICAgMAorCitjb25zdCAgdTggY21kX3NlbF9tZltdICAgID0gIlx4MDBceGE0XHgwMFx4MDBceDAyXHgzZlx4MDAiOworY29uc3QgIHU4IGNtZF9zZWxfZWMwMVtdICA9ICJceDAwXHhhNFx4MDBceDAwXHgwMlx4RUNceDAxIjsKK2NvbnN0ICB1OCBjbWRfZ2V0X3JhbmRbXSAgPSAiXHgwMFx4ODRceDAwXHgwMFx4MDQiOworY29uc3QgIHU4IGluaXRpYWxfa2V5MFtdICA9ICJceDcwXHg2Nlx4NzNceDY0XHg2Zlx4NjNceDY2XHg3M1x4MjdceGEzXHgyN1x4MjdceDIzXHgyNyI7Citjb25zdCAgdTggY21kX2V4X2F1dGhbXSAgID0gIlx4MDBceDgyXHgwMFx4MDBceDA4IjsKK2NvbnN0ICB1OCBjbWRfZXJhc2VfbWZbXSAgPSAiXHg4MFx4MEVceDAwXHgwMFx4MDAiOworY29uc3QgIHU4IGNtZF9jcmVhdF9rZXlbXSA9ICJceDgwXHhFMFx4MDBceDAwXHgwN1x4M0ZceDAxXHgyMFx4MDFceEZFXHhGRlx4RkYiOworY29uc3QgIHU4IGNtZF93cml0ZV9rZXlbXSA9ICJceDgwXHhENFx4MDFceDAwXHgxNVx4RjlceEYwXHhBQVx4MEFceEZGIjsKK2NvbnN0ICB1OCBpbml0aWFsX2tleTFbXSAgPSAiXHhhYVx4MGVceGFhXHhhYVx4YThceDQ2XHhhYlx4ZWJceGZlXHhjM1x4YzdceGNmXHhlOVx4ZTVceGY5XHhhYSI7CisKKyNpZiBfX3JlY292ZXJ5X2tleV9fCitjb25zdCAgdTggdGVtcF9rZXlbXSA9ICJceDU3XHg0MVx4NTRceDQzXHg0OFx4NDRceDQxXHg1NFx4NDFceDU0XHg2OVx4NmRceDY1XHg0M1x4NGZceDUzIjsKKyNlbmRpZgorCitzdGF0aWMgdTggZGVzX2N0eFs3NjhdOyAKKwordTggc2luZ2xlX2Rlc19zZXRfa2V5cyh1OCBrZXlbOF0pIAoreworICAgIHJldHVybiBkZXNfc2V0X2tleSgoZGVzX2NvbnRleHQqKWRlc19jdHgsIGtleSk7Cit9CisKK3ZvaWQgc2luZ2xlX2Rlc19lbmNyeXB0KHU4IHNyY1s4XSwgdTggZGVzdFs4XSkKK3sKKyAgICBkZXNfZW5jcnlwdCgoZGVzX2NvbnRleHQqKWRlc19jdHgsIHNyYywgZGVzdCk7Cit9CisKK3ZvaWQgc2luZ2xlX2Rlc19kZWNyeXB0KHU4IHNyY1s4XSwgdTggZGVzdFs4XSkKK3sKKyAgICBkZXNfZGVjcnlwdCgoZGVzX2NvbnRleHQqKWRlc19jdHgsIHNyYywgZGVzdCk7Cit9CisKK3U4IHRyaXBsZV9kZXNfc2V0X2tleXModTgga2V5WzE2XSkKK3sKKyAgICByZXR1cm4gZGVzM19zZXRfMmtleXMoKGRlczNfY29udGV4dCopZGVzX2N0eCwga2V5LCBrZXkrOCk7ICAKK30KKwordm9pZCB0cmlwbGVfZGVzX2VuY3J5cHQodTggc3JjWzhdLCB1OCBkZXN0WzhdKQoreworICAgIGRlczNfZW5jcnlwdCgoZGVzM19jb250ZXh0KilkZXNfY3R4LCBzcmMsIGRlc3QpOworfQorCit2b2lkIHRyaXBsZV9kZXNfZGVjcnlwdCh1OCBzcmNbOF0sIHU4IGRlc3RbOF0pCit7CisgICAgZGVzM19kZWNyeXB0KChkZXMzX2NvbnRleHQqKWRlc19jdHgsIHNyYywgZGVzdCk7Cit9CisKK3UxNiBlcmFzZV9tZih2b2lkKQoreworICAgIHUxNiByY29kZTsKKyAgICB1OCAgY21kX2J1ZmZbMzJdOworICAgIHU4ICB0ZW1wX2J1ZmZbMTZdOworICAgIHU4ICByY3ZfbGVuOworICAgIHU4KiBwcmN2X2J1ZmY7CisgICAgdTggIGk7CisKKyAgICAvL9Gh1PFNRgorICAgIG1lbWNweShjbWRfYnVmZiwgY21kX3NlbF9tZiwgNyk7CisgICAgcmNvZGUgPSBHZW5fRXhjaGFuZ2UoMCwwLGNtZF9idWZmLDcsMCwmcHJjdl9idWZmLCZyY3ZfbGVuLCBQUk9UT0NPTF9UMF9DSDEpOworICAgIGlmKHJjb2RlICE9IDB4OTAwMCkKKyAgICAgICAgcmV0dXJuIHJjb2RlOworCisgICAgLy/RodTxRUMwMQorICAgIC8vyPTI1Mi7tObU2kVDMDHEv8K8o6zU8sjPzqrWrsewzrS9+NDQssGz/bLZ1/cKKyAgICBtZW1jcHkoY21kX2J1ZmYsIGNtZF9zZWxfZWMwMSwgNyk7CisgICAgcmNvZGUgPSBHZW5fRXhjaGFuZ2UoMCwwLGNtZF9idWZmLDcsMCwmcHJjdl9idWZmLCZyY3ZfbGVuLCBQUk9UT0NPTF9UMF9DSDEpOworICAgIGlmKHJjb2RlICE9IDB4OTAwMCkKKyAgICB7ICAgICAgICAKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgZm9yKGk9MDtpPDg7aSsrKQorICAgICAgICB0ZW1wX2J1ZmZbaV0gPSBpbml0aWFsX2tleTBbaV0gXiAweDI3OworCisgICAgLy/RodTxTUYKKyAgICBtZW1jcHkoY21kX2J1ZmYsIGNtZF9zZWxfbWYsIDcpOworICAgIHJjb2RlID0gR2VuX0V4Y2hhbmdlKDAsMCxjbWRfYnVmZiw3LDAsJnByY3ZfYnVmZiwmcmN2X2xlbiwgUFJPVE9DT0xfVDBfQ0gxKTsKKyAgICBpZihyY29kZSAhPSAweDkwMDApCisgICAgICAgIHJldHVybiByY29kZTsKKworICAgIC8vu/HIocvmu/rK/QorICAgIG1lbWNweShjbWRfYnVmZiwgY21kX2dldF9yYW5kLCA1KTsgCisgICAgcmNvZGUgPSBHZW5fRXhjaGFuZ2UoMCwwLGNtZF9idWZmLDUsNCwmcHJjdl9idWZmLCZyY3ZfbGVuLCBQUk9UT0NPTF9UMF9DSDEpOworICAgIGlmKHJjb2RlICE9IDB4OTAwMCkKKyAgICAgICAgcmV0dXJuIHJjb2RlOworICAgIGVsc2UKKyAgICB7CisgICAgICAgIG1lbXNldChjbWRfYnVmZiwgMCwgOCk7IAorICAgICAgICBtZW1jcHkoY21kX2J1ZmYsIHByY3ZfYnVmZiwgNCk7ICAgIAorICAgIH0KKworICAgIGZvcihpPTA7aTw4O2krKykKKyAgICAgICAgdGVtcF9idWZmWzgraV0gPSBpbml0aWFsX2tleTFbaSs3XSBeIDB4QUE7CisgICAgCisgICAgLy+808Pcy+a7+sr9CisgICAgI2lmIF9fcmVjb3Zlcnlfa2V5X18KKyAgICBtZW1zZXQodGVtcF9idWZmLCAwLCAxNik7CisgICAgI2VuZGlmCisgICAgdHJpcGxlX2Rlc19zZXRfa2V5cyh0ZW1wX2J1ZmYpOworICAgIHRyaXBsZV9kZXNfZW5jcnlwdChjbWRfYnVmZiwgdGVtcF9idWZmKTsKKworICAgIC8v1rTQ0M3isr/Iz9akCisgICAgbWVtY3B5KGNtZF9idWZmLCBjbWRfZXhfYXV0aCwgNSk7CisgICAgbWVtY3B5KGNtZF9idWZmKzUsIHRlbXBfYnVmZiwgOCk7IAorICAgIHJjb2RlID0gR2VuX0V4Y2hhbmdlKDAsMCxjbWRfYnVmZiwxMywwLCZwcmN2X2J1ZmYsJnJjdl9sZW4sIFBST1RPQ09MX1QwX0NIMSk7CisgICAgaWYocmNvZGUgIT0gMHg5MDAwKQorICAgICAgICByZXR1cm4gcmNvZGU7CisKKyAgICAvL7LBs/1NRgorICAgIG1lbWNweShjbWRfYnVmZiwgY21kX2VyYXNlX21mLCA1KTsgCisgICAgcmNvZGUgPSBHZW5fRXhjaGFuZ2UoMCwwLGNtZF9idWZmLDUsMCwmcHJjdl9idWZmLCZyY3ZfbGVuLCBQUk9UT0NPTF9UMF9DSDEpOworICAgIGlmKHJjb2RlICE9IDB4OTAwMCkKKyAgICAgICAgcmV0dXJuIHJjb2RlOworCisgICAgLy+0tL2oa2V5zsS8/gorICAgIG1lbWNweShjbWRfYnVmZiwgY21kX2NyZWF0X2tleSwgMTIpOyAKKyAgICByY29kZSA9IEdlbl9FeGNoYW5nZSgwLDAsY21kX2J1ZmYsMTIsMCwmcHJjdl9idWZmLCZyY3ZfbGVuLCBQUk9UT0NPTF9UMF9DSDEpOworICAgIGlmKHJjb2RlICE9IDB4OTAwMCkKKyAgICAgICAgcmV0dXJuIHJjb2RlOworCisgICAgLy/XsNTY0MK1xNb3v9jD3NS/CisgICAgbWVtc2V0KGNtZF9idWZmLCAwLCAzMik7CisgICAgbWVtY3B5KGNtZF9idWZmLCBjbWRfd3JpdGVfa2V5LCAxMCk7CisgICAgI2lmIF9fcmVjb3Zlcnlfa2V5X18KKyAgICBtZW1jcHkoY21kX2J1ZmYrMTAsIHRlbXBfa2V5LCAxNik7CisgICAgI2VuZGlmIAorICAgIHJjb2RlID0gR2VuX0V4Y2hhbmdlKDAsMCxjbWRfYnVmZiwyNiwwLCZwcmN2X2J1ZmYsJnJjdl9sZW4sIFBST1RPQ09MX1QwX0NIMSk7CisgICAgaWYocmNvZGUgIT0gMHg5MDAwKQorICAgICAgICByZXR1cm4gcmNvZGU7CisKKyAgICByZXR1cm4gMHg5MDAwOworfQorCmRpZmYgLS1naXQgYS9pY2NfYXBkdV9saWIvZXJhc2VfbWYuaCBiL2ljY19hcGR1X2xpYi9lcmFzZV9tZi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4MDM3MjIKLS0tIC9kZXYvbnVsbAorKysgYi9pY2NfYXBkdV9saWIvZXJhc2VfbWYuaApAQCAtMCwwICsxLDkgQEAKKyNpZm5kZWYgX19lcmFzZV9tZl9oX18KKyNkZWZpbmUgX19lcmFzZV9tZl9oX18KKworI2luY2x1ZGUgInN0bTMyZjEweF9saWIuaCIKKyNpbmNsdWRlICJpY2NfYXBkdV9saWIuaCIKKworZXh0ZXJuIHUxNiBlcmFzZV9tZih2b2lkKTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pY2NfYXBkdV9saWIvaWNjX2FwZHVfbGliX3YwMi5oIGIvaWNjX2FwZHVfbGliL2ljY19hcGR1X2xpYl92MDIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZWMyMmI1Ci0tLSAvZGV2L251bGwKKysrIGIvaWNjX2FwZHVfbGliL2ljY19hcGR1X2xpYl92MDIuaApAQCAtMCwwICsxLDEwOCBAQAorI2lmbmRlZiAgIF9fSUNDX0FQRFVfTElCX0hfXworI2RlZmluZSAgIF9fSUNDX0FQRFVfTElCX0hfXworCisjZGVmaW5lCVBST1RPQ09MX1QwX0NIMQkJCTEJCSAgICAgICAgICAgICAgICAvLyBQU0FNMgorI2RlZmluZSBQUk9UT0NPTF9UQ0xfUENEMAkJMHg4MCAgICAgICAgICAgICAgICAgICAgLy+3x73TtKXKvb+oCisKKyNkZWZpbmUgUElDQ19SRVFfQUxMIAkweDUyCisjZGVmaW5lIFBJQ0NfUkVRX0lETEUgCTB4MjYKKy8vv6jJz7Xno6zTw9PaU0FNv6jA5Li0zrsKKy8vss7K/aO6Y2lkPTAKKy8vICAgICAgaWNoIM2otcC6xQorLy+3tbvYo7ows8m5pgorZXh0ZXJuIHVuc2lnbmVkIHNob3J0IEdlbl9Qb3dlck9uQ2FyZCh1bnNpZ25lZCBjaGFyIGNpZCwgaW50IGljaCk7CisKKy8vudix1VNBTb+otefUtAorLy+yzsr9o7ppY2ggzai1wLrFCitleHRlcm4gdm9pZCBHZW5fUG93ZXJPZmZDYXJkKGludCBpY2gpOworCisvL7mmxNyjur+ouLTOu8ews/XKvLuvz+C52Mr9vt294bm5o6jTw9PaU0FNu/K/qMaso6kKKy8vss7K/aO6Y2lkPTAKKy8vICAgICAgaWNoIM2otcC6xQordm9pZCBHZW5fUmVzZXRJbmZvKCB1bnNpZ25lZCBjaGFyIGNpZCwgaW50IGljaCApOworLy+5psTco7q/qLi0zrujqL/J08PT2ri0zrtTQU278r+oxqyjqQorLy+yzsr9o7pjaWQ9MAorLy8gICAgICBpY2ggzai1wLrFCisvL7e1u9ijujCzybmmCitleHRlcm4gdW5zaWduZWQgc2hvcnQgR2VuX1Jlc2V0Q2FyZCh1bnNpZ25lZCBjaGFyIGNpZCwgaW50IGljaCk7CisKKy8vuabE3KO6v6jK/b7dvbu7uworLy+yzsr9o7pjaWQ9MAorLy8gICAgICBuYWRfc2VuZD0wCisvLyAgICAgIGNtZF9idWYgw/zB7ru6s+XH+AorLy8gICAgICBjbWRfbGVuIMP8we6zpLbICisvLyAgICAgIEV4cGVjdGVkUmVzcG9uc2VMZW5ndGggxtrN+7+oxqy72Li0tcTK/b7ds6S2yAorLy8gICAgICByZWNfYnVmINPD09q78ciht7W72Mr9vt21xNa41esKKy8vICAgICAgcmVjX2J1Zl9sZW4gyrW8yr3TytW1vbXEyv2+3bOktsggCisvLyAgICAgIGljaCDNqLXAusUKKy8vt7W72KO6MLPJuaYgICAgICAgICAgICAgCitleHRlcm4gdW5zaWduZWQgc2hvcnQgR2VuX0V4Y2hhbmdlKHVuc2lnbmVkIGNoYXIgY2lkLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIG5hZF9zZW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKmNtZF9idWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBjbWRfbGVuLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIEV4cGVjdGVkUmVzcG9uc2VMZW5ndGgsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKipyZWNfYnVmLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpyZWNfYnVmX2xlbiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGljaCk7CisKKy8vuabE3KO6QWN0aXZhdGlvbiBvZiBhIFBJQ0MgaW4gSURMRSBtb2RlLgorLy+yzsr9o7piciAoSU4pIEJhdWRyYXRlIGZvciBNSUZBUkUgY29tbXVuaWNhdGlvbiAwIDEwNiBrQmF1ZAorLy8gICAgICBhdHEgKE9VVCkgQW5zd2VyIHRvIFJlcXVlc3QKKy8vICAgICAgc2FrIChPVVQpIFNlbGVjdCBhY2tub3dsZWRnZQorLy8gICAgICB1aWQgKE9VVCkgdXAgdG8gMTAgYnl0ZXMgVUlECisvLyAgICAgIHVpZF9sZW4gKE9VVCkgbGVuZ3RoIG9mIHRoZSBVSUQKKy8vt7W72KO6MCBvaworZXh0ZXJuIHNob3J0IE1mNTAwUGljY0FjdGl2YXRlSWRsZSh1bnNpZ25lZCBjaGFyIGJyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqYXRxLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKnNhaywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICp1aWQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqdWlkX2xlbik7CisKKy8vuabE3KO6U2VuZHMgdGhlIFBJQ0MgaW50byB0aGUgaGFsdCBzdGF0ZS4KKy8vss7K/aO6Tm9uZQorLy+3tbvYo7owIG9rCitleHRlcm4gc2hvcnQgTWY1MDBQaWNjSGFsdCh2b2lkKTsgCisKKy8vuabE3KO61NrJ5Ma1v6i807Xnx9K9+MjrMTQ0NDMzLTTH6b/2z8Ky4srUv6jGrLXEtObU2gorLy+yzsr9o7rO3gorLy+3tbvYo7owIL+otObU2gorLy8gICAgICDG5Mv7IL+osru05tTaCitleHRlcm4gdW5zaWduZWQgY2hhciBQSUNDX1RjbENoZWNrUkZSb3VuZ2Uodm9pZCk7CisKKy8vuabE3KO6uPzQwnNhbb+otqjKsbWl1Kp0aWNr1rUKKy8vICAgICAg0OjU2jFtc9bQts+6r8r91tC199PDCitleHRlcm4gdm9pZCB1cGRhdGVfc2FtX3RpY2tlcih2b2lkKTsKKworLy+5psTco7qz9cq8u69TQU3NqNG2vdO/2gorLy+yzsr9o7rO3gorLy+3tbvYo7rO3gorZXh0ZXJuIHZvaWQgSVNPNzgxNl9VU0FSVF9Jbml0KHZvaWQpOworCisKKy8vuabE3DogyejWwzNERVMoy6uxtrOkKcPc1L8KKy8vss7K/TogMTbX1r3aw9zUv9a1CisvL7e1u9g6IDAgs8m5pgorLy8gICAgICDG5Mv7IMqnsNwKKy8vZXh0ZXJuIHU4IGRlc19zZXRfa2V5cyh1OCBrZXlbMTZdKTsKKworLy+5psTcOiAzZGVzvNPD3AorLy+yzsr9OiBzcmNbOF0gyuTI6zjX1r3aw/fOxMr9vt0KKy8vICAgICAgZGVzdFs4XSDK5LP2ONfWvdrD3M7Eyv2+3QorLy+3tbvYOiDO3gorLy9leHRlcm4gdm9pZCBkZXNfZW5jcnlwdCh1OCBzcmMgWyA4IF0sIHU4IGRlc3QgWyA4IF0pOworCisvL7mmxNw6IDNkZXO94sPcCisvL7LOyv06IHNyY1s4XSDK5MjrONfWvdrD3M7Eyv2+3QorLy8gICAgICBkZXN0WzhdIMrks/Y419a92sP3zsTK/b7dCisvL7e1u9g6IM7eCisvL2V4dGVybiB2b2lkIGRlc19lbmNyeXB0KHU4IHNyYyBbIDggXSwgdTggZGVzdCBbIDggXSk7CisKKy8vuabE3DogssGz/UVTQU2/qsbVv6i94bm5o6yyoszmu7uz9cq81ve/2MPc1L/OqjE219a92sirMAorLy+yzsr9OiDO3gorLy+3tbvYOiAweDkwMDAgs8m5pgorLy8gICAgICAweDAwMDAgsrvKx7+qxtWz9cq8RVNBTb+ov9W85KOssrvE3L340NCywbP9stnX9worLy8gICAgICDG5Mv7ICAgyqew3AorLy9leHRlcm4gdTE2IGVyYXNlX21mKHZvaWQpOworCisjZW5kaWYgCisKZGlmZiAtLWdpdCBhL2xjZC9CZWJhc19OZXVlMTh4MzZfTnVtYmVycy5oIGIvbGNkL0JlYmFzX05ldWUxOHgzNl9OdW1iZXJzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWE5NzViMgotLS0gL2Rldi9udWxsCisrKyBiL2xjZC9CZWJhc19OZXVlMTh4MzZfTnVtYmVycy5oCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBCZWJhc19OZXVlMTh4MzZfTnVtYmVyZXMuaAorICoKKyAqIENyZWF0ZWQ6IDMwLzAzLzIwMTIgMTo1NDozMiBBTQorICogIEF1dGhvcjogYW5keQorICovIAorCisKKyNpZm5kZWYgQkVCQVNfTkVVRTE4WDM2X05VTUJFUlNfSF8KKyNkZWZpbmUgQkVCQVNfTkVVRTE4WDM2X05VTUJFUlNfSF8KKworCisvL1dBUk5JTkc6IFRoaXMgRm9udCBSZXF1aXJlIFgtR0xDRCBMaWIuCisvLyAgICAgICAgIFlvdSBjYW4gbm90IHVzZSBpdCB3aXRoIE1pa3JvRSBHTENEIExpYi4KKworLy9Gb250IEdlbmVyYXRlZCBieSBNaWtyb0VsZWt0cm9uaWthIEdMQ0QgRm9udCBDcmVhdG9yIDEuMi4wLjAKKy8vTWlrcm9FbGVrdHJvbmlrYSAyMDExIAorLy9odHRwOi8vd3d3Lm1pa3JvZS5jb20gCisKKy8vR0xDRCBGb250TmFtZSA6IEJlYmFzX05ldWUxOHgzNgorLy9HTENEIEZvbnRTaXplIDogMTggeCAzNgorCitzdGF0aWMgY29uc3QgY2hhciBCZWJhc19OZXVlMTh4MzZfTnVtYmVyc1tdIFBST0dNRU0gPSB7CisgICAgICAgIDB4MDcsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4QzAsIDB4MDcsIDB4MDAsIDB4MDAsIDB4MDAsIDB4QzAsIDB4MDcsIDB4MDAsIDB4MDAsIDB4MDAsIDB4QzAsIDB4MDcsIDB4MDAsIDB4MDAsIDB4MDAsIDB4QzAsIDB4MDcsIDB4MDAsIDB4MDAsIDB4MDAsIDB4QzAsIDB4MDcsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsICAvLyBDb2RlIGZvciBjaGFyIC4KKyAgICAgICAgMHgxMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwNywgMHgwMCwgMHgwMCwgMHgwMCwgMHhFMCwgMHgwNywgMHgwMCwgMHgwMCwgMHgwMCwgMHhGQywgMHgwNywgMHgwMCwgMHgwMCwgMHgwMCwgMHhGRiwgMHgwNywgMHgwMCwgMHgwMCwgMHhFMCwgMHhGRiwgMHgwMSwgMHgwMCwgMHgwMCwgMHhGOCwgMHgzRiwgMHgwMCwgMHgwMCwgMHgwMCwgMHhGRiwgMHgwRiwgMHgwMCwgMHgwMCwgMHhFMCwgMHhGRiwgMHgwMSwgMHgwMCwgMHgwMCwgMHhGOCwgMHg3RiwgMHgwMCwgMHgwMCwgMHgwMCwgMHhGRiwgMHgwRiwgMHgwMCwgMHgwMCwgMHhDMCwgMHhGRiwgMHgwMSwgMHgwMCwgMHgwMCwgMHhGOCwgMHg3RiwgMHgwMCwgMHgwMCwgMHgwMCwgMHhGRSwgMHgwRiwgMHgwMCwgMHgwMCwgMHgwMCwgMHhGRSwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgMHg3RSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgIC8vIENvZGUgZm9yIGNoYXIgLworICAgICAgICAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEUwLCAweEZGLCAweEZGLCAweDdGLCAweDAwLCAweEY4LCAweEZGLCAweEZGLCAweEZGLCAweDAxLCAweEZDLCAweEZGLCAweEZGLCAweEZGLCAweDAzLCAweEZFLCAweEZGLCAweEZGLCAweEZGLCAweDA3LCAweEZFLCAweEZGLCAweEZGLCAweEZGLCAweDA3LCAweDNGLCAweDAwLCAweDAwLCAweEMwLCAweDBGLCAweDFGLCAweDAwLCAweDAwLCAweDgwLCAweDBGLCAweDFGLCAweDAwLCAweDAwLCAweDgwLCAweDBGLCAweDFGLCAweDAwLCAweDAwLCAweDgwLCAweDBGLCAweDNGLCAweDAwLCAweDAwLCAweEMwLCAweDBGLCAweEZFLCAweEZGLCAweEZGLCAweEZGLCAweDA3LCAweEZFLCAweEZGLCAweEZGLCAweEZGLCAweDA3LCAweEZDLCAweEZGLCAweEZGLCAweEZGLCAweDAzLCAweEY4LCAweEZGLCAweEZGLCAweEZGLCAweDAxLCAweEUwLCAweEZGLCAweEZGLCAweDdGLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAgLy8gQ29kZSBmb3IgY2hhciAwCisgICAgICAgIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4RTAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4RTAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4RTAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4RjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4RjgsIDB4RkYsIDB4RkYsIDB4RkYsIDB4MDcsIDB4RkUsIDB4RkYsIDB4RkYsIDB4RkYsIDB4MDcsIDB4RkUsIDB4RkYsIDB4RkYsIDB4RkYsIDB4MDcsIDB4RkUsIDB4RkYsIDB4RkYsIDB4RkYsIDB4MDcsIDB4RkUsIDB4RkYsIDB4RkYsIDB4RkYsIDB4MDcsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsICAvLyBDb2RlIGZvciBjaGFyIDEKKyAgICAgICAgMHgxMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhFMCwgMHgwRiwgMHgwMCwgMHhGMCwgMHgwNywgMHhGOCwgMHgwRiwgMHgwMCwgMHhGRSwgMHgwNywgMHhGQywgMHgwRiwgMHgwMCwgMHhGRiwgMHgwNywgMHhGRSwgMHgwRiwgMHhDMCwgMHhGRiwgMHgwNywgMHhGRSwgMHgwRiwgMHhFMCwgMHhGRiwgMHgwNywgMHgzRSwgMHgwMCwgMHhGMCwgMHhDRiwgMHgwNywgMHgxRiwgMHgwMCwgMHhGOCwgMHhDMywgMHgwNywgMHgxRiwgMHgwMCwgMHhGRSwgMHhDMSwgMHgwNywgMHgxRiwgMHgwMCwgMHg3RiwgMHhDMCwgMHgwNywgMHgxRiwgMHg4MCwgMHgzRiwgMHhDMCwgMHgwNywgMHgzRiwgMHhGMCwgMHgxRiwgMHhDMCwgMHgwNywgMHhGRSwgMHhGRiwgMHgwRiwgMHhDMCwgMHgwNywgMHhGRSwgMHhGRiwgMHgwMywgMHhDMCwgMHgwNywgMHhGQywgMHhGRiwgMHgwMSwgMHhDMCwgMHgwNywgMHhGOCwgMHg3RiwgMHgwMCwgMHhDMCwgMHgwNywgMHhFMCwgMHgwRiwgMHgwMCwgMHgwMCwgMHgwMCwgIC8vIENvZGUgZm9yIGNoYXIgMgorICAgICAgICAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEUwLCAweDA3LCAweDAwLCAweDdGLCAweDAwLCAweEY4LCAweDA3LCAweDAwLCAweEZGLCAweDAxLCAweEZDLCAweDA3LCAweDAwLCAweEZGLCAweDAzLCAweEZFLCAweDA3LCAweDAwLCAweEZGLCAweDA3LCAweEZFLCAweDA3LCAweDAwLCAweEZGLCAweDA3LCAweDNGLCAweDgwLCAweDBGLCAweEMwLCAweDBGLCAweDFGLCAweDgwLCAweDBGLCAweDgwLCAweDBGLCAweDFGLCAweDgwLCAweDBGLCAweDgwLCAweDBGLCAweDFGLCAweDgwLCAweDBGLCAweDgwLCAweDBGLCAweDNGLCAweEMwLCAweDFGLCAweEMwLCAweDBGLCAweEZFLCAweEZGLCAweEZGLCAweEZGLCAweDA3LCAweEZFLCAweEZGLCAweEZGLCAweEZGLCAweDA3LCAweEZDLCAweEZGLCAweEZELCAweEZGLCAweDAzLCAweEY4LCAweEZGLCAweEY4LCAweEZGLCAweDAxLCAweEUwLCAweDFGLCAweEMwLCAweDdGLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAgLy8gQ29kZSBmb3IgY2hhciAzCisgICAgICAgIDB4MTIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MUYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4RjAsIDB4MUYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4RkMsIDB4MUYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4RkYsIDB4MUYsIDB4MDAsIDB4MDAsIDB4RTAsIDB4RkYsIDB4MUYsIDB4MDAsIDB4MDAsIDB4RjgsIDB4M0YsIDB4MUYsIDB4MDAsIDB4MDAsIDB4RkYsIDB4MEYsIDB4MUYsIDB4MDAsIDB4QzAsIDB4RkYsIDB4MDMsIDB4MUYsIDB4MDAsIDB4RjAsIDB4N0YsIDB4MDAsIDB4MUYsIDB4MDAsIDB4RkUsIDB4MUYsIDB4MDAsIDB4MUYsIDB4MDAsIDB4RkUsIDB4RkYsIDB4RkYsIDB4RkYsIDB4MDcsIDB4RkUsIDB4RkYsIDB4RkYsIDB4RkYsIDB4MDcsIDB4RkUsIDB4RkYsIDB4RkYsIDB4RkYsIDB4MDcsIDB4RkUsIDB4RkYsIDB4RkYsIDB4RkYsIDB4MDcsIDB4RkUsIDB4RkYsIDB4RkYsIDB4RkYsIDB4MDcsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MUYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MUYsIDB4MDAsICAvLyBDb2RlIGZvciBjaGFyIDQKKyAgICAgICAgMHgxMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhFMCwgMHgxRiwgMHg3RSwgMHgwMCwgMHhGRSwgMHhGRiwgMHgxRiwgMHhGRSwgMHgwMSwgMHhGRSwgMHhGRiwgMHgxRiwgMHhGRSwgMHgwMywgMHhGRSwgMHhGRiwgMHgxRiwgMHhGRSwgMHgwNywgMHhGRSwgMHhGRiwgMHgxRiwgMHhGRSwgMHgwNywgMHhGRSwgMHhDNywgMHgwMywgMHhDMCwgMHgwRiwgMHgzRSwgMHhFMCwgMHgwMSwgMHg4MCwgMHgwRiwgMHgzRSwgMHhFMCwgMHgwMSwgMHg4MCwgMHgwRiwgMHgzRSwgMHhGMCwgMHgwMSwgMHg4MCwgMHgwRiwgMHgzRSwgMHhGMCwgMHgwMywgMHhDMCwgMHgwRiwgMHgzRSwgMHhGMCwgMHhGRiwgMHhGRiwgMHgwNywgMHgzRSwgMHhFMCwgMHhGRiwgMHhGRiwgMHgwNywgMHgzRSwgMHhFMCwgMHhGRiwgMHhGRiwgMHgwMywgMHgzRSwgMHhDMCwgMHhGRiwgMHhGRiwgMHgwMSwgMHgwMCwgMHgwMCwgMHhGRiwgMHg3RiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgIC8vIENvZGUgZm9yIGNoYXIgNQorICAgICAgICAweDEyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEUwLCAweEZGLCAweEZGLCAweDdGLCAweDAwLCAweEY4LCAweEZGLCAweEZGLCAweEZGLCAweDAxLCAweEZDLCAweEZGLCAweEZGLCAweEZGLCAweDAzLCAweEZFLCAweEZGLCAweEZGLCAweEZGLCAweDA3LCAweEZFLCAweEZGLCAweEZGLCAweEZGLCAweDA3LCAweDNFLCAweDgwLCAweDA3LCAweEMwLCAweDBGLCAweDFGLCAweEMwLCAweDAzLCAweDgwLCAweDBGLCAweDFGLCAweEMwLCAweDAzLCAweDgwLCAweDBGLCAweDFGLCAweEUwLCAweDAzLCAweDgwLCAweDBGLCAweDNGLCAweEUwLCAweDA3LCAweEMwLCAweDBGLCAweDNFLCAweEUwLCAweEZGLCAweEZGLCAweDA3LCAweEZFLCAweEMzLCAweEZGLCAweEZGLCAweDA3LCAweEZFLCAweEMzLCAweEZGLCAweEZGLCAweDAzLCAweEZDLCAweDgzLCAweEZGLCAweEZGLCAweDAxLCAweEY4LCAweDAzLCAweEZFLCAweDdGLCAweDAwLCAweEMwLCAweDAzLCAweDAwLCAweDAwLCAweDAwLCAgLy8gQ29kZSBmb3IgY2hhciA2CisgICAgICAgIDB4MTIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4M0UsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4M0UsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4M0UsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4M0UsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDYsIDB4M0UsIDB4MDAsIDB4MDAsIDB4RTAsIDB4MDcsIDB4M0UsIDB4MDAsIDB4MDAsIDB4RkUsIDB4MDcsIDB4M0UsIDB4MDAsIDB4RTAsIDB4RkYsIDB4MDcsIDB4M0UsIDB4MDAsIDB4RkMsIDB4RkYsIDB4MDcsIDB4M0UsIDB4QzAsIDB4RkYsIDB4RkYsIDB4MDMsIDB4M0UsIDB4RkMsIDB4RkYsIDB4M0YsIDB4MDAsIDB4RkUsIDB4RkYsIDB4RkYsIDB4MDMsIDB4MDAsIDB4RkUsIDB4RkYsIDB4M0YsIDB4MDAsIDB4MDAsIDB4RkUsIDB4RkYsIDB4MDcsIDB4MDAsIDB4MDAsIDB4RkUsIDB4N0YsIDB4MDAsIDB4MDAsIDB4MDAsIDB4RkUsIDB4MDcsIDB4MDAsIDB4MDAsIDB4MDAsIDB4N0UsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsICAvLyBDb2RlIGZvciBjaGFyIDcKKyAgICAgICAgMHgxMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhDMCwgMHgxRiwgMHhDMCwgMHgzRiwgMHgwMCwgMHhGOCwgMHg3RiwgMHhGOCwgMHhGRiwgMHgwMSwgMHhGQywgMHhGRiwgMHhGRCwgMHhGRiwgMHgwMywgMHhGRSwgMHhGRiwgMHhGRiwgMHhGRiwgMHgwNywgMHhGRSwgMHhGRiwgMHhGRiwgMHhGRiwgMHgwNywgMHg3RSwgMHhDMCwgMHgzRiwgMHhDMCwgMHgwNywgMHgxRiwgMHg4MCwgMHgwRiwgMHg4MCwgMHgwRiwgMHgxRiwgMHg4MCwgMHgwRiwgMHg4MCwgMHgwRiwgMHgxRiwgMHg4MCwgMHgwRiwgMHg4MCwgMHgwRiwgMHgxRiwgMHg4MCwgMHgwRiwgMHg4MCwgMHgwRiwgMHgxRiwgMHg4MCwgMHgwRiwgMHg4MCwgMHgwRiwgMHg3RSwgMHhDMCwgMHgzRiwgMHhFMCwgMHgwNywgMHhGRSwgMHhGRiwgMHhGRiwgMHhGRiwgMHgwNywgMHhGRSwgMHhGRiwgMHhGRiwgMHhGRiwgMHgwNywgMHhGQywgMHhGRiwgMHhGRCwgMHhGRiwgMHgwMywgMHhGOCwgMHg3RiwgMHhGOCwgMHhGRiwgMHgwMSwgMHhDMCwgMHgxRiwgMHhDMCwgMHgzRiwgMHgwMCwgIC8vIENvZGUgZm9yIGNoYXIgOAorICAgICAgICAweDExLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDNDLCAweDAwLCAweEUwLCAweEZGLCAweDA3LCAweEZDLCAweDAxLCAweEY4LCAweEZGLCAweDFGLCAweEZDLCAweDAzLCAweEZDLCAweEZGLCAweDNGLCAweEZDLCAweDA3LCAweEZFLCAweEZGLCAweDNGLCAweEZDLCAweDA3LCAweEZFLCAweEZGLCAweDdGLCAweEMwLCAweDA3LCAweDNGLCAweDAwLCAweDdFLCAweEMwLCAweDBGLCAweDFGLCAweDAwLCAweDdDLCAweDgwLCAweDBGLCAweDFGLCAweDAwLCAweDNDLCAweDgwLCAweDBGLCAweDFGLCAweDAwLCAweDNDLCAweDgwLCAweDBGLCAweDNGLCAweDAwLCAweDFFLCAweEMwLCAweDBGLCAweEZFLCAweEZGLCAweEZGLCAweEZGLCAweDA3LCAweEZFLCAweEZGLCAweEZGLCAweEZGLCAweDA3LCAweEZDLCAweEZGLCAweEZGLCAweEZGLCAweDAzLCAweEY4LCAweEZGLCAweEZGLCAweEZGLCAweDAxLCAweEUwLCAweEZGLCAweEZGLCAweDNGLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwICAgLy8gQ29kZSBmb3IgY2hhciA5CisgICAgICAgIH07CisKKworCisKKworI2VuZGlmIC8qIEJFQkFTX05FVUUxOFgzNl9OVU1CRVJFU19IXyAqLwpkaWZmIC0tZ2l0IGEvbGNkL0JlYmFzX05ldWUyMHgzNl9Cb2xkX051bWJlcnMuaCBiL2xjZC9CZWJhc19OZXVlMjB4MzZfQm9sZF9OdW1iZXJzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjM5MTZjNQotLS0gL2Rldi9udWxsCisrKyBiL2xjZC9CZWJhc19OZXVlMjB4MzZfQm9sZF9OdW1iZXJzLmgKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIEJlYmFzX05ldWUyMHgzNl9OdW1iZXJzLmgKKyAqCisgKiBDcmVhdGVkOiAzMC8wMy8yMDEyIDE6NTE6NDggQU0KKyAqICBBdXRob3I6IGFuZHkKKyAqLyAKKworCisjaWZuZGVmIEJFQkFTX05FVUUyMFgzNl9CT0xEX05VTUJFUlNfSF8KKyNkZWZpbmUgQkVCQVNfTkVVRTIwWDM2X0JPTERfTlVNQkVSU19IXworCisKKy8vV0FSTklORzogVGhpcyBGb250IFJlcXVpcmUgWC1HTENEIExpYi4KKy8vICAgICAgICAgWW91IGNhbiBub3QgdXNlIGl0IHdpdGggTWlrcm9FIEdMQ0QgTGliLgorCisvL0ZvbnQgR2VuZXJhdGVkIGJ5IE1pa3JvRWxla3Ryb25pa2EgR0xDRCBGb250IENyZWF0b3IgMS4yLjAuMAorLy9NaWtyb0VsZWt0cm9uaWthIDIwMTEgCisvL2h0dHA6Ly93d3cubWlrcm9lLmNvbSAKKworLy9HTENEIEZvbnROYW1lIDogQmViYXNfTmV1ZTIweDM2CisvL0dMQ0QgRm9udFNpemUgOiAyMCB4IDM2CisKK3N0YXRpYyBjb25zdCBjaGFyIEJlYmFzX05ldWUyMHgzNl9Cb2xkX051bWJlcnNbXSBQUk9HTUVNID0geworICAgICAgICAweDA5LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEMwLCAweDA3LCAweDAwLCAweDAwLCAweDAwLCAweEMwLCAweDA3LCAweDAwLCAweDAwLCAweDAwLCAweEMwLCAweDA3LCAweDAwLCAweDAwLCAweDAwLCAweEMwLCAweDA3LCAweDAwLCAweDAwLCAweDAwLCAweEMwLCAweDA3LCAweDAwLCAweDAwLCAweDAwLCAweEMwLCAweDA3LCAweDAwLCAweDAwLCAweDAwLCAweEMwLCAweDA3LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAgLy8gQ29kZSBmb3IgY2hhciAuCisgICAgICAgIDB4MTQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDcsIDB4MDAsIDB4MDAsIDB4MDAsIDB4RTAsIDB4MDcsIDB4MDAsIDB4MDAsIDB4MDAsIDB4RkMsIDB4MDcsIDB4MDAsIDB4MDAsIDB4MDAsIDB4RkYsIDB4MDcsIDB4MDAsIDB4MDAsIDB4RTAsIDB4RkYsIDB4MDcsIDB4MDAsIDB4MDAsIDB4RjgsIDB4RkYsIDB4MDcsIDB4MDAsIDB4MDAsIDB4RkYsIDB4RkYsIDB4MDEsIDB4MDAsIDB4RTAsIDB4RkYsIDB4M0YsIDB4MDAsIDB4MDAsIDB4RjgsIDB4RkYsIDB4MEYsIDB4MDAsIDB4MDAsIDB4RkYsIDB4RkYsIDB4MDEsIDB4MDAsIDB4QzAsIDB4RkYsIDB4N0YsIDB4MDAsIDB4MDAsIDB4RjgsIDB4RkYsIDB4MEYsIDB4MDAsIDB4MDAsIDB4RkUsIDB4RkYsIDB4MDEsIDB4MDAsIDB4MDAsIDB4RkUsIDB4N0YsIDB4MDAsIDB4MDAsIDB4MDAsIDB4RkUsIDB4MEYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4RkUsIDB4MDMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4N0UsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MUUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsICAvLyBDb2RlIGZvciBjaGFyIC8KKyAgICAgICAgMHgxMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhFMCwgMHhGRiwgMHhGRiwgMHg3RiwgMHgwMCwgMHhGOCwgMHhGRiwgMHhGRiwgMHhGRiwgMHgwMSwgMHhGQywgMHhGRiwgMHhGRiwgMHhGRiwgMHgwMywgMHhGRSwgMHhGRiwgMHhGRiwgMHhGRiwgMHgwNywgMHhGRSwgMHhGRiwgMHhGRiwgMHhGRiwgMHgwNywgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHgwRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHgwRiwgMHgzRiwgMHgwMCwgMHgwMCwgMHhDMCwgMHgwRiwgMHgxRiwgMHgwMCwgMHgwMCwgMHg4MCwgMHgwRiwgMHgzRiwgMHgwMCwgMHgwMCwgMHhDMCwgMHgwRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHgwRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHgwRiwgMHhGRSwgMHhGRiwgMHhGRiwgMHhGRiwgMHgwNywgMHhGRSwgMHhGRiwgMHhGRiwgMHhGRiwgMHgwNywgMHhGQywgMHhGRiwgMHhGRiwgMHhGRiwgMHgwMywgMHhGOCwgMHhGRiwgMHhGRiwgMHhGRiwgMHgwMSwgMHhFMCwgMHhGRiwgMHhGRiwgMHg3RiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgIC8vIENvZGUgZm9yIGNoYXIgMAorICAgICAgICAweDEwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEUwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweEUwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweEUwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweEYwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweEY4LCAweEZGLCAweEZGLCAweEZGLCAweDA3LCAweEZFLCAweEZGLCAweEZGLCAweEZGLCAweDA3LCAweEZFLCAweEZGLCAweEZGLCAweEZGLCAweDA3LCAweEZFLCAweEZGLCAweEZGLCAweEZGLCAweDA3LCAweEZFLCAweEZGLCAweEZGLCAweEZGLCAweDA3LCAweEZFLCAweEZGLCAweEZGLCAweEZGLCAweDA3LCAweEZFLCAweEZGLCAweEZGLCAweEZGLCAweDA3LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAgLy8gQ29kZSBmb3IgY2hhciAxCisgICAgICAgIDB4MTQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4RTAsIDB4MEYsIDB4MDAsIDB4RjAsIDB4MDcsIDB4RjgsIDB4MEYsIDB4MDAsIDB4RkUsIDB4MDcsIDB4RkMsIDB4MEYsIDB4MDAsIDB4RkYsIDB4MDcsIDB4RkUsIDB4MEYsIDB4QzAsIDB4RkYsIDB4MDcsIDB4RkUsIDB4MEYsIDB4RTAsIDB4RkYsIDB4MDcsIDB4RkUsIDB4MEYsIDB4RjAsIDB4RkYsIDB4MDcsIDB4RkYsIDB4MEYsIDB4RjgsIDB4RkYsIDB4MDcsIDB4M0YsIDB4MDAsIDB4RkUsIDB4Q0YsIDB4MDcsIDB4MUYsIDB4MDAsIDB4RkYsIDB4QzMsIDB4MDcsIDB4MUYsIDB4ODAsIDB4RkYsIDB4QzEsIDB4MDcsIDB4M0YsIDB4RjAsIDB4N0YsIDB4QzAsIDB4MDcsIDB4RkYsIDB4RkYsIDB4M0YsIDB4QzAsIDB4MDcsIDB4RkYsIDB4RkYsIDB4MUYsIDB4QzAsIDB4MDcsIDB4RkUsIDB4RkYsIDB4MEYsIDB4QzAsIDB4MDcsIDB4RkUsIDB4RkYsIDB4MDMsIDB4QzAsIDB4MDcsIDB4RkMsIDB4RkYsIDB4MDEsIDB4QzAsIDB4MDcsIDB4RjgsIDB4N0YsIDB4MDAsIDB4QzAsIDB4MDcsIDB4RTAsIDB4MEYsIDB4MDAsIDB4MDAsIDB4MDAsICAvLyBDb2RlIGZvciBjaGFyIDIKKyAgICAgICAgMHgxMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhFMCwgMHgwNywgMHgwMCwgMHg3RiwgMHgwMCwgMHhGOCwgMHgwNywgMHgwMCwgMHhGRiwgMHgwMSwgMHhGQywgMHgwNywgMHgwMCwgMHhGRiwgMHgwMywgMHhGRSwgMHgwNywgMHgwMCwgMHhGRiwgMHgwNywgMHhGRSwgMHgwNywgMHgwMCwgMHhGRiwgMHgwNywgMHhGRiwgMHg4NywgMHgwRiwgMHhGRiwgMHgwRiwgMHhGRiwgMHg4NywgMHgwRiwgMHhGRiwgMHgwRiwgMHgzRiwgMHg4MCwgMHgwRiwgMHhDMCwgMHgwRiwgMHgxRiwgMHg4MCwgMHgwRiwgMHg4MCwgMHgwRiwgMHgzRiwgMHhDMCwgMHgxRiwgMHhDMCwgMHgwRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHgwRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHgwRiwgMHhGRSwgMHhGRiwgMHhGRiwgMHhGRiwgMHgwNywgMHhGRSwgMHhGRiwgMHhGRiwgMHhGRiwgMHgwNywgMHhGQywgMHhGRiwgMHhGRCwgMHhGRiwgMHgwMywgMHhGOCwgMHhGRiwgMHhGOCwgMHhGRiwgMHgwMSwgMHhFMCwgMHgxRiwgMHhDMCwgMHg3RiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgIC8vIENvZGUgZm9yIGNoYXIgMworICAgICAgICAweDE0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDFGLCAweDAwLCAweDAwLCAweDAwLCAweEYwLCAweDFGLCAweDAwLCAweDAwLCAweDAwLCAweEZDLCAweDFGLCAweDAwLCAweDAwLCAweDAwLCAweEZGLCAweDFGLCAweDAwLCAweDAwLCAweEUwLCAweEZGLCAweDFGLCAweDAwLCAweDAwLCAweEY4LCAweEZGLCAweDFGLCAweDAwLCAweDAwLCAweEZGLCAweEZGLCAweDFGLCAweDAwLCAweEMwLCAweEZGLCAweDNGLCAweDFGLCAweDAwLCAweEYwLCAweEZGLCAweDBGLCAweDFGLCAweDAwLCAweEZFLCAweEZGLCAweDAzLCAweDFGLCAweDAwLCAweEZFLCAweEZGLCAweEZGLCAweEZGLCAweDA3LCAweEZFLCAweEZGLCAweEZGLCAweEZGLCAweDA3LCAweEZFLCAweEZGLCAweEZGLCAweEZGLCAweDA3LCAweEZFLCAweEZGLCAweEZGLCAweEZGLCAweDA3LCAweEZFLCAweEZGLCAweEZGLCAweEZGLCAweDA3LCAweEZFLCAweEZGLCAweEZGLCAweEZGLCAweDA3LCAweEZFLCAweEZGLCAweEZGLCAweEZGLCAweDA3LCAweDAwLCAweDAwLCAweDAwLCAweDFGLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDFGLCAweDAwLCAgLy8gQ29kZSBmb3IgY2hhciA0CisgICAgICAgIDB4MTMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4RTAsIDB4MUYsIDB4N0UsIDB4MDAsIDB4RkUsIDB4RkYsIDB4MUYsIDB4RkUsIDB4MDEsIDB4RkUsIDB4RkYsIDB4MUYsIDB4RkUsIDB4MDMsIDB4RkUsIDB4RkYsIDB4MUYsIDB4RkUsIDB4MDcsIDB4RkUsIDB4RkYsIDB4MUYsIDB4RkUsIDB4MDcsIDB4RkUsIDB4RkYsIDB4MUYsIDB4RkUsIDB4MEYsIDB4RkUsIDB4RkYsIDB4MUYsIDB4RkUsIDB4MEYsIDB4RkUsIDB4RTcsIDB4MDMsIDB4QzAsIDB4MEYsIDB4M0UsIDB4RjAsIDB4MDEsIDB4ODAsIDB4MEYsIDB4M0UsIDB4RjAsIDB4MDMsIDB4QzAsIDB4MEYsIDB4M0UsIDB4RjAsIDB4RkYsIDB4RkYsIDB4MEYsIDB4M0UsIDB4RjAsIDB4RkYsIDB4RkYsIDB4MEYsIDB4M0UsIDB4RjAsIDB4RkYsIDB4RkYsIDB4MDcsIDB4M0UsIDB4RTAsIDB4RkYsIDB4RkYsIDB4MDcsIDB4M0UsIDB4RTAsIDB4RkYsIDB4RkYsIDB4MDMsIDB4M0UsIDB4QzAsIDB4RkYsIDB4RkYsIDB4MDEsIDB4MDAsIDB4MDAsIDB4RkYsIDB4N0YsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsICAvLyBDb2RlIGZvciBjaGFyIDUKKyAgICAgICAgMHgxNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhFMCwgMHhGRiwgMHhGRiwgMHg3RiwgMHgwMCwgMHhGOCwgMHhGRiwgMHhGRiwgMHhGRiwgMHgwMSwgMHhGQywgMHhGRiwgMHhGRiwgMHhGRiwgMHgwMywgMHhGRSwgMHhGRiwgMHhGRiwgMHhGRiwgMHgwNywgMHhGRSwgMHhGRiwgMHhGRiwgMHhGRiwgMHgwNywgMHhGRSwgMHhGRiwgMHhGRiwgMHhGRiwgMHgwRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHgwRiwgMHgzRiwgMHhDMCwgMHgwNywgMHhDMCwgMHgwRiwgMHgxRiwgMHhFMCwgMHgwMywgMHg4MCwgMHgwRiwgMHgzRiwgMHhFMCwgMHgwNywgMHhDMCwgMHgwRiwgMHgzRiwgMHhFMCwgMHhGRiwgMHhGRiwgMHgwRiwgMHhGRiwgMHhFMywgMHhGRiwgMHhGRiwgMHgwRiwgMHhGRSwgMHhFMywgMHhGRiwgMHhGRiwgMHgwNywgMHhGRSwgMHhDMywgMHhGRiwgMHhGRiwgMHgwNywgMHhGRSwgMHhDMywgMHhGRiwgMHhGRiwgMHgwMywgMHhGQywgMHg4MywgMHhGRiwgMHhGRiwgMHgwMSwgMHhGOCwgMHgwMywgMHhGRSwgMHg3RiwgMHgwMCwgMHhDMCwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgIC8vIENvZGUgZm9yIGNoYXIgNgorICAgICAgICAweDE0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDNFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDNFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDNFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDNFLCAweDAwLCAweDAwLCAweDAwLCAweDA2LCAweDNFLCAweDAwLCAweDAwLCAweEUwLCAweDA3LCAweDNFLCAweDAwLCAweDAwLCAweEZFLCAweDA3LCAweDNFLCAweDAwLCAweEUwLCAweEZGLCAweDA3LCAweDNFLCAweDAwLCAweEZDLCAweEZGLCAweDA3LCAweDNFLCAweEMwLCAweEZGLCAweEZGLCAweDA3LCAweDNFLCAweEZDLCAweEZGLCAweEZGLCAweDA3LCAweEZFLCAweEZGLCAweEZGLCAweEZGLCAweDAzLCAweEZFLCAweEZGLCAweEZGLCAweDNGLCAweDAwLCAweEZFLCAweEZGLCAweEZGLCAweDAzLCAweDAwLCAweEZFLCAweEZGLCAweDNGLCAweDAwLCAweDAwLCAweEZFLCAweEZGLCAweDA3LCAweDAwLCAweDAwLCAweEZFLCAweDdGLCAweDAwLCAweDAwLCAweDAwLCAweEZFLCAweDA3LCAweDAwLCAweDAwLCAweDAwLCAweDdFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAgLy8gQ29kZSBmb3IgY2hhciA3CisgICAgICAgIDB4MTQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4QzAsIDB4MUYsIDB4QzAsIDB4M0YsIDB4MDAsIDB4RjgsIDB4N0YsIDB4RjgsIDB4RkYsIDB4MDEsIDB4RkMsIDB4RkYsIDB4RkQsIDB4RkYsIDB4MDMsIDB4RkUsIDB4RkYsIDB4RkYsIDB4RkYsIDB4MDcsIDB4RkUsIDB4RkYsIDB4RkYsIDB4RkYsIDB4MDcsIDB4RkUsIDB4RkYsIDB4RkYsIDB4RkYsIDB4MDcsIDB4RkYsIDB4RkYsIDB4RkYsIDB4RkYsIDB4MEYsIDB4N0YsIDB4QzAsIDB4M0YsIDB4QzAsIDB4MEYsIDB4MUYsIDB4ODAsIDB4MEYsIDB4ODAsIDB4MEYsIDB4MUYsIDB4ODAsIDB4MEYsIDB4ODAsIDB4MEYsIDB4MUYsIDB4ODAsIDB4MEYsIDB4ODAsIDB4MEYsIDB4N0YsIDB4QzAsIDB4M0YsIDB4RTAsIDB4MEYsIDB4RkYsIDB4RkYsIDB4RkYsIDB4RkYsIDB4MEYsIDB4RkUsIDB4RkYsIDB4RkYsIDB4RkYsIDB4MDcsIDB4RkUsIDB4RkYsIDB4RkYsIDB4RkYsIDB4MDcsIDB4RkUsIDB4RkYsIDB4RkYsIDB4RkYsIDB4MDcsIDB4RkMsIDB4RkYsIDB4RkQsIDB4RkYsIDB4MDMsIDB4RjgsIDB4N0YsIDB4RjgsIDB4RkYsIDB4MDEsIDB4QzAsIDB4MUYsIDB4QzAsIDB4M0YsIDB4MDAsICAvLyBDb2RlIGZvciBjaGFyIDgKKyAgICAgICAgMHgxMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzQywgMHgwMCwgMHhFMCwgMHhGRiwgMHgwNywgMHhGQywgMHgwMSwgMHhGOCwgMHhGRiwgMHgxRiwgMHhGQywgMHgwMywgMHhGQywgMHhGRiwgMHgzRiwgMHhGQywgMHgwNywgMHhGRSwgMHhGRiwgMHgzRiwgMHhGQywgMHgwNywgMHhGRSwgMHhGRiwgMHg3RiwgMHhGQywgMHgwNywgMHhGRiwgMHhGRiwgMHg3RiwgMHhGQywgMHgwRiwgMHhGRiwgMHhGRiwgMHg3RiwgMHhDMCwgMHgwRiwgMHgzRiwgMHgwMCwgMHg3RSwgMHhDMCwgMHgwRiwgMHgxRiwgMHgwMCwgMHg3QywgMHg4MCwgMHgwRiwgMHgzRiwgMHgwMCwgMHgzRSwgMHhDMCwgMHgwRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHgwRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHhGRiwgMHgwRiwgMHhGRSwgMHhGRiwgMHhGRiwgMHhGRiwgMHgwNywgMHhGRSwgMHhGRiwgMHhGRiwgMHhGRiwgMHgwNywgMHhGQywgMHhGRiwgMHhGRiwgMHhGRiwgMHgwMywgMHhGOCwgMHhGRiwgMHhGRiwgMHhGRiwgMHgwMSwgMHhFMCwgMHhGRiwgMHhGRiwgMHgzRiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCAgIC8vIENvZGUgZm9yIGNoYXIgOQorICAgICAgICB9OworCisKKworCisKKyNlbmRpZiAvKiBCRUJBU19ORVVFMjBYMzZfTlVNQkVSU19IXyAqLwpkaWZmIC0tZ2l0IGEvbGNkL0VhcnRoYm91bmRfMTJ4MTlfNDh0bzU3LmggYi9sY2QvRWFydGhib3VuZF8xMngxOV80OHRvNTcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zN2QxNzQ0Ci0tLSAvZGV2L251bGwKKysrIGIvbGNkL0VhcnRoYm91bmRfMTJ4MTlfNDh0bzU3LmgKQEAgLTAsMCArMSwxOSBAQAorI2lmbmRlZiBFYXJ0aGJvdW5kXzEyeDE5XzQ4dG81N19ICisjZGVmaW5lIEVhcnRoYm91bmRfMTJ4MTlfNDh0bzU3X0gKKworLy8gU2l6ZTogMTJ4MTkKKy8vIENoYXJzOiA0OCB0byA1Nworc3RhdGljIGNvbnN0IGNoYXIgZm9udF9FYXJ0aGJvdW5kXzEyeDE5XzQ4dG81N1tdIFBST0dNRU0gPSB7CisweDAwLCAweGUwLCAweGYwLCAweDM4LCAweDBjLCAweDBjLCAweDBjLCAweDBjLCAweDM4LCAweGY4LCAweGMwLCAweDAwLCAweDAwLCAweDFmLCAweDdmLCAweGUwLCAweDgwLCAweDgwLCAweDgwLCAweDgwLCAweGUwLCAweGZmLCAweDFmLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDAxLCAweDAxLCAweDAxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAgIC8vIENoYXIgJzAnIAorMHgwMCwgMHgxMCwgMHgxOCwgMHgxOCwgMHhmYywgMHhmYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmZiwgMHhmZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgICAvLyBDaGFyICcxJyAKKzB4MDAsIDB4MDgsIDB4MWMsIDB4MGMsIDB4MGMsIDB4MGMsIDB4MGMsIDB4OGMsIDB4ZjgsIDB4ZjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjAsIDB4ZjgsIDB4OWMsIDB4OGMsIDB4ODYsIDB4ODYsIDB4ODMsIDB4ODMsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDAsIDB4MDAsICAgLy8gQ2hhciAnMicgCisweDAwLCAweDA4LCAweDFjLCAweDBjLCAweDBjLCAweDBjLCAweDBjLCAweDhjLCAweGY4LCAweGYwLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweGMwLCAweDgwLCAweDgxLCAweDgzLCAweDgzLCAweGM3LCAweGZmLCAweDdjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDAxLCAweDAxLCAweDAxLCAweDAxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAgIC8vIENoYXIgJzMnIAorMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHhjMCwgMHg3MCwgMHgzOCwgMHhmYywgMHhmYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxYywgMHgxZSwgMHgxYiwgMHgxMSwgMHgxOCwgMHgxMCwgMHhmZiwgMHhmZiwgMHgxMCwgMHgxOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgICAvLyBDaGFyICc0JyAKKzB4MDAsIDB4MDAsIDB4ZjQsIDB4ZmMsIDB4MWMsIDB4MGMsIDB4MGMsIDB4MGMsIDB4MGMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4YzMsIDB4ODMsIDB4ODMsIDB4ODMsIDB4ODMsIDB4YzcsIDB4ZmUsIDB4NzgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsICAgLy8gQ2hhciAnNScgCisweDAwLCAweGMwLCAweGYwLCAweDc4LCAweDFjLCAweDBjLCAweDBjLCAweDBjLCAweDA4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDNmLCAweGZmLCAweGMzLCAweDgzLCAweDgzLCAweDgzLCAweGMzLCAweGZlLCAweDdjLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDAxLCAweDAxLCAweDAxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAgIC8vIENoYXIgJzYnIAorMHgwMCwgMHgwYywgMHgwYywgMHgwYywgMHgwYywgMHg4YywgMHhjYywgMHg3YywgMHgzYywgMHgwYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHhmMCwgMHg3YywgMHgwZiwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgICAvLyBDaGFyICc3JyAKKzB4MDAsIDB4ZjAsIDB4ZjgsIDB4MWMsIDB4MGMsIDB4MGMsIDB4MGMsIDB4MGMsIDB4ZjgsIDB4ZjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjgsIDB4ZmYsIDB4OGYsIDB4MDcsIDB4MDYsIDB4MDYsIDB4OGYsIDB4ZmYsIDB4ZjgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsICAgLy8gQ2hhciAnOCcgCisweDAwLCAweGYwLCAweGY4LCAweDFjLCAweDBjLCAweDBjLCAweDBjLCAweDFjLCAweGY4LCAweGUwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDg3LCAweDhlLCAweDhjLCAweDhjLCAweDhjLCAweGVlLCAweDdmLCAweDFmLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDAxLCAweDAxLCAweDAxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwICAgIC8vIENoYXIgJzknIAorfTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9sY2QvTGliZXJhdGlvbl9TYW5zMTF4MTRfTnVtYmVycy5oIGIvbGNkL0xpYmVyYXRpb25fU2FuczExeDE0X051bWJlcnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMmRlMzg2Ci0tLSAvZGV2L251bGwKKysrIGIvbGNkL0xpYmVyYXRpb25fU2FuczExeDE0X051bWJlcnMuaApAQCAtMCwwICsxLDQyIEBACisvKgorICogTGliZXJhdGlvbl9TYW5zMTF4MTRfTnVtYmVycy5oCisgKgorICogQ3JlYXRlZDogMzAvMDMvMjAxMiAxOjMxOjEwIEFNCisgKiAgQXV0aG9yOiBhbmR5CisgKi8gCisKKworI2lmbmRlZiBMSUJFUkFUSU9OX1NBTlMxMVgxNF9OVU1CRVJTX0hfCisjZGVmaW5lIExJQkVSQVRJT05fU0FOUzExWDE0X05VTUJFUlNfSF8KKworCisvL1dBUk5JTkc6IFRoaXMgRm9udCBSZXF1aXJlIFgtR0xDRCBMaWIuCisvLyAgICAgICAgIFlvdSBjYW4gbm90IHVzZSBpdCB3aXRoIE1pa3JvRSBHTENEIExpYi4KKworLy9Gb250IEdlbmVyYXRlZCBieSBNaWtyb0VsZWt0cm9uaWthIEdMQ0QgRm9udCBDcmVhdG9yIDEuMi4wLjAKKy8vTWlrcm9FbGVrdHJvbmlrYSAyMDExIAorLy9odHRwOi8vd3d3Lm1pa3JvZS5jb20gCisKKy8vR0xDRCBGb250TmFtZSA6IExpYmVyYXRpb25fU2FuczExeDE0IDQ2IHRvIDU3CisvL0dMQ0QgRm9udFNpemUgOiAxMSB4IDE0CisKK3N0YXRpYyBjb25zdCBjaGFyIExpYmVyYXRpb25fU2FuczExeDE0X051bWJlcnNbXSBQUk9HTUVNID0geworICAgICAgICAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDM4LCAweDAwLCAweDM4LCAweDAwLCAweDM4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAgLy8gQ29kZSBmb3IgY2hhciAuCisgICAgICAgIDB4MDUsIDB4MDAsIDB4MzgsIDB4ODAsIDB4M0YsIDB4RkMsIDB4MEYsIDB4RkYsIDB4MDAsIDB4MDcsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsICAvLyBDb2RlIGZvciBjaGFyIC8KKyAgICAgICAgMHgwQSwgMHgwMCwgMHgwMCwgMHhGMCwgMHgwNywgMHhGQywgMHgxRiwgMHhGRSwgMHgzRiwgMHgwRSwgMHgzOCwgMHgwNiwgMHgzMCwgMHgwRSwgMHgzOCwgMHhGRSwgMHgzRiwgMHhGQywgMHgxRiwgMHhGMCwgMHgwNywgMHgwMCwgMHgwMCwgIC8vIENvZGUgZm9yIGNoYXIgMAorICAgICAgICAweDBCLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDE4LCAweDMwLCAweDBDLCAweDMwLCAweDBFLCAweDMwLCAweEZFLCAweDNGLCAweEZFLCAweDNGLCAweEZFLCAweDNGLCAweDAwLCAweDMwLCAweDAwLCAweDMwLCAweDAwLCAweDMwLCAgLy8gQ29kZSBmb3IgY2hhciAxCisgICAgICAgIDB4MEEsIDB4MDAsIDB4MDAsIDB4MTgsIDB4MzgsIDB4MUMsIDB4M0MsIDB4MUUsIDB4M0UsIDB4MDYsIDB4MzcsIDB4ODYsIDB4MzMsIDB4QzYsIDB4MzEsIDB4RkUsIDB4MzEsIDB4RkMsIDB4MzAsIDB4NzgsIDB4MzAsIDB4MDAsIDB4MDAsICAvLyBDb2RlIGZvciBjaGFyIDIKKyAgICAgICAgMHgwQSwgMHgwMCwgMHgwMCwgMHgxOCwgMHgwQywgMHgxQywgMHgxQywgMHgxRSwgMHgzQywgMHhDNiwgMHgzMCwgMHhDNiwgMHgzMCwgMHhDNiwgMHgzMSwgMHhGRSwgMHgzRiwgMHhCQywgMHgxRiwgMHgzQywgMHgwRiwgMHgwMCwgMHgwMCwgIC8vIENvZGUgZm9yIGNoYXIgMworICAgICAgICAweDBCLCAweDAwLCAweDAwLCAweDAwLCAweDA3LCAweEMwLCAweDA3LCAweEUwLCAweDA2LCAweDM4LCAweDA2LCAweDFFLCAweDA2LCAweEZFLCAweDNGLCAweEZFLCAweDNGLCAweEZFLCAweDNGLCAweDAwLCAweDA2LCAweDAwLCAweDA2LCAgLy8gQ29kZSBmb3IgY2hhciA0CisgICAgICAgIDB4MEEsIDB4MDAsIDB4MDAsIDB4RkUsIDB4MEMsIDB4RkUsIDB4MUMsIDB4QzYsIDB4M0MsIDB4NjYsIDB4MzgsIDB4NjYsIDB4MzAsIDB4RTYsIDB4MzgsIDB4RTYsIDB4M0YsIDB4QzYsIDB4MUYsIDB4ODAsIDB4MEYsIDB4MDAsIDB4MDAsICAvLyBDb2RlIGZvciBjaGFyIDUKKyAgICAgICAgMHgwQSwgMHgwMCwgMHgwMCwgMHhGMCwgMHgwNywgMHhGQywgMHgxRiwgMHhGQywgMHgzRiwgMHg4RSwgMHgzOCwgMHhDNiwgMHgzMCwgMHhDNiwgMHgzMCwgMHhDRSwgMHgzRiwgMHg4QywgMHgxRiwgMHgwOCwgMHgwRiwgMHgwMCwgMHgwMCwgIC8vIENvZGUgZm9yIGNoYXIgNgorICAgICAgICAweDBBLCAweDAwLCAweDAwLCAweDA2LCAweDAwLCAweDA2LCAweDAwLCAweDA2LCAweDM4LCAweDA2LCAweDNGLCAweEM2LCAweDNGLCAweEU2LCAweDAzLCAweEZFLCAweDAwLCAweDNFLCAweDAwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAgLy8gQ29kZSBmb3IgY2hhciA3CisgICAgICAgIDB4MEEsIDB4MDAsIDB4MDAsIDB4MzgsIDB4MEYsIDB4RkMsIDB4MUYsIDB4RkUsIDB4M0YsIDB4QzYsIDB4MzAsIDB4QzYsIDB4MzAsIDB4QzYsIDB4MzAsIDB4RkUsIDB4M0YsIDB4RkMsIDB4MUYsIDB4MzgsIDB4MEYsIDB4MDAsIDB4MDAsICAvLyBDb2RlIGZvciBjaGFyIDgKKyAgICAgICAgMHgwQSwgMHgwMCwgMHgwMCwgMHg3OCwgMHgwOCwgMHhGQywgMHgxOCwgMHhGRSwgMHgzOSwgMHg4NiwgMHgzMSwgMHg4NiwgMHgzMSwgMHg4NiwgMHgzOCwgMHhGRSwgMHgxRiwgMHhGQywgMHgxRiwgMHhGMCwgMHgwNywgMHgwMCwgMHgwMCAgIC8vIENvZGUgZm9yIGNoYXIgOQorICAgICAgICB9OworCisKKworCisKKyNlbmRpZiAvKiBMSUJFUkFUSU9OX1NBTlMxMVgxNF9OVU1CRVJTX0hfICovCmRpZmYgLS1naXQgYS9sY2QvTGliZXJhdGlvbl9TYW5zMTV4MjFfTnVtYmVycy5oIGIvbGNkL0xpYmVyYXRpb25fU2FuczE1eDIxX051bWJlcnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMWEzNmY3Ci0tLSAvZGV2L251bGwKKysrIGIvbGNkL0xpYmVyYXRpb25fU2FuczE1eDIxX051bWJlcnMuaApAQCAtMCwwICsxLDQyIEBACisvKgorICogTGliZXJhdGlvbl9TYW5zMTV4MjFfTnVtYmVycy5oCisgKgorICogQ3JlYXRlZDogMzAvMDMvMjAxMiAxOjM0OjMwIEFNCisgKiAgQXV0aG9yOiBhbmR5CisgKi8gCisKKworI2lmbmRlZiBMSUJFUkFUSU9OX1NBTlMxNVgyMV9OVU1CRVJTX0hfCisjZGVmaW5lIExJQkVSQVRJT05fU0FOUzE1WDIxX05VTUJFUlNfSF8KKworCisvL1dBUk5JTkc6IFRoaXMgRm9udCBSZXF1aXJlIFgtR0xDRCBMaWIuCisvLyAgICAgICAgIFlvdSBjYW4gbm90IHVzZSBpdCB3aXRoIE1pa3JvRSBHTENEIExpYi4KKworLy9Gb250IEdlbmVyYXRlZCBieSBNaWtyb0VsZWt0cm9uaWthIEdMQ0QgRm9udCBDcmVhdG9yIDEuMi4wLjAKKy8vTWlrcm9FbGVrdHJvbmlrYSAyMDExIAorLy9odHRwOi8vd3d3Lm1pa3JvZS5jb20gCisKKy8vR0xDRCBGb250TmFtZSA6IExpYmVyYXRpb25fU2FuczE1eDIxIDQ2IHRvIDU3CisvL0dMQ0QgRm9udFNpemUgOiAxNSB4IDIxCisKK3N0YXRpYyBjb25zdCBjaGFyIExpYmVyYXRpb25fU2FuczE1eDIxX051bWJlcnNbXSBQUk9HTUVNID0geworICAgICAgICAweDA2LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDBGLCAweDAwLCAweDAwLCAweDBGLCAweDAwLCAweDAwLCAweDBGLCAweDAwLCAweDAwLCAweDBGLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAgLy8gQ29kZSBmb3IgY2hhciAuCisgICAgICAgIDB4MDcsIDB4MDAsIDB4MDAsIDB4MUUsIDB4MDAsIDB4RTAsIDB4MUYsIDB4MDAsIDB4RkYsIDB4MUYsIDB4RjgsIDB4RkYsIDB4MDMsIDB4RkYsIDB4MUYsIDB4MDAsIDB4RkYsIDB4MDEsIDB4MDAsIDB4MEYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsICAvLyBDb2RlIGZvciBjaGFyIC8KKyAgICAgICAgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhDMCwgMHg3RiwgMHgwMCwgMHhGOCwgMHhGRiwgMHgwMSwgMHhGQywgMHhGRiwgMHgwNywgMHhGQywgMHhGRiwgMHgwNywgMHgzRSwgMHg4MCwgMHgwRiwgMHgwRSwgMHgwMCwgMHgwRSwgMHgwRSwgMHgwMCwgMHgwRSwgMHgwRSwgMHgwMCwgMHgwRSwgMHgxRSwgMHg4MCwgMHgwRiwgMHhGQywgMHhGRiwgMHgwNywgMHhGQywgMHhGRiwgMHgwNywgMHhGOCwgMHhGRiwgMHgwMSwgMHhDMCwgMHg3RiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgIC8vIENvZGUgZm9yIGNoYXIgMAorICAgICAgICAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDcwLCAweDAwLCAweDBFLCAweDM4LCAweDAwLCAweDBFLCAweDM4LCAweDAwLCAweDBFLCAweDFDLCAweDAwLCAweDBFLCAweDBFLCAweDAwLCAweDBFLCAweEZFLCAweEZGLCAweDBGLCAweEZFLCAweEZGLCAweDBGLCAweEZFLCAweEZGLCAweDBGLCAweEZFLCAweEZGLCAweDBGLCAweDAwLCAweDAwLCAweDBFLCAweDAwLCAweDAwLCAweDBFLCAweDAwLCAweDAwLCAweDBFLCAweDAwLCAweDAwLCAweDBFLCAweDAwLCAweDAwLCAweDAwLCAgLy8gQ29kZSBmb3IgY2hhciAxCisgICAgICAgIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjAsIDB4MDAsIDB4MEYsIDB4NzgsIDB4ODAsIDB4MEYsIDB4N0MsIDB4QzAsIDB4MEYsIDB4N0MsIDB4RTAsIDB4MEYsIDB4MUUsIDB4RjAsIDB4MEYsIDB4MEUsIDB4RjgsIDB4MEUsIDB4MEUsIDB4N0MsIDB4MEUsIDB4MEUsIDB4M0UsIDB4MEUsIDB4MUUsIDB4MUYsIDB4MEUsIDB4RkUsIDB4MEYsIDB4MEUsIDB4RkMsIDB4MDcsIDB4MEUsIDB4RjgsIDB4MDMsIDB4MEUsIDB4RjAsIDB4MDEsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsICAvLyBDb2RlIGZvciBjaGFyIDIKKyAgICAgICAgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzMCwgMHg4MCwgMHgwMSwgMHgzOCwgMHg4MCwgMHgwMywgMHgzQywgMHg4MCwgMHgwNywgMHgzQywgMHg4MCwgMHgwRiwgMHgxRSwgMHgwMCwgMHgwRiwgMHgwRSwgMHgwRSwgMHgwRSwgMHgwRSwgMHgwRSwgMHgwRSwgMHgwRSwgMHgwRSwgMHgwRSwgMHgxRSwgMHgxRiwgMHgwRiwgMHhGRSwgMHhGRiwgMHgwRiwgMHhGQywgMHhGQiwgMHgwNywgMHhGQywgMHhGOSwgMHgwMywgMHhGMCwgMHhFMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgIC8vIENvZGUgZm9yIGNoYXIgMworICAgICAgICAweDBGLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEYwLCAweDAwLCAweDAwLCAweEY4LCAweDAwLCAweDAwLCAweEZFLCAweDAwLCAweDgwLCAweEVGLCAweDAwLCAweEMwLCAweEU3LCAweDAwLCAweEYwLCAweEUxLCAweDAwLCAweDdDLCAweEUwLCAweDAwLCAweDNFLCAweEUwLCAweDAwLCAweEZFLCAweEZGLCAweDBGLCAweEZFLCAweEZGLCAweDBGLCAweEZFLCAweEZGLCAweDBGLCAweEZFLCAweEZGLCAweDBGLCAweDAwLCAweEUwLCAweDAwLCAweDAwLCAweEUwLCAweDAwLCAgLy8gQ29kZSBmb3IgY2hhciA0CisgICAgICAgIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDEsIDB4RjgsIDB4ODcsIDB4MDMsIDB4RkUsIDB4ODcsIDB4MDcsIDB4RkUsIDB4ODcsIDB4MEYsIDB4RkUsIDB4MDcsIDB4MEYsIDB4MEUsIDB4MDMsIDB4MEUsIDB4OEUsIDB4MDMsIDB4MEUsIDB4OEUsIDB4MDMsIDB4MEUsIDB4OEUsIDB4MDcsIDB4MEYsIDB4OEUsIDB4RkYsIDB4MDcsIDB4MEUsIDB4RkYsIDB4MDcsIDB4MEUsIDB4RkUsIDB4MDMsIDB4MDAsIDB4RkMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsICAvLyBDb2RlIGZvciBjaGFyIDUKKyAgICAgICAgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhDMCwgMHg3RiwgMHgwMCwgMHhGMCwgMHhGRiwgMHgwMSwgMHhGOCwgMHhGRiwgMHgwNywgMHhGQywgMHhGRiwgMHgwNywgMHgzRSwgMHgwRSwgMHgwRiwgMHgwRSwgMHgwNywgMHgwRSwgMHgwRSwgMHgwNywgMHgwRSwgMHgwRSwgMHgwNywgMHgwRSwgMHgxRSwgMHgwRiwgMHgwRiwgMHgzRSwgMHhGRiwgMHgwRiwgMHgzQywgMHhGRSwgMHgwNywgMHgzOCwgMHhGRSwgMHgwMywgMHgzMCwgMHhGOCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgIC8vIENvZGUgZm9yIGNoYXIgNgorICAgICAgICAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweDBFLCAweDAwLCAweDAwLCAweDBFLCAweDAwLCAweDAwLCAweDBFLCAweDAwLCAweDAwLCAweDBFLCAweDAwLCAweDBGLCAweDBFLCAweEUwLCAweDBGLCAweDBFLCAweEY4LCAweDBGLCAweDBFLCAweEZFLCAweDBGLCAweDhFLCAweEZGLCAweDAwLCAweENFLCAweDBGLCAweDAwLCAweEZFLCAweDAzLCAweDAwLCAweEZFLCAweDAwLCAweDAwLCAweDNFLCAweDAwLCAweDAwLCAweDFFLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAgLy8gQ29kZSBmb3IgY2hhciA3CisgICAgICAgIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4RjAsIDB4RTAsIDB4MDEsIDB4RjgsIDB4RkIsIDB4MDMsIDB4RkMsIDB4RkIsIDB4MDcsIDB4RkUsIDB4RkYsIDB4MEYsIDB4MUUsIDB4MUYsIDB4MEYsIDB4MEUsIDB4MEUsIDB4MEUsIDB4MEUsIDB4MEUsIDB4MEUsIDB4MEUsIDB4MEUsIDB4MEUsIDB4MUUsIDB4MUYsIDB4MEYsIDB4RkUsIDB4RkYsIDB4MEYsIDB4RkMsIDB4RkIsIDB4MDcsIDB4RkMsIDB4RkIsIDB4MDMsIDB4RjAsIDB4RTAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsICAvLyBDb2RlIGZvciBjaGFyIDgKKyAgICAgICAgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhGMCwgMHg4MywgMHgwMSwgMHhGOCwgMHg4NywgMHgwMywgMHhGQywgMHg4RiwgMHgwNywgMHhGRSwgMHg5RiwgMHgwRiwgMHgxRSwgMHgxRSwgMHgwRiwgMHgwRSwgMHgxQywgMHgwRSwgMHgwRSwgMHgxQywgMHgwRSwgMHgwRSwgMHgxQywgMHgwRSwgMHgxRSwgMHg4RSwgMHgwRiwgMHhGQywgMHhGRiwgMHgwNywgMHhGQywgMHhGRiwgMHgwMywgMHhGOCwgMHhGRiwgMHgwMSwgMHhDMCwgMHg3RiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCAgIC8vIENvZGUgZm9yIGNoYXIgOQorICAgICAgICB9OworCisKKworCisKKyNlbmRpZiAvKiBMSUJFUkFUSU9OX1NBTlMxNVgyMV9OVU1CRVJTX0hfICovCmRpZmYgLS1naXQgYS9sY2QvTGliZXJhdGlvbl9TYW5zMTd4MTdfQWxwaGEuaCBiL2xjZC9MaWJlcmF0aW9uX1NhbnMxN3gxN19BbHBoYS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzYzcyNjQKLS0tIC9kZXYvbnVsbAorKysgYi9sY2QvTGliZXJhdGlvbl9TYW5zMTd4MTdfQWxwaGEuaApAQCAtMCwwICsxLDU0IEBACisvKgorICogTGliZXJhdGlvbl9TYW5zMTd4MTdfQWxwaGEuaAorICoKKyAqIENyZWF0ZWQ6IDMwLzAzLzIwMTIgMToyOTo1NSBBTQorICogIEF1dGhvcjogYW5keQorICovIAorCisKKyNpZm5kZWYgTElCRVJBVElPTl9TQU5TMTdYMTdfQUxQSEFfSF8KKyNkZWZpbmUgTElCRVJBVElPTl9TQU5TMTdYMTdfQUxQSEFfSF8KKworLy9XQVJOSU5HOiBUaGlzIEZvbnQgUmVxdWlyZSBYLUdMQ0QgTGliLgorLy8gICAgICAgICBZb3UgY2FuIG5vdCB1c2UgaXQgd2l0aCBNaWtyb0UgR0xDRCBMaWIuCisKKy8vRm9udCBHZW5lcmF0ZWQgYnkgTWlrcm9FbGVrdHJvbmlrYSBHTENEIEZvbnQgQ3JlYXRvciAxLjIuMC4wCisvL01pa3JvRWxla3Ryb25pa2EgMjAxMSAKKy8vaHR0cDovL3d3dy5taWtyb2UuY29tIAorCisvL0dMQ0QgRm9udE5hbWUgOiBMaWJlcmF0aW9uX1NhbnMxN3gxNyA0NiB0byA5MAorLy9HTENEIEZvbnRTaXplIDogMTcgeCAxNworCitzdGF0aWMgY29uc3QgY2hhciBMaWJlcmF0aW9uX1NhbnMxN3gxN19BbHBoYVtdIFBST0dNRU0gPSB7CisgICAgICAgIDB4MEQsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MUUsIDB4MDAsIDB4QzAsIDB4MUYsIDB4MDAsIDB4RjgsIDB4MEYsIDB4MDAsIDB4RkYsIDB4MDMsIDB4MDAsIDB4MUYsIDB4MDMsIDB4MDAsIDB4MDMsIDB4MDMsIDB4MDAsIDB4MUYsIDB4MDMsIDB4MDAsIDB4RkYsIDB4MDMsIDB4MDAsIDB4RjgsIDB4MEYsIDB4MDAsIDB4QzAsIDB4MUYsIDB4MDAsIDB4MDAsIDB4MUUsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsICAvLyBDb2RlIGZvciBjaGFyIEEKKyAgICAgICAgMHgwRCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhGRiwgMHgxRiwgMHgwMCwgMHhGRiwgMHgxRiwgMHgwMCwgMHhGRiwgMHgxRiwgMHgwMCwgMHg2MywgMHgxOCwgMHgwMCwgMHg2MywgMHgxOCwgMHgwMCwgMHg2MywgMHgxOCwgMHgwMCwgMHg2MywgMHgxOCwgMHgwMCwgMHg2MywgMHgxOCwgMHgwMCwgMHhGRiwgMHgxQywgMHgwMCwgMHhGRSwgMHgxRiwgMHgwMCwgMHhERSwgMHgwRiwgMHgwMCwgMHg4MCwgMHgwNywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgIC8vIENvZGUgZm9yIGNoYXIgQgorICAgICAgICAweDBELCAweDAwLCAweDAwLCAweDAwLCAweEY4LCAweDAxLCAweDAwLCAweEZDLCAweDA3LCAweDAwLCAweEZFLCAweDBGLCAweDAwLCAweDBGLCAweDBFLCAweDAwLCAweDAzLCAweDE4LCAweDAwLCAweDAzLCAweDE4LCAweDAwLCAweDAzLCAweDE4LCAweDAwLCAweDAzLCAweDE4LCAweDAwLCAweDA3LCAweDFDLCAweDAwLCAweDBFLCAweDBFLCAweDAwLCAweDBFLCAweDBFLCAweDAwLCAweDA0LCAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAgLy8gQ29kZSBmb3IgY2hhciBDCisgICAgICAgIDB4MEQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4RkYsIDB4MUYsIDB4MDAsIDB4RkYsIDB4MUYsIDB4MDAsIDB4RkYsIDB4MUYsIDB4MDAsIDB4MDMsIDB4MTgsIDB4MDAsIDB4MDMsIDB4MTgsIDB4MDAsIDB4MDMsIDB4MTgsIDB4MDAsIDB4MDMsIDB4MTgsIDB4MDAsIDB4MDcsIDB4MUMsIDB4MDAsIDB4MEUsIDB4MEUsIDB4MDAsIDB4RkUsIDB4MEYsIDB4MDAsIDB4RkMsIDB4MDcsIDB4MDAsIDB4RjAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsICAvLyBDb2RlIGZvciBjaGFyIEQKKyAgICAgICAgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHhGRiwgMHgxRiwgMHgwMCwgMHhGRiwgMHgxRiwgMHgwMCwgMHhGRiwgMHgxRiwgMHgwMCwgMHg2MywgMHgxOCwgMHgwMCwgMHg2MywgMHgxOCwgMHgwMCwgMHg2MywgMHgxOCwgMHgwMCwgMHg2MywgMHgxOCwgMHgwMCwgMHg2MywgMHgxOCwgMHgwMCwgMHg2MywgMHgxOCwgMHgwMCwgMHg2MywgMHgxOCwgMHgwMCwgMHgwMywgMHgxOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgIC8vIENvZGUgZm9yIGNoYXIgRQorICAgICAgICAweDBCLCAweDAwLCAweDAwLCAweDAwLCAweEZGLCAweDFGLCAweDAwLCAweEZGLCAweDFGLCAweDAwLCAweEZGLCAweDFGLCAweDAwLCAweDYzLCAweDAwLCAweDAwLCAweDYzLCAweDAwLCAweDAwLCAweDYzLCAweDAwLCAweDAwLCAweDYzLCAweDAwLCAweDAwLCAweDYzLCAweDAwLCAweDAwLCAweDYzLCAweDAwLCAweDAwLCAweDYzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAgLy8gQ29kZSBmb3IgY2hhciBGCisgICAgICAgIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4RjAsIDB4MDEsIDB4MDAsIDB4RkMsIDB4MDcsIDB4MDAsIDB4RkUsIDB4MEYsIDB4MDAsIDB4MEUsIDB4MEUsIDB4MDAsIDB4MDcsIDB4MUMsIDB4MDAsIDB4MDMsIDB4MTgsIDB4MDAsIDB4MDMsIDB4MTgsIDB4MDAsIDB4QzMsIDB4MTgsIDB4MDAsIDB4QzMsIDB4MTgsIDB4MDAsIDB4QzcsIDB4MUMsIDB4MDAsIDB4Q0UsIDB4MEYsIDB4MDAsIDB4Q0UsIDB4MEYsIDB4MDAsIDB4QzQsIDB4MDcsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsICAvLyBDb2RlIGZvciBjaGFyIEcKKyAgICAgICAgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHhGRiwgMHgxRiwgMHgwMCwgMHhGRiwgMHgxRiwgMHgwMCwgMHhGRiwgMHgxRiwgMHgwMCwgMHg2MCwgMHgwMCwgMHgwMCwgMHg2MCwgMHgwMCwgMHgwMCwgMHg2MCwgMHgwMCwgMHgwMCwgMHg2MCwgMHgwMCwgMHgwMCwgMHg2MCwgMHgwMCwgMHgwMCwgMHhGRiwgMHgxRiwgMHgwMCwgMHhGRiwgMHgxRiwgMHgwMCwgMHhGRiwgMHgxRiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgIC8vIENvZGUgZm9yIGNoYXIgSAorICAgICAgICAweDA0LCAweDAwLCAweDAwLCAweDAwLCAweEZGLCAweDFGLCAweDAwLCAweEZGLCAweDFGLCAweDAwLCAweEZGLCAweDFGLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAgLy8gQ29kZSBmb3IgY2hhciBJCisgICAgICAgIDB4MEEsIDB4MDAsIDB4MDYsIDB4MDAsIDB4MDAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MUUsIDB4MDAsIDB4MDAsIDB4MUMsIDB4MDAsIDB4MDMsIDB4MTgsIDB4MDAsIDB4MDMsIDB4MTgsIDB4MDAsIDB4MDMsIDB4MUMsIDB4MDAsIDB4RkYsIDB4MUYsIDB4MDAsIDB4RkYsIDB4MEYsIDB4MDAsIDB4RkYsIDB4MDcsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsICAvLyBDb2RlIGZvciBjaGFyIEoKKyAgICAgICAgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhGRiwgMHgxRiwgMHgwMCwgMHhGRiwgMHgxRiwgMHgwMCwgMHhGRiwgMHgxRiwgMHgwMCwgMHhFMCwgMHgwMCwgMHgwMCwgMHg2MCwgMHgwMCwgMHgwMCwgMHg3MCwgMHgwMCwgMHgwMCwgMHhGOCwgMHgwMSwgMHgwMCwgMHhEQywgMHgwMywgMHgwMCwgMHg4RSwgMHgwNywgMHgwMCwgMHgwNywgMHgwRSwgMHgwMCwgMHgwMywgMHgxQywgMHgwMCwgMHgwMSwgMHgxOCwgMHgwMCwgMHgwMSwgMHgxMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgIC8vIENvZGUgZm9yIGNoYXIgSworICAgICAgICAweDBCLCAweDAwLCAweDAwLCAweDAwLCAweEZGLCAweDFGLCAweDAwLCAweEZGLCAweDFGLCAweDAwLCAweEZGLCAweDFGLCAweDAwLCAweDAwLCAweDE4LCAweDAwLCAweDAwLCAweDE4LCAweDAwLCAweDAwLCAweDE4LCAweDAwLCAweDAwLCAweDE4LCAweDAwLCAweDAwLCAweDE4LCAweDAwLCAweDAwLCAweDE4LCAweDAwLCAweDAwLCAweDE4LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAgLy8gQ29kZSBmb3IgY2hhciBMCisgICAgICAgIDB4MTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4RkYsIDB4MUYsIDB4MDAsIDB4RkYsIDB4MUYsIDB4MDAsIDB4RkYsIDB4MUYsIDB4MDAsIDB4MEYsIDB4MDAsIDB4MDAsIDB4N0UsIDB4MDAsIDB4MDAsIDB4RjAsIDB4MDMsIDB4MDAsIDB4ODAsIDB4MUYsIDB4MDAsIDB4MDAsIDB4MUMsIDB4MDAsIDB4ODAsIDB4MUYsIDB4MDAsIDB4RjAsIDB4MDMsIDB4MDAsIDB4N0UsIDB4MDAsIDB4MDAsIDB4MEYsIDB4MDAsIDB4MDAsIDB4RkYsIDB4MUYsIDB4MDAsIDB4RkYsIDB4MUYsIDB4MDAsIDB4RkYsIDB4MUYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsICAvLyBDb2RlIGZvciBjaGFyIE0KKyAgICAgICAgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHhGRiwgMHgxRiwgMHgwMCwgMHhGRiwgMHgxRiwgMHgwMCwgMHhGRiwgMHgxRiwgMHgwMCwgMHgxRiwgMHgwMCwgMHgwMCwgMHg3QywgMHgwMCwgMHgwMCwgMHhGMCwgMHgwMSwgMHgwMCwgMHhDMCwgMHgwNywgMHgwMCwgMHgwMCwgMHgxRSwgMHgwMCwgMHhGRiwgMHgxRiwgMHgwMCwgMHhGRiwgMHgxRiwgMHgwMCwgMHhGRiwgMHgxRiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgIC8vIENvZGUgZm9yIGNoYXIgTgorICAgICAgICAweDBFLCAweDAwLCAweDAwLCAweDAwLCAweEYwLCAweDAxLCAweDAwLCAweEZDLCAweDA3LCAweDAwLCAweEZFLCAweDBGLCAweDAwLCAweDBFLCAweDBFLCAweDAwLCAweDA3LCAweDFDLCAweDAwLCAweDAzLCAweDE4LCAweDAwLCAweDAzLCAweDE4LCAweDAwLCAweDAzLCAweDE4LCAweDAwLCAweDA3LCAweDFDLCAweDAwLCAweDBFLCAweDBFLCAweDAwLCAweEZFLCAweDBGLCAweDAwLCAweEZDLCAweDA3LCAweDAwLCAweEYwLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAgLy8gQ29kZSBmb3IgY2hhciBPCisgICAgICAgIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4RkYsIDB4MUYsIDB4MDAsIDB4RkYsIDB4MUYsIDB4MDAsIDB4RkYsIDB4MUYsIDB4MDAsIDB4NjMsIDB4MDAsIDB4MDAsIDB4NjMsIDB4MDAsIDB4MDAsIDB4NjMsIDB4MDAsIDB4MDAsIDB4NjMsIDB4MDAsIDB4MDAsIDB4NjMsIDB4MDAsIDB4MDAsIDB4N0YsIDB4MDAsIDB4MDAsIDB4M0UsIDB4MDAsIDB4MDAsIDB4MUMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsICAvLyBDb2RlIGZvciBjaGFyIFAKKyAgICAgICAgMHgwRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhGMCwgMHgwMywgMHgwMCwgMHhGQywgMHgwNywgMHgwMCwgMHhGRSwgMHgwRiwgMHgwMCwgMHgwRSwgMHgxRSwgMHgwMCwgMHgwNywgMHgxQywgMHgwMCwgMHgwMywgMHgzOCwgMHgwMCwgMHgwMywgMHhGOCwgMHgwMCwgMHgwMywgMHhGOCwgMHgwMSwgMHgwNywgMHhEQywgMHgwMSwgMHgwRSwgMHg5RSwgMHgwMSwgMHhGRSwgMHg4RiwgMHgwMSwgMHhGQywgMHg4NywgMHgwMSwgMHhGMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgIC8vIENvZGUgZm9yIGNoYXIgUQorICAgICAgICAweDBELCAweDAwLCAweDAwLCAweDAwLCAweEZGLCAweDFGLCAweDAwLCAweEZGLCAweDFGLCAweDAwLCAweEZGLCAweDFGLCAweDAwLCAweDYzLCAweDAwLCAweDAwLCAweDYzLCAweDAwLCAweDAwLCAweDYzLCAweDAwLCAweDAwLCAweEUzLCAweDAwLCAweDAwLCAweEUzLCAweDAzLCAweDAwLCAweEJGLCAweDBGLCAweDAwLCAweDNFLCAweDFGLCAweDAwLCAweDFDLCAweDFDLCAweDAwLCAweDAwLCAweDEwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAgLy8gQ29kZSBmb3IgY2hhciBSCisgICAgICAgIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDYsIDB4MDAsIDB4MUMsIDB4MEUsIDB4MDAsIDB4M0UsIDB4MEUsIDB4MDAsIDB4N0YsIDB4MUMsIDB4MDAsIDB4NzMsIDB4MTgsIDB4MDAsIDB4NjMsIDB4MTgsIDB4MDAsIDB4RTMsIDB4MTgsIDB4MDAsIDB4RTcsIDB4MTgsIDB4MDAsIDB4Q0YsIDB4MUYsIDB4MDAsIDB4Q0UsIDB4MEYsIDB4MDAsIDB4OEMsIDB4MDcsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsICAvLyBDb2RlIGZvciBjaGFyIFMKKyAgICAgICAgMHgwQywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMywgMHgwMCwgMHgwMCwgMHhGRiwgMHgxRiwgMHgwMCwgMHhGRiwgMHgxRiwgMHgwMCwgMHhGRiwgMHgxRiwgMHgwMCwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgIC8vIENvZGUgZm9yIGNoYXIgVAorICAgICAgICAweDBDLCAweDAwLCAweDAwLCAweDAwLCAweEZGLCAweDAzLCAweDAwLCAweEZGLCAweDBGLCAweDAwLCAweEZGLCAweDBGLCAweDAwLCAweDAwLCAweDFDLCAweDAwLCAweDAwLCAweDE4LCAweDAwLCAweDAwLCAweDE4LCAweDAwLCAweDAwLCAweDE4LCAweDAwLCAweDAwLCAweDFDLCAweDAwLCAweEZGLCAweDBGLCAweDAwLCAweEZGLCAweDBGLCAweDAwLCAweEZGLCAweDAzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAgLy8gQ29kZSBmb3IgY2hhciBVCisgICAgICAgIDB4MEQsIDB4MDMsIDB4MDAsIDB4MDAsIDB4MEYsIDB4MDAsIDB4MDAsIDB4N0YsIDB4MDAsIDB4MDAsIDB4RkMsIDB4MDEsIDB4MDAsIDB4RTAsIDB4MDcsIDB4MDAsIDB4MDAsIDB4MUYsIDB4MDAsIDB4MDAsIDB4MTgsIDB4MDAsIDB4MDAsIDB4MUYsIDB4MDAsIDB4RTAsIDB4MEYsIDB4MDAsIDB4RjgsIDB4MDEsIDB4MDAsIDB4N0YsIDB4MDAsIDB4MDAsIDB4MEYsIDB4MDAsIDB4MDAsIDB4MDMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsICAvLyBDb2RlIGZvciBjaGFyIFYKKyAgICAgICAgMHgxMSwgMHgwNywgMHgwMCwgMHgwMCwgMHg3RiwgMHgwMCwgMHgwMCwgMHhGRiwgMHgwNywgMHgwMCwgMHhGMCwgMHgxRiwgMHgwMCwgMHgwMCwgMHgxRSwgMHgwMCwgMHhDMCwgMHgxRiwgMHgwMCwgMHhGQywgMHgwRiwgMHgwMCwgMHhGRiwgMHgwMCwgMHgwMCwgMHgwNywgMHgwMCwgMHgwMCwgMHhGRiwgMHgwMCwgMHgwMCwgMHhGQywgMHgwRiwgMHgwMCwgMHhDMCwgMHgxRiwgMHgwMCwgMHgwMCwgMHgxRSwgMHgwMCwgMHhGMCwgMHgxRiwgMHgwMCwgMHhGRiwgMHgwNywgMHgwMCwgMHg3RiwgMHgwMCwgMHgwMCwgMHgwNywgMHgwMCwgMHgwMCwgIC8vIENvZGUgZm9yIGNoYXIgVworICAgICAgICAweDBELCAweDAxLCAweDEwLCAweDAwLCAweDAzLCAweDE4LCAweDAwLCAweDA3LCAweDFDLCAweDAwLCAweDFFLCAweDBGLCAweDAwLCAweEJDLCAweDA3LCAweDAwLCAweEYwLCAweDAxLCAweDAwLCAweEUwLCAweDAwLCAweDAwLCAweEYwLCAweDAxLCAweDAwLCAweEJDLCAweDA3LCAweDAwLCAweDFFLCAweDBGLCAweDAwLCAweDBGLCAweDFFLCAweDAwLCAweDAzLCAweDE4LCAweDAwLCAweDAxLCAweDEwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAgLy8gQ29kZSBmb3IgY2hhciBYCisgICAgICAgIDB4MEMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDcsIDB4MDAsIDB4MDAsIDB4MUYsIDB4MDAsIDB4MDAsIDB4N0MsIDB4MDAsIDB4MDAsIDB4RjAsIDB4MUYsIDB4MDAsIDB4QzAsIDB4MUYsIDB4MDAsIDB4RjAsIDB4MUYsIDB4MDAsIDB4N0MsIDB4MDAsIDB4MDAsIDB4MUYsIDB4MDAsIDB4MDAsIDB4MDcsIDB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsICAvLyBDb2RlIGZvciBjaGFyIFkKKyAgICAgICAgMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHgxQywgMHgwMCwgMHgwMywgMHgxRSwgMHgwMCwgMHg4MywgMHgxRiwgMHgwMCwgMHhDMywgMHgxQiwgMHgwMCwgMHhGMywgMHgxOSwgMHgwMCwgMHg3QiwgMHgxOCwgMHgwMCwgMHgzRiwgMHgxOCwgMHgwMCwgMHgwRiwgMHgxOCwgMHgwMCwgMHgwNywgMHgxOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCAgIC8vIENvZGUgZm9yIGNoYXIgWgorICAgICAgICB9OworCisKKworCisjZW5kaWYgLyogTElCRVJBVElPTl9TQU5TMTdYMTdfQUxQSEFfSF8gKi8KZGlmZiAtLWdpdCBhL2xjZC9MaWJlcmF0aW9uX1NhbnMyMHgyOF9OdW1iZXJzLmggYi9sY2QvTGliZXJhdGlvbl9TYW5zMjB4MjhfTnVtYmVycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFmMjA0YjgKLS0tIC9kZXYvbnVsbAorKysgYi9sY2QvTGliZXJhdGlvbl9TYW5zMjB4MjhfTnVtYmVycy5oCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBMaWJlcmF0aW9uX1NhbnMyMHgyOF9OdW1iZXJzLmgKKyAqCisgKiBDcmVhdGVkOiAzMC8wMy8yMDEyIDE6NDE6MDUgQU0KKyAqICBBdXRob3I6IGFuZHkKKyAqLyAKKworCisjaWZuZGVmIExJQkVSQVRJT05fU0FOUzIwWDI4X05VTUJFUlNfSF8KKyNkZWZpbmUgTElCRVJBVElPTl9TQU5TMjBYMjhfTlVNQkVSU19IXworCisvL1dBUk5JTkc6IFRoaXMgRm9udCBSZXF1aXJlIFgtR0xDRCBMaWIuCisvLyAgICAgICAgIFlvdSBjYW4gbm90IHVzZSBpdCB3aXRoIE1pa3JvRSBHTENEIExpYi4KKworLy9Gb250IEdlbmVyYXRlZCBieSBNaWtyb0VsZWt0cm9uaWthIEdMQ0QgRm9udCBDcmVhdG9yIDEuMi4wLjAKKy8vTWlrcm9FbGVrdHJvbmlrYSAyMDExIAorLy9odHRwOi8vd3d3Lm1pa3JvZS5jb20gCisKKy8vR0xDRCBGb250TmFtZSA6IExpYmVyYXRpb25fU2FuczIweDI4X051bWJlcnMKKy8vR0xDRCBGb250U2l6ZSA6IDIwIHggMjgKKworc3RhdGljIGNvbnN0IGNoYXIgTGliZXJhdGlvbl9TYW5zMjB4MjhfTnVtYmVyc1tdIFBST0dNRU0gPSB7CisgICAgICAgIDB4MDcsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4RTAsIDB4MDcsIDB4MDAsIDB4MDAsIDB4RTAsIDB4MDcsIDB4MDAsIDB4MDAsIDB4RTAsIDB4MDcsIDB4MDAsIDB4MDAsIDB4RTAsIDB4MDcsIDB4MDAsIDB4MDAsIDB4RTAsIDB4MDcsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsICAvLyBDb2RlIGZvciBjaGFyIC4KKyAgICAgICAgMHgwQSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwRSwgMHgwMCwgMHgwMCwgMHhGMCwgMHgwRiwgMHgwMCwgMHgwMCwgMHhGRiwgMHgwRiwgMHgwMCwgMHhGOCwgMHhGRiwgMHgwRiwgMHg4MCwgMHhGRiwgMHhGRiwgMHgwMywgMHhGQywgMHhGRiwgMHgzRiwgMHgwMCwgMHhGRiwgMHhGRiwgMHgwMSwgMHgwMCwgMHhGRiwgMHgxRiwgMHgwMCwgMHgwMCwgMHhGRiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgIC8vIENvZGUgZm9yIGNoYXIgLworICAgICAgICAweDE0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEZFLCAweDBGLCAweDAwLCAweEMwLCAweEZGLCAweDNGLCAweDAwLCAweEUwLCAweEZGLCAweEZGLCAweDAwLCAweEYwLCAweEZGLCAweEZGLCAweDAxLCAweEY4LCAweEZGLCAweEZGLCAweDAzLCAweEY4LCAweDAxLCAweEYwLCAweDAzLCAweDdDLCAweDAwLCAweEMwLCAweDA3LCAweDNDLCAweDAwLCAweDgwLCAweDA3LCAweDNDLCAweDAwLCAweDgwLCAweDA3LCAweDNDLCAweDAwLCAweDgwLCAweDA3LCAweDNDLCAweDAwLCAweDgwLCAweDA3LCAweDNDLCAweDAwLCAweDgwLCAweDA3LCAweDdDLCAweDAwLCAweEMwLCAweDA3LCAweEY4LCAweDAxLCAweEYwLCAweDAzLCAweEY4LCAweEZGLCAweEZGLCAweDAzLCAweEYwLCAweEZGLCAweEZGLCAweDAxLCAweEUwLCAweEZGLCAweEZGLCAweDAwLCAweEMwLCAweEZGLCAweDNGLCAweDAwLCAweDAwLCAweEZFLCAweDBGLCAweDAwLCAgLy8gQ29kZSBmb3IgY2hhciAwCisgICAgICAgIDB4MTQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4QzAsIDB4MDMsIDB4ODAsIDB4MDcsIDB4RTAsIDB4MDEsIDB4ODAsIDB4MDcsIDB4RjAsIDB4MDEsIDB4ODAsIDB4MDcsIDB4RjAsIDB4MDAsIDB4ODAsIDB4MDcsIDB4NzgsIDB4MDAsIDB4ODAsIDB4MDcsIDB4NzgsIDB4MDAsIDB4ODAsIDB4MDcsIDB4RkMsIDB4RkYsIDB4RkYsIDB4MDcsIDB4RkMsIDB4RkYsIDB4RkYsIDB4MDcsIDB4RkMsIDB4RkYsIDB4RkYsIDB4MDcsIDB4RkMsIDB4RkYsIDB4RkYsIDB4MDcsIDB4RkMsIDB4RkYsIDB4RkYsIDB4MDcsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDcsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDcsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDcsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDcsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDcsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDcsICAvLyBDb2RlIGZvciBjaGFyIDEKKyAgICAgICAgMHgxNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHg4MCwgMHgwNywgMHhFMCwgMHgwMywgMHhFMCwgMHgwNywgMHhGMCwgMHgwMywgMHhGMCwgMHgwNywgMHhGMCwgMHgwMywgMHhGOCwgMHgwNywgMHhGOCwgMHgwMywgMHhGQywgMHgwNywgMHhGOCwgMHgwMCwgMHhGRSwgMHgwNywgMHg3QywgMHgwMCwgMHhCRSwgMHgwNywgMHgzQywgMHgwMCwgMHg5RiwgMHgwNywgMHgzQywgMHg4MCwgMHg4RiwgMHgwNywgMHgzQywgMHg4MCwgMHg4NywgMHgwNywgMHgzQywgMHhDMCwgMHg4NywgMHgwNywgMHgzQywgMHhFMCwgMHg4MywgMHgwNywgMHg3QywgMHhGMCwgMHg4MSwgMHgwNywgMHg3QywgMHhGOCwgMHg4MSwgMHgwNywgMHhGOCwgMHhGRiwgMHg4MCwgMHgwNywgMHhGOCwgMHg3RiwgMHg4MCwgMHgwNywgMHhGMCwgMHgzRiwgMHg4MCwgMHgwNywgMHhFMCwgMHgxRiwgMHg4MCwgMHgwNywgMHhDMCwgMHgwNywgMHg4MCwgMHgwNywgIC8vIENvZGUgZm9yIGNoYXIgMgorICAgICAgICAweDE0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDAxLCAweDMwLCAweDAwLCAweEUwLCAweDAxLCAweEYwLCAweDAwLCAweEYwLCAweDAxLCAweEYwLCAweDAxLCAweEY4LCAweDAxLCAweEYwLCAweDAzLCAweEY4LCAweDAxLCAweEYwLCAweDAzLCAweEZDLCAweDAwLCAweEUwLCAweDAzLCAweDdDLCAweDAwLCAweEMwLCAweDA3LCAweDNDLCAweEYwLCAweDgwLCAweDA3LCAweDNDLCAweEYwLCAweDgwLCAweDA3LCAweDNDLCAweEYwLCAweDgwLCAweDA3LCAweDNDLCAweEYwLCAweDgwLCAweDA3LCAweDNDLCAweEY4LCAweDgwLCAweDA3LCAweDdDLCAweEY4LCAweEMxLCAweDA3LCAweEY4LCAweEZGLCAweEUzLCAweDA3LCAweEY4LCAweERGLCAweEZGLCAweDAzLCAweEYwLCAweDlGLCAweEZGLCAweDAzLCAweEYwLCAweDhGLCAweEZGLCAweDAxLCAweEMwLCAweDA3LCAweEZGLCAweDAwLCAweDAwLCAweDAwLCAweDdFLCAweDAwLCAgLy8gQ29kZSBmb3IgY2hhciAzCisgICAgICAgIDB4MTQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4M0UsIDB4MDAsIDB4MDAsIDB4MDAsIDB4M0YsIDB4MDAsIDB4MDAsIDB4QzAsIDB4M0YsIDB4MDAsIDB4MDAsIDB4RjAsIDB4M0YsIDB4MDAsIDB4MDAsIDB4RjgsIDB4M0QsIDB4MDAsIDB4MDAsIDB4RkUsIDB4M0MsIDB4MDAsIDB4MDAsIDB4M0YsIDB4M0MsIDB4MDAsIDB4QzAsIDB4MUYsIDB4M0MsIDB4MDAsIDB4RTAsIDB4MDcsIDB4M0MsIDB4MDAsIDB4RjgsIDB4MDMsIDB4M0MsIDB4MDAsIDB4RkMsIDB4MDAsIDB4M0MsIDB4MDAsIDB4RkMsIDB4RkYsIDB4RkYsIDB4MDcsIDB4RkMsIDB4RkYsIDB4RkYsIDB4MDcsIDB4RkMsIDB4RkYsIDB4RkYsIDB4MDcsIDB4RkMsIDB4RkYsIDB4RkYsIDB4MDcsIDB4RkMsIDB4RkYsIDB4RkYsIDB4MDcsIDB4MDAsIDB4MDAsIDB4M0MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4M0MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4M0MsIDB4MDAsICAvLyBDb2RlIGZvciBjaGFyIDQKKyAgICAgICAgMHgxNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzMCwgMHgwMCwgMHgwMCwgMHhGRiwgMHhGMCwgMHgwMCwgMHhGQywgMHhGRiwgMHhGMCwgMHgwMSwgMHhGQywgMHhGRiwgMHhGMCwgMHgwMywgMHhGQywgMHhGRiwgMHhGMCwgMHgwMywgMHhGQywgMHhGRiwgMHhFMCwgMHgwNywgMHgzQywgMHg3OCwgMHhDMCwgMHgwNywgMHgzQywgMHg3OCwgMHg4MCwgMHgwNywgMHgzQywgMHgzQywgMHg4MCwgMHgwNywgMHgzQywgMHgzQywgMHg4MCwgMHgwNywgMHgzQywgMHgzQywgMHg4MCwgMHgwNywgMHgzQywgMHgzQywgMHg4MCwgMHgwNywgMHgzQywgMHg3QywgMHhDMCwgMHgwNywgMHgzQywgMHhGQywgMHhFMCwgMHgwMywgMHgzQywgMHhGOCwgMHhGRiwgMHgwMywgMHgzQywgMHhGOCwgMHhGRiwgMHgwMSwgMHgzQywgMHhGMCwgMHhGRiwgMHgwMSwgMHgwMCwgMHhFMCwgMHg3RiwgMHgwMCwgMHgwMCwgMHg4MCwgMHgxRiwgMHgwMCwgIC8vIENvZGUgZm9yIGNoYXIgNQorICAgICAgICAweDE0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEZDLCAweDBGLCAweDAwLCAweDgwLCAweEZGLCAweDNGLCAweDAwLCAweEUwLCAweEZGLCAweEZGLCAweDAwLCAweEYwLCAweEZGLCAweEZGLCAweDAxLCAweEY4LCAweEZGLCAweEZGLCAweDAzLCAweEY4LCAweEUxLCAweEUxLCAweDAzLCAweDc4LCAweEYwLCAweEMwLCAweDA3LCAweDNDLCAweDcwLCAweDgwLCAweDA3LCAweDNDLCAweDc4LCAweDgwLCAweDA3LCAweDNDLCAweDc4LCAweDgwLCAweDA3LCAweDNDLCAweDc4LCAweDgwLCAweDA3LCAweDdDLCAweDc4LCAweDgwLCAweDA3LCAweEZDLCAweEY4LCAweEMwLCAweDA3LCAweEY4LCAweEY5LCAweEUxLCAweDA3LCAweEY4LCAweEYxLCAweEZGLCAweDAzLCAweEYwLCAweEYxLCAweEZGLCAweDAzLCAweEUwLCAweEUwLCAweEZGLCAweDAxLCAweDgwLCAweEMwLCAweEZGLCAweDAwLCAweDAwLCAweDAwLCAweDNGLCAweDAwLCAgLy8gQ29kZSBmb3IgY2hhciA2CisgICAgICAgIDB4MTMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4M0MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4M0MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4M0MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4M0MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4M0MsIDB4MDAsIDB4QzAsIDB4MDcsIDB4M0MsIDB4MDAsIDB4RjgsIDB4MDcsIDB4M0MsIDB4MDAsIDB4RkYsIDB4MDcsIDB4M0MsIDB4QzAsIDB4RkYsIDB4MDcsIDB4M0MsIDB4RjAsIDB4RkYsIDB4MDcsIDB4M0MsIDB4RkMsIDB4M0YsIDB4MDAsIDB4M0MsIDB4RkUsIDB4MDMsIDB4MDAsIDB4QkMsIDB4RkYsIDB4MDAsIDB4MDAsIDB4RkMsIDB4M0YsIDB4MDAsIDB4MDAsIDB4RkMsIDB4MEYsIDB4MDAsIDB4MDAsIDB4RkMsIDB4MDMsIDB4MDAsIDB4MDAsIDB4RkMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4N0MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsICAvLyBDb2RlIGZvciBjaGFyIDcKKyAgICAgICAgMHgxNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3QywgMHgwMCwgMHhDMCwgMHgwNywgMHhGRiwgMHgwMCwgMHhGMCwgMHg4RiwgMHhGRiwgMHgwMSwgMHhGMCwgMHg5RiwgMHhGRiwgMHgwMywgMHhGOCwgMHhGRiwgMHhGRiwgMHgwMywgMHhGOCwgMHhGRiwgMHhFMywgMHgwNywgMHg3QywgMHhGOCwgMHhDMSwgMHgwNywgMHgzQywgMHhGMCwgMHg4MCwgMHgwNywgMHgzQywgMHhGMCwgMHg4MCwgMHgwNywgMHgzQywgMHhGMCwgMHg4MCwgMHgwNywgMHgzQywgMHhGMCwgMHg4MCwgMHgwNywgMHgzQywgMHhGMCwgMHg4MCwgMHgwNywgMHg3QywgMHhGOCwgMHhDMSwgMHgwNywgMHhGOCwgMHhGRiwgMHhDMSwgMHgwNywgMHhGOCwgMHhGRiwgMHhGRiwgMHgwMywgMHhGOCwgMHg5RiwgMHhGRiwgMHgwMywgMHhGMCwgMHg4RiwgMHhGRiwgMHgwMSwgMHhDMCwgMHgwNywgMHhGRiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3RSwgMHgwMCwgIC8vIENvZGUgZm9yIGNoYXIgOAorICAgICAgICAweDE0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDFGLCAweDIwLCAweDAwLCAweEUwLCAweDdGLCAweEYwLCAweDAwLCAweEYwLCAweEZGLCAweEYwLCAweDAxLCAweEY4LCAweEZGLCAweEYxLCAweDAzLCAweEY4LCAweEZGLCAweEYxLCAweDAzLCAweEY4LCAweEYwLCAweEUzLCAweDA3LCAweDdDLCAweEUwLCAweEMzLCAweDA3LCAweDNDLCAweEMwLCAweDgzLCAweDA3LCAweDNDLCAweEMwLCAweDgzLCAweDA3LCAweDNDLCAweEMwLCAweDgzLCAweDA3LCAweDNDLCAweEMwLCAweDgzLCAweDA3LCAweDNDLCAweEMwLCAweEMxLCAweDA3LCAweDdDLCAweEUwLCAweEMxLCAweDAzLCAweEY4LCAweEYwLCAweEYwLCAweDAzLCAweEY4LCAweEZGLCAweEZGLCAweDAxLCAweEYwLCAweEZGLCAweEZGLCAweDAxLCAweEUwLCAweEZGLCAweEZGLCAweDAwLCAweEMwLCAweEZGLCAweDNGLCAweDAwLCAweDAwLCAweEZFLCAweDA3LCAweDAwICAgLy8gQ29kZSBmb3IgY2hhciA5CisgICAgICAgIH07CisKKyNlbmRpZiAvKiBMSUJFUkFUSU9OX1NBTlMyMFgyOF9OVU1CRVJTX0hfICovCmRpZmYgLS1naXQgYS9sY2QvTGliZXJhdGlvbl9TYW5zMjd4MzZfTnVtYmVycy5oIGIvbGNkL0xpYmVyYXRpb25fU2FuczI3eDM2X051bWJlcnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNmNiM2Q4Ci0tLSAvZGV2L251bGwKKysrIGIvbGNkL0xpYmVyYXRpb25fU2FuczI3eDM2X051bWJlcnMuaApAQCAtMCwwICsxLDM3IEBACisvKgorICogTGliZXJhdGlvbl9TYW5zMjd4MzZfTnVtYmVycy5oCisgKgorICogQ3JlYXRlZDogMzAvMDMvMjAxMiAxOjQzOjE0IEFNCisgKiAgQXV0aG9yOiBhbmR5CisgKi8gCisKKworI2lmbmRlZiBMSUJFUkFUSU9OX1NBTlMyN1gzNl9OVU1CRVJTX0hfCisjZGVmaW5lIExJQkVSQVRJT05fU0FOUzI3WDM2X05VTUJFUlNfSF8KKworLy9XQVJOSU5HOiBUaGlzIEZvbnQgUmVxdWlyZSBYLUdMQ0QgTGliLgorLy8gICAgICAgICBZb3UgY2FuIG5vdCB1c2UgaXQgd2l0aCBNaWtyb0UgR0xDRCBMaWIuCisKKy8vRm9udCBHZW5lcmF0ZWQgYnkgTWlrcm9FbGVrdHJvbmlrYSBHTENEIEZvbnQgQ3JlYXRvciAxLjIuMC4wCisvL01pa3JvRWxla3Ryb25pa2EgMjAxMSAKKy8vaHR0cDovL3d3dy5taWtyb2UuY29tIAorCisvL0dMQ0QgRm9udE5hbWUgOiBMaWJlcmF0aW9uX1NhbnMyN3gzNl9OdW1iZXJzCisvL0dMQ0QgRm9udFNpemUgOiAyNyB4IDM2CisKK3N0YXRpYyBjb25zdCBjaGFyIExpYmVyYXRpb25fU2FuczI3eDM2X051bWJlcnNbXSBQUk9HTUVNID0geworICAgICAgICAweDBBLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEYwLCAweDA3LCAweDAwLCAweDAwLCAweDAwLCAweEYwLCAweDA3LCAweDAwLCAweDAwLCAweDAwLCAweEYwLCAweDA3LCAweDAwLCAweDAwLCAweDAwLCAweEYwLCAweDA3LCAweDAwLCAweDAwLCAweDAwLCAweEYwLCAweDA3LCAweDAwLCAweDAwLCAweDAwLCAweEYwLCAweDA3LCAweDAwLCAweDAwLCAweDAwLCAweEYwLCAweDA3LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAgLy8gQ29kZSBmb3IgY2hhciAuCisgICAgICAgIDB4MEQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MEUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4RjAsIDB4MEYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4RkYsIDB4MEYsIDB4MDAsIDB4MDAsIDB4RjgsIDB4RkYsIDB4MEYsIDB4MDAsIDB4QzAsIDB4RkYsIDB4RkYsIDB4MEYsIDB4MDAsIDB4RkMsIDB4RkYsIDB4RkYsIDB4MEYsIDB4RTAsIDB4RkYsIDB4RkYsIDB4N0YsIDB4MDAsIDB4RkUsIDB4RkYsIDB4RkYsIDB4MDcsIDB4MDAsIDB4RkYsIDB4RkYsIDB4M0YsIDB4MDAsIDB4MDAsIDB4RkYsIDB4RkYsIDB4MDEsIDB4MDAsIDB4MDAsIDB4RkYsIDB4MUYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4RkYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDcsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsICAvLyBDb2RlIGZvciBjaGFyIC8KKyAgICAgICAgMHgxOSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhGMCwgMHhGRiwgMHgwMSwgMHgwMCwgMHgwMCwgMHhGRiwgMHhGRiwgMHgwRiwgMHgwMCwgMHhDMCwgMHhGRiwgMHhGRiwgMHgzRiwgMHgwMCwgMHhFMCwgMHhGRiwgMHhGRiwgMHhGRiwgMHgwMCwgMHhGMCwgMHhGRiwgMHhGRiwgMHhGRiwgMHgwMSwgMHhGOCwgMHhGRiwgMHhGRiwgMHhGRiwgMHgwMSwgMHhGOCwgMHhGRiwgMHhGRiwgMHhGRiwgMHgwMywgMHhGOCwgMHgwNywgMHgwMCwgMHhGQywgMHgwMywgMHhGQywgMHgwMCwgMHgwMCwgMHhFMCwgMHgwNywgMHg3QywgMHgwMCwgMHgwMCwgMHhDMCwgMHgwNywgMHg3QywgMHgwMCwgMHgwMCwgMHhDMCwgMHgwNywgMHg3QywgMHgwMCwgMHgwMCwgMHhDMCwgMHgwNywgMHg3QywgMHgwMCwgMHgwMCwgMHhDMCwgMHgwNywgMHg3QywgMHgwMCwgMHgwMCwgMHhFMCwgMHgwNywgMHhGQywgMHgwMCwgMHgwMCwgMHhGMCwgMHgwNywgMHhGOCwgMHgwNywgMHgwMCwgMHhGQywgMHgwMywgMHhGOCwgMHhGRiwgMHhGRiwgMHhGRiwgMHgwMywgMHhGOCwgMHhGRiwgMHhGRiwgMHhGRiwgMHgwMSwgMHhGMCwgMHhGRiwgMHhGRiwgMHhGRiwgMHgwMSwgMHhFMCwgMHhGRiwgMHhGRiwgMHhGRiwgMHgwMCwgMHhDMCwgMHhGRiwgMHhGRiwgMHgzRiwgMHgwMCwgMHgwMCwgMHhGRSwgMHhGRiwgMHgwRiwgMHgwMCwgMHgwMCwgMHhGMCwgMHhGRiwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgIC8vIENvZGUgZm9yIGNoYXIgMAorICAgICAgICAweDFBLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDFGLCAweDAwLCAweEMwLCAweDA3LCAweDgwLCAweDBGLCAweDAwLCAweEMwLCAweDA3LCAweEMwLCAweDA3LCAweDAwLCAweEMwLCAweDA3LCAweEUwLCAweDA3LCAweDAwLCAweEMwLCAweDA3LCAweEUwLCAweDAzLCAweDAwLCAweEMwLCAweDA3LCAweEYwLCAweDAxLCAweDAwLCAweEMwLCAweDA3LCAweEY4LCAweDAxLCAweDAwLCAweEMwLCAweDA3LCAweEY4LCAweDAwLCAweDAwLCAweEMwLCAweDA3LCAweEZDLCAweEZGLCAweEZGLCAweEZGLCAweDA3LCAweEZDLCAweEZGLCAweEZGLCAweEZGLCAweDA3LCAweEZDLCAweEZGLCAweEZGLCAweEZGLCAweDA3LCAweEZDLCAweEZGLCAweEZGLCAweEZGLCAweDA3LCAweEZDLCAweEZGLCAweEZGLCAweEZGLCAweDA3LCAweEZDLCAweEZGLCAweEZGLCAweEZGLCAweDA3LCAweEZDLCAweEZGLCAweEZGLCAweEZGLCAweDA3LCAweDAwLCAweDAwLCAweDAwLCAweEMwLCAweDA3LCAweDAwLCAweDAwLCAweDAwLCAweEMwLCAweDA3LCAweDAwLCAweDAwLCAweDAwLCAweEMwLCAweDA3LCAweDAwLCAweDAwLCAweDAwLCAweEMwLCAweDA3LCAweDAwLCAweDAwLCAweDAwLCAweEMwLCAweDA3LCAweDAwLCAweDAwLCAweDAwLCAweEMwLCAweDA3LCAweDAwLCAweDAwLCAweDAwLCAweEMwLCAweDA3LCAweDAwLCAweDAwLCAweDAwLCAweEMwLCAweDA3LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAgLy8gQ29kZSBmb3IgY2hhciAxCisgICAgICAgIDB4MTksIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MEUsIDB4MDAsIDB4RTAsIDB4MDcsIDB4ODAsIDB4MEYsIDB4MDAsIDB4RjAsIDB4MDcsIDB4RTAsIDB4MEYsIDB4MDAsIDB4RkMsIDB4MDcsIDB4RjAsIDB4MEYsIDB4MDAsIDB4RkUsIDB4MDcsIDB4RjAsIDB4MEYsIDB4MDAsIDB4RkYsIDB4MDcsIDB4RjgsIDB4MEYsIDB4ODAsIDB4RkYsIDB4MDcsIDB4RjgsIDB4MEYsIDB4QzAsIDB4RkYsIDB4MDcsIDB4RkMsIDB4MDMsIDB4RTAsIDB4RkYsIDB4MDcsIDB4RkMsIDB4MDAsIDB4RjAsIDB4REYsIDB4MDcsIDB4N0MsIDB4MDAsIDB4RjgsIDB4Q0YsIDB4MDcsIDB4N0MsIDB4MDAsIDB4RkMsIDB4QzcsIDB4MDcsIDB4N0MsIDB4MDAsIDB4RkUsIDB4QzMsIDB4MDcsIDB4N0MsIDB4MDAsIDB4RkYsIDB4QzEsIDB4MDcsIDB4RkMsIDB4ODAsIDB4RkYsIDB4QzAsIDB4MDcsIDB4RkMsIDB4QzEsIDB4N0YsIDB4QzAsIDB4MDcsIDB4RjgsIDB4RkYsIDB4M0YsIDB4QzAsIDB4MDcsIDB4RjgsIDB4RkYsIDB4MUYsIDB4QzAsIDB4MDcsIDB4RjgsIDB4RkYsIDB4MEYsIDB4QzAsIDB4MDcsIDB4RjAsIDB4RkYsIDB4MDcsIDB4QzAsIDB4MDcsIDB4RTAsIDB4RkYsIDB4MDMsIDB4QzAsIDB4MDcsIDB4QzAsIDB4RkYsIDB4MDEsIDB4QzAsIDB4MDcsIDB4MDAsIDB4N0YsIDB4MDAsIDB4QzAsIDB4MDcsIDB4MDAsIDB4MDAsIDB4MDAsIDB4QzAsIDB4MDcsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsICAvLyBDb2RlIGZvciBjaGFyIDIKKyAgICAgICAgMHgxOSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwQywgMHgwMCwgMHgwMCwgMHgwRSwgMHgwMCwgMHgzRSwgMHgwMCwgMHg4MCwgMHgwRiwgMHgwMCwgMHg3RSwgMHgwMCwgMHhFMCwgMHgwRiwgMHgwMCwgMHhGRSwgMHgwMCwgMHhFMCwgMHgwRiwgMHgwMCwgMHhGRSwgMHgwMSwgMHhGMCwgMHgwRiwgMHgwMCwgMHhGRSwgMHgwMywgMHhGOCwgMHgwRiwgMHgwMCwgMHhGRSwgMHgwMywgMHhGOCwgMHgwRiwgMHgwMCwgMHhGOCwgMHgwMywgMHhGQywgMHgwMywgMHgwMCwgMHhFMCwgMHgwNywgMHhGQywgMHgwMCwgMHgxRiwgMHhFMCwgMHgwNywgMHg3QywgMHgwMCwgMHgxRiwgMHhDMCwgMHgwNywgMHg3QywgMHgwMCwgMHgxRiwgMHhDMCwgMHgwNywgMHg3QywgMHgwMCwgMHgxRiwgMHhDMCwgMHgwNywgMHg3QywgMHgwMCwgMHgxRiwgMHhDMCwgMHgwNywgMHhGQywgMHg4MCwgMHgzRiwgMHhDMCwgMHgwNywgMHhGQywgMHhDMSwgMHgzRiwgMHhFMCwgMHgwNywgMHhGOCwgMHhGRiwgMHg3RiwgMHhGMCwgMHgwNywgMHhGOCwgMHhGRiwgMHhGQiwgMHhGRiwgMHgwMywgMHhGOCwgMHhGRiwgMHhGQiwgMHhGRiwgMHgwMywgMHhGMCwgMHhGRiwgMHhGOSwgMHhGRiwgMHgwMywgMHhFMCwgMHhGRiwgMHhGMCwgMHhGRiwgMHgwMSwgMHhDMCwgMHg3RiwgMHhGMCwgMHhGRiwgMHgwMCwgMHgwMCwgMHgzRiwgMHhFMCwgMHg3RiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHgxRiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgIC8vIENvZGUgZm9yIGNoYXIgMworICAgICAgICAweDFCLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweEMwLCAweDBGLCAweDAwLCAweDAwLCAweDAwLCAweEUwLCAweDBGLCAweDAwLCAweDAwLCAweDAwLCAweEY4LCAweDBGLCAweDAwLCAweDAwLCAweDAwLCAweEZDLCAweDBGLCAweDAwLCAweDAwLCAweDAwLCAweEZGLCAweDBGLCAweDAwLCAweDAwLCAweDgwLCAweEZGLCAweDBGLCAweDAwLCAweDAwLCAweEUwLCAweDlGLCAweDBGLCAweDAwLCAweDAwLCAweEYwLCAweDhGLCAweDBGLCAweDAwLCAweDAwLCAweEZDLCAweDgzLCAweDBGLCAweDAwLCAweDAwLCAweEZFLCAweDgxLCAweDBGLCAweDAwLCAweDgwLCAweDdGLCAweDgwLCAweDBGLCAweDAwLCAweEMwLCAweDNGLCAweDgwLCAweDBGLCAweDAwLCAweEYwLCAweDBGLCAweDgwLCAweDBGLCAweDAwLCAweEY4LCAweDA3LCAweDgwLCAweDBGLCAweDAwLCAweEZDLCAweDAxLCAweDgwLCAweDBGLCAweDAwLCAweEZDLCAweEZGLCAweEZGLCAweEZGLCAweDA3LCAweEZDLCAweEZGLCAweEZGLCAweEZGLCAweDA3LCAweEZDLCAweEZGLCAweEZGLCAweEZGLCAweDA3LCAweEZDLCAweEZGLCAweEZGLCAweEZGLCAweDA3LCAweEZDLCAweEZGLCAweEZGLCAweEZGLCAweDA3LCAweEZDLCAweEZGLCAweEZGLCAweEZGLCAweDA3LCAweEZDLCAweEZGLCAweEZGLCAweEZGLCAweDA3LCAweDAwLCAweDAwLCAweDgwLCAweDBGLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDBGLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDBGLCAweDAwLCAweDAwLCAweDAwLCAweDgwLCAweDBGLCAweDAwLCAgLy8gQ29kZSBmb3IgY2hhciA0CisgICAgICAgIDB4MTksIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MEMsIDB4MDAsIDB4MDAsIDB4RjAsIDB4MEYsIDB4M0MsIDB4MDAsIDB4RkMsIDB4RkYsIDB4MEYsIDB4RkMsIDB4MDAsIDB4RkMsIDB4RkYsIDB4MEYsIDB4RkMsIDB4MDEsIDB4RkMsIDB4RkYsIDB4MEYsIDB4RkMsIDB4MDEsIDB4RkMsIDB4RkYsIDB4MEYsIDB4RkMsIDB4MDMsIDB4RkMsIDB4RkYsIDB4MEYsIDB4RkMsIDB4MDMsIDB4RkMsIDB4RkYsIDB4MEYsIDB4RjgsIDB4MDcsIDB4N0MsIDB4QzAsIDB4MDcsIDB4RTAsIDB4MDcsIDB4N0MsIDB4QzAsIDB4MDMsIDB4QzAsIDB4MDcsIDB4N0MsIDB4RTAsIDB4MDMsIDB4QzAsIDB4MDcsIDB4N0MsIDB4RTAsIDB4MDMsIDB4QzAsIDB4MDcsIDB4N0MsIDB4RTAsIDB4MDMsIDB4QzAsIDB4MDcsIDB4N0MsIDB4RTAsIDB4MDMsIDB4QzAsIDB4MDcsIDB4N0MsIDB4RTAsIDB4MDcsIDB4RTAsIDB4MDcsIDB4N0MsIDB4RTAsIDB4MDcsIDB4RTAsIDB4MDcsIDB4N0MsIDB4RTAsIDB4MUYsIDB4RjgsIDB4MDMsIDB4N0MsIDB4QzAsIDB4RkYsIDB4RkYsIDB4MDMsIDB4N0MsIDB4QzAsIDB4RkYsIDB4RkYsIDB4MDMsIDB4N0MsIDB4ODAsIDB4RkYsIDB4RkYsIDB4MDEsIDB4N0MsIDB4ODAsIDB4RkYsIDB4RkYsIDB4MDAsIDB4N0MsIDB4MDAsIDB4RkYsIDB4N0YsIDB4MDAsIDB4MDAsIDB4MDAsIDB4RkMsIDB4M0YsIDB4MDAsIDB4MDAsIDB4MDAsIDB4RjAsIDB4MDcsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsICAvLyBDb2RlIGZvciBjaGFyIDUKKyAgICAgICAgMHgxOSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhFMCwgMHhGRiwgMHgwMSwgMHgwMCwgMHgwMCwgMHhGRSwgMHhGRiwgMHgwRiwgMHgwMCwgMHg4MCwgMHhGRiwgMHhGRiwgMHgzRiwgMHgwMCwgMHhDMCwgMHhGRiwgMHhGRiwgMHhGRiwgMHgwMCwgMHhFMCwgMHhGRiwgMHhGRiwgMHhGRiwgMHgwMCwgMHhGMCwgMHhGRiwgMHhGRiwgMHhGRiwgMHgwMSwgMHhGOCwgMHhGRiwgMHhGRiwgMHhGRiwgMHgwMywgMHhGOCwgMHgwMywgMHgxRiwgMHhGOCwgMHgwMywgMHhGQywgMHg4MSwgMHgwRiwgMHhFMCwgMHgwNywgMHhGQywgMHg4MCwgMHgwNywgMHhFMCwgMHgwNywgMHg3QywgMHhDMCwgMHgwNywgMHhDMCwgMHgwNywgMHg3QywgMHhDMCwgMHgwNywgMHhDMCwgMHgwNywgMHg3QywgMHhDMCwgMHgwNywgMHhDMCwgMHgwNywgMHhGQywgMHhDMCwgMHgwNywgMHhDMCwgMHgwNywgMHhGQywgMHhDMSwgMHgwRiwgMHhFMCwgMHgwNywgMHhGQywgMHhDMywgMHgzRiwgMHhGOCwgMHgwNywgMHhGOCwgMHhDMywgMHhGRiwgMHhGRiwgMHgwMywgMHhGOCwgMHg4MywgMHhGRiwgMHhGRiwgMHgwMywgMHhGMCwgMHg4MywgMHhGRiwgMHhGRiwgMHgwMSwgMHhGMCwgMHgwMSwgMHhGRiwgMHhGRiwgMHgwMSwgMHhDMCwgMHgwMSwgMHhGRSwgMHhGRiwgMHgwMCwgMHgwMCwgMHgwMSwgMHhGQywgMHgzRiwgMHgwMCwgMHgwMCwgMHgwMCwgMHhGMCwgMHgwRiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgIC8vIENvZGUgZm9yIGNoYXIgNgorICAgICAgICAweDE5LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDdDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDdDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDdDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDdDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDdDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDdDLCAweDAwLCAweDAwLCAweEUwLCAweDA3LCAweDdDLCAweDAwLCAweDAwLCAweEZDLCAweDA3LCAweDdDLCAweDAwLCAweDgwLCAweEZGLCAweDA3LCAweDdDLCAweDAwLCAweEUwLCAweEZGLCAweDA3LCAweDdDLCAweDAwLCAweEY4LCAweEZGLCAweDA3LCAweDdDLCAweDAwLCAweEZFLCAweEZGLCAweDA3LCAweDdDLCAweDgwLCAweEZGLCAweEZGLCAweDA3LCAweDdDLCAweEUwLCAweEZGLCAweDFGLCAweDAwLCAweDdDLCAweEYwLCAweEZGLCAweDAxLCAweDAwLCAweDdDLCAweEZDLCAweDNGLCAweDAwLCAweDAwLCAweDdDLCAweEZFLCAweDBGLCAweDAwLCAweDAwLCAweDdDLCAweEZGLCAweDAzLCAweDAwLCAweDAwLCAweEZDLCAweEZGLCAweDAwLCAweDAwLCAweDAwLCAweEZDLCAweDNGLCAweDAwLCAweDAwLCAweDAwLCAweEZDLCAweDBGLCAweDAwLCAweDAwLCAweDAwLCAweEZDLCAweDA3LCAweDAwLCAweDAwLCAweDAwLCAweEZDLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweEZDLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAgLy8gQ29kZSBmb3IgY2hhciA3CisgICAgICAgIDB4MUEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4QzAsIDB4MUYsIDB4MDAsIDB4ODAsIDB4MUYsIDB4RTAsIDB4N0YsIDB4MDAsIDB4QzAsIDB4N0YsIDB4RjAsIDB4RkYsIDB4MDAsIDB4RTAsIDB4RkYsIDB4RjgsIDB4RkYsIDB4MDEsIDB4RjAsIDB4RkYsIDB4RkQsIDB4RkYsIDB4MDEsIDB4RjgsIDB4RkYsIDB4RkQsIDB4RkYsIDB4MDMsIDB4RjgsIDB4RkYsIDB4RkQsIDB4RkYsIDB4MDMsIDB4RjgsIDB4RkYsIDB4M0YsIDB4RjAsIDB4MDcsIDB4RkMsIDB4RTEsIDB4MUYsIDB4RTAsIDB4MDcsIDB4RkMsIDB4QzAsIDB4MEYsIDB4QzAsIDB4MDcsIDB4N0MsIDB4ODAsIDB4MEYsIDB4QzAsIDB4MDcsIDB4N0MsIDB4ODAsIDB4MEYsIDB4QzAsIDB4MDcsIDB4N0MsIDB4ODAsIDB4MEYsIDB4QzAsIDB4MDcsIDB4N0MsIDB4ODAsIDB4MEYsIDB4QzAsIDB4MDcsIDB4RkMsIDB4QzAsIDB4MEYsIDB4QzAsIDB4MDcsIDB4RkMsIDB4RTEsIDB4MUYsIDB4RTAsIDB4MDcsIDB4RkMsIDB4RkYsIDB4M0YsIDB4RjAsIDB4MDcsIDB4RjgsIDB4RkYsIDB4RkQsIDB4RkYsIDB4MDMsIDB4RjgsIDB4RkYsIDB4RkQsIDB4RkYsIDB4MDMsIDB4RjAsIDB4RkYsIDB4RkQsIDB4RkYsIDB4MDEsIDB4RjAsIDB4RkYsIDB4RjgsIDB4RkYsIDB4MDEsIDB4QzAsIDB4N0YsIDB4RjgsIDB4RkYsIDB4MDAsIDB4ODAsIDB4MUYsIDB4RjAsIDB4N0YsIDB4MDAsIDB4MDAsIDB4MDAsIDB4QzAsIDB4MUYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsICAvLyBDb2RlIGZvciBjaGFyIDgKKyAgICAgICAgMHgxOSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhGRSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHhGRiwgMHgwNywgMHgxOCwgMHgwMCwgMHhFMCwgMHhGRiwgMHgwRiwgMHg3OCwgMHgwMCwgMHhGMCwgMHhGRiwgMHgxRiwgMHhGOCwgMHgwMCwgMHhGMCwgMHhGRiwgMHgzRiwgMHhGQywgMHgwMSwgMHhGOCwgMHhGRiwgMHgzRiwgMHhGQywgMHgwMywgMHhGOCwgMHhGRiwgMHg3RiwgMHhGQywgMHgwMywgMHhGQywgMHg4MywgMHg3RiwgMHhGQywgMHgwNywgMHhGQywgMHgwMCwgMHg3RSwgMHhGMCwgMHgwNywgMHg3QywgMHgwMCwgMHg3QywgMHhFMCwgMHgwNywgMHg3QywgMHgwMCwgMHg3QywgMHhDMCwgMHgwNywgMHg3QywgMHgwMCwgMHg3QywgMHhDMCwgMHgwNywgMHg3QywgMHgwMCwgMHgzQywgMHhDMCwgMHgwNywgMHhGQywgMHgwMCwgMHgzQywgMHhFMCwgMHgwNywgMHhGQywgMHgwMCwgMHgxRSwgMHhGMCwgMHgwNywgMHhGOCwgMHgwMywgMHgxRiwgMHhGOCwgMHgwMywgMHhGOCwgMHhGRiwgMHhGRiwgMHhGRiwgMHgwMywgMHhGMCwgMHhGRiwgMHhGRiwgMHhGRiwgMHgwMSwgMHhGMCwgMHhGRiwgMHhGRiwgMHhGRiwgMHgwMCwgMHhFMCwgMHhGRiwgMHhGRiwgMHg3RiwgMHgwMCwgMHg4MCwgMHhGRiwgMHhGRiwgMHgzRiwgMHgwMCwgMHgwMCwgMHhGRSwgMHhGRiwgMHgwRiwgMHgwMCwgMHgwMCwgMHhGMCwgMHhGRiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCAgIC8vIENvZGUgZm9yIGNoYXIgOQorICAgICAgICB9OworCisjZW5kaWYgLyogTElCRVJBVElPTl9TQU5TMjdYMzZfTlVNQkVSU19IXyAqLwpkaWZmIC0tZ2l0IGEvbGNkL1NUNzU2NVIuYyBiL2xjZC9TVDc1NjVSLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWI5MTYxMAotLS0gL2Rldi9udWxsCisrKyBiL2xjZC9TVDc1NjVSLmMKQEAgLTAsMCArMSwyMTMgQEAKKy8qKgorICogXGZpbGUgU1Q3NTY1Ui5jCisgKiBcYnJpZWYgRnVuY3Rpb25zIHJlbGF0aW5nIHRvIFNUNzU2NVIuCisgKiBcYXV0aG9yIEFuZHkgR29jaworICogXHNlZSBnbGNkLmgKKyAqLyAKKworI2luY2x1ZGUgIlNUNzU2NVIuaCIKKyNpbmNsdWRlICJnbGNkX3NwaS5oIgorCit2b2lkIGdsY2RfY29tbWFuZCh1aW50OF90IGMpCit7CisJR0xDRF9BMF9MT1coKTsKKwlnbGNkX3NwaV93cml0ZShjKTsJCit9CisKK3ZvaWQgZ2xjZF9kYXRhKHVpbnQ4X3QgYykKK3sKKwlHTENEX0EwX0hJR0goKTsKKwlnbGNkX3NwaV93cml0ZShjKTsJCit9CisKK3ZvaWQgZ2xjZF9zZXRfY29udHJhc3QodWludDhfdCB2YWwpIHsKKwkvKiBDYW4gc2V0IGEgNi1iaXQgdmFsdWUgKDAgdG8gNjMpICAqLworCisJLyogTXVzdCBzZW5kIHRoaXMgY29tbWFuZCBieXRlIGJlZm9yZSBzZXR0aW5nIHRoZSBjb250cmFzdCAqLworCWdsY2RfY29tbWFuZCgweDgxKTsKKwkKKwkvKiBTZXQgdGhlIGNvbnRyYXQgdmFsdWUgKCJlbGVjdHJvbmljIHZvbHVtbmUgcmVnaXN0ZXIiKSAqLworCWlmICh2YWwgPiA2MykgeworCQlnbGNkX2NvbW1hbmQoNjMpOworCX0gZWxzZSB7CisJCWdsY2RfY29tbWFuZCh2YWwpOworCX0KKwlyZXR1cm47Cit9CisKK3ZvaWQgZ2xjZF9wb3dlcl9kb3duKHZvaWQpCit7CisJLyogQ29tbWFuZCBzZXF1ZW5jZSBhcyBpbiBTVDc1NjUgZGF0YXNoZWV0ICovCisJZ2xjZF9jb21tYW5kKDB4YWMpOwkvLyBTdGF0aWMgaW5kaWNhdG9yIG9mZgorCWdsY2RfY29tbWFuZCgweDAwKTsJLy8gU3RhdGljIGluZGljYXRvciByZWdpc3Rlciwgbm90IGJsaW5raW5nCisJZ2xjZF9jb21tYW5kKDB4YWUpOyAvLyBEaXNwbGF5IE9GRgorCWdsY2RfY29tbWFuZCgweGE1KTsgLy8gRGlzcGxheSBhbGwgcG9pbnRzIE9OCisKKwkvKiBEaXNwbGF5IGlzIG5vdyBpbiBzbGVlcCBtb2RlICovCit9CisKK3ZvaWQgZ2xjZF9wb3dlcl91cCh2b2lkKQoreworCWdsY2RfY29tbWFuZCgweGE0KTsgLy8gRGlzcGxheSBhbGwgcG9pbnRzIE9GRgorCWdsY2RfY29tbWFuZCgweGFkKTsJLy8gU3RhdGljIGluZGljYXRvciBPTgorCWdsY2RfY29tbWFuZCgweDAwKTsJLy8gU3RhdGljIGluZGljYXRvciByZWdpc3Rlciwgbm90IEJsaW5raW5nCisJZ2xjZF9jb21tYW5kKDB4YWYpOworCisJcmV0dXJuOworfQorCit2b2lkIGdsY2Rfc2V0X3lfYWRkcmVzcyh1aW50OF90IHkpCit7CisJZ2xjZF9jb21tYW5kKFNUNzU2NVJfUEFHRV9BRERSRVNTX1NFVCB8ICgweDBGICYgeSkpOyAvKiAweDBGID0gMGIwMDAwMTExMSAqLworfQorCit2b2lkIGdsY2Rfc2V0X3hfYWRkcmVzcyh1aW50OF90IHgpCit7CisJZ2xjZF9zZXRfY29sdW1uX3VwcGVyKHgpOworCWdsY2Rfc2V0X2NvbHVtbl9sb3dlcih4KTsJCit9CisKK3ZvaWQgZ2xjZF9hbGxfb24odm9pZCkKK3sKKwlnbGNkX2NvbW1hbmQoU1Q3NTY1Ul9ESVNQTEFZX0FMTF9PTik7Cit9CisKK3ZvaWQgZ2xjZF9ub3JtYWwodm9pZCkKK3sKKwlnbGNkX2NvbW1hbmQoU1Q3NTY1Ul9ESVNQTEFZX05PUk1BTCk7Cit9CisKK3ZvaWQgZ2xjZF9zZXRfY29sdW1uX3VwcGVyKHVpbnQ4X3QgYWRkcikKK3sKKwlnbGNkX2NvbW1hbmQoU1Q3NTY1Ul9DT0xVTU5fQUREUkVTU19TRVRfVVBQRVIgfCAoYWRkciA+PiA0KSk7Cit9CisKK3ZvaWQgZ2xjZF9zZXRfY29sdW1uX2xvd2VyKHVpbnQ4X3QgYWRkcikKK3sKKwlnbGNkX2NvbW1hbmQoU1Q3NTY1Ul9DT0xVTU5fQUREUkVTU19TRVRfTE9XRVIgfCAoMHgwZiAmIGFkZHIpKTsKK30KKwordm9pZCBnbGNkX3NldF9zdGFydF9saW5lKHVpbnQ4X3QgYWRkcikKK3sKKwlnbGNkX2NvbW1hbmQoIFNUNzU2NVJfU0VUX1NUQVJUX0xJTkUgfCAoMHgzRiAmIGFkZHIpKTsgLyogMHgzRiA9PSAwYjAwMTExMTExICovCit9CisKKy8qKiBDbGVhciB0aGUgZGlzcGxheSBpbW1lZGlhdGVseSwgZG9lcyBub3QgYnVmZmVyICovCit2b2lkIGdsY2RfY2xlYXJfbm93KHZvaWQpCit7CisJdWludDhfdCBwYWdlOworCWZvciAocGFnZSA9IDA7IHBhZ2UgPCBHTENEX05VTUJFUl9PRl9CQU5LUzE7IHBhZ2UrKykgeworCQl1aW50OF90IGNvbDsKKwkJZ2xjZF9zZXRfeV9hZGRyZXNzKHBhZ2UpOworCQlnbGNkX3NldF94X2FkZHJlc3MoMCk7CisJCWZvciAoY29sID0gMDsgY29sIDwgR0xDRF9OVU1CRVJfT0ZfQ09MUzE7IGNvbCsrKSB7CisJCQlnbGNkX2RhdGEoMCk7CisJCX0JCQkKKwl9Cit9CisKK3ZvaWQgZ2xjZF9wYXR0ZXJuKHZvaWQpCit7CisJdWludDhfdCBwYWdlOworCWZvciAocGFnZSA9IDA7IHBhZ2UgPCBHTENEX05VTUJFUl9PRl9CQU5LUzE7IHBhZ2UrKykgeworCQl1aW50OF90IGNvbDsKKwkJZ2xjZF9zZXRfeV9hZGRyZXNzKHBhZ2UpOworCQlnbGNkX3NldF94X2FkZHJlc3MoMCk7CisJCWZvciAoY29sID0gMDsgY29sIDwgR0xDRF9OVU1CRVJfT0ZfQ09MUzE7IGNvbCsrKSB7CisJCQlnbGNkX2RhdGEoIChjb2wgLyA4ICsgMikgJSAyID09IDEgPyAweGZmIDogMHgwMCApOworCQl9CQkJCisJfQorfQorCisKKyNkZWZpbmUgR0xDRF9JTklUX05IRF9DMTI4NjRXQ19GU1dfRkJXXzNWM19NCit1aW50OF90IGNvbnRyYXN0ID0gMzc7Cit2b2lkIGdsY2RfU1Q3NTY1Ul9pbml0KHZvaWQpIHsKKwkKKyNpZiBkZWZpbmVkKEdMQ0RfSU5JVF9OSERfQzEyODMyQTFaX0ZTV19GQldfM1YzKQorCisJLyogSW5pdCBzZXF1ZW5jZSBiYXNlZCBvbiBkYXRhc2hlZXQgZXhhbXBsZSBjb2RlIGZvciBOSEQtQzEyODMyQTFaLUZTVy1GQlctM1YzICovCisJLyogRGF0YXNoZWV0IHNheXMgbWF4IFNDSyBmcmVxdWVuY3kgMjBNSHogZm9yIHRoaXMgTENEICovCisJLyogV2UgdXNlICJyZXZlcnNlIGRpcmVjdGlvbiIgZm9yIGNvbW1vbiBvdXRwdXQgbW9kZSwgYXMgb3Bwb3NlZCB0byBkYXRhc2hlZXQgc3BlY2lmeWluZyAibm9ybWFsIGRpcmVjdGlvbiIgKi8KKworCWdsY2RfY29tbWFuZCgweGEwKTsgLyogQURDIHNlbGVjdCBpbiBub3JtYWwgbW9kZSAqLworCWdsY2RfY29tbWFuZCgweGFlKTsgLyogRGlzcGxheSBPRkYgKi8KKwlnbGNkX2NvbW1hbmQoMHhjOCk7IC8qIENvbW1vbiBvdXRwdXQgbW9kZSBzZWxlY3Q6IHJldmVyc2UgZGlyZWN0aW9uIChsYXN0IDMgYml0cyBhcmUgaWdub3JlZCkgKi8KKwlnbGNkX2NvbW1hbmQoMHhhMik7IC8qIExDRCBiaWFzIHNldCBhdCAxLzkgKi8KKwlnbGNkX2NvbW1hbmQoMHgyZik7IC8qIFBvd2VyIGNvbnRyb2wgc2V0IHRvIG9wZXJhdGluZyBtb2RlOiA3ICovCisJZ2xjZF9jb21tYW5kKDB4MjEpOyAvKiBJbnRlcm5hbCByZXNpc3RvciByYXRpbywgc2V0IHRvOiAxICovCisJZ2xjZF9zZXRfY29udHJhc3QoNDApOyAvKiBTZXQgY29udHJhc3QsIHZhbHVlIGV4cGVyaW1lbnRhbGx5IGRldGVybWluZWQsIGNhbiBzZXQgdG8gNi1iaXQgdmFsdWUsIDAgdG8gNjMgKi8KKwlnbGNkX2NvbW1hbmQoMHhhZik7IC8qIERpc3BsYXkgb24gKi8KKworI2VsaWYgZGVmaW5lZChHTENEX0lOSVRfTkhEX0MxMjg2NEExWl9GU1dfRkJXX0hUVCkKKworCS8qIEluaXQgc2VxdWVuY2UgYmFzZWQgb24gZGF0YXNoZWV0IGV4YW1wbGUgY29kZSBmb3IgTkhELUMxMjg2NEExWi1GU1ctRkJXLUhUVCAqLworCS8qIERhdGFzaGVldCBzYXlzIG1heCBTQ0sgZnJlcXVlbmN5IDIuNU1IeiBmb3IgdGhpcyBMQ0QgKi8KKwkvKiBXZSB1c2UgInJldmVyc2UgZGlyZWN0aW9uIiBmb3IgY29tbW9uIG91dHB1dCBtb2RlLCBhcyBvcHBvc2VkIHRvIGRhdGFzaGVldCBzcGVjaWZ5aW5nICJub3JtYWwgZGlyZWN0aW9uIiAqLworCisJZ2xjZF9jb21tYW5kKDB4YTApOyAvKiBBREMgc2VsZWN0IGluIG5vcm1hbCBtb2RlICovCisJZ2xjZF9jb21tYW5kKDB4YWUpOyAvKiBEaXNwbGF5IE9GRiAqLworCWdsY2RfY29tbWFuZCgweGM4KTsgLyogQ29tbW9uIG91dHB1dCBtb2RlIHNlbGVjdDogcmV2ZXJzZSBkaXJlY3Rpb24gKGxhc3QgMyBiaXRzIGFyZSBpZ25vcmVkKSAqLworCWdsY2RfY29tbWFuZCgweGEyKTsgLyogTENEIGJpYXMgc2V0IGF0IDEvOSAqLworCWdsY2RfY29tbWFuZCgweDJmKTsgLyogUG93ZXIgY29udHJvbCBzZXQgdG8gb3BlcmF0aW5nIG1vZGU6IDcgKi8KKwlnbGNkX2NvbW1hbmQoMHgyNik7IC8qIEludGVybmFsIHJlc2lzdG9yIHJhdGlvLCBzZXQgdG86IDYgKi8KKwlnbGNkX3NldF9jb250cmFzdCgzMCk7IC8qIFNldCBjb250cmFzdCwgdmFsdWUgZXhwZXJpbWVudGFsbHkgZGV0ZXJtaW5lZCAqLworCWdsY2RfY29tbWFuZCgweGFmKTsgLyogRGlzcGxheSBvbiAqLworCisjZWxpZiBkZWZpbmVkKEdMQ0RfSU5JVF9OSERfQzEyODY0V0NfRlNXX0ZCV18zVjNfTSkKKworCS8qIEluaXQgc2VxdWVuY2UgZm9yIE5IRC1DMTI4NjRXQy1GU1ctRkJXLTNWMy1NICovCisKKwlnbGNkX2NvbW1hbmQoU1Q3NTY1Ul9SRVNFVCk7IC8qIEludGVybmFsIHJlc2V0ICovCisJZ2xjZF9jb21tYW5kKDB4YTIpOyAvKiAxLzkgYmlhcyAqLworCWdsY2RfY29tbWFuZCgweGEwKTsgLyogQURDIHNlbGVjdCwgbm9ybWFsICovCisJZ2xjZF9jb21tYW5kKDB4YzgpOyAvKiBDb20gb3V0cHV0IHJldmVyc2UgKi8KKwlnbGNkX2NvbW1hbmQoMHhhNCk7IC8qIERpc3BsYXkgYWxsIHBvaW50cyBub3JtYWwgKi8KKwlnbGNkX2NvbW1hbmQoMHg0MCk7IC8qIERpc3BsYXkgc3RhcnQgbGluZSBzZXQgKi8KKwlnbGNkX2NvbW1hbmQoMHgyNSk7IC8qIEludGVybmFsIHJlc2lzdG9yIHJhdGlvICovCisJZ2xjZF9zZXRfY29udHJhc3QoY29udHJhc3QpOyAvKiBTZXQgY29udHJhc3QgdmFsdWUsIGV4cGVyaW1lbnRhbGx5IGRldGVybWluZWQsIHZhbHVlIDAgdG8gNjMgKi8KKwlnbGNkX2NvbW1hbmQoMHgyZik7IC8qIFBvd2VyIGNvbnRyb2xsZXIgc2V0ICovCisJZ2xjZF9jb21tYW5kKDB4YWYpOyAvKiBEaXNwbGF5IG9uICovCisJCisjZWxpZiBkZWZpbmVkKEdMQ0RfSU5JVF9aT0xFTl8xMjg2NF9GRlNTV0VfTkFBKQorCS8qIEluaXQgc2VxdWVuY2UgZm9yIFpvbGVuIDEyOHg2NCBtb2R1bGUgd2l0aAorCSAqIHNpemUgNDB4MzVtbS4gQ2hpcCBTVDc1NjcgKi8KKworCWdsY2RfY29tbWFuZCgweGEwKTsgLyogQURDIHNlbGVjdCBpbiBub3JtYWwgbW9kZSAqLworCWdsY2RfY29tbWFuZCgweGFlKTsgLyogRGlzcGxheSBPRkYgKi8KKwlnbGNkX2NvbW1hbmQoMHhjOCk7IC8qIENvbW1vbiBvdXRwdXQgbW9kZSBzZWxlY3Q6IHJldmVyc2UgZGlyZWN0aW9uIChsYXN0IDMgYml0cyBhcmUgaWdub3JlZCkgKi8KKwlnbGNkX2NvbW1hbmQoMHhhMyk7IC8qIExDRCBiaWFzIHNldCBhdCAxLzkgKi8KKwlnbGNkX2NvbW1hbmQoMHgyZik7IC8qIFBvd2VyIGNvbnRyb2wgc2V0IHRvIG9wZXJhdGluZyBtb2RlOiA3ICovCisJZ2xjZF9jb21tYW5kKDB4MjQpOyAvKiBJbnRlcm5hbCByZXNpc3RvciByYXRpbywgc2V0IHRvOiA2ICovCisJZ2xjZF9zZXRfY29udHJhc3QoNDUpOyAvKiBTZXQgY29udHJhc3QsIHZhbHVlIGV4cGVyaW1lbnRhbGx5IGRldGVybWluZWQsIHZhbHVlIDAgdG8gNjMgKi8KKwlnbGNkX2NvbW1hbmQoMHhhZik7IC8qIERpc3BsYXkgb24gKi8KKyAgICAKKyNlbGlmIGRlZmluZWQoR0xDRF9NWSkKKworCWdsY2RfY29tbWFuZCgweGEyKTsgLyogMS85IGJpYXMgKi8KKwlnbGNkX2NvbW1hbmQoMHhhMCk7IC8qIFNlbGVjdCBTRUcgTm9ybWFsIERpcmVjdGlvbiAqLworCWdsY2RfY29tbWFuZCgweGMwKTsgLyogU2VsZWN0IENPTSBOb3JtYWwgRGlyZWN0aW9uICovCisJZ2xjZF9jb21tYW5kKDB4MjQpOyAvKiBTZWxlY3QgUmVndWxhdGlvbiBSYXRpb249NS4wICovCisgICAgZ2xjZF9jb21tYW5kKDB4ODEpOyAvKiBTZXQgRVYgQ29tbWFuZCAqLworICAgIGdsY2RfY29tbWFuZCgweDIwKTsgLyogU2V0IEVWIENvbW1hbmQgKi8KKwlnbGNkX2NvbW1hbmQoMHgyYyk7IC8qIFBvd2VyIGNvbnRyb2xsZXIgc2V0ICovCisJZ2xjZF9jb21tYW5kKDB4MmUpOyAvKiBQb3dlciBjb250cm9sbGVyIHNldCAqLworCWdsY2RfY29tbWFuZCgweDJmKTsgLyogUG93ZXIgY29udHJvbGxlciBzZXQgKi8KKwlnbGNkX2NvbW1hbmQoMHhhZik7IC8qIERpc3BsYXkgb24gKi8gICAgCisjZWxzZQorCisJLyogRGVmYXVsdCBpbml0IHNlcXVlbmNlICovCisJLyogQ3VycmVudGx5IGp1c3Qgc2V0IHRoZSBzYW1lIGFzIEdMQ0RfSU5JVF9OSERfQzEyODY0QTFaX0ZTV19GQldfSFRUICovCisKKwlnbGNkX2NvbW1hbmQoMHhhMCk7IC8qIEFEQyBzZWxlY3QgaW4gbm9ybWFsIG1vZGUgKi8KKwlnbGNkX2NvbW1hbmQoMHhhZSk7IC8qIERpc3BsYXkgT0ZGICovCisJZ2xjZF9jb21tYW5kKDB4YzgpOyAvKiBDb21tb24gb3V0cHV0IG1vZGUgc2VsZWN0OiByZXZlcnNlIGRpcmVjdGlvbiAobGFzdCAzIGJpdHMgYXJlIGlnbm9yZWQpICovCisJZ2xjZF9jb21tYW5kKDB4YTIpOyAvKiBMQ0QgYmlhcyBzZXQgYXQgMS85ICovCisJZ2xjZF9jb21tYW5kKDB4MmYpOyAvKiBQb3dlciBjb250cm9sIHNldCB0byBvcGVyYXRpbmcgbW9kZTogNyAqLworCWdsY2RfY29tbWFuZCgweDI2KTsgLyogSW50ZXJuYWwgcmVzaXN0b3IgcmF0aW8sIHNldCB0bzogNiAqLworCWdsY2Rfc2V0X2NvbnRyYXN0KDIwKTsgLyogU2V0IGNvbnRyYXN0LCB2YWx1ZSBleHBlcmltZW50YWxseSBkZXRlcm1pbmVkLCB2YWx1ZSAwIHRvIDYzICovCisJZ2xjZF9jb21tYW5kKDB4YWYpOyAvKiBEaXNwbGF5IG9uICovCisKKyNlbmRpZgorCit9CmRpZmYgLS1naXQgYS9sY2QvU1Q3NTY1Ui5oIGIvbGNkL1NUNzU2NVIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYzJiMDZhCi0tLSAvZGV2L251bGwKKysrIGIvbGNkL1NUNzU2NVIuaApAQCAtMCwwICsxLDEwOCBAQAorLyoqCisgKiBcZmlsZSBTVDc1NjVSLmgKKyAqIFxicmllZiBDb25zdGFudHMgcmVsYXRpbmcgdG8gU1Q3NTY1UiBMQ0QgY29udHJvbGxlci4KKyAqIFxhdXRob3IgQW5keSBHb2NrCisgKgorICogQ29uc3RhbnRzIGFuZCBmdW5jdGlvbnMgc3BlY2lmaWMgdG8gU1Q3NTY1Ui4KKyAqIFRlc3RlZCB3aXRoIE5ld2hhdmVuIERpc3BsYXkgbW9kZWwgTkhELUMxMjg2NFdDLUZTVy1GQlctM1YzLU0KKyAqIAorICogXHRvZG8gTmVlZCB0byBtb3ZlIGZ1bmN0aW9ucyB0byBiZSBjb250cm9sbGVyIGluZGVwZW5kZW50CisgKgorICovIAorCisvKgorCUNvcHlyaWdodCAoYykgMjAxMiwgQW5keSBHb2NrCisKKwlBbGwgcmlnaHRzIHJlc2VydmVkLgorCisJUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisJbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisJCSogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKwkJICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisJCSogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKwkJICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisJCSAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKwkJKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEFuZHkgR29jayBub3IgdGhlCisJCSAgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMKKwkJICBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKworCVRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKwlBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorCVdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKwlESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBTkRZIEdPQ0sgQkUgTElBQkxFIEZPUiBBTlkKKwlESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworCShJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKwlMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKwlPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorCShJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisJU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjaWZuZGVmIFNUNzU2NVJfSF8KKyNkZWZpbmUgU1Q3NTY1Ul9IXworCisjaW5jbHVkZSAic3RkaW50LmgiCisKKy8qIENvbW1hbmRzICovCisjZGVmaW5lIFNUNzU2NVJfRElTUExBWV9PTiAgICAgICAgICAgICAgIDB4QUYgLyogMGIxMDEwMTExMSAqLworI2RlZmluZSBTVDc1NjVSX0RJU1BMQVlfT0ZGICAgICAgICAgICAgICAweEFFIC8qIDBiMTAxMDExMTAgKi8KKyNkZWZpbmUgU1Q3NTY1Ul9QQUdFX0FERFJFU1NfU0VUICAgICAgICAgMHhCMCAvKiAwYjEwMTEwMDAwICovCisjZGVmaW5lIFNUNzU2NVJfQ09MVU1OX0FERFJFU1NfU0VUX0xPV0VSIDB4MDAgCisjZGVmaW5lIFNUNzU2NVJfQ09MVU1OX0FERFJFU1NfU0VUX1VQUEVSIDB4MTAgCisjZGVmaW5lIFNUNzU2NVJfRElTUExBWV9OT1JNQUwgICAgICAgICAgIDB4QTQgLyogMGIxMDEwMDEwMCAqLworI2RlZmluZSBTVDc1NjVSX0RJU1BMQVlfQUxMX09OICAgICAgICAgICAweEE1IC8qIDBiMTAxMDAxMDEgKi8KKyNkZWZpbmUgU1Q3NTY1Ul9OT1JNQUwgICAgICAgICAgICAgICAgICAgMHhBMCAvKiAwYjEwMTAwMDAwICovCisjZGVmaW5lIFNUNzU2NVJfUkVWRVJTRSAgICAgICAgICAgICAgICAgIDB4QTEgLyogMGIxMDEwMDAwMSAqLworI2RlZmluZSBTVDc1NjVSX1JFU0VUICAgICAgICAgICAgICAgICAgICAweEUyIC8qIDBiMTExMDAwMTAgKi8KKyNkZWZpbmUgU1Q3NTY1Ul9TRVRfU1RBUlRfTElORSAgICAgICAgICAgKDE8PDYpCisKKwkvKioKKwkgKiBVc2VyIHNwZWNpZmllZCBHTENEIHdpZHRoIGluIHBpeGVscworCSAqIFNldCB0byAwIGZvciBhdXRvbWF0aWMgYXNzaWdubWVudCBiYXNlZCBvbiBjb250cm9sbGVyLgorCSAqLworI2RlZmluZSBHTENEX0xDRF9XSURUSDEgIDEyOAorCisJLyoqCisJICogVXNlciBzcGVjaWZpZWQgR0xDRCBoZWlnaHQgaW4gcGl4ZWxzCisJICogU2V0IHRvIDAgZm9yIGF1dG9tYXRpYyBhc3NpZ25tZW50IGJhc2VkIG9uIGNvbnRyb2xsZXIuCisJICovCisKKyNkZWZpbmUgR0xDRF9MQ0RfSEVJR0hUMSA2NAorCisKKyNkZWZpbmUgR0xDRF9OVU1CRVJfT0ZfQkFOS1MxIChHTENEX0xDRF9XSURUSDEgLyA4KQorI2RlZmluZSBHTENEX05VTUJFUl9PRl9DT0xTMSAgR0xDRF9MQ0RfV0lEVEgxCisKKy8qIFRoZXNlIGZ1bmN0aW9ucyBvbmx5IGF2YWlsYWJsZSBvbiBTVDc1NjUgaW1wbGVtZW50YXRpb24gKGZvciBub3cpICovCisKKy8qIFByaXZhdGUgZnVuY3Rpb25zICovCit2b2lkIGdsY2Rfc2V0X2NvbHVtbl91cHBlcih1aW50OF90IGFkZHIpOwordm9pZCBnbGNkX3NldF9jb2x1bW5fbG93ZXIodWludDhfdCBhZGRyKTsKKworLyoqIEFsbCBkaXNwbGF5IHBvaW50cyBvbiAobmF0aXZlKSAqLwordm9pZCBnbGNkX2FsbF9vbih2b2lkKTsKKworLyoqIFNldCB0byBub3JtYWwgbW9kZSAqLwordm9pZCBnbGNkX25vcm1hbCh2b2lkKTsKKworLyoqIFNldCBzdGFydCBsaW5lL3BhZ2UgKi8KK3ZvaWQgZ2xjZF9zZXRfc3RhcnRfbGluZSh1aW50OF90IGFkZHIpOworCisvKiogQ2xlYXIgdGhlIGRpc3BsYXkgaW1tZWRpYXRlbHksIGRvZXMgbm90IGJ1ZmZlciAqLwordm9pZCBnbGNkX2NsZWFyX25vdyh2b2lkKTsKKworLyoqIFNob3cgYSBibGFjayBhbmQgd2hpdGUgbGluZSBwYXR0ZXJuIG9uIHRoZSBkaXNwbGF5ICovCit2b2lkIGdsY2RfcGF0dGVybih2b2lkKTsKKworLyoqIEluaXQgU1Q3NTY1UiBjb250cm9sbGVyIC8gZGlzcGxheSAqLwordm9pZCBnbGNkX1NUNzU2NVJfaW5pdCh2b2lkKTsKKwordm9pZCBnbGNkX3dyaXRlKHZvaWQpOworCit2b2lkIGdsY2Rfc2V0X3lfYWRkcmVzcyh1aW50OF90IHkpOworCit2b2lkIGdsY2Rfc2V0X3hfYWRkcmVzcyh1aW50OF90IHgpOworCit2b2lkIGdsY2RfZGF0YSh1aW50OF90IGMpOworCisjZW5kaWYgLyogU1Q3NTY1Ul9IXyAqLwpkaWZmIC0tZ2l0IGEvbGNkL2ZvbnQ1eDcuaCBiL2xjZC9mb250NXg3LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjgwMGZiZgotLS0gL2Rldi9udWxsCisrKyBiL2xjZC9mb250NXg3LmgKQEAgLTAsMCArMSwxMTggQEAKKy8qCisgKiBmb250NXg3LmgKKyAqCisgKiBDcmVhdGVkOiAyOC8wMy8yMDEyIDE6NTI6MjAgQU0KKyAqICBBdXRob3I6IGFuZHkKKyAqLyAKKworLy8gVGl0bGUJCTogR3JhcGhpYyBMQ0QgRm9udCAoQXNjaWkgQ2hhcmF0ZXJzKQorLy8gQXV0aG9yCQk6IFBhc2NhbCBTdGFuZworCisjaWZuZGVmIEZPTlQ1WDdfSF8KKyNkZWZpbmUgRk9OVDVYN19IXworCisvLyBzdGFuZGFyZCBhc2NpaSA1eDcgZm9udAorLy8gZGVmaW5lcyBhc2NpaSBjaGFyYWN0ZXJzIDB4MjAtMHg3RiAoMzItMTI3KQorc3RhdGljIGNvbnN0IGNoYXIgRm9udDV4N1tdIFBST0dNRU0gPSB7CisJMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwvLyAoc3BhY2UpCisJMHgwMCwgMHgwMCwgMHg1RiwgMHgwMCwgMHgwMCwvLyAhCisJMHgwMCwgMHgwNywgMHgwMCwgMHgwNywgMHgwMCwvLyAiCisJMHgxNCwgMHg3RiwgMHgxNCwgMHg3RiwgMHgxNCwvLyAjCisJMHgyNCwgMHgyQSwgMHg3RiwgMHgyQSwgMHgxMiwvLyAkCisJMHgyMywgMHgxMywgMHgwOCwgMHg2NCwgMHg2MiwvLyAlCisJMHgzNiwgMHg0OSwgMHg1NSwgMHgyMiwgMHg1MCwvLyAmCisJMHgwMCwgMHgwNSwgMHgwMywgMHgwMCwgMHgwMCwvLyAnCisJMHgwMCwgMHgxQywgMHgyMiwgMHg0MSwgMHgwMCwvLyAoCisJMHgwMCwgMHg0MSwgMHgyMiwgMHgxQywgMHgwMCwvLyApCisJMHgwOCwgMHgyQSwgMHgxQywgMHgyQSwgMHgwOCwvLyAqCisJMHgwOCwgMHgwOCwgMHgzRSwgMHgwOCwgMHgwOCwvLyArCisJMHgwMCwgMHg1MCwgMHgzMCwgMHgwMCwgMHgwMCwvLyAsCisJMHgwOCwgMHgwOCwgMHgwOCwgMHgwOCwgMHgwOCwvLyAtCisJMHgwMCwgMHg2MCwgMHg2MCwgMHgwMCwgMHgwMCwvLyAuCisJMHgyMCwgMHgxMCwgMHgwOCwgMHgwNCwgMHgwMiwvLyAvCisJMHgzRSwgMHg1MSwgMHg0OSwgMHg0NSwgMHgzRSwvLyAwCisJMHgwMCwgMHg0MiwgMHg3RiwgMHg0MCwgMHgwMCwvLyAxCisJMHg0MiwgMHg2MSwgMHg1MSwgMHg0OSwgMHg0NiwvLyAyCisJMHgyMSwgMHg0MSwgMHg0NSwgMHg0QiwgMHgzMSwvLyAzCisJMHgxOCwgMHgxNCwgMHgxMiwgMHg3RiwgMHgxMCwvLyA0CisJMHgyNywgMHg0NSwgMHg0NSwgMHg0NSwgMHgzOSwvLyA1CisJMHgzQywgMHg0QSwgMHg0OSwgMHg0OSwgMHgzMCwvLyA2CisJMHgwMSwgMHg3MSwgMHgwOSwgMHgwNSwgMHgwMywvLyA3CisJMHgzNiwgMHg0OSwgMHg0OSwgMHg0OSwgMHgzNiwvLyA4CisJMHgwNiwgMHg0OSwgMHg0OSwgMHgyOSwgMHgxRSwvLyA5CisJMHgwMCwgMHgzNiwgMHgzNiwgMHgwMCwgMHgwMCwvLyA6CisJMHgwMCwgMHg1NiwgMHgzNiwgMHgwMCwgMHgwMCwvLyA7CisJMHgwMCwgMHgwOCwgMHgxNCwgMHgyMiwgMHg0MSwvLyA8CisJMHgxNCwgMHgxNCwgMHgxNCwgMHgxNCwgMHgxNCwvLyA9CisJMHg0MSwgMHgyMiwgMHgxNCwgMHgwOCwgMHgwMCwvLyA+CisJMHgwMiwgMHgwMSwgMHg1MSwgMHgwOSwgMHgwNiwvLyA/CisJMHgzMiwgMHg0OSwgMHg3OSwgMHg0MSwgMHgzRSwvLyBACisJMHg3RSwgMHgxMSwgMHgxMSwgMHgxMSwgMHg3RSwvLyBBCisJMHg3RiwgMHg0OSwgMHg0OSwgMHg0OSwgMHgzNiwvLyBCCisJMHgzRSwgMHg0MSwgMHg0MSwgMHg0MSwgMHgyMiwvLyBDCisJMHg3RiwgMHg0MSwgMHg0MSwgMHgyMiwgMHgxQywvLyBECisJMHg3RiwgMHg0OSwgMHg0OSwgMHg0OSwgMHg0MSwvLyBFCisJMHg3RiwgMHgwOSwgMHgwOSwgMHgwMSwgMHgwMSwvLyBGCisJMHgzRSwgMHg0MSwgMHg0MSwgMHg1MSwgMHgzMiwvLyBHCisJMHg3RiwgMHgwOCwgMHgwOCwgMHgwOCwgMHg3RiwvLyBICisJMHgwMCwgMHg0MSwgMHg3RiwgMHg0MSwgMHgwMCwvLyBJCisJMHgyMCwgMHg0MCwgMHg0MSwgMHgzRiwgMHgwMSwvLyBKCisJMHg3RiwgMHgwOCwgMHgxNCwgMHgyMiwgMHg0MSwvLyBLCisJMHg3RiwgMHg0MCwgMHg0MCwgMHg0MCwgMHg0MCwvLyBMCisJMHg3RiwgMHgwMiwgMHgwNCwgMHgwMiwgMHg3RiwvLyBNCisJMHg3RiwgMHgwNCwgMHgwOCwgMHgxMCwgMHg3RiwvLyBOCisJMHgzRSwgMHg0MSwgMHg0MSwgMHg0MSwgMHgzRSwvLyBPCisJMHg3RiwgMHgwOSwgMHgwOSwgMHgwOSwgMHgwNiwvLyBQCisJMHgzRSwgMHg0MSwgMHg1MSwgMHgyMSwgMHg1RSwvLyBRCisJMHg3RiwgMHgwOSwgMHgxOSwgMHgyOSwgMHg0NiwvLyBSCisJMHg0NiwgMHg0OSwgMHg0OSwgMHg0OSwgMHgzMSwvLyBTCisJMHgwMSwgMHgwMSwgMHg3RiwgMHgwMSwgMHgwMSwvLyBUCisJMHgzRiwgMHg0MCwgMHg0MCwgMHg0MCwgMHgzRiwvLyBVCisJMHgxRiwgMHgyMCwgMHg0MCwgMHgyMCwgMHgxRiwvLyBWCisJMHg3RiwgMHgyMCwgMHgxOCwgMHgyMCwgMHg3RiwvLyBXCisJMHg2MywgMHgxNCwgMHgwOCwgMHgxNCwgMHg2MywvLyBYCisJMHgwMywgMHgwNCwgMHg3OCwgMHgwNCwgMHgwMywvLyBZCisJMHg2MSwgMHg1MSwgMHg0OSwgMHg0NSwgMHg0MywvLyBaCisJMHgwMCwgMHgwMCwgMHg3RiwgMHg0MSwgMHg0MSwvLyBbCisJMHgwMiwgMHgwNCwgMHgwOCwgMHgxMCwgMHgyMCwvLyAiXCIKKwkweDQxLCAweDQxLCAweDdGLCAweDAwLCAweDAwLC8vIF0KKwkweDA0LCAweDAyLCAweDAxLCAweDAyLCAweDA0LC8vIF4KKwkweDQwLCAweDQwLCAweDQwLCAweDQwLCAweDQwLC8vIF8KKwkweDAwLCAweDAxLCAweDAyLCAweDA0LCAweDAwLC8vIGAKKwkweDIwLCAweDU0LCAweDU0LCAweDU0LCAweDc4LC8vIGEKKwkweDdGLCAweDQ4LCAweDQ0LCAweDQ0LCAweDM4LC8vIGIKKwkweDM4LCAweDQ0LCAweDQ0LCAweDQ0LCAweDIwLC8vIGMKKwkweDM4LCAweDQ0LCAweDQ0LCAweDQ4LCAweDdGLC8vIGQKKwkweDM4LCAweDU0LCAweDU0LCAweDU0LCAweDE4LC8vIGUKKwkweDA4LCAweDdFLCAweDA5LCAweDAxLCAweDAyLC8vIGYKKwkweDA4LCAweDE0LCAweDU0LCAweDU0LCAweDNDLC8vIGcKKwkweDdGLCAweDA4LCAweDA0LCAweDA0LCAweDc4LC8vIGgKKwkweDAwLCAweDQ0LCAweDdELCAweDQwLCAweDAwLC8vIGkKKwkweDIwLCAweDQwLCAweDQ0LCAweDNELCAweDAwLC8vIGoKKwkweDAwLCAweDdGLCAweDEwLCAweDI4LCAweDQ0LC8vIGsKKwkweDAwLCAweDQxLCAweDdGLCAweDQwLCAweDAwLC8vIGwKKwkweDdDLCAweDA0LCAweDE4LCAweDA0LCAweDc4LC8vIG0KKwkweDdDLCAweDA4LCAweDA0LCAweDA0LCAweDc4LC8vIG4KKwkweDM4LCAweDQ0LCAweDQ0LCAweDQ0LCAweDM4LC8vIG8KKwkweDdDLCAweDE0LCAweDE0LCAweDE0LCAweDA4LC8vIHAKKwkweDA4LCAweDE0LCAweDE0LCAweDE4LCAweDdDLC8vIHEKKwkweDdDLCAweDA4LCAweDA0LCAweDA0LCAweDA4LC8vIHIKKwkweDQ4LCAweDU0LCAweDU0LCAweDU0LCAweDIwLC8vIHMKKwkweDA0LCAweDNGLCAweDQ0LCAweDQwLCAweDIwLC8vIHQKKwkweDNDLCAweDQwLCAweDQwLCAweDIwLCAweDdDLC8vIHUKKwkweDFDLCAweDIwLCAweDQwLCAweDIwLCAweDFDLC8vIHYKKwkweDNDLCAweDQwLCAweDMwLCAweDQwLCAweDNDLC8vIHcKKwkweDQ0LCAweDI4LCAweDEwLCAweDI4LCAweDQ0LC8vIHgKKwkweDBDLCAweDUwLCAweDUwLCAweDUwLCAweDNDLC8vIHkKKwkweDQ0LCAweDY0LCAweDU0LCAweDRDLCAweDQ0LC8vIHoKKwkweDAwLCAweDA4LCAweDM2LCAweDQxLCAweDAwLC8vIHsKKwkweDAwLCAweDAwLCAweDdGLCAweDAwLCAweDAwLC8vIHwKKwkweDAwLCAweDQxLCAweDM2LCAweDA4LCAweDAwLC8vIH0KKwkweDA4LCAweDA4LCAweDJBLCAweDFDLCAweDA4LC8vIC0+CisJMHgwOCwgMHgxQywgMHgyQSwgMHgwOCwgMHgwOCAvLyA8LQorfTsKKworCisKKworI2VuZGlmIC8qIEZPTlQ1WDdfSF8gKi8KZGlmZiAtLWdpdCBhL2xjZC9nbGNkLmMgYi9sY2QvZ2xjZC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEwZjE0NjEKLS0tIC9kZXYvbnVsbAorKysgYi9sY2QvZ2xjZC5jCkBAIC0wLDAgKzEsMjQyIEBACisvKioKKwlcZmlsZSBnbGNkLmMKKwlcYXV0aG9yIEFuZHkgR29jaworCVxicmllZiBCYXNpYyBHTENEIGZ1bmN0aW9ucyBhZmZlY3RpbmcgYm91bmRpbmcgYm94IG1hbmlwdWxhdGlvbiwKKwkgICAgICAgY2xlYXJpbmcgb2Ygc2NyZWVuIGFuZCBidWZmZXJzLCBhbmQgYmFzaWMgc2Nyb2xsIGZ1bmN0aW9ucy4KKyAqLworCisvKgorCUNvcHlyaWdodCAoYykgMjAxMiwgQW5keSBHb2NrCisKKwlBbGwgcmlnaHRzIHJlc2VydmVkLgorCisJUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisJbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisJCSogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKwkJICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisJCSogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKwkJICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisJCSAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKwkJKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEFuZHkgR29jayBub3IgdGhlCisJCSAgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMKKwkJICBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKworCVRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKwlBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorCVdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKwlESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBTkRZIEdPQ0sgQkUgTElBQkxFIEZPUiBBTlkKKwlESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworCShJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKwlMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKwlPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorCShJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisJU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlICJnbGNkLmgiCisKKy8qKiBcYWRkdG9ncm91cCBHbG9iYWxWYXJzIEdsb2JhbCBWYXJpYWJsZXMKKyAqICBAeworICovCisKKy8qKgorICogIFNjcmVlbiBidWZmZXIKKyAqCisgKiAgUmVxdWlyZXMgYXQgbGVhc3Qgb25lIGJpdCBmb3IgZXZlcnkgcGl4ZWwgKGUuZyA1MDQgYnl0ZXMgZm9yIDQ4eDg0IExDRCkKKyAqLwordWludDhfdCBnbGNkX2J1ZmZlcltHTENEX0xDRF9XSURUSCAqIEdMQ0RfTENEX0hFSUdIVCAvIDhdOworCisvKioKKyAqIEtlZXBzIHRyYWNrIG9mIGJvdW5kaW5nIGJveCBvZiBhcmVhIG9uIExDRCB3aGljaCBuZWVkIHRvIGJlCisgKiB1cGRhdGVkIG5leHQgcmVyZXNoIGN5Y2xlCisgKi8KK2dsY2RfQm91bmRpbmdCb3hfdCBnbGNkX2Jib3g7CisKKy8qKgorICogUG9pbnRlciB0byBzY3JlZW4gYnVmZmVyIGN1cnJlbnRseSBpbiB1c2UuCisgKi8KK3VpbnQ4X3QqIGdsY2RfYnVmZmVyX3NlbGVjdGVkOworCit1aW50OF90IGdsY2RfZGlzcF9yZXZlcnNlX2VuID0gMDsKKworLyoqCisgKiBQb2ludGVyIHRvIGJvdW5kaW5nIGJveCBjdXJyZW50bHkgaW4gdXNlLgorICovCitnbGNkX0JvdW5kaW5nQm94X3QqIGdsY2RfYmJveF9zZWxlY3RlZDsKKworLyoqIEB9ICovCisKK3ZvaWQgZ2xjZF9zZXRfcmV2ZXJzZV9zdGEodWludDhfdCBzdGEpCit7CisgIGlmKCFzdGEpCisgICAgZ2xjZF9kaXNwX3JldmVyc2VfZW4gPSAwOworICBlbHNlCisgICAgZ2xjZF9kaXNwX3JldmVyc2VfZW4gPSAxOworfQorCit1aW50OF90IGdsY2RfZ2V0X3JldmVyc2Vfc3RhKHZvaWQpCit7CisgIHJldHVybiBnbGNkX2Rpc3BfcmV2ZXJzZV9lbjsKK30KKwordm9pZCBnbGNkX3VwZGF0ZV9iYm94KHVpbnQ4X3QgeG1pbiwgdWludDhfdCB5bWluLCB1aW50OF90IHhtYXgsIHVpbnQ4X3QgeW1heCkKK3sKKyAgLyogS2VlcCBhbmQgY2hlY2sgYm91bmRpbmcgYm94IHdpdGhpbiBsaW1pdHMgb2YgTENEIHNjcmVlbiBkaW1lbnNpb25zICovCisgIGlmKHhtaW4gPiAoR0xDRF9MQ0RfV0lEVEgtMSkpCisgIHsKKyAgICB4bWluID0gR0xDRF9MQ0RfV0lEVEgtMTsKKyAgfQorICBpZih4bWF4ID4gKEdMQ0RfTENEX1dJRFRILTEpKQorICB7CisgICAgeG1heCA9IEdMQ0RfTENEX1dJRFRILTE7CisgIH0KKworICBpZih5bWluID4gKEdMQ0RfTENEX0hFSUdIVC0xKSkKKyAgeworICAgIHltaW4gPSBHTENEX0xDRF9IRUlHSFQtMTsKKyAgfQorICBpZih5bWF4ID4gKEdMQ0RfTENEX0hFSUdIVC0xKSkKKyAgeworICAgIHltYXggPSBHTENEX0xDRF9IRUlHSFQtMTsKKyAgfQorCisgIC8qIFVwZGF0ZSB0aGUgYm91bmRpbmcgYm94IHNpemUgKi8KKyAgaWYoeG1pbiA8IGdsY2RfYmJveF9zZWxlY3RlZC0+eF9taW4pCisgIHsKKyAgICBnbGNkX2Jib3hfc2VsZWN0ZWQtPnhfbWluID0geG1pbjsKKyAgfQorICBpZih4bWF4ID4gZ2xjZF9iYm94X3NlbGVjdGVkLT54X21heCkKKyAgeworICAgIGdsY2RfYmJveF9zZWxlY3RlZC0+eF9tYXggPSB4bWF4OworICB9CisgIGlmKHltaW4gPCBnbGNkX2Jib3hfc2VsZWN0ZWQtPnlfbWluKQorICB7CisgICAgZ2xjZF9iYm94X3NlbGVjdGVkLT55X21pbiA9IHltaW47CisgIH0KKyAgaWYoeW1heCA+IGdsY2RfYmJveF9zZWxlY3RlZC0+eV9tYXgpCisgIHsKKyAgICBnbGNkX2Jib3hfc2VsZWN0ZWQtPnlfbWF4ID0geW1heDsKKyAgfQorfQorCit2b2lkIGdsY2RfcmVzZXRfYmJveCgpCit7CisgIC8qIFVzZWQgYWZ0ZXIgcGh5c2ljYWxseSB3cml0aW5nIHRvIHRoZSBMQ0QgKi8KKyAgZ2xjZF9iYm94X3NlbGVjdGVkLT54X21pbiA9IEdMQ0RfTENEX1dJRFRIIC0gMTsKKyAgZ2xjZF9iYm94X3NlbGVjdGVkLT54X21heCA9IDA7CisgIGdsY2RfYmJveF9zZWxlY3RlZC0+eV9taW4gPSBHTENEX0xDRF9IRUlHSFQgLTE7CisgIGdsY2RfYmJveF9zZWxlY3RlZC0+eV9tYXggPSAwOworfQorCit2b2lkIGdsY2RfYmJveF9yZXNldCgpCit7CisgIGdsY2RfcmVzZXRfYmJveCgpOworfQorCit2b2lkIGdsY2RfYmJveF9yZWZyZXNoKCkKK3sKKyAgLyogTWFya3MgYm91bmRpbmcgYm94IGFzIGVudGlyZSBzY3JlZW4sIHNvIG9uIG5leHQgZ2xjZF93cml0ZSgpLCBpdCB3cml0ZXMgdGhlIGVudGlyZSBidWZmZXIgdG8gdGhlIExDRCAqLworICBnbGNkX2Jib3hfc2VsZWN0ZWQtPnhfbWluID0gMDsKKyAgZ2xjZF9iYm94X3NlbGVjdGVkLT54X21heCA9IEdMQ0RfTENEX1dJRFRIIC0gMTsKKyAgZ2xjZF9iYm94X3NlbGVjdGVkLT55X21pbiA9IDA7CisgIGdsY2RfYmJveF9zZWxlY3RlZC0+eV9tYXggPSBHTENEX0xDRF9IRUlHSFQgLTE7Cit9CisKK3ZvaWQgZ2xjZF9jbGVhcih2b2lkKQoreworICBtZW1zZXQoZ2xjZF9idWZmZXJfc2VsZWN0ZWQsIDB4MDAsIEdMQ0RfTENEX1dJRFRIICogR0xDRF9MQ0RfSEVJR0hUIC8gOCk7CisgIGdsY2RfdXBkYXRlX2Jib3goMCwwLEdMQ0RfTENEX1dJRFRIIC0gMSxHTENEX0xDRF9IRUlHSFQgLSAxKTsKKyAgZ2xjZF93cml0ZSgpOworfQorCit2b2lkIGdsY2RfY2xlYXJfYnVmZmVyKHZvaWQpCit7CisgIG1lbXNldChnbGNkX2J1ZmZlcl9zZWxlY3RlZCwgMHgwMCwgR0xDRF9MQ0RfV0lEVEggKiBHTENEX0xDRF9IRUlHSFQgLyA4KTsKKyAgZ2xjZF91cGRhdGVfYmJveCgwLDAsR0xDRF9MQ0RfV0lEVEggLSAxLEdMQ0RfTENEX0hFSUdIVCAtIDEpOworfQorCit2b2lkIGdsY2Rfc2VsZWN0X3NjcmVlbih1aW50OF90KiBidWZmZXIsIGdsY2RfQm91bmRpbmdCb3hfdCogYmJveCkKK3sKKyAgZ2xjZF9idWZmZXJfc2VsZWN0ZWQgPSBidWZmZXI7CisgIGdsY2RfYmJveF9zZWxlY3RlZCA9IGJib3g7Cit9CisKK3ZvaWQgZ2xjZF9zY3JvbGwoaW50OF90IHgsIGludDhfdCB5KQoreworICAvKiogXHRvZG8gU2tlbGV0b24gKi8KKworICB1aW50OF90IHJvdzsKKworICBmb3Iocm93PTA7IHJvdzwoR0xDRF9MQ0RfSEVJR0hUIC8gOCk7IHJvdysrKQorICB7CisgICAgdWludDhfdCB4OworICAgIGZvcih4PTA7IHg8R0xDRF9MQ0RfV0lEVEg7IHgrKykKKyAgICB7CisKKyAgICB9CisgIH0KK30KKwordm9pZCBnbGNkX3Njcm9sbF9saW5lKHZvaWQpCit7CisgIHVpbnQ4X3QgeTsKKyAgdWludDhfdCBudW1iZXJfb2Zfcm93cyA9IEdMQ0RfTENEX0hFSUdIVCAvIDg7CisgIGZvcih5PTA7IHk8bnVtYmVyX29mX3Jvd3M7IHkrKykKKyAgeworICAgIGlmKHkgPCAobnVtYmVyX29mX3Jvd3MgLSAxKSkKKyAgICB7CisgICAgICAvKiBBbGwgbGluZXMgZXhjZXB0IHRoZSBsYXN0ICovCisgICAgICBtZW1jcHkoZ2xjZF9idWZmZXJfc2VsZWN0ZWQgKyB5KkdMQ0RfTENEX1dJRFRILAorICAgICAgICAgICAgIGdsY2RfYnVmZmVyX3NlbGVjdGVkICsgeSpHTENEX0xDRF9XSURUSCArIEdMQ0RfTENEX1dJRFRILCBHTENEX0xDRF9XSURUSCk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAvKiBMYXN0IGxpbmUsIGNsZWFyIGl0ICovCisgICAgICBtZW1zZXQoZ2xjZF9idWZmZXJfc2VsZWN0ZWQgKyAobnVtYmVyX29mX3Jvd3MgLSAxKSpHTENEX0xDRF9XSURUSCwgMHgwMCwgR0xDRF9MQ0RfV0lEVEgpOworICAgIH0KKyAgfQorICBnbGNkX3VwZGF0ZV9iYm94KDAsMCxHTENEX0xDRF9XSURUSCAtIDEsR0xDRF9MQ0RfSEVJR0hUIC0gMSk7Cit9CisKK3ZvaWQgZ2xjZF9pbml0KHZvaWQpCit7CisgIGdsY2RfSFdfaW5pdCgpOworCisgIGdsY2Rfc2VsZWN0X3NjcmVlbihnbGNkX2J1ZmZlciwmZ2xjZF9iYm94KTsKKyAgZ2xjZF9jbGVhcigpOworfQordm9pZCBnbGNkX3dyaXRlKCkKK3sKKworICB1aW50OF90IGJhbms7CisKKyAgZm9yKGJhbmsgPSAwOyBiYW5rIDwgR0xDRF9OVU1CRVJfT0ZfQkFOS1M7IGJhbmsrKykKKyAgeworICAgIC8qIEVhY2ggYmFuayBpcyBhIHNpbmdsZSByb3cgOCBiaXRzIHRhbGwgKi8KKyAgICB1aW50OF90IGNvbHVtbjsKKworICAgIGlmKGdsY2RfYmJveF9zZWxlY3RlZC0+eV9taW4gPj0gKGJhbmsrMSkqOCkKKyAgICB7CisgICAgICBjb250aW51ZTsgLyogU2tpcCB0aGUgZW50aXJlIGJhbmsgKi8KKyAgICB9CisKKyAgICBpZihnbGNkX2Jib3hfc2VsZWN0ZWQtPnlfbWF4IDwgYmFuayo4KQorICAgIHsKKyAgICAgIGJyZWFrOyAgICAvKiBObyBtb3JlIGJhbmtzIG5lZWQgdXBkYXRpbmcgKi8KKyAgICB9CisKKyAgICBnbGNkX3NldF95X2FkZHJlc3MoYmFuayk7CisgICAgZ2xjZF9zZXRfeF9hZGRyZXNzKGdsY2RfYmJveF9zZWxlY3RlZC0+eF9taW4pOworCisgICAgZm9yKGNvbHVtbiA9IGdsY2RfYmJveF9zZWxlY3RlZC0+eF9taW47IGNvbHVtbiA8PSBnbGNkX2Jib3hfc2VsZWN0ZWQtPnhfbWF4OyBjb2x1bW4rKykKKyAgICB7CisgICAgICBnbGNkX2RhdGEoZ2xjZF9idWZmZXJfc2VsZWN0ZWRbR0xDRF9OVU1CRVJfT0ZfQ09MUyAqIGJhbmsgKyBjb2x1bW5dKTsKKyAgICB9CisgIH0KKworICBnbGNkX3Jlc2V0X2Jib3goKTsKKworfQorCmRpZmYgLS1naXQgYS9sY2QvZ2xjZC5oIGIvbGNkL2dsY2QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNTc3ODc4Ci0tLSAvZGV2L251bGwKKysrIGIvbGNkL2dsY2QuaApAQCAtMCwwICsxLDI1MSBAQAorLyoqCisgICBcZmlsZSBnbGNkLmgKKyAgIFxicmllZiBHTENEIExpYnJhcnkgbWFpbiBoZWFkZXIgZmlsZS4gVGhpcyBmaWxlIG11c3QgYmUgaW5jbHVkZWQgaW50byBwcm9qZWN0LgorICAgXGF1dGhvciBBbmR5IEdvY2sKKyAqLyAKKworLyoKKwlDb3B5cmlnaHQgKGMpIDIwMTIsIEFuZHkgR29jaworCisJQWxsIHJpZ2h0cyByZXNlcnZlZC4KKworCVJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorCW1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorCQkqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisJCSAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorCQkqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisJCSAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorCQkgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisJCSogTmVpdGhlciB0aGUgbmFtZSBvZiBBbmR5IEdvY2sgbm9yIHRoZQorCQkgIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzCisJCSAgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisKKwlUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisJQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKwlXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisJRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQU5EWSBHT0NLIEJFIExJQUJMRSBGT1IgQU5ZCisJRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKwkoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisJTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisJT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKwkoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworCVNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI2lmbmRlZiBfR0xDRF9ICisjZGVmaW5lIF9HTENEX0gKKworI2luY2x1ZGUgInN0bTMyZjEweC5oIgorI2luY2x1ZGUgImdsY2Rfc3BpLmgiCisjaW5jbHVkZSAiU1Q3NTY1Ui5oIgorCisKK2V4dGVybiB2b2lkIGRlbGF5X21zKHVpbnQzMl90IG1zKTsKKyNkZWZpbmUgUFJPR01FTQorCisKKy8qIE1hY3JvcyAqLworCisjZGVmaW5lIHN3YXAoYSwgYikgeyB1aW50OF90IHQgPSBhOyBhID0gYjsgYiA9IHQ7IH0KKworLyogRGVmaW5pbmcgbmV3IHR5cGVzICovCisKKy8qKgorICogRm9udCB0YWJsZSB0eXBlCisgKi8KK3R5cGVkZWYgZW51bSB7CisJU1RBTkcsCisJTUlLUk8sCisJR0xDRF9VVElMUworfSBmb250X3RhYmxlX3R5cGVfdDsKKworLyoqCisgKiBCb3VuZGluZyBib3ggZm9yIHBpeGVscyB0aGF0IG5lZWQgdG8gYmUgdXBkYXRlZAorICovCit0eXBlZGVmIHN0cnVjdCB7CisJdWludDhfdCB4X21pbjsKKwl1aW50OF90IHlfbWluOworCXVpbnQ4X3QgeF9tYXg7CisJdWludDhfdCB5X21heDsKK30gZ2xjZF9Cb3VuZGluZ0JveF90OworCisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSAiZ2xjZF9ncmFwaGljcy5oIgorI2luY2x1ZGUgImdsY2RfZ3JhcGhzLmgiCisjaW5jbHVkZSAiZ2xjZF90ZXh0X3RpbnkuaCIKKyNpbmNsdWRlICJnbGNkX3RleHQuaCIKKyNpbmNsdWRlICJ1bml0X3Rlc3RzLmgiCisjaW5jbHVkZSAiZm9udDV4Ny5oIgorI2luY2x1ZGUgIkVhcnRoYm91bmRfMTJ4MTlfNDh0bzU3LmgiCisjaW5jbHVkZSAiTGliZXJhdGlvbl9TYW5zMTV4MjFfTnVtYmVycy5oIgorCisvKioKKyAqIFxuYW1lIENvbG91ciBDb25zdGFudHMKKyAqIEB7CisgKi8KKyNkZWZpbmUgQkxBQ0sgMQorI2RlZmluZSBXSElURSAwCisvKipAfSovCisKKy8qKgorICogXG5hbWUgTENEIERpbWVuc2lvbnMKKyAqIEB7CisgKi8KKyNpZiAhZGVmaW5lZChHTENEX0xDRF9XSURUSCkgfHwgIWRlZmluZWQoR0xDRF9MQ0RfSEVJR0hUKQorCisJLyoqCisJICogVXNlciBzcGVjaWZpZWQgR0xDRCB3aWR0aCBpbiBwaXhlbHMKKwkgKiBTZXQgdG8gMCBmb3IgYXV0b21hdGljIGFzc2lnbm1lbnQgYmFzZWQgb24gY29udHJvbGxlci4KKwkgKi8KKwkjZGVmaW5lIEdMQ0RfTENEX1dJRFRIICAxMjgKKworCS8qKgorCSAqIFVzZXIgc3BlY2lmaWVkIEdMQ0QgaGVpZ2h0IGluIHBpeGVscworCSAqIFNldCB0byAwIGZvciBhdXRvbWF0aWMgYXNzaWdubWVudCBiYXNlZCBvbiBjb250cm9sbGVyLgorCSAqLworCisJI2RlZmluZSBHTENEX0xDRF9IRUlHSFQgNjQKKworCS8qIEF1dG9tYXRpYyBhc3NpZ25tZW50IG9mIHdpZHRoIGFuZCBoZWlnaHQsIGlmIHJlcXVpcmVkLiAqLworCSNpZiAhR0xDRF9MQ0RfV0lEVEggJiYgIUdMQ0RfTENEX0hFSUdIVAorCQkjdW5kZWYgR0xDRF9MQ0RfV0lEVEgKKwkJI3VuZGVmIEdMQ0RfTENEX0hFSUdIVAorCQkjaWYgZGVmaW5lZChHTENEX0NPTlRST0xMRVJfUENEODU0NCkKKwkJCS8qIDg0eDQ4IGlzIHN0YW5kYXJkIGZvciB0aGUgcG9wdWxhciBOb2tpYSBMQ0QgKi8KKwkJCSNkZWZpbmUgR0xDRF9MQ0RfV0lEVEggODQKKwkJCSNkZWZpbmUgR0xDRF9MQ0RfSEVJR0hUIDQ4CisJCSNlbGlmIGRlZmluZWQoR0xDRF9DT05UUk9MTEVSX1NUNzU2NVIpIHx8IGRlZmluZWQoR0xDRF9DT05UUk9MTEVSX05UNzU0NTEpCisJCQkvKiAxMjh4NjQgaXMgdGhlIG1vc3QgcG9wdWxhciBmb3IgdGhpcywgc28gd2UnbGwgdXNlIHRoYXQgYXMgZGVmYXVsdCAqLworCQkJI2RlZmluZSBHTENEX0xDRF9XSURUSCAxMjgKKwkJCSNkZWZpbmUgR0xDRF9MQ0RfSEVJR0hUIDY0CisJCSNlbHNlCisJCQkjZGVmaW5lIEdMQ0RfTENEX1dJRFRIIDEyOAorCQkJI2RlZmluZSBHTENEX0xDRF9IRUlHSFQgNjQKKwkJI2VuZGlmCisJI2VuZGlmCisKKyNlbmRpZiAvKiAhZGVmaW5lZChHTENEX0xDRF9XSURUSCkgfHwgIWRlZmluZWQoR0xDRF9MQ0RfSEVJR0hUKSAqLworCisvKgorICogR0xDRF9OVU1CRVJfT0ZfQkFOS1MgaXMgdHlwaWNhbGx5IEdMQ0RfTENEX0hFSUdIVC84CisgKiBEb24ndCBhZGp1c3QgdGhlc2UgYmVsb3cgdW5sZXNzIHJlcXVpcmVkLgorICovCisjZGVmaW5lIEdMQ0RfTlVNQkVSX09GX0JBTktTIChHTENEX0xDRF9XSURUSCAvIDgpCisjZGVmaW5lIEdMQ0RfTlVNQkVSX09GX0NPTFMgIEdMQ0RfTENEX1dJRFRICisKKy8qKkB9Ki8KKworI2lmICFkZWZpbmVkKEdMQ0RfUkVTRVRfVElNRSkKKwkvKiogUmVzZXQgZHVyYXRpb24gYnkgZ2xjZF9yZXNldCgpLCBpbiBtaWxsaXNlY29uZHMgKi8KKwkjZGVmaW5lIEdMQ0RfUkVTRVRfVElNRSAyCisjZW5kaWYKKy8qIAorICogU2V0IHRvIGN1c3RvbSB2YWx1ZSwgb3IgbGVhdmUgYXQgMCBmb3IgYXV0b21hdGljIGFzc2lnbm1lbnQuCisgKiBGb3IgY3VzdG9tIGRpbWVuc2lvbnMsIHVzZXJzIGNhbiBkZWZpbmUgdGhpcyBpbiB0aGVpciBjb21waWxlciBvcHRpb25zLgorICovCisKKy8qIEdsb2JhbCB2YXJpYWJsZXMgdXNlZCBmb3IgR0xDRCBsaWJyYXJ5ICovCitleHRlcm4gdWludDhfdCBnbGNkX2J1ZmZlcltHTENEX0xDRF9XSURUSCAqIEdMQ0RfTENEX0hFSUdIVCAvIDhdOworZXh0ZXJuIGdsY2RfQm91bmRpbmdCb3hfdCBnbGNkX2Jib3g7CitleHRlcm4gdWludDhfdCAqZ2xjZF9idWZmZXJfc2VsZWN0ZWQ7CitleHRlcm4gZ2xjZF9Cb3VuZGluZ0JveF90ICpnbGNkX2Jib3hfc2VsZWN0ZWQ7CisKKy8qKiBcbmFtZSBCYXNlIEZ1bmN0aW9ucyAKKyAqICBAeworICovCisKKy8qKgorICogVXBkYXRlIGJvdW5kaW5nIGJveC4KKyAqCisgKiBUaGUgYm91bmRpbmcgYm94IGRlZmluZXMgYSByZWN0YW5nbGUgaW4gd2hpY2ggbmVlZHMgdG8gYmUgcmVmcmVzaGVkIG5leHQgdGltZQorICogZ2xjZF93cml0ZSgpIGlzIGNhbGxlZC4gZ2xjZF93cml0ZSgpIG9ubHkgd3JpdGVzIHRvIHRob3NlIHBpeGVscyBpbnNpZGUgdGhlIGJvdW5kaW5nIGJveCBwbHVzIGFueQorICogc3Vycm91bmRpbmcgcGl4ZWxzIHdoaWNoIGFyZSByZXF1aXJlZCBhY2NvcmRpbmcgdG8gdGhlIGJhbmsvY29sdW1uIHdyaXRlIG1ldGhvZCBvZiB0aGUgY29udHJvbGxlci4KKyAqCisgKiBEZWZpbmUgYSByZWN0YW5nbGUgaGVyZSwgYW5kIGl0IHdpbGwgYmUgPGVtPmFkZGVkPC9lbT4gdG8gdGhlIGV4aXN0aW5nIGJvdW5kaW5nIGJveC4KKyAqCisgKiBccGFyYW0geG1pbiBNaW5pbXVtIHggdmFsdWUgb2YgcmVjdGFuZ2xlCisgKiBccGFyYW0geW1pbiBNaW5pbXVtIHkgdmFsdWUgb2YgcmVjdGFuZ2xlCisgKiBccGFyYW0geG1heCBNYXhpbXVtIHggdmFsdWUgb2YgcmVjdGFuZ2xlCisgKiBccGFyYW0geW1heCBNYXhpbXVtIHkgdmFsdWUgb2YgcmVjdGFuZ2xlCisgKiBcc2VlIGdsY2RfYmJveAorICogXHNlZSBnbGNkX2Jib3hfc2VsZWN0ZWQKKyAqLwordm9pZCBnbGNkX3VwZGF0ZV9iYm94KHVpbnQ4X3QgeG1pbiwgdWludDhfdCB5bWluLCB1aW50OF90IHhtYXgsIHVpbnQ4X3QgeW1heCk7CisKKy8qKgorICogUmVzZXQgdGhlIGJvdW5kaW5nIGJveC4KKyAqIEFmdGVyIHJlc2V0dGluZyB0aGUgYm91bmRpbmcgYm94LCBubyBwaXhlbHMgYXJlIG1hcmtlZCBhcyBuZWVkaW5nIHJlZnJlc2hpbmcuCisgKi8KK3ZvaWQgZ2xjZF9yZXNldF9iYm94KHZvaWQpOworCisvKioKKyAqIFNhbWUgYXMgZ2xjZF9yZXNldF9iYm94KCkKKyAqLwordm9pZCBnbGNkX2Jib3hfcmVzZXQodm9pZCk7CisKKy8qKgorICogTWFya3MgdGhlIGVudGlyZSBkaXNwbGF5IGZvciByZS13cml0aW5nLgorICovCit2b2lkIGdsY2RfYmJveF9yZWZyZXNoKHZvaWQpOworCQorLyoqCisgKiBDbGVhciB0aGUgZGlzcGxheS4gVGhpcyB3aWxsIGNsZWFyIHRoZSBidWZmZXIgYW5kIHBoeXNpY2FsbHkgd3JpdGUgYW5kIGNvbW1pdCBpdCB0byB0aGUgTENECisgKi8KK3ZvaWQgZ2xjZF9jbGVhcih2b2lkKTsKKworLyoqCisgKiBDbGVhciB0aGUgZGlzcGxheSBidWZmZXIgb25seS4gVGhpcyBkb2VzIG5vdCBwaHlzaWNhbGx5IHdyaXRlIHRoZSBjaGFuZ2VzIHRvIHRoZSBMQ0QKKyAqLwordm9pZCBnbGNkX2NsZWFyX2J1ZmZlcih2b2lkKTsKKworLyoqCisgKiBTZWxlY3Qgc2NyZWVuIGJ1ZmZlciBhbmQgYm91bmRpbmcgYm94IHN0cnVjdHVyZS4KKyAqIFRoaXMgc2hvdWxkIGJlIHNlbGVjdGVkIGF0IGluaXRpYWxpc2F0aW9uLiBUaGVyZSBhcmUgZnV0dXJlIHBsYW5zIHRvIHN1cHBvcnQgbXVsdGlwbGUgc2NyZWVuIGJ1ZmZlcnMKKyAqIGJ1dCB0aGlzIG5vdCB5ZXQgYXZhaWxhYmxlLgorICogXHBhcmFtIGJ1ZmZlciBQb2ludGVyIHRvIHNjcmVlbiBidWZmZXIKKyAqIFxwYXJhbSBiYm94ICAgUG9pbnRlciB0byBib3VuZGluZyBib3ggb2JqZWN0LgorICogXHNlZSBnbGNkX0JvdW5kaW5nQm94X3QKKyAqLwordm9pZCBnbGNkX3NlbGVjdF9zY3JlZW4odWludDhfdCAqYnVmZmVyLCBnbGNkX0JvdW5kaW5nQm94X3QgKmJib3gpOworCisvKioKKyAqIFNjcm9sbCBlbnRpcmUgc2NyZW5lIGJ1ZmZlciBieSB4IGFuZCB5IHBpeGVscy4gKG5vdCBpbXBsZW1lbnRlZCB5ZXQpCisgKiBcbm90ZSBJdGVtcyBzY3JvbGxlZCBvZmYgdGhlIGV4dGVudHMgb2YgdGhlIGRpc3BsYXkgZGltZW5zaW9ucyB3aWxsIGJlIGxvc3QuCisgKgorICogXHBhcmFtIHggWCBkaXN0YW5jZSB0byBzY3JvbGwKKyAqIFxwYXJhbSB5IFkgZGlzdGFuY2UgdG8gc2Nyb2xsCisgKi8KK3ZvaWQgZ2xjZF9zY3JvbGwoaW50OF90IHgsIGludDhfdCB5KTsKKworLyoqCisgKiBTY3JvbGwgc2NyZWVuIGJ1ZmZlciB1cCBieSA4IHBpeGVscy4KKyAqIFRoaXMgaXMgZGVzaWduZWQgdG8gYmUgdXNlZCBpbiBjb25qdW5jaXRvbiB3aXRoIHRpbnkgdGV4dCBmdW5jdGlvbnMgd2hpY2ggYXJlIDggYml0cyBoaWdoLgorICogXHNlZSBUaW55IFRleHQKKyAqLwordm9pZCBnbGNkX3Njcm9sbF9saW5lKHZvaWQpOworCit2b2lkIGdsY2Rfc2V0X3JldmVyc2Vfc3RhKHVpbnQ4X3Qgc3RhKTsKK3VpbnQ4X3QgZ2xjZF9nZXRfcmV2ZXJzZV9zdGEodm9pZCk7CisKK3ZvaWQgZ2xjZF9IV19pbml0KHZvaWQpOworCit2b2lkIGdsY2Rfd3JpdGUodm9pZCk7CisKKy8qKiBAfSovCisKK3R5cGVkZWYgc3RydWN0IHsKKwljb25zdCBjaGFyICpmb250X3RhYmxlOworCXVpbnQ4X3Qgd2lkdGg7CisJdWludDhfdCBoZWlnaHQ7CisJY2hhciBzdGFydF9jaGFyOworCWNoYXIgZW5kX2NoYXI7CisJZm9udF90YWJsZV90eXBlX3QgdGFibGVfdHlwZTsKK30gZ2xjZF9Gb250Q29uZmlnX3Q7CisKKworCitleHRlcm4gdWludDhfdCAqZ2xjZF9idWZmZXJfc2VsZWN0ZWQ7CitleHRlcm4gZ2xjZF9Cb3VuZGluZ0JveF90ICpnbGNkX2Jib3hfc2VsZWN0ZWQ7CitleHRlcm4gZ2xjZF9Gb250Q29uZmlnX3QgZm9udF9jdXJyZW50OworCisjZW5kaWYKZGlmZiAtLWdpdCBhL2xjZC9nbGNkX2dyYXBoaWNzLmggYi9sY2QvZ2xjZF9ncmFwaGljcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3NjU2NWYKLS0tIC9kZXYvbnVsbAorKysgYi9sY2QvZ2xjZF9ncmFwaGljcy5oCkBAIC0wLDAgKzEsMTY5IEBACisvKioKKyAgIFxmaWxlIGdsY2RfZ3JhcGhpY3MuaAorICAgXGJyaWVmIEdyYXBoaWNzIHJvdXRpbmVzCisgICBcYXV0aG9yIEFuZHkgR29jaworICovIAorCisvKgorCUNvcHlyaWdodCAoYykgMjAxMiwgQW5keSBHb2NrCisKKwlBbGwgcmlnaHRzIHJlc2VydmVkLgorCisJUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisJbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisJCSogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKwkJICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisJCSogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKwkJICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisJCSAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKwkJKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEFuZHkgR29jayBub3IgdGhlCisJCSAgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMKKwkJICBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKworCVRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKwlBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorCVdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKwlESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBTkRZIEdPQ0sgQkUgTElBQkxFIEZPUiBBTlkKKwlESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworCShJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKwlMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKwlPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorCShJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisJU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjaWZuZGVmIEdMQ0RfR1JBUEhJQ1NfSF8KKyNkZWZpbmUgR0xDRF9HUkFQSElDU19IXworCisvKiogXGFkZHRvZ3JvdXAgR3JhcGhpY3MgR3JhcGhpY3MKKyAqICBHcmFwaGljcyBzcGVjaWZpYyBmdW5jdGlvbnMgc3VjaCBhcyBkcmF3aW5nIGxpbmVzLCBjaXJjbGVzLCByZWN0YW5nbGVzIGV0Yy4KKyAqICBAeworICovCisKKy8qKgorICogU2V0IHBpeGVsIHRvIHNwZWNpZmllZCBjb2xvdXIKKyAqIFxwYXJhbSB4IFgtY29vcmRpbmF0ZQorICogXHBhcmFtIHkgWS1jb29yZGluYXRlCisgKiBccGFyYW0gY29sb3IgQ29sb3VyIHRvIHNldCBwaXhlbAorICogXHNlZSBDb2xvdXJDb25zdGFudHMKKyAqLwordm9pZCBnbGNkX3NldF9waXhlbCh1aW50OF90IHgsIHVpbnQ4X3QgeSwgdWludDhfdCBjb2xvcik7CisKKy8qKgorICogR2V0IHN0YXRlIG9mIHBpeGVsIGZyb20gc3BlY2lmaWVkIGxvY2F0aW9uCisgKiBccGFyYW0geCBYLWNvb3JkaW5hdGUKKyAqIFxwYXJhbSB5IFktY29vcmRpbmF0ZQorICogXHJldHVybiBDb2xvdXIKKyAqLwordWludDhfdCBnbGNkX2dldF9waXhlbCh1aW50OF90IHgsIHVpbnQ4X3QgeSk7CisKKy8qKgorICogSW52ZXJ0IHN0YXRlIG9mIHBpeGVsIG9mIHNwZWNpZmllZCBsb2NhdGlvbgorICogXHBhcmFtIHggWC1jb29yZGluYXRlCisgKiBccGFyYW0geSBZLWNvb3JkaW5hdGUKKyAqLwordm9pZCBnbGNkX2ludmVydF9waXhlbCh1aW50OF90IHgsIHVpbnQ4X3QgeSk7CisKKy8qKgorICogRHJhdyBsaW5lCisgKiBccGFyYW0geDAgU3RhcnQgeC1jb29yZGluYXRlCisgKiBccGFyYW0geTAgU3RhcnQgeS1jb29yZGluYXRlCisgKiBccGFyYW0geDEgRW5kIHgtY29vcmRpbmF0ZQorICogXHBhcmFtIHkxIEVuZCB5LWNvb3JkaW5hdGUKKyAqIFxwYXJhbSBjb2xvciBDb2xvdXIgdG8gc2V0IHBpeGVscworICogXHNlZSBDb2xvdXJDb25zdGFudHMKKyAqLwordm9pZCBnbGNkX2RyYXdfbGluZSh1aW50OF90IHgwLCB1aW50OF90IHkwLCB1aW50OF90IHgxLCB1aW50OF90IHkxLCB1aW50OF90IGNvbG9yKTsKKworLyoqCisgKiBEcmF3IHJlY3RhbmdsZSBhbmQgZmlsbCB3aXRoIGNvbG91ci4KKyAqIFRoZSBib3JkZXIgb2YgdGhlIHJlY3RhbmdsZSBpcyB0aGUgc2FtZSBhcyBmaWxsIGNvbG91cgorICogXHBhcmFtIHggU3RhcnQgeC1jb29yZGluYXRlIChsZWZ0LW1vc3QpCisgKiBccGFyYW0geSBTdGFydCB5LWNvb3JkaW5hdGUgKHRvcC1tb3N0KQorICogXHBhcmFtIHcgV2lkdGgKKyAqIFxwYXJhbSBoIEhlaWdodAorICogXHBhcmFtIGNvbG9yIENvbG91ciB0byBmaWxsIHdpdGgKKyAqIFxzZWUgQ29sb3VyQ29uc3RhbnRzCisgKi8KK3ZvaWQgZ2xjZF9maWxsX3JlY3QodWludDhfdCB4LCB1aW50OF90IHksIHVpbnQ4X3QgdywgdWludDhfdCBoLCB1aW50OF90IGNvbG9yKTsKKworLyoqCisgKiBEcmF3IHJlY3RhbmdsZSBidXQgZG8gbm90IGZpbGwuCisgKiBUaGUgYm9yZGVyIG9mIHRoZSByZWN0YW5nbGUgaXMgdGhlIHNhbWUgYXMgZmlsbCBjb2xvdXIKKyAqIFxwYXJhbSB4IFN0YXJ0IHgtY29vcmRpbmF0ZSAobGVmdC1tb3N0KQorICogXHBhcmFtIHkgU3RhcnQgeS1jb29yZGluYXRlICh0b3AtbW9zdCkKKyAqIFxwYXJhbSB3IFdpZHRoCisgKiBccGFyYW0gaCBIZWlnaHQKKyAqIFxwYXJhbSBjb2xvciBDb2xvdXIgb2YgYm9yZGVyCisgKiBcc2VlIENvbG91ckNvbnN0YW50cworICovCit2b2lkIGdsY2RfZHJhd19yZWN0KHVpbnQ4X3QgeCwgdWludDhfdCB5LCB1aW50OF90IHcsIHVpbnQ4X3QgaCwgdWludDhfdCBjb2xvcik7CisKKy8qKgorICogRHJhdyByZWN0YW5nbGUgYnV0IGRvIG5vdCBmaWxsLiBVc2VyIHNwZWNpZmllZCB0aGlja25lc3MuCisgKiBUaGUgYm9yZGVyIG9mIHRoZSByZWN0YW5nbGUgaXMgdGhlIHNhbWUgYXMgZmlsbCBjb2xvdXIKKyAqIFxwYXJhbSB4IFN0YXJ0IHgtY29vcmRpbmF0ZSAobGVmdC1tb3N0KQorICogXHBhcmFtIHkgU3RhcnQgeS1jb29yZGluYXRlICh0b3AtbW9zdCkKKyAqIFxwYXJhbSB3IFdpZHRoIChvdXRlcm1vc3QgcGl4ZWxzKQorICogXHBhcmFtIGggSGVpZ2h0CisgKiBccGFyYW0gdHggVGhpY2tuZXNzIG9mIGhvcml6b250YWwgYm9yZGVyIGFsb25nIFggYXhpcworICogXHBhcmFtIHR5IFRoaWNrbmVzcyBvZiB2ZXJ0aWNhbCBib3JkZXIgYWxvbmcgWSBheGlzCisgKiBccGFyYW0gY29sb3IgQ29sb3VyIG9mIGJvcmRlcgorICogXHNlZSBDb2xvdXJDb25zdGFudHMKKyAqLwordm9pZCBnbGNkX2RyYXdfcmVjdF90aGljayh1aW50OF90IHgsIHVpbnQ4X3QgeSwgdWludDhfdCB3LCB1aW50OF90IGgsIHVpbnQ4X3QgdHgsIHVpbnQ4X3QgdHksIHVpbnQ4X3QgY29sb3IpOworCisvKioKKyAqIERyYXcgcmVjdGFuZ2xlIGJ1dCBkbyBub3QgZmlsbC4gUGxhY2UgYSBzaGFkb3cgbGluZSBvbiB0aGUgYm90dG9tLXJpZ2h0IG9mIHRoZSB3aW5kb3cuCisgKiBUaGUgYm9yZGVyIG9mIHRoZSByZWN0YW5nbGUgaXMgdGhlIHNhbWUgYXMgZmlsbCBjb2xvdXIKKyAqIFxwYXJhbSB4IFN0YXJ0IHgtY29vcmRpbmF0ZSAobGVmdC1tb3N0KQorICogXHBhcmFtIHkgU3RhcnQgeS1jb29yZGluYXRlICh0b3AtbW9zdCkKKyAqIFxwYXJhbSB3IFdpZHRoCisgKiBccGFyYW0gaCBIZWlnaHQKKyAqIFxwYXJhbSBjb2xvciBDb2xvdXIgb2YgYm9yZGVyCisgKiBcc2VlIENvbG91ckNvbnN0YW50cworICovCit2b2lkIGdsY2RfZHJhd19yZWN0X3NoYWRvdyh1aW50OF90IHgsIHVpbnQ4X3QgeSwgdWludDhfdCB3LCB1aW50OF90IGgsIHVpbnQ4X3QgY29sb3IpOworCisvKioKKyAqIERyYXcgY2lyY2xlIGJ1dCBkbyBub3QgZmlsbC4KKyAqIFRoZSBib3JkZXIgb2YgdGhlIHJlY3RhbmdsZSBpcyB0aGUgc2FtZSBhcyBmaWxsIGNvbG91cgorICogXHBhcmFtIHgwIENlbnRyZSB4LWNvb3JkaW5hdGUgKGxlZnQtbW9zdCkKKyAqIFxwYXJhbSB5MCBDZW50cmUgeS1jb29yZGluYXRlICh0b3AtbW9zdCkKKyAqIFxwYXJhbSByICBSYWRpdXMKKyAqIFxwYXJhbSBjb2xvciBDb2xvdXIgb2YgYm9yZGVyCisgKiBcc2VlIENvbG91ckNvbnN0YW50cworICovCit2b2lkIGdsY2RfZHJhd19jaXJjbGUodWludDhfdCB4MCwgdWludDhfdCB5MCwgdWludDhfdCByLCB1aW50OF90IGNvbG9yKTsKKworLyoqCisgKiBEcmF3IGNpcmNsZSBhbmQgZmlsbC4KKyAqIFRoZSBib3JkZXIgb2YgdGhlIHJlY3RhbmdsZSBpcyB0aGUgc2FtZSBhcyBmaWxsIGNvbG91cgorICogXHBhcmFtIHgwIENlbnRyZSB4LWNvb3JkaW5hdGUgKGxlZnQtbW9zdCkKKyAqIFxwYXJhbSB5MCBDZW50cmUgeS1jb29yZGluYXRlICh0b3AtbW9zdCkKKyAqIFxwYXJhbSByICBSYWRpdXMKKyAqIFxwYXJhbSBjb2xvciBDb2xvdXIgb2YgYm9yZGVyCisgKiBcc2VlIENvbG91ckNvbnN0YW50cworICovCit2b2lkIGdsY2RfZmlsbF9jaXJjbGUodWludDhfdCB4MCwgdWludDhfdCB5MCwgdWludDhfdCByLCB1aW50OF90IGNvbG9yKTsKKworLyoqCisgKiBJbnZlcnQgcGl4ZWxzIGluIGEgcmV0YW5ndWxhciBhcmVhLgorICogXHBhcmFtIHggU3RhcnQgeC1jb29yZGluYXRlIChsZWZ0LW1vc3QpCisgKiBccGFyYW0geSBTdGFydCB5LWNvb3JkaW5hdGUgKHRvcC1tb3N0KQorICogXHBhcmFtIHcgV2lkdGgKKyAqIFxwYXJhbSBoIEhlaWdodCAKKyAqLwordm9pZCBnbGNkX2ludmVydF9hcmVhKHVpbnQ4X3QgeCwgdWludDhfdCB5LCB1aW50OF90IHcsIHVpbnQ4X3QgaCk7CisKKy8qKgorICogRHJhdyBiaXRtYXAgdG8gc2NyZWVuIGJ1ZmZlci4KKyAqIE5vdGUgdGhpcyB3aWxsIGRyYXcgdG8gdGhlIGVudGlyZSBidWZmZXIsIGl0cyBub3QgeWV0IHBvc3NpYmxlIHRvIGRyYXcgcGFydGlhbGx5IHRvIHRoZSBMQ0QuCisgKiBOb3QgeWV0IHN1cHBvcnRlZCB3aXRoIEFWUiBwZ21zcGFjZS4KKyAqIFxwYXJhbSBkYXRhIFBvaW50ZXIgdG8gYml0bWFwIGRhdGEuCisgKi8KK3ZvaWQgZ2xjZF9kcmF3X2JpdG1hcChjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhKTsKKworLyoqIEB9Ki8KKworI2VuZGlmIC8qIEdMQ0RfR1JBUEhJQ1NfSF8gKi8KZGlmZiAtLWdpdCBhL2xjZC9nbGNkX2dyYXBocy5oIGIvbGNkL2dsY2RfZ3JhcGhzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTFhYTk4NwotLS0gL2Rldi9udWxsCisrKyBiL2xjZC9nbGNkX2dyYXBocy5oCkBAIC0wLDAgKzEsODggQEAKKy8qKgorICAgXGZpbGUgZ2xjZF9ncmFwaHMuaAorICAgXGJyaWVmIEdMQ0QgTGlicmFyeSAtIEdyYXBoIGRyYXdpbmcgZnVuY3Rpb25zLgorICAgXGF1dGhvciBBbmR5IEdvY2sKKyAqLyAKKworLyoKKwlDb3B5cmlnaHQgKGMpIDIwMTIsIEFuZHkgR29jaworCisJQWxsIHJpZ2h0cyByZXNlcnZlZC4KKworCVJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorCW1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorCQkqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisJCSAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorCQkqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisJCSAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorCQkgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisJCSogTmVpdGhlciB0aGUgbmFtZSBvZiBBbmR5IEdvY2sgbm9yIHRoZQorCQkgIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzCisJCSAgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisKKwlUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisJQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKwlXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisJRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQU5EWSBHT0NLIEJFIExJQUJMRSBGT1IgQU5ZCisJRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKwkoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisJTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisJT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKwkoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworCVNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI2lmbmRlZiBHTENEX0dSQVBIU19ICisjZGVmaW5lIEdMQ0RfR1JBUEhTX0gKKworLyoqIFxhZGR0b2dyb3VwIEdyYXBoaW5nCisgKiAgRnVuY3Rpb25zIGZvciBncmFwaGluZywgZS5nIGRyYXdpbmcgYmFyIGdyYXBocyBldGMuCisgKiAgQHsKKyAqLworCisvKiogRHJhdyBob3Jpem9udGFsIGJhciBncmFwaCB3aXRoIDEgcHggd2lkZSBib3JkZXIuCisgKiAgVGhlIGJhciBncmFwaCBkcmF3cyBmcm9tIGxlZnQgdG8gcmlnaHQgYXMgdmFsIGluY3JlYXNlcy4KKyAqICBccGFyYW0geCB4IGxvY2F0aW9uIGZvciB0b3AtbGVmdCBvZiBib3JkZXIKKyAqICBccGFyYW0geSB5IGxvY2F0aW9uIGZvciB0b3AtbGVmdCBvZiBib3JkZXIKKyAqICBccGFyYW0gd2lkdGggd2lkdGggb2YgdGhlIGJvcmRlcgorICogIFxwYXJhbSBoZWlnaHQgaGVpZ2h0IG9mIHRoZSBib3JkZXIgKG11c3QgYmUgb3ZlciAyKQorICogIFxwYXJhbSB2YWwgdmFsdWUgdG8gZGlzcGxheSBpbiBncmFwaCAoMC0yNTUgOCBiaXQgdmFsdWUpLgorICovCit2b2lkIGdsY2RfYmFyX2dyYXBoX2hvcml6b250YWwodWludDhfdCB4LCB1aW50OF90IHksIHVpbnQ4X3Qgd2lkdGgsIHVpbnQ4X3QgaGVpZ2h0LCB1aW50OF90IHZhbCk7CisKKy8qKiBEcmF3IGhvcml6b250YWwgYmFyIGdyYXBoIHdpdGggbm8gYm9yZGVyLgorICogIFRoZSBiYXIgZ3JhcGggZHJhd3MgZnJvbSBsZWZ0IHRvIHJpZ2h0IGFzIHZhbCBpbmNyZWFzZXMuCisgKiAgXHBhcmFtIHggeCBsb2NhdGlvbiBmb3IgdG9wLWxlZnQgb2YgYmFyCisgKiAgXHBhcmFtIHkgeSBsb2NhdGlvbiBmb3IgdG9wLWxlZnQgb2YgYmFyCisgKiAgXHBhcmFtIHdpZHRoIHdpZHRoIG9mIHRoZSBiYXIgYXQgZnVsbCB2YWwKKyAqICBccGFyYW0gaGVpZ2h0IGhlaWdodCBvZiB0aGUgYmFyCisgKiAgXHBhcmFtIHZhbCB2YWx1ZSB0byBkaXNwbGF5IGluIGdyYXBoICgwLTI1NSA4IGJpdCB2YWx1ZSkuCisgKi8KK3ZvaWQgZ2xjZF9iYXJfZ3JhcGhfaG9yaXpvbnRhbF9ub19ib3JkZXIodWludDhfdCB4LCB1aW50OF90IHksIHVpbnQ4X3Qgd2lkdGgsIHVpbnQ4X3QgaGVpZ2h0LCB1aW50OF90IHZhbCk7CisKKy8qKiBEcmF3IHZlcnRpY2FsIGJhciBncmFwaCB3aXRoIDFweCB3aWRlIGJvcmRlci4KKyAqICBUaGUgYmFyIGdyYXBoIGRyYXdzIGZyb20gYm90dG9tIHRvIHRvcCBhcyB2YWwgaW5jcmVhc2VzLgorICogIFxwYXJhbSB4IHggbG9jYXRpb24gZm9yIHRvcC1sZWZ0IG9mIGJvcmRlcgorICogIFxwYXJhbSB5IHkgbG9jYXRpb24gZm9yIHRvcC1sZWZ0IG9mIGJvcmRlcgorICogIFxwYXJhbSB3aWR0aCB3aWR0aCBvZiB0aGUgYm9yZGVyCisgKiAgXHBhcmFtIGhlaWdodCBoZWlnaHQgb2YgdGhlIGJvcmRlcgorICogIFxwYXJhbSB2YWwgdmFsdWUgdG8gZGlzcGxheSBpbiBncmFwaCAoMC0yNTUgOCBiaXQgdmFsdWUpLgorICovIAordm9pZCBnbGNkX2Jhcl9ncmFwaF92ZXJ0aWNhbCh1aW50OF90IHgsIHVpbnQ4X3QgeSwgdWludDhfdCB3aWR0aCwgdWludDhfdCBoZWlnaHQsIHVpbnQ4X3QgdmFsKTsKKworLyoqIERyYXcgdmVydGljYWwgYmFyIGdyYXBoIHdpdGggbm8gYm9yZGVyLgorICogIFRoZSBiYXIgZ3JhcGggZHJhd3MgZnJvbSBib3R0b20gdG8gdG9wIGFzIHZhbCBpbmNyZWFzZXMuCisgKiAgXHBhcmFtIHggeCBsb2NhdGlvbiBmb3IgdG9wLWxlZnQgb2YgYmFyCisgKiAgXHBhcmFtIHkgeSBsb2NhdGlvbiBmb3IgdG9wLWxlZnQgb2YgYmFyCisgKiAgXHBhcmFtIHdpZHRoIHdpZHRoIG9mIHRoZSBiYXIKKyAqICBccGFyYW0gaGVpZ2h0IGhlaWdodCBvZiB0aGUgYmFyCisgKiAgXHBhcmFtIHZhbCB2YWx1ZSB0byBkaXNwbGF5IGluIGdyYXBoICgwLTI1NSA4IGJpdCB2YWx1ZSkuCisgKi8gCit2b2lkIGdsY2RfYmFyX2dyYXBoX3ZlcnRpY2FsX25vX2JvcmRlcih1aW50OF90IHgsIHVpbnQ4X3QgeSwgdWludDhfdCB3aWR0aCwgdWludDhfdCBoZWlnaHQsIHVpbnQ4X3QgdmFsKTsKKworLyoqIFx0b2RvIHdyaXRlIGRvYyAqLwordm9pZCBnbGNkX3Njcm9sbGluZ19iYXJfZ3JhcGgodWludDhfdCB4LCB1aW50OF90IHksIHVpbnQ4X3Qgd2lkdGgsIHVpbnQ4X3QgaGVpZ2h0LCB1aW50OF90IHZhbCk7CisKKy8qKiBAfSovCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvbGNkL2dsY2Rfc3BpLmMgYi9sY2QvZ2xjZF9zcGkuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZTY1NzA4Ci0tLSAvZGV2L251bGwKKysrIGIvbGNkL2dsY2Rfc3BpLmMKQEAgLTAsMCArMSwxMTUgQEAKKy8qKgorICogXGZpbGUgU1RNMzJGMTB4LmMKKyAqIFxicmllZiBEZXZpY2UgaW1wbGVtZW50YXRpb24gZm9yIFNUIFNUTTMyRjEweCBBUk0gQ29ydGV4LU0zIE1DVXMKKyAqICAgICAgICBSZXF1aXJlcyB0aGUgdXNlIG9mIFNUJ3MgU3RhbmRhcmQgUGVyaXBoZXJhbCBMaWJyYXJ5CisgKiBcYXV0aG9yIEFuZHkgR29jaworICogXHRvZG8gQ29kZSBpcyB1bnRlc3RlZCEKKyAqLworCisvKgorCUNvcHlyaWdodCAoYykgMjAxMiwgQW5keSBHb2NrCisKKwlBbGwgcmlnaHRzIHJlc2VydmVkLgorCisJUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisJbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisJCSogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKwkJICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisJCSogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKwkJICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisJCSAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKwkJKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEFuZHkgR29jayBub3IgdGhlCisJCSAgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMKKwkJICBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKworCVRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKwlBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorCVdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKwlESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBTkRZIEdPQ0sgQkUgTElBQkxFIEZPUiBBTlkKKwlESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworCShJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKwlMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKwlPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorCShJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisJU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisvKiBJbmNsdWRlcyBmcm9tIENNU0lTIGFuZCBQZXJpcGhlcmFsIExpYnJhcnkgKi8KKyNpbmNsdWRlICJzdG0zMmYxMHguaCIKKyNpbmNsdWRlICIuLi9zeXNfaHcvdGltZXIuaCIKKyNpbmNsdWRlICJnbGNkX3NwaS5oIgorI2luY2x1ZGUgIlNUNzU2NVIuaCIKKwordm9pZCBnbGNkX0hXX2luaXQodm9pZCkKK3sKKwkvKiBJbml0aWFsaXNhdGlvbiBvZiBHUElPIGFuZCBTUEkgKi8KKwlHUElPX0luaXRUeXBlRGVmIEdQSU9fSW5pdFN0cnVjdHVyZTsKKworCS8qIFNldCB1cCBHUElPIHBpbnMgKi8KKwlSQ0NfQVBCMlBlcmlwaENsb2NrQ21kKFJDQ19BUEIyUGVyaXBoX0dQSU9DLCBFTkFCTEUpOworCisJLyogREMgcGluICovCisJR1BJT19Jbml0U3RydWN0dXJlLkdQSU9fUGluID0gQ09OVFJPTExFUl9TUElfRENfUElOOworCUdQSU9fSW5pdFN0cnVjdHVyZS5HUElPX1NwZWVkID0gR1BJT19TcGVlZF81ME1IejsKKwlHUElPX0luaXRTdHJ1Y3R1cmUuR1BJT19Nb2RlID0gR1BJT19Nb2RlX091dF9QUDsKKwlHUElPX0luaXQoQ09OVFJPTExFUl9TUElfRENfUE9SVCwgJkdQSU9fSW5pdFN0cnVjdHVyZSk7CisKKwkvKiBSRVNFVCBwaW4gKi8KKwlHUElPX0luaXRTdHJ1Y3R1cmUuR1BJT19QaW4gPSBDT05UUk9MTEVSX1NQSV9SU1RfUElOOworCUdQSU9fSW5pdFN0cnVjdHVyZS5HUElPX1NwZWVkID0gR1BJT19TcGVlZF81ME1IejsKKwlHUElPX0luaXRTdHJ1Y3R1cmUuR1BJT19Nb2RlID0gR1BJT19Nb2RlX091dF9QUDsKKwlHUElPX0luaXQoQ09OVFJPTExFUl9TUElfUlNUX1BPUlQsICZHUElPX0luaXRTdHJ1Y3R1cmUpOyAgICAKKyAKKwlSQ0NfQVBCMlBlcmlwaENsb2NrQ21kKFJDQ19BUEIyUGVyaXBoX0dQSU9BLCBFTkFCTEUpOworICAgIEdQSU9fUGluUmVtYXBDb25maWcoR1BJT19SZW1hcF9TV0pfSlRBR0Rpc2FibGUsIEVOQUJMRSk7CisJR1BJT19Jbml0U3RydWN0dXJlLkdQSU9fUGluID0gR1BJT19QaW5fMTU7CisJR1BJT19Jbml0U3RydWN0dXJlLkdQSU9fU3BlZWQgPSBHUElPX1NwZWVkXzUwTUh6OworCUdQSU9fSW5pdFN0cnVjdHVyZS5HUElPX01vZGUgPSBHUElPX01vZGVfT3V0X1BQOworCUdQSU9fSW5pdChHUElPQSwgJkdQSU9fSW5pdFN0cnVjdHVyZSk7CisJCisgICAgR0xDRF9CS0xfT04oKTsKKworCS8qIE1ha2Ugc3VyZSBjaGlwIGlzIGRlLXNlbGVjdGVkIGJ5IGRlZmF1bHQgKi8KKwlHTENEX0RFU0VMRUNUKCk7CisKKwkvKiBJbml0aWFsaXNlIFNQSSAqLworCXNwaV9pbml0KCk7CisKKwkvKiBTZW5kIHJlc2V0IHB1bHNlIHRvIExDRCAqLworCWdsY2RfcmVzZXQoKTsKKwlkZWxheV9tcygxKTsKKworCWdsY2RfU1Q3NTY1Ul9pbml0KCk7CisJCisJLyogU2V0IGFsbCBkb3RzIGJsYWNrIGFuZCBob2xkIGZvciAwLjVzLCB0aGVuIGNsZWFyIGl0LCB3ZSBkbyB0aGlzIHNvIHdlIGNhbiB2aXN1YWxseSBjaGVjayBpbml0IHNlcXVlbmNlIGlzIHdvcmtpbmcgKi8KKy8vCWdsY2RfYWxsX29uKCk7CisvLwlkZWxheV9tcyg1MCk7CisJZ2xjZF9ub3JtYWwoKTsKKworCWdsY2Rfc2V0X3N0YXJ0X2xpbmUoMCk7CisJZ2xjZF9jbGVhcl9ub3coKTsJCit9CisKK3ZvaWQgZ2xjZF9zcGlfd3JpdGUodWludDhfdCBjKQoreworCUdMQ0RfU0VMRUNUKCk7CisgICAgc3BpX3RyYW5zaXZlKGMsIDEwMDApOworCUdMQ0RfREVTRUxFQ1QoKTsKK30KKwordm9pZCBnbGNkX3Jlc2V0KHZvaWQpCit7CisJR0xDRF9TRUxFQ1QoKTsKKwlHTENEX1JFU0VUX0xPVygpOworCWRlbGF5X21zKDIpOworCUdMQ0RfUkVTRVRfSElHSCgpOworCUdMQ0RfREVTRUxFQ1QoKTsKK30KKy8qdm9pZCBHTENEX0JLTF9PTih2b2lkKSAgICAgCit7CisgIEdQSU9fU2V0Qml0cyhHUElPQSwgR1BJT19QaW5fMTUpOworfQordm9pZCBHTENEX0JLTF9PRkYodm9pZCkgICAgCit7CisgIEdQSU9fUmVzZXRCaXRzKEdQSU9BLCBHUElPX1Bpbl8xNSk7Cit9Ki8KZGlmZiAtLWdpdCBhL2xjZC9nbGNkX3NwaS5oIGIvbGNkL2dsY2Rfc3BpLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjRhNjI0OQotLS0gL2Rldi9udWxsCisrKyBiL2xjZC9nbGNkX3NwaS5oCkBAIC0wLDAgKzEsMTAwIEBACisvKioKKyAqIFxmaWxlIFNUTTMyRjEweC5oCisgKiBcYnJpZWYgRGV2aWNlIGltcGxlbWVudGF0aW9uIGZvciBTVCBTVE0zMkYxMHggQVJNIENvcnRleC1NMyBNQ1VzCisgKiAgICAgICAgUmVxdWlyZXMgdGhlIHVzZSBvZiBTVCdzIFN0YW5kYXJkIFBlcmlwaGVyYWwgTGlicmFyeQorICogXGF1dGhvciBBbmR5IEdvY2sKKyAqCisgKiBcdG9kbyBDb2RlIGlzIHVudGVzdGVkIQorICovCisKKy8qCisJQ29weXJpZ2h0IChjKSAyMDEyLCBBbmR5IEdvY2sKKworCUFsbCByaWdodHMgcmVzZXJ2ZWQuCisKKwlSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKwltb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKwkJKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorCQkgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKwkJKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorCQkgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKwkJICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorCQkqIE5laXRoZXIgdGhlIG5hbWUgb2YgQW5keSBHb2NrIG5vciB0aGUKKwkJICBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cworCQkgIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorCisJVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorCUFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisJV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorCURJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFORFkgR09DSyBCRSBMSUFCTEUgRk9SIEFOWQorCURJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisJKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworCUxPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorCU9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisJKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKwlTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisjaWZuZGVmIF9fZ2xjZF9zcGlfaF9fCisjZGVmaW5lIF9fZ2xjZF9zcGlfaF9fCisKKyNpbmNsdWRlICJzcGkuaCIKKworLyoqIFNQSSBwb3J0IG51bWJlciBlLmcgU1BJMSwgU1BJMiAobm90IHRvIGJlIGNvbmZ1c2VkIHdpdGggR1BJT0EsIEdQSU9CLCBldGMpICovCisjZGVmaW5lIENPTlRST0xMRVJfU1BJX05VTUJFUiAgICAgIAorI2RlZmluZSBDT05UUk9MTEVSX1NQSV9QT1JUICAgICAgICAKKyNkZWZpbmUgQ09OVFJPTExFUl9TUElfU0NLX1BJTiAgICAgCisjZGVmaW5lIENPTlRST0xMRVJfU1BJX1NDS19QSU5TUkMgIAorI2RlZmluZSBDT05UUk9MTEVSX1NQSV9NSVNPX1BJTiAgICAKKyNkZWZpbmUgQ09OVFJPTExFUl9TUElfTUlTT19QSU5TUkMgCisjZGVmaW5lIENPTlRST0xMRVJfU1BJX01PU0lfUElOICAgIAorI2RlZmluZSBDT05UUk9MTEVSX1NQSV9NT1NJX1BJTlNSQyAKKworI2RlZmluZSBDT05UUk9MTEVSX1NQSV9TU19QT1JUICAKKyNkZWZpbmUgQ09OVFJPTExFUl9TUElfU1NfUElOICAgCisjZGVmaW5lIENPTlRST0xMRVJfU1BJX0RDX1BPUlQgIEdQSU9DCisjZGVmaW5lIENPTlRST0xMRVJfU1BJX0RDX1BJTiAgIEdQSU9fUGluXzEwCisjZGVmaW5lIENPTlRST0xMRVJfU1BJX1JTVF9QT1JUIEdQSU9DCisjZGVmaW5lIENPTlRST0xMRVJfU1BJX1JTVF9QSU4gIEdQSU9fUGluXzExCisKKyNkZWZpbmUgR0xDRF9TRUxFQ1QoKSAgICAgU1BJX1NFTEVDVF9DSDIoKQorI2RlZmluZSBHTENEX0RFU0VMRUNUKCkgICBTUElfREVTRUxFQ1RfQ0gyKCkKKyNkZWZpbmUgR0xDRF9EQ19MT1coKSAgICAgR1BJT19SZXNldEJpdHMoQ09OVFJPTExFUl9TUElfRENfUE9SVCxDT05UUk9MTEVSX1NQSV9EQ19QSU4pCisjZGVmaW5lIEdMQ0RfRENfSElHSCgpICAgIEdQSU9fU2V0Qml0cyhDT05UUk9MTEVSX1NQSV9EQ19QT1JULENPTlRST0xMRVJfU1BJX0RDX1BJTikKKyNkZWZpbmUgR0xDRF9BMF9MT1coKSAgICAgR1BJT19SZXNldEJpdHMoQ09OVFJPTExFUl9TUElfRENfUE9SVCxDT05UUk9MTEVSX1NQSV9EQ19QSU4pCisjZGVmaW5lIEdMQ0RfQTBfSElHSCgpICAgIEdQSU9fU2V0Qml0cyhDT05UUk9MTEVSX1NQSV9EQ19QT1JULENPTlRST0xMRVJfU1BJX0RDX1BJTikKKyNkZWZpbmUgR0xDRF9SRVNFVF9MT1coKSAgR1BJT19SZXNldEJpdHMoQ09OVFJPTExFUl9TUElfUlNUX1BPUlQsQ09OVFJPTExFUl9TUElfUlNUX1BJTikKKyNkZWZpbmUgR0xDRF9SRVNFVF9ISUdIKCkgR1BJT19TZXRCaXRzKENPTlRST0xMRVJfU1BJX1JTVF9QT1JULENPTlRST0xMRVJfU1BJX1JTVF9QSU4pCisvKiNpZmRlZiBIV19WMDEKKyNkZWZpbmUgR0xDRF9CS0xfT04oKSAgICAgR1BJT19TZXRCaXRzKEdQSU9ELCBHUElPX1Bpbl8yKQorI2RlZmluZSBHTENEX0JLTF9PRkYoKSAgICBHUElPX1Jlc2V0Qml0cyhHUElPRCwgR1BJT19QaW5fMikKKyNlbmRpZgorI2lmZGVmIEhXX1YwMiovCisjZGVmaW5lIEdMQ0RfQktMX09OKCkgICAgIEdQSU9fU2V0Qml0cyhHUElPQSwgR1BJT19QaW5fMTUpCisjZGVmaW5lIEdMQ0RfQktMX09GRigpICAgIEdQSU9fUmVzZXRCaXRzKEdQSU9BLCBHUElPX1Bpbl8xNSkKKy8vI2VuZGlmCisKKy8qKgorICogSW5pdGlhbGlzZSB0aGUgTENELiBUaGlzIGZ1bmN0aW9uIGlzIHBsYXRmb3JtIGFuZCBjb250cm9sbGVyIHNwZWNpZmljLgorICovCit2b2lkIGdsY2RfSFdfaW5pdCh2b2lkKTsKKworLyoqCisgKiBXcml0ZSBhIGJ5dGUgdG8gdGhlIGNvbm5lY3RlZCBTUEkgc2xhdmUuCisgKiBccGFyYW0gYyBCeXRlIHRvIGJlIHdyaXR0ZW4KKyAqIFxyZXR1cm4gUmV0dXJuZWQgdmFsdWUgZnJvbSBTUEkgKG9mdGVuIG5vdCB1c2VkKQorICovCit2b2lkIGdsY2Rfc3BpX3dyaXRlKHVpbnQ4X3QgYyk7CisKKworLyoqCisgKiAgUmVzZXQgdGhlIExDRC4KKyAqICBcbm90ZSBOb3QgYWxsIExDRCBjb250cm9sbGVycyBzdXBwb3J0IHJlc2V0LgorICovCit2b2lkIGdsY2RfcmVzZXQodm9pZCk7CisKK3ZvaWQgZ2xjZF9ia2xfb24odm9pZCk7CisKK3ZvaWQgZ2xjZF9ia2xfb2ZmKHZvaWQpOworCisjZW5kaWYgCisvKiBfX2dsY2Rfc3BpX2hfXyAqLwpkaWZmIC0tZ2l0IGEvbGNkL2dsY2RfdGV4dC5oIGIvbGNkL2dsY2RfdGV4dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1YjRlNjEKLS0tIC9kZXYvbnVsbAorKysgYi9sY2QvZ2xjZF90ZXh0LmgKQEAgLTAsMCArMSwxMDkgQEAKKy8qKgorICAgXGZpbGUgZ2xjZF90ZXh0LmgKKyAgIFxicmllZiBHTENEIExpYnJhcnkgLSBUZXh0IGZ1bmN0aW9ucworICAgXGF1dGhvciBBbmR5IEdvY2sKKyAqLyAKKworLyoKKwlDb3B5cmlnaHQgKGMpIDIwMTIsIEFuZHkgR29jaworCisJQWxsIHJpZ2h0cyByZXNlcnZlZC4KKworCVJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorCW1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorCQkqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisJCSAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorCQkqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisJCSAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorCQkgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisJCSogTmVpdGhlciB0aGUgbmFtZSBvZiBBbmR5IEdvY2sgbm9yIHRoZQorCQkgIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzCisJCSAgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisKKwlUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisJQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKwlXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisJRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQU5EWSBHT0NLIEJFIExJQUJMRSBGT1IgQU5ZCisJRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKwkoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisJTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisJT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKwkoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworCVNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI2lmbmRlZiBHTENEX1RFWFRfSAorI2RlZmluZSBHTENEX1RFWFRfSAorCisvKiogXGFkZHRvZ3JvdXAgVGV4dAorICogIEZ1bmN0aW9ucyByZWxhdGluZyB0byB1c2luZyB0ZXh0IGZvbnRzLgorICogIEB7CisgKi8KKworLyoqIFxhZGR0b2dyb3VwIFN0YW5kYXJkVGV4dCBTdGFuZGFyZCBUZXh0CisgKiAgRnVuY3Rpb25zIHJlbGF0aW5nIHRvIHVzaW5nIHRleHQgZm9udHMgb2YgYWxsIHNpemVzLgorICogIEB7CisgKi8KKyAKKy8qKiBTZXQgR0xDRCBmb250IHRvIHByZWRlZmluZWQgZm9udCB0YWJsZS4gT25seSBzdWl0YWJsZSBmb3IgTWlrcm9FbGVrdHJvbmlrYSBmb250IHN0b3JhZ2UgZm9ybWF0LgorICoKKyAqICBccGFyYW0gZm9udF90YWJsZSBwb2ludGVyIHRvIGZvbnQgdGFibGUgdG8gYmUgdXNlZAorICogIFxwYXJhbSB3aWR0aCB3aWR0aCBvZiBlYWNoIGNoYXJhY3RlcgorICogIFxwYXJhbSBoZWlnaHQgaGVpZ2h0IG9mIGVhY2ggY2hhcmFjdGVyCisgKiAgXHBhcmFtIHN0YXJ0X2NoYXIgZmlyc3QgY2hhcmFjdGVyIG9mIGZvbnQgdGFibGUKKyAqICBccGFyYW0gZW5kX2NoYXIgbGFzdCBjaGFyYWN0ZXIgb2YgZm9udCB0YWJsZQorICogIFxub3RlIE9ubHkgc3VpdGFibGUgZm9yIE1pa3JvRWxla3Ryb25pa2EgZm9udCBzdG9yYWdlIGZvcm1hdC4gRm9yIFN0YW5nIGZvcm1hdCwgdXNlIAorICogICAgICAgIGdsY2RfdGlueV9zZXRfZm9udCgpCisgKiAgXHNlZSBnbGNkX3Rpbnlfc2V0X2ZvbnQoKQorICovCisjaWYgZGVmaW5lZChHTENEX0RFVklDRV9BVlI4KQordm9pZCBnbGNkX3NldF9mb250KFBHTV9QIGZvbnRfdGFibGUsIHVpbnQ4X3Qgd2lkdGgsIHVpbnQ4X3QgaGVpZ2h0LCBjaGFyIHN0YXJ0X2NoYXIsIGNoYXIgZW5kX2NoYXIpOworI2Vsc2UKK3ZvaWQgZ2xjZF9zZXRfZm9udChjb25zdCBjaGFyICogZm9udF90YWJsZSwgdWludDhfdCB3aWR0aCwgdWludDhfdCBoZWlnaHQsIGNoYXIgc3RhcnRfY2hhciwgY2hhciBlbmRfY2hhcik7CisjZW5kaWYKKworLyoqIFNldCBHTENEIGZvbnQgdG8gcHJlZGVmaW5lZCBmb250IHRhYmxlLiBTdWl0YWJsZSBmb3IgZGlmZmVyZW50IGRpZmZlcmVudCB0eXBlcyBvZiBmb250IHRhYmxlcy4KKyAqCisgKiAgXHBhcmFtIGZvbnRfdGFibGUgcG9pbnRlciB0byBmb250IHRhYmxlIHRvIGJlIHVzZWQKKyAqICBccGFyYW0gd2lkdGggd2lkdGggb2YgZWFjaCBjaGFyYWN0ZXIKKyAqICBccGFyYW0gaGVpZ2h0IGhlaWdodCBvZiBlYWNoIGNoYXJhY3RlcgorICogIFxwYXJhbSBzdGFydF9jaGFyIGZpcnN0IGNoYXJhY3RlciBvZiBmb250IHRhYmxlCisgKiAgXHBhcmFtIGVuZF9jaGFyIGxhc3QgY2hhcmFjdGVyIG9mIGZvbnQgdGFibGUKKyAqCVxwYXJhbSB0eXBlIGZvbnQgdGFibGUgdHlwZQorICogIFxub3RlIE9ubHkgc3VpdGFibGUgZm9yIE1pa3JvRWxla3Ryb25pa2EgZm9udCBzdG9yYWdlIGZvcm1hdC4gRm9yIFN0YW5nIGZvcm1hdCwgdXNlIAorICogICAgICAgIGdsY2RfdGlueV9zZXRfZm9udCgpCisgKiAgXHNlZSBnbGNkX3Rpbnlfc2V0X2ZvbnQoKQorICovCisjaWYgZGVmaW5lZChHTENEX0RFVklDRV9BVlI4KQordm9pZCBnbGNkX2ZvbnQoUEdNX1AgZm9udF90YWJsZSwgdWludDhfdCB3aWR0aCwgdWludDhfdCBoZWlnaHQsIGNoYXIgc3RhcnRfY2hhciwgY2hhciBlbmRfY2hhciwgZm9udF90YWJsZV90eXBlX3QgdHlwZSk7CisjZWxzZQordm9pZCBnbGNkX2ZvbnQoY29uc3QgY2hhciAqIGZvbnRfdGFibGUsIHVpbnQ4X3Qgd2lkdGgsIHVpbnQ4X3QgaGVpZ2h0LCBjaGFyIHN0YXJ0X2NoYXIsIGNoYXIgZW5kX2NoYXIsIGZvbnRfdGFibGVfdHlwZV90IHR5cGUpOworI2VuZGlmCisKKy8qKiBEcmF3IGEgY2hhciBhdCBzcGVjaWZpZWQgbG9jYXRpb24uCisgKiAgXHBhcmFtIHggeCBsb2NhdGlvbiB0byBwbGFjZSB0b3AtbGVmdCBvZiBjaGFyYWN0ZXIgZnJhbWUKKyAqICBccGFyYW0geSB5IGxvY2F0aW9uIHRvIHBsYWNlIHRvcC1sZWZ0IG9mIGNoYXJhY3RlciBmcmFtZQorICogIFxwYXJhbSBjIGNoYXJhY3RlciB0byBiZSBkcmF3bgorICogIFxyZXR1cm4gd2lkdGggb2YgY2hhcmFjdGVyLCAwIG9uIGVycm9yIChlLmcgY291bGQgbm90IHJlYWQgZm9udCB0YWJsZSkKKyAqLwordWludDhfdCBnbGNkX2RyYXdfY2hhcl94eSh1aW50OF90IHgsIHVpbnQ4X3QgeSwgY2hhciBjKTsKKworLyoqIERyYXcgYSBzdHJpbmcgYXQgc3BlY2lmaWVkIGxvY2F0aW9uLgorICogIFxwYXJhbSB4IHggbG9jYXRpb24gdG8gcGxhY2UgdG9wLWxlZnQgb2YgY2hhcmFjdGVyIGZyYW1lCisgKiAgXHBhcmFtIHkgeSBsb2NhdGlvbiB0byBwbGFjZSB0b3AtbGVmdCBvZiBjaGFyYWN0ZXIgZnJhbWUKKyAqICBccGFyYW0gYyBwb2ludGVyIHRvIHN0cmluZyB0byBiZSBkcmF3bgorICovCit2b2lkIGdsY2RfZHJhd19zdHJpbmdfeHkodWludDhfdCB4LCB1aW50OF90IHksIGNoYXIgKmMpOworCisvKiogRHJhdyBhIHN0cmluZyBmcm9tIHByb2dyYW0gbWVtb3J5IGF0IHNwZWNpZmllZCBsb2NhdGlvbi4KKyAqICBccGFyYW0geCB4IGxvY2F0aW9uIHRvIHBsYWNlIHRvcC1sZWZ0IG9mIGNoYXJhY3RlciBmcmFtZQorICogIFxwYXJhbSB5IHkgbG9jYXRpb24gdG8gcGxhY2UgdG9wLWxlZnQgb2YgY2hhcmFjdGVyIGZyYW1lCisgKiAgXHBhcmFtIHN0ciBwb2ludGVyIHRvIHN0cmluZyBpbiBwcm9ncmFtIG1lbW9yeSB0byBiZSBkcmF3bgorICovCit2b2lkIGdsY2RfZHJhd19zdHJpbmdfeHlfUCh1aW50OF90IHgsIHVpbnQ4X3QgeSwgY29uc3QgY2hhciAqc3RyKTsKKworLyoqIEB9Ki8KKworLyoqIEB9Ki8KKworI2VuZGlmCmRpZmYgLS1naXQgYS9sY2QvZ2xjZF90ZXh0X3RpbnkuaCBiL2xjZC9nbGNkX3RleHRfdGlueS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4ZGM0ZDcKLS0tIC9kZXYvbnVsbAorKysgYi9sY2QvZ2xjZF90ZXh0X3RpbnkuaApAQCAtMCwwICsxLDEzOCBAQAorLyoqCisgICBcZmlsZSBnbGNkX3RleHRfdGlueS5oCisgICBcYnJpZWYgR0xDRCBMaWJyYXJ5IC0gVGlueSBUZXh0IGZ1bmN0aW9ucy4KKyAgIFxhdXRob3IgQW5keSBHb2NrCisgKi8gCisKKy8qCisJQ29weXJpZ2h0IChjKSAyMDEyLCBBbmR5IEdvY2sKKworCUFsbCByaWdodHMgcmVzZXJ2ZWQuCisKKwlSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKwltb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKwkJKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorCQkgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKwkJKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorCQkgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKwkJICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorCQkqIE5laXRoZXIgdGhlIG5hbWUgb2YgQW5keSBHb2NrIG5vciB0aGUKKwkJICBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cworCQkgIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorCisJVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorCUFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisJV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorCURJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFORFkgR09DSyBCRSBMSUFCTEUgRk9SIEFOWQorCURJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisJKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworCUxPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorCU9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisJKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKwlTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNpZm5kZWYgR0xDRF9URVhUX1RJTllfSAorI2RlZmluZSBHTENEX1RFWFRfVElOWV9ICisKKyNpbmNsdWRlICJzdGRpbnQuaCIKKworLyoqIFxhZGR0b2dyb3VwIFRpbnlUZXh0IFRpbnkgVGV4dAorICogIEZ1bmN0aW9ucyByZWxhdGluZyB0byB1c2luZyB0aW55IDV4NyB0ZXh0IGZvbnRzLgorICoKKyAqIFRpbnkgdGV4dCBmdW5jdGlvbnMgYXJlIHVzdWFsbHkgdXNlZCBvbiBhIGxpbmUgYnkgbGluZSBiYXNpcy4gRWFjaCBsaW5lIGJlaW5nIDggYml0cyBoaWdoLgorICogQ2hhcmFjdGVycyBzdGFydCBvbiB0aGUgdG9wIG1vc3QgYml0IGFuZCBhcmUgNyBiaXRzIGhpZ2gsIGxlYXZpbmcgYSBvbmUgYml0IHNwYWNlIHVuZGVybmVhdGguCisgKgorICogIEB7CisgKi8KKworLyoqIFNldCBmb250IHRvIGJlIHVzZWQgZnJvbSBub3cgb24uIFRoaXMgaXMgdGhlIHRpbnkgNXg3IG1vbm9zcGFjZSBmb250LgorICogIFxwYXJhbSBmb250X3RhYmxlIGZsYXNoIHBvaW50ZXIgdG8gc3RhcnQgZnJvbSBmb250IHRhYmxlCisgKiAgXHBhcmFtIHdpZHRoICAgICAgd2lkdGggb2YgZWFjaCBjaGFyYWN0ZXIKKyAqICBccGFyYW0gaGVpZ2h0ICAgICBoZWlnaHQgb2YgZWFjaCBjaGFyYWN0ZXIKKyAqICBccGFyYW0gc3RhcnRfY2hhciBzdGFydCBjaGFyYWN0ZXIKKyAqICBccGFyYW0gZW5kX2NoYXIgICBlbmQgY2hhcmFjdGVyCisgKiAgXG5vdGUgT25seSBzdWl0YWJsZSBmb3IgU3RhbmcgZm9udCBzdG9yYWdlIGZvcm1hdC4gRm9yIE1pa3JvRWxla3Ryb25pa2EgZm9ybWF0LCB1c2UgCisgKiAgICAgICAgZ2xjZF9zZXRfZm9udCgpCisgKiAgXHNlZSBnbGNkX3NldF9mb250KCkgCisgKi8KKyNpZiBkZWZpbmVkKEdMQ0RfREVWSUNFX0FWUjgpICAKK3ZvaWQgZ2xjZF90aW55X3NldF9mb250KFBHTV9QIGZvbnRfdGFibGUsIHVpbnQ4X3Qgd2lkdGgsIHVpbnQ4X3QgaGVpZ2h0LCBjaGFyIHN0YXJ0X2NoYXIsIGNoYXIgZW5kX2NoYXIpOworI2Vsc2UKK3ZvaWQgZ2xjZF90aW55X3NldF9mb250KGNvbnN0IGNoYXIgKmZvbnRfdGFibGUsIHVpbnQ4X3Qgd2lkdGgsIHVpbnQ4X3QgaGVpZ2h0LCBjaGFyIHN0YXJ0X2NoYXIsIGNoYXIgZW5kX2NoYXIpOworI2VuZGlmCisKKy8qKiBXcml0ZSBjaGFyYWN0ZXIgdG8gTENEIGluIHRpbnkgNXg3IGZvbnQuCisgKiAgXHBhcmFtIHggICAgY29sdW1uIHBvc2l0aW9uIHRvIHN0YXJ0IAorICogIFxwYXJhbSBsaW5lIGxpbmUgbnVtYmVyIHRvIGJlIHdyaXR0ZW4gKGVhY2ggbGluZSBpcyA4IHBpeGVscyBoaWdoKQorICogIFxwYXJhbSBjICAgIGNoYXIgdG8gYmUgd3JpdHRlbgorICovCit2b2lkIGdsY2RfdGlueV9kcmF3X2NoYXIodWludDhfdCB4LCB1aW50OF90IGxpbmUsIGNoYXIgYyk7CisKKy8qKiBXcml0ZSBzdHJpbmcgdG8gZGlzcGxheSBidWZmZXIgaW4gdGlueSA1eDcgZm9udC4KKyAqICBXaWxsIHdyYXAgdG8gbmV4dCBsaW5lIGlmIG5lZWRlZC4gU2NyZWVuIGlzIG5vdCB1cGRhdGVkLiBVc2UgZ2xjZF93cml0ZSgpIHRvIHBoeXNpY2FsbHkgdXBkYXRlIGRpc3BsYXkuCisgKiAgXHBhcmFtIHggICAgY29sdW1uIHBvc2l0aW9uIHRvIHN0YXJ0IAorICogIFxwYXJhbSBsaW5lIGxpbmUgbnVtYmVyIHRvIGJlIHdyaXR0ZW4gKGVhY2ggbGluZSBpcyA4IHBpeGVscyBoaWdoKQorICogIFxwYXJhbSBzdHIgIHN0cmluZyB0byBiZSB3cml0dGVuCisgKi8KK3ZvaWQgZ2xjZF90aW55X2RyYXdfc3RyaW5nKHVpbnQ4X3QgeCwgdWludDhfdCBsaW5lLCBjaGFyICpzdHIpOworCisvKiogV3JpdGUgZmxhc2ggc3RyaW5nIHRvIGRpc3BsYXkgYnVmZmVyIGluIHRpbnkgNXg3IGZvbnQuCisgKiAgV2lsbCB3cmFwIHRvIG5leHQgbGluZSBpZiBuZWVkZWQuIFNjcmVlbiBpcyBub3QgdXBkYXRlZC4gVXNlIGdsY2Rfd3JpdGUoKSB0byBwaHlzaWNhbGx5IHVwZGF0ZSBkaXNwbGF5LgorICogIFxwYXJhbSB4ICAgIGNvbHVtbiBwb3NpdGlvbiB0byBzdGFydCAKKyAqICBccGFyYW0gbGluZSBsaW5lIHRvIGJlIHdyaXR0ZW4gKGVhY2ggbGluZSBpcyA4IHBpeGVscyBoaWdoKQorICogIFxwYXJhbSBzdHIgIHN0cmluZyBzdG9yZWQgaW4gZmxhc2ggbWVtb3J5IHRvIGJlIHdyaXR0ZW4KKyAqLworI2lmIGRlZmluZWQoR0xDRF9ERVZJQ0VfQVZSOCkgCit2b2lkIGdsY2RfdGlueV9kcmF3X3N0cmluZ19QKHVpbnQ4X3QgeCwgdWludDhfdCBsaW5lLCBQR01fUCBzdHIpOworI2Vsc2UKK3ZvaWQgZ2xjZF90aW55X2RyYXdfc3RyaW5nX1AodWludDhfdCB4LCB1aW50OF90IGxpbmUsIGNvbnN0IGNoYXIgKnN0cik7CisjZW5kaWYKKworLyoqIFdyaXRlIHN0cmluZyB0byBib3R0b20gcm93IG9mIGRpc3BsYXkuCisgKiAgU2NyZWVuIGJ1ZmZlciBpcyBzY3JvbGxlZCB1cCBieSBvbmUgbGluZS4gU2NyZWVuIGlzIHRoZW4gcGh5c2ljYWxseSB1cGRhdGVkLgorICogIFxwYXJhbSBzdHIgc3RyaW5nIHRvIGJlIHdyaXR0ZW4KKyAqLwordm9pZCBnbGNkX3RpbnlfZHJhd19zdHJpbmdfYW1tZW5kKGNoYXIgKnN0cik7CisKKy8qKiBXcml0ZSBzdHJpbmcgZnJvbSBmbGFzaCBtZW1vcnkgdG8gYm90dG9tIHJvdyBvZiBkaXNwbGF5LgorICogIFNjcmVlbiBidWZmZXIgaXMgc2Nyb2xsZWQgdXAgYnkgb25lIGxpbmUuIFNjcmVlbiBpcyB0aGVuIHBoeXNpY2FsbHkgdXBkYXRlZC4KKyAqICBccGFyYW0gc3RyIHN0cmluZyB0byBiZSB3cml0dGVuCisgKi8KKyNpZiBkZWZpbmVkKEdMQ0RfREVWSUNFX0FWUjgpCit2b2lkIGdsY2RfdGlueV9kcmF3X3N0cmluZ19hbW1lbmRfUChQR01fUCBzdHIpOworI2Vsc2UKK3ZvaWQgZ2xjZF90aW55X2RyYXdfc3RyaW5nX2FtbWVuZF9QKGNvbnN0IGNoYXIgKnN0cik7CisjZW5kaWYKKworLyoqCisgKiBJbnZlcnQgYWxsIGNvbnRlbnRzIG9mIGxpbmUgbnVtYmVyLiBMaW5lIDAgaXMgdGhlIHRvcCBtb3N0IGxpbmUuCisgKiBccGFyYW0gbGluZSBMaW5lIG51bWJlciAoMCBpcyB0b3AgbW9zdCBsaW5lKQorICovCit2b2lkIGdsY2RfdGlueV9pbnZlcnRfbGluZSh1aW50OF90IGxpbmUpOworCisvKiogV3JpdGUgY2hhcmFjdGVyIHRvIExDRCBpbiB0aW55IDV4NyBmb250IHRvIHNwZWNpZmllZCBYLCBZIGxvY2F0aW9uLgorICogIElmIHBvc2l0aW9uIGlzIGFsaWduZWQgd2l0aCA4IGJpdCBsaW5lIGhlaWdodHMsIHVzZSBnbGNkX3RpbnlfZHJhd19jaGFyKCkgaW5zdGVhZAorICogIGFzIGl0IHdpbGwgYmUgZmFzdGVyLgorICogCisgKiAgXHBhcmFtIHggICAgY29sdW1uIHBvc2l0aW9uIHRvIHN0YXJ0IAorICogIFxwYXJhbSB5ICAgIHJvdyBwb3NpdGlvbiB0byBzdGFydCAocGl4ZWwgYmFzZWQsIG5vdCA4IGJpdCBoaWdoIHJvd3MpCisgKiAgXHBhcmFtIGMgICAgY2hhciB0byBiZSB3cml0dGVuCisgKiAgXHNlZSAgZ2xjZF90aW55X2RyYXdfY2hhcigpCisgKiAgXG5vdGUgVGhpcyBkb2VzIHRoZSBzYW1lIHRoaW5nIGFzIGdsY2RfdGlueV9kcmF3X2NoYXJfeHkoKSBidXQgaXMgbGltaXRlZCB0byBTdGFuZyBmb3JtYXQKKyAqICAgICAgICBmb250IHRhYmxlcy4KKyAqLwordm9pZCBnbGNkX3RpbnlfZHJhd19jaGFyX3h5KHVpbnQ4X3QgeCwgdWludDhfdCB5LCBjaGFyIGMpOworCisvKiogSW5pdGlhbGlzZSA1eDcgdGV4dCAqLworI2RlZmluZSBHTENEX1RFWFRfSU5JVCgpICBnbGNkX3Rpbnlfc2V0X2ZvbnQoRm9udDV4Nyw1LDcsMzIsMTI3KTsKKworLyoqIFdyaXRlIHN0cmluZyB0byBib3R0b20tbW9zdCBsaW5lIGFmdGVyIHNjcm9sbGluZyBldmVyeXRoaW5nIGVsc2UgdXAgKi8KKyNkZWZpbmUgR0xDRF9XUklURShzdHIpICAgZ2xjZF90aW55X2RyYXdfc3RyaW5nX2FtbWVuZChzdHIpCisKKy8qKiBXcml0ZSBzdHJpbmcgZnJvbSBwcm9ncmFtIG1lbW9yeSB0byBib3R0b20tbW9zdCBsaW5lIGFmdGVyIHNjcm9sbGluZyBldmVyeXRoaW5nIGVsc2UgdXAgKi8KKyNkZWZpbmUgR0xDRF9XUklURV9QKHN0cikgZ2xjZF90aW55X2RyYXdfc3RyaW5nX2FtbWVuZF9QKHN0cikKKworLyoqIEB9Ki8KKworI2VuZGlmCmRpZmYgLS1naXQgYS9sY2QvZ3JhcGhpY3MuYyBiL2xjZC9ncmFwaGljcy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlYzc1YzAKLS0tIC9kZXYvbnVsbAorKysgYi9sY2QvZ3JhcGhpY3MuYwpAQCAtMCwwICsxLDMwOSBAQAorLyoqCisgICBcZmlsZSBncmFwaGljcy5jCisgICBcYnJpZWYgRnVuY3Rpb25zIHJlbGF0aW5nIHRvIGdyYXBoaWNzLiBlLmcgZHJhd2luZyBsaW5lcywgcmVjdGFuZ2xlcywgY2lyY2xlcyBldGMuCisgICBcYXV0aG9yIEFuZHkgR29jaworCisgICBTb21lIGZ1bmN0aW9ucyBiYXNlZCBvbiBMaW1vciBGcmllZCdzIFBDRDg1NDQgQXJkdWlubyBsaWJyYXJ5LgorCisgKi8gCisKKy8qCisJQ29weXJpZ2h0IChjKSAyMDEyLCBBbmR5IEdvY2sKKworCUNvcHlyaWdodCAoYykgMjAxMiwgQWRhZnJ1aXQgSW5kdXN0cmllcworCisJQWxsIHJpZ2h0cyByZXNlcnZlZC4KKworCVJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorCW1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorCQkqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisJCSAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorCQkqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisJCSAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorCQkgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisJCSogTmVpdGhlciB0aGUgbmFtZSBvZiBBbmR5IEdvY2sgbm9yIHRoZQorCQkgIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzCisJCSAgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisKKwlUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisJQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKwlXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisJRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQU5EWSBHT0NLIEJFIExJQUJMRSBGT1IgQU5ZCisJRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKwkoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisJTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisJT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKwkoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworCVNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSAiZ2xjZC5oIgorCisvKiBCYXNlZCBvbiBQQ0Q4NTQ0IGxpYnJhcnkgYnkgTGltb3IgRnJpZWQgKi8KK3ZvaWQgZ2xjZF9zZXRfcGl4ZWwodWludDhfdCB4LCB1aW50OF90IHksIHVpbnQ4X3QgY29sb3IpIHsKKwlpZiAoeCA+IChHTENEX0xDRF9XSURUSC0xKSB8fCB5ID4gKEdMQ0RfTENEX0hFSUdIVC0xKSkgeworCQkvKiBkb24ndCBkbyBhbnl0aGluZyBpZiB4L3kgaXMgb3V0c2lkZSBib3VuZHMgb2YgZGlzcGxheSBzaXplICovCisJCXJldHVybjsKKwl9CisKKwlpZiAoY29sb3IpIHsKKwkJLyogU2V0IGJsYWNrICovCisJCWdsY2RfYnVmZmVyW3grICh5LzgpKkdMQ0RfTENEX1dJRFRIXSB8PSAoIDEgPDwgKHklOCkpOworCX0gZWxzZSB7CisJCS8qIFNldCB3aGl0ZSAqLworCQlnbGNkX2J1ZmZlclt4KyAoeS84KSpHTENEX0xDRF9XSURUSF0gJj0gfiAoMSA8PCAoeSU4KSk7CisJfQorCisJZ2xjZF91cGRhdGVfYmJveCh4LHkseCx5KTsKK30KKworLyogQmFzZWQgb24gUENEODU0NCBsaWJyYXJ5IGJ5IExpbW9yIEZyaWVkICovCit1aW50OF90IGdsY2RfZ2V0X3BpeGVsKHVpbnQ4X3QgeCwgdWludDhfdCB5KSB7CisJaWYgKCh4ID49IEdMQ0RfTENEX1dJRFRIKSB8fCAoeSA+PSBHTENEX0xDRF9IRUlHSFQpKSB7CisJCXJldHVybiAwOworCX0KKwkKKwlpZiAoIGdsY2RfYnVmZmVyW3grICh5LzgpKkdMQ0RfTENEX1dJRFRIXSAmICggMSA8PCAoeSU4KSkgKSB7CisJCXJldHVybiAxOworCX0gZWxzZSB7CisJCXJldHVybiAwOworCX0KK30KKwordm9pZCBnbGNkX2ludmVydF9waXhlbCh1aW50OF90IHgsIHVpbnQ4X3QgeSkgeworCWlmICgoeCA+PSBHTENEX0xDRF9XSURUSCkgfHwgKHkgPj0gR0xDRF9MQ0RfSEVJR0hUKSkgeworCQlyZXR1cm47CisJfQorCWdsY2RfdXBkYXRlX2Jib3goeCx5LHgseSk7CisJZ2xjZF9idWZmZXJbeCsgKHkvOCkqR0xDRF9MQ0RfV0lEVEhdIF49ICggMSA8PCAoeSU4KSk7Cit9CisKKy8qIEJyZXNlbmhhbSdzIGFsZ29yaXRobSAtIGJhc2VkIG9uIFBDRDg1NDQgbGlicmFyeSBMaW1vciBGcmllZCAqLwordm9pZCBnbGNkX2RyYXdfbGluZSh1aW50OF90IHgwLCB1aW50OF90IHkwLCB1aW50OF90IHgxLCB1aW50OF90IHkxLCB1aW50OF90IGNvbG9yKSB7CisJdWludDhfdCBzdGVlcCA9IGFicyh5MSAtIHkwKSA+IGFicyh4MSAtIHgwKTsKKwl1aW50OF90IGR4LCBkeTsKKwlpbnQ4X3QgZXJyOworCWludDhfdCB5c3RlcDsKKwkKKwlpZiAoc3RlZXApIHsKKwkJc3dhcCh4MCwgeTApOworCQlzd2FwKHgxLCB5MSk7CisJfQorCQorCWlmICh4MCA+IHgxKSB7CisJCXN3YXAoeDAsIHgxKTsKKwkJc3dhcCh5MCwgeTEpOworCX0KKwkKKwlnbGNkX3VwZGF0ZV9iYm94KCB4MCwgeTAsIHgxLCB5MSApOworCisJZHggPSB4MSAtIHgwOworCWR5ID0gYWJzKHkxIC0geTApOworCQorCWVyciA9IGR4IC8gMjsKKwkKKwlpZiAoeTAgPCB5MSkgeworCQl5c3RlcCA9IDE7CisJfSBlbHNlIHsKKwkJeXN0ZXAgPSAtMTsKKwl9CisJCisJZm9yICg7IHgwPD14MTsgeDArKykgeworCQlpZiAoc3RlZXApIHsKKwkJCWdsY2Rfc2V0X3BpeGVsKHkwLCB4MCwgY29sb3IpOworCQl9IGVsc2UgeworCQkJZ2xjZF9zZXRfcGl4ZWwoeDAsIHkwLCBjb2xvcik7CisJCX0KKwkJZXJyIC09IGR5OworCQlpZiAoZXJyIDwgMCkgeworCQkJeTAgKz0geXN0ZXA7CisJCQllcnIgKz0gZHg7CisJCX0KKwl9Cit9CisKK3ZvaWQgZ2xjZF9maWxsX3JlY3QodWludDhfdCB4LCB1aW50OF90IHksIHVpbnQ4X3QgdywgdWludDhfdCBoLCB1aW50OF90IGNvbG9yKQoreworCWludDE2X3QgaTsKKwlmb3IgKGk9eDsgaTx4K3c7IGkrKykgeworCQlpbnQxNl90IGo7CisJCWZvciAoaj15OyBqPHkraDsgaisrKSB7CisJCQlnbGNkX3NldF9waXhlbChpLCBqLCBjb2xvcik7CisJCX0KKwl9CisJZ2xjZF91cGRhdGVfYmJveCh4LCB5LCB4K3ctMSwgeStoLTEpOworfQorCit2b2lkIGdsY2RfZHJhd19yZWN0KHVpbnQ4X3QgeCwgdWludDhfdCB5LCB1aW50OF90IHcsIHVpbnQ4X3QgaCwgdWludDhfdCBjb2xvcikKK3sKKwlpbnQxNl90IGk7CisJZm9yIChpPXg7IGk8eCt3OyBpKyspIHsKKwkJZ2xjZF9zZXRfcGl4ZWwoaSwgeSwgY29sb3IpOworCQlnbGNkX3NldF9waXhlbChpLCB5K2gtMSwgY29sb3IpOworCX0KKwlmb3IgKGk9eTsgaTx5K2g7IGkrKykgeworCQlnbGNkX3NldF9waXhlbCh4LCBpLCBjb2xvcik7CisJCWdsY2Rfc2V0X3BpeGVsKHgrdy0xLCBpLCBjb2xvcik7CisJfSAKKwlnbGNkX3VwZGF0ZV9iYm94KHgsIHksIHgrdy0xLCB5K2gtMSk7Cit9CisKK3ZvaWQgZ2xjZF9kcmF3X3JlY3RfdGhpY2sodWludDhfdCB4LCB1aW50OF90IHksIHVpbnQ4X3QgdywgdWludDhfdCBoLCB1aW50OF90IHR4LCB1aW50OF90IHR5LCB1aW50OF90IGNvbG9yKQoreworCWludDE2X3QgaSwgdDsKKwkKKwlpZiAodHggPT0gMCkgeworCQl0eCA9IDE7CisJfQorCisJaWYgKHR5ID09IDApIHsKKwkJdHkgPSAxOworCX0KKwkKKwlmb3IgKGk9eDsgaTx4K3c7IGkrKykgeworCQkvKiBUb3AgYW5kIGJvdHRvbSBzaWRlcyAqLworCQlmb3IgKHQ9MDsgdDwodHkpOyB0KyspIHsKKwkJCWdsY2Rfc2V0X3BpeGVsKGksIHkrdCwgY29sb3IpOworCQkJZ2xjZF9zZXRfcGl4ZWwoaSwgeStoLTEtdCwgY29sb3IpOworCQl9CisJfQorCWZvciAoaT15OyBpPHkraDsgaSsrKSB7CisJCS8qIExlZnQgYW5kIHJpZ2h0IHNpZGVzICovCisJCWZvciAodD0wOyB0PCh0eCk7IHQrKykgeworCQkJZ2xjZF9zZXRfcGl4ZWwoeCt0LCBpLCBjb2xvcik7CisJCQlnbGNkX3NldF9waXhlbCh4K3ctMS10LCBpLCBjb2xvcik7CisJCX0KKwl9IAorCWdsY2RfdXBkYXRlX2Jib3goeCwgeSwgeCt3LTEsIHkraC0xKTsKK30KKwordm9pZCBnbGNkX2RyYXdfcmVjdF9zaGFkb3codWludDhfdCB4LCB1aW50OF90IHksIHVpbnQ4X3QgdywgdWludDhfdCBoLCB1aW50OF90IGNvbG9yKQoreworCWdsY2RfZHJhd19yZWN0KHgsIHksIHcsIGgsIGNvbG9yKTsKKwlnbGNkX2RyYXdfbGluZSh4KzEsIHkraCwgeCt3LCB5K2gsIGNvbG9yKTsKKwlnbGNkX2RyYXdfbGluZSh4K3csIHkrMSwgeCt3LCB5K2gsIGNvbG9yKTsKK30KKwordm9pZCBnbGNkX2RyYXdfY2lyY2xlKHVpbnQ4X3QgeDAsIHVpbnQ4X3QgeTAsIHVpbnQ4X3QgciwgdWludDhfdCBjb2xvcikKK3sKKwkJCisJaW50OF90IGYgPSAxIC0gcjsKKwlpbnQ4X3QgZGRGX3ggPSAxOworCWludDhfdCBkZEZfeSA9IC0yICogcjsKKwlpbnQ4X3QgeCA9IDA7CisJaW50OF90IHkgPSByOworCQorCWdsY2RfdXBkYXRlX2Jib3goeDAtciwgeTAtciwgeDArciwgeTArcik7CisJCisJZ2xjZF9zZXRfcGl4ZWwoeDAsIHkwK3IsIGNvbG9yKTsKKwlnbGNkX3NldF9waXhlbCh4MCwgeTAtciwgY29sb3IpOworCWdsY2Rfc2V0X3BpeGVsKHgwK3IsIHkwLCBjb2xvcik7CisJZ2xjZF9zZXRfcGl4ZWwoeDAtciwgeTAsIGNvbG9yKTsKKwkKKwl3aGlsZSAoeDx5KSB7CisJCWlmIChmID49IDApIHsKKwkJCXktLTsKKwkJCWRkRl95ICs9IDI7CisJCQlmICs9IGRkRl95OworCQl9CisJCXgrKzsKKwkJZGRGX3ggKz0gMjsKKwkJZiArPSBkZEZfeDsKKwkJCisJCWdsY2Rfc2V0X3BpeGVsKHgwICsgeCwgeTAgKyB5LCBjb2xvcik7CisJCWdsY2Rfc2V0X3BpeGVsKHgwIC0geCwgeTAgKyB5LCBjb2xvcik7CisJCWdsY2Rfc2V0X3BpeGVsKHgwICsgeCwgeTAgLSB5LCBjb2xvcik7CisJCWdsY2Rfc2V0X3BpeGVsKHgwIC0geCwgeTAgLSB5LCBjb2xvcik7CisJCQorCQlnbGNkX3NldF9waXhlbCh4MCArIHksIHkwICsgeCwgY29sb3IpOworCQlnbGNkX3NldF9waXhlbCh4MCAtIHksIHkwICsgeCwgY29sb3IpOworCQlnbGNkX3NldF9waXhlbCh4MCArIHksIHkwIC0geCwgY29sb3IpOworCQlnbGNkX3NldF9waXhlbCh4MCAtIHksIHkwIC0geCwgY29sb3IpOworCQkKKwl9Cit9CisKK3ZvaWQgZ2xjZF9maWxsX2NpcmNsZSh1aW50OF90IHgwLCB1aW50OF90IHkwLCB1aW50OF90IHIsIHVpbnQ4X3QgY29sb3IpCit7CisJCisJaW50OF90IGYgPSAxIC0gcjsKKwlpbnQ4X3QgZGRGX3ggPSAxOworCWludDhfdCBkZEZfeSA9IC0yICogcjsKKwlpbnQ4X3QgeCA9IDA7CisJaW50OF90IHkgPSByOworCQorCWludDE2X3QgaTsKKworCWdsY2RfdXBkYXRlX2Jib3goeDAtciwgeTAtciwgeDArciwgeTArcik7CisJCisJZm9yIChpPXkwLXI7IGk8PXkwK3I7IGkrKykgeworCQlnbGNkX3NldF9waXhlbCh4MCwgaSwgY29sb3IpOworCX0KKwkKKwl3aGlsZSAoeCA8IHkpIHsKKwkJaWYgKGYgPj0gMCkgeworCQkJeS0tOworCQkJZGRGX3kgKz0gMjsKKwkJCWYgKz0gZGRGX3k7CisJCX0KKwkJeCsrOworCQlkZEZfeCArPSAyOworCQlmICs9IGRkRl94OworCQkKKwkJZm9yIChpPXkwLXk7IGk8PXkwK3k7IGkrKykgeworCQkJZ2xjZF9zZXRfcGl4ZWwoeDAreCwgaSwgY29sb3IpOworCQkJZ2xjZF9zZXRfcGl4ZWwoeDAteCwgaSwgY29sb3IpOworCQl9IAorCQlmb3IgKGk9eTAteDsgaTw9eTAreDsgaSsrKSB7CisJCQlnbGNkX3NldF9waXhlbCh4MCt5LCBpLCBjb2xvcik7CisJCQlnbGNkX3NldF9waXhlbCh4MC15LCBpLCBjb2xvcik7CisJCX0gICAgCisJfQorfQorCit2b2lkIGdsY2RfaW52ZXJ0X2FyZWEodWludDhfdCB4LCB1aW50OF90IHksIHVpbnQ4X3QgdywgdWludDhfdCBoKQoreworCXVpbnQ4X3QgeHgsIHl5OworCWZvciAoeHggPSB4OyB4eCA8ICh4K3cpOyB4eCsrKSB7CisJCS8qIExvb3AgdGhyb3VnaCBlYWNoIHBhcnRpYWwgY29sdW1uICovCisJCWZvciAoeXkgPSB5OyB5eSA8ICh5K2gpOyB5eSsrKSB7CisJCQkvKiBHbyBkb3duIGFuZCBpbnZlcnQgZXZlcnkgcGl4ZWwgKi8KKwkJCWdsY2RfaW52ZXJ0X3BpeGVsKHh4LHl5KTsKKwkJfQorCX0KK30KKwordm9pZCBnbGNkX2RyYXdfYml0bWFwKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEpCit7CisKKyNpZiAwCisJLyogVGVzdGluZyBwdXJwb3NlcyBvbmx5OiBXcml0aW5nIHRvIHRoZSBMQ0QgcmlnaHQgYXdheSAobm90IGZvciBBVlIpICovCisJLyogTm9ybWFsbHksIHdlIGRvIG5vdCBkbyB0aGlzLCB3ZSBqdXN0IHdyaXRlIHRvIHRoZSBzY3JlZW4gYnVmZmVyICovCisJdWludDhfdCAqb3JpZ2luYWxfYnVmZmVyOworCisJLyogU2F2ZSB0aGUgbG9jYXRpb24gb2Ygb3JpZ2luYWwgc2NyZWVuIGJ1ZmZlciAqLworCW9yaWdpbmFsX2J1ZmZlciA9IGdsY2RfYnVmZmVyX3NlbGVjdGVkOworCQorCS8qIFVzZSBiaXRtYXAgbG9jYXRpb24gYXMgc2NyZWVuIGJ1ZmZlciAodGhpcyB3b24ndCB3b3JrIHdoZW4gdXNpbmcgQVZSOCBQR01fUCkgKi8KKwlnbGNkX3NlbGVjdF9zY3JlZW4oKHVpbnQ4X3QgKilkYXRhLCBnbGNkX2Jib3hfc2VsZWN0ZWQpOworCQorCS8qIE1ha2Ugc3VyZSB3ZSB3cml0ZSB0aGUgZW50cmUgZGlzcGxheSAqLworCWdsY2RfYmJveF9yZWZyZXNoKCk7IAorCWdsY2Rfd3JpdGUoKTsKKwkKKwkvKiBSZXN0b3JlIHRoZSBzY3JlZW4gYnVmZmVyIGJhY2sgdG8gb3JpZ2luYWwgKi8KKwlnbGNkX3NlbGVjdF9zY3JlZW4ob3JpZ2luYWxfYnVmZmVyLCBnbGNkX2Jib3hfc2VsZWN0ZWQpOwkKKyNlbmRpZgorCQorCS8qIENvcHkgYml0bWFwIGRhdGEgdG8gdGhlIHNjcmVlbiBidWZmZXIgKi8KKyNpZiBkZWZpbmVkKEdMQ0RfREVWSUNFX0FWUjgpCisJbWVtY3B5X1AoZ2xjZF9idWZmZXJfc2VsZWN0ZWQsIGRhdGEsIChHTENEX0xDRF9XSURUSCAqIEdMQ0RfTENEX0hFSUdIVCAvIDgpKTsKKyNlbHNlCisJbWVtY3B5KGdsY2RfYnVmZmVyX3NlbGVjdGVkLCBkYXRhLCAoR0xDRF9MQ0RfV0lEVEggKiBHTENEX0xDRF9IRUlHSFQgLyA4KSk7CisjZW5kaWYKKworCWdsY2RfYmJveF9yZWZyZXNoKCk7IAorfQpkaWZmIC0tZ2l0IGEvbGNkL2dyYXBocy5jIGIvbGNkL2dyYXBocy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiMWYwMzQKLS0tIC9kZXYvbnVsbAorKysgYi9sY2QvZ3JhcGhzLmMKQEAgLTAsMCArMSwxMjAgQEAKKy8qKgorICAgXGZpbGUgZ3JhcGhzLmMKKyAgIFxicmllZiBGdW5jdGlvbnMgcmVsYXRpbmcgdG8gZ3JhcGhzLiBlLmcgYmFyIGdyYXBocyBldGMuCisgICBcYXV0aG9yIEFuZHkgR29jaworICovIAorCisvKgorCUNvcHlyaWdodCAoYykgMjAxMiwgQW5keSBHb2NrCisKKwlBbGwgcmlnaHRzIHJlc2VydmVkLgorCisJUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisJbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisJCSogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKwkJICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisJCSogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKwkJICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisJCSAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKwkJKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEFuZHkgR29jayBub3IgdGhlCisJCSAgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMKKwkJICBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKworCVRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKwlBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorCVdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKwlESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBTkRZIEdPQ0sgQkUgTElBQkxFIEZPUiBBTlkKKwlESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworCShJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKwlMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKwlPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorCShJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisJU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjaW5jbHVkZSAiZ2xjZC5oIgorCitzdGF0aWMgdWludDhfdCBnbGNkX21hcCh1aW50OF90IHgxLCB1aW50OF90IHgyLCB1aW50OF90IHgpOworCit2b2lkIGdsY2RfYmFyX2dyYXBoX2hvcml6b250YWwodWludDhfdCB4LCB1aW50OF90IHksIHVpbnQ4X3Qgd2lkdGgsIHVpbnQ4X3QgaGVpZ2h0LCB1aW50OF90IHZhbCkKK3sKKwlpZiAoaGVpZ2h0IDwgMykgeworCQlyZXR1cm47CisJfQorCWdsY2RfZHJhd19yZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQsIEJMQUNLKTsKKwlnbGNkX2ZpbGxfcmVjdCh4KzEsIHkrMSwgZ2xjZF9tYXAoMCx3aWR0aC0yLHZhbCksIGhlaWdodC0yICwgQkxBQ0spOworfQorCit2b2lkIGdsY2RfYmFyX2dyYXBoX2hvcml6b250YWxfbm9fYm9yZGVyKHVpbnQ4X3QgeCwgdWludDhfdCB5LCB1aW50OF90IHdpZHRoLCB1aW50OF90IGhlaWdodCwgdWludDhfdCB2YWwpCit7CisJaWYgKGhlaWdodCA8IDMpIHsKKwkJcmV0dXJuOworCX0JCisJZ2xjZF9maWxsX3JlY3QoeCwgeSwgZ2xjZF9tYXAoMCx3aWR0aCx2YWwpLCBoZWlnaHQgLCBCTEFDSyk7Cit9CisKK3ZvaWQgZ2xjZF9iYXJfZ3JhcGhfdmVydGljYWwodWludDhfdCB4LCB1aW50OF90IHksIHVpbnQ4X3Qgd2lkdGgsIHVpbnQ4X3QgaGVpZ2h0LCB1aW50OF90IHZhbCkKK3sKKwlnbGNkX2RyYXdfcmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBCTEFDSyk7CisJZ2xjZF9maWxsX3JlY3QoeCsxLCB5KzErZ2xjZF9tYXAoMCxoZWlnaHQtMiwyNTUtdmFsKSwgd2lkdGgtMiwgaGVpZ2h0LTItZ2xjZF9tYXAoMCxoZWlnaHQtMiwyNTUtdmFsKSwgQkxBQ0spOworfQorCit2b2lkIGdsY2RfYmFyX2dyYXBoX3ZlcnRpY2FsX25vX2JvcmRlcih1aW50OF90IHgsIHVpbnQ4X3QgeSwgdWludDhfdCB3aWR0aCwgdWludDhfdCBoZWlnaHQsIHVpbnQ4X3QgdmFsKQoreworCWdsY2RfZmlsbF9yZWN0KHgsIHkrZ2xjZF9tYXAoMCxoZWlnaHQtMiwyNTUtdmFsKSwgd2lkdGgsIGhlaWdodC0yLWdsY2RfbWFwKDAsaGVpZ2h0LTIsMjU1LXZhbCksIEJMQUNLKTsKK30KKwordm9pZCBnbGNkX3Njcm9sbGluZ19iYXJfZ3JhcGgodWludDhfdCB4LCB1aW50OF90IHksIHVpbnQ4X3Qgd2lkdGgsIHVpbnQ4X3QgaGVpZ2h0LCB1aW50OF90IHZhbCkKK3sKKwl1aW50OF90IG54LCBueTsKKwl1aW50OF90IGNvbG9yOworCQorCS8qIERyYXcgYm9yZGVyIG9mIGdyYXBoICovCisJZ2xjZF9kcmF3X3JlY3QoeCx5LHdpZHRoLGhlaWdodCxCTEFDSyk7CisJCisJLyogU2Nyb2xsIGlubmVyIGNvbnRlbnRzIGxlZnQgYnkgb25lIHBpeGVsIHdpZHRoICovCisJZm9yIChueSA9IDE7IG55IDw9IChoZWlnaHQtMik7IG55KyspIHsKKwkJLyogUmVkcmF3IGVhY2ggaG9yaXpvbnRhbCBsaW5lICovCisJCWZvciAobnggPSAxOyBueCA8PSAod2lkdGgtMik7IG54ICs9IDEpIHsKKwkJCWNvbG9yID0gZ2xjZF9nZXRfcGl4ZWwoeCtueCsxLHkrbnkpOworCQkJZ2xjZF9zZXRfcGl4ZWwoeCtueCx5K255LGNvbG9yKTsKKwkJfQorCX0KKwkKKwl2YWwgPSB2YWwgKiAoaGVpZ2h0LTMpIC8gMjU1OworCQorCS8qIE1ha2Ugc3VyZSB3ZSdyZSBub3QgZXhjZWVkaW5nIHRoZSBzaXplIG9mIGJveCBpbnRlcmlvciAqLworCWlmICh2YWwgPiAoaGVpZ2h0LTMpKSB7CisJCXZhbCA9IGhlaWdodCAtIDM7CisJfQorCQorCS8qIERyYXcgbmV3IGJhciAtIGJvdGggYmxhY2sgYW5kIHdoaXRlIHBvcnRpb25zKi8KKwlnbGNkX2RyYXdfbGluZSh4K3dpZHRoLTIseStoZWlnaHQtMix4K3dpZHRoLTIseStoZWlnaHQtMi12YWwsQkxBQ0spOworCWdsY2RfZHJhd19saW5lKHgrd2lkdGgtMix5K2hlaWdodC0zLXZhbCx4K3dpZHRoLTIseSsxLFdISVRFKTsKKwkKKwkvKiBXcml0ZSB0byBkaXNwbGF5ICovCisJZ2xjZF93cml0ZSgpOworfQorCit2b2lkIGdsY2Rfc2Nyb2xsaW5nX2Jhcl9ncmFwaF90aW1pbmcodWludDhfdCB4LCB1aW50OF90IHksIHVpbnQ4X3Qgd2lkdGgsIHVpbnQ4X3QgaGVpZ2h0LCB1aW50OF90IHZhbCwgdWludDhfdCBsaW5lX3dpZHRoLCB1aW50MTZfdCBkZWxheSkKK3sKKwl1aW50OF90IG47CisJaWYgKGxpbmVfd2lkdGggPT0gMCkgeworCQlsaW5lX3dpZHRoID0gMTsKKwl9CisJCisJLyogQWRqdXN0IGdyYXBoIGxpbmUncyB3aWR0aCBieSBqdXN0IHJ1bm5pbmcgZ2xjZF9zY3JvbGxpbmdfYmFyX2dyYXBoKCkgeCBudW1iZXIgb2YgdGltZXMgKi8KKwkvKiBcdG9kbyBUaGlzIHNob3VsZCBiZSBkb25lIGRpZmZlcmVudGx5ISAqLworCWZvciAobj0wOyBuPGxpbmVfd2lkdGg7IG4rKykgeworCQlnbGNkX3Njcm9sbGluZ19iYXJfZ3JhcGgoeCx5LHdpZHRoLGhlaWdodCx2YWwpOworCX0KKwkKKwlpZiAoZGVsYXkpIHsKKwkJZGVsYXlfbXMoZGVsYXkpOworCX0KK30KKworc3RhdGljIHVpbnQ4X3QgZ2xjZF9tYXAodWludDhfdCB4MSwgdWludDhfdCB4MiwgdWludDhfdCB4KQoreworCXJldHVybiB4MSsoeDIteDEpKngvMjU1OwkKK30KZGlmZiAtLWdpdCBhL2xjZC9zcGkuYyBiL2xjZC9zcGkuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yM2JiMjdhCi0tLSAvZGV2L251bGwKKysrIGIvbGNkL3NwaS5jCkBAIC0wLDAgKzEsNzkgQEAKKyNpbmNsdWRlICJzcGkuaCIKKworc3RhdGljIHZvaWQgc3BpX2dwaW9faW5pdCh2b2lkKQoreworCUdQSU9fSW5pdFR5cGVEZWYgR1BJT19Jbml0U3RydWN0dXJlOworICAgIAorICAgIFJDQ19BUEIyUGVyaXBoQ2xvY2tDbWQoUkNDX0FQQjJQZXJpcGhfR1BJT0J8UkNDX0FQQjJQZXJpcGhfQUZJTywgRU5BQkxFKTsKKwlHUElPX0luaXRTdHJ1Y3R1cmUuR1BJT19QaW4gPSBHUElPX1Bpbl8xNXxHUElPX1Bpbl8xMzsKKwlHUElPX0luaXRTdHJ1Y3R1cmUuR1BJT19TcGVlZCA9IEdQSU9fU3BlZWRfNTBNSHo7CisJR1BJT19Jbml0U3RydWN0dXJlLkdQSU9fTW9kZSA9IEdQSU9fTW9kZV9BRl9QUDsKKwlHUElPX0luaXQoR1BJT0IsICZHUElPX0luaXRTdHJ1Y3R1cmUpOyAgCisgICAgCisJR1BJT19Jbml0U3RydWN0dXJlLkdQSU9fUGluID0gR1BJT19QaW5fMTQ7CisJR1BJT19Jbml0U3RydWN0dXJlLkdQSU9fTW9kZSA9IEdQSU9fTW9kZV9JTl9GTE9BVElORzsKKwlHUElPX0luaXQoR1BJT0IsICZHUElPX0luaXRTdHJ1Y3R1cmUpOyAKK30KKworc3RhdGljIHZvaWQgc3BpX2NzX2luaXQodm9pZCkKK3sKKwlHUElPX0luaXRUeXBlRGVmIEdQSU9fSW5pdFN0cnVjdHVyZTsKKworICAgIFJDQ19BUEIyUGVyaXBoQ2xvY2tDbWQoUkNDX0FQQjJQZXJpcGhfR1BJT0J8UkNDX0FQQjJQZXJpcGhfR1BJT0N8UkNDX0FQQjJQZXJpcGhfR1BJT0EsIEVOQUJMRSk7CisJR1BJT19Jbml0U3RydWN0dXJlLkdQSU9fUGluID0gR1BJT19QaW5fMTI7CisJR1BJT19Jbml0U3RydWN0dXJlLkdQSU9fU3BlZWQgPSBHUElPX1NwZWVkXzUwTUh6OworCUdQSU9fSW5pdFN0cnVjdHVyZS5HUElPX01vZGUgPSBHUElPX01vZGVfT3V0X1BQOworCUdQSU9fSW5pdChHUElPQiwgJkdQSU9fSW5pdFN0cnVjdHVyZSk7IAorICAgIAorCUdQSU9fSW5pdFN0cnVjdHVyZS5HUElPX1BpbiA9IEdQSU9fUGluXzc7CisJR1BJT19Jbml0KEdQSU9DLCAmR1BJT19Jbml0U3RydWN0dXJlKTsgIAorICAgIAorCUdQSU9fSW5pdFN0cnVjdHVyZS5HUElPX1BpbiA9IEdQSU9fUGluXzg7CisJR1BJT19Jbml0KEdQSU9BLCAmR1BJT19Jbml0U3RydWN0dXJlKTsgCisKKyAgICBHUElPX1NldEJpdHMoR1BJT0IsIEdQSU9fUGluXzEyKTsKKyAgICBHUElPX1NldEJpdHMoR1BJT0MsIEdQSU9fUGluXzcpOworICAgIEdQSU9fU2V0Qml0cyhHUElPQSwgR1BJT19QaW5fOCk7Cit9CisKK3ZvaWQgc3BpX2luaXQodm9pZCkKK3sKKwlTUElfSW5pdFR5cGVEZWYgIFNQSV9Jbml0U3RydWN0dXJlOworICAgIAorICAgIHNwaV9jc19pbml0KCk7CisgICAgc3BpX2dwaW9faW5pdCgpOworICAgIAorICAgIFJDQ19BUEIxUGVyaXBoQ2xvY2tDbWQoUkNDX0FQQjFQZXJpcGhfU1BJMiwgRU5BQkxFKTsKKwlTUElfSW5pdFN0cnVjdHVyZS5TUElfRGlyZWN0aW9uID0gU1BJX0RpcmVjdGlvbl8yTGluZXNfRnVsbER1cGxleDsKKwlTUElfSW5pdFN0cnVjdHVyZS5TUElfTW9kZSA9IFNQSV9Nb2RlX01hc3RlcjsKKwlTUElfSW5pdFN0cnVjdHVyZS5TUElfRGF0YVNpemUgPSBTUElfRGF0YVNpemVfOGI7CisJU1BJX0luaXRTdHJ1Y3R1cmUuU1BJX0NQT0wgPSBTUElfQ1BPTF9IaWdoOworCVNQSV9Jbml0U3RydWN0dXJlLlNQSV9DUEhBID0gU1BJX0NQSEFfMkVkZ2U7CisJU1BJX0luaXRTdHJ1Y3R1cmUuU1BJX05TUyA9IFNQSV9OU1NfU29mdDsKKwlTUElfSW5pdFN0cnVjdHVyZS5TUElfQmF1ZFJhdGVQcmVzY2FsZXIgPSBTUElfQmF1ZFJhdGVQcmVzY2FsZXJfMTY7CisJU1BJX0luaXRTdHJ1Y3R1cmUuU1BJX0ZpcnN0Qml0ID0gU1BJX0ZpcnN0Qml0X01TQjsKKwlTUElfSW5pdFN0cnVjdHVyZS5TUElfQ1JDUG9seW5vbWlhbCA9IDc7CisJU1BJX0luaXQoU1BJMiwgJlNQSV9Jbml0U3RydWN0dXJlKTsKKwkKKwlTUElfQ21kKFNQSTIsIEVOQUJMRSk7Cit9CisKKy8vdHJhbnNtaXQvcmVjZWl2ZQordWludDhfdCBzcGlfdHJhbnNpdmUodWludDhfdCBieXRlLCB1aW50MzJfdCB0aW1lb3V0KQoreworICAgIHVpbnQzMl90IHRpbWVyOworCisgICAgdGltZXIgPSB0aW1lb3V0OworICAgIHdoaWxlKChTUElfSTJTX0dldEZsYWdTdGF0dXMoU1BJMiwgU1BJX0kyU19GTEFHX1RYRSkgPT0gUkVTRVQpJiZ0aW1lcikKKyAgICB7CisgICAgICAgIHRpbWVyIC0tOworICAgIH0KKyAgICBTUElfSTJTX1NlbmREYXRhKFNQSTIsIGJ5dGUpOyAKKworICAgIHRpbWVyID0gdGltZW91dDsKKyAgICB3aGlsZSgoU1BJX0kyU19HZXRGbGFnU3RhdHVzKFNQSTIsIFNQSV9JMlNfRkxBR19SWE5FKSA9PSBSRVNFVCkmJnRpbWVyKQorICAgIHsKKyAgICAgICAgdGltZXIgLS07CisgICAgfQorICAgIHJldHVybiBTUElfSTJTX1JlY2VpdmVEYXRhKFNQSTIpOworfQpkaWZmIC0tZ2l0IGEvbGNkL3NwaS5oIGIvbGNkL3NwaS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5YTNjNWIKLS0tIC9kZXYvbnVsbAorKysgYi9sY2Qvc3BpLmgKQEAgLTAsMCArMSwxOSBAQAorI2lmbmRlZiBfX3NwaV9oX18KKyNkZWZpbmUgX19zcGlfaF9fCisKKyNpbmNsdWRlICJzdG0zMmYxMHguaCIKKworI2RlZmluZSBTUElfU0VMRUNUX0NIMSgpICAgICAgR1BJT19SZXNldEJpdHMoR1BJT0IsIEdQSU9fUGluXzEyKQorI2RlZmluZSBTUElfREVTRUxFQ1RfQ0gxKCkgICAgR1BJT19TZXRCaXRzKEdQSU9CLCBHUElPX1Bpbl8xMikKKworI2RlZmluZSBTUElfU0VMRUNUX0NIMigpICAgICAgR1BJT19SZXNldEJpdHMoR1BJT0EsIEdQSU9fUGluXzgpCisjZGVmaW5lIFNQSV9ERVNFTEVDVF9DSDIoKSAgICBHUElPX1NldEJpdHMoR1BJT0EsIEdQSU9fUGluXzgpCisKKworI2RlZmluZSBTUElfU0VMRUNUX0NIMygpICAgICAgR1BJT19SZXNldEJpdHMoR1BJT0MsIEdQSU9fUGluXzcpCisjZGVmaW5lIFNQSV9ERVNFTEVDVF9DSDMoKSAgICBHUElPX1NldEJpdHMoR1BJT0MsIEdQSU9fUGluXzcpCisKK2V4dGVybiB2b2lkIHNwaV9pbml0KHZvaWQpOworZXh0ZXJuIHVpbnQ4X3Qgc3BpX3RyYW5zaXZlKHVpbnQ4X3QgYnl0ZSwgdWludDMyX3QgdGltZW91dCk7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvbGNkL3RleHQuYyBiL2xjZC90ZXh0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjNiZmE1ZAotLS0gL2Rldi9udWxsCisrKyBiL2xjZC90ZXh0LmMKQEAgLTAsMCArMSwzMjEgQEAKKworLyoqCisgICBcZmlsZSB0ZXh0LmMKKyAgIFxicmllZiBGdW5jdGlvbnMgcmVsYXRpbmcgdG8gdXNpbmcgdGV4dCBmb250cyBvZiBhbGwgc2l6ZXMuCisgICBcYXV0aG9yIEFuZHkgR29jaworICovIAorCisvKgorCUNvcHlyaWdodCAoYykgMjAxMiwgQW5keSBHb2NrCisKKwlBbGwgcmlnaHRzIHJlc2VydmVkLgorCisJUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisJbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisJCSogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKwkJICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisJCSogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKwkJICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisJCSAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKwkJKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEFuZHkgR29jayBub3IgdGhlCisJCSAgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMKKwkJICBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKworCVRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKwlBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorCVdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKwlESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBTkRZIEdPQ0sgQkUgTElBQkxFIEZPUiBBTlkKKwlESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworCShJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKwlMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKwlPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorCShJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisJU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjaW5jbHVkZSAiZ2xjZC5oIgorCitleHRlcm4gdWludDhfdCAqZ2xjZF9idWZmZXJfc2VsZWN0ZWQ7CitleHRlcm4gZ2xjZF9Cb3VuZGluZ0JveF90ICpnbGNkX2Jib3hfc2VsZWN0ZWQ7CisKK2dsY2RfRm9udENvbmZpZ190IGZvbnRfY3VycmVudDsKKworI2lmIGRlZmluZWQoR0xDRF9ERVZJQ0VfQVZSOCkKK3ZvaWQgZ2xjZF9zZXRfZm9udChQR01fUCBmb250X3RhYmxlLCB1aW50OF90IHdpZHRoLCB1aW50OF90IGhlaWdodCwgY2hhciBzdGFydF9jaGFyLCBjaGFyIGVuZF9jaGFyKQorI2Vsc2UKK3ZvaWQgZ2xjZF9zZXRfZm9udChjb25zdCBjaGFyICogZm9udF90YWJsZSwgdWludDhfdCB3aWR0aCwgdWludDhfdCBoZWlnaHQsIGNoYXIgc3RhcnRfY2hhciwgY2hhciBlbmRfY2hhcikKKyNlbmRpZgoreworCS8qIFN1cHBvcnRzIHZhcmlhYmxlIHdpZHRoIGZvbnRzICovCisJZm9udF9jdXJyZW50LmZvbnRfdGFibGUgPSBmb250X3RhYmxlOworCWZvbnRfY3VycmVudC53aWR0aCA9IHdpZHRoOworCWZvbnRfY3VycmVudC5oZWlnaHQgPSBoZWlnaHQ7CisJZm9udF9jdXJyZW50LnN0YXJ0X2NoYXIgPSBzdGFydF9jaGFyOworCWZvbnRfY3VycmVudC5lbmRfY2hhciA9IGVuZF9jaGFyOworCWZvbnRfY3VycmVudC50YWJsZV90eXBlID0gTUlLUk87IC8qIE9ubHkgc3VwcG9ydHMgTWlrcm9FbGVrdHJvbmlrYSBnZW5lcmF0ZWQgZm9ybWF0IGF0IHRoZSBtb21lbnQgKi8KK30KKworI2lmIGRlZmluZWQoR0xDRF9ERVZJQ0VfQVZSOCkKK3ZvaWQgZ2xjZF9mb250KFBHTV9QIGZvbnRfdGFibGUsIHVpbnQ4X3Qgd2lkdGgsIHVpbnQ4X3QgaGVpZ2h0LCBjaGFyIHN0YXJ0X2NoYXIsIGNoYXIgZW5kX2NoYXIsIGZvbnRfdGFibGVfdHlwZV90IHR5cGUpCisjZWxzZQordm9pZCBnbGNkX2ZvbnQoY29uc3QgY2hhciAqIGZvbnRfdGFibGUsIHVpbnQ4X3Qgd2lkdGgsIHVpbnQ4X3QgaGVpZ2h0LCBjaGFyIHN0YXJ0X2NoYXIsIGNoYXIgZW5kX2NoYXIsIGZvbnRfdGFibGVfdHlwZV90IHR5cGUpCisjZW5kaWYKK3sKKwkvKiBTdXBwb3J0cyB2YXJpYWJsZSB3aWR0aCBmb250cyAqLworCWZvbnRfY3VycmVudC5mb250X3RhYmxlID0gZm9udF90YWJsZTsKKwlmb250X2N1cnJlbnQud2lkdGggPSB3aWR0aDsKKwlmb250X2N1cnJlbnQuaGVpZ2h0ID0gaGVpZ2h0OworCWZvbnRfY3VycmVudC5zdGFydF9jaGFyID0gc3RhcnRfY2hhcjsKKwlmb250X2N1cnJlbnQuZW5kX2NoYXIgPSBlbmRfY2hhcjsKKwlmb250X2N1cnJlbnQudGFibGVfdHlwZSA9IHR5cGU7IC8qIE9ubHkgc3VwcG9ydHMgTWlrcm9FbGVrdHJvbmlrYSBnZW5lcmF0ZWQgZm9ybWF0IGF0IHRoZSBtb21lbnQgKi8KK30KKwordWludDhfdCBnbGNkX2RyYXdfY2hhcl94eSh1aW50OF90IHgsIHVpbnQ4X3QgeSwgY2hhciBjKQoreworCWlmIChjIDwgZm9udF9jdXJyZW50LnN0YXJ0X2NoYXIgfHwgYyA+IGZvbnRfY3VycmVudC5lbmRfY2hhcikgeworCQljID0gJy4nOworCX0KKwkKKwlpZiAoZm9udF9jdXJyZW50LnRhYmxlX3R5cGUgPT0gU1RBTkcpIHsKKwkJLyogRm9udCB0YWJsZSBpbiBQYXNjYWwgU3RhbmcgZm9ybWF0IChzaW5nbGUgYnl0ZSBoZWlnaHQgd2l0aCB3aXRoIG5vIHdpZHRoIHNwZWNpZmllcikgKi8KKwkJLyogTWF4aW11bSBoZWlnaHQgb2YgOCBiaXRzIG9ubHkgKi8KKwkJCQorCQl1aW50OF90IGk7CisJCWZvciAoIGkgPSAwOyBpIDwgZm9udF9jdXJyZW50LndpZHRoOyBpKysgKSB7CisjaWYgZGVmaW5lZChHTENEX0RFVklDRV9BVlI4KQkJCQorCQkJdWludDhfdCBkYXQgPSBwZ21fcmVhZF9ieXRlKCBmb250X2N1cnJlbnQuZm9udF90YWJsZSArICgoYyAtIGZvbnRfY3VycmVudC5zdGFydF9jaGFyKSAqIChmb250X2N1cnJlbnQud2lkdGgpKSArIGkgKTsKKyNlbHNlCisJCQl1aW50OF90IGRhdCA9ICooIGZvbnRfY3VycmVudC5mb250X3RhYmxlICsgKChjIC0gZm9udF9jdXJyZW50LnN0YXJ0X2NoYXIpICogKGZvbnRfY3VycmVudC53aWR0aCkpICsgaSApOworI2VuZGlmCisJCQl1aW50OF90IGo7CisJCQkKKwkJCWlmKGdsY2RfZ2V0X3JldmVyc2Vfc3RhKCkpCisJCQkJZGF0ID0gfmRhdDsKKwkJCWZvciAoaiA9IDA7IGogPCA4OyBqKyspIHsKKwkJCQkvKiBTZXQgcGl4ZWwgY29sb3IgZm9yIGVhY2ggYml0IG9mIHRoZSBjb2x1bW4gKDgtYml0cykgKi8KKwkJCQlpZiAoeCtpID49IEdMQ0RfTENEX1dJRFRIIHx8IHkraiA+PSBHTENEX0xDRF9IRUlHSFQpIHsKKwkJCQkJLyogRG9uJ3QgdHJ5IGFuZCB3cml0ZSBwYXN0IHRoZSBkaW1lbnNpb25zIG9mIHRoZSBMQ0QgKi8KKwkJCQkJcmV0dXJuIDA7CisJCQkJfQorCQkJCWlmIChkYXQgJiAoMTw8aikpIHsKKwkJCQkJZ2xjZF9zZXRfcGl4ZWwoeCtpLHkraixCTEFDSyk7CisJCQkJfSBlbHNlIHsKKwkJCQkJZ2xjZF9zZXRfcGl4ZWwoeCtpLHkraixXSElURSk7CisJCQkJfQorCQkJfQorCQl9CisJCQorCQkvKiBhbHdheXMgcmV0dXJuIGhvdyBtYW55IHBpeGVscyBvZiB3aWR0aCB3ZXJlIHdyaXR0ZW4gKi8KKwkJLyogaGVyZSBmb3IgInN0YW5nIiBmb3JtYXQgZm9udHMsIGl0IGlzIGFsd2F5cyBmaXhlZCAqLworCQlyZXR1cm4gZm9udF9jdXJyZW50LndpZHRoOworCQkKKwl9IGVsc2UgaWYgKGZvbnRfY3VycmVudC50YWJsZV90eXBlID09IE1JS1JPKSB7CisJCS8qIEZvbnQgdGFibGUgaW4gTWlrcm9FbGVja3Ryb25pY2EgZm9ybWF0CisJCSAgIC0gbXVsdGkgcm93IGZvbnRzIGFsbG93ZWQgKG1vcmUgdGhhbiA4IHBpeGVscyBoaWdoKQorCQkgICAtIHZhcmlhYmxlIHdpZHRoIGZvbnRzIGFsbG93ZWQKKwkJICAgYSBjb21wbGV0ZSBjb2x1bW4gaXMgd3JpdHRlbiBiZWZvcmUgbW92aW5nIHRvIHRoZSBuZXh0ICovCisJCQorCQl1aW50OF90IGk7CisJCXVpbnQ4X3QgdmFyX3dpZHRoOworCQl1aW50OF90IGJ5dGVzX2hpZ2g7CisJCXVpbnQ4X3QgYnl0ZXNfcGVyX2NoYXI7CisJCWNvbnN0IGNoYXIgKnA7CisJCQorCQlpZiAoKGZvbnRfY3VycmVudC5oZWlnaHQgJSA4KSA+IDApeworCQkJYnl0ZXNfaGlnaCA9IChmb250X2N1cnJlbnQuaGVpZ2h0IC8gOCkgKyAxOworCQl9CisJCWVsc2V7CisJCQlieXRlc19oaWdoID0gKGZvbnRfY3VycmVudC5oZWlnaHQgLyA4KTsKKwkJfQorCQlieXRlc19wZXJfY2hhciA9IGZvbnRfY3VycmVudC53aWR0aCAqIGJ5dGVzX2hpZ2ggKyAxOyAvKiBUaGUgKzEgaXMgdGhlIHdpZHRoIGJ5dGUgYXQgdGhlIHN0YXJ0ICovCisJCQkJCisJCXAgPSBmb250X2N1cnJlbnQuZm9udF90YWJsZSArIChjIC0gZm9udF9jdXJyZW50LnN0YXJ0X2NoYXIpICogYnl0ZXNfcGVyX2NoYXI7CisKKwkJLyogVGhlIGZpcnN0IGJ5dGUgcGVyIGNoYXJhY3RlciBpcyBhbHdheXMgdGhlIHdpZHRoIG9mIHRoZSBjaGFyYWN0ZXIgKi8KKyNpZiBkZWZpbmVkKEdMQ0RfREVWSUNFX0FWUjgpCQkKKwkJdmFyX3dpZHRoID0gcGdtX3JlYWRfYnl0ZShwKTsKKyNlbHNlCisJCXZhcl93aWR0aCA9ICpwOworI2VuZGlmCisJCXArKzsgLyogU3RlcCBvdmVyIHRoZSB2YXJpYWJsZSB3aWR0aCBmaWVsZCAqLworCisJCS8qCisJCWlmICh4K3Zhcl93aWR0aCA+PSBHTENEX0xDRF9XSURUSCB8fCB5K2ZvbnRfY3VycmVudC5oZWlnaHQgPj0gR0xDRF9MQ0RfSEVJR0hUKSB7CisJCQlyZXR1cm47CisJCX0KKwkJKi8KKwkJCisJCWZvciAoIGkgPSAwOyBpIDwgdmFyX3dpZHRoOyBpKysgKSB7CisJCQl1aW50OF90IGo7CisJCQlmb3IgKCBqID0gMDsgaiA8IGJ5dGVzX2hpZ2g7IGorKyApIHsKKyNpZiBkZWZpbmVkKEdMQ0RfREVWSUNFX0FWUjgpCQkJCQorCQkJCXVpbnQ4X3QgZGF0ID0gcGdtX3JlYWRfYnl0ZSggcCArIGkqYnl0ZXNfaGlnaCArIGogKTsKKyNlbHNlCisJCQkJdWludDhfdCBkYXQgPSAqKCBwICsgaSpieXRlc19oaWdoICsgaiApOworI2VuZGlmCisJCQkJdWludDhfdCBiaXQ7CisJCQkKKwkJCQlpZihnbGNkX2dldF9yZXZlcnNlX3N0YSgpKQorCQkJCQlkYXQgPSB+ZGF0OworCQkJCWZvciAoYml0ID0gMDsgYml0IDwgODsgYml0KyspIHsKKwkJCQkJCisJCQkJCWlmICh4K2kgPj0gR0xDRF9MQ0RfV0lEVEggfHwgeStqKjgrYml0ID49IEdMQ0RfTENEX0hFSUdIVCkgeworCQkJCQkJLyogRG9uJ3Qgd3JpdGUgcGFzdCB0aGUgZGltZW5zaW9ucyBvZiB0aGUgTENELCBza2lwIHRoZSBlbnRpcmUgY2hhciAqLworCQkJCQkJcmV0dXJuIDA7CisJCQkJCX0KKwkJCQkJCisJCQkJCS8qIFdlIHNob3VsZCBub3Qgd3JpdGUgaWYgdGhlIHkgYml0IGV4Y2VlZHMgZm9udCBoZWlnaHQgKi8KKwkJCQkJaWYgKChqKjggKyBiaXQpID49IGZvbnRfY3VycmVudC5oZWlnaHQpIHsKKwkJCQkJCS8qIFNraXAgdGhlIGJpdCAqLworCQkJCQkJY29udGludWU7CisJCQkJCX0KKwkJCQkJCisJCQkJCWlmIChkYXQgJiAoMTw8Yml0KSkgeworCQkJCQkJZ2xjZF9zZXRfcGl4ZWwoeCtpLHkraio4K2JpdCxCTEFDSyk7CisJCQkJCX0gZWxzZSB7CisJCQkJCQlnbGNkX3NldF9waXhlbCh4K2kseStqKjgrYml0LFdISVRFKTsKKwkJCQkJfQorCQkJCX0JCQkJCQkJCQkKKwkJCX0JCQkJCisJCX0KKwkJcmV0dXJuIHZhcl93aWR0aDsJCisJCisJfSBlbHNlIGlmIChmb250X2N1cnJlbnQudGFibGVfdHlwZSA9PSBHTENEX1VUSUxTKSB7CisJCS8qIEZvbnQgdGFibGUgZm9ybWF0IG9mIGdsY2QtdXRpbHMKKwkJICAgLSBBIGNvbXBsZXRlIHJvdyBpcyB3cml0dGVuIGZpcnN0IChub3QgY29tcGxldGVkIGNvbHVtbnMpCisJCSAgIC0gV2lkdGggbm90IHN0b3JlZCwgYnV0IHdlIGNhbiBzZWFyY2ggYW5kIGRldGVybWluZSBpdAorCQkgICAtIE5vdCB5ZXQgc3VwcG9ydGVkICovCisJCQorCQl1aW50OF90IHZhcl93aWR0aCwgbjsKKwkJdWludDhfdCBieXRlc19oaWdoLCBieXRlc19wZXJfY2hhcjsKKwkJY29uc3QgY2hhciAqcDsKKwkJdWludDhfdCBqOworCQkKKwkJYnl0ZXNfaGlnaCA9IGZvbnRfY3VycmVudC5oZWlnaHQgLyA4ICsgMTsKKwkJYnl0ZXNfcGVyX2NoYXIgPSBmb250X2N1cnJlbnQud2lkdGggKiBieXRlc19oaWdoOworCQkKKwkJLyogUG9pbnQgdG8gY2hhcnMgZmlyc3QgYnl0ZSAqLworCQlwID0gZm9udF9jdXJyZW50LmZvbnRfdGFibGUgKyAoYyAtIGZvbnRfY3VycmVudC5zdGFydF9jaGFyKSAqIGJ5dGVzX3Blcl9jaGFyOworCisJCS8qIERldGVybWluZSB0aGUgd2lkdGggb2YgdGhlIGNoYXJhY3RlciAqLworCQl2YXJfd2lkdGggPSBmb250X2N1cnJlbnQud2lkdGg7CisJCQorCQluID0gMDsgLyogSG93IG1hbnkgY29sdW1ucyBiYWNrIGZyb20gdGhlIGVuZCAqLworCQkKKwkJd2hpbGUgKDEpIHsKKwkJCXVpbnQ4X3QgbWF4X2J5dGUgPSAwOworCQkJdWludDhfdCByb3cgPSAwOworCQkJCisJCQlmb3IgKHJvdyA9IDA7IHJvdyA8IGJ5dGVzX2hpZ2g7IHJvdysrKSB7CisJCQkJdWludDhfdCBvZmZzZXQ7CisJCQkJb2Zmc2V0ID0gKGZvbnRfY3VycmVudC53aWR0aCAtIDEgLSBuKSAqIHJvdzsKKwkJCQltYXhfYnl0ZSA9ICoocCArIG9mZnNldCk7CisJCQl9CisJCQlpZiAobWF4X2J5dGUgPT0gMCkgeworCQkJCS8qIGNvbHVtbiBpcyBlbXB0eSBmb3IgYWxsIHJvd3MsIGdvIGxlZnQgYW5kIHRlc3QgYWdhaW4gKi8KKwkJCQkvKiByZWR1Y2UgdmFyaWFibGUgd2lkdGggYnkgMSAqLworCQkJCXZhcl93aWR0aC0tOworCQkJCWlmICh2YXJfd2lkdGggPT0gMCkgeworCQkJCQlicmVhazsKKwkJCQl9CisJCQl9IGVsc2UgeworCQkJCWJyZWFrOyAvKiBQYXJ0IG9mIGEgY2hhcmFjdGVyIHdhcyBmb3VuZCAqLworCQkJfQorCQkJbisrOworCQl9CisJCQorCQkvKiBVbmNvbW1lbnQgbGluZSBiZWxvdywgdG8gZm9yY2UgZml4ZWQgd2lkdGgsIGZvciBkZWJ1Z2dpbmcgb25seSAqLworCQkvL3Zhcl93aWR0aCA9IGZvbnRfY3VycmVudC53aWR0aDsgLy8gYnlwYXNzIGF1dG8gd2lkdGggZGV0ZWN0aW9uLCB0cmVhdCBhcyBmaXhlZCB3aWR0aAorCQkJCQorCQkvKiBGb3IgZ2xjZC11dGlscyBmb3JtYXQsIHdlIHdyaXRlIG9uZSBjb21wbGV0ZSByb3cgYXQgYSB0aW1lICovCisJCSAvKiBsb29wIGFzIHJvd3MsIDFzdCByb3csIGo9MCAqLworCQlmb3IgKCBqID0gMDsgaiA8IGJ5dGVzX2hpZ2g7IGorKyApIHsKKwkJCS8qIExvb3Agb25lIHJvdyBhdCBhIHRpbWUgKi8KKwkJCisJCQl1aW50OF90IGk7CisJCQlmb3IgKCBpID0gMDsgaSA8IHZhcl93aWR0aDsgaSsrICkgeworCQkJCS8qIExvb3Agb25lIGNvbHVtbiBhdCBhIHRpbWUgKi8KKwkJCQkKKwkJCQl1aW50OF90IGRhdCwgYml0OworCQkJCQorI2lmIGRlZmluZWQoR0xDRF9ERVZJQ0VfQVZSOCkKKwkJCQlkYXQgPSBwZ21fcmVhZF9ieXRlKCBwICsgaipmb250X2N1cnJlbnQud2lkdGggKyBpICk7CisjZWxzZQorCQkJCWRhdCA9ICooIHAgKyBqKmZvbnRfY3VycmVudC53aWR0aCArIGkgKTsKKyNlbmRpZgorCQkJCisJCQkJaWYoZ2xjZF9nZXRfcmV2ZXJzZV9zdGEoKSkKKwkJCQkJZGF0ID0gfmRhdDsKKwkJCQkKKwkJCQlmb3IgKGJpdCA9IDA7IGJpdCA8IDg7IGJpdCsrKSB7CisJCQkJCQorCQkJCQlpZiAoKHgraSkgPj0gR0xDRF9MQ0RfV0lEVEggfHwgKHkraio4K2JpdCkgPj0gR0xDRF9MQ0RfSEVJR0hUKSB7CisJCQkJCQkvKiBEb24ndCB3cml0ZSBwYXN0IHRoZSBkaW1lbnNpb25zIG9mIHRoZSBMQ0QsIHNraXAgdGhlIGVudGlyZSBjaGFyICovCisJCQkJCQlyZXR1cm4gMDsKKwkJCQkJfQorCQkJCQkKKwkJCQkJLyogV2Ugc2hvdWxkIG5vdCB3cml0ZSBpZiB0aGUgeSBiaXQgZXhjZWVkcyBmb250IGhlaWdodCAqLworCQkJCQlpZiAoKGoqOCArIGJpdCkgPj0gZm9udF9jdXJyZW50LmhlaWdodCkgeworCQkJCQkJLyogU2tpcCB0aGUgYml0ICovCisJCQkJCQljb250aW51ZTsKKwkJCQkJfQorCQkJCQkKKwkJCQkJaWYgKGRhdCAmICgxPDxiaXQpKSB7CisJCQkJCQlnbGNkX3NldF9waXhlbCh4K2kseStqKjgrYml0LEJMQUNLKTsKKwkJCQkJfSBlbHNlIHsKKwkJCQkJCWdsY2Rfc2V0X3BpeGVsKHgraSx5K2oqOCtiaXQsV0hJVEUpOworCQkJCQl9CisJCQkJfQkJCQkJCQkJCQorCQkJfSAvKiBpICovCisJCX0gLyogaiAqLworCQkKKwkJcmV0dXJuIHZhcl93aWR0aDsgLyogTnVtYmVyIG9mIGNvbHVtbnMgd3JpdHRlbiB0byBkaXNwbGF5ICovCisJCQorCX0gZWxzZSB7CisJCS8qIERvbid0IHJlY29nbmlzZSB0aGUgZm9udCB0YWJsZSAqLworCQlyZXR1cm4gMDsKKwkJCisJfQorCit9CisKK3ZvaWQgZ2xjZF9kcmF3X3N0cmluZ194eSh1aW50OF90IHgsIHVpbnQ4X3QgeSwgY2hhciAqYykKK3sKKwl1aW50OF90IHdpZHRoOworCisJaWYgKHkgPiAoR0xDRF9MQ0RfSEVJR0hUIC0gZm9udF9jdXJyZW50LmhlaWdodCAtIDEpKSB7CisJCS8qIENoYXJhY3RlciB3b24ndCBmaXQgKi8KKwkJcmV0dXJuOworCX0KKworCXdoaWxlICgqYykgeworCQl3aWR0aCA9IGdsY2RfZHJhd19jaGFyX3h5KHgseSwqYyk7CisJCXggKz0gKHdpZHRoICsgMSk7CisJCWMrKzsKKwl9CQkKK30KKwordm9pZCBnbGNkX2RyYXdfc3RyaW5nX3h5X1AodWludDhfdCB4LCB1aW50OF90IHksIGNvbnN0IGNoYXIgKnN0cikKK3sKKwl1aW50OF90IHdpZHRoOworCisJaWYgKHkgPiAoR0xDRF9MQ0RfSEVJR0hUIC0gZm9udF9jdXJyZW50LmhlaWdodCAtIDEpKSB7CisJCS8qIENoYXJhY3RlciB3b24ndCBmaXQgKi8KKwkJcmV0dXJuOworCX0KKworCXdoaWxlICgxKSB7CisjaWYgZGVmaW5lZChHTENEX0RFVklDRV9BVlI4KQkJCisJCWNoYXIgYyA9IHBnbV9yZWFkX2J5dGUoc3RyKyspOworI2Vsc2UKKwkJY2hhciBjID0gKihzdHIrKyk7CisjZW5kaWYKKwkJaWYgKCFjKQorCQkJcmV0dXJuOworCQkJCQkKKwkJd2lkdGggPSBnbGNkX2RyYXdfY2hhcl94eSh4LHksYyk7CisJCXggKz0gKHdpZHRoICsgMSk7CisJCWMrKzsKKwl9CQkKK30KKwpkaWZmIC0tZ2l0IGEvbGNkL3RleHRfdGlueS5jIGIvbGNkL3RleHRfdGlueS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkZTZkNGUKLS0tIC9kZXYvbnVsbAorKysgYi9sY2QvdGV4dF90aW55LmMKQEAgLTAsMCArMSwxNzcgQEAKKy8qKgorICAgXGZpbGUgdGV4dF90aW55LmMKKyAgIFxicmllZiBGdW5jdGlvbnMgcmVsYXRpbmcgdG8gdXNpbmcgdGlueSA1eDcgdGV4dCBmb250cy4KKyAgIFxhdXRob3IgQW5keSBHb2NrCisgKi8gCisKKy8qCisJQ29weXJpZ2h0IChjKSAyMDEyLCBBbmR5IEdvY2sKKworCUFsbCByaWdodHMgcmVzZXJ2ZWQuCisKKwlSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKwltb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKwkJKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorCQkgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKwkJKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorCQkgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKwkJICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorCQkqIE5laXRoZXIgdGhlIG5hbWUgb2YgQW5keSBHb2NrIG5vciB0aGUKKwkJICBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cworCQkgIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorCisJVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorCUFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisJV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorCURJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFORFkgR09DSyBCRSBMSUFCTEUgRk9SIEFOWQorCURJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisJKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworCUxPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorCU9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisJKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKwlTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNpbmNsdWRlICJnbGNkLmgiCisKKyNpZiBkZWZpbmVkKEdMQ0RfREVWSUNFX0FWUjgpCit2b2lkIGdsY2RfdGlueV9zZXRfZm9udChQR01fUCBmb250X3RhYmxlLCB1aW50OF90IHdpZHRoLCB1aW50OF90IGhlaWdodCwgY2hhciBzdGFydF9jaGFyLCBjaGFyIGVuZF9jaGFyKQorI2Vsc2UKK3ZvaWQgZ2xjZF90aW55X3NldF9mb250KGNvbnN0IGNoYXIgKiBmb250X3RhYmxlLCB1aW50OF90IHdpZHRoLCB1aW50OF90IGhlaWdodCwgY2hhciBzdGFydF9jaGFyLCBjaGFyIGVuZF9jaGFyKQorI2VuZGlmCit7CisJZm9udF9jdXJyZW50LmZvbnRfdGFibGUgPSBmb250X3RhYmxlOworCWZvbnRfY3VycmVudC53aWR0aCA9IHdpZHRoOworCWZvbnRfY3VycmVudC5oZWlnaHQgPSBoZWlnaHQ7CisJZm9udF9jdXJyZW50LnN0YXJ0X2NoYXIgPSBzdGFydF9jaGFyOworCWZvbnRfY3VycmVudC5lbmRfY2hhciA9IGVuZF9jaGFyOworCWZvbnRfY3VycmVudC50YWJsZV90eXBlID0gU1RBTkc7Cit9CisKK3ZvaWQgZ2xjZF90aW55X2RyYXdfY2hhcih1aW50OF90IHgsIHVpbnQ4X3QgbGluZSwgY2hhciBjKQoreworCXVpbnQ4X3QgaTsKKwkKKwkvKiBPbmx5IHdvcmtzIGZvciBmb250cyA8IDggYml0cyBpbiBoZWlnaHQgKi8KKwlpZiAoZm9udF9jdXJyZW50LmhlaWdodCA+PSA4KSB7CisJCXJldHVybjsKKwl9CisJaWYgKGMgPCBmb250X2N1cnJlbnQuc3RhcnRfY2hhciB8fCBjID4gZm9udF9jdXJyZW50LmVuZF9jaGFyKSB7CisJCWMgPSAnLic7CisJfQorCWlmICggbGluZSA+PSBHTENEX0xDRF9IRUlHSFQgLyAoZm9udF9jdXJyZW50LmhlaWdodCArIDEpICkgeworCQlyZXR1cm47CisJfQkJCisJaWYgKCAoeCtmb250X2N1cnJlbnQud2lkdGgpID49IEdMQ0RfTENEX1dJRFRIICkgeworCQlyZXR1cm47CisJfQkJCisJCisJZ2xjZF91cGRhdGVfYmJveCh4LCBsaW5lKihmb250X2N1cnJlbnQuaGVpZ2h0ICsgMSksIHgrZm9udF9jdXJyZW50LndpZHRoLCBsaW5lKihmb250X2N1cnJlbnQuaGVpZ2h0ICsgMSkgKyAoZm9udF9jdXJyZW50LmhlaWdodCArIDEpKTsKKwkKKwlmb3IgKCBpID0gMDsgaSA8IGZvbnRfY3VycmVudC53aWR0aDsgaSsrICkgeworI2lmIGRlZmluZWQoR0xDRF9ERVZJQ0VfQVZSOCkJCQorCQlnbGNkX2J1ZmZlcl9zZWxlY3RlZFt4ICsgKGxpbmUgKiBHTENEX0xDRF9XSURUSCldID0gcGdtX3JlYWRfYnl0ZSggZm9udF9jdXJyZW50LmZvbnRfdGFibGUgKyAoKGMgLSBmb250X2N1cnJlbnQuc3RhcnRfY2hhcikgKiAoZm9udF9jdXJyZW50LndpZHRoKSkgKyBpICk7CisjZWxzZQorCQlnbGNkX2J1ZmZlcl9zZWxlY3RlZFt4ICsgKGxpbmUgKiBHTENEX0xDRF9XSURUSCldID0gKiggZm9udF9jdXJyZW50LmZvbnRfdGFibGUgKyAoKGMgLSBmb250X2N1cnJlbnQuc3RhcnRfY2hhcikgKiAoZm9udF9jdXJyZW50LndpZHRoKSkgKyBpICk7CisjZW5kaWYKKwkJeCsrOworCX0KK30KKwordm9pZCBnbGNkX3RpbnlfZHJhd19zdHJpbmcodWludDhfdCB4LCB1aW50OF90IGxpbmUsIGNoYXIgKnN0cikKK3sKKwlpZiAoZm9udF9jdXJyZW50LmhlaWdodCA+PSA4KSB7CisJCXJldHVybjsKKwl9CisJd2hpbGUgKCpzdHIpIHsKKwkJZ2xjZF90aW55X2RyYXdfY2hhcih4LCBsaW5lLCAqc3RyKyspOworCQl4ICs9IChmb250X2N1cnJlbnQud2lkdGggKyAxKTsKKwkJaWYgKCh4ICsgZm9udF9jdXJyZW50LndpZHRoICsgMSkgPiBHTENEX0xDRF9XSURUSCkgeworCQkJeCA9IDA7IC8qIFJhbiBvdXQgb2YgdGhpcyBsaW5lICovCisJCQlsaW5lKys7CisJCX0KKwkJaWYgKGxpbmUgPj0gKEdMQ0RfTENEX0hFSUdIVC8oZm9udF9jdXJyZW50LmhlaWdodCArIDEpKSkKKwkJCXJldHVybjsgLyogUmFuIG91dCBvZiBzcGFjZSA6KCAqLworCX0KK30KKworI2lmIGRlZmluZWQoR0xDRF9ERVZJQ0VfQVZSOCkKK3ZvaWQgZ2xjZF90aW55X2RyYXdfc3RyaW5nX1AodWludDhfdCB4LCB1aW50OF90IGxpbmUsIFBHTV9QIHN0cikKKyNlbHNlCit2b2lkIGdsY2RfdGlueV9kcmF3X3N0cmluZ19QKHVpbnQ4X3QgeCwgdWludDhfdCBsaW5lLCBjb25zdCBjaGFyICpzdHIpCisjZW5kaWYKK3sKKwlpZiAoZm9udF9jdXJyZW50LmhlaWdodCA+PSA4KSB7CisJCXJldHVybjsKKwl9CisJd2hpbGUgKDEpIHsKKyNpZiBkZWZpbmVkKEdMQ0RfREVWSUNFX0FWUjgpCisJCWNoYXIgYyA9IHBnbV9yZWFkX2J5dGUoc3RyKyspOworI2Vsc2UKKwkJY2hhciBjID0gKihzdHIrKyk7CisjZW5kaWYKKwkJaWYgKCFjKQorCQkJcmV0dXJuOwkKKwkJCQkKKwkJZ2xjZF90aW55X2RyYXdfY2hhcih4LCBsaW5lLCBjKTsKKwkJCisJCXggKz0gKGZvbnRfY3VycmVudC53aWR0aCArIDEpOworCQlpZiAoKHggKyBmb250X2N1cnJlbnQud2lkdGggKyAxKSA+IEdMQ0RfTENEX1dJRFRIKSB7CisJCQl4ID0gMDsgLyogUmFuIG91dCBvZiB0aGlzIGxpbmUgKi8KKwkJCWxpbmUrKzsKKwkJfQorCQlpZiAobGluZSA+PSAoR0xDRF9MQ0RfSEVJR0hULyhmb250X2N1cnJlbnQuaGVpZ2h0ICsgMSkpKQorCQkJcmV0dXJuOyAvKiBSYW4gb3V0IG9mIHNwYWNlIDooICovCisJfQkKK30KKwordm9pZCBnbGNkX3RpbnlfZHJhd19zdHJpbmdfYW1tZW5kKGNoYXIgKnN0cikgeworCWdsY2Rfc2Nyb2xsX2xpbmUoKTsKKwlnbGNkX3RpbnlfZHJhd19zdHJpbmcoMCwgKEdMQ0RfTENEX0hFSUdIVC84LTEpLCBzdHIpOworCWdsY2Rfd3JpdGUoKTsKK30KKwordm9pZCBnbGNkX3RpbnlfZHJhd19zdHJpbmdfYW1tZW5kX1AoY29uc3QgY2hhciAqc3RyKSB7CisJZ2xjZF9zY3JvbGxfbGluZSgpOworCWdsY2RfdGlueV9kcmF3X3N0cmluZ19QKDAsIChHTENEX0xDRF9IRUlHSFQvOC0xKSwgc3RyKTsKKwlnbGNkX3dyaXRlKCk7Cit9CisKK3ZvaWQgZ2xjZF90aW55X2ludmVydF9saW5lKHVpbnQ4X3QgbGluZSkKK3sKKwlnbGNkX2ludmVydF9hcmVhKDAsbGluZSo4LEdMQ0RfTENEX1dJRFRILTEsOCk7Cit9CisKK3ZvaWQgZ2xjZF90aW55X2RyYXdfY2hhcl94eSh1aW50OF90IHgsIHVpbnQ4X3QgeSwgY2hhciBjKQoreworCXVpbnQ4X3QgaTsKKwl1aW50OF90IHh2YXIsIHl2YXI7CisJdWludDhfdCBkYXQ7CisJCisJLyogT25seSB3b3JrcyBmb3IgZm9udHMgPCA4IGJpdHMgaW4gaGVpZ2h0ICovCisJCisJLyogQ2hlY2sgYWxsIGltcG9ydGFudCBib3VuZHMgcmVxdWlyZW1lbnRzIGFyZSBva2F5ICovCisJaWYgKCAoeSA+PSBHTENEX0xDRF9IRUlHSFQpIHx8ICgoeCtmb250X2N1cnJlbnQud2lkdGgpID49IEdMQ0RfTENEX1dJRFRIKSB8fCAoZm9udF9jdXJyZW50LmhlaWdodCA+PSA4KSB8fCBmb250X2N1cnJlbnQudGFibGVfdHlwZSAhPSBTVEFORykgeworCQlyZXR1cm47CisJfQkJCisJaWYgKGMgPCBmb250X2N1cnJlbnQuc3RhcnRfY2hhciB8fCBjID4gZm9udF9jdXJyZW50LmVuZF9jaGFyKSB7CisJCWMgPSAnLic7CisJfQorCQorCXh2YXIgPSB4OworCQorCWZvciAoIGkgPSAwOyBpIDwgZm9udF9jdXJyZW50LndpZHRoOyBpKysgKSB7CisjaWYgZGVmaW5lZChHTENEX0RFVklDRV9BVlI4KQkJCQorCQlkYXQgPSBwZ21fcmVhZF9ieXRlKCBmb250X2N1cnJlbnQuZm9udF90YWJsZSArICgoYyAtIGZvbnRfY3VycmVudC5zdGFydF9jaGFyKSAqIChmb250X2N1cnJlbnQud2lkdGgpKSArIGkgKTsKKyNlbHNlCisJCWRhdCA9ICooIGZvbnRfY3VycmVudC5mb250X3RhYmxlICsgKChjIC0gZm9udF9jdXJyZW50LnN0YXJ0X2NoYXIpICogKGZvbnRfY3VycmVudC53aWR0aCkpICsgaSApOworI2VuZGlmCisJCWZvciAoeXZhciA9IDA7IHl2YXIgPCBmb250X2N1cnJlbnQuaGVpZ2h0OyB5dmFyKyspIHsKKwkJCWdsY2Rfc2V0X3BpeGVsKHh2YXIseSt5dmFyLCAoZGF0ICYgKDE8PHl2YXIpID8gMSA6IDApICk7CisJCX0KKwkJeHZhcisrOworCX0KKwkKKwlnbGNkX3VwZGF0ZV9iYm94KHgsIHksIHgrZm9udF9jdXJyZW50LndpZHRoLHkrZm9udF9jdXJyZW50LmhlaWdodCk7CisJCit9CmRpZmYgLS1naXQgYS9sY2QvdW5pdF90ZXN0cy5jIGIvbGNkL3VuaXRfdGVzdHMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NWY4YmYxCi0tLSAvZGV2L251bGwKKysrIGIvbGNkL3VuaXRfdGVzdHMuYwpAQCAtMCwwICsxLDMzNCBAQAorLyoqCisgKiBcZmlsZSB1bml0X3Rlc3RzLmMKKyAqIFxicmllZiBWYXJpb3VzIHRlc3QgZnVuY3Rpb25zIHRvIGRlbW9uc3RyYXRlIGZlYXR1cmVzIG9mIHRoZSBsaWJyYXJ5CisgKiBcYXV0aG9yIEFuZHkgR29jaworICovCisKKy8qCisJQ29weXJpZ2h0IChjKSAyMDEyLCBBbmR5IEdvY2sKKworCUFsbCByaWdodHMgcmVzZXJ2ZWQuCisKKwlSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKwltb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKwkJKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorCQkgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKwkJKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorCQkgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKwkJICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorCQkqIE5laXRoZXIgdGhlIG5hbWUgb2YgQW5keSBHb2NrIG5vciB0aGUKKwkJICBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cworCQkgIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorCisJVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorCUFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisJV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorCURJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFORFkgR09DSyBCRSBMSUFCTEUgRk9SIEFOWQorCURJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisJKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworCUxPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorCU9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisJKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKwlTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgImdsY2QuaCIKKyNpbmNsdWRlICJ1bml0X3Rlc3RzLmgiCisKKy8qKiBGb250cyAqLworI2luY2x1ZGUgImZvbnQ1eDcuaCIKKyNpbmNsdWRlICJMaWJlcmF0aW9uX1NhbnMxMXgxNF9OdW1iZXJzLmgiCisjaW5jbHVkZSAiTGliZXJhdGlvbl9TYW5zMTV4MjFfTnVtYmVycy5oIgorI2luY2x1ZGUgIkxpYmVyYXRpb25fU2FuczE3eDE3X0FscGhhLmgiCisjaW5jbHVkZSAiTGliZXJhdGlvbl9TYW5zMjd4MzZfTnVtYmVycy5oIgorI2luY2x1ZGUgIkJlYmFzX05ldWUyMHgzNl9Cb2xkX051bWJlcnMuaCIKKwordm9sYXRpbGUgdWludDhfdCB1bml0X3Rlc3RfcmV0dXJuID0gMDsKKworLyoqCisgKiAgUmV0dXJuIGZyb20gdGVzdCBwcm9jZWR1cmUuIEdsb2JhbCB2YXIgXHAgdW5pdF90ZXN0X3JldHVybiBpcyBzZXQgdG8gMSBlbHNld2hlcmUsCisgKiAgdG8gc2lnbmFsIGZ1bmN0aW9uIHRvIHJldHVybi4KKyAqLworI2RlZmluZSBERU1PX1JFVFVSTigpIGlmICh1bml0X3Rlc3RfcmV0dXJuKSB7IHVuaXRfdGVzdF9yZXR1cm4gPSAwOyByZXR1cm47IH0KKworI2lmIGRlZmluZWQoR0xDRF9VTklUX1RFU1RfQklUTUFQX0VOQUJMRSkKKwkvKiBPcGVuIFNvdXJjZSBsb2dvIC0tIFNpemU6IDEyOHg2NCAqLworCSNpZiBkZWZpbmVkKEdMQ0RfREVWSUNFX0FWUjgpCisJCWNvbnN0IHVuc2lnbmVkIGNoYXIgYm1wX29zbG9nb1tdIFBST0dNRU0gPSB7CisJI2Vsc2UKKwkJY29uc3QgdW5zaWduZWQgY2hhciBibXBfb3Nsb2dvW10gPSB7CQorCSNlbmRpZiAvKiBHTENEX0RFVklDRV9BVlI4ICovCisJCTB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4ODAsIDB4YzAsIDB4YzAsIDB4YzAsIDB4ZTAsIDB4ZTAsIDB4ZTAsIDB4ZTAsIDB4ZTAsIDB4ZTAsIDB4ZTAsIDB4ZTAsIDB4ZTAsIDB4ZTAsIDB4ZTAsIDB4ZTAsIDB4ZTAsIDB4ZTAsIDB4YzAsIDB4YzAsIDB4YzAsIDB4ODAsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4YzAsIDB4ZTAsIDB4ZjAsIDB4ZjgsIDB4ZmMsIDB4ZmMsIDB4ZmUsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmUsIDB4ZmMsIDB4ZmMsIDB4ZjgsIDB4ZjAsIDB4ZTAsIDB4YzAsIDB4ODAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4ZjAsIDB4ZmMsIDB4ZmUsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIAorMHhmZiwgMHhmZSwgMHhmYywgMHhmMCwgMHhjMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmYywgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHgxZiwgMHgwNywgMHgwMywgMHgwMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMywgMHgwNywgMHgxZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmYywgMHhmMCwgMHhlMCwgMHhjMCwgMHg4MCwgMHg4MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MCwgMHhjMCwgMHhjMCwgMHhmMCwgMHhmYywgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZiwgMHgzZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwNywgMHgxZiwgMHg3ZiwgCisweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweDdmLCAweDBmLCAweDAzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDBmLCAweDNmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweDdmLCAweDFmLCAweDA3LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDAzLCAweDA3LCAweDBmLCAweDFmLCAweDNmLCAweDNmLCAweDdmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweDdmLCAweDBmLCAweDAzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDBmLCAweDNmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweGZmLCAweDdmLCAweDdmLCAweDNmLCAweDFmLCAweDBmLCAweDA3LCAweDAzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDAxLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAKKzB4MDAKKywgMHgwMCAgIC8vIAorCX07CisjZW5kaWYgLyogR0xDRF9VTklUX1RFU1RfQklUTUFQX0VOQUJMRSAqLworCit2b2lkIGdsY2RfdGVzdF9jaXJjbGVzKHZvaWQpCit7CisJdWludDhfdCB4LHkscmFkaXVzOworCQorICAgIHVuaXRfdGVzdF9yZXR1cm4gPSAwOworICAgIHdoaWxlICgxKSB7CisJCXVpbnQ4X3QgaTsKKwkJCisJCWdsY2RfY2xlYXIoKTsKKworCQkvLyBnZW5lcmF0ZSByYW5kb20oaXNoKSBwb3NpdGlvbiBvbiBkaXNwbGF5CisJCXggPSByYW5kKCkgJSBHTENEX0xDRF9XSURUSDsKKwkJeSA9IHJhbmQoKSAlIEdMQ0RfTENEX0hFSUdIVDsKKwkJcmFkaXVzID0gcmFuZCgpICUgNTA7CisKKwkJLy94ID0gNzA7IHk9MjU7IHJhZGl1cz01MDsgLy8gZm9yIGRlYnVnZ2luZworCisJCS8vIGZpbGwgY2lyY2xlIHdpdGggYmxhY2sKKwkJCisJCWZvciAoaT0wOyBpPD1yYWRpdXM7IGkrKykgeworCQkJZ2xjZF9maWxsX2NpcmNsZSh4LHksaSxCTEFDSyk7CisJCQlnbGNkX3dyaXRlKCk7CisJCQlkZWxheV9tcygyKTsKKwkJfQorCisJCS8vIGZpbGwgdGhlIHNhbWUgY2lyY2xlIGFib3ZlIGJ1dCB3aXRoIHdoaXRlCisJCWZvciAoaT0wOyBpPD1yYWRpdXM7IGkrKykgeworCQkJZ2xjZF9maWxsX2NpcmNsZSh4LHksaSxXSElURSk7CisJCQlnbGNkX3dyaXRlKCk7CisJCQlkZWxheV9tcygxKTsKKwkJfQorCQlERU1PX1JFVFVSTigpOworCX0KK30KKwordm9pZCBnbGNkX3Rlc3RfY291bnRlcl9hbmRfZ3JhcGgodm9pZCkKK3sKKwl1aW50OF90IGNvdW50ID0gMDsKKwljaGFyIHN0cmluZ1s4XSA9ICIiOworICAgICAgICAKKyAgICB1bml0X3Rlc3RfcmV0dXJuID0gMDsKKwl3aGlsZSgxKSB7CisJCWdsY2RfY2xlYXJfYnVmZmVyKCk7CisKKwkJLy9nbGNkX3Rpbnlfc2V0X2ZvbnQoRm9udDV4Nyw1LDcsMzIsMTI3KTsKKwkJLy9nbGNkX2RyYXdfc3RyaW5nX3h5KDAsNDAsKGNoYXIgKil1dG9hKGNvdW50LHN0cmluZywxMCkpOworCisJCWdsY2Rfc2V0X2ZvbnQoTGliZXJhdGlvbl9TYW5zMTV4MjFfTnVtYmVycywxNSwyMSw0Niw1Nyk7CisJCS8vZ2xjZF9zZXRfZm9udChMaWJlcmF0aW9uX1NhbnMyN3gzNl9OdW1iZXJzLDI3LDM2LDQ2LDU3KTsKKwkJLy9nbGNkX3NldF9mb250KEJlYmFzX05ldWUyMHgzNl9Cb2xkX051bWJlcnMsMjAsMzYsNDYsNTcpOworCQkvL2dsY2Rfc2V0X2ZvbnQoQmViYXNfTmV1ZTE4eDM2X051bWJlcnMsMTgsMzYsNDYsNTcpOworCQkvL2dsY2Rfc2V0X2ZvbnQoSGVsdmV0aWNhTmV1ZUxUX0NvbV81N19DbjIzeDM1X051bWJlcnMsMjMsMzUsNDYsNTcpOyAvLyBjb21tZXJjaWFsIGZvbnQgLSBub3QgZm9yIHB1YmxpYyBkaXN0cmlidXRpb24KKworCQlzcHJpbnRmKHN0cmluZywiJWQiLGNvdW50KTsKKwkJZ2xjZF9kcmF3X3N0cmluZ194eSgwLDAsc3RyaW5nKTsKKwkJZ2xjZF9iYXJfZ3JhcGhfaG9yaXpvbnRhbCgxMCwzOCwzMCw2LGNvdW50KjQpOworCQlnbGNkX2Jhcl9ncmFwaF92ZXJ0aWNhbCg3MCwwLDgsMzAsY291bnQqMik7CisKKwkJZ2xjZF93cml0ZSgpOworCQljb3VudCArPSAxOworCisJCURFTU9fUkVUVVJOKCk7CisJfQorCit9CisKKy8qIFRlc3QgZ2xjZC11dGlscyBmb250IHRhYmxlIHR5cGUsIGluY3JlbWVudHMgYW5kIGRpc3BsYXkgYSAxNi1iaXQgbnVtYmVyIG92ZXIgYW5kIG92ZXIgKi8KKyNpbmNsdWRlICJFYXJ0aGJvdW5kXzEyeDE5XzQ4dG81Ny5oIgordm9pZCBnbGNkX3Rlc3RfZ2xjZHV0aWxzKHZvaWQpCit7CisJdWludDE2X3QgY291bnQgPSAwOworCWNoYXIgc3RyaW5nWzhdID0gIiI7CisgICAgCisgICAgdW5pdF90ZXN0X3JldHVybiA9IDA7CisJd2hpbGUoMSkgeworCQlnbGNkX2NsZWFyX2J1ZmZlcigpOworCisJCS8qIFNldCB0aGUgZm9udCAqLworCQlnbGNkX2ZvbnQoZm9udF9FYXJ0aGJvdW5kXzEyeDE5XzQ4dG81NywxMiwxOSw0OCw1NyxHTENEX1VUSUxTKTsKKworCQlzcHJpbnRmKHN0cmluZywiJWQiLGNvdW50KTsKKwkJZ2xjZF9kcmF3X3N0cmluZ194eSgwLDAsc3RyaW5nKTsKKwkJZ2xjZF93cml0ZSgpOworCQkKKwkJY291bnQgKz0gMTsKKworCQlERU1PX1JFVFVSTigpOworCX0KK30KKwordm9pZCBnbGNkX3Rlc3RfdGV4dF91cF9kb3duKHZvaWQpCit7CisJLy8gbW92ZXMgc29tZSB0ZXh0IHVwIGFuZCBkb3duIHRoZSBkaXNwbGF5CisKKwl1aW50OF90IHk7CisJdWludDhfdCBtYXhfeTsKKwkKKwkvL2dsY2Rfc2V0X2ZvbnQoTGliZXJhdGlvbl9TYW5zMTF4MTRfTnVtYmVycywxMSwxNCw0Niw1Nyk7CisJZ2xjZF9zZXRfZm9udChMaWJlcmF0aW9uX1NhbnMxNXgyMV9OdW1iZXJzLDE1LDIxLDQ2LDU3KTsKKwkvL2dsY2Rfc2V0X2ZvbnQoTGliZXJhdGlvbl9TYW5zMjd4MzZfTnVtYmVycywyNywzNiw0Niw1Nyk7CisJLy9nbGNkX3NldF9mb250KExpYmVyYXRpb25fU2FuczE3eDE3X0FscGhhLDE3LDE3LDQ2LDkwKTsKKworCW1heF95ID0gR0xDRF9MQ0RfSEVJR0hUIC0gZm9udF9jdXJyZW50LmhlaWdodCAtIDI7IC8vIG1heCB5IHN0YXJ0IHBvc2l0aW9uIGZvciBkcmF3X3N0cmluZworICAgIAorICAgIHVuaXRfdGVzdF9yZXR1cm4gPSAwOworCXdoaWxlKDEpIHsKKwkJLy8gbW92ZSB0b3AgdG8gYm90dG9tCisJCWZvciAoeT0wOyB5PG1heF95OyB5KyspIHsKKwkJCURFTU9fUkVUVVJOKCk7CisJCQlnbGNkX2NsZWFyX2J1ZmZlcigpOworCQkJZ2xjZF9kcmF3X3N0cmluZ194eSgwLHksIjEyMyIpOworCQkJZ2xjZF93cml0ZSgpOworCQkJZGVsYXlfbXMoODApOworCQl9CisKKwkJLy8gbW92ZSBib3R0b20gdG8gdG9wCisJCWZvciAoeT0obWF4X3kpOyB5PjA7IHktLSkgeworCQkJREVNT19SRVRVUk4oKTsKKwkJCWdsY2RfY2xlYXJfYnVmZmVyKCk7CisJCQlnbGNkX2RyYXdfc3RyaW5nX3h5KDAseSwiNDU2Iik7CisJCQlnbGNkX3dyaXRlKCk7CisJCQlkZWxheV9tcyg4MCk7CisJCX0KKwkJCisJfQorCit9CisKK3ZvaWQgZ2xjZF90ZXN0X3RpbnlfdGV4dCh2b2lkKQoreworCS8qIFdyaXRlIHRpbnkgdGV4dCBvbiBkaXNwbGF5LCBhbGwgY2hhcnMsIHNjcm9sbGluZyB1cCBldmVyeSBzZWNvbmQgKi8KKwkKKwljaGFyIHN0cmluZ1tHTENEX0xDRF9XSURUSCAvIDYgKyAxXTsKKworCXVpbnQ4X3QgYyA9IDMyOworCXVpbnQ4X3QgbGVuID0gR0xDRF9MQ0RfV0lEVEggLyA2OworCQorCUdMQ0RfVEVYVF9JTklUKCk7CisJCisgICAgdW5pdF90ZXN0X3JldHVybiA9IDA7CisJd2hpbGUoMSkgeworCQkvLyB3cml0ZSBjaGFycyB0byBzdHJpbmcgZnJvbSAzMiB0byAxMjcgQVNDSUkKKwkJdWludDhfdCBpOworCQlmb3IgKGk9MDsgaTxsZW47IGkrKykgeworCQkJc3RyaW5nW2ldID0gYzsKKwkJCWMrKzsKKwkJCWlmIChjID4gMTI3KSB7CisJCQkJYyA9IDMyOworCQkJfQorCQl9CisKKwkJLy8gd3JpdGUgbnVsbCB0ZXJtaW5hdG9yCisJCXN0cmluZ1tsZW5dID0gJ1wwJzsKKworCQlHTENEX1dSSVRFKHN0cmluZyk7CisJCQorCQlERU1PX1JFVFVSTigpOworCQkKKwkJZGVsYXlfbXMoMTAwMCk7CisJfQorCit9CisKK3ZvaWQgZ2xjZF90ZXN0X2hlbGxvX3dvcmxkKHZvaWQpCit7CisJZ2xjZF90aW55X3NldF9mb250KEZvbnQ1eDcsNSw3LDMyLDEyNyk7CisJZ2xjZF9jbGVhcl9idWZmZXIoKTsKKwlnbGNkX3RpbnlfZHJhd19zdHJpbmcoMCwwLCJIZWxsbyBXb3JsZCEiKTsKKwlnbGNkX3dyaXRlKCk7CisgICAgCisgICAgdW5pdF90ZXN0X3JldHVybiA9IDA7CisJd2hpbGUoMSkgeworCQlERU1PX1JFVFVSTigpOworCX0KK30KKwordm9pZCBnbGNkX3Rlc3RfcmVjdGFuZ2xlcyh2b2lkKQoreworCWdsY2RfdGlueV9zZXRfZm9udChGb250NXg3LDUsNywzMiwxMjcpOworCWdsY2RfY2xlYXJfYnVmZmVyKCk7CisJZ2xjZF90aW55X2RyYXdfc3RyaW5nKDAsMCwiUkVDVEFOR0xFIERFTU8iKTsKKwlnbGNkX3dyaXRlKCk7CisJZGVsYXlfbXMoMjAwKTsKKwkKKyAgICB1bml0X3Rlc3RfcmV0dXJuID0gMDsKKwl3aGlsZSgxKSB7CisJCQorCQkvL2dsY2RfY2xlYXIoKTsKKwkJZ2xjZF9kcmF3X3JlY3QoMCwwLDEwMCw1MCxCTEFDSyk7CisJCWdsY2RfdGlueV9kcmF3X3N0cmluZygwLEdMQ0RfTlVNQkVSX09GX0JBTktTLTEsImdsY2RfZHJhd19yZWN0Iik7CisJCWdsY2Rfd3JpdGUoKTsKKwkJZGVsYXlfbXMoNTAwKTsKKwkJREVNT19SRVRVUk4oKTsKKwkJCisJCWdsY2RfY2xlYXIoKTsKKwkJZ2xjZF90aW55X2RyYXdfc3RyaW5nKDAsR0xDRF9OVU1CRVJfT0ZfQkFOS1MtMSwiZ2xjZF9kcmF3X3JlY3RfdGhpY2siKTsKKwkJZ2xjZF93cml0ZSgpOworCisJCWdsY2RfZHJhd19yZWN0X3RoaWNrKDUsNSw4MCwzMCwzLDYsQkxBQ0spOworCQlnbGNkX3dyaXRlKCk7CisJCWRlbGF5X21zKDUwMCk7CisJCURFTU9fUkVUVVJOKCk7CisJCQorCQlnbGNkX2RyYXdfcmVjdF90aGljaygwLDAsMjAsMjAsMiwyLEJMQUNLKTsKKwkJZ2xjZF93cml0ZSgpOworCQlkZWxheV9tcyg1MDApOworCQlERU1PX1JFVFVSTigpOworCQkKKwkJZ2xjZF9kcmF3X3JlY3RfdGhpY2soMTAwLDEwLDIwLDIwLDUsNSxCTEFDSyk7CisJCWdsY2Rfd3JpdGUoKTsKKwkJZGVsYXlfbXMoNTAwKTsKKwkJREVNT19SRVRVUk4oKTsKKworCQlnbGNkX2NsZWFyKCk7CisJCWdsY2RfdGlueV9kcmF3X3N0cmluZygwLEdMQ0RfTlVNQkVSX09GX0JBTktTLTEsImdsY2RfZHJhd19yZWN0X3NoYWRvdyIpOworCQlnbGNkX2RyYXdfcmVjdF9zaGFkb3coMCwwLDQ1LDMwLEJMQUNLKTsKKwkJZ2xjZF93cml0ZSgpOworCQlkZWxheV9tcyg1MDApOworCQlERU1PX1JFVFVSTigpOworCQkKKwkJZ2xjZF9kcmF3X3JlY3Rfc2hhZG93KDk1LDUsMzAsMzAsQkxBQ0spOworCQlnbGNkX3dyaXRlKCk7CisJCWRlbGF5X21zKDUwMCk7CisJCURFTU9fUkVUVVJOKCk7CisJCQorCX0KKwkKK30KKwordm9pZCBnbGNkX3Rlc3Rfc2Nyb2xsaW5nX2dyYXBoKHZvaWQpCit7CisJZ2xjZF9jbGVhcigpOworCWdsY2Rfd3JpdGUoKTsKKyAgICAKKyAgICB1bml0X3Rlc3RfcmV0dXJuID0gMDsKKwl3aGlsZSgxKSB7CisJCXVpbnQxNl90IG47CisJCWZvciAobj0wOyBuPD0yNTU7IG4gKz0gMjApIHsKKwkJCWdsY2Rfc2Nyb2xsaW5nX2Jhcl9ncmFwaCgwLDAsNTAsNTAsbik7CisJCQlnbGNkX3Njcm9sbGluZ19iYXJfZ3JhcGgoNjAsMCw1MCwzMCxuKTsKKwkJCWdsY2Rfc2Nyb2xsaW5nX2Jhcl9ncmFwaCg2MCwzNSw2MCwyMCxuKTsKKwkJCURFTU9fUkVUVVJOKCk7CisJCX0KKwkJZm9yIChuPTA7IG48PTI1NTsgbiArPSAyMCkgeworCQkJZ2xjZF9zY3JvbGxpbmdfYmFyX2dyYXBoKDAsMCw1MCw1MCwyNTUtbik7CisJCQlnbGNkX3Njcm9sbGluZ19iYXJfZ3JhcGgoNjAsMCw1MCwzMCxuKTsKKwkJCWdsY2Rfc2Nyb2xsaW5nX2Jhcl9ncmFwaCg2MCwzNSw2MCwyMCxuKTsKKwkJCURFTU9fUkVUVVJOKCk7CisJCX0KKwl9CQorfQorCisjaWYgZGVmaW5lZCAoR0xDRF9VTklUX1RFU1RfQklUTUFQX0VOQUJMRSkKK3ZvaWQgZ2xjZF90ZXN0X2JpdG1hcF8xMjh4NjQodm9pZCkKK3sKKwlnbGNkX2RyYXdfYml0bWFwKGJtcF9vc2xvZ28pOworICAgIAorICAgIHVuaXRfdGVzdF9yZXR1cm4gPSAwOworCWdsY2Rfd3JpdGUoKTsJCisJd2hpbGUgKDEpIHsKKwkJREVNT19SRVRVUk4oKTsKKwl9Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL2xjZC91bml0X3Rlc3RzLmggYi9sY2QvdW5pdF90ZXN0cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzNTQwYmEKLS0tIC9kZXYvbnVsbAorKysgYi9sY2QvdW5pdF90ZXN0cy5oCkBAIC0wLDAgKzEsNzEgQEAKKy8qKgorICogXGZpbGUgdW5pdF90ZXN0cy5oCisgKiBcYnJpZWYgVmFyaW91cyB0ZXN0IGZ1bmN0aW9ucyB0byBkZW1vbnN0cmF0ZSBmZWF0dXJlcyBvZiB0aGUgbGlicmFyeQorICogXGF1dGhvciBBbmR5IEdvY2sKKyAqLworCisvKgorCUNvcHlyaWdodCAoYykgMjAxMiwgQW5keSBHb2NrCisKKwlBbGwgcmlnaHRzIHJlc2VydmVkLgorCisJUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisJbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisJCSogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKwkJICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisJCSogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKwkJICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisJCSAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKwkJKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEFuZHkgR29jayBub3IgdGhlCisJCSAgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMKKwkJICBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKworCVRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKwlBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorCVdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKwlESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBTkRZIEdPQ0sgQkUgTElBQkxFIEZPUiBBTlkKKwlESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworCShJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKwlMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKwlPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorCShJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisJU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjaWZuZGVmIF9VTklUX1RFU1RTX0gKKyNkZWZpbmUgX1VOSVRfVEVTVFNfSAorCisjaW5jbHVkZSAic3RkaW50LmgiCisKKyNkZWZpbmUgR0xDRF9VTklUX1RFU1RfQklUTUFQX0VOQUJMRQorCitleHRlcm4gdm9sYXRpbGUgdWludDhfdCB1bml0X3Rlc3RfcmV0dXJuOworCisvKiogTWFrZSByYW5kb20gImV4cGxvZGluZyBjaXJjbGVzIiAqLwordm9pZCBnbGNkX3Rlc3RfY2lyY2xlcyh2b2lkKTsKKworLyogU2hvd3MgYSA4LWJpdCBjb3VudGVyIGluY29yZW1lbnRpbmcsIHdpdGggYSB2ZXJ0aWNsYSBhbmQgaG9yaXpvbnRhbCBiYXIgZ3JhcGggKi8KK3ZvaWQgZ2xjZF90ZXN0X2NvdW50ZXJfYW5kX2dyYXBoKHZvaWQpOworCisvKiBTaG93cyBhIDE2LWJpdCBjb3VudGVyIGluY3JlbWVudGluZywgdXNpbmcgZ2xjZHV0aWxzIGZvbnQgZm9ybWF0ICovCit2b2lkIGdsY2RfdGVzdF9nbGNkdXRpbHModm9pZCk7CisKKy8qKiBTY3JvbGwgc29tZSB0ZXh0IHVwIGFuZCBkb3duIHRoZSBzY3JlZW4gKi8KK3ZvaWQgZ2xjZF90ZXN0X3RleHRfdXBfZG93bih2b2lkKTsKKworLyoqIERpc3BsYXkgYWxsIGNoYXJzIG9mIHRpbnkgNXg3IGZvbnQsIHNjcm9sbGluZyBwcmV2aW91cyBsaW5lcyBvbmUgYnkgb25lIGV2ZXJ5IHNlY29uZCAqLwordm9pZCBnbGNkX3Rlc3RfdGlueV90ZXh0KHZvaWQpOworCisvKiogUHJpbnQgaGVsbG8gd29ybGQgdG8gZGlzcGxheSAqLwordm9pZCBnbGNkX3Rlc3RfaGVsbG9fd29ybGQodm9pZCk7CisKKy8qKiBEZW1vbnN0cmF0aW5nIHJlY3RhbmdsZSBkcmF3aW5nICovCit2b2lkIGdsY2RfdGVzdF9yZWN0YW5nbGVzKHZvaWQpOworCisvKiogRGVtb25zdHJhdGUgc2Nyb2xsaW5nIGJhciBncmFwaCAqLwordm9pZCBnbGNkX3Rlc3Rfc2Nyb2xsaW5nX2dyYXBoKHZvaWQpOworCisvKiogRGVtb25zdHJhdGUgYml0bWFwIGRpc3BsYXkgKi8KK3ZvaWQgZ2xjZF90ZXN0X2JpdG1hcF8xMjh4NjQodm9pZCk7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvbGlicXIvcXJlbmNvZGUuYyBiL2xpYnFyL3FyZW5jb2RlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjA4MzcyNAotLS0gL2Rldi9udWxsCisrKyBiL2xpYnFyL3FyZW5jb2RlLmMKQEAgLTAsMCArMSwxNDc0IEBACisjaW5jbHVkZSA8c3RyaW5nLmg+CisKKyNpbmNsdWRlICJxcmVuY29kZS5oIgorCit0eXBlZGVmIGVudW0KK3sKKyAgRkFMU0UgPSAwLAorICBUUlVFID0gIUZBTFNFCit9IGJvb2w7CisKK3R5cGVkZWYgdW5zaWduZWQgY2hhciAgQllURTsKK3R5cGVkZWYgdW5zaWduZWQgaW50ICBXT1JEOworCisjZGVmaW5lIFFSX0xFVkVMX0wJMAorI2RlZmluZSBRUl9MRVZFTF9NCTEKKyNkZWZpbmUgUVJfTEVWRUxfUQkyCisjZGVmaW5lIFFSX0xFVkVMX0gJMworCisjZGVmaW5lIFFSX01PREVfTlVNRVJBTAkJMAorI2RlZmluZSBRUl9NT0RFX0FMUEhBQkVUCTEKKyNkZWZpbmUgUVJfTU9ERV84QklUCQkyCisKKyNkZWZpbmUgUVJfVlJFU0lPTl9TCTAKKyNkZWZpbmUgUVJfVlJFU0lPTl9NCTEKKyNkZWZpbmUgUVJfVlJFU0lPTl9MCTIKKworI2RlZmluZSBNQVhfQUxMQ09ERVdPUkQJIDE3MiAvLzczM8rHsOaxvjE20OjSqrXE1+6087/VvOQKKyNkZWZpbmUgTUFYX0RBVEFDT0RFV09SRCAxMzYgLy81ODnKx7Dmsb4xNtDo0qq1xNfutPO/1bzkCisjZGVmaW5lIE1BWF9DT0RFQkxPQ0sJICAxNTMKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworc3RydWN0IFJTX0JMT0NLSU5GTworeworICBpbnQgbmNSU0Jsb2NrOworICBpbnQgbmNBbGxDb2RlV29yZDsKKyAgaW50IG5jRGF0YUNvZGVXb3JkOworfTsKKworc3RydWN0IFFSX1ZFUlNJT05JTkZPCit7CisgIGludCBuVmVyc2lvbk5vOworICBpbnQgbmNBbGxDb2RlV29yZDsKKworICBpbnQgbmNEYXRhQ29kZVdvcmRbNF07CisgIGludCBuY0FsaWduUG9pbnQ7CisgIGludCBuQWxpZ25Qb2ludFs2XTsKKworICBzdHJ1Y3QgUlNfQkxPQ0tJTkZPIFJTX0Jsb2NrSW5mbzFbNF07CisgIHN0cnVjdCBSU19CTE9DS0lORk8gUlNfQmxvY2tJbmZvMls0XTsKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgUVJfVkVSU0lPTklORk8gUVJfVmVyc29uSW5mb1tdID0ge3swfSwgLy8gVmVyLjAKKyAgeworICAgIDEsIC8vIFZlci4xCisgICAgMjYsICAgMTksICAgMTYsICAgMTMsICAgIDksCisgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwKKyAgICAxLCAgMjYsICAxOSwKKyAgICAxLCAgMjYsICAxNiwKKyAgICAxLCAgMjYsICAxMywKKyAgICAxLCAgMjYsICAgOSwKKyAgICAwLCAgIDAsICAgMCwKKyAgICAwLCAgIDAsICAgMCwKKyAgICAwLCAgIDAsICAgMCwKKyAgICAwLCAgIDAsICAgMAorICB9LAorICB7CisgICAgMiwgLy8gVmVyLjIKKyAgICA0NCwgICAzNCwgICAyOCwgICAyMiwgICAxNiwKKyAgICAxLCAgMTgsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLAorICAgIDEsICA0NCwgIDM0LAorICAgIDEsICA0NCwgIDI4LAorICAgIDEsICA0NCwgIDIyLAorICAgIDEsICA0NCwgIDE2LAorICAgIDAsICAgMCwgICAwLAorICAgIDAsICAgMCwgICAwLAorICAgIDAsICAgMCwgICAwLAorICAgIDAsICAgMCwgICAwCisgIH0sCisgIHsKKyAgICAzLCAvLyBWZXIuMworICAgIDcwLCAgIDU1LCAgIDQ0LCAgIDM0LCAgIDI2LAorICAgIDEsICAyMiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsCisgICAgMSwgIDcwLCAgNTUsCisgICAgMSwgIDcwLCAgNDQsCisgICAgMiwgIDM1LCAgMTcsCisgICAgMiwgIDM1LCAgMTMsCisgICAgMCwgICAwLCAgIDAsCisgICAgMCwgICAwLCAgIDAsCisgICAgMCwgICAwLCAgIDAsCisgICAgMCwgICAwLCAgIDAKKyAgfSwKKyAgeworICAgIDQsIC8vIFZlci40CisgICAgMTAwLCAgIDgwLCAgIDY0LCAgIDQ4LCAgIDM2LAorICAgIDEsICAyNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsCisgICAgMSwgMTAwLCAgODAsCisgICAgMiwgIDUwLCAgMzIsCisgICAgMiwgIDUwLCAgMjQsCisgICAgNCwgIDI1LCAgIDksCisgICAgMCwgICAwLCAgIDAsCisgICAgMCwgICAwLCAgIDAsCisgICAgMCwgICAwLCAgIDAsCisgICAgMCwgICAwLCAgIDAKKyAgfSwKKyAgeworICAgIDUsIC8vIFZlci41CisgICAgMTM0LCAgMTA4LCAgIDg2LCAgIDYyLCAgIDQ2LAorICAgIDEsICAzMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsCisgICAgMSwgMTM0LCAxMDgsCisgICAgMiwgIDY3LCAgNDMsCisgICAgMiwgIDMzLCAgMTUsCisgICAgMiwgIDMzLCAgMTEsCisgICAgMCwgICAwLCAgIDAsCisgICAgMCwgICAwLCAgIDAsCisgICAgMiwgIDM0LCAgMTYsCisgICAgMiwgIDM0LCAgMTIKKyAgfSwKKyAgeworICAgIDYsIC8vIFZlci42CisgICAgMTcyLCAgMTM2LCAgMTA4LCAgIDc2LCAgIDYwLAorICAgIDEsICAzNCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsCisgICAgMiwgIDg2LCAgNjgsCisgICAgNCwgIDQzLCAgMjcsCisgICAgNCwgIDQzLCAgMTksCisgICAgNCwgIDQzLCAgMTUsCisgICAgMCwgICAwLCAgIDAsCisgICAgMCwgICAwLCAgIDAsCisgICAgMCwgICAwLCAgIDAsCisgICAgMCwgICAwLCAgIDAKKyAgfSwKK307CisKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KK3N0YXRpYyBjb25zdCBCWVRFIGJ5RXhwVG9JbnRbXSA9IHsgIDEsICAgMiwgICA0LCAgIDgsICAxNiwgIDMyLCAgNjQsIDEyOCwgIDI5LCAgNTgsIDExNiwgMjMyLCAyMDUsIDEzNSwgIDE5LCAgMzgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3NiwgMTUyLCAgNDUsICA5MCwgMTgwLCAxMTcsIDIzNCwgMjAxLCAxNDMsICAgMywgICA2LCAgMTIsICAyNCwgIDQ4LCAgOTYsIDE5MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE1NywgIDM5LCAgNzgsIDE1NiwgIDM3LCAgNzQsIDE0OCwgIDUzLCAxMDYsIDIxMiwgMTgxLCAxMTksIDIzOCwgMTkzLCAxNTksICAzNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcwLCAxNDAsICAgNSwgIDEwLCAgMjAsICA0MCwgIDgwLCAxNjAsICA5MywgMTg2LCAxMDUsIDIxMCwgMTg1LCAxMTEsIDIyMiwgMTYxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOTUsIDE5MCwgIDk3LCAxOTQsIDE1MywgIDQ3LCAgOTQsIDE4OCwgMTAxLCAyMDIsIDEzNywgIDE1LCAgMzAsICA2MCwgMTIwLCAyNDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNTMsIDIzMSwgMjExLCAxODcsIDEwNywgMjE0LCAxNzcsIDEyNywgMjU0LCAyMjUsIDIyMywgMTYzLCAgOTEsIDE4MiwgMTEzLCAyMjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMTcsIDE3NSwgIDY3LCAxMzQsICAxNywgIDM0LCAgNjgsIDEzNiwgIDEzLCAgMjYsICA1MiwgMTA0LCAyMDgsIDE4OSwgMTAzLCAyMDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMjksICAzMSwgIDYyLCAxMjQsIDI0OCwgMjM3LCAxOTksIDE0NywgIDU5LCAxMTgsIDIzNiwgMTk3LCAxNTEsICA1MSwgMTAyLCAyMDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMzMsICAyMywgIDQ2LCAgOTIsIDE4NCwgMTA5LCAyMTgsIDE2OSwgIDc5LCAxNTgsICAzMywgIDY2LCAxMzIsICAyMSwgIDQyLCAgODQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNjgsICA3NywgMTU0LCAgNDEsICA4MiwgMTY0LCAgODUsIDE3MCwgIDczLCAxNDYsICA1NywgMTE0LCAyMjgsIDIxMywgMTgzLCAxMTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMzAsIDIwOSwgMTkxLCAgOTksIDE5OCwgMTQ1LCAgNjMsIDEyNiwgMjUyLCAyMjksIDIxNSwgMTc5LCAxMjMsIDI0NiwgMjQxLCAyNTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMjcsIDIxOSwgMTcxLCAgNzUsIDE1MCwgIDQ5LCAgOTgsIDE5NiwgMTQ5LCAgNTUsIDExMCwgMjIwLCAxNjUsICA4NywgMTc0LCAgNjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMzAsICAyNSwgIDUwLCAxMDAsIDIwMCwgMTQxLCAgIDcsICAxNCwgIDI4LCAgNTYsIDExMiwgMjI0LCAyMjEsIDE2NywgIDgzLCAxNjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4MSwgMTYyLCAgODksIDE3OCwgMTIxLCAyNDIsIDI0OSwgMjM5LCAxOTUsIDE1NSwgIDQzLCAgODYsIDE3MiwgIDY5LCAxMzgsICAgOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE4LCAgMzYsICA3MiwgMTQ0LCAgNjEsIDEyMiwgMjQ0LCAyNDUsIDI0NywgMjQzLCAyNTEsIDIzNSwgMjAzLCAxMzksICAxMSwgIDIyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDQsICA4OCwgMTc2LCAxMjUsIDI1MCwgMjMzLCAyMDcsIDEzMSwgIDI3LCAgNTQsIDEwOCwgMjE2LCAxNzMsICA3MSwgMTQyLCAgIDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CisKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KK3N0YXRpYyBjb25zdCBCWVRFIGJ5SW50VG9FeHBbXSA9IHsgIDAsICAgMCwgICAxLCAgMjUsICAgMiwgIDUwLCAgMjYsIDE5OCwgICAzLCAyMjMsICA1MSwgMjM4LCAgMjcsIDEwNCwgMTk5LCAgNzUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LCAxMDAsIDIyNCwgIDE0LCAgNTIsIDE0MSwgMjM5LCAxMjksICAyOCwgMTkzLCAxMDUsIDI0OCwgMjAwLCAgIDgsICA3NiwgMTEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNSwgMTM4LCAxMDEsICA0NywgMjI1LCAgMzYsICAxNSwgIDMzLCAgNTMsIDE0NywgMTQyLCAyMTgsIDI0MCwgIDE4LCAxMzAsICA2OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI5LCAxODEsIDE5NCwgMTI1LCAxMDYsICAzOSwgMjQ5LCAxODUsIDIwMSwgMTU0LCAgIDksIDEyMCwgIDc3LCAyMjgsIDExNCwgMTY2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNiwgMTkxLCAxMzksICA5OCwgMTAyLCAyMjEsICA0OCwgMjUzLCAyMjYsIDE1MiwgIDM3LCAxNzksICAxNiwgMTQ1LCAgMzQsIDEzNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDU0LCAyMDgsIDE0OCwgMjA2LCAxNDMsIDE1MCwgMjE5LCAxODksIDI0MSwgMjEwLCAgMTksICA5MiwgMTMxLCAgNTYsICA3MCwgIDY0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzAsICA2NiwgMTgyLCAxNjMsIDE5NSwgIDcyLCAxMjYsIDExMCwgMTA3LCAgNTgsICA0MCwgIDg0LCAyNTAsIDEzMywgMTg2LCAgNjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDIsICA5NCwgMTU1LCAxNTksICAxMCwgIDIxLCAxMjEsICA0MywgIDc4LCAyMTIsIDIyOSwgMTcyLCAxMTUsIDI0MywgMTY3LCAgODcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3LCAxMTIsIDE5MiwgMjQ3LCAxNDAsIDEyOCwgIDk5LCAgMTMsIDEwMywgIDc0LCAyMjIsIDIzNywgIDQ5LCAxOTcsIDI1NCwgIDI0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjI3LCAxNjUsIDE1MywgMTE5LCAgMzgsIDE4NCwgMTgwLCAxMjQsICAxNywgIDY4LCAxNDYsIDIxNywgIDM1LCAgMzIsIDEzNywgIDQ2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTUsICA2MywgMjA5LCAgOTEsIDE0OSwgMTg4LCAyMDcsIDIwNSwgMTQ0LCAxMzUsIDE1MSwgMTc4LCAyMjAsIDI1MiwgMTkwLCAgOTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNDIsICA4NiwgMjExLCAxNzEsICAyMCwgIDQyLCAgOTMsIDE1OCwgMTMyLCAgNjAsICA1NywgIDgzLCAgNzEsIDEwOSwgIDY1LCAxNjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMSwgIDQ1LCAgNjcsIDIxNiwgMTgzLCAxMjMsIDE2NCwgMTE4LCAxOTYsICAyMywgIDczLCAyMzYsIDEyNywgIDEyLCAxMTEsIDI0NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwOCwgMTYxLCAgNTksICA4MiwgIDQxLCAxNTcsICA4NSwgMTcwLCAyNTEsICA5NiwgMTM0LCAxNzcsIDE4NywgMjA0LCAgNjIsICA5MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMywgIDg5LCAgOTUsIDE3NiwgMTU2LCAxNjksIDE2MCwgIDgxLCAgMTEsIDI0NSwgIDIyLCAyMzUsIDEyMiwgMTE3LCAgNDQsIDIxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDc5LCAxNzQsIDIxMywgMjMzLCAyMzAsIDIzMSwgMTczLCAyMzIsIDExNiwgMjE0LCAyNDQsIDIzNCwgMTY4LCAgODAsICA4OCwgMTc1CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OworCisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCitzdGF0aWMgY29uc3QgQllURSBieVJTRXhwN1tdICA9IHs4NywgMjI5LCAxNDYsIDE0OSwgMjM4LCAxMDIsICAyMX07CitzdGF0aWMgY29uc3QgQllURSBieVJTRXhwMTBbXSA9IHsyNTEsICA2NywgIDQ2LCAgNjEsIDExOCwgIDcwLCAgNjQsICA5NCwgIDMyLCAgNDV9Oworc3RhdGljIGNvbnN0IEJZVEUgYnlSU0V4cDEzW10gPSB7IDc0LCAxNTIsIDE3NiwgMTAwLCAgODYsIDEwMCwgMTA2LCAxMDQsIDEzMCwgMjE4LCAyMDYsIDE0MCwgIDc4fTsKK3N0YXRpYyBjb25zdCBCWVRFIGJ5UlNFeHAxNVtdID0geyAgOCwgMTgzLCAgNjEsICA5MSwgMjAyLCAgMzcsICA1MSwgIDU4LCAgNTgsIDIzNywgMTQwLCAxMjQsICAgNSwgIDk5LCAxMDV9Oworc3RhdGljIGNvbnN0IEJZVEUgYnlSU0V4cDE2W10gPSB7MTIwLCAxMDQsIDEwNywgMTA5LCAxMDIsIDE2MSwgIDc2LCAgIDMsICA5MSwgMTkxLCAxNDcsIDE2OSwgMTgyLCAxOTQsIDIyNSwgMTIwfTsKK3N0YXRpYyBjb25zdCBCWVRFIGJ5UlNFeHAxN1tdID0geyA0MywgMTM5LCAyMDYsICA3OCwgIDQzLCAyMzksIDEyMywgMjA2LCAyMTQsIDE0NywgIDI0LCAgOTksIDE1MCwgIDM5LCAyNDMsIDE2MywgMTM2fTsKK3N0YXRpYyBjb25zdCBCWVRFIGJ5UlNFeHAxOFtdID0gezIxNSwgMjM0LCAxNTgsICA5NCwgMTg0LCAgOTcsIDExOCwgMTcwLCAgNzksIDE4NywgMTUyLCAxNDgsIDI1MiwgMTc5LCAgIDUsICA5OCwgIDk2LCAxNTN9Oworc3RhdGljIGNvbnN0IEJZVEUgYnlSU0V4cDIwW10gPSB7IDE3LCAgNjAsICA3OSwgIDUwLCAgNjEsIDE2MywgIDI2LCAxODcsIDIwMiwgMTgwLCAyMjEsIDIyNSwgIDgzLCAyMzksIDE1NiwgMTY0LCAyMTIsIDIxMiwgMTg4LCAxOTB9Oworc3RhdGljIGNvbnN0IEJZVEUgYnlSU0V4cDIyW10gPSB7MjEwLCAxNzEsIDI0NywgMjQyLCAgOTMsIDIzMCwgIDE0LCAxMDksIDIyMSwgIDUzLCAyMDAsICA3NCwgICA4LCAxNzIsICA5OCwgIDgwLCAyMTksIDEzNCwgMTYwLCAxMDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNjUsIDIzMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Oworc3RhdGljIGNvbnN0IEJZVEUgYnlSU0V4cDI0W10gPSB7MjI5LCAxMjEsIDEzNSwgIDQ4LCAyMTEsIDExNywgMjUxLCAxMjYsIDE1OSwgMTgwLCAxNjksIDE1MiwgMTkyLCAyMjYsIDIyOCwgMjE4LCAxMTEsICAgMCwgMTE3LCAyMzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4NywgIDk2LCAyMjcsICAyMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Oworc3RhdGljIGNvbnN0IEJZVEUgYnlSU0V4cDI2W10gPSB7MTczLCAxMjUsIDE1OCwgICAyLCAxMDMsIDE4MiwgMTE4LCAgMTcsIDE0NSwgMjAxLCAxMTEsICAyOCwgMTY1LCAgNTMsIDE2MSwgIDIxLCAyNDUsIDE0MiwgIDEzLCAxMDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0OCwgMjI3LCAxNTMsIDE0NSwgMjE4LCAgNzAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKK3N0YXRpYyBjb25zdCBCWVRFIGJ5UlNFeHAyOFtdID0gezE2OCwgMjIzLCAyMDAsIDEwNCwgMjI0LCAyMzQsIDEwOCwgMTgwLCAxMTAsIDE5MCwgMTk1LCAxNDcsIDIwNSwgIDI3LCAyMzIsIDIwMSwgIDIxLCAgNDMsIDI0NSwgIDg3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDIsIDE5NSwgMjEyLCAxMTksIDI0MiwgIDM3LCAgIDksIDEyMworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Oworc3RhdGljIGNvbnN0IEJZVEUgYnlSU0V4cDMwW10gPSB7IDQxLCAxNzMsIDE0NSwgMTUyLCAyMTYsICAzMSwgMTc5LCAxODIsICA1MCwgIDQ4LCAxMTAsICA4NiwgMjM5LCAgOTYsIDIyMiwgMTI1LCAgNDIsIDE3MywgMjI2LCAxOTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjI0LCAxMzAsIDE1NiwgIDM3LCAyNTEsIDIxNiwgMjM4LCAgNDAsIDE5MiwgMTgwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CitzdGF0aWMgY29uc3QgQllURSBieVJTRXhwMzJbXSA9IHsgMTAsICAgNiwgMTA2LCAxOTAsIDI0OSwgMTY3LCAgIDQsICA2NywgMjA5LCAxMzgsIDEzOCwgIDMyLCAyNDIsIDEyMywgIDg5LCAgMjcsIDEyMCwgMTg1LCAgODAsIDE1NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzOCwgIDY5LCAxNzEsICA2MCwgIDI4LCAyMjIsICA4MCwgIDUyLCAyNTQsIDE4NSwgMjIwLCAyNDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKK3N0YXRpYyBjb25zdCBCWVRFIGJ5UlNFeHAzNFtdID0gezExMSwgIDc3LCAxNDYsICA5NCwgIDI2LCAgMjEsIDEwOCwgIDE5LCAxMDUsICA5NCwgMTEzLCAxOTMsICA4NiwgMTQwLCAxNjMsIDEyNSwgIDU4LCAxNTgsIDIyOSwgMjM5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjE4LCAxMDMsICA1NiwgIDcwLCAxMTQsICA2MSwgMTgzLCAxMjksIDE2NywgIDEzLCAgOTgsICA2MiwgMTI5LCAgNTEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKK3N0YXRpYyBjb25zdCBCWVRFIGJ5UlNFeHAzNltdID0gezIwMCwgMTgzLCAgOTgsICAxNiwgMTcyLCAgMzEsIDI0NiwgMjM0LCAgNjAsIDE1MiwgMTE1LCAgIDAsIDE2NywgMTUyLCAxMTMsIDI0OCwgMjM4LCAxMDcsICAxOCwgIDYzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjE4LCAgMzcsICA4NywgMjEwLCAxMDUsIDE3NywgMTIwLCAgNzQsIDEyMSwgMTk2LCAxMTcsIDI1MSwgMTEzLCAyMzMsICAzMCwgMTIwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CitzdGF0aWMgY29uc3QgQllURSBieVJTRXhwMzhbXSA9IHsxNTksICAzNCwgIDM4LCAyMjgsIDIzMCwgIDU5LCAyNDMsICA5NSwgIDQ5LCAyMTgsIDE3NiwgMTY0LCAgMjAsICA2NSwgIDQ1LCAxMTEsICAzOSwgIDgxLCAgNDksIDExOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExMywgMjIyLCAxOTMsIDI1MCwgMjQyLCAxNjgsIDIxNywgIDQxLCAxNjQsIDI0NywgMTc3LCAgMzAsIDIzOCwgIDE4LCAxMjAsIDE1MywgIDYwLCAxOTMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKK3N0YXRpYyBjb25zdCBCWVRFIGJ5UlNFeHA0MFtdID0geyA1OSwgMTE2LCAgNzksIDE2MSwgMjUyLCAgOTgsIDEyOCwgMjA1LCAxMjgsIDE2MSwgMjQ3LCAgNTcsIDE2MywgIDU2LCAyMzUsIDEwNiwgIDUzLCAgMjYsIDE4NywgMTc0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIyNiwgMTA0LCAxNzAsICAgNywgMTc1LCAgMzUsIDE4MSwgMTE0LCAgODgsICA0MSwgIDQ3LCAxNjMsIDEyNSwgMTM0LCAgNzIsICAyMCwgMjMyLCAgNTMsICAzNSwgIDE1CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CitzdGF0aWMgY29uc3QgQllURSBieVJTRXhwNDJbXSA9IHsyNTAsIDEwMywgMjIxLCAyMzAsICAyNSwgIDE4LCAxMzcsIDIzMSwgICAwLCAgIDMsICA1OCwgMjQyLCAyMjEsIDE5MSwgMTEwLCAgODQsIDIzMCwgICA4LCAxODgsIDEwNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDk2LCAxNDcsICAxNSwgMTMxLCAxMzksICAzNCwgMTAxLCAyMjMsICAzOSwgMTAxLCAyMTMsIDE5OSwgMjM3LCAyNTQsIDIwMSwgMTIzLCAxNzEsIDE2MiwgMTk0LCAxMTcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1MCwgIDk2CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CitzdGF0aWMgY29uc3QgQllURSBieVJTRXhwNDRbXSA9IHsxOTAsICAgNywgIDYxLCAxMjEsICA3MSwgMjQ2LCAgNjksICA1NSwgMTY4LCAxODgsICA4OSwgMjQzLCAxOTEsICAyNSwgIDcyLCAxMjMsICAgOSwgMTQ1LCAgMTQsIDI0NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsIDIzOCwgIDQ0LCAgNzgsIDE0MywgIDYyLCAyMjQsIDEyNiwgMTE4LCAxMTQsICA2OCwgMTYzLCAgNTIsIDE5NCwgMjE3LCAxNDcsIDIwNCwgMTY5LCAgMzcsIDEzMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExMywgMTAyLCAgNzMsIDE4MQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Oworc3RhdGljIGNvbnN0IEJZVEUgYnlSU0V4cDQ2W10gPSB7MTEyLCAgOTQsICA4OCwgMTEyLCAyNTMsIDIyNCwgMjAyLCAxMTUsIDE4NywgIDk5LCAgODksICAgNSwgIDU0LCAxMTMsIDEyOSwgIDQ0LCAgNTgsICAxNiwgMTM1LCAyMTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNjksIDIxMSwgIDM2LCAgIDEsICAgNCwgIDk2LCAgNjAsIDI0MSwgIDczLCAxMDQsIDIzNCwgICA4LCAyNDksIDI0NSwgMTE5LCAxNzQsICA1MiwgIDI1LCAxNTcsIDIyNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQzLCAyMDIsIDIyMywgIDE5LCAgODIsICAxNQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Oworc3RhdGljIGNvbnN0IEJZVEUgYnlSU0V4cDQ4W10gPSB7MjI4LCAgMjUsIDE5NiwgMTMwLCAyMTEsIDE0NiwgIDYwLCAgMjQsIDI1MSwgIDkwLCAgMzksIDEwMiwgMjQwLCAgNjEsIDE3OCwgIDYzLCAgNDYsIDEyMywgMTE1LCAgMTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMjEsIDExMSwgMTM1LCAxNjAsIDE4MiwgMjA1LCAxMDcsIDIwNiwgIDk1LCAxNTAsIDEyMCwgMTg0LCAgOTEsICAyMSwgMjQ3LCAxNTYsIDE0MCwgMjM4LCAxOTEsICAxMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDk0LCAyMjcsICA4NCwgIDUwLCAxNjMsICAzOSwgIDM0LCAxMDgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKK3N0YXRpYyBjb25zdCBCWVRFIGJ5UlNFeHA1MFtdID0gezIzMiwgMTI1LCAxNTcsIDE2MSwgMTY0LCAgIDksIDExOCwgIDQ2LCAyMDksICA5OSwgMjAzLCAxOTMsICAzNSwgICAzLCAyMDksIDExMSwgMTk1LCAyNDIsIDIwMywgMjI1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDYsICAxMywgIDMyLCAxNjAsIDEyNiwgMjA5LCAxMzAsIDE2MCwgMjQyLCAyMTUsIDI0MiwgIDc1LCAgNzcsICA0MiwgMTg5LCAgMzIsIDExMywgIDY1LCAxMjQsICA2OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIyOCwgMTE0LCAyMzUsIDE3NSwgMTI0LCAxNzAsIDIxNSwgMjMyLCAxMzMsIDIwNQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Oworc3RhdGljIGNvbnN0IEJZVEUgYnlSU0V4cDUyW10gPSB7MTE2LCAgNTAsICA4NiwgMTg2LCAgNTAsIDIyMCwgMjUxLCAgODksIDE5MiwgIDQ2LCAgODYsIDEyNywgMTI0LCAgMTksIDE4NCwgMjMzLCAxNTEsIDIxNSwgIDIyLCAgMTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1OSwgMTQ1LCAgMzcsIDI0MiwgMjAzLCAxMzQsIDI1NCwgIDg5LCAxOTAsICA5NCwgIDU5LCAgNjUsIDEyNCwgMTEzLCAxMDAsIDIzMywgMjM1LCAxMjEsICAyMiwgIDc2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgODYsICA5NywgIDM5LCAyNDIsIDIwMCwgMjIwLCAxMDEsICAzMywgMjM5LCAyNTQsIDExNiwgIDUxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CitzdGF0aWMgY29uc3QgQllURSBieVJTRXhwNTRbXSA9IHsxODMsICAyNiwgMjAxLCAgODcsIDIxMCwgMjIxLCAxMTMsICAyMSwgIDQ2LCAgNjUsICA0NSwgIDUwLCAyMzgsIDE4NCwgMjQ5LCAyMjUsIDEwMiwgIDU4LCAyMDksIDIxOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwOSwgMTY1LCAgMjYsICA5NSwgMTg0LCAxOTIsICA1MiwgMjQ1LCAgMzUsIDI1NCwgMjM4LCAxNzUsIDE3MiwgIDc5LCAxMjMsICAyNSwgMTIyLCAgNDMsIDEyMCwgMTA4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjE1LCAgODAsIDEyOCwgMjAxLCAyMzUsICAgOCwgMTUzLCAgNTksIDEwMSwgIDMxLCAxOTgsICA3NiwgIDMxLCAxNTYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKK3N0YXRpYyBjb25zdCBCWVRFIGJ5UlNFeHA1NltdID0gezEwNiwgMTIwLCAxMDcsIDE1NywgMTY0LCAyMTYsIDExMiwgMTE2LCAgIDIsICA5MSwgMjQ4LCAxNjMsICAzNiwgMjAxLCAyMDIsIDIyOSwgICA2LCAxNDQsIDI1NCwgMTU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTM1LCAyMDgsIDE3MCwgMjA5LCAgMTIsIDEzOSwgMTI3LCAxNDIsIDE4MiwgMjQ5LCAxNzcsIDE3NCwgMTkwLCAgMjgsICAxMCwgIDg1LCAyMzksIDE4NCwgMTAxLCAxMjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNTIsIDIwNiwgIDk2LCAgMjMsIDE2MywgIDYxLCAgMjcsIDE5NiwgMjQ3LCAxNTEsIDE1NCwgMjAyLCAyMDcsICAyMCwgIDYxLCAgMTAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKK3N0YXRpYyBjb25zdCBCWVRFIGJ5UlNFeHA1OFtdID0geyA4MiwgMTE2LCAgMjYsIDI0NywgIDY2LCAgMjcsICA2MiwgMTA3LCAyNTIsIDE4MiwgMjAwLCAxODUsIDIzNSwgIDU1LCAyNTEsIDI0MiwgMjEwLCAxNDQsIDE1NCwgMjM3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE3NiwgMTQxLCAxOTIsIDI0OCwgMTUyLCAyNDksIDIwNiwgIDg1LCAyNTMsIDE0MiwgIDY1LCAxNjUsIDEyNSwgIDIzLCAgMjQsICAzMCwgMTIyLCAyNDAsIDIxNCwgICA2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyOSwgMjE4LCAgMjksIDE0NSwgMTI3LCAxMzQsIDIwNiwgMjQ1LCAxMTcsICAyOSwgIDQxLCAgNjMsIDE1OSwgMTQyLCAyMzMsIDEyNSwgMTQ4LCAxMjMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKK3N0YXRpYyBjb25zdCBCWVRFIGJ5UlNFeHA2MFtdID0gezEwNywgMTQwLCAgMjYsICAxMiwgICA5LCAxNDEsIDI0MywgMTk3LCAyMjYsIDE5NywgMjE5LCAgNDUsIDIxMSwgMTAxLCAyMTksIDEyMCwgIDI4LCAxODEsIDEyNywgICA2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAwLCAyNDcsICAgMiwgMjA1LCAxOTgsICA1NywgMTE1LCAyMTksIDEwMSwgMTA5LCAxNjAsICA4MiwgIDM3LCAgMzgsIDIzOCwgIDQ5LCAxNjAsIDIwOSwgMTIxLCAgODYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMSwgMTI0LCAgMzAsIDE4MSwgIDg0LCAgMjUsIDE5NCwgIDg3LCAgNjUsIDEwMiwgMTkwLCAyMjAsICA3MCwgIDI3LCAyMDksICAxNiwgIDg5LCAgIDcsICAzMywgMjQwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CitzdGF0aWMgY29uc3QgQllURSBieVJTRXhwNjJbXSA9IHsgNjUsIDIwMiwgMTEzLCAgOTgsICA3MSwgMjIzLCAyNDgsIDExOCwgMjE0LCAgOTQsICAgMCwgMTIyLCAgMzcsICAyMywgICAyLCAyMjgsICA1OCwgMTIxLCAgIDcsIDEwNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMzUsICA3OCwgMjQzLCAxMTgsICA3MCwgIDc2LCAyMjMsICA4OSwgIDcyLCAgNTAsICA3MCwgMTExLCAxOTQsICAxNywgMjEyLCAxMjYsIDE4MSwgIDM1LCAyMjEsIDExNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMzUsICAxMSwgMjI5LCAxNDksIDE0NywgMTIzLCAyMTMsICA0MCwgMTE1LCAgIDYsIDIwMCwgMTAwLCAgMjYsIDI0NiwgMTgyLCAyMTgsIDEyNywgMjE1LCAgMzYsIDE4NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTAsIDEwNgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Oworc3RhdGljIGNvbnN0IEJZVEUgYnlSU0V4cDY0W10gPSB7IDQ1LCAgNTEsIDE3NSwgICA5LCAgIDcsIDE1OCwgMTU5LCAgNDksICA2OCwgMTE5LCAgOTIsIDEyMywgMTc3LCAyMDQsIDE4NywgMjU0LCAyMDAsICA3OCwgMTQxLCAxNDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTE5LCAgMjYsIDEyNywgIDUzLCAxNjAsICA5MywgMTk5LCAyMTIsICAyOSwgIDI0LCAxNDUsIDE1NiwgMjA4LCAxNTAsIDIxOCwgMjA5LCAgIDQsIDIxNiwgIDkxLCAgNDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTg0LCAxNDYsICA0NywgMTQwLCAxOTUsIDE5NSwgMTI1LCAyNDIsIDIzOCwgIDYzLCAgOTksIDEwOCwgMTQwLCAyMzAsIDI0MiwgIDMxLCAyMDQsICAxMSwgMTc4LCAyNDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjE3LCAxNTYsIDIxMywgMjMxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CitzdGF0aWMgY29uc3QgQllURSBieVJTRXhwNjZbXSA9IHsgIDUsIDExOCwgMjIyLCAxODAsIDEzNiwgMTM2LCAxNjIsICA1MSwgIDQ2LCAxMTcsICAxMywgMjE1LCAgODEsICAxNywgMTM5LCAyNDcsIDE5NywgMTcxLCAgOTUsIDE3MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNjUsIDEzNywgMTc4LCAgNjgsIDExMSwgIDk1LCAxMDEsICA0MSwgIDcyLCAyMTQsIDE2OSwgMTk3LCAgOTUsICAgNywgIDQ0LCAxNTQsICA3NywgMTExLCAyMzYsICA0MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIxLCAxNDMsICA2MywgIDg3LCAgODAsIDI1MywgMjQwLCAxMjYsIDIxNywgIDc3LCAgMzQsIDIzMiwgMTA2LCAgNTAsIDE2OCwgIDgyLCAgNzYsIDE0NiwgIDY3LCAxMDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE3MSwgIDI1LCAxMzIsICA5MywgIDQ1LCAxMDUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKK3N0YXRpYyBjb25zdCBCWVRFIGJ5UlNFeHA2OFtdID0gezI0NywgMTU5LCAyMjMsICAzMywgMjI0LCAgOTMsICA3NywgIDcwLCAgOTAsIDE2MCwgIDMyLCAyNTQsICA0MywgMTUwLCAgODQsIDEwMSwgMTkwLCAyMDUsIDEzMywgIDUyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNjAsIDIwMiwgMTY1LCAyMjAsIDIwMywgMTUxLCAgOTMsICA4NCwgIDE1LCAgODQsIDI1MywgMTczLCAxNjAsICA4OSwgMjI3LCAgNTIsIDE5OSwgIDk3LCAgOTUsIDIzMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUyLCAxNzcsICA0MSwgMTI1LCAxMzcsIDI0MSwgMTY2LCAyMjUsIDExOCwgICAyLCAgNTQsICAzMiwgIDgyLCAyMTUsIDE3NSwgMTk4LCAgNDMsIDIzOCwgMjM1LCAgMjcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDEsIDE4NCwgMTI3LCAgIDMsICAgNSwgICA4LCAxNjMsIDIzOAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OworCitzdGF0aWMgY29uc3QgQllURSogYnlSU0V4cFtdID0ge05VTEwsICAgICAgTlVMTCwgICAgICBOVUxMLCAgICAgIE5VTEwsICAgICAgTlVMTCwgICAgICBOVUxMLCAgICAgIE5VTEwsICAgICAgYnlSU0V4cDcsICBOVUxMLCAgICAgIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5UlNFeHAxMCwgTlVMTCwgICAgICBOVUxMLCAgICAgIGJ5UlNFeHAxMywgTlVMTCwgICAgICBieVJTRXhwMTUsIGJ5UlNFeHAxNiwgYnlSU0V4cDE3LCBieVJTRXhwMTgsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5UlNFeHAyMCwgTlVMTCwgICAgICBieVJTRXhwMjIsIE5VTEwsICAgICAgYnlSU0V4cDI0LCBOVUxMLCAgICAgIGJ5UlNFeHAyNiwgTlVMTCwgICAgICBieVJTRXhwMjgsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5UlNFeHAzMCwgTlVMTCwgICAgICBieVJTRXhwMzIsIE5VTEwsICAgICAgYnlSU0V4cDM0LCBOVUxMLCAgICAgIGJ5UlNFeHAzNiwgTlVMTCwgICAgICBieVJTRXhwMzgsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5UlNFeHA0MCwgTlVMTCwgICAgICBieVJTRXhwNDIsIE5VTEwsICAgICAgYnlSU0V4cDQ0LCBOVUxMLCAgICAgIGJ5UlNFeHA0NiwgTlVMTCwgICAgICBieVJTRXhwNDgsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5UlNFeHA1MCwgTlVMTCwgICAgICBieVJTRXhwNTIsIE5VTEwsICAgICAgYnlSU0V4cDU0LCBOVUxMLCAgICAgIGJ5UlNFeHA1NiwgTlVMTCwgICAgICBieVJTRXhwNTgsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5UlNFeHA2MCwgTlVMTCwgICAgICBieVJTRXhwNjIsIE5VTEwsICAgICAgYnlSU0V4cDY0LCBOVUxMLCAgICAgIGJ5UlNFeHA2NiwgTlVMTCwgICAgICBieVJTRXhwNjgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OworCitzdGF0aWMgY29uc3QgaW50IG5JbmRpY2F0b3JMZW5OdW1lcmFsW10gID0gezEwLCAxMiwgMTR9Oworc3RhdGljIGNvbnN0IGludCBuSW5kaWNhdG9yTGVuQWxwaGFiZXRbXSA9IHsgOSwgMTEsIDEzfTsKK3N0YXRpYyBjb25zdCBpbnQgbkluZGljYXRvckxlbjhCaXRbXQkgID0geyA4LCAxNiwgMTZ9OworCitzdGF0aWMgaW50IG1fbmNEYXRhQ29kZVdvcmRCaXQ7CitzdGF0aWMgQllURSBtX2J5RGF0YUNvZGVXb3JkW01BWF9EQVRBQ09ERVdPUkRdOworCitzdGF0aWMgaW50IG1fbmNEYXRhQmxvY2s7CitzdGF0aWMgQllURSBtX2J5QmxvY2tNb2RlW01BWF9EQVRBQ09ERVdPUkRdOworc3RhdGljIGludCBtX25CbG9ja0xlbmd0aFtNQVhfREFUQUNPREVXT1JEXTsKKworc3RhdGljIGludCBtX25jQWxsQ29kZVdvcmQ7CitzdGF0aWMgQllURSBtX2J5QWxsQ29kZVdvcmRbTUFYX0FMTENPREVXT1JEXTsKK3N0YXRpYyBCWVRFIG1fYnlSU1dvcmtbTUFYX0NPREVCTE9DS107CisKK3N0YXRpYyBpbnQgbV9uTGV2ZWw7CitzdGF0aWMgaW50IG1fblZlcnNpb247CitzdGF0aWMgaW50IG1fbk1hc2tpbmdObzsKKworaW50IG1fblN5bWJsZVNpemU7CitCWVRFIG1fYnlNb2R1bGVEYXRhW01BWF9NT0RVTEVTSVpFXVtNQVhfTU9EVUxFU0laRV07CisKKyNkZWZpbmUgbWluKGEsYikJKCgoYSkgPCAoYikpID8gKGEpIDogKGIpKQorCitzdGF0aWMgYm9vbCBJc051bWVyYWxEYXRhKHVuc2lnbmVkIGNoYXIgYykKK3sKKyAgaWYoYyA+PSAnMCcgJiYgYyA8PSAnOScpCisgICAgcmV0dXJuIFRSVUU7CisKKyAgcmV0dXJuIEZBTFNFOworfQorCitzdGF0aWMgYm9vbCBJc0FscGhhYmV0RGF0YSh1bnNpZ25lZCBjaGFyIGMpCit7CisgIGlmKGMgPj0gJzAnICYmIGMgPD0gJzknKQorICAgIHJldHVybiBUUlVFOworCisgIGlmKGMgPj0gJ0EnICYmIGMgPD0gJ1onKQorICAgIHJldHVybiBUUlVFOworCisgIGlmKGMgPT0gJyAnIHx8IGMgPT0gJyQnIHx8IGMgPT0gJyUnIHx8IGMgPT0gJyonIHx8IGMgPT0gJysnIHx8IGMgPT0gJy0nIHx8IGMgPT0gJy4nCisgICAgICB8fCBjID09ICcvJyB8fCBjID09ICc6JykKKyAgICByZXR1cm4gVFJVRTsKKworICByZXR1cm4gRkFMU0U7Cit9CisKK3N0YXRpYyBCWVRFIEFscGhhYmV0VG9CaW5hbHkoQllURSBjKQoreworICBpZihjID49ICcwJyAmJiBjIDw9ICc5JykgcmV0dXJuIChCWVRFKShjIC0gJzAnKTsKKworICBpZihjID49ICdBJyAmJiBjIDw9ICdaJykgcmV0dXJuIChCWVRFKShjIC0gJ0EnICsgMTApOworCisgIGlmKGMgPT0gJyAnKSByZXR1cm4gMzY7CisKKyAgaWYoYyA9PSAnJCcpIHJldHVybiAzNzsKKworICBpZihjID09ICclJykgcmV0dXJuIDM4OworCisgIGlmKGMgPT0gJyonKSByZXR1cm4gMzk7CisKKyAgaWYoYyA9PSAnKycpIHJldHVybiA0MDsKKworICBpZihjID09ICctJykgcmV0dXJuIDQxOworCisgIGlmKGMgPT0gJy4nKSByZXR1cm4gNDI7CisKKyAgaWYoYyA9PSAnLycpIHJldHVybiA0MzsKKworICByZXR1cm4gNDQ7Cit9CitzdGF0aWMgaW50IEdldEJpdExlbmd0aChCWVRFIG5Nb2RlLCBpbnQgbmNEYXRhLCBpbnQgblZlckdyb3VwKQoreworICBpbnQgbmNCaXRzID0gMDsKKworICBzd2l0Y2gobk1vZGUpCisgIHsKKyAgY2FzZSBRUl9NT0RFX05VTUVSQUw6CisgICAgbmNCaXRzID0gNCArIG5JbmRpY2F0b3JMZW5OdW1lcmFsW25WZXJHcm91cF0gKyAoMTAgKiAobmNEYXRhIC8gMykpOworICAgIHN3aXRjaChuY0RhdGEgJSAzKQorICAgIHsKKyAgICBjYXNlIDE6CisgICAgICBuY0JpdHMgKz0gNDsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgMjoKKyAgICAgIG5jQml0cyArPSA3OworICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgIGJyZWFrOworICAgIH0KKworICAgIGJyZWFrOworCisgIGNhc2UgUVJfTU9ERV9BTFBIQUJFVDoKKyAgICBuY0JpdHMgPSA0ICsgbkluZGljYXRvckxlbkFscGhhYmV0W25WZXJHcm91cF0gKyAoMTEgKiAobmNEYXRhIC8gMikpICsgKDYgKiAobmNEYXRhICUgMikpOworICAgIGJyZWFrOworCisgIGNhc2UgUVJfTU9ERV84QklUOgorICAgIG5jQml0cyA9IDQgKyBuSW5kaWNhdG9yTGVuOEJpdFtuVmVyR3JvdXBdICsgKDggKiBuY0RhdGEpOworICAgIGJyZWFrOworCisgIGRlZmF1bHQ6CisgICAgYnJlYWs7CisgIH0KKworICByZXR1cm4gbmNCaXRzOworfQorCitzdGF0aWMgaW50IFNldEJpdFN0cmVhbShpbnQgbkluZGV4LCBXT1JEIHdEYXRhLCBpbnQgbmNEYXRhKQoreworICBpbnQgaTsKKworICBpZihuSW5kZXggPT0gLTEgfHwgbkluZGV4ICsgbmNEYXRhID4gTUFYX0RBVEFDT0RFV09SRCAqIDgpCisgICAgcmV0dXJuIC0xOworCisgIGZvcihpID0gMDsgaSA8IG5jRGF0YTsgKytpKQorICB7CisgICAgaWYod0RhdGEgJiAoMSA8PCAobmNEYXRhIC0gaSAtIDEpKSkKKyAgICB7CisgICAgICBtX2J5RGF0YUNvZGVXb3JkWyhuSW5kZXggKyBpKSAvIDhdIHw9IDEgPDwgKDcgLSAoKG5JbmRleCArIGkpICUgOCkpOworICAgIH0KKyAgfQorCisgIHJldHVybiBuSW5kZXggKyBuY0RhdGE7Cit9CisKK3N0YXRpYyB2b2lkIEdldFJTQ29kZVdvcmQoQllURSogbHBieVJTV29yaywgaW50IG5jRGF0YUNvZGVXb3JkLCBpbnQgbmNSU0NvZGVXb3JkKQoreworICBpbnQgaSwgajsKKworICBmb3IoaSA9IDA7IGkgPCBuY0RhdGFDb2RlV29yZCA7ICsraSkKKyAgeworICAgIGlmKGxwYnlSU1dvcmtbMF0gIT0gMCkKKyAgICB7CisgICAgICBCWVRFIG5FeHBGaXJzdCA9IGJ5SW50VG9FeHBbbHBieVJTV29ya1swXV07CisKKyAgICAgIGZvcihqID0gMDsgaiA8IG5jUlNDb2RlV29yZDsgKytqKQorICAgICAgeworICAgICAgICBCWVRFIG5FeHBFbGVtZW50ID0gKEJZVEUpKCgoaW50KShieVJTRXhwW25jUlNDb2RlV29yZF1bal0gKyBuRXhwRmlyc3QpKSAlIDI1NSk7CisKKyAgICAgICAgbHBieVJTV29ya1tqXSA9IChCWVRFKShscGJ5UlNXb3JrW2ogKyAxXSBeIGJ5RXhwVG9JbnRbbkV4cEVsZW1lbnRdKTsKKyAgICAgIH0KKworICAgICAgZm9yKGogPSBuY1JTQ29kZVdvcmQ7IGogPCBuY0RhdGFDb2RlV29yZCArIG5jUlNDb2RlV29yZCAtIDE7ICsraikKKyAgICAgICAgbHBieVJTV29ya1tqXSA9IGxwYnlSU1dvcmtbaiArIDFdOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgZm9yKGogPSAwOyBqIDwgbmNEYXRhQ29kZVdvcmQgKyBuY1JTQ29kZVdvcmQgLSAxOyArK2opCisgICAgICAgIGxwYnlSU1dvcmtbal0gPSBscGJ5UlNXb3JrW2ogKyAxXTsKKyAgICB9CisgIH0KK30KKworc3RhdGljIHZvaWQgU2V0QWxpZ25tZW50UGF0dGVybihpbnQgeCwgaW50IHkpCit7CisgIHN0YXRpYyBCWVRFIGJ5UGF0dGVybltdID0gezB4MWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MWYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OworICBpbnQgaSwgajsKKworICBpZihtX2J5TW9kdWxlRGF0YVt4XVt5XSAmIDB4MjApCisgICAgcmV0dXJuOworCisgIHggLT0gMjsgeSAtPSAyOworCisgIGZvcihpID0gMDsgaSA8IDU7ICsraSkKKyAgeworICAgIGZvcihqID0gMDsgaiA8IDU7ICsraikKKyAgICB7CisgICAgICBtX2J5TW9kdWxlRGF0YVt4ICsgal1beSArIGldID0gKGJ5UGF0dGVybltpXSAmICgxIDw8ICg0IC0gaikpKSA/ICdceDMwJyA6ICdceDIwJzsKKyAgICB9CisgIH0KK30KK3N0YXRpYyB2b2lkIFNldEZpbmRlclBhdHRlcm4oaW50IHgsIGludCB5KQoreworICBzdGF0aWMgQllURSBieVBhdHRlcm5bXSA9IHsweDdmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKKyAgaW50IGksIGo7CisKKyAgZm9yKGkgPSAwOyBpIDwgNzsgKytpKQorICB7CisgICAgZm9yKGogPSAwOyBqIDwgNzsgKytqKQorICAgIHsKKyAgICAgIG1fYnlNb2R1bGVEYXRhW3ggKyBqXVt5ICsgaV0gPSAoYnlQYXR0ZXJuW2ldICYgKDEgPDwgKDYgLSBqKSkpID8gJ1x4MzAnIDogJ1x4MjAnOworICAgIH0KKyAgfQorfQorCitzdGF0aWMgdm9pZCBTZXRWZXJzaW9uUGF0dGVybih2b2lkKQoreworICBpbnQgaSwgajsKKyAgaW50IG5WZXJEYXRhOworCisgIGlmKG1fblZlcnNpb24gPD0gNikKKyAgICByZXR1cm47CisKKyAgblZlckRhdGEgPSBtX25WZXJzaW9uIDw8IDEyOworCisgIGZvcihpID0gMDsgaSA8IDY7ICsraSkKKyAgeworICAgIGlmKG5WZXJEYXRhICYgKDEgPDwgKDE3IC0gaSkpKQorICAgIHsKKyAgICAgIG5WZXJEYXRhIF49ICgweDFmMjUgPDwgKDUgLSBpKSk7CisgICAgfQorICB9CisKKyAgblZlckRhdGEgKz0gbV9uVmVyc2lvbiA8PCAxMjsKKworICBmb3IoaSA9IDA7IGkgPCA2OyArK2kpCisgIHsKKyAgICBmb3IoaiA9IDA7IGogPCAzOyArK2opCisgICAgeworICAgICAgbV9ieU1vZHVsZURhdGFbbV9uU3ltYmxlU2l6ZSAtIDExICsgal1baV0gPSBtX2J5TW9kdWxlRGF0YVtpXVttX25TeW1ibGVTaXplIC0gMTEgKyBqXSA9CisgICAgICAgICAgICAoblZlckRhdGEgJiAoMSA8PCAoaSAqIDMgKyBqKSkpID8gJ1x4MzAnIDogJ1x4MjAnOworICAgIH0KKyAgfQorfQorCitzdGF0aWMgdm9pZCBTZXRDb2RlV29yZFBhdHRlcm4odm9pZCkKK3sKKyAgaW50IHggPSBtX25TeW1ibGVTaXplOworICBpbnQgeSA9IG1fblN5bWJsZVNpemUgLSAxOworCisgIGludCBuQ29lZl94ID0gMTsKKyAgaW50IG5Db2VmX3kgPSAxOworCisgIGludCBpLCBqOworCisgIGZvcihpID0gMDsgaSA8IG1fbmNBbGxDb2RlV29yZDsgKytpKQorICB7CisgICAgZm9yKGogPSAwOyBqIDwgODsgKytqKQorICAgIHsKKyAgICAgIGRvCisgICAgICB7CisgICAgICAgIHggKz0gbkNvZWZfeDsKKyAgICAgICAgbkNvZWZfeCAqPSAtMTsKKworICAgICAgICBpZihuQ29lZl94IDwgMCkKKyAgICAgICAgeworICAgICAgICAgIHkgKz0gbkNvZWZfeTsKKworICAgICAgICAgIGlmKHkgPCAwIHx8IHkgPT0gbV9uU3ltYmxlU2l6ZSkKKyAgICAgICAgICB7CisgICAgICAgICAgICB5ID0gKHkgPCAwKSA/IDAgOiBtX25TeW1ibGVTaXplIC0gMTsKKyAgICAgICAgICAgIG5Db2VmX3kgKj0gLTE7CisKKyAgICAgICAgICAgIHggLT0gMjsKKworICAgICAgICAgICAgaWYoeCA9PSA2KQorICAgICAgICAgICAgICAtLXg7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgICB3aGlsZShtX2J5TW9kdWxlRGF0YVt4XVt5XSAmIDB4MjApOworCisgICAgICBtX2J5TW9kdWxlRGF0YVt4XVt5XSA9IChtX2J5QWxsQ29kZVdvcmRbaV0gJiAoMSA8PCAoNyAtIGopKSkgPyAnXHgwMicgOiAnXHgwMCc7CisgICAgfQorICB9Cit9CisKK3N0YXRpYyB2b2lkIFNldE1hc2tpbmdQYXR0ZXJuKGludCBuUGF0dGVybk5vKQoreworICBpbnQgaSwgajsKKworICBmb3IoaSA9IDA7IGkgPCBtX25TeW1ibGVTaXplOyArK2kpCisgIHsKKyAgICBmb3IoaiA9IDA7IGogPCBtX25TeW1ibGVTaXplOyArK2opCisgICAgeworICAgICAgaWYoIShtX2J5TW9kdWxlRGF0YVtqXVtpXSAmIDB4MjApKQorICAgICAgeworICAgICAgICBib29sIGJNYXNrOworCisgICAgICAgIHN3aXRjaChuUGF0dGVybk5vKQorICAgICAgICB7CisgICAgICAgIGNhc2UgMDoKKyAgICAgICAgICBiTWFzayA9IChib29sKSgoaSArIGopICUgMiA9PSAwKTsKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIDE6CisgICAgICAgICAgYk1hc2sgPSAoYm9vbCkoaSAlIDIgPT0gMCk7CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAyOgorICAgICAgICAgIGJNYXNrID0gKGJvb2wpKGogJSAzID09IDApOworICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICBiTWFzayA9IChib29sKSgoaSArIGopICUgMyA9PSAwKTsKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIDQ6CisgICAgICAgICAgYk1hc2sgPSAoYm9vbCkoKChpIC8gMikgKyAoaiAvIDMpKSAlIDIgPT0gMCk7CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSA1OgorICAgICAgICAgIGJNYXNrID0gKGJvb2wpKCgoaSAqIGopICUgMikgKyAoKGkgKiBqKSAlIDMpID09IDApOworICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgNjoKKyAgICAgICAgICBiTWFzayA9IChib29sKSgoKChpICogaikgJSAyKSArICgoaSAqIGopICUgMykpICUgMiA9PSAwKTsKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgIGJNYXNrID0gKGJvb2wpKCgoKGkgKiBqKSAlIDMpICsgKChpICsgaikgJSAyKSkgJSAyID09IDApOworICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgbV9ieU1vZHVsZURhdGFbal1baV0gPSAoQllURSkoKG1fYnlNb2R1bGVEYXRhW2pdW2ldICYgMHhmZSkgfCAoKCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2J5TW9kdWxlRGF0YVtqXVtpXSAmIDB4MDIpID4gMSkgXiBiTWFzaykpOworICAgICAgfQorICAgIH0KKyAgfQorfQorCitzdGF0aWMgdm9pZCBTZXRGb3JtYXRJbmZvUGF0dGVybihpbnQgblBhdHRlcm5ObykKK3sKKyAgaW50IG5Gb3JtYXRJbmZvOworICBpbnQgaTsKKyAgaW50IG5Gb3JtYXREYXRhOworCisgIHN3aXRjaChtX25MZXZlbCkKKyAgeworICBjYXNlIFFSX0xFVkVMX006CisgICAgbkZvcm1hdEluZm8gPSAweDAwOworICAgIGJyZWFrOworCisgIGNhc2UgUVJfTEVWRUxfTDoKKyAgICBuRm9ybWF0SW5mbyA9IDB4MDg7CisgICAgYnJlYWs7CisKKyAgY2FzZSBRUl9MRVZFTF9ROgorICAgIG5Gb3JtYXRJbmZvID0gMHgxODsKKyAgICBicmVhazsKKworICBkZWZhdWx0OgorICAgIG5Gb3JtYXRJbmZvID0gMHgxMDsKKyAgICBicmVhazsKKyAgfQorCisgIG5Gb3JtYXRJbmZvICs9IG5QYXR0ZXJuTm87CisKKyAgbkZvcm1hdERhdGEgPSBuRm9ybWF0SW5mbyA8PCAxMDsKKworICBmb3IoaSA9IDA7IGkgPCA1OyArK2kpCisgIHsKKyAgICBpZihuRm9ybWF0RGF0YSAmICgxIDw8ICgxNCAtIGkpKSkKKyAgICB7CisgICAgICBuRm9ybWF0RGF0YSBePSAoMHgwNTM3IDw8ICg0IC0gaSkpOworICAgIH0KKyAgfQorCisgIG5Gb3JtYXREYXRhICs9IG5Gb3JtYXRJbmZvIDw8IDEwOworCisgIG5Gb3JtYXREYXRhIF49IDB4NTQxMjsKKworICBmb3IoaSA9IDA7IGkgPD0gNTsgKytpKQorICAgIG1fYnlNb2R1bGVEYXRhWzhdW2ldID0gKG5Gb3JtYXREYXRhICYgKDEgPDwgaSkpID8gJ1x4MzAnIDogJ1x4MjAnOworCisgIG1fYnlNb2R1bGVEYXRhWzhdWzddID0gKG5Gb3JtYXREYXRhICYgKDEgPDwgNikpID8gJ1x4MzAnIDogJ1x4MjAnOworICBtX2J5TW9kdWxlRGF0YVs4XVs4XSA9IChuRm9ybWF0RGF0YSAmICgxIDw8IDcpKSA/ICdceDMwJyA6ICdceDIwJzsKKyAgbV9ieU1vZHVsZURhdGFbN11bOF0gPSAobkZvcm1hdERhdGEgJiAoMSA8PCA4KSkgPyAnXHgzMCcgOiAnXHgyMCc7CisKKyAgZm9yKGkgPSA5OyBpIDw9IDE0OyArK2kpCisgICAgbV9ieU1vZHVsZURhdGFbMTQgLSBpXVs4XSA9IChuRm9ybWF0RGF0YSAmICgxIDw8IGkpKSA/ICdceDMwJyA6ICdceDIwJzsKKworICBmb3IoaSA9IDA7IGkgPD0gNzsgKytpKQorICAgIG1fYnlNb2R1bGVEYXRhW21fblN5bWJsZVNpemUgLSAxIC0gaV1bOF0gPSAobkZvcm1hdERhdGEgJiAoMSA8PCBpKSkgPyAnXHgzMCcgOiAnXHgyMCc7CisKKyAgbV9ieU1vZHVsZURhdGFbOF1bbV9uU3ltYmxlU2l6ZSAtIDhdID0gJ1x4MzAnOworCisgIGZvcihpID0gODsgaSA8PSAxNDsgKytpKQorICAgIG1fYnlNb2R1bGVEYXRhWzhdW21fblN5bWJsZVNpemUgLSAxNSArIGldID0gKG5Gb3JtYXREYXRhICYgKDEgPDwgaSkpID8gJ1x4MzAnIDogJ1x4MjAnOworfQorCitzdGF0aWMgaW50IENvdW50UGVuYWx0eSh2b2lkKQoreworICBpbnQgblBlbmFsdHkgPSAwOworICBpbnQgaSwgaiwgazsKKyAgaW50IG5Db3VudCA9IDAsIHNfbkNvdW50OworCisgIGZvcihpID0gMDsgaSA8IG1fblN5bWJsZVNpemU7ICsraSkKKyAgeworICAgIGZvcihqID0gMDsgaiA8IG1fblN5bWJsZVNpemUgLSA0OyArK2opCisgICAgeworICAgICAgaW50IG5Db3VudCA9IDE7CisKKyAgICAgIGZvcihrID0gaiArIDE7IGsgPCBtX25TeW1ibGVTaXplOyBrKyspCisgICAgICB7CisgICAgICAgIGlmKCgobV9ieU1vZHVsZURhdGFbaV1bal0gJiAweDExKSA9PSAwKSA9PSAoKG1fYnlNb2R1bGVEYXRhW2ldW2tdICYgMHgxMSkgPT0gMCkpCisgICAgICAgICAgKytuQ291bnQ7CisgICAgICAgIGVsc2UKKyAgICAgICAgICBicmVhazsKKyAgICAgIH0KKworICAgICAgaWYobkNvdW50ID49IDUpCisgICAgICB7CisgICAgICAgIG5QZW5hbHR5ICs9IDMgKyAobkNvdW50IC0gNSk7CisgICAgICB9CisKKyAgICAgIGogPSBrIC0gMTsKKyAgICB9CisgIH0KKworICBmb3IoaSA9IDA7IGkgPCBtX25TeW1ibGVTaXplOyArK2kpCisgIHsKKyAgICBmb3IoaiA9IDA7IGogPCBtX25TeW1ibGVTaXplIC0gNDsgKytqKQorICAgIHsKKyAgICAgIGludCBuQ291bnQgPSAxOworCisgICAgICBmb3IoayA9IGogKyAxOyBrIDwgbV9uU3ltYmxlU2l6ZTsgaysrKQorICAgICAgeworICAgICAgICBpZigoKG1fYnlNb2R1bGVEYXRhW2pdW2ldICYgMHgxMSkgPT0gMCkgPT0gKChtX2J5TW9kdWxlRGF0YVtrXVtpXSAmIDB4MTEpID09IDApKQorICAgICAgICAgICsrbkNvdW50OworICAgICAgICBlbHNlCisgICAgICAgICAgYnJlYWs7CisgICAgICB9CisKKyAgICAgIGlmKG5Db3VudCA+PSA1KQorICAgICAgeworICAgICAgICBuUGVuYWx0eSArPSAzICsgKG5Db3VudCAtIDUpOworICAgICAgfQorCisgICAgICBqID0gayAtIDE7CisgICAgfQorICB9CisKKyAgZm9yKGkgPSAwOyBpIDwgbV9uU3ltYmxlU2l6ZSAtIDE7ICsraSkKKyAgeworICAgIGZvcihqID0gMDsgaiA8IG1fblN5bWJsZVNpemUgLSAxOyArK2opCisgICAgeworICAgICAgaWYoKCgobV9ieU1vZHVsZURhdGFbaV1bal0gJiAweDExKSA9PSAwKSA9PSAoKG1fYnlNb2R1bGVEYXRhW2kgKyAxXVtqXQkJJiAweDExKSA9PSAwKSkgJiYKKyAgICAgICAgICAoKChtX2J5TW9kdWxlRGF0YVtpXVtqXSAmIDB4MTEpID09IDApID09ICgobV9ieU1vZHVsZURhdGFbaV0JW2ogKyAxXSAmIDB4MTEpID09IDApKSAmJgorICAgICAgICAgICgoKG1fYnlNb2R1bGVEYXRhW2ldW2pdICYgMHgxMSkgPT0gMCkgPT0gKChtX2J5TW9kdWxlRGF0YVtpICsgMV1baiArIDFdICYgMHgxMSkgPT0gMCkpKQorICAgICAgeworICAgICAgICBuUGVuYWx0eSArPSAzOworICAgICAgfQorICAgIH0KKyAgfQorCisgIGZvcihpID0gMDsgaSA8IG1fblN5bWJsZVNpemU7ICsraSkKKyAgeworICAgIGZvcihqID0gMDsgaiA8IG1fblN5bWJsZVNpemUgLSA2OyArK2opCisgICAgeworICAgICAgaWYoKChqID09IDApIHx8ICghKG1fYnlNb2R1bGVEYXRhW2ldW2ogLSAxXSAmIDB4MTEpKSkgJiYgICAgICAgLy8gw/e78rf7usXN4gorICAgICAgICAgIChtX2J5TW9kdWxlRGF0YVtpXVtqXSAgICAgJiAweDExKSAgICYmICAgIC8vILC1IC0gMQorICAgICAgICAgICghKG1fYnlNb2R1bGVEYXRhW2ldW2ogKyAxXSAmIDB4MTEpKSAgJiYgIC8vIMP3IC0gMQorICAgICAgICAgIChtX2J5TW9kdWxlRGF0YVtpXVtqICsgMl0gJiAweDExKSAgICYmICAgIC8vILC1IKm0CisgICAgICAgICAgKG1fYnlNb2R1bGVEYXRhW2ldW2ogKyAzXSAmIDB4MTEpICAgJiYgICAgLy8gsLUgqaYzCisgICAgICAgICAgKG1fYnlNb2R1bGVEYXRhW2ldW2ogKyA0XSAmIDB4MTEpICAgJiYgICAgLy8gsLUgqbwKKyAgICAgICAgICAoIShtX2J5TW9kdWxlRGF0YVtpXVtqICsgNV0gJiAweDExKSkgICYmICAvLyDD9yAtIDEKKyAgICAgICAgICAobV9ieU1vZHVsZURhdGFbaV1baiArIDZdICYgMHgxMSkgICAmJiAgICAvLyCwtSAtIDEKKyAgICAgICAgICAoKGogPT0gbV9uU3ltYmxlU2l6ZSAtIDcpIHx8ICghKG1fYnlNb2R1bGVEYXRhW2ldW2ogKyA3XSAmIDB4MTEpKSkpICAgIC8vIMP3u/K3+7rFzeIKKyAgICAgIHsKKyAgICAgICAgaWYoKChqIDwgMiB8fCAhKG1fYnlNb2R1bGVEYXRhW2ldW2ogLSAyXSAmIDB4MTEpKSAmJgorICAgICAgICAgICAgKGogPCAzIHx8ICEobV9ieU1vZHVsZURhdGFbaV1baiAtIDNdICYgMHgxMSkpICYmCisgICAgICAgICAgICAoaiA8IDQgfHwgIShtX2J5TW9kdWxlRGF0YVtpXVtqIC0gNF0gJiAweDExKSkpIHx8CisgICAgICAgICAgICAoKGogPj0gbV9uU3ltYmxlU2l6ZSAtIDggIHx8ICEobV9ieU1vZHVsZURhdGFbaV1baiArIDhdICAmIDB4MTEpKSAmJgorICAgICAgICAgICAgIChqID49IG1fblN5bWJsZVNpemUgLSA5ICB8fCAhKG1fYnlNb2R1bGVEYXRhW2ldW2ogKyA5XSAgJiAweDExKSkgJiYKKyAgICAgICAgICAgICAoaiA+PSBtX25TeW1ibGVTaXplIC0gMTAgfHwgIShtX2J5TW9kdWxlRGF0YVtpXVtqICsgMTBdICYgMHgxMSkpKSkKKyAgICAgICAgeworICAgICAgICAgIG5QZW5hbHR5ICs9IDQwOworICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9CisKKyAgZm9yKGkgPSAwOyBpIDwgbV9uU3ltYmxlU2l6ZTsgKytpKQorICB7CisgICAgZm9yKGogPSAwOyBqIDwgbV9uU3ltYmxlU2l6ZSAtIDY7ICsraikKKyAgICB7CisgICAgICBpZigoKGogPT0gMCkgfHwgKCEobV9ieU1vZHVsZURhdGFbaiAtIDFdW2ldICYgMHgxMSkpKSAmJiAgICAgICAvLyDD97vyt/u6xc3iCisgICAgICAgICAgKG1fYnlNb2R1bGVEYXRhW2pdICAgIFtpXSAmIDB4MTEpICAgJiYgICAgLy8gsLUgLSAxCisgICAgICAgICAgKCEobV9ieU1vZHVsZURhdGFbaiArIDFdW2ldICYgMHgxMSkpICAmJiAgLy8gw/cgLSAxCisgICAgICAgICAgKG1fYnlNb2R1bGVEYXRhW2ogKyAyXVtpXSAmIDB4MTEpICAgJiYgICAgLy8gsLUgqbQKKyAgICAgICAgICAobV9ieU1vZHVsZURhdGFbaiArIDNdW2ldICYgMHgxMSkgICAmJiAgICAvLyCwtSCppjMKKyAgICAgICAgICAobV9ieU1vZHVsZURhdGFbaiArIDRdW2ldICYgMHgxMSkgICAmJiAgICAvLyCwtSCpvAorICAgICAgICAgICghKG1fYnlNb2R1bGVEYXRhW2ogKyA1XVtpXSAmIDB4MTEpKSAgJiYgIC8vIMP3IC0gMQorICAgICAgICAgIChtX2J5TW9kdWxlRGF0YVtqICsgNl1baV0gJiAweDExKSAgICYmICAgIC8vILC1IC0gMQorICAgICAgICAgICgoaiA9PSBtX25TeW1ibGVTaXplIC0gNykgfHwgKCEobV9ieU1vZHVsZURhdGFbaiArIDddW2ldICYgMHgxMSkpKSkgICAgLy8gw/e78rf7usXN4gorICAgICAgeworICAgICAgICBpZigoKGogPCAyIHx8ICEobV9ieU1vZHVsZURhdGFbaiAtIDJdW2ldICYgMHgxMSkpICYmCisgICAgICAgICAgICAoaiA8IDMgfHwgIShtX2J5TW9kdWxlRGF0YVtqIC0gM11baV0gJiAweDExKSkgJiYKKyAgICAgICAgICAgIChqIDwgNCB8fCAhKG1fYnlNb2R1bGVEYXRhW2ogLSA0XVtpXSAmIDB4MTEpKSkgfHwKKyAgICAgICAgICAgICgoaiA+PSBtX25TeW1ibGVTaXplIC0gOCAgfHwgIShtX2J5TW9kdWxlRGF0YVtqICsgOF1baV0gICYgMHgxMSkpICYmCisgICAgICAgICAgICAgKGogPj0gbV9uU3ltYmxlU2l6ZSAtIDkgIHx8ICEobV9ieU1vZHVsZURhdGFbaiArIDldW2ldICAmIDB4MTEpKSAmJgorICAgICAgICAgICAgIChqID49IG1fblN5bWJsZVNpemUgLSAxMCB8fCAhKG1fYnlNb2R1bGVEYXRhW2ogKyAxMF1baV0gJiAweDExKSkpKQorICAgICAgICB7CisgICAgICAgICAgblBlbmFsdHkgKz0gNDA7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgIH0KKworICBmb3IoaSA9IDA7IGkgPCBtX25TeW1ibGVTaXplOyArK2kpCisgIHsKKyAgICBmb3IoaiA9IDA7IGogPCBtX25TeW1ibGVTaXplOyArK2opCisgICAgeworICAgICAgaWYoIShtX2J5TW9kdWxlRGF0YVtpXVtqXSAmIDB4MTEpKQorICAgICAgeworICAgICAgICArK25Db3VudDsKKyAgICAgIH0KKyAgICB9CisgIH0KKworICBpZigoNTAgLSAoKG5Db3VudCAqIDEwMCkgLyAobV9uU3ltYmxlU2l6ZSAqIG1fblN5bWJsZVNpemUpKSkgPiAwKQorICAgIHNfbkNvdW50ID0gNTAgLSAoKG5Db3VudCAqIDEwMCkgLyAobV9uU3ltYmxlU2l6ZSAqIG1fblN5bWJsZVNpemUpKTsKKyAgZWxzZQorICAgIHNfbkNvdW50ID0gMCAtICg1MCAtICgobkNvdW50ICogMTAwKSAvIChtX25TeW1ibGVTaXplICogbV9uU3ltYmxlU2l6ZSkpKTsKKyAgblBlbmFsdHkgKz0gKHNfbkNvdW50IC8gNSkgKiAxMDsKKworICByZXR1cm4gblBlbmFsdHk7Cit9CisKK3N0YXRpYyBib29sIEVuY29kZVNvdXJjZURhdGEoY2hhciogbHBzU291cmNlLCBpbnQgbmNMZW5ndGgsIGludCBuVmVyR3JvdXApCit7CisgIGludCBpLCBqOworICBpbnQgbmNTcmNCaXRzLCBuY0RzdEJpdHM7CisgIGludCBuQmxvY2sgPSAwOworICBpbnQgbmNDb21wbGV0ZSA9IDA7CisgIFdPUkQgd0JpbkNvZGU7CisKKyAgbWVtc2V0KG1fbkJsb2NrTGVuZ3RoLCAwLCBzaXplb2YobV9uQmxvY2tMZW5ndGgpKTsKKworICBmb3IobV9uY0RhdGFCbG9jayA9IGkgPSAwOyBpIDwgbmNMZW5ndGg7ICsraSkKKyAgeworICAgIEJZVEUgYnlNb2RlOworCisgICAgaWYoSXNOdW1lcmFsRGF0YShscHNTb3VyY2VbaV0pKQorICAgICAgYnlNb2RlID0gUVJfTU9ERV9OVU1FUkFMOworICAgIGVsc2UgaWYoSXNBbHBoYWJldERhdGEobHBzU291cmNlW2ldKSkKKyAgICAgIGJ5TW9kZSA9IFFSX01PREVfQUxQSEFCRVQ7CisgICAgZWxzZQorICAgICAgYnlNb2RlID0gUVJfTU9ERV84QklUOworCisgICAgaWYoaSA9PSAwKQorICAgICAgbV9ieUJsb2NrTW9kZVswXSA9IGJ5TW9kZTsKKworICAgIGlmKG1fYnlCbG9ja01vZGVbbV9uY0RhdGFCbG9ja10gIT0gYnlNb2RlKQorICAgICAgbV9ieUJsb2NrTW9kZVsrK21fbmNEYXRhQmxvY2tdID0gYnlNb2RlOworCisgICAgKyttX25CbG9ja0xlbmd0aFttX25jRGF0YUJsb2NrXTsKKyAgfQorCisgICsrbV9uY0RhdGFCbG9jazsKKworICB3aGlsZShuQmxvY2sgPCBtX25jRGF0YUJsb2NrIC0gMSkKKyAgeworICAgIGludCBuY0pvaW5Gcm9udCwgbmNKb2luQmVoaW5kOworICAgIGludCBuSm9pblBvc2l0aW9uID0gMDsKKworICAgIGlmKChtX2J5QmxvY2tNb2RlW25CbG9ja10gPT0gUVJfTU9ERV9OVU1FUkFMCisgICAgICAgICYmIG1fYnlCbG9ja01vZGVbbkJsb2NrICsgMV0gPT0gUVJfTU9ERV9BTFBIQUJFVCkgfHwKKyAgICAgICAgKG1fYnlCbG9ja01vZGVbbkJsb2NrXSA9PSBRUl9NT0RFX0FMUEhBQkVUCisgICAgICAgICAmJiBtX2J5QmxvY2tNb2RlW25CbG9jayArIDFdID09IFFSX01PREVfTlVNRVJBTCkpCisgICAgeworICAgICAgbmNTcmNCaXRzID0gR2V0Qml0TGVuZ3RoKG1fYnlCbG9ja01vZGVbbkJsb2NrXSwgbV9uQmxvY2tMZW5ndGhbbkJsb2NrXSwgblZlckdyb3VwKSArCisgICAgICAgICAgICAgICAgICBHZXRCaXRMZW5ndGgobV9ieUJsb2NrTW9kZVtuQmxvY2sgKyAxXSwgbV9uQmxvY2tMZW5ndGhbbkJsb2NrICsgMV0sIG5WZXJHcm91cCk7CisKKyAgICAgIG5jRHN0Qml0cyA9IEdldEJpdExlbmd0aChRUl9NT0RFX0FMUEhBQkVULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbkJsb2NrTGVuZ3RoW25CbG9ja10gKyBtX25CbG9ja0xlbmd0aFtuQmxvY2sgKyAxXSwgblZlckdyb3VwKTsKKworICAgICAgaWYobmNTcmNCaXRzID4gbmNEc3RCaXRzKQorICAgICAgeworICAgICAgICBpZihuQmxvY2sgPj0gMSAmJiBtX2J5QmxvY2tNb2RlW25CbG9jayAtIDFdID09IFFSX01PREVfOEJJVCkKKyAgICAgICAgeworICAgICAgICAgIG5jSm9pbkZyb250ID0gR2V0Qml0TGVuZ3RoKFFSX01PREVfOEJJVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX25CbG9ja0xlbmd0aFtuQmxvY2sgLSAxXSArIG1fbkJsb2NrTGVuZ3RoW25CbG9ja10sIG5WZXJHcm91cCkgKworICAgICAgICAgICAgICAgICAgICAgICAgR2V0Qml0TGVuZ3RoKG1fYnlCbG9ja01vZGVbbkJsb2NrICsgMV0sIG1fbkJsb2NrTGVuZ3RoW25CbG9jayArIDFdLCBuVmVyR3JvdXApOworCisgICAgICAgICAgaWYobmNKb2luRnJvbnQgPiBuY0RzdEJpdHMgKyBHZXRCaXRMZW5ndGgoUVJfTU9ERV84QklULCBtX25CbG9ja0xlbmd0aFtuQmxvY2sgLSAxXSwKKyAgICAgICAgICAgICAgblZlckdyb3VwKSkKKyAgICAgICAgICAgIG5jSm9pbkZyb250ID0gMDsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgbmNKb2luRnJvbnQgPSAwOworCisgICAgICAgIGlmKG5CbG9jayA8IG1fbmNEYXRhQmxvY2sgLSAyICYmIG1fYnlCbG9ja01vZGVbbkJsb2NrICsgMl0gPT0gUVJfTU9ERV84QklUKQorICAgICAgICB7CisgICAgICAgICAgbmNKb2luQmVoaW5kID0gR2V0Qml0TGVuZ3RoKG1fYnlCbG9ja01vZGVbbkJsb2NrXSwgbV9uQmxvY2tMZW5ndGhbbkJsb2NrXSwgblZlckdyb3VwKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgR2V0Qml0TGVuZ3RoKFFSX01PREVfOEJJVCwgbV9uQmxvY2tMZW5ndGhbbkJsb2NrICsgMV0gKyBtX25CbG9ja0xlbmd0aFtuQmxvY2sgKyAyXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgblZlckdyb3VwKTsKKworICAgICAgICAgIGlmKG5jSm9pbkJlaGluZCA+IG5jRHN0Qml0cyArIEdldEJpdExlbmd0aChRUl9NT0RFXzhCSVQsIG1fbkJsb2NrTGVuZ3RoW25CbG9jayArIDJdLAorICAgICAgICAgICAgICBuVmVyR3JvdXApKQorICAgICAgICAgICAgbmNKb2luQmVoaW5kID0gMDsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgbmNKb2luQmVoaW5kID0gMDsKKworICAgICAgICBpZihuY0pvaW5Gcm9udCAhPSAwICYmIG5jSm9pbkJlaGluZCAhPSAwKQorICAgICAgICB7CisgICAgICAgICAgbkpvaW5Qb3NpdGlvbiA9IChuY0pvaW5Gcm9udCA8IG5jSm9pbkJlaGluZCkgPyAtMSA6IDE7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgbkpvaW5Qb3NpdGlvbiA9IChuY0pvaW5Gcm9udCAhPSAwKSA/IC0xIDogKChuY0pvaW5CZWhpbmQgIT0gMCkgPyAxIDogMCk7CisgICAgICAgIH0KKworICAgICAgICBpZihuSm9pblBvc2l0aW9uICE9IDApCisgICAgICAgIHsKKyAgICAgICAgICBpZihuSm9pblBvc2l0aW9uID09IC0xKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIG1fbkJsb2NrTGVuZ3RoW25CbG9jayAtIDFdICs9IG1fbkJsb2NrTGVuZ3RoW25CbG9ja107CisKKyAgICAgICAgICAgIGZvcihpID0gbkJsb2NrOyBpIDwgbV9uY0RhdGFCbG9jayAtIDE7ICsraSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgbV9ieUJsb2NrTW9kZVtpXSAgPSBtX2J5QmxvY2tNb2RlW2kgKyAxXTsKKyAgICAgICAgICAgICAgbV9uQmxvY2tMZW5ndGhbaV0gPSBtX25CbG9ja0xlbmd0aFtpICsgMV07CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UKKyAgICAgICAgICB7CisgICAgICAgICAgICBtX2J5QmxvY2tNb2RlW25CbG9jayArIDFdID0gUVJfTU9ERV84QklUOworICAgICAgICAgICAgbV9uQmxvY2tMZW5ndGhbbkJsb2NrICsgMV0gKz0gbV9uQmxvY2tMZW5ndGhbbkJsb2NrICsgMl07CisKKyAgICAgICAgICAgIGZvcihpID0gbkJsb2NrICsgMjsgaSA8IG1fbmNEYXRhQmxvY2sgLSAxOyArK2kpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIG1fYnlCbG9ja01vZGVbaV0gID0gbV9ieUJsb2NrTW9kZVtpICsgMV07CisgICAgICAgICAgICAgIG1fbkJsb2NrTGVuZ3RoW2ldID0gbV9uQmxvY2tMZW5ndGhbaSArIDFdOworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKworICAgICAgICAgIC0tbV9uY0RhdGFCbG9jazsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICBpZihuQmxvY2sgPCBtX25jRGF0YUJsb2NrIC0gMiAmJiBtX2J5QmxvY2tNb2RlW25CbG9jayArIDJdID09IFFSX01PREVfQUxQSEFCRVQpCisgICAgICAgICAgeworICAgICAgICAgICAgbV9uQmxvY2tMZW5ndGhbbkJsb2NrICsgMV0gKz0gbV9uQmxvY2tMZW5ndGhbbkJsb2NrICsgMl07CisKKyAgICAgICAgICAgIGZvcihpID0gbkJsb2NrICsgMjsgaSA8IG1fbmNEYXRhQmxvY2sgLSAxOyArK2kpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIG1fYnlCbG9ja01vZGVbaV0gID0gbV9ieUJsb2NrTW9kZVtpICsgMV07CisgICAgICAgICAgICAgIG1fbkJsb2NrTGVuZ3RoW2ldID0gbV9uQmxvY2tMZW5ndGhbaSArIDFdOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAtLW1fbmNEYXRhQmxvY2s7CisgICAgICAgICAgfQorCisgICAgICAgICAgbV9ieUJsb2NrTW9kZVtuQmxvY2tdID0gUVJfTU9ERV9BTFBIQUJFVDsKKyAgICAgICAgICBtX25CbG9ja0xlbmd0aFtuQmxvY2tdICs9IG1fbkJsb2NrTGVuZ3RoW25CbG9jayArIDFdOworCisgICAgICAgICAgZm9yKGkgPSBuQmxvY2sgKyAxOyBpIDwgbV9uY0RhdGFCbG9jayAtIDE7ICsraSkKKyAgICAgICAgICB7CisgICAgICAgICAgICBtX2J5QmxvY2tNb2RlW2ldICA9IG1fYnlCbG9ja01vZGVbaSArIDFdOworICAgICAgICAgICAgbV9uQmxvY2tMZW5ndGhbaV0gPSBtX25CbG9ja0xlbmd0aFtpICsgMV07CisgICAgICAgICAgfQorCisgICAgICAgICAgLS1tX25jRGF0YUJsb2NrOworCisgICAgICAgICAgaWYobkJsb2NrID49IDEgJiYgbV9ieUJsb2NrTW9kZVtuQmxvY2sgLSAxXSA9PSBRUl9NT0RFX0FMUEhBQkVUKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIG1fbkJsb2NrTGVuZ3RoW25CbG9jayAtIDFdICs9IG1fbkJsb2NrTGVuZ3RoW25CbG9ja107CisKKyAgICAgICAgICAgIGZvcihpID0gbkJsb2NrOyBpIDwgbV9uY0RhdGFCbG9jayAtIDE7ICsraSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgbV9ieUJsb2NrTW9kZVtpXSAgPSBtX2J5QmxvY2tNb2RlW2kgKyAxXTsKKyAgICAgICAgICAgICAgbV9uQmxvY2tMZW5ndGhbaV0gPSBtX25CbG9ja0xlbmd0aFtpICsgMV07CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC0tbV9uY0RhdGFCbG9jazsKKyAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBjb250aW51ZTsKKyAgICAgIH0KKyAgICB9CisKKyAgICArK25CbG9jazsKKyAgfQorCisgIG5CbG9jayA9IDA7CisKKyAgd2hpbGUobkJsb2NrIDwgbV9uY0RhdGFCbG9jayAtIDEpCisgIHsKKyAgICBuY1NyY0JpdHMgPSBHZXRCaXRMZW5ndGgobV9ieUJsb2NrTW9kZVtuQmxvY2tdLCBtX25CbG9ja0xlbmd0aFtuQmxvY2tdLCBuVmVyR3JvdXApCisgICAgICAgICAgICAgICAgKyBHZXRCaXRMZW5ndGgobV9ieUJsb2NrTW9kZVtuQmxvY2sgKyAxXSwgbV9uQmxvY2tMZW5ndGhbbkJsb2NrICsgMV0sIG5WZXJHcm91cCk7CisKKyAgICBuY0RzdEJpdHMgPSBHZXRCaXRMZW5ndGgoUVJfTU9ERV84QklULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX25CbG9ja0xlbmd0aFtuQmxvY2tdICsgbV9uQmxvY2tMZW5ndGhbbkJsb2NrICsgMV0sIG5WZXJHcm91cCk7CisKKyAgICBpZihuQmxvY2sgPj0gMSAmJiBtX2J5QmxvY2tNb2RlW25CbG9jayAtIDFdID09IFFSX01PREVfOEJJVCkKKyAgICAgIG5jRHN0Qml0cyAtPSAoNCArIG5JbmRpY2F0b3JMZW44Qml0W25WZXJHcm91cF0pOworCisgICAgaWYobkJsb2NrIDwgbV9uY0RhdGFCbG9jayAtIDIgJiYgbV9ieUJsb2NrTW9kZVtuQmxvY2sgKyAyXSA9PSBRUl9NT0RFXzhCSVQpCisgICAgICBuY0RzdEJpdHMgLT0gKDQgKyBuSW5kaWNhdG9yTGVuOEJpdFtuVmVyR3JvdXBdKTsKKworICAgIGlmKG5jU3JjQml0cyA+IG5jRHN0Qml0cykKKyAgICB7CisgICAgICBpZihuQmxvY2sgPj0gMSAmJiBtX2J5QmxvY2tNb2RlW25CbG9jayAtIDFdID09IFFSX01PREVfOEJJVCkKKyAgICAgIHsKKyAgICAgICAgbV9uQmxvY2tMZW5ndGhbbkJsb2NrIC0gMV0gKz0gbV9uQmxvY2tMZW5ndGhbbkJsb2NrXTsKKworICAgICAgICBmb3IoaSA9IG5CbG9jazsgaSA8IG1fbmNEYXRhQmxvY2sgLSAxOyArK2kpCisgICAgICAgIHsKKyAgICAgICAgICBtX2J5QmxvY2tNb2RlW2ldICA9IG1fYnlCbG9ja01vZGVbaSArIDFdOworICAgICAgICAgIG1fbkJsb2NrTGVuZ3RoW2ldID0gbV9uQmxvY2tMZW5ndGhbaSArIDFdOworICAgICAgICB9CisKKyAgICAgICAgLS1tX25jRGF0YUJsb2NrOworICAgICAgICAtLW5CbG9jazsKKyAgICAgIH0KKworICAgICAgaWYobkJsb2NrIDwgbV9uY0RhdGFCbG9jayAtIDIgJiYgbV9ieUJsb2NrTW9kZVtuQmxvY2sgKyAyXSA9PSBRUl9NT0RFXzhCSVQpCisgICAgICB7CisgICAgICAgIG1fbkJsb2NrTGVuZ3RoW25CbG9jayArIDFdICs9IG1fbkJsb2NrTGVuZ3RoW25CbG9jayArIDJdOworCisgICAgICAgIGZvcihpID0gbkJsb2NrICsgMjsgaSA8IG1fbmNEYXRhQmxvY2sgLSAxOyArK2kpCisgICAgICAgIHsKKyAgICAgICAgICBtX2J5QmxvY2tNb2RlW2ldICA9IG1fYnlCbG9ja01vZGVbaSArIDFdOworICAgICAgICAgIG1fbkJsb2NrTGVuZ3RoW2ldID0gbV9uQmxvY2tMZW5ndGhbaSArIDFdOworICAgICAgICB9CisKKyAgICAgICAgLS1tX25jRGF0YUJsb2NrOworICAgICAgfQorCisgICAgICBtX2J5QmxvY2tNb2RlW25CbG9ja10gPSBRUl9NT0RFXzhCSVQ7CisgICAgICBtX25CbG9ja0xlbmd0aFtuQmxvY2tdICs9IG1fbkJsb2NrTGVuZ3RoW25CbG9jayArIDFdOworCisgICAgICBmb3IoaSA9IG5CbG9jayArIDE7IGkgPCBtX25jRGF0YUJsb2NrIC0gMTsgKytpKQorICAgICAgeworICAgICAgICBtX2J5QmxvY2tNb2RlW2ldICA9IG1fYnlCbG9ja01vZGVbaSArIDFdOworICAgICAgICBtX25CbG9ja0xlbmd0aFtpXSA9IG1fbkJsb2NrTGVuZ3RoW2kgKyAxXTsKKyAgICAgIH0KKworICAgICAgLS1tX25jRGF0YUJsb2NrOworCisgICAgICBpZihuQmxvY2sgPj0gMSkKKyAgICAgICAgLS1uQmxvY2s7CisKKyAgICAgIGNvbnRpbnVlOworICAgIH0KKworICAgICsrbkJsb2NrOworICB9CisKKyAgbV9uY0RhdGFDb2RlV29yZEJpdCA9IDA7CisKKyAgbWVtc2V0KG1fYnlEYXRhQ29kZVdvcmQsIDAsIE1BWF9EQVRBQ09ERVdPUkQpOworCisgIGZvcihpID0gMDsgaSA8IG1fbmNEYXRhQmxvY2sgJiYgbV9uY0RhdGFDb2RlV29yZEJpdCAhPSAtMTsgKytpKQorICB7CisgICAgaWYobV9ieUJsb2NrTW9kZVtpXSA9PSBRUl9NT0RFX05VTUVSQUwpCisgICAgeworICAgICAgbV9uY0RhdGFDb2RlV29yZEJpdCA9IFNldEJpdFN0cmVhbShtX25jRGF0YUNvZGVXb3JkQml0LCAxLCA0KTsKKworICAgICAgbV9uY0RhdGFDb2RlV29yZEJpdCA9IFNldEJpdFN0cmVhbShtX25jRGF0YUNvZGVXb3JkQml0LCAoV09SRCltX25CbG9ja0xlbmd0aFtpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbkluZGljYXRvckxlbk51bWVyYWxbblZlckdyb3VwXSk7CisKKyAgICAgIGZvcihqID0gMDsgaiA8IG1fbkJsb2NrTGVuZ3RoW2ldOyBqICs9IDMpCisgICAgICB7CisgICAgICAgIGlmKGogPCBtX25CbG9ja0xlbmd0aFtpXSAtIDIpCisgICAgICAgIHsKKyAgICAgICAgICB3QmluQ29kZSA9IChXT1JEKSgoKGxwc1NvdXJjZVtuY0NvbXBsZXRlICsgal0JICAtICcwJykgKiAxMDApICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGxwc1NvdXJjZVtuY0NvbXBsZXRlICsgaiArIDFdIC0gJzAnKSAqIDEwKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxwc1NvdXJjZVtuY0NvbXBsZXRlICsgaiArIDJdIC0gJzAnKSk7CisKKyAgICAgICAgICBtX25jRGF0YUNvZGVXb3JkQml0ID0gU2V0Qml0U3RyZWFtKG1fbmNEYXRhQ29kZVdvcmRCaXQsIHdCaW5Db2RlLCAxMCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZihqID09IG1fbkJsb2NrTGVuZ3RoW2ldIC0gMikKKyAgICAgICAgeworICAgICAgICAgIHdCaW5Db2RlID0gKFdPUkQpKCgobHBzU291cmNlW25jQ29tcGxldGUgKyBqXSAtICcwJykgKiAxMCkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIChscHNTb3VyY2VbbmNDb21wbGV0ZSArIGogKyAxXSAtICcwJykpOworCisgICAgICAgICAgbV9uY0RhdGFDb2RlV29yZEJpdCA9IFNldEJpdFN0cmVhbShtX25jRGF0YUNvZGVXb3JkQml0LCB3QmluQ29kZSwgNyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZihqID09IG1fbkJsb2NrTGVuZ3RoW2ldIC0gMSkKKyAgICAgICAgeworICAgICAgICAgIHdCaW5Db2RlID0gKFdPUkQpKGxwc1NvdXJjZVtuY0NvbXBsZXRlICsgal0gLSAnMCcpOworCisgICAgICAgICAgbV9uY0RhdGFDb2RlV29yZEJpdCA9IFNldEJpdFN0cmVhbShtX25jRGF0YUNvZGVXb3JkQml0LCB3QmluQ29kZSwgNCk7CisgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgbmNDb21wbGV0ZSArPSBtX25CbG9ja0xlbmd0aFtpXTsKKyAgICB9CisKKyAgICBlbHNlIGlmKG1fYnlCbG9ja01vZGVbaV0gPT0gUVJfTU9ERV9BTFBIQUJFVCkKKyAgICB7CisgICAgICBtX25jRGF0YUNvZGVXb3JkQml0ID0gU2V0Qml0U3RyZWFtKG1fbmNEYXRhQ29kZVdvcmRCaXQsIDIsIDQpOworCisgICAgICBtX25jRGF0YUNvZGVXb3JkQml0ID0gU2V0Qml0U3RyZWFtKG1fbmNEYXRhQ29kZVdvcmRCaXQsIChXT1JEKW1fbkJsb2NrTGVuZ3RoW2ldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuSW5kaWNhdG9yTGVuQWxwaGFiZXRbblZlckdyb3VwXSk7CisKKyAgICAgIGZvcihqID0gMDsgaiA8IG1fbkJsb2NrTGVuZ3RoW2ldOyBqICs9IDIpCisgICAgICB7CisgICAgICAgIGlmKGogPCBtX25CbG9ja0xlbmd0aFtpXSAtIDEpCisgICAgICAgIHsKKyAgICAgICAgICB3QmluQ29kZSA9IChXT1JEKSgoQWxwaGFiZXRUb0JpbmFseShscHNTb3VyY2VbbmNDb21wbGV0ZSArIGpdKSAqIDQ1KSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxwaGFiZXRUb0JpbmFseShscHNTb3VyY2VbbmNDb21wbGV0ZSArIGogKyAxXSkpOworCisgICAgICAgICAgbV9uY0RhdGFDb2RlV29yZEJpdCA9IFNldEJpdFN0cmVhbShtX25jRGF0YUNvZGVXb3JkQml0LCB3QmluQ29kZSwgMTEpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgIHdCaW5Db2RlID0gKFdPUkQpQWxwaGFiZXRUb0JpbmFseShscHNTb3VyY2VbbmNDb21wbGV0ZSArIGpdKTsKKworICAgICAgICAgIG1fbmNEYXRhQ29kZVdvcmRCaXQgPSBTZXRCaXRTdHJlYW0obV9uY0RhdGFDb2RlV29yZEJpdCwgd0JpbkNvZGUsIDYpOworICAgICAgICB9CisgICAgICB9CisKKyAgICAgIG5jQ29tcGxldGUgKz0gbV9uQmxvY2tMZW5ndGhbaV07CisgICAgfQorCisgICAgZWxzZSBpZihtX2J5QmxvY2tNb2RlW2ldID09IFFSX01PREVfOEJJVCkKKyAgICB7CisgICAgICBtX25jRGF0YUNvZGVXb3JkQml0ID0gU2V0Qml0U3RyZWFtKG1fbmNEYXRhQ29kZVdvcmRCaXQsIDQsIDQpOworCisgICAgICBtX25jRGF0YUNvZGVXb3JkQml0ID0gU2V0Qml0U3RyZWFtKG1fbmNEYXRhQ29kZVdvcmRCaXQsIChXT1JEKW1fbkJsb2NrTGVuZ3RoW2ldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuSW5kaWNhdG9yTGVuOEJpdFtuVmVyR3JvdXBdKTsKKworICAgICAgZm9yKGogPSAwOyBqIDwgbV9uQmxvY2tMZW5ndGhbaV07ICsraikKKyAgICAgIHsKKyAgICAgICAgbV9uY0RhdGFDb2RlV29yZEJpdCA9IFNldEJpdFN0cmVhbShtX25jRGF0YUNvZGVXb3JkQml0LCAoV09SRClscHNTb3VyY2VbbmNDb21wbGV0ZSArIGpdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgpOworICAgICAgfQorCisgICAgICBuY0NvbXBsZXRlICs9IG1fbkJsb2NrTGVuZ3RoW2ldOworICAgIH0KKyAgfQorCisgIHJldHVybiAoYm9vbCkobV9uY0RhdGFDb2RlV29yZEJpdCAhPSAtMSk7Cit9CisKK3N0YXRpYyBpbnQgR2V0RW5jb2RlVmVyc2lvbihpbnQgblZlcnNpb24sIGNoYXIqIGxwc1NvdXJjZSwgaW50IG5jTGVuZ3RoKQoreworICBpbnQgblZlckdyb3VwID0gblZlcnNpb24gPj0gMjcgPyBRUl9WUkVTSU9OX0wgOiAoblZlcnNpb24gPj0gMTAgPyBRUl9WUkVTSU9OX00gOgorICAgICAgICAgICAgICAgICAgUVJfVlJFU0lPTl9TKTsKKyAgaW50IGksIGo7CisKKyAgZm9yKGkgPSBuVmVyR3JvdXA7IGkgPD0gUVJfVlJFU0lPTl9MOyArK2kpCisgIHsKKyAgICBpZihFbmNvZGVTb3VyY2VEYXRhKGxwc1NvdXJjZSwgbmNMZW5ndGgsIGkpKQorICAgIHsKKyAgICAgIGlmKGkgPT0gUVJfVlJFU0lPTl9TKQorICAgICAgeworICAgICAgICBmb3IoaiA9IDE7IGogPD0gOTsgKytqKQorICAgICAgICB7CisgICAgICAgICAgaWYoKG1fbmNEYXRhQ29kZVdvcmRCaXQgKyA3KSAvIDggPD0gUVJfVmVyc29uSW5mb1tqXS5uY0RhdGFDb2RlV29yZFttX25MZXZlbF0pCisgICAgICAgICAgICByZXR1cm4gajsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZSBpZihpID09IFFSX1ZSRVNJT05fTSkKKyAgICAgIHsKKyAgICAgICAgZm9yKGogPSAxMDsgaiA8PSAyNjsgKytqKQorICAgICAgICB7CisgICAgICAgICAgaWYoKG1fbmNEYXRhQ29kZVdvcmRCaXQgKyA3KSAvIDggPD0gUVJfVmVyc29uSW5mb1tqXS5uY0RhdGFDb2RlV29yZFttX25MZXZlbF0pCisgICAgICAgICAgICByZXR1cm4gajsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZSBpZihpID09IFFSX1ZSRVNJT05fTCkKKyAgICAgIHsKKyAgICAgICAgZm9yKGogPSAyNzsgaiA8PSA0MDsgKytqKQorICAgICAgICB7CisgICAgICAgICAgaWYoKG1fbmNEYXRhQ29kZVdvcmRCaXQgKyA3KSAvIDggPD0gUVJfVmVyc29uSW5mb1tqXS5uY0RhdGFDb2RlV29yZFttX25MZXZlbF0pCisgICAgICAgICAgICByZXR1cm4gajsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfQorICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgU2V0RnVuY3Rpb25Nb2R1bGUodm9pZCkKK3sKKyAgaW50IGksIGo7CisKKyAgU2V0RmluZGVyUGF0dGVybigwLCAwKTsKKyAgU2V0RmluZGVyUGF0dGVybihtX25TeW1ibGVTaXplIC0gNywgMCk7CisgIFNldEZpbmRlclBhdHRlcm4oMCwgbV9uU3ltYmxlU2l6ZSAtIDcpOworCisgIGZvcihpID0gMDsgaSA8IDg7ICsraSkKKyAgeworICAgIG1fYnlNb2R1bGVEYXRhW2ldWzddID0gbV9ieU1vZHVsZURhdGFbN11baV0gPSAnXHgyMCc7CisgICAgbV9ieU1vZHVsZURhdGFbbV9uU3ltYmxlU2l6ZSAtIDhdW2ldID0gbV9ieU1vZHVsZURhdGFbbV9uU3ltYmxlU2l6ZSAtIDggKyBpXVs3XSA9ICdceDIwJzsKKyAgICBtX2J5TW9kdWxlRGF0YVtpXVttX25TeW1ibGVTaXplIC0gOF0gPSBtX2J5TW9kdWxlRGF0YVs3XVttX25TeW1ibGVTaXplIC0gOCArIGldID0gJ1x4MjAnOworICB9CisKKyAgZm9yKGkgPSAwOyBpIDwgOTsgKytpKQorICB7CisgICAgbV9ieU1vZHVsZURhdGFbaV1bOF0gPSBtX2J5TW9kdWxlRGF0YVs4XVtpXSA9ICdceDIwJzsKKyAgfQorCisgIGZvcihpID0gMDsgaSA8IDg7ICsraSkKKyAgeworICAgIG1fYnlNb2R1bGVEYXRhW21fblN5bWJsZVNpemUgLSA4ICsgaV1bOF0gPSBtX2J5TW9kdWxlRGF0YVs4XVttX25TeW1ibGVTaXplIC0gOCArIGldID0KKyAgICAgICAgICAnXHgyMCc7CisgIH0KKworICBTZXRWZXJzaW9uUGF0dGVybigpOworCisgIGZvcihpID0gMDsgaSA8IFFSX1ZlcnNvbkluZm9bbV9uVmVyc2lvbl0ubmNBbGlnblBvaW50OyArK2kpCisgIHsKKyAgICBTZXRBbGlnbm1lbnRQYXR0ZXJuKFFSX1ZlcnNvbkluZm9bbV9uVmVyc2lvbl0ubkFsaWduUG9pbnRbaV0sIDYpOworICAgIFNldEFsaWdubWVudFBhdHRlcm4oNiwgUVJfVmVyc29uSW5mb1ttX25WZXJzaW9uXS5uQWxpZ25Qb2ludFtpXSk7CisKKyAgICBmb3IoaiA9IDA7IGogPCBRUl9WZXJzb25JbmZvW21fblZlcnNpb25dLm5jQWxpZ25Qb2ludDsgKytqKQorICAgIHsKKyAgICAgIFNldEFsaWdubWVudFBhdHRlcm4oUVJfVmVyc29uSW5mb1ttX25WZXJzaW9uXS5uQWxpZ25Qb2ludFtpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUVJfVmVyc29uSW5mb1ttX25WZXJzaW9uXS5uQWxpZ25Qb2ludFtqXSk7CisgICAgfQorICB9CisKKyAgZm9yKGkgPSA4OyBpIDw9IG1fblN5bWJsZVNpemUgLSA5OyArK2kpCisgIHsKKyAgICBtX2J5TW9kdWxlRGF0YVtpXVs2XSA9IChpICUgMikgPT0gMCA/ICdceDMwJyA6ICdceDIwJzsKKyAgICBtX2J5TW9kdWxlRGF0YVs2XVtpXSA9IChpICUgMikgPT0gMCA/ICdceDMwJyA6ICdceDIwJzsKKyAgfQorfQorCitzdGF0aWMgdm9pZCBGb3JtYXRNb2R1bGUodm9pZCkKK3sKKyAgaW50IGksIGo7CisgIGludCBuTWluUGVuYWx0eSwgblBlbmFsdHk7CisKKyAgbWVtc2V0KG1fYnlNb2R1bGVEYXRhLCAwLCBzaXplb2YobV9ieU1vZHVsZURhdGEpKTsKKworICBTZXRGdW5jdGlvbk1vZHVsZSgpOworCisgIFNldENvZGVXb3JkUGF0dGVybigpOworCisgIGlmKG1fbk1hc2tpbmdObyA9PSAtMSkKKyAgeworICAgIG1fbk1hc2tpbmdObyA9IDA7CisKKyAgICBTZXRNYXNraW5nUGF0dGVybihtX25NYXNraW5nTm8pOworICAgIFNldEZvcm1hdEluZm9QYXR0ZXJuKG1fbk1hc2tpbmdObyk7CisKKyAgICBuTWluUGVuYWx0eSA9IENvdW50UGVuYWx0eSgpOworCisgICAgZm9yKGkgPSAxOyBpIDw9IDc7ICsraSkKKyAgICB7CisgICAgICBTZXRNYXNraW5nUGF0dGVybihpKTsKKyAgICAgIFNldEZvcm1hdEluZm9QYXR0ZXJuKGkpOworCisgICAgICBuUGVuYWx0eSA9IENvdW50UGVuYWx0eSgpOworCisgICAgICBpZihuUGVuYWx0eSA8IG5NaW5QZW5hbHR5KQorICAgICAgeworICAgICAgICBuTWluUGVuYWx0eSA9IG5QZW5hbHR5OworICAgICAgICBtX25NYXNraW5nTm8gPSBpOworICAgICAgfQorICAgIH0KKyAgfQorCisgIFNldE1hc2tpbmdQYXR0ZXJuKG1fbk1hc2tpbmdObyk7CisgIFNldEZvcm1hdEluZm9QYXR0ZXJuKG1fbk1hc2tpbmdObyk7CisKKyAgZm9yKGkgPSAwOyBpIDwgbV9uU3ltYmxlU2l6ZTsgKytpKQorICB7CisgICAgZm9yKGogPSAwOyBqIDwgbV9uU3ltYmxlU2l6ZTsgKytqKQorICAgIHsKKyAgICAgIG1fYnlNb2R1bGVEYXRhW2ldW2pdID0gKEJZVEUpKChtX2J5TW9kdWxlRGF0YVtpXVtqXSAmIDB4MTEpICE9IDApOworICAgIH0KKyAgfQorfQorCitpbnQgUVJlbmNvZGUoY2hhciogbHBzU291cmNlLCBjaGFyKiBxcikKK3sKKyAgaW50IGksIGosIG5WZXJzaW9uPTIsIGJBdXRvRXh0ZW50PTE7CisgIGludCBuY0xlbmd0aCwgbkVuY29kZVZlcnNpb24sIG5jRGF0YUNvZGVXb3JkLCBuY1Rlcm1pbmF0ZXI7CisgIEJZVEUgYnlQYWRkaW5nQ29kZSA9IDB4ZWM7CisgIGludCBuRGF0YUN3SW5kZXggPSAwLCBuY0Jsb2NrMSwgbmNCbG9jazIsIG5jQmxvY2tTdW07CisgIGludCBuQmxvY2tObyA9IDAsIG5jRGF0YUN3MSwgbmNEYXRhQ3cyOworICBpbnQgbmNSU0N3MSwgbmNSU0N3MjsKKworICBtX25MZXZlbCA9IFFSX0xFVkVMX007CisgIG1fbk1hc2tpbmdObyA9IDA7CisKKyAgbmNMZW5ndGggPSBzdHJsZW4obHBzU291cmNlKTsKKyAgaWYobmNMZW5ndGggPT0gMCkKKyAgICByZXR1cm4gLTE7CisKKyAgbkVuY29kZVZlcnNpb24gPSBHZXRFbmNvZGVWZXJzaW9uKG5WZXJzaW9uLCBscHNTb3VyY2UsIG5jTGVuZ3RoKTsKKyAgaWYobkVuY29kZVZlcnNpb24gPT0gMCkKKyAgICByZXR1cm4gLTE7CisKKyAgaWYoblZlcnNpb24gPT0gMCkKKyAgeworICAgIG1fblZlcnNpb24gPSBuRW5jb2RlVmVyc2lvbjsKKyAgfQorICBlbHNlCisgIHsKKyAgICBpZihuRW5jb2RlVmVyc2lvbiA8PSBuVmVyc2lvbikKKyAgICB7CisgICAgICBtX25WZXJzaW9uID0gblZlcnNpb247CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICBpZihiQXV0b0V4dGVudCkKKyAgICAgICAgbV9uVmVyc2lvbiA9IG5FbmNvZGVWZXJzaW9uOworICAgICAgZWxzZQorICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICB9CisKKyAgbmNEYXRhQ29kZVdvcmQgPSBRUl9WZXJzb25JbmZvW21fblZlcnNpb25dLm5jRGF0YUNvZGVXb3JkW21fbkxldmVsXTsKKworICBuY1Rlcm1pbmF0ZXIgPSBtaW4oNCwgKG5jRGF0YUNvZGVXb3JkICogOCkgLSBtX25jRGF0YUNvZGVXb3JkQml0KTsKKworICBpZihuY1Rlcm1pbmF0ZXIgPiAwKQorICAgIG1fbmNEYXRhQ29kZVdvcmRCaXQgPSBTZXRCaXRTdHJlYW0obV9uY0RhdGFDb2RlV29yZEJpdCwgMCwgbmNUZXJtaW5hdGVyKTsKKworICBmb3IoaSA9IChtX25jRGF0YUNvZGVXb3JkQml0ICsgNykgLyA4OyBpIDwgbmNEYXRhQ29kZVdvcmQ7ICsraSkKKyAgeworICAgIG1fYnlEYXRhQ29kZVdvcmRbaV0gPSBieVBhZGRpbmdDb2RlOworCisgICAgYnlQYWRkaW5nQ29kZSA9IChCWVRFKShieVBhZGRpbmdDb2RlID09IDB4ZWMgPyAweDExIDogMHhlYyk7CisgIH0KKworICBtX25jQWxsQ29kZVdvcmQgPSBRUl9WZXJzb25JbmZvW21fblZlcnNpb25dLm5jQWxsQ29kZVdvcmQ7CisgIG1lbXNldChtX2J5QWxsQ29kZVdvcmQsIDAsIG1fbmNBbGxDb2RlV29yZCk7CisKKyAgbmNCbG9jazEgPSBRUl9WZXJzb25JbmZvW21fblZlcnNpb25dLlJTX0Jsb2NrSW5mbzFbbV9uTGV2ZWxdLm5jUlNCbG9jazsKKyAgbmNCbG9jazIgPSBRUl9WZXJzb25JbmZvW21fblZlcnNpb25dLlJTX0Jsb2NrSW5mbzJbbV9uTGV2ZWxdLm5jUlNCbG9jazsKKyAgbmNCbG9ja1N1bSA9IG5jQmxvY2sxICsgbmNCbG9jazI7CisKKyAgbmNEYXRhQ3cxID0gUVJfVmVyc29uSW5mb1ttX25WZXJzaW9uXS5SU19CbG9ja0luZm8xW21fbkxldmVsXS5uY0RhdGFDb2RlV29yZDsKKyAgbmNEYXRhQ3cyID0gUVJfVmVyc29uSW5mb1ttX25WZXJzaW9uXS5SU19CbG9ja0luZm8yW21fbkxldmVsXS5uY0RhdGFDb2RlV29yZDsKKworICBmb3IoaSA9IDA7IGkgPCBuY0Jsb2NrMTsgKytpKQorICB7CisgICAgZm9yKGogPSAwOyBqIDwgbmNEYXRhQ3cxOyArK2opCisgICAgeworICAgICAgbV9ieUFsbENvZGVXb3JkWyhuY0Jsb2NrU3VtICogaikgKyBuQmxvY2tOb10gPSBtX2J5RGF0YUNvZGVXb3JkW25EYXRhQ3dJbmRleCsrXTsKKyAgICB9CisKKyAgICArK25CbG9ja05vOworICB9CisKKyAgZm9yKGkgPSAwOyBpIDwgbmNCbG9jazI7ICsraSkKKyAgeworICAgIGZvcihqID0gMDsgaiA8IG5jRGF0YUN3MjsgKytqKQorICAgIHsKKyAgICAgIGlmKGogPCBuY0RhdGFDdzEpCisgICAgICB7CisgICAgICAgIG1fYnlBbGxDb2RlV29yZFsobmNCbG9ja1N1bSAqIGopICsgbkJsb2NrTm9dID0gbV9ieURhdGFDb2RlV29yZFtuRGF0YUN3SW5kZXgrK107CisgICAgICB9CisgICAgICBlbHNlCisgICAgICB7CisgICAgICAgIG1fYnlBbGxDb2RlV29yZFsobmNCbG9ja1N1bSAqIG5jRGF0YUN3MSkgKyBpXSAgPSBtX2J5RGF0YUNvZGVXb3JkW25EYXRhQ3dJbmRleCsrXTsKKyAgICAgIH0KKyAgICB9CisKKyAgICArK25CbG9ja05vOworICB9CisKKyAgbmNSU0N3MSA9IFFSX1ZlcnNvbkluZm9bbV9uVmVyc2lvbl0uUlNfQmxvY2tJbmZvMVttX25MZXZlbF0ubmNBbGxDb2RlV29yZCAtIG5jRGF0YUN3MTsKKyAgbmNSU0N3MiA9IFFSX1ZlcnNvbkluZm9bbV9uVmVyc2lvbl0uUlNfQmxvY2tJbmZvMlttX25MZXZlbF0ubmNBbGxDb2RlV29yZCAtIG5jRGF0YUN3MjsKKworICBuRGF0YUN3SW5kZXggPSAwOworICBuQmxvY2tObyA9IDA7CisKKyAgZm9yKGkgPSAwOyBpIDwgbmNCbG9jazE7ICsraSkKKyAgeworICAgIG1lbXNldChtX2J5UlNXb3JrLCAwLCBzaXplb2YobV9ieVJTV29yaykpOworCisgICAgbWVtbW92ZShtX2J5UlNXb3JrLCBtX2J5RGF0YUNvZGVXb3JkICsgbkRhdGFDd0luZGV4LCBuY0RhdGFDdzEpOworCisgICAgR2V0UlNDb2RlV29yZChtX2J5UlNXb3JrLCBuY0RhdGFDdzEsIG5jUlNDdzEpOworCisgICAgZm9yKGogPSAwOyBqIDwgbmNSU0N3MTsgKytqKQorICAgIHsKKyAgICAgIG1fYnlBbGxDb2RlV29yZFtuY0RhdGFDb2RlV29yZCArIChuY0Jsb2NrU3VtICogaikgKyBuQmxvY2tOb10gPSBtX2J5UlNXb3JrW2pdOworICAgIH0KKworICAgIG5EYXRhQ3dJbmRleCArPSBuY0RhdGFDdzE7CisgICAgKytuQmxvY2tObzsKKyAgfQorCisgIGZvcihpID0gMDsgaSA8IG5jQmxvY2syOyArK2kpCisgIHsKKyAgICBtZW1zZXQobV9ieVJTV29yaywgMCwgc2l6ZW9mKG1fYnlSU1dvcmspKTsKKworICAgIG1lbW1vdmUobV9ieVJTV29yaywgbV9ieURhdGFDb2RlV29yZCArIG5EYXRhQ3dJbmRleCwgbmNEYXRhQ3cyKTsKKworICAgIEdldFJTQ29kZVdvcmQobV9ieVJTV29yaywgbmNEYXRhQ3cyLCBuY1JTQ3cyKTsKKworICAgIGZvcihqID0gMDsgaiA8IG5jUlNDdzI7ICsraikKKyAgICB7CisgICAgICBtX2J5QWxsQ29kZVdvcmRbbmNEYXRhQ29kZVdvcmQgKyAobmNCbG9ja1N1bSAqIGopICsgbkJsb2NrTm9dID0gbV9ieVJTV29ya1tqXTsKKyAgICB9CisKKyAgICBuRGF0YUN3SW5kZXggKz0gbmNEYXRhQ3cyOworICAgICsrbkJsb2NrTm87CisgIH0KKworICBtX25TeW1ibGVTaXplID0gbV9uVmVyc2lvbiAqIDQgKyAxNzsKKworICBGb3JtYXRNb2R1bGUoKTsKKworICAvLzY0eDY0CisgIC8vIAlmb3IgKGkgPSAwOyBpIDwgTUFYX01PRFVMRVNJWkU7IGkrKykgeworICAvLyAJCWZvciAoaiA9IDA7IGogPCBNQVhfTU9EVUxFU0laRTsgaisrKSB7CisgIC8vIAkJCW5fYnlNb2R1bGVEYXRhW2kqMl1baioyXSA9IG1fYnlNb2R1bGVEYXRhW2ldW2pdOworICAvLyAJCQluX2J5TW9kdWxlRGF0YVtpKjJdW2oqMisxXSA9IG1fYnlNb2R1bGVEYXRhW2ldW2pdOworICAvLyAJCX0KKyAgLy8gCQltZW1jcHkobl9ieU1vZHVsZURhdGFbaSoyKzFdLCBuX2J5TW9kdWxlRGF0YVtpKjJdLCBNQVhfTU9EVUxFU0laRSoyKTsKKyAgLy8gCX0KKyAgLy8gCWZvciAoaSA9IDA7IGkgPCBNQVhfTU9EVUxFU0laRTI7IGkrKykgeworICAvLyAJCWZvciAoaiA9IDA7IGogPCAoTUFYX01PRFVMRVNJWkUyLzgpOyBqKyspIHsKKyAgLy8gCQkJcXJbaSAqIChNQVhfTU9EVUxFU0laRTIvOCArIDEpICsgal0gID0gbl9ieU1vZHVsZURhdGFbaV1baio4ICsgMF0gPDwgNzsKKyAgLy8gCQkJcXJbaSAqIChNQVhfTU9EVUxFU0laRTIvOCArIDEpICsgal0gfD0gbl9ieU1vZHVsZURhdGFbaV1baio4ICsgMV0gPDwgNjsKKyAgLy8gCQkJcXJbaSAqIChNQVhfTU9EVUxFU0laRTIvOCArIDEpICsgal0gfD0gbl9ieU1vZHVsZURhdGFbaV1baio4ICsgMl0gPDwgNTsKKyAgLy8gCQkJcXJbaSAqIChNQVhfTU9EVUxFU0laRTIvOCArIDEpICsgal0gfD0gbl9ieU1vZHVsZURhdGFbaV1baio4ICsgM10gPDwgNDsKKyAgLy8gCQkJcXJbaSAqIChNQVhfTU9EVUxFU0laRTIvOCArIDEpICsgal0gfD0gbl9ieU1vZHVsZURhdGFbaV1baio4ICsgNF0gPDwgMzsKKyAgLy8gCQkJcXJbaSAqIChNQVhfTU9EVUxFU0laRTIvOCArIDEpICsgal0gfD0gbl9ieU1vZHVsZURhdGFbaV1baio4ICsgNV0gPDwgMjsKKyAgLy8gCQkJcXJbaSAqIChNQVhfTU9EVUxFU0laRTIvOCArIDEpICsgal0gfD0gbl9ieU1vZHVsZURhdGFbaV1baio4ICsgNl0gPDwgMTsKKyAgLy8gCQkJcXJbaSAqIChNQVhfTU9EVUxFU0laRTIvOCArIDEpICsgal0gfD0gbl9ieU1vZHVsZURhdGFbaV1baio4ICsgN107CisgIC8vIAkJfQorICAvLyAJCWlmIChqID09IE1BWF9NT0RVTEVTSVpFMi84KSB7CisgIC8vIAkJCXFyW2kgKiAoTUFYX01PRFVMRVNJWkUyLzggKyAxKSArIGpdICA9IG5fYnlNb2R1bGVEYXRhW2ldW2oqOCArIDBdIDw8IDc7CisgIC8vIAkJCXFyW2kgKiAoTUFYX01PRFVMRVNJWkUyLzggKyAxKSArIGpdIHw9IG5fYnlNb2R1bGVEYXRhW2ldW2oqOCArIDFdIDw8IDY7CisgIC8vIAkJfQorICAvLyAJfQorCisgIC8vNDh4NDgKKyAgLy8JZm9yIChpID0gMDsgaSA8IE1BWF9NT0RVTEVTSVpFOyBpKyspIHsKKyAgLy8JCXFyW2kgKiAoKE1BWF9NT0RVTEVTSVpFLTEpLzggKyAxKV0gPSBtX2J5TW9kdWxlRGF0YVtpXVswXTsKKyAgLy8JCWZvciAoaiA9IDE7IGogPCAoKE1BWF9NT0RVTEVTSVpFLTEpLzggKyAxKTsgaisrKSB7CisgIC8vCQkJcXJbaSAqICgoTUFYX01PRFVMRVNJWkUtMSkvOCArIDEpICsgal0gPSBtX2J5TW9kdWxlRGF0YVtpXVsoai0xKSo4ICsgMV0gPDwgNzsKKyAgLy8JCQlxcltpICogKChNQVhfTU9EVUxFU0laRS0xKS84ICsgMSkgKyBqXSB8PSBtX2J5TW9kdWxlRGF0YVtpXVsoai0xKSo4ICsgMl0gPDwgNjsKKyAgLy8JCQlxcltpICogKChNQVhfTU9EVUxFU0laRS0xKS84ICsgMSkgKyBqXSB8PSBtX2J5TW9kdWxlRGF0YVtpXVsoai0xKSo4ICsgM10gPDwgNTsKKyAgLy8JCQlxcltpICogKChNQVhfTU9EVUxFU0laRS0xKS84ICsgMSkgKyBqXSB8PSBtX2J5TW9kdWxlRGF0YVtpXVsoai0xKSo4ICsgNF0gPDwgNDsKKyAgLy8JCQlxcltpICogKChNQVhfTU9EVUxFU0laRS0xKS84ICsgMSkgKyBqXSB8PSBtX2J5TW9kdWxlRGF0YVtpXVsoai0xKSo4ICsgNV0gPDwgMzsKKyAgLy8JCQlxcltpICogKChNQVhfTU9EVUxFU0laRS0xKS84ICsgMSkgKyBqXSB8PSBtX2J5TW9kdWxlRGF0YVtpXVsoai0xKSo4ICsgNl0gPDwgMjsKKyAgLy8JCQlxcltpICogKChNQVhfTU9EVUxFU0laRS0xKS84ICsgMSkgKyBqXSB8PSBtX2J5TW9kdWxlRGF0YVtpXVsoai0xKSo4ICsgN10gPDwgMTsKKyAgLy8JCQlxcltpICogKChNQVhfTU9EVUxFU0laRS0xKS84ICsgMSkgKyBqXSB8PSBtX2J5TW9kdWxlRGF0YVtpXVsoai0xKSo4ICsgOF07CisgIC8vCQl9CisgIC8vCX0KKyAgLy8JZm9yIChpID0gMDsgaSA8IDc7IGkrKykgeworICAvLwkJZm9yIChqID0gMDsgaiA8IChNQVhfTU9EVUxFU0laRS0xKS84ICsgMTsgaisrKSB7CisgIC8vCQkJcXJbTUFYX01PRFVMRVNJWkUgKiA2ICsgaSArIGpdID0gMDsKKyAgLy8JCX0KKyAgLy8JfQorCisgIC8vMzJ4MzIKKyAgLy8gCWZvciAoaSA9IDA7IGkgPCBNQVhfTU9EVUxFU0laRTsgaSsrKSB7CisgIC8vIAkJZm9yIChqID0gMDsgaiA8IChNQVhfTU9EVUxFU0laRS84KTsgaisrKSB7CisgIC8vIAkJCXFyW2kgKiAoTUFYX01PRFVMRVNJWkUvOCArIDEpICsgal0gID0gbV9ieU1vZHVsZURhdGFbaV1baio4ICsgMF0gPDwgNzsKKyAgLy8gCQkJcXJbaSAqIChNQVhfTU9EVUxFU0laRS84ICsgMSkgKyBqXSB8PSBtX2J5TW9kdWxlRGF0YVtpXVtqKjggKyAxXSA8PCA2OworICAvLyAJCQlxcltpICogKE1BWF9NT0RVTEVTSVpFLzggKyAxKSArIGpdIHw9IG1fYnlNb2R1bGVEYXRhW2ldW2oqOCArIDJdIDw8IDU7CisgIC8vIAkJCXFyW2kgKiAoTUFYX01PRFVMRVNJWkUvOCArIDEpICsgal0gfD0gbV9ieU1vZHVsZURhdGFbaV1baio4ICsgM10gPDwgNDsKKyAgLy8gCQkJcXJbaSAqIChNQVhfTU9EVUxFU0laRS84ICsgMSkgKyBqXSB8PSBtX2J5TW9kdWxlRGF0YVtpXVtqKjggKyA0XSA8PCAzOworICAvLyAJCQlxcltpICogKE1BWF9NT0RVTEVTSVpFLzggKyAxKSArIGpdIHw9IG1fYnlNb2R1bGVEYXRhW2ldW2oqOCArIDVdIDw8IDI7CisgIC8vIAkJCXFyW2kgKiAoTUFYX01PRFVMRVNJWkUvOCArIDEpICsgal0gfD0gbV9ieU1vZHVsZURhdGFbaV1baio4ICsgNl0gPDwgMTsKKyAgLy8gCQkJcXJbaSAqIChNQVhfTU9EVUxFU0laRS84ICsgMSkgKyBqXSB8PSBtX2J5TW9kdWxlRGF0YVtpXVtqKjggKyA3XTsKKyAgLy8gCQl9CisgIC8vIAkJaWYgKGogPT0gTUFYX01PRFVMRVNJWkUvOCkgeworICAvLyAJCQlxcltpICogKE1BWF9NT0RVTEVTSVpFLzggKyAxKSArIGpdICA9IG1fYnlNb2R1bGVEYXRhW2ldW2oqOCArIDBdIDw8IDc7CisgIC8vIAkJCXFyW2kgKiAoTUFYX01PRFVMRVNJWkUvOCArIDEpICsgal0gfD0gbV9ieU1vZHVsZURhdGFbaV1baio4ICsgMV0gPDwgNjsKKyAgLy8gCQkJcXJbaSAqIChNQVhfTU9EVUxFU0laRS84ICsgMSkgKyBqXSB8PSBtX2J5TW9kdWxlRGF0YVtpXVtqKjggKyAyXSA8PCA1OworICAvLyAJCQlxcltpICogKE1BWF9NT0RVTEVTSVpFLzggKyAxKSArIGpdIHw9IG1fYnlNb2R1bGVEYXRhW2ldW2oqOCArIDNdIDw8IDQ7CisgIC8vIAkJCXFyW2kgKiAoTUFYX01PRFVMRVNJWkUvOCArIDEpICsgal0gfD0gbV9ieU1vZHVsZURhdGFbaV1baio4ICsgNF0gPDwgMzsKKyAgLy8gCQl9CisgIC8vIAl9CisgIC8vNDB4NDAKKyAgaWYocXIpCisgIHsKKyAgICBmb3IoaSA9IDA7IGkgPCBNQVhfTU9EVUxFU0laRTsgaSsrKQorICAgIHsKKyAgICAgIGZvcihqID0gMDsgaiA8IChNQVhfTU9EVUxFU0laRS84KTsgaisrKQorICAgICAgeworICAgICAgICBxcltpICogKE1BWF9NT0RVTEVTSVpFLzggKyAxKSArIGpdICA9IG1fYnlNb2R1bGVEYXRhW2ldW2oqOCArIDBdIDw8IDc7CisgICAgICAgIHFyW2kgKiAoTUFYX01PRFVMRVNJWkUvOCArIDEpICsgal0gfD0gbV9ieU1vZHVsZURhdGFbaV1baio4ICsgMV0gPDwgNjsKKyAgICAgICAgcXJbaSAqIChNQVhfTU9EVUxFU0laRS84ICsgMSkgKyBqXSB8PSBtX2J5TW9kdWxlRGF0YVtpXVtqKjggKyAyXSA8PCA1OworICAgICAgICBxcltpICogKE1BWF9NT0RVTEVTSVpFLzggKyAxKSArIGpdIHw9IG1fYnlNb2R1bGVEYXRhW2ldW2oqOCArIDNdIDw8IDQ7CisgICAgICAgIHFyW2kgKiAoTUFYX01PRFVMRVNJWkUvOCArIDEpICsgal0gfD0gbV9ieU1vZHVsZURhdGFbaV1baio4ICsgNF0gPDwgMzsKKyAgICAgICAgcXJbaSAqIChNQVhfTU9EVUxFU0laRS84ICsgMSkgKyBqXSB8PSBtX2J5TW9kdWxlRGF0YVtpXVtqKjggKyA1XSA8PCAyOworICAgICAgICBxcltpICogKE1BWF9NT0RVTEVTSVpFLzggKyAxKSArIGpdIHw9IG1fYnlNb2R1bGVEYXRhW2ldW2oqOCArIDZdIDw8IDE7CisgICAgICAgIHFyW2kgKiAoTUFYX01PRFVMRVNJWkUvOCArIDEpICsgal0gfD0gbV9ieU1vZHVsZURhdGFbaV1baio4ICsgN107CisgICAgICB9CisgICAgICBpZihqID09IE1BWF9NT0RVTEVTSVpFLzgpCisgICAgICB7CisgICAgICAgIHFyW2kgKiAoTUFYX01PRFVMRVNJWkUvOCArIDEpICsgal0gID0gbV9ieU1vZHVsZURhdGFbaV1baio4ICsgMF0gPDwgNzsKKyAgICAgIH0KKyAgICB9CisgIH0KKyAgcmV0dXJuIDE7Cit9CisKZGlmZiAtLWdpdCBhL2xpYnFyL3FyZW5jb2RlLmggYi9saWJxci9xcmVuY29kZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEzYTExMzAKLS0tIC9kZXYvbnVsbAorKysgYi9saWJxci9xcmVuY29kZS5oCkBAIC0wLDAgKzEsNDggQEAKKyNpZm5kZWYgUVJFTkNPREVfSAorI2RlZmluZSBRUkVOQ09ERV9ICisKKyNkZWZpbmUgTUFYX01PRFVMRVNJWkUJICAyNSAvLzQxIC8vNTAJLy8gMjE6VmVyc2lvbj0xLNfutPPX1rf7PTE3KDguNbj2urrX1ikKKwkJCQkJCQkJLy8gMjU6VmVyc2lvbj0yLNfutPPX1rf7PTMyKDE2uPa6utfWKQorCQkJCQkJCQkvLyAyOTpWZXJzaW9uPTMs1+6089fWt/s9NTMoMjYuNbj2urrX1ikKKwkJCQkJCQkJLy8gMzM6VmVyc2lvbj00LNfutPPX1rf7PTc4KDM5uPa6utfWKQorCQkJCQkJCQkvLyAzNzpWZXJzaW9uPTUs1+6089fWt/s9MTA2KDUzuPa6utfWKSAKKwkJCQkJCQkJLy8gNDE6VmVyc2lvbj02LNfutPPX1rf7PTEzNCg2N7j2urrX1ikgdGhlIG9uZQorCQkJCQkJCSAJLy8gNDU6VmVyc2lvbj03LNfutPPX1rf7PTE1NCg3N7j2urrX1ikKKwkJCQkJCQkgCS8vIDQ5OlZlcnNpb249OCzX7rTz19a3+z0xOTIoOTa49rq619YpCisJCQkJCQkJCS8vIDUzOiA5CisJCQkJCQkJCS8vIDU3OiAxMAorCQkJCQkJCQkvLyA2MTogMTEKKy8vICNkZWZpbmUgUVJfTUFSR0lOCTQKKworaW50IFFSZW5jb2RlKGNoYXIgKmxwc1NvdXJjZSwgY2hhciAqcXIpOworCisvL2ludCBHZXRFbmNvZGVWZXJzaW9uKGludCBuVmVyc2lvbiwgY2hhciAqbHBzU291cmNlLCBpbnQgbmNMZW5ndGgpOworLy9ib29sIEVuY29kZVNvdXJjZURhdGEoY2hhciAqbHBzU291cmNlLCBpbnQgbmNMZW5ndGgsIGludCBuVmVyR3JvdXApOworCisvL2ludCBHZXRCaXRMZW5ndGgoQllURSBuTW9kZSwgaW50IG5jRGF0YSwgaW50IG5WZXJHcm91cCk7CisKKy8vaW50IFNldEJpdFN0cmVhbShpbnQgbkluZGV4LCBXT1JEIHdEYXRhLCBpbnQgbmNEYXRhKTsKKworLy9ib29sIElzTnVtZXJhbERhdGEodW5zaWduZWQgY2hhciBjKTsKKy8vYm9vbCBJc0FscGhhYmV0RGF0YSh1bnNpZ25lZCBjaGFyIGMpOworCisvL0JZVEUgQWxwaGFiZXRUb0JpbmFseSh1bnNpZ25lZCBjaGFyIGMpOworCisvL3ZvaWQgR2V0UlNDb2RlV29yZChCWVRFICpscGJ5UlNXb3JrLCBpbnQgbmNEYXRhQ29kZVdvcmQsIGludCBuY1JTQ29kZVdvcmQpOworCisvL3ZvaWQgRm9ybWF0TW9kdWxlKHZvaWQpOworCisvL3ZvaWQgU2V0RnVuY3Rpb25Nb2R1bGUodm9pZCk7CisvL3ZvaWQgU2V0RmluZGVyUGF0dGVybihpbnQgeCwgaW50IHkpOworLy92b2lkIFNldEFsaWdubWVudFBhdHRlcm4oaW50IHgsIGludCB5KTsKKy8vdm9pZCBTZXRWZXJzaW9uUGF0dGVybih2b2lkKTsKKy8vdm9pZCBTZXRDb2RlV29yZFBhdHRlcm4odm9pZCk7CisvL3ZvaWQgU2V0TWFza2luZ1BhdHRlcm4oaW50IG5QYXR0ZXJuTm8pOworLy92b2lkIFNldEZvcm1hdEluZm9QYXR0ZXJuKGludCBuUGF0dGVybk5vKTsKKy8vaW50IENvdW50UGVuYWx0eSh2b2lkKTsKKworZXh0ZXJuIGludCBtX25TeW1ibGVTaXplOworZXh0ZXJuIHVuc2lnbmVkIGNoYXIgbV9ieU1vZHVsZURhdGFbTUFYX01PRFVMRVNJWkVdW01BWF9NT0RVTEVTSVpFXTsKKworI2VuZGlmCisKZGlmZiAtLWdpdCBhL21zZ3BhY2svY3dwYWNrLmMgYi9tc2dwYWNrL2N3cGFjay5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5NmI0YjMKLS0tIC9kZXYvbnVsbAorKysgYi9tc2dwYWNrL2N3cGFjay5jCkBAIC0wLDAgKzEsNjcyIEBACisvKiAgICAgIENXUGFjayAtIGN3cGFjay5jICAgKi8KKy8qCisgVGhlIE1JVCBMaWNlbnNlIChNSVQpCisgCisgQ29weXJpZ2h0IChjKSAyMDE3IENsYWVzIFdpaGxib3JnCisgCisgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZiB0aGlzCisgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZQorIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwKKyBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdAorIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAKKyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yCisgc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorIAorIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORworIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORAorIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sCisgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAorIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICovCisKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworI2luY2x1ZGUgImN3cGFjay5oIgorI2luY2x1ZGUgImN3cGFja19kZWZpbmVzLmgiCisKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKiAgIEMgICBTIFkgUyBUIEUgTSAgIEwgSSBCIFIgQSBSIFkgICAqKioqKioqKioqKioqKioqLworCisjaWZkZWYgRk9SQ0VfTk9fTElCUkFSWQorCitzdGF0aWMgdm9pZAkqbWVtY3B5KHZvaWQgKmRzdCwgY29uc3Qgdm9pZCAqc3JjLCBzaXplX3QgbikKK3sKKyAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICB1aW50OF90ICpkPSh1aW50OF90Kilkc3QsICpzPSh1aW50OF90KilzcmM7CisgICAgZm9yIChpPTA7IGk8bjsgaSsrKQorICAgIHsKKyAgICAgICAgKmQrKyA9ICpzKys7CisgICAgfQorICAgIHJldHVybiBkc3Q7Cit9CisKKyNlbmRpZgorCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKiogICBCIFkgVCBFICAgTyBSIEQgRSBSICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCitzdGF0aWMgaW50IHRlc3RfYnl0ZV9vcmRlcih2b2lkKQoreworI2lmZGVmIENPTVBJTEVfRk9SX0JJR19FTkRJQU4KKyAgICBjb25zdCBjaGFyICplbmRpYW5uZXNzID0gIjEyMzQiOworICAgIGlmICgqKHVpbnQzMl90KillbmRpYW5uZXNzICE9IDB4MzEzMjMzMzRVTCkKKyAgICAgICAgcmV0dXJuIENXUF9SQ19XUk9OR19CWVRFX09SREVSOworI2Vsc2UKKworI2lmZGVmIENPTVBJTEVfRk9SX0xJVFRMRV9FTkRJQU4KKyAgICBjb25zdCBjaGFyICplbmRpYW5uZXNzID0gIjEyMzQiOworICAgIGlmICgqKHVpbnQzMl90KillbmRpYW5uZXNzICE9IDB4MzQzMzMyMzFVTCkKKyAgICAgICAgcmV0dXJuIENXUF9SQ19XUk9OR19CWVRFX09SREVSOworI2VuZGlmCisjZW5kaWYKKyAgICByZXR1cm4gQ1dQX1JDX09LOworfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICAgUCBBIEMgSyAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworCitpbnQgY3dfcGFja19jb250ZXh0X2luaXQgKGN3X3BhY2tfY29udGV4dCogcGFja19jb250ZXh0LCB2b2lkKiBkYXRhLCB1bnNpZ25lZCBsb25nIGxlbmd0aCwgcGFja19vdmVyZmxvd19oYW5kbGVyIGhwbykKK3sKKyAgICBwYWNrX2NvbnRleHQtPnN0YXJ0ID0gcGFja19jb250ZXh0LT5jdXJyZW50ID0gKHVpbnQ4X3QqKWRhdGE7CisgICAgcGFja19jb250ZXh0LT5lbmQgPSBwYWNrX2NvbnRleHQtPnN0YXJ0ICsgbGVuZ3RoOworICAgIHBhY2tfY29udGV4dC0+YmVfY29tcGF0aWJsZSA9IGZhbHNlOworICAgIHBhY2tfY29udGV4dC0+ZXJyX25vID0gMDsKKyAgICBwYWNrX2NvbnRleHQtPmhhbmRsZV9wYWNrX292ZXJmbG93ID0gaHBvOworICAgIHBhY2tfY29udGV4dC0+cmV0dXJuX2NvZGUgPSB0ZXN0X2J5dGVfb3JkZXIoKTsKKyAgICByZXR1cm4gcGFja19jb250ZXh0LT5yZXR1cm5fY29kZTsKK30KKwordm9pZCBjd19wYWNrX3NldF9jb21wYXRpYmlsaXR5IChjd19wYWNrX2NvbnRleHQqIHBhY2tfY29udGV4dCwgYm9vbCBiZV9jb21wYXRpYmxlKQoreworICAgIHBhY2tfY29udGV4dC0+YmVfY29tcGF0aWJsZSA9IGJlX2NvbXBhdGlibGU7Cit9CisKKworCisvKiAgUGFja2luZyByb3V0aW5lcyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gICovCisKKwordm9pZCBjd19wYWNrX3Vuc2lnbmVkKGN3X3BhY2tfY29udGV4dCogcGFja19jb250ZXh0LCB1aW50NjRfdCBpKQoreworICAgIGlmIChwYWNrX2NvbnRleHQtPnJldHVybl9jb2RlKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgaWYgKGkgPCAxMjgpCisgICAgICAgIHRyeU1vdmUwKGkpOworCisgICAgaWYgKGkgPCAyNTYpCisgICAgICAgIHRyeU1vdmUxKDB4Y2MsIGkpOworCisgICAgaWYgKGkgPCAweDEwMDAwTCkKKyAgICB7CisgICAgICAgIHRyeU1vdmUyKDB4Y2QsIGkpOworICAgIH0KKyAgICBpZiAoaSA8IDB4MTAwMDAwMDAwTEwpCisgICAgICAgIHRyeU1vdmU0KDB4Y2UsIGkpOworCisgICAgdHJ5TW92ZTgoMHhjZixpKTsKK30KKworCit2b2lkIGN3X3BhY2tfc2lnbmVkKGN3X3BhY2tfY29udGV4dCogcGFja19jb250ZXh0LCBpbnQ2NF90IGkpCit7CisgICAgaWYgKHBhY2tfY29udGV4dC0+cmV0dXJuX2NvZGUpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBpZiAoaSA+MTI3KQorICAgIHsKKyAgICAgICAgaWYgKGkgPCAyNTYpCisgICAgICAgICAgICB0cnlNb3ZlMSgweGNjLCBpKTsKKyAgICAgICAgCisgICAgICAgIGlmIChpIDwgMHgxMDAwMEwpCisgICAgICAgICAgICB0cnlNb3ZlMigweGNkLCBpKTsKKyAgICAgICAgCisgICAgICAgIGlmIChpIDwgMHgxMDAwMDAwMDBMTCkKKyAgICAgICAgICAgIHRyeU1vdmU0KDB4Y2UsIGkpOworICAgICAgICAKKyAgICAgICAgdHJ5TW92ZTgoMHhjZixpKTsKKyAgICB9CisgICAgCisgICAgaWYgKGkgPj0gLTMyKQorICAgICAgICB0cnlNb3ZlMChpKTsKKworICAgIGlmIChpID49IC0xMjgpCisgICAgICAgIHRyeU1vdmUxKDB4ZDAsIGkpOworICAgIAorICAgIGlmIChpID49IC0zMjc2OCkKKyAgICAgICAgdHJ5TW92ZTIoMHhkMSxpKTsKKworICAgIGlmIChpID49IChpbnQ2NF90KTB4ZmZmZmZmZmY4MDAwMDAwMExMKQorICAgICAgICB0cnlNb3ZlNCgweGQyLGkpOworCisgICAgdHJ5TW92ZTgoMHhkMyxpKTsKK30KKworCit2b2lkIGN3X3BhY2tfZmxvYXQoY3dfcGFja19jb250ZXh0KiBwYWNrX2NvbnRleHQsIGZsb2F0IGYpCit7CisgICAgaWYgKHBhY2tfY29udGV4dC0+cmV0dXJuX2NvZGUpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICB1aW50MzJfdCB0bXAgPSAqKCh1aW50MzJfdCopJmYpOworICAgIHRyeU1vdmU0KDB4Y2EsdG1wKTsKK30KKworCit2b2lkIGN3X3BhY2tfZG91YmxlKGN3X3BhY2tfY29udGV4dCogcGFja19jb250ZXh0LCBkb3VibGUgZCkKK3sKKyAgICBpZiAocGFja19jb250ZXh0LT5yZXR1cm5fY29kZSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIHVpbnQ2NF90IHRtcCA9ICooKHVpbnQ2NF90KikmZCk7CisgICAgdHJ5TW92ZTgoMHhjYix0bXApOworfQorCisKK3ZvaWQgY3dfcGFja19yZWFsIChjd19wYWNrX2NvbnRleHQqIHBhY2tfY29udGV4dCwgZG91YmxlIGQpCit7CisgICAgZmxvYXQgZiA9IChmbG9hdClkOworICAgIGRvdWJsZSBkZiA9IGY7CisgICAgaWYgKGRmID09IGQpCisgICAgICAgIGN3X3BhY2tfZmxvYXQgKHBhY2tfY29udGV4dCwgZik7CisgICAgZWxzZQorICAgICAgICBjd19wYWNrX2RvdWJsZSAocGFja19jb250ZXh0LCBkKTsKK30KKworCit2b2lkIGN3X3BhY2tfbmlsKGN3X3BhY2tfY29udGV4dCogcGFja19jb250ZXh0KQoreworICAgIGlmIChwYWNrX2NvbnRleHQtPnJldHVybl9jb2RlKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgdHJ5TW92ZTAoMHhjMCk7Cit9CisKKwordm9pZCBjd19wYWNrX3RydWUgKGN3X3BhY2tfY29udGV4dCogcGFja19jb250ZXh0KQoreworICAgIGlmIChwYWNrX2NvbnRleHQtPnJldHVybl9jb2RlKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgdHJ5TW92ZTAoMHhjMyk7Cit9CisKKwordm9pZCBjd19wYWNrX2ZhbHNlIChjd19wYWNrX2NvbnRleHQqIHBhY2tfY29udGV4dCkKK3sKKyAgICBpZiAocGFja19jb250ZXh0LT5yZXR1cm5fY29kZSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIHRyeU1vdmUwKDB4YzIpOworfQorCisKK3ZvaWQgY3dfcGFja19ib29sZWFuKGN3X3BhY2tfY29udGV4dCogcGFja19jb250ZXh0LCBib29sIGIpCit7CisgICAgaWYgKHBhY2tfY29udGV4dC0+cmV0dXJuX2NvZGUpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICB0cnlNb3ZlMChiPyAweGMzOiAweGMyKTsKK30KKworCit2b2lkIGN3X3BhY2tfYXJyYXlfc2l6ZShjd19wYWNrX2NvbnRleHQqIHBhY2tfY29udGV4dCwgdWludDMyX3QgbikKK3sKKyAgICBpZiAocGFja19jb250ZXh0LT5yZXR1cm5fY29kZSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGlmIChuIDwgMTYpCisgICAgICAgIHRyeU1vdmUwKDB4OTAgfCBuKTsKKworICAgIGlmIChuIDwgNjU1MzYpCisgICAgICAgIHRyeU1vdmUyKDB4ZGMsIG4pOworCisgICAgdHJ5TW92ZTQoMHhkZCwgbik7Cit9CisKKwordm9pZCBjd19wYWNrX21hcF9zaXplKGN3X3BhY2tfY29udGV4dCogcGFja19jb250ZXh0LCB1aW50MzJfdCBuKQoreworICAgIGlmIChwYWNrX2NvbnRleHQtPnJldHVybl9jb2RlKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgaWYgKG4gPCAxNikKKyAgICAgICAgdHJ5TW92ZTAoMHg4MCB8IG4pOworCisgICAgaWYgKG4gPCA2NTUzNikKKyAgICAgICAgdHJ5TW92ZTIoMHhkZSwgbik7CisKKyAgICB0cnlNb3ZlNCgweGRmLCBuKTsKK30KKworCit2b2lkIGN3X3BhY2tfc3RyKGN3X3BhY2tfY29udGV4dCogcGFja19jb250ZXh0LCBjb25zdCBjaGFyKiB2LCB1aW50MzJfdCBsKQoreworICAgIGlmIChwYWNrX2NvbnRleHQtPnJldHVybl9jb2RlKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgdWludDhfdCAqcDsKKyAgICAKKyAgICBpZiAobCA8IDMyKSAgICAgICAgICAgICAvLyBGaXhzdHIKKyAgICB7CisgICAgICAgIGN3X3BhY2tfcmVzZXJ2ZV9zcGFjZShsKzEpOworICAgICAgICAqcCA9ICh1aW50OF90KSgweGEwICsgbCk7CisgICAgICAgIG1lbWNweShwKzEsdixsKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobCA8IDI1NiAmJiAhcGFja19jb250ZXh0LT5iZV9jb21wYXRpYmxlKSAgICAgICAvLyBTdHIgOAorICAgIHsKKyAgICAgICAgY3dfcGFja19yZXNlcnZlX3NwYWNlKGwrMik7CisgICAgICAgICpwKysgPSAodWludDhfdCkoMHhkOSk7CisgICAgICAgICpwID0gKHVpbnQ4X3QpKGwpOworICAgICAgICBtZW1jcHkocCsxLHYsbCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGwgPCA2NTUzNikgICAgIC8vIFN0ciAxNgorICAgIHsKKyAgICAgICAgY3dfcGFja19yZXNlcnZlX3NwYWNlKGwrMykKKyAgICAgICAgKnArKyA9ICh1aW50OF90KTB4ZGE7CisgICAgICAgIGN3X3N0b3JlMTYobCk7CisgICAgICAgIG1lbWNweShwKzIsdixsKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAvLyBTdHIgMzIKKyAgICBjd19wYWNrX3Jlc2VydmVfc3BhY2UobCs1KQorICAgICpwKysgPSAodWludDhfdCkweGRiOworICAgIGN3X3N0b3JlMzIobCk7CisgICAgbWVtY3B5KHArNCx2LGwpOworICAgIHJldHVybjsKK30KKworCit2b2lkIGN3X3BhY2tfYmluKGN3X3BhY2tfY29udGV4dCogcGFja19jb250ZXh0LCBjb25zdCB2b2lkKiB2LCB1aW50MzJfdCBsKQoreworICAgIGlmIChwYWNrX2NvbnRleHQtPnJldHVybl9jb2RlKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgaWYgKHBhY2tfY29udGV4dC0+YmVfY29tcGF0aWJsZSkKKyAgICB7CisgICAgICAgIGN3X3BhY2tfc3RyKCBwYWNrX2NvbnRleHQsIHYsIGwpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIHVpbnQ4X3QgKnA7CisgICAgCisgICAgaWYgKGwgPCAyNTYpICAgICAgICAgICAgLy8gQmluIDgKKyAgICB7CisgICAgICAgIGN3X3BhY2tfcmVzZXJ2ZV9zcGFjZShsKzIpOworICAgICAgICAqcCsrID0gKHVpbnQ4X3QpKDB4YzQpOworICAgICAgICAqcCA9ICh1aW50OF90KShsKTsKKyAgICAgICAgbWVtY3B5KHArMSx2LGwpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChsIDwgNjU1MzYpICAgICAvLyBCaW4gMTYKKyAgICB7CisgICAgICAgIGN3X3BhY2tfcmVzZXJ2ZV9zcGFjZShsKzMpCisgICAgICAgICpwKysgPSAodWludDhfdCkweGM1OworICAgICAgICBjd19zdG9yZTE2KGwpOworICAgICAgICBtZW1jcHkocCsyLHYsbCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgLy8gQmluIDMyCisgICAgY3dfcGFja19yZXNlcnZlX3NwYWNlKGwrNSkKKyAgICAqcCsrID0gKHVpbnQ4X3QpMHhjNjsKKyAgICBjd19zdG9yZTMyKGwpOworICAgIG1lbWNweShwKzQsdixsKTsKKyAgICByZXR1cm47Cit9CisKKwordm9pZCBjd19wYWNrX2V4dCAoY3dfcGFja19jb250ZXh0KiBwYWNrX2NvbnRleHQsIGludDhfdCB0eXBlLCBjb25zdCB2b2lkKiB2LCB1aW50MzJfdCBsKQoreworICAgIGlmIChwYWNrX2NvbnRleHQtPnJldHVybl9jb2RlKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgaWYgKHBhY2tfY29udGV4dC0+YmVfY29tcGF0aWJsZSkKKyAgICAgICAgUEFDS19FUlJPUihDV1BfUkNfSUxMRUdBTF9DQUxMKTsKKyAgICAKKyAgICB1aW50OF90ICpwOworICAgIAorICAgIHN3aXRjaCAobCkKKyAgICB7CisgICAgICAgIGNhc2UgMTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZpeGV4dCAxCisgICAgICAgICAgICBjd19wYWNrX3Jlc2VydmVfc3BhY2UoMyk7CisgICAgICAgICAgICAqcCsrID0gKHVpbnQ4X3QpMHhkNDsKKyAgICAgICAgICAgICpwKysgPSAodWludDhfdCl0eXBlOworICAgICAgICAgICAgKnArKyA9ICoodWludDhfdCopdjsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgY2FzZSAyOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRml4ZXh0IDIKKyAgICAgICAgICAgIGN3X3BhY2tfcmVzZXJ2ZV9zcGFjZSg0KTsKKyAgICAgICAgICAgICpwKysgPSAodWludDhfdCkweGQ1OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgNDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZpeGV4dCA0CisgICAgICAgICAgICBjd19wYWNrX3Jlc2VydmVfc3BhY2UoNik7CisgICAgICAgICAgICAqcCsrID0gKHVpbnQ4X3QpMHhkNjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDg6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGaXhleHQgOAorICAgICAgICAgICAgY3dfcGFja19yZXNlcnZlX3NwYWNlKDEwKTsKKyAgICAgICAgICAgICpwKysgPSAodWludDhfdCkweGQ3OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMTY6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZpeGV4dDE2CisgICAgICAgICAgICBjd19wYWNrX3Jlc2VydmVfc3BhY2UoMTgpOworICAgICAgICAgICAgKnArKyA9ICh1aW50OF90KTB4ZDg7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGlmIChsIDwgMjU2KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRXh0IDgKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjd19wYWNrX3Jlc2VydmVfc3BhY2UobCszKTsKKyAgICAgICAgICAgICAgICAqcCsrID0gKHVpbnQ4X3QpMHhjNzsKKyAgICAgICAgICAgICAgICAqcCsrID0gKHVpbnQ4X3QpKGwpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAobCA8IDY1NTM2KSAgICAgICAgICAgICAgICAgICAgICAgICAvLyBFeHQgMTYKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjd19wYWNrX3Jlc2VydmVfc3BhY2UobCs0KQorICAgICAgICAgICAgICAgICpwKysgPSAodWludDhfdCkweGM4OworICAgICAgICAgICAgICAgIGN3X3N0b3JlMTYobCk7CisgICAgICAgICAgICAgICAgcCArPSAyOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBFeHQgMzIKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjd19wYWNrX3Jlc2VydmVfc3BhY2UobCs2KQorICAgICAgICAgICAgICAgICpwKysgPSAodWludDhfdCkweGM5OworICAgICAgICAgICAgICAgIGN3X3N0b3JlMzIobCk7CisgICAgICAgICAgICAgICAgcCArPSA0OworICAgICAgICAgICAgfQorICAgIH0KKyAgICAqcCsrID0gKHVpbnQ4X3QpdHlwZTsKKyAgICBtZW1jcHkocCx2LGwpOworfQorCisKK3ZvaWQgY3dfcGFja19pbnNlcnQgKGN3X3BhY2tfY29udGV4dCogcGFja19jb250ZXh0LCBjb25zdCB2b2lkKiB2LCB1aW50MzJfdCBsKQoreworICAgIHVpbnQ4X3QgKnA7CisgICAgY3dfcGFja19yZXNlcnZlX3NwYWNlKGwpOworICAgIG1lbWNweShwLHYsbCk7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICAgVSBOIFAgQSBDIEsgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKK2ludCBjd191bnBhY2tfY29udGV4dF9pbml0IChjd191bnBhY2tfY29udGV4dCogdW5wYWNrX2NvbnRleHQsIHZvaWQqIGRhdGEsIHVuc2lnbmVkIGxvbmcgbGVuZ3RoLCB1bnBhY2tfdW5kZXJmbG93X2hhbmRsZXIgaHV1KQoreworICAgIHVucGFja19jb250ZXh0LT5zdGFydCA9IHVucGFja19jb250ZXh0LT5jdXJyZW50ID0gKHVpbnQ4X3QqKWRhdGE7CisgICAgdW5wYWNrX2NvbnRleHQtPmVuZCA9IHVucGFja19jb250ZXh0LT5zdGFydCArIGxlbmd0aDsKKyAgICB1bnBhY2tfY29udGV4dC0+cmV0dXJuX2NvZGUgPSB0ZXN0X2J5dGVfb3JkZXIoKTsKKyAgICB1bnBhY2tfY29udGV4dC0+ZXJyX25vID0gMDsKKyAgICB1bnBhY2tfY29udGV4dC0+aGFuZGxlX3VucGFja191bmRlcmZsb3cgPSBodXU7CisgICAgcmV0dXJuIHVucGFja19jb250ZXh0LT5yZXR1cm5fY29kZTsKK30KKworCisvKiAgVW5wYWNraW5nIHJvdXRpbmVzICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICAqLworCisKKwordm9pZCBjd191bnBhY2tfbmV4dCAoY3dfdW5wYWNrX2NvbnRleHQqIHVucGFja19jb250ZXh0KQoreworICAgIGlmICh1bnBhY2tfY29udGV4dC0+cmV0dXJuX2NvZGUpCisgICAgICAgIHJldHVybjsKKworICAgIHVpbnQ2NF90ICAgIHRtcHU2NDsKKyAgICB1aW50MzJfdCAgICB0bXB1MzI7CisgICAgdWludDE2X3QgICAgdG1wdTE2OworICAgIHVpbnQ4X3QqICAgIHA7CisgICAgCisjZGVmaW5lIGJ1ZmZlcl9lbmRfcmV0dXJuX2NvZGUgIENXUF9SQ19FTkRfT0ZfSU5QVVQ7CisgICAgY3dfdW5wYWNrX2Fzc2VydF9zcGFjZSgxKTsKKyAgICB1aW50OF90IGMgPSAqcDsKKyN1bmRlZiBidWZmZXJfZW5kX3JldHVybl9jb2RlCisjZGVmaW5lIGJ1ZmZlcl9lbmRfcmV0dXJuX2NvZGUgIENXUF9SQ19CVUZGRVJfVU5ERVJGTE9XOworICAgIHN3aXRjaCAoYykKKyAgICB7CisgICAgICAgIGNhc2UgMHgwMDogY2FzZSAweDAxOiBjYXNlIDB4MDI6IGNhc2UgMHgwMzogY2FzZSAweDA0OiBjYXNlIDB4MDU6IGNhc2UgMHgwNjogY2FzZSAweDA3OgorICAgICAgICBjYXNlIDB4MDg6IGNhc2UgMHgwOTogY2FzZSAweDBhOiBjYXNlIDB4MGI6IGNhc2UgMHgwYzogY2FzZSAweDBkOiBjYXNlIDB4MGU6IGNhc2UgMHgwZjoKKyAgICAgICAgY2FzZSAweDEwOiBjYXNlIDB4MTE6IGNhc2UgMHgxMjogY2FzZSAweDEzOiBjYXNlIDB4MTQ6IGNhc2UgMHgxNTogY2FzZSAweDE2OiBjYXNlIDB4MTc6CisgICAgICAgIGNhc2UgMHgxODogY2FzZSAweDE5OiBjYXNlIDB4MWE6IGNhc2UgMHgxYjogY2FzZSAweDFjOiBjYXNlIDB4MWQ6IGNhc2UgMHgxZTogY2FzZSAweDFmOgorICAgICAgICBjYXNlIDB4MjA6IGNhc2UgMHgyMTogY2FzZSAweDIyOiBjYXNlIDB4MjM6IGNhc2UgMHgyNDogY2FzZSAweDI1OiBjYXNlIDB4MjY6IGNhc2UgMHgyNzoKKyAgICAgICAgY2FzZSAweDI4OiBjYXNlIDB4Mjk6IGNhc2UgMHgyYTogY2FzZSAweDJiOiBjYXNlIDB4MmM6IGNhc2UgMHgyZDogY2FzZSAweDJlOiBjYXNlIDB4MmY6CisgICAgICAgIGNhc2UgMHgzMDogY2FzZSAweDMxOiBjYXNlIDB4MzI6IGNhc2UgMHgzMzogY2FzZSAweDM0OiBjYXNlIDB4MzU6IGNhc2UgMHgzNjogY2FzZSAweDM3OgorICAgICAgICBjYXNlIDB4Mzg6IGNhc2UgMHgzOTogY2FzZSAweDNhOiBjYXNlIDB4M2I6IGNhc2UgMHgzYzogY2FzZSAweDNkOiBjYXNlIDB4M2U6IGNhc2UgMHgzZjoKKyAgICAgICAgY2FzZSAweDQwOiBjYXNlIDB4NDE6IGNhc2UgMHg0MjogY2FzZSAweDQzOiBjYXNlIDB4NDQ6IGNhc2UgMHg0NTogY2FzZSAweDQ2OiBjYXNlIDB4NDc6CisgICAgICAgIGNhc2UgMHg0ODogY2FzZSAweDQ5OiBjYXNlIDB4NGE6IGNhc2UgMHg0YjogY2FzZSAweDRjOiBjYXNlIDB4NGQ6IGNhc2UgMHg0ZTogY2FzZSAweDRmOgorICAgICAgICBjYXNlIDB4NTA6IGNhc2UgMHg1MTogY2FzZSAweDUyOiBjYXNlIDB4NTM6IGNhc2UgMHg1NDogY2FzZSAweDU1OiBjYXNlIDB4NTY6IGNhc2UgMHg1NzoKKyAgICAgICAgY2FzZSAweDU4OiBjYXNlIDB4NTk6IGNhc2UgMHg1YTogY2FzZSAweDViOiBjYXNlIDB4NWM6IGNhc2UgMHg1ZDogY2FzZSAweDVlOiBjYXNlIDB4NWY6CisgICAgICAgIGNhc2UgMHg2MDogY2FzZSAweDYxOiBjYXNlIDB4NjI6IGNhc2UgMHg2MzogY2FzZSAweDY0OiBjYXNlIDB4NjU6IGNhc2UgMHg2NjogY2FzZSAweDY3OgorICAgICAgICBjYXNlIDB4Njg6IGNhc2UgMHg2OTogY2FzZSAweDZhOiBjYXNlIDB4NmI6IGNhc2UgMHg2YzogY2FzZSAweDZkOiBjYXNlIDB4NmU6IGNhc2UgMHg2ZjoKKyAgICAgICAgY2FzZSAweDcwOiBjYXNlIDB4NzE6IGNhc2UgMHg3MjogY2FzZSAweDczOiBjYXNlIDB4NzQ6IGNhc2UgMHg3NTogY2FzZSAweDc2OiBjYXNlIDB4Nzc6CisgICAgICAgIGNhc2UgMHg3ODogY2FzZSAweDc5OiBjYXNlIDB4N2E6IGNhc2UgMHg3YjogY2FzZSAweDdjOiBjYXNlIDB4N2Q6IGNhc2UgMHg3ZTogY2FzZSAweDdmOgorICAgICAgICAgICAgICAgICAgICBnZXREREl0ZW0oQ1dQX0lURU1fUE9TSVRJVkVfSU5URUdFUiwgaTY0LCBjKTsgICAgICAgcmV0dXJuOyAgLy8gcG9zaXRpdmUgZml4bnVtCisgICAgICAgIGNhc2UgMHg4MDogY2FzZSAweDgxOiBjYXNlIDB4ODI6IGNhc2UgMHg4MzogY2FzZSAweDg0OiBjYXNlIDB4ODU6IGNhc2UgMHg4NjogY2FzZSAweDg3OgorICAgICAgICBjYXNlIDB4ODg6IGNhc2UgMHg4OTogY2FzZSAweDhhOiBjYXNlIDB4OGI6IGNhc2UgMHg4YzogY2FzZSAweDhkOiBjYXNlIDB4OGU6IGNhc2UgMHg4ZjoKKyAgICAgICAgICAgICAgICAgICAgZ2V0RERJdGVtKENXUF9JVEVNX01BUCwgbWFwLnNpemUsIGMgJiAweDBmKTsgICAgICAgIHJldHVybjsgIC8vIGZpeG1hcAorICAgICAgICBjYXNlIDB4OTA6IGNhc2UgMHg5MTogY2FzZSAweDkyOiBjYXNlIDB4OTM6IGNhc2UgMHg5NDogY2FzZSAweDk1OiBjYXNlIDB4OTY6IGNhc2UgMHg5NzoKKyAgICAgICAgY2FzZSAweDk4OiBjYXNlIDB4OTk6IGNhc2UgMHg5YTogY2FzZSAweDliOiBjYXNlIDB4OWM6IGNhc2UgMHg5ZDogY2FzZSAweDllOiBjYXNlIDB4OWY6CisgICAgICAgICAgICAgICAgICAgIGdldERESXRlbShDV1BfSVRFTV9BUlJBWSwgYXJyYXkuc2l6ZSwgYyAmIDB4MGYpOyAgICByZXR1cm47ICAvLyBmaXhhcnJheQorICAgICAgICBjYXNlIDB4YTA6IGNhc2UgMHhhMTogY2FzZSAweGEyOiBjYXNlIDB4YTM6IGNhc2UgMHhhNDogY2FzZSAweGE1OiBjYXNlIDB4YTY6IGNhc2UgMHhhNzoKKyAgICAgICAgY2FzZSAweGE4OiBjYXNlIDB4YTk6IGNhc2UgMHhhYTogY2FzZSAweGFiOiBjYXNlIDB4YWM6IGNhc2UgMHhhZDogY2FzZSAweGFlOiBjYXNlIDB4YWY6CisgICAgICAgIGNhc2UgMHhiMDogY2FzZSAweGIxOiBjYXNlIDB4YjI6IGNhc2UgMHhiMzogY2FzZSAweGI0OiBjYXNlIDB4YjU6IGNhc2UgMHhiNjogY2FzZSAweGI3OgorICAgICAgICBjYXNlIDB4Yjg6IGNhc2UgMHhiOTogY2FzZSAweGJhOiBjYXNlIDB4YmI6IGNhc2UgMHhiYzogY2FzZSAweGJkOiBjYXNlIDB4YmU6IGNhc2UgMHhiZjoKKyAgICAgICAgICAgICAgICAgICAgZ2V0RERJdGVtKENXUF9JVEVNX1NUUiwgc3RyLmxlbmd0aCwgYyAmIDB4MWYpOyAgICAgICAgICAgICAgLy8gZml4cmF3CisgICAgICAgICAgICAgICAgICAgIGN3X3VucGFja19hc3NlcnRfYmxvYihzdHIpOworICAgICAgICBjYXNlIDB4YzA6ICB1bnBhY2tfY29udGV4dC0+aXRlbS50eXBlID0gQ1dQX0lURU1fTklMOyAgICAgICAgICAgcmV0dXJuOyAgLy8gbmlsCisgICAgICAgIGNhc2UgMHhjMjogIGdldERESXRlbShDV1BfSVRFTV9CT09MRUFOLCBib29sZWFuLCBmYWxzZSk7ICAgICAgICByZXR1cm47ICAvLyBmYWxzZQorICAgICAgICBjYXNlIDB4YzM6ICBnZXREREl0ZW0oQ1dQX0lURU1fQk9PTEVBTiwgYm9vbGVhbiwgdHJ1ZSk7ICAgICAgICAgcmV0dXJuOyAgLy8gdHJ1ZQorICAgICAgICBjYXNlIDB4YzQ6ICBnZXREREl0ZW0xKENXUF9JVEVNX0JJTiwgYmluLmxlbmd0aCwgdWludDhfdCk7ICAgICAgICAgICAgICAvLyBiaW4gOAorICAgICAgICAgICAgICAgICAgICBjd191bnBhY2tfYXNzZXJ0X2Jsb2IoYmluKTsKKyAgICAgICAgY2FzZSAweGM1OiAgZ2V0RERJdGVtMihDV1BfSVRFTV9CSU4sIGJpbi5sZW5ndGgsIHVpbnQxNl90KTsgICAgICAgICAgICAgLy8gYmluIDE2CisgICAgICAgICAgICAgICAgICAgIGN3X3VucGFja19hc3NlcnRfYmxvYihiaW4pOworICAgICAgICBjYXNlIDB4YzY6ICBnZXREREl0ZW00KENXUF9JVEVNX0JJTiwgYmluLmxlbmd0aCwgdWludDMyX3QpOyAgICAgICAgICAgICAvLyBiaW4gMzIKKyAgICAgICAgICAgICAgICAgICAgY3dfdW5wYWNrX2Fzc2VydF9ibG9iKGJpbik7CisgICAgICAgIGNhc2UgMHhjNzogIGdldERESXRlbTEoQ1dQX0lURU1fRVhULCBleHQubGVuZ3RoLCB1aW50OF90KTsgICAgICAgICAgICAgIC8vIGV4dCA4CisgICAgICAgICAgICAgICAgICAgIGN3X3VucGFja19hc3NlcnRfc3BhY2UoMSk7CisgICAgICAgICAgICAgICAgICAgIHVucGFja19jb250ZXh0LT5pdGVtLnR5cGUgPSAqKGludDhfdCopcDsKKyAgICAgICAgICAgICAgICAgICAgY3dfdW5wYWNrX2Fzc2VydF9ibG9iKGV4dCk7CisgICAgICAgIGNhc2UgMHhjODogIGdldERESXRlbTIoQ1dQX0lURU1fRVhULCBleHQubGVuZ3RoLCB1aW50MTZfdCk7ICAgICAgICAgICAgIC8vIGV4dCAxNgorICAgICAgICAgICAgICAgICAgICBjd191bnBhY2tfYXNzZXJ0X3NwYWNlKDEpOworICAgICAgICAgICAgICAgICAgICB1bnBhY2tfY29udGV4dC0+aXRlbS50eXBlID0gKihpbnQ4X3QqKXA7CisgICAgICAgICAgICAgICAgICAgIGN3X3VucGFja19hc3NlcnRfYmxvYihleHQpOworICAgICAgICBjYXNlIDB4Yzk6ICBnZXREREl0ZW00KENXUF9JVEVNX0VYVCwgZXh0Lmxlbmd0aCwgdWludDMyX3QpOyAgICAgICAgICAgICAvLyBleHQgMzIKKyAgICAgICAgICAgICAgICAgICAgY3dfdW5wYWNrX2Fzc2VydF9zcGFjZSgxKTsKKyAgICAgICAgICAgICAgICAgICAgdW5wYWNrX2NvbnRleHQtPml0ZW0udHlwZSA9ICooaW50OF90KilwOworICAgICAgICAgICAgICAgICAgICBjd191bnBhY2tfYXNzZXJ0X2Jsb2IoZXh0KTsKKyAgICAgICAgY2FzZSAweGNhOiAgdW5wYWNrX2NvbnRleHQtPml0ZW0udHlwZSA9IENXUF9JVEVNX0ZMT0FUOyAgICAgICAgICAgICAgICAgLy8gZmxvYXQKKyAgICAgICAgICAgICAgICAgICAgY3dfdW5wYWNrX2Fzc2VydF9zcGFjZSg0KTsKKyAgICAgICAgICAgICAgICAgICAgY3dfbG9hZDMyKHApOworICAgICAgICAgICAgICAgICAgICB1bnBhY2tfY29udGV4dC0+aXRlbS5hcy5yZWFsID0gKihmbG9hdCopJnRtcHUzMjsgICAgIHJldHVybjsKKyAgICAgICAgY2FzZSAweGNiOiAgZ2V0RERJdGVtOChDV1BfSVRFTV9ET1VCTEUpOyAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47ICAvLyBkb3VibGUKKyAgICAgICAgY2FzZSAweGNjOiAgZ2V0RERJdGVtMShDV1BfSVRFTV9QT1NJVElWRV9JTlRFR0VSLCB1NjQsIHVpbnQ4X3QpOyByZXR1cm47ICAvLyB1bnNpZ25lZCBpbnQgIDgKKyAgICAgICAgY2FzZSAweGNkOiAgZ2V0RERJdGVtMihDV1BfSVRFTV9QT1NJVElWRV9JTlRFR0VSLCB1NjQsIHVpbnQxNl90KTsgcmV0dXJuOyAvLyB1bnNpZ25lZCBpbnQgMTYKKyAgICAgICAgY2FzZSAweGNlOiAgZ2V0RERJdGVtNChDV1BfSVRFTV9QT1NJVElWRV9JTlRFR0VSLCB1NjQsIHVpbnQzMl90KTsgcmV0dXJuOyAvLyB1bnNpZ25lZCBpbnQgMzIKKyAgICAgICAgY2FzZSAweGNmOiAgZ2V0RERJdGVtOChDV1BfSVRFTV9QT1NJVElWRV9JTlRFR0VSKTsgICAgICAgICAgICAgICByZXR1cm47ICAvLyB1bnNpZ25lZCBpbnQgNjQKKyAgICAgICAgY2FzZSAweGQwOiAgZ2V0RERJdGVtMShDV1BfSVRFTV9ORUdBVElWRV9JTlRFR0VSLCBpNjQsIGludDhfdCk7ICAgICAgICAgIC8vIHNpZ25lZCBpbnQgIDgKKyAgICAgICAgICAgICAgICAgICAgaWYgKHVucGFja19jb250ZXh0LT5pdGVtLmFzLmk2NCA+PSAwKQorICAgICAgICAgICAgICAgICAgICAgICAgdW5wYWNrX2NvbnRleHQtPml0ZW0udHlwZSA9IENXUF9JVEVNX1BPU0lUSVZFX0lOVEVHRVI7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgY2FzZSAweGQxOiAgZ2V0RERJdGVtMihDV1BfSVRFTV9ORUdBVElWRV9JTlRFR0VSLCBpNjQsIGludDE2X3QpOyAgICAgICAgLy8gc2lnbmVkIGludCAxNgorICAgICAgICAgICAgICAgICAgICBpZiAodW5wYWNrX2NvbnRleHQtPml0ZW0uYXMuaTY0ID49IDApCisgICAgICAgICAgICAgICAgICAgICAgICB1bnBhY2tfY29udGV4dC0+aXRlbS50eXBlID0gQ1dQX0lURU1fUE9TSVRJVkVfSU5URUdFUjsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjYXNlIDB4ZDI6ICBnZXREREl0ZW00KENXUF9JVEVNX05FR0FUSVZFX0lOVEVHRVIsIGk2NCwgaW50MzJfdCk7ICAgICAgICAvLyBzaWduZWQgaW50IDMyCisgICAgICAgICAgICAgICAgICAgIGlmICh1bnBhY2tfY29udGV4dC0+aXRlbS5hcy5pNjQgPj0gMCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHVucGFja19jb250ZXh0LT5pdGVtLnR5cGUgPSBDV1BfSVRFTV9QT1NJVElWRV9JTlRFR0VSOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNhc2UgMHhkMzogIGdldERESXRlbTgoQ1dQX0lURU1fTkVHQVRJVkVfSU5URUdFUik7CQkJCQkJLy8gc2lnbmVkIGludCA2NAorICAgICAgICAgICAgICAgICAgICBpZiAodW5wYWNrX2NvbnRleHQtPml0ZW0uYXMuaTY0ID49IDApCisgICAgICAgICAgICAgICAgICAgICAgICB1bnBhY2tfY29udGV4dC0+aXRlbS50eXBlID0gQ1dQX0lURU1fUE9TSVRJVkVfSU5URUdFUjsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjYXNlIDB4ZDQ6ICBnZXREREl0ZW1GaXgoMSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmaXhleHQgMQorICAgICAgICBjYXNlIDB4ZDU6ICBnZXREREl0ZW1GaXgoMik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmaXhleHQgMgorICAgICAgICBjYXNlIDB4ZDY6ICBnZXREREl0ZW1GaXgoNCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmaXhleHQgNAorICAgICAgICBjYXNlIDB4ZDc6ICBnZXREREl0ZW1GaXgoOCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmaXhleHQgOAorICAgICAgICBjYXNlIDB4ZDg6ICBnZXREREl0ZW1GaXgoMTYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmaXhleHQgMTYKKyAgICAgICAgY2FzZSAweGQ5OiAgZ2V0RERJdGVtMShDV1BfSVRFTV9TVFIsIHN0ci5sZW5ndGgsIHVpbnQ4X3QpOyAgICAgICAgICAgICAgLy8gc3RyIDgKKyAgICAgICAgICAgICAgICAgICAgY3dfdW5wYWNrX2Fzc2VydF9ibG9iKHN0cik7CisgICAgICAgIGNhc2UgMHhkYTogIGdldERESXRlbTIoQ1dQX0lURU1fU1RSLCBzdHIubGVuZ3RoLCB1aW50MTZfdCk7ICAgICAgICAgICAgIC8vIHN0ciAxNgorICAgICAgICAgICAgICAgICAgICBjd191bnBhY2tfYXNzZXJ0X2Jsb2Ioc3RyKTsKKyAgICAgICAgY2FzZSAweGRiOiAgZ2V0RERJdGVtNChDV1BfSVRFTV9TVFIsIHN0ci5sZW5ndGgsIHVpbnQzMl90KTsgICAgICAgICAgICAgLy8gc3RyIDMyCisgICAgICAgICAgICAgICAgICAgIGN3X3VucGFja19hc3NlcnRfYmxvYihzdHIpOworICAgICAgICBjYXNlIDB4ZGM6ICBnZXREREl0ZW0yKENXUF9JVEVNX0FSUkFZLCBhcnJheS5zaXplLCB1aW50MTZfdCk7ICAgcmV0dXJuOyAgLy8gYXJyYXkgMTYKKyAgICAgICAgY2FzZSAweGRkOiAgZ2V0RERJdGVtNChDV1BfSVRFTV9BUlJBWSwgYXJyYXkuc2l6ZSwgdWludDMyX3QpOyAgIHJldHVybjsgIC8vIGFycmF5IDMyCisgICAgICAgIGNhc2UgMHhkZTogIGdldERESXRlbTIoQ1dQX0lURU1fTUFQLCBtYXAuc2l6ZSwgdWludDE2X3QpOyAgICAgICByZXR1cm47ICAvLyBtYXAgMTYKKyAgICAgICAgY2FzZSAweGRmOiAgZ2V0RERJdGVtNChDV1BfSVRFTV9NQVAsIG1hcC5zaXplLCB1aW50MzJfdCk7ICAgICAgIHJldHVybjsgIC8vIG1hcCAzMgorICAgICAgICBjYXNlIDB4ZTA6IGNhc2UgMHhlMTogY2FzZSAweGUyOiBjYXNlIDB4ZTM6IGNhc2UgMHhlNDogY2FzZSAweGU1OiBjYXNlIDB4ZTY6IGNhc2UgMHhlNzoKKyAgICAgICAgY2FzZSAweGU4OiBjYXNlIDB4ZTk6IGNhc2UgMHhlYTogY2FzZSAweGViOiBjYXNlIDB4ZWM6IGNhc2UgMHhlZDogY2FzZSAweGVlOiBjYXNlIDB4ZWY6CisgICAgICAgIGNhc2UgMHhmMDogY2FzZSAweGYxOiBjYXNlIDB4ZjI6IGNhc2UgMHhmMzogY2FzZSAweGY0OiBjYXNlIDB4ZjU6IGNhc2UgMHhmNjogY2FzZSAweGY3OgorICAgICAgICBjYXNlIDB4Zjg6IGNhc2UgMHhmOTogY2FzZSAweGZhOiBjYXNlIDB4ZmI6IGNhc2UgMHhmYzogY2FzZSAweGZkOiBjYXNlIDB4ZmU6IGNhc2UgMHhmZjoKKyAgICAgICAgICAgICAgICAgICAgZ2V0RERJdGVtKENXUF9JVEVNX05FR0FUSVZFX0lOVEVHRVIsIGk2NCwgKGludDhfdCljKTsgcmV0dXJuOyAgICAvLyBuZWdhdGl2ZSBmaXhudW0KKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgVU5QQUNLX0VSUk9SKENXUF9SQ19NQUxGT1JNRURfSU5QVVQpCisgICAgfQorfQorCisjZGVmaW5lIGN3X3NraXBfYnl0ZXMobikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjd191bnBhY2tfYXNzZXJ0X3NwYWNlKChuKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgYnJlYWs7CisKK3ZvaWQgY3dfc2tpcF9pdGVtcyAoY3dfdW5wYWNrX2NvbnRleHQqIHVucGFja19jb250ZXh0LCBsb25nIGl0ZW1fY291bnQpCit7CisgICAgaWYgKHVucGFja19jb250ZXh0LT5yZXR1cm5fY29kZSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIHVpbnQzMl90ICAgIHRtcHUzMjsKKyAgICB1aW50MTZfdCAgICB0bXB1MTY7CisgICAgdWludDhfdCogICAgcDsKKyAgICAKKyAgICB3aGlsZSAoaXRlbV9jb3VudC0tID4gMCkKKyAgICB7CisjdW5kZWYgYnVmZmVyX2VuZF9yZXR1cm5fY29kZQorI2RlZmluZSBidWZmZXJfZW5kX3JldHVybl9jb2RlICBDV1BfUkNfRU5EX09GX0lOUFVUOworICAgICAgICBjd191bnBhY2tfYXNzZXJ0X3NwYWNlKDEpOworICAgICAgICB1aW50OF90IGMgPSAqcDsKKworI3VuZGVmIGJ1ZmZlcl9lbmRfcmV0dXJuX2NvZGUKKyNkZWZpbmUgYnVmZmVyX2VuZF9yZXR1cm5fY29kZSAgQ1dQX1JDX0JVRkZFUl9VTkRFUkZMT1c7CisgICAgICAgIHN3aXRjaCAoYykKKyAgICAgICAgeworICAgICAgICAgICAgY2FzZSAweDAwOiBjYXNlIDB4MDE6IGNhc2UgMHgwMjogY2FzZSAweDAzOiBjYXNlIDB4MDQ6IGNhc2UgMHgwNTogY2FzZSAweDA2OiBjYXNlIDB4MDc6CisgICAgICAgICAgICBjYXNlIDB4MDg6IGNhc2UgMHgwOTogY2FzZSAweDBhOiBjYXNlIDB4MGI6IGNhc2UgMHgwYzogY2FzZSAweDBkOiBjYXNlIDB4MGU6IGNhc2UgMHgwZjoKKyAgICAgICAgICAgIGNhc2UgMHgxMDogY2FzZSAweDExOiBjYXNlIDB4MTI6IGNhc2UgMHgxMzogY2FzZSAweDE0OiBjYXNlIDB4MTU6IGNhc2UgMHgxNjogY2FzZSAweDE3OgorICAgICAgICAgICAgY2FzZSAweDE4OiBjYXNlIDB4MTk6IGNhc2UgMHgxYTogY2FzZSAweDFiOiBjYXNlIDB4MWM6IGNhc2UgMHgxZDogY2FzZSAweDFlOiBjYXNlIDB4MWY6CisgICAgICAgICAgICBjYXNlIDB4MjA6IGNhc2UgMHgyMTogY2FzZSAweDIyOiBjYXNlIDB4MjM6IGNhc2UgMHgyNDogY2FzZSAweDI1OiBjYXNlIDB4MjY6IGNhc2UgMHgyNzoKKyAgICAgICAgICAgIGNhc2UgMHgyODogY2FzZSAweDI5OiBjYXNlIDB4MmE6IGNhc2UgMHgyYjogY2FzZSAweDJjOiBjYXNlIDB4MmQ6IGNhc2UgMHgyZTogY2FzZSAweDJmOgorICAgICAgICAgICAgY2FzZSAweDMwOiBjYXNlIDB4MzE6IGNhc2UgMHgzMjogY2FzZSAweDMzOiBjYXNlIDB4MzQ6IGNhc2UgMHgzNTogY2FzZSAweDM2OiBjYXNlIDB4Mzc6CisgICAgICAgICAgICBjYXNlIDB4Mzg6IGNhc2UgMHgzOTogY2FzZSAweDNhOiBjYXNlIDB4M2I6IGNhc2UgMHgzYzogY2FzZSAweDNkOiBjYXNlIDB4M2U6IGNhc2UgMHgzZjoKKyAgICAgICAgICAgIGNhc2UgMHg0MDogY2FzZSAweDQxOiBjYXNlIDB4NDI6IGNhc2UgMHg0MzogY2FzZSAweDQ0OiBjYXNlIDB4NDU6IGNhc2UgMHg0NjogY2FzZSAweDQ3OgorICAgICAgICAgICAgY2FzZSAweDQ4OiBjYXNlIDB4NDk6IGNhc2UgMHg0YTogY2FzZSAweDRiOiBjYXNlIDB4NGM6IGNhc2UgMHg0ZDogY2FzZSAweDRlOiBjYXNlIDB4NGY6CisgICAgICAgICAgICBjYXNlIDB4NTA6IGNhc2UgMHg1MTogY2FzZSAweDUyOiBjYXNlIDB4NTM6IGNhc2UgMHg1NDogY2FzZSAweDU1OiBjYXNlIDB4NTY6IGNhc2UgMHg1NzoKKyAgICAgICAgICAgIGNhc2UgMHg1ODogY2FzZSAweDU5OiBjYXNlIDB4NWE6IGNhc2UgMHg1YjogY2FzZSAweDVjOiBjYXNlIDB4NWQ6IGNhc2UgMHg1ZTogY2FzZSAweDVmOgorICAgICAgICAgICAgY2FzZSAweDYwOiBjYXNlIDB4NjE6IGNhc2UgMHg2MjogY2FzZSAweDYzOiBjYXNlIDB4NjQ6IGNhc2UgMHg2NTogY2FzZSAweDY2OiBjYXNlIDB4Njc6CisgICAgICAgICAgICBjYXNlIDB4Njg6IGNhc2UgMHg2OTogY2FzZSAweDZhOiBjYXNlIDB4NmI6IGNhc2UgMHg2YzogY2FzZSAweDZkOiBjYXNlIDB4NmU6IGNhc2UgMHg2ZjoKKyAgICAgICAgICAgIGNhc2UgMHg3MDogY2FzZSAweDcxOiBjYXNlIDB4NzI6IGNhc2UgMHg3MzogY2FzZSAweDc0OiBjYXNlIDB4NzU6IGNhc2UgMHg3NjogY2FzZSAweDc3OgorICAgICAgICAgICAgY2FzZSAweDc4OiBjYXNlIDB4Nzk6IGNhc2UgMHg3YTogY2FzZSAweDdiOiBjYXNlIDB4N2M6IGNhc2UgMHg3ZDogY2FzZSAweDdlOiBjYXNlIDB4N2Y6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdW5zaWduZWQgZml4aW50CisgICAgICAgICAgICBjYXNlIDB4ZTA6IGNhc2UgMHhlMTogY2FzZSAweGUyOiBjYXNlIDB4ZTM6IGNhc2UgMHhlNDogY2FzZSAweGU1OiBjYXNlIDB4ZTY6IGNhc2UgMHhlNzoKKyAgICAgICAgICAgIGNhc2UgMHhlODogY2FzZSAweGU5OiBjYXNlIDB4ZWE6IGNhc2UgMHhlYjogY2FzZSAweGVjOiBjYXNlIDB4ZWQ6IGNhc2UgMHhlZTogY2FzZSAweGVmOgorICAgICAgICAgICAgY2FzZSAweGYwOiBjYXNlIDB4ZjE6IGNhc2UgMHhmMjogY2FzZSAweGYzOiBjYXNlIDB4ZjQ6IGNhc2UgMHhmNTogY2FzZSAweGY2OiBjYXNlIDB4Zjc6CisgICAgICAgICAgICBjYXNlIDB4Zjg6IGNhc2UgMHhmOTogY2FzZSAweGZhOiBjYXNlIDB4ZmI6IGNhc2UgMHhmYzogY2FzZSAweGZkOiBjYXNlIDB4ZmU6IGNhc2UgMHhmZjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzaWduZWQgZml4aW50CisgICAgICAgICAgICBjYXNlIDB4YzA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbmlsCisgICAgICAgICAgICBjYXNlIDB4YzI6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZmFsc2UKKyAgICAgICAgICAgIGNhc2UgMHhjMzogIGJyZWFrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0cnVlCisgICAgICAgICAgICBjYXNlIDB4Y2M6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdW5zaWduZWQgaW50ICA4CisgICAgICAgICAgICBjYXNlIDB4ZDA6CWN3X3NraXBfYnl0ZXMoMSk7ICAgICAgICAgICAgICAgICAgICAgICAvLyBzaWduZWQgaW50ICA4CisgICAgICAgICAgICBjYXNlIDB4Y2Q6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdW5zaWduZWQgaW50IDE2CisgICAgICAgICAgICBjYXNlIDB4ZDE6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2lnbmVkIGludCAxNgorICAgICAgICAgICAgY2FzZSAweGQ0OiAgY3dfc2tpcF9ieXRlcygyKTsgICAgICAgICAgICAgICAgICAgICAgIC8vIGZpeGV4dCAxCisgICAgICAgICAgICBjYXNlIDB4ZDU6ICBjd19za2lwX2J5dGVzKDMpOyAgICAgICAgICAgICAgICAgICAgICAgLy8gZml4ZXh0IDIKKyAgICAgICAgICAgIGNhc2UgMHhjYTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmbG9hdAorICAgICAgICAgICAgY2FzZSAweGNlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVuc2lnbmVkIGludCAzMgorICAgICAgICAgICAgY2FzZSAweGQyOiAgY3dfc2tpcF9ieXRlcyg0KTsgICAgICAgICAgICAgICAgICAgICAgIC8vIHNpZ25lZCBpbnQgMzIKKyAgICAgICAgICAgIGNhc2UgMHhkNjogIGN3X3NraXBfYnl0ZXMoNSk7ICAgICAgICAgICAgICAgICAgICAgICAvLyBmaXhleHQgNAorICAgICAgICAgICAgY2FzZSAweGNiOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvdWJsZQorICAgICAgICAgICAgY2FzZSAweGNmOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVuc2lnbmVkIGludCA2NAorICAgICAgICAgICAgY2FzZSAweGQzOiAgY3dfc2tpcF9ieXRlcyg4KTsgICAgICAgICAgICAgICAgICAgICAgIC8vIHNpZ25lZCBpbnQgNjQKKyAgICAgICAgICAgIGNhc2UgMHhkNzogIGN3X3NraXBfYnl0ZXMoOSk7ICAgICAgICAgICAgICAgICAgICAgICAvLyBmaXhleHQgOAorICAgICAgICAgICAgY2FzZSAweGQ4OiAgY3dfc2tpcF9ieXRlcygxNyk7ICAgICAgICAgICAgICAgICAgICAgIC8vIGZpeGV4dCAxNgorICAgICAgICAgICAgY2FzZSAweGEwOiBjYXNlIDB4YTE6IGNhc2UgMHhhMjogY2FzZSAweGEzOiBjYXNlIDB4YTQ6IGNhc2UgMHhhNTogY2FzZSAweGE2OiBjYXNlIDB4YTc6CisgICAgICAgICAgICBjYXNlIDB4YTg6IGNhc2UgMHhhOTogY2FzZSAweGFhOiBjYXNlIDB4YWI6IGNhc2UgMHhhYzogY2FzZSAweGFkOiBjYXNlIDB4YWU6IGNhc2UgMHhhZjoKKyAgICAgICAgICAgIGNhc2UgMHhiMDogY2FzZSAweGIxOiBjYXNlIDB4YjI6IGNhc2UgMHhiMzogY2FzZSAweGI0OiBjYXNlIDB4YjU6IGNhc2UgMHhiNjogY2FzZSAweGI3OgorICAgICAgICAgICAgY2FzZSAweGI4OiBjYXNlIDB4Yjk6IGNhc2UgMHhiYTogY2FzZSAweGJiOiBjYXNlIDB4YmM6IGNhc2UgMHhiZDogY2FzZSAweGJlOiBjYXNlIDB4YmY6CisgICAgICAgICAgICAgICAgY3dfc2tpcF9ieXRlcyhjICYgMHgxZik7ICAgICAgICAgICAgICAgICAgICAgICAgLy8gZml4c3RyCisgICAgICAgICAgICBjYXNlIDB4ZDk6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RyIDgKKyAgICAgICAgICAgIGNhc2UgMHhjNDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiaW4gOAorICAgICAgICAgICAgICAgIGN3X3VucGFja19hc3NlcnRfc3BhY2UoMSk7CisgICAgICAgICAgICAgICAgdG1wdTMyID0gKnA7CisgICAgICAgICAgICAgICAgY3dfc2tpcF9ieXRlcyh0bXB1MzIpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgY2FzZSAweGRhOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0ciAxNgorICAgICAgICAgICAgY2FzZSAweGM1OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJpbiAxNgorICAgICAgICAgICAgICAgIGN3X3VucGFja19hc3NlcnRfc3BhY2UoMik7CisgICAgICAgICAgICAgICAgY3dfbG9hZDE2KHApOworICAgICAgICAgICAgICAgIGN3X3NraXBfYnl0ZXModG1wdTE2KTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgMHhkYjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdHIgMzIKKyAgICAgICAgICAgIGNhc2UgMHhjNjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiaW4gMzIKKyAgICAgICAgICAgICAgICBjd191bnBhY2tfYXNzZXJ0X3NwYWNlKDQpOworICAgICAgICAgICAgICAgIGN3X2xvYWQzMihwKTsKKyAgICAgICAgICAgICAgICBjd19za2lwX2J5dGVzKHRtcHUzMik7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBjYXNlIDB4ODA6IGNhc2UgMHg4MTogY2FzZSAweDgyOiBjYXNlIDB4ODM6IGNhc2UgMHg4NDogY2FzZSAweDg1OiBjYXNlIDB4ODY6IGNhc2UgMHg4NzoKKyAgICAgICAgICAgIGNhc2UgMHg4ODogY2FzZSAweDg5OiBjYXNlIDB4OGE6IGNhc2UgMHg4YjogY2FzZSAweDhjOiBjYXNlIDB4OGQ6IGNhc2UgMHg4ZTogY2FzZSAweDhmOgorICAgICAgICAgICAgICAgIGl0ZW1fY291bnQgKz0gMiooYyAmIDE1KTsgICAgICAgICAgICAgICAgICAgICAgIC8vIEZpeE1hcAorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIDB4OTA6IGNhc2UgMHg5MTogY2FzZSAweDkyOiBjYXNlIDB4OTM6IGNhc2UgMHg5NDogY2FzZSAweDk1OiBjYXNlIDB4OTY6IGNhc2UgMHg5NzoKKyAgICAgICAgICAgIGNhc2UgMHg5ODogY2FzZSAweDk5OiBjYXNlIDB4OWE6IGNhc2UgMHg5YjogY2FzZSAweDljOiBjYXNlIDB4OWQ6IGNhc2UgMHg5ZTogY2FzZSAweDlmOgorICAgICAgICAgICAgICAgIGl0ZW1fY291bnQgKz0gYyAmIDE1OyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZpeEFycmF5CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBjYXNlIDB4ZGM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXJyYXkgMTYKKyAgICAgICAgICAgICAgICBjd191bnBhY2tfYXNzZXJ0X3NwYWNlKDIpOworICAgICAgICAgICAgICAgIGN3X2xvYWQxNihwKTsKKyAgICAgICAgICAgICAgICBpdGVtX2NvdW50ICs9IHRtcHUxNjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgMHhkZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtYXAgMTYKKyAgICAgICAgICAgICAgICBjd191bnBhY2tfYXNzZXJ0X3NwYWNlKDIpOworICAgICAgICAgICAgICAgIGN3X2xvYWQxNihwKTsKKyAgICAgICAgICAgICAgICBpdGVtX2NvdW50ICs9IDIqdG1wdTE2OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgY2FzZSAweGRkOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFycmF5IDMyCisgICAgICAgICAgICAgICAgY3dfdW5wYWNrX2Fzc2VydF9zcGFjZSg0KTsKKyAgICAgICAgICAgICAgICBjd19sb2FkMzIocCk7CisgICAgICAgICAgICAgICAgaXRlbV9jb3VudCArPSB0bXB1MzI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBjYXNlIDB4ZGY6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWFwIDMyCisgICAgICAgICAgICAgICAgY3dfdW5wYWNrX2Fzc2VydF9zcGFjZSg0KTsKKyAgICAgICAgICAgICAgICBjd19sb2FkMzIocCk7CisgICAgICAgICAgICAgICAgaXRlbV9jb3VudCArPSAyKnRtcHUzMjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgMHhjNzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBleHQgOAorICAgICAgICAgICAgICAgIGN3X3VucGFja19hc3NlcnRfc3BhY2UoMSk7CisgICAgICAgICAgICAgICAgdG1wdTMyID0gKnA7CisgICAgICAgICAgICAgICAgY3dfc2tpcF9ieXRlcyh0bXB1MzIgKzEpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgY2FzZSAweGM4OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGV4dCAxNgorICAgICAgICAgICAgICAgIGN3X3VucGFja19hc3NlcnRfc3BhY2UoMik7CisgICAgICAgICAgICAgICAgY3dfbG9hZDE2KHApOworICAgICAgICAgICAgICAgIGN3X3NraXBfYnl0ZXModG1wdTE2ICsxKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgMHhjOTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBleHQgMzIKKyAgICAgICAgICAgICAgICBjd191bnBhY2tfYXNzZXJ0X3NwYWNlKDQpOworICAgICAgICAgICAgICAgIGN3X2xvYWQzMihwKTsKKyAgICAgICAgICAgICAgICBjd19za2lwX2J5dGVzKHRtcHUzMiArMSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBkZWZhdWx0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWxsZWdhbAorICAgICAgICAgICAgICAgIFVOUEFDS19FUlJPUihDV1BfUkNfTUFMRk9STUVEX0lOUFVUKQorICAgICAgICB9CisgICAgfQorICAgIHJldHVybjsKK30KKworLyogZW5kIGN3cGFjay5jICovCmRpZmYgLS1naXQgYS9tc2dwYWNrL2N3cGFjay5oIGIvbXNncGFjay9jd3BhY2suaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMjk3ZDU2Ci0tLSAvZGV2L251bGwKKysrIGIvbXNncGFjay9jd3BhY2suaApAQCAtMCwwICsxLDE2NiBAQAorLyogICAgICBDV1BhY2sgLSBjd3BhY2suaCAgICovCisvKgorIFRoZSBNSVQgTGljZW5zZSAoTUlUKQorIAorIENvcHlyaWdodCAoYykgMjAxNyBDbGFlcyBXaWhsYm9yZworIAorIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YgdGhpcworIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUKKyB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksCisgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQKKyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgCisgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvcgorIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAKKyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcKKyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQKKyBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLAorIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKKyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqLworCisjaWZuZGVmIENXUGFja19IX18KKyNkZWZpbmUgQ1dQYWNrX0hfXworCisKKy8vI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHN0ZGJvb2wuaD4KKworLy96enEgYWRkCisjaW5jbHVkZSAic3RkaW50LmgiCisKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgIFJldHVybiBDb2RlcyAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjZGVmaW5lIENXUF9SQ19PSyAgICAgICAgICAgICAgICAgICAgIDAKKyNkZWZpbmUgQ1dQX1JDX0VORF9PRl9JTlBVVCAgICAgICAgICAtMQorI2RlZmluZSBDV1BfUkNfQlVGRkVSX09WRVJGTE9XICAgICAgIC0yCisjZGVmaW5lIENXUF9SQ19CVUZGRVJfVU5ERVJGTE9XICAgICAgLTMKKyNkZWZpbmUgQ1dQX1JDX01BTEZPUk1FRF9JTlBVVCAgICAgICAtNAorI2RlZmluZSBDV1BfUkNfV1JPTkdfQllURV9PUkRFUiAgICAgIC01CisjZGVmaW5lIENXUF9SQ19FUlJPUl9JTl9IQU5ETEVSICAgICAgLTYKKyNkZWZpbmUgQ1dQX1JDX0lMTEVHQUxfQ0FMTCAgICAgICAgICAtNworI2RlZmluZSBDV1BfUkNfTUFMTE9DX0VSUk9SICAgICAgICAgIC04CisjZGVmaW5lIENXUF9SQ19TVE9QUEVEICAgICAgICAgICAgICAgLTkKKworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICAgUCBBIEMgSyAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworc3RydWN0IGN3X3BhY2tfY29udGV4dDsKKwordHlwZWRlZiBpbnQgKCpwYWNrX292ZXJmbG93X2hhbmRsZXIpKHN0cnVjdCBjd19wYWNrX2NvbnRleHQqLCB1bnNpZ25lZCBsb25nKTsKKwordHlwZWRlZiBzdHJ1Y3QgY3dfcGFja19jb250ZXh0IHsKKyAgICB1aW50OF90KiAgICAgICAgICAgICAgICBzdGFydDsKKyAgICB1aW50OF90KiAgICAgICAgICAgICAgICBjdXJyZW50OworICAgIHVpbnQ4X3QqICAgICAgICAgICAgICAgIGVuZDsKKyAgICBib29sICAgICAgICAgICAgICAgICAgICBiZV9jb21wYXRpYmxlOworICAgIGludCAgICAgICAgICAgICAgICAgICAgIHJldHVybl9jb2RlOworICAgIGludCAgICAgICAgICAgICAgICAgICAgIGVycl9ubzsgICAgICAgICAgLyogaGFuZGxlcnMgY2FuIHNhdmUgZXJyb3IgaGVyZSAqLworICAgIHBhY2tfb3ZlcmZsb3dfaGFuZGxlciAgIGhhbmRsZV9wYWNrX292ZXJmbG93OworfSBjd19wYWNrX2NvbnRleHQ7CisKKworaW50IGN3X3BhY2tfY29udGV4dF9pbml0IChjd19wYWNrX2NvbnRleHQqIHBhY2tfY29udGV4dCwgdm9pZCogZGF0YSwgdW5zaWduZWQgbG9uZyBsZW5ndGgsIHBhY2tfb3ZlcmZsb3dfaGFuZGxlciBocG8pOwordm9pZCBjd19wYWNrX3NldF9jb21wYXRpYmlsaXR5IChjd19wYWNrX2NvbnRleHQqIHBhY2tfY29udGV4dCwgYm9vbCBiZV9jb21wYXRpYmxlKTsKKwordm9pZCBjd19wYWNrX25pbCAoY3dfcGFja19jb250ZXh0KiBwYWNrX2NvbnRleHQpOwordm9pZCBjd19wYWNrX3RydWUgKGN3X3BhY2tfY29udGV4dCogcGFja19jb250ZXh0KTsKK3ZvaWQgY3dfcGFja19mYWxzZSAoY3dfcGFja19jb250ZXh0KiBwYWNrX2NvbnRleHQpOwordm9pZCBjd19wYWNrX2Jvb2xlYW4gKGN3X3BhY2tfY29udGV4dCogcGFja19jb250ZXh0LCBib29sIGIpOworCit2b2lkIGN3X3BhY2tfc2lnbmVkIChjd19wYWNrX2NvbnRleHQqIHBhY2tfY29udGV4dCwgaW50NjRfdCBpKTsKK3ZvaWQgY3dfcGFja191bnNpZ25lZCAoY3dfcGFja19jb250ZXh0KiBwYWNrX2NvbnRleHQsIHVpbnQ2NF90IGkpOworCit2b2lkIGN3X3BhY2tfZmxvYXQgKGN3X3BhY2tfY29udGV4dCogcGFja19jb250ZXh0LCBmbG9hdCBmKTsKK3ZvaWQgY3dfcGFja19kb3VibGUgKGN3X3BhY2tfY29udGV4dCogcGFja19jb250ZXh0LCBkb3VibGUgZCk7Cit2b2lkIGN3X3BhY2tfcmVhbCAoY3dfcGFja19jb250ZXh0KiBwYWNrX2NvbnRleHQsIGRvdWJsZSBkKTsgICAvKiBQYWNrIGFzIGZsb2F0IGlmIHByZWNpc2lvbiBpc24ndCBkZXN0cm95ZWQgKi8KKwordm9pZCBjd19wYWNrX2FycmF5X3NpemUgKGN3X3BhY2tfY29udGV4dCogcGFja19jb250ZXh0LCB1aW50MzJfdCBuKTsKK3ZvaWQgY3dfcGFja19tYXBfc2l6ZSAoY3dfcGFja19jb250ZXh0KiBwYWNrX2NvbnRleHQsIHVpbnQzMl90IG4pOwordm9pZCBjd19wYWNrX3N0ciAoY3dfcGFja19jb250ZXh0KiBwYWNrX2NvbnRleHQsIGNvbnN0IGNoYXIqIHYsIHVpbnQzMl90IGwpOwordm9pZCBjd19wYWNrX2JpbiAoY3dfcGFja19jb250ZXh0KiBwYWNrX2NvbnRleHQsIGNvbnN0IHZvaWQqIHYsIHVpbnQzMl90IGwpOwordm9pZCBjd19wYWNrX2V4dCAoY3dfcGFja19jb250ZXh0KiBwYWNrX2NvbnRleHQsIGludDhfdCB0eXBlLCBjb25zdCB2b2lkKiB2LCB1aW50MzJfdCBsKTsKKwordm9pZCBjd19wYWNrX2luc2VydCAoY3dfcGFja19jb250ZXh0KiBwYWNrX2NvbnRleHQsIGNvbnN0IHZvaWQqIHYsIHVpbnQzMl90IGwpOworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgIFUgTiBQIEEgQyBLICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKwordHlwZWRlZiBlbnVtCit7CisgICAgQ1dQX0lURU1fTUlOX1JFU0VSVkVEX0VYVCAgICAgICA9IC0xMjgsCisgICAgQ1dQX0lURU1fTUFYX1JFU0VSVkVEX0VYVCAgICAgICA9IC0xLAorICAgIENXUF9JVEVNX01JTl9VU0VSX0VYVCAgICAgICAgICAgPSAwLAorICAgIENXUF9JVEVNX01BWF9VU0VSX0VYVCAgICAgICAgICAgPSAxMjcsCisgICAgQ1dQX0lURU1fTklMICAgICAgICAgICAgICAgICAgICA9IDMwMCwKKyAgICBDV1BfSVRFTV9CT09MRUFOICAgICAgICAgICAgICAgID0gMzAxLAorICAgIENXUF9JVEVNX1BPU0lUSVZFX0lOVEVHRVIgICAgICAgPSAzMDIsCisgICAgQ1dQX0lURU1fTkVHQVRJVkVfSU5URUdFUiAgICAgICA9IDMwMywKKyAgICBDV1BfSVRFTV9GTE9BVCAgICAgICAgICAgICAgICAgID0gMzA0LAorICAgIENXUF9JVEVNX0RPVUJMRSAgICAgICAgICAgICAgICAgPSAzMDUsCisgICAgQ1dQX0lURU1fU1RSICAgICAgICAgICAgICAgICAgICA9IDMwNiwKKyAgICBDV1BfSVRFTV9CSU4gICAgICAgICAgICAgICAgICAgID0gMzA3LAorICAgIENXUF9JVEVNX0FSUkFZICAgICAgICAgICAgICAgICAgPSAzMDgsCisgICAgQ1dQX0lURU1fTUFQICAgICAgICAgICAgICAgICAgICA9IDMwOSwKKyAgICBDV1BfSVRFTV9FWFQgICAgICAgICAgICAgICAgICAgID0gMzEwLAorICAgIENXUF9OT1RfQU5fSVRFTSAgICAgICAgICAgICAgICAgPSA5OTksCit9IGN3cGFja19pdGVtX3R5cGVzOworCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBjb25zdCB2b2lkKiAgICAgc3RhcnQ7CisgICAgdWludDMyX3QgICAgICAgIGxlbmd0aDsKK30gY3dwYWNrX2Jsb2I7CisKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIHVpbnQzMl90ICAgIHNpemU7Cit9IGN3cGFja19jb250YWluZXI7CisKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIGN3cGFja19pdGVtX3R5cGVzICAgdHlwZTsKKyAgICB1bmlvbgorICAgIHsKKyAgICAgICAgYm9vbCAgICAgICAgICAgIGJvb2xlYW47CisgICAgICAgIHVpbnQ2NF90ICAgICAgICB1NjQ7CisgICAgICAgIGludDY0X3QgICAgICAgICBpNjQ7CisgICAgICAgIGZsb2F0ICAgICAgICAgICByZWFsOworICAgICAgICBkb3VibGUgICAgICAgICAgbG9uZ19yZWFsOworICAgICAgICBjd3BhY2tfY29udGFpbmVyIGFycmF5OworICAgICAgICBjd3BhY2tfY29udGFpbmVyIG1hcDsKKyAgICAgICAgY3dwYWNrX2Jsb2IgICAgIHN0cjsKKyAgICAgICAgY3dwYWNrX2Jsb2IgICAgIGJpbjsKKyAgICAgICAgY3dwYWNrX2Jsb2IgICAgIGV4dDsKKyAgICB9IGFzOworfSBjd3BhY2tfaXRlbTsKKworc3RydWN0IGN3X3VucGFja19jb250ZXh0OworCit0eXBlZGVmIGludCAoKnVucGFja191bmRlcmZsb3dfaGFuZGxlcikoc3RydWN0IGN3X3VucGFja19jb250ZXh0KiwgdW5zaWduZWQgbG9uZyk7CisKK3R5cGVkZWYgc3RydWN0IGN3X3VucGFja19jb250ZXh0IHsKKyAgICBjd3BhY2tfaXRlbSAgICAgICAgICAgICAgICAgaXRlbTsKKyAgICB1aW50OF90KiAgICAgICAgICAgICAgICAgICAgc3RhcnQ7CisgICAgdWludDhfdCogICAgICAgICAgICAgICAgICAgIGN1cnJlbnQ7CisgICAgdWludDhfdCogICAgICAgICAgICAgICAgICAgIGVuZDsgICAgICAgICAgICAgLyogbG9naWNhbCBlbmQgb2YgYnVmZmVyICovCisgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybl9jb2RlOworICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICBlcnJfbm87ICAgICAgICAgIC8qIGhhbmRsZXJzIGNhbiBzYXZlIGVycm9yIGhlcmUgKi8KKyAgICB1bnBhY2tfdW5kZXJmbG93X2hhbmRsZXIgICAgaGFuZGxlX3VucGFja191bmRlcmZsb3c7Cit9IGN3X3VucGFja19jb250ZXh0OworCisKKworaW50IGN3X3VucGFja19jb250ZXh0X2luaXQgKGN3X3VucGFja19jb250ZXh0KiB1bnBhY2tfY29udGV4dCwgdm9pZCogZGF0YSwgdW5zaWduZWQgbG9uZyBsZW5ndGgsIHVucGFja191bmRlcmZsb3dfaGFuZGxlciBodXUpOworCit2b2lkIGN3X3VucGFja19uZXh0IChjd191bnBhY2tfY29udGV4dCogdW5wYWNrX2NvbnRleHQpOwordm9pZCBjd19za2lwX2l0ZW1zIChjd191bnBhY2tfY29udGV4dCogdW5wYWNrX2NvbnRleHQsIGxvbmcgaXRlbV9jb3VudCk7CisKKworI2VuZGlmICAvKiBDV1BhY2tfSF9fICovCmRpZmYgLS1naXQgYS9tc2dwYWNrL2N3cGFja19kZWZpbmVzLmggYi9tc2dwYWNrL2N3cGFja19kZWZpbmVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjJmMjlmNgotLS0gL2Rldi9udWxsCisrKyBiL21zZ3BhY2svY3dwYWNrX2RlZmluZXMuaApAQCAtMCwwICsxLDM2NSBAQAorLyogICAgICBDV1BhY2sgLSBjd3BhY2tfZGVmaW5lcy5oICAgKi8KKy8qCisgVGhlIE1JVCBMaWNlbnNlIChNSVQpCisgCisgQ29weXJpZ2h0IChjKSAyMDE3IENsYWVzIFdpaGxib3JnCisgCisgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZiB0aGlzCisgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZQorIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwKKyBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdAorIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAKKyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yCisgc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorIAorIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORworIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORAorIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sCisgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAorIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICovCisKKworI2lmbmRlZiBjd3BhY2tfZGVmaW5lc19oCisjZGVmaW5lIGN3cGFja19kZWZpbmVzX2gKKworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqICAgQSBMIEkgRyBOIE0gRSBOIFQgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qCisgKiBTb21ldGltZSB0aGUgcHJvY2Vzc29yIGRlbWFuZHMgdGhhdCBpbnRlZ2VyIGFjY2VzcyBpcyB0byBhbiBldmVuIG1lbW9yeSBhZGRyZXNzLgorICogSW4gdGhhdCBjYXNlIGRlZmluZSBGT1JDRV9BTElHTk1FTlQKKyAqLworCisvKiAjZGVmaW5lIEZPUkNFX0FMSUdOTUVOVCAqLworIAorCisvKioqKioqKioqKioqKioqKioqKioqKioqKiAgIEMgICBTIFkgUyBUIEUgTSAgIEwgSSBCIFIgQSBSIFkgICAqKioqKioqKioqKioqKioqLworCisvKgorICogVGhlIHBhY2tlciB1c2VzICJtZW1jcHkiIHRvIG1vdmUgYmxvYnMuIElmIHlvdSBkb250IHdhbnQgdG8gbG9hZCBDIHN5c3RlbSBsaWJyYXJ5CisgKiBmb3IganVzdCB0aGF0LCBkZWZpbmUgRk9SQ0VfTk9fTElCUkFSWSBhbmQgQ1dQYWNrIHdpbGwgdXNlIGFuIGludGVybmFsICJtZW1jcHkiCisgKi8KKworLyogI2RlZmluZSBGT1JDRV9OT19MSUJSQVJZICovCisKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKiAgIEIgWSBUIEUgICBPIFIgRCBFIFIgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKgorICogVGhlIHBhY2svdW5wYWNrIHJvdXRpbmVzIGFyZSB3cml0dGVuIGluIHRocmVlIHZlcnNpb25zOiBmb3IgYmlnIGVuZGlhbiwgZm9yIAorICogbGl0dGxlIGVuZGlhbiBhbmQgaW5zZW5zaXRpdmUgdG8gYnl0ZSBvcmRlci4gQXMgeW91IGNhbiBnZXQgc29tZSBzcGVlZCBnYWluCisgKiBpZiB0aGUgYnl0ZSBvcmRlciBpcyBrbm93biwgd2UgdHJ5IHRoYXQgd2hlbiB3ZSBjYW4gY2VydGFpbmx5IGRldGVjdCBpdC4KKyAqIERlZmluZSBDT01QSUxFX0ZPUl9CSUdfRU5ESUFOIG9yIENPTVBJTEVfRk9SX0xJVFRMRV9FTkRJQU4gaWYgeW91IGtub3cuCisgKi8KKworI2lmbmRlZiBGT1JDRV9BTElHTk1FTlQKKyNpZiBkZWZpbmVkKF9fQllURV9PUkRFUl9fKSAmJiBkZWZpbmVkKF9fT1JERVJfTElUVExFX0VORElBTl9fKSAmJiBkZWZpbmVkKF9fT1JERVJfQklHX0VORElBTl9fKQorCisjaWYgX19CWVRFX09SREVSX18gPT0gX19PUkRFUl9CSUdfRU5ESUFOX18KKyNkZWZpbmUgQ09NUElMRV9GT1JfQklHX0VORElBTgorI2VsaWYgX19CWVRFX09SREVSX18gPT0gX19PUkRFUl9MSVRUTEVfRU5ESUFOX18KKyNkZWZpbmUgQ09NUElMRV9GT1JfTElUVExFX0VORElBTgorI2VuZGlmCisKKyNlbGlmIGRlZmluZWQoX19CWVRFX09SREVSKSAmJiBkZWZpbmVkKF9fTElUVExFX0VORElBTikgJiYgZGVmaW5lZChfX0JJR19FTkRJQU4pCisKKyNpZiBfX0JZVEVfT1JERVIgPT0gX19CSUdfRU5ESUFOCisjZGVmaW5lIENPTVBJTEVfRk9SX0JJR19FTkRJQU4KKyNlbGlmIF9fQllURV9PUkRFUiA9PSBfX0xJVFRMRV9FTkRJQU4KKyNkZWZpbmUgQ09NUElMRV9GT1JfTElUVExFX0VORElBTgorI2VuZGlmCisKKyNlbGlmIGRlZmluZWQoX19CSUdfRU5ESUFOX18pCisjZGVmaW5lIENPTVBJTEVfRk9SX0JJR19FTkRJQU4KKworI2VsaWYgZGVmaW5lZChfX0xJVFRMRV9FTkRJQU5fXykKKyNkZWZpbmUgQ09NUElMRV9GT1JfTElUVExFX0VORElBTgorCisjZWxpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pCisjZGVmaW5lIENPTVBJTEVfRk9SX0xJVFRMRV9FTkRJQU4KKworI2VuZGlmCisjZW5kaWYKKworLy96enEgYWRkCisjaW5jbHVkZSAic3RkaW50LmgiCisKKy8vI3VuZGVmIENPTVBJTEVfRk9SX0xJVFRMRV9FTkRJQU4KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgIFAgQSBDIEsgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKKworI2RlZmluZSBQQUNLX0VSUk9SKGVycm9yX2NvZGUpICAgICAgICAgICAgICAgICAgICAgICAgICBcCit7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBwYWNrX2NvbnRleHQtPnJldHVybl9jb2RlID0gZXJyb3JfY29kZTsgICAgICAgICAgICAgXAorICAgIHJldHVybjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCit9CisKKworCisjaWZkZWYgQ09NUElMRV9GT1JfQklHX0VORElBTgorCisjZGVmaW5lIGN3X3N0b3JlMTYoeCkgICoodWludDE2X3QqKXAgPSAqKHVpbnQxNl90KikmeDsKKyNkZWZpbmUgY3dfc3RvcmUzMih4KSAgKih1aW50MzJfdCopcCA9ICoodWludDMyX3QqKSZ4OworI2RlZmluZSBjd19zdG9yZTY0KHgpICAqKHVpbnQ2NF90KilwID0gKih1aW50NjRfdCopJng7CisKKyNlbHNlICAgIC8qIEJ5dGUgb3JkZXIgbGl0dGxlIGVuZGlhbiBvciB1bmRldGVybWluZWQgKi8KKworI2lmZGVmIENPTVBJTEVfRk9SX0xJVFRMRV9FTkRJQU4KKworI2RlZmluZSBjd19zdG9yZTE2KGQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICoodWludDE2X3QqKXAgPSAodWludDE2X3QpKCgoKGQpID4+IDgpICYgMHgwZmYpIHwgKGQpIDw8IDgpCisKKyNkZWZpbmUgY3dfc3RvcmUzMih4KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAqKHVpbnQzMl90KilwID0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh1aW50MzJfdCkoKCgodWludDMyX3QpKHgpKSA+PiAyNCkgfCAgICAgICAgICAgICAgIFwKKyAgICAgICAgKCgodWludDMyX3QpKHgpICYgMHgwMGZmMDAwMCkgPj4gIDgpIHwgICAgICAgICAgICAgIFwKKyAgICAgICAgKCgodWludDMyX3QpKHgpICYgMHgwMDAwZmYwMCkgPDwgIDgpIHwgICAgICAgICAgICAgIFwKKyAgICAgICAgKCgodWludDMyX3QpKHgpKSA8PCAyNCkpKTsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKworI2RlZmluZSBjd19zdG9yZTY0KHgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICoodWludDY0X3QqKXAgPSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKHVpbnQ2NF90KSggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKCgoKHVpbnQ2NF90KSh4KSkgPj4gNDApIHwgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKCh1aW50NjRfdCkoeCkpIDw8IDI0KSkgJiAweDAwMDBmZjAwMDAwMGZmMDBVTEwpIHwgXAorICAgICAgICAoKCgoKHVpbnQ2NF90KSh4KSkgPj4gMjQpIHwgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKCh1aW50NjRfdCkoeCkpIDw8IDQwKSkgJiAweDAwZmYwMDAwMDBmZjAwMDBVTEwpIHwgXAorICAgICAgICAoKCh1aW50NjRfdCkoeCkgJiAweDAwMDAwMGZmMDAwMDAwMDBVTEwpID4+ICA4KSB8ICAgXAorICAgICAgICAoKCh1aW50NjRfdCkoeCkgJiAweDAwMDAwMDAwZmYwMDAwMDBVTEwpIDw8ICA4KSB8ICAgXAorICAgICAgICAoKCh1aW50NjRfdCkoeCkpID4+IDU2KSB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKCh1aW50NjRfdCkoeCkpIDw8IDU2KSkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAorCisjZWxzZSAgIC8qIEJ5dGUgb3JkZXIgdW5kZXRlcm1pbmVkICovCisKKyNkZWZpbmUgY3dfc3RvcmUxNihkKSAgICAgICAgICAgXAorICAgICpwID0gKHVpbnQ4X3QpKGQgPj4gOCk7ICAgICBcCisgICAgcFsxXSA9ICh1aW50OF90KWQ7CisKKyNkZWZpbmUgY3dfc3RvcmUzMihkKSAgICAgICAgICAgXAorICAgICpwID0gKHVpbnQ4X3QpKGQgPj4gMjQpOyAgICBcCisgICAgcFsxXSA9ICh1aW50OF90KShkID4+IDE2KTsgIFwKKyAgICBwWzJdID0gKHVpbnQ4X3QpKGQgPj4gOCk7ICAgXAorICAgIHBbM10gPSAodWludDhfdClkOworCisjZGVmaW5lIGN3X3N0b3JlNjQoeikgICAgICAgICAgIFwKKyAgICAqcCA9ICh1aW50OF90KSh6ID4+IDU2KTsgICAgXAorICAgIHBbMV0gPSAodWludDhfdCkoeiA+PiA0OCk7ICBcCisgICAgcFsyXSA9ICh1aW50OF90KSh6ID4+IDQwKTsgIFwKKyAgICBwWzNdID0gKHVpbnQ4X3QpKHogPj4gMzIpOyAgXAorICAgIHBbNF0gPSAodWludDhfdCkoeiA+PiAyNCk7ICBcCisgICAgcFs1XSA9ICh1aW50OF90KSh6ID4+IDE2KTsgIFwKKyAgICBwWzZdID0gKHVpbnQ4X3QpKHogPj4gOCk7ICAgXAorICAgIHBbN10gPSAodWludDhfdCl6OworI2VuZGlmCisjZW5kaWYKKworCisKKyNkZWZpbmUgY3dfcGFja19yZXNlcnZlX3NwYWNlKG1vcmUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAoreyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgcCA9IHBhY2tfY29udGV4dC0+Y3VycmVudDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB1aW50OF90KiBueXAgPSBwICsgbW9yZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmIChueXAgPiBwYWNrX2NvbnRleHQtPmVuZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKCFwYWNrX2NvbnRleHQtPmhhbmRsZV9wYWNrX292ZXJmbG93KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgUEFDS19FUlJPUihDV1BfUkNfQlVGRkVSX09WRVJGTE9XKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGludCByYyA9IHBhY2tfY29udGV4dC0+aGFuZGxlX3BhY2tfb3ZlcmZsb3cgKHBhY2tfY29udGV4dCwgKHVuc2lnbmVkIGxvbmcpKG1vcmUpKTsgIFwKKyAgICAgICAgaWYgKHJjKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgUEFDS19FUlJPUihyYykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHAgPSBwYWNrX2NvbnRleHQtPmN1cnJlbnQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgbnlwID0gcCArIG1vcmU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgcGFja19jb250ZXh0LT5jdXJyZW50ID0gbnlwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK30KKworCisjZGVmaW5lIHRyeU1vdmUwKHQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHVpbnQ4X3QgKnA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY3dfcGFja19yZXNlcnZlX3NwYWNlKDEpICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAqcCA9ICh1aW50OF90KSh0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHJldHVybjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCit9CisKKyNkZWZpbmUgdHJ5TW92ZTEodCxkKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAoreyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdWludDhfdCAqcDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjd19wYWNrX3Jlc2VydmVfc3BhY2UoMikgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICpwKysgPSAodWludDhfdCl0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKnAgPSAodWludDhfdClkOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICByZXR1cm47ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorfQorCisjZGVmaW5lIHRyeU1vdmUyKHQsZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHVpbnQ4X3QgKnA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY3dfcGFja19yZXNlcnZlX3NwYWNlKDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAqcCsrID0gKHVpbnQ4X3QpdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGN3X3N0b3JlMTYoZCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgcmV0dXJuOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK30KKworI2RlZmluZSB0cnlNb3ZlNCh0LGQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCit7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB1aW50OF90ICpwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGN3X3BhY2tfcmVzZXJ2ZV9zcGFjZSg1KSAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKnArKyA9ICh1aW50OF90KXQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjd19zdG9yZTMyKGQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHJldHVybjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCit9CisKKyNkZWZpbmUgdHJ5TW92ZTgodCxkKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAoreyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdWludDhfdCAqcDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjd19wYWNrX3Jlc2VydmVfc3BhY2UoOSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICpwKysgPSAodWludDhfdCl0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY3dfc3RvcmU2NChkKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICByZXR1cm47ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorfQorCisKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAgIFUgTiBQIEEgQyBLICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisKKyNkZWZpbmUgVU5QQUNLX0VSUk9SKGVycm9yX2NvZGUpICAgICAgICAgICAgICAgICAgICAgICAgXAoreyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdW5wYWNrX2NvbnRleHQtPml0ZW0udHlwZSA9IENXUF9OT1RfQU5fSVRFTTsgICAgICAgIFwKKyAgICB1bnBhY2tfY29udGV4dC0+cmV0dXJuX2NvZGUgPSBlcnJvcl9jb2RlOyAgICAgICAgICAgXAorICAgIHJldHVybjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCit9CisKKworCisjaWZkZWYgQ09NUElMRV9GT1JfQklHX0VORElBTgorCisjZGVmaW5lIGN3X2xvYWQxNihwdHIpICB0bXB1MTYgPSAqKHVpbnQxNl90KilwdHI7CisjZGVmaW5lIGN3X2xvYWQzMihwdHIpICB0bXB1MzIgPSAqKHVpbnQzMl90KilwdHI7CisjZGVmaW5lIGN3X2xvYWQ2NChwdHIpICB0bXB1NjQgPSAqKHVpbnQ2NF90KilwdHI7CisKKyNlbHNlICAgIC8qIEJ5dGUgb3JkZXIgbGl0dGxlIGVuZGlhbiBvciB1bmRldGVybWluZWQgKi8KKworI2lmZGVmIENPTVBJTEVfRk9SX0xJVFRMRV9FTkRJQU4KKworI2RlZmluZSBjd19sb2FkMTYocHRyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB0bXB1MTYgPSAqKHVpbnQxNl90KilwdHI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdG1wdTE2ID0gKHVpbnQxNl90KSgodG1wdTE2PDw4KSB8ICh0bXB1MTY+PjgpKQorCisjZGVmaW5lIGN3X2xvYWQzMihwdHIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHRtcHUzMiA9ICoodWludDMyX3QqKXB0cjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB0bXB1MzIgPSAodG1wdTMyPDwyNCkgfCAoKHRtcHUzMiAmIDB4ZmYwMCk8PDgpIHwgICAgICAgICAgICBcCisgICAgICAgICAgICAoKHRtcHUzMiAmIDB4ZmYwMDAwKT4+OCkgfCAodG1wdTMyPj4yNCkKKworI2RlZmluZSBjd19sb2FkNjQocHRyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB0bXB1NjQgPSAqKCh1aW50NjRfdCopcHRyKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdG1wdTY0ID0gICAgICAgICAgICAgICAgICAgKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAoKCh0bXB1NjQgPj4gNDApIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKHRtcHU2NCA8PCAyNCkpICYgMHgwMDAwZmYwMDAwMDBmZjAwVUxMKSB8ICAgICAgICAgICAgICBcCisgICAgICAgICgoKHRtcHU2NCA+PiAyNCkgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAodG1wdTY0IDw8IDQwKSkgJiAweDAwZmYwMDAwMDBmZjAwMDBVTEwpIHwgICAgICAgICAgICAgIFwKKyAgICAgICAgKCh0bXB1NjQgJiAweDAwMDAwMGZmMDAwMDAwMDBVTEwpID4+ICA4KSB8ICAgICAgICAgICAgICBcCisgICAgICAgICgodG1wdTY0ICYgMHgwMDAwMDAwMGZmMDAwMDAwVUxMKSA8PCAgOCkgfCAgICAgICAgICAgICAgXAorICAgICAgICAodG1wdTY0ID4+IDU2KSB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKHRtcHU2NCA8PCA1NikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCisKKyNlbHNlIC8qIEJ5dGUgb3JkZXIgdW5kZXRlcm1pbmVkICovCisKKyNkZWZpbmUgY3dfbG9hZDE2KHB0cikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdG1wdTE2ID0gKHVpbnQxNl90KSgoKnB0cisrKSA8PCA4KTsgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHRtcHUxNiB8PSAodWludDE2X3QpKCpwdHIrKykKKworI2RlZmluZSBjd19sb2FkMzIocHRyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB0bXB1MzIgPSAodWludDMyX3QpKCpwdHIrKyA8PCAyNCk7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdG1wdTMyIHw9ICh1aW50MzJfdCkoKnB0cisrIDw8IDE2KTsgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHRtcHUzMiB8PSAodWludDMyX3QpKCpwdHIrKyA8PCA4KTsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB0bXB1MzIgfD0gKHVpbnQzMl90KSgqcHRyKyspCisKKyNkZWZpbmUgY3dfbG9hZDY0KHB0cikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdG1wdTY0ID0gKCh1aW50NjRfdCkqcHRyKyspIDw8IDU2OyAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHRtcHU2NCB8PSAoKHVpbnQ2NF90KSpwdHIrKykgPDwgNDg7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB0bXB1NjQgfD0gKCh1aW50NjRfdCkqcHRyKyspIDw8IDQwOyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdG1wdTY0IHw9ICgodWludDY0X3QpKnB0cisrKSA8PCAzMjsgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHRtcHU2NCB8PSAoKHVpbnQ2NF90KSpwdHIrKykgPDwgMjQ7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB0bXB1NjQgfD0gKCh1aW50NjRfdCkqcHRyKyspIDw8IDE2OyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdG1wdTY0IHw9ICgodWludDY0X3QpKnB0cisrKSA8PCA4OyAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHRtcHU2NCB8PSAodWludDY0X3QpKnB0cisrCisKKyNlbmRpZgorI2VuZGlmCisKKworCisjZGVmaW5lIGN3X3VucGFja19hc3NlcnRfc3BhY2UobW9yZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAoreyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBwID0gdW5wYWNrX2NvbnRleHQtPmN1cnJlbnQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdWludDhfdCogbnlwID0gcCArIG1vcmU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmIChueXAgPiB1bnBhY2tfY29udGV4dC0+ZW5kKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmICghdW5wYWNrX2NvbnRleHQtPmhhbmRsZV91bnBhY2tfdW5kZXJmbG93KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgVU5QQUNLX0VSUk9SKGJ1ZmZlcl9lbmRfcmV0dXJuX2NvZGUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaW50IHJjID0gdW5wYWNrX2NvbnRleHQtPmhhbmRsZV91bnBhY2tfdW5kZXJmbG93ICh1bnBhY2tfY29udGV4dCwgKHVuc2lnbmVkIGxvbmcpKG1vcmUpKTsgICBcCisgICAgICAgIGlmIChyYyAhPSBDV1BfUkNfT0spICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGlmIChyYyAhPSBDV1BfUkNfRU5EX09GX0lOUFVUKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgVU5QQUNLX0VSUk9SKHJjKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBVTlBBQ0tfRVJST1IoYnVmZmVyX2VuZF9yZXR1cm5fY29kZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBwID0gdW5wYWNrX2NvbnRleHQtPmN1cnJlbnQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgbnlwID0gcCArIG1vcmU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHVucGFja19jb250ZXh0LT5jdXJyZW50ID0gbnlwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK30KKworCisjZGVmaW5lIGN3X3VucGFja19hc3NlcnRfYmxvYihibG9iKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGN3X3VucGFja19hc3NlcnRfc3BhY2UodW5wYWNrX2NvbnRleHQtPml0ZW0uYXMuYmxvYi5sZW5ndGgpOyAgICAgICAgICAgIFwKKyAgICB1bnBhY2tfY29udGV4dC0+aXRlbS5hcy5ibG9iLnN0YXJ0ID0gcDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgcmV0dXJuOworCisKKyNkZWZpbmUgZ2V0RERJdGVtKHR5cCx2YXIsdmFsKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdW5wYWNrX2NvbnRleHQtPml0ZW0udHlwZSA9IHR5cDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHVucGFja19jb250ZXh0LT5pdGVtLmFzLnZhciA9IHZhbDsKKworI2RlZmluZSBnZXREREl0ZW0xKHR5cCx2YXIsY2FzdCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB1bnBhY2tfY29udGV4dC0+aXRlbS50eXBlID0gdHlwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY3dfdW5wYWNrX2Fzc2VydF9zcGFjZSgxKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHVucGFja19jb250ZXh0LT5pdGVtLmFzLnZhciA9IChjYXN0KSpwOworCisjZGVmaW5lIGdldERESXRlbTIodHlwLHZhcixjYXN0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHVucGFja19jb250ZXh0LT5pdGVtLnR5cGUgPSB0eXA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjd191bnBhY2tfYXNzZXJ0X3NwYWNlKDIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY3dfbG9hZDE2KHApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHVucGFja19jb250ZXh0LT5pdGVtLmFzLnZhciA9IChjYXN0KXRtcHUxNjsKKworI2RlZmluZSBnZXREREl0ZW00KHR5cCx2YXIsY2FzdCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB1bnBhY2tfY29udGV4dC0+aXRlbS50eXBlID0gdHlwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY3dfdW5wYWNrX2Fzc2VydF9zcGFjZSg0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGN3X2xvYWQzMihwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB1bnBhY2tfY29udGV4dC0+aXRlbS5hcy52YXIgPSAoY2FzdCl0bXB1MzI7CisKKyNkZWZpbmUgZ2V0RERJdGVtOCh0eXApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdW5wYWNrX2NvbnRleHQtPml0ZW0udHlwZSA9IHR5cDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGN3X3VucGFja19hc3NlcnRfc3BhY2UoOCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjd19sb2FkNjQocCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdW5wYWNrX2NvbnRleHQtPml0ZW0uYXMudTY0ID0gdG1wdTY0OworCisjZGVmaW5lIGdldERESXRlbUZpeChsZW4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGN3X3VucGFja19hc3NlcnRfc3BhY2UoMSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB1bnBhY2tfY29udGV4dC0+aXRlbS50eXBlID0gKihpbnQ4X3QqKXA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdW5wYWNrX2NvbnRleHQtPml0ZW0uYXMuZXh0Lmxlbmd0aCA9IGxlbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGN3X3VucGFja19hc3NlcnRfYmxvYihleHQpOworCisKKworCisjZW5kaWYgLyogY3dwYWNrX2RlZmluZXNfaCAqLwpkaWZmIC0tZ2l0IGEvbmVjX2FwZHUuaCBiL25lY19hcGR1LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzFiZjYwYQotLS0gL2Rldi9udWxsCisrKyBiL25lY19hcGR1LmgKQEAgLTAsMCArMSwyMSBAQAorI2lmbmRlZiBfTkVDX0FQRFVfSF8KKyNkZWZpbmUgX05FQ19BUERVX0hfCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworaW50OCBwc2FtX3Bvd2Vyb24odWludDggY2lkKTsKK3ZvaWQgcHNhbV9wb3dyZW9mZih1aW50OCBjaWQpOworaW50OCBjYXJkX3JlcXVlc3QodWludDgqIHNhayx1aW50OCBzbnJbOF0pOworaW50OCBjYXJkX20xX21vZGUodWludDggY2FyZHBoeWlkWzhdKTsKK2ludDggY2FyZF9jcHVfbW9kZSh2b2lkKTsKK2ludDggY2FyZF9jcHVfZXhpc3Qodm9pZCk7CitpbnQ4IGNhcmRfcmZfcmVzZXQodm9pZCk7Cit2b2lkIGNhcmRfcmFkaW9fb24odm9pZCk7Cit2b2lkIGNhcmRfcmFkaW9fb2ZmKHZvaWQpOwordWludDE2IGNhcmRfbTFfYXV0aCh1aW50OCogY2FyZHBoeWlkLHVpbnQ4IGJsb2Nrbm8sIHVpbnQ4IGtleVs2XSk7Cit1aW50MTYgY2FyZF9tMV9yZWFkKHVpbnQ4IGJsb2Nrbm8sdWludDggcmVhZGJ1ZlsxNl0pOwordWludDE2IGNhcmRfbTFfd3JpdGUodWludDggYmxvY2tubyx1aW50OCB3cml0ZWJ1ZlsxNl0pOwordWludDE2IGNhcmRfY3B1X2V4Y2hhbmdlKHVpbnQ4KiBjbWRfYnVmLHVpbnQ4IGNtZF9sZW4sdWludDggRXhwZWN0ZWRSZXNwb25zZUxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OCoqIHJlY19idWYsdWludDgqIHJlY19idWZfbGVuKTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9uZWNfaGFyZHdhcmUuaCBiL25lY19oYXJkd2FyZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5YTFlN2MKLS0tIC9kZXYvbnVsbAorKysgYi9uZWNfaGFyZHdhcmUuaApAQCAtMCwwICsxLDIxIEBACisjaWZuZGVmIF9ORUNfSEFSRFdBUkVfSF8KKyNkZWZpbmUgX05FQ19IQVJEV0FSRV9IXworCisjaW5jbHVkZSAiY29uZmlnLmgiCisvLyNpbmNsdWRlICIuL2c0MDEzMDEvc3JjL0c0MDFfZHJ2X2h3X1YwMS5oIgorLy8jaW5jbHVkZSAiLi9nNDAxMzAxL3NyYy9zdG0zMmYxMHhfaXQuaCIKKy8vI2RlZmluZSBERVZJQ0VfVFlQRSAnZCc7CisKKworLypMRUQgz9TKvru6s+XH+CovCisvL2V4dGVybiB1aW50OCBMRURTRUdbN107ICAgICAgICAgICAgICAgIC8vz9TKvru6s+XH+AorCit1aW50MTYgc3BfaW5pdCh2b2lkKTsKK3ZvaWQgc3BfZmVlZF9kb2codm9pZCk7Cit2b2lkIHNwX3ZhbHZlX2NvbnRyb2wodm9pZCk7Cit2b2lkIHNwX2Zsb3dzZW5zb3JfY29udHJvbCh2b2lkKTsKK3VpbnQzMiBzcF9mbG93c2Vuc29yX2dldF9jb3VudCh2b2lkKTsKK3ZvaWQgc3BfZmxvd3NlbnNvcl9jb3VudF9jbGVhcih2b2lkKTsKK3VpbnQ4IHNwX2Zsb3dzZW5zb3JfY2hlY2tfdmFsaWQodm9pZCk7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvc3RfZndfbGliL2luYy9jb3JlX2NtMy5oIGIvc3RfZndfbGliL2luYy9jb3JlX2NtMy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhYjdiNGIKLS0tIC9kZXYvbnVsbAorKysgYi9zdF9md19saWIvaW5jL2NvcmVfY20zLmgKQEAgLTAsMCArMSwxODE4IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCisgKiBAZmlsZSAgICAgY29yZV9jbTMuaAorICogQGJyaWVmICAgIENNU0lTIENvcnRleC1NMyBDb3JlIFBlcmlwaGVyYWwgQWNjZXNzIExheWVyIEhlYWRlciBGaWxlCisgKiBAdmVyc2lvbiAgVjEuMzAKKyAqIEBkYXRlICAgICAzMC4gT2N0b2JlciAyMDA5CisgKgorICogQG5vdGUKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBAcGFyCisgKiBBUk0gTGltaXRlZCAoQVJNKSBpcyBzdXBwbHlpbmcgdGhpcyBzb2Z0d2FyZSBmb3IgdXNlIHdpdGggQ29ydGV4LU0gCisgKiBwcm9jZXNzb3IgYmFzZWQgbWljcm9jb250cm9sbGVycy4gIFRoaXMgZmlsZSBjYW4gYmUgZnJlZWx5IGRpc3RyaWJ1dGVkIAorICogd2l0aGluIGRldmVsb3BtZW50IHRvb2xzIHRoYXQgYXJlIHN1cHBvcnRpbmcgc3VjaCBBUk0gYmFzZWQgcHJvY2Vzc29ycy4gCisgKgorICogQHBhcgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLiAgTk8gV0FSUkFOVElFUywgV0hFVEhFUiBFWFBSRVNTLCBJTVBMSUVECisgKiBPUiBTVEFUVVRPUlksIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKKyAqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVBQTFkgVE8gVEhJUyBTT0ZUV0FSRS4KKyAqIEFSTSBTSEFMTCBOT1QsIElOIEFOWSBDSVJDVU1TVEFOQ0VTLCBCRSBMSUFCTEUgRk9SIFNQRUNJQUwsIElOQ0lERU5UQUwsIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMsIEZPUiBBTlkgUkVBU09OIFdIQVRTT0VWRVIuCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmbmRlZiBfX0NNM19DT1JFX0hfXworI2RlZmluZSBfX0NNM19DT1JFX0hfXworCisvKiogQGFkZHRvZ3JvdXAgQ01TSVNfQ00zX2NvcmVfTGludENpbmZpZ3VyYXRpb24gQ01TSVMgQ00zIENvcmUgTGludCBDb25maWd1cmF0aW9uCisgKgorICogTGlzdCBvZiBMaW50IG1lc3NhZ2VzIHdoaWNoIHdpbGwgYmUgc3VwcHJlc3NlZCBhbmQgbm90IHNob3duOgorICogICAtIEVycm9yIDEwOiBcbgorICogICAgIHJlZ2lzdGVyIHVpbnQzMl90IF9fcmVnQmFzZVByaSAgICAgICAgIF9fYXNtKCJiYXNlcHJpIik7IFxuCisgKiAgICAgRXJyb3IgMTA6IEV4cGVjdGluZyAnOycKKyAqIC4KKyAqICAgLSBFcnJvciA1MzA6IFxuCisgKiAgICAgcmV0dXJuKF9fcmVnQmFzZVByaSk7IFxuCisgKiAgICAgV2FybmluZyA1MzA6IFN5bWJvbCAnX19yZWdCYXNlUHJpJyAobGluZSAyNjQpIG5vdCBpbml0aWFsaXplZAorICogLiAKKyAqICAgLSBFcnJvciA1NTA6IFxuCisgKiAgICAgX19yZWdCYXNlUHJpID0gKGJhc2VQcmkgJiAweDFmZik7IFxuCisgKiAgICAgV2FybmluZyA1NTA6IFN5bWJvbCAnX19yZWdCYXNlUHJpJyAobGluZSAyNzEpIG5vdCBhY2Nlc3NlZAorICogLgorICogICAtIEVycm9yIDc1NDogXG4KKyAqICAgICB1aW50MzJfdCBSRVNFUlZFRDBbMjRdOyBcbgorICogICAgIEluZm8gNzU0OiBsb2NhbCBzdHJ1Y3R1cmUgbWVtYmVyICc8c29tZSwgbm90IHVzZWQgaW4gdGhlIEhBTD4nIChsaW5lIDEwOSwgZmlsZSAuL2NtM19jb3JlLmgpIG5vdCByZWZlcmVuY2VkCisgKiAuCisgKiAgIC0gRXJyb3IgNzUwOiBcbgorICogICAgICNkZWZpbmUgX19DTTNfQ09SRV9IX18gXG4KKyAqICAgICBJbmZvIDc1MDogbG9jYWwgbWFjcm8gJ19fQ00zX0NPUkVfSF9fJyAobGluZSA0MywgZmlsZS4vY20zX2NvcmUuaCkgbm90IHJlZmVyZW5jZWQKKyAqIC4KKyAqICAgLSBFcnJvciA1Mjg6IFxuCisgKiAgICAgc3RhdGljIF9fSU5MSU5FIHZvaWQgTlZJQ19EaXNhYmxlSVJRKHVpbnQzMl90IElSUW4pIFxuCisgKiAgICAgV2FybmluZyA1Mjg6IFN5bWJvbCAnTlZJQ19EaXNhYmxlSVJRKHVuc2lnbmVkIGludCknIChsaW5lIDQxOSwgZmlsZSAuL2NtM19jb3JlLmgpIG5vdCByZWZlcmVuY2VkCisgKiAuCisgKiAgIC0gRXJyb3IgNzUxOiBcbgorICogICAgIH0gSW50ZXJydXB0VHlwZV9UeXBlOyBcbgorICogICAgIEluZm8gNzUxOiBsb2NhbCB0eXBlZGVmICdJbnRlcnJ1cHRUeXBlX1R5cGUnIChsaW5lIDE3MCwgZmlsZSAuL2NtM19jb3JlLmgpIG5vdCByZWZlcmVuY2VkCisgKiAuCisgKiBOb3RlOiAgVG8gcmUtZW5hYmxlIGEgTWVzc2FnZSwgaW5zZXJ0IGEgc3BhY2UgYmVmb3JlICdsaW50JyAqCisgKgorICovCisKKy8qbGludCAtc2F2ZSAqLworLypsaW50IC1lMTAgICovCisvKmxpbnQgLWU1MzAgKi8KKy8qbGludCAtZTU1MCAqLworLypsaW50IC1lNzU0ICovCisvKmxpbnQgLWU3NTAgKi8KKy8qbGludCAtZTUyOCAqLworLypsaW50IC1lNzUxICovCisKKworLyoqIEBhZGR0b2dyb3VwIENNU0lTX0NNM19jb3JlX2RlZmluaXRpb25zIENNMyBDb3JlIERlZmluaXRpb25zCisgIFRoaXMgZmlsZSBkZWZpbmVzIGFsbCBzdHJ1Y3R1cmVzIGFuZCBzeW1ib2xzIGZvciBDTVNJUyBjb3JlOgorICAgIC0gQ01TSVMgdmVyc2lvbiBudW1iZXIKKyAgICAtIENvcnRleC1NIGNvcmUgcmVnaXN0ZXJzIGFuZCBiaXRmaWVsZHMKKyAgICAtIENvcnRleC1NIGNvcmUgcGVyaXBoZXJhbCBiYXNlIGFkZHJlc3MKKyAgQHsKKyAqLworCisjaWZkZWYgX19jcGx1c3BsdXMKKyBleHRlcm4gIkMiIHsKKyNlbmRpZiAKKworI2RlZmluZSBfX0NNM19DTVNJU19WRVJTSU9OX01BSU4gICgweDAxKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFszMToxNl0gQ01TSVMgSEFMIG1haW4gdmVyc2lvbiAqLworI2RlZmluZSBfX0NNM19DTVNJU19WRVJTSU9OX1NVQiAgICgweDMwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFsxNTowXSAgQ01TSVMgSEFMIHN1YiB2ZXJzaW9uICAqLworI2RlZmluZSBfX0NNM19DTVNJU19WRVJTSU9OICAgICAgICgoX19DTTNfQ01TSVNfVkVSU0lPTl9NQUlOIDw8IDE2KSB8IF9fQ00zX0NNU0lTX1ZFUlNJT05fU1VCKSAvKiE8IENNU0lTIEhBTCB2ZXJzaW9uIG51bWJlciAgICAgICAqLworCisjZGVmaW5lIF9fQ09SVEVYX00gICAgICAgICAgICAgICAgKDB4MDMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgQ29ydGV4IGNvcmUgICAgICAgICAgICAgICAgICAgICovCisKKyNpbmNsdWRlIDxzdGRpbnQuaD4gICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJbmNsdWRlIHN0YW5kYXJkIHR5cGVzICovCisKKyNpZiBkZWZpbmVkIChfX0lDQ0FSTV9fKQorICAjaW5jbHVkZSA8aW50cmluc2ljcy5oPiAgICAgICAgICAgICAgICAgICAgIC8qIElBUiBJbnRyaW5zaWNzICAgKi8KKyNlbmRpZgorCisKKyNpZm5kZWYgX19OVklDX1BSSU9fQklUUworICAjZGVmaW5lIF9fTlZJQ19QUklPX0JJVFMgICAgNCAgICAgICAgICAgICAgIC8qITwgc3RhbmRhcmQgZGVmaW5pdGlvbiBmb3IgTlZJQyBQcmlvcml0eSBCaXRzICovCisjZW5kaWYKKworCisKKworLyoqCisgKiBJTyBkZWZpbml0aW9ucworICoKKyAqIGRlZmluZSBhY2Nlc3MgcmVzdHJpY3Rpb25zIHRvIHBlcmlwaGVyYWwgcmVnaXN0ZXJzCisgKi8KKworI2lmZGVmIF9fY3BsdXNwbHVzCisgICNkZWZpbmUgICAgIF9fSSAgICAgdm9sYXRpbGUgICAgICAgICAgICAgICAgLyohPCBkZWZpbmVzICdyZWFkIG9ubHknIHBlcm1pc3Npb25zICAgICAgKi8KKyNlbHNlCisgICNkZWZpbmUgICAgIF9fSSAgICAgdm9sYXRpbGUgY29uc3QgICAgICAgICAgLyohPCBkZWZpbmVzICdyZWFkIG9ubHknIHBlcm1pc3Npb25zICAgICAgKi8KKyNlbmRpZgorI2RlZmluZSAgICAgX19PICAgICB2b2xhdGlsZSAgICAgICAgICAgICAgICAgIC8qITwgZGVmaW5lcyAnd3JpdGUgb25seScgcGVybWlzc2lvbnMgICAgICovCisjZGVmaW5lICAgICBfX0lPICAgIHZvbGF0aWxlICAgICAgICAgICAgICAgICAgLyohPCBkZWZpbmVzICdyZWFkIC8gd3JpdGUnIHBlcm1pc3Npb25zICAgKi8KKworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgICAgICAgICAgICAgICAgUmVnaXN0ZXIgQWJzdHJhY3Rpb24KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiogQGFkZHRvZ3JvdXAgQ01TSVNfQ00zX2NvcmVfcmVnaXN0ZXIgQ01TSVMgQ00zIENvcmUgUmVnaXN0ZXIKKyBAeworKi8KKworCisvKiogQGFkZHRvZ3JvdXAgQ01TSVNfQ00zX05WSUMgQ01TSVMgQ00zIE5WSUMKKyAgbWVtb3J5IG1hcHBlZCBzdHJ1Y3R1cmUgZm9yIE5lc3RlZCBWZWN0b3JlZCBJbnRlcnJ1cHQgQ29udHJvbGxlciAoTlZJQykKKyAgQHsKKyAqLwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgX19JTyB1aW50MzJfdCBJU0VSWzhdOyAgICAgICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogMHgwMDAgIEludGVycnVwdCBTZXQgRW5hYmxlIFJlZ2lzdGVyICAgICAgICAgICAqLworICAgICAgIHVpbnQzMl90IFJFU0VSVkVEMFsyNF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgX19JTyB1aW50MzJfdCBJQ0VSWzhdOyAgICAgICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogMHgwODAgIEludGVycnVwdCBDbGVhciBFbmFibGUgUmVnaXN0ZXIgICAgICAgICAqLworICAgICAgIHVpbnQzMl90IFJTRVJWRUQxWzI0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgX19JTyB1aW50MzJfdCBJU1BSWzhdOyAgICAgICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogMHgxMDAgIEludGVycnVwdCBTZXQgUGVuZGluZyBSZWdpc3RlciAgICAgICAgICAqLworICAgICAgIHVpbnQzMl90IFJFU0VSVkVEMlsyNF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgX19JTyB1aW50MzJfdCBJQ1BSWzhdOyAgICAgICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogMHgxODAgIEludGVycnVwdCBDbGVhciBQZW5kaW5nIFJlZ2lzdGVyICAgICAgICAqLworICAgICAgIHVpbnQzMl90IFJFU0VSVkVEM1syNF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgX19JTyB1aW50MzJfdCBJQUJSWzhdOyAgICAgICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogMHgyMDAgIEludGVycnVwdCBBY3RpdmUgYml0IFJlZ2lzdGVyICAgICAgICAgICAqLworICAgICAgIHVpbnQzMl90IFJFU0VSVkVENFs1Nl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgX19JTyB1aW50OF90ICBJUFsyNDBdOyAgICAgICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogMHgzMDAgIEludGVycnVwdCBQcmlvcml0eSBSZWdpc3RlciAoOEJpdCB3aWRlKSAqLworICAgICAgIHVpbnQzMl90IFJFU0VSVkVENVs2NDRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgX19PICB1aW50MzJfdCBTVElSOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogMHhFMDAgIFNvZnR3YXJlIFRyaWdnZXIgSW50ZXJydXB0IFJlZ2lzdGVyICAgICAqLworfSAgTlZJQ19UeXBlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisvKkB9Ki8gLyogZW5kIG9mIGdyb3VwIENNU0lTX0NNM19OVklDICovCisKKworLyoqIEBhZGR0b2dyb3VwIENNU0lTX0NNM19TQ0IgQ01TSVMgQ00zIFNDQgorICBtZW1vcnkgbWFwcGVkIHN0cnVjdHVyZSBmb3IgU3lzdGVtIENvbnRyb2wgQmxvY2sgKFNDQikKKyAgQHsKKyAqLwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgX19JICB1aW50MzJfdCBDUFVJRDsgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogMHgwMCAgQ1BVIElEIEJhc2UgUmVnaXN0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgX19JTyB1aW50MzJfdCBJQ1NSOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogMHgwNCAgSW50ZXJydXB0IENvbnRyb2wgU3RhdGUgUmVnaXN0ZXIgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgX19JTyB1aW50MzJfdCBWVE9SOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogMHgwOCAgVmVjdG9yIFRhYmxlIE9mZnNldCBSZWdpc3RlciAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgX19JTyB1aW50MzJfdCBBSVJDUjsgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogMHgwQyAgQXBwbGljYXRpb24gSW50ZXJydXB0IC8gUmVzZXQgQ29udHJvbCBSZWdpc3RlciAgICAgICAgKi8KKyAgX19JTyB1aW50MzJfdCBTQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogMHgxMCAgU3lzdGVtIENvbnRyb2wgUmVnaXN0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgX19JTyB1aW50MzJfdCBDQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogMHgxNCAgQ29uZmlndXJhdGlvbiBDb250cm9sIFJlZ2lzdGVyICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgX19JTyB1aW50OF90ICBTSFBbMTJdOyAgICAgICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogMHgxOCAgU3lzdGVtIEhhbmRsZXJzIFByaW9yaXR5IFJlZ2lzdGVycyAoNC03LCA4LTExLCAxMi0xNSkgKi8KKyAgX19JTyB1aW50MzJfdCBTSENTUjsgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogMHgyNCAgU3lzdGVtIEhhbmRsZXIgQ29udHJvbCBhbmQgU3RhdGUgUmVnaXN0ZXIgICAgICAgICAgICAgKi8KKyAgX19JTyB1aW50MzJfdCBDRlNSOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogMHgyOCAgQ29uZmlndXJhYmxlIEZhdWx0IFN0YXR1cyBSZWdpc3RlciAgICAgICAgICAgICAgICAgICAgKi8KKyAgX19JTyB1aW50MzJfdCBIRlNSOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogMHgyQyAgSGFyZCBGYXVsdCBTdGF0dXMgUmVnaXN0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgX19JTyB1aW50MzJfdCBERlNSOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogMHgzMCAgRGVidWcgRmF1bHQgU3RhdHVzIFJlZ2lzdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgX19JTyB1aW50MzJfdCBNTUZBUjsgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogMHgzNCAgTWVtIE1hbmFnZSBBZGRyZXNzIFJlZ2lzdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgX19JTyB1aW50MzJfdCBCRkFSOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogMHgzOCAgQnVzIEZhdWx0IEFkZHJlc3MgUmVnaXN0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgX19JTyB1aW50MzJfdCBBRlNSOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogMHgzQyAgQXV4aWxpYXJ5IEZhdWx0IFN0YXR1cyBSZWdpc3RlciAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgX19JICB1aW50MzJfdCBQRlJbMl07ICAgICAgICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogMHg0MCAgUHJvY2Vzc29yIEZlYXR1cmUgUmVnaXN0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgX19JICB1aW50MzJfdCBERlI7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogMHg0OCAgRGVidWcgRmVhdHVyZSBSZWdpc3RlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgX19JICB1aW50MzJfdCBBRFI7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogMHg0QyAgQXV4aWxpYXJ5IEZlYXR1cmUgUmVnaXN0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgX19JICB1aW50MzJfdCBNTUZSWzRdOyAgICAgICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogMHg1MCAgTWVtb3J5IE1vZGVsIEZlYXR1cmUgUmVnaXN0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgX19JICB1aW50MzJfdCBJU0FSWzVdOyAgICAgICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogMHg2MCAgSVNBIEZlYXR1cmUgUmVnaXN0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KK30gU0NCX1R5cGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisKKy8qIFNDQiBDUFVJRCBSZWdpc3RlciBEZWZpbml0aW9ucyAqLworI2RlZmluZSBTQ0JfQ1BVSURfSU1QTEVNRU5URVJfUG9zICAgICAgICAgIDI0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBTQ0IgQ1BVSUQ6IElNUExFTUVOVEVSIFBvc2l0aW9uICovCisjZGVmaW5lIFNDQl9DUFVJRF9JTVBMRU1FTlRFUl9Nc2sgICAgICAgICAgKDB4RkZ1bCA8PCBTQ0JfQ1BVSURfSU1QTEVNRU5URVJfUG9zKSAgICAgICAgICAvKiE8IFNDQiBDUFVJRDogSU1QTEVNRU5URVIgTWFzayAqLworCisjZGVmaW5lIFNDQl9DUFVJRF9WQVJJQU5UX1BvcyAgICAgICAgICAgICAgMjAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFNDQiBDUFVJRDogVkFSSUFOVCBQb3NpdGlvbiAqLworI2RlZmluZSBTQ0JfQ1BVSURfVkFSSUFOVF9Nc2sgICAgICAgICAgICAgICgweEZ1bCA8PCBTQ0JfQ1BVSURfVkFSSUFOVF9Qb3MpICAgICAgICAgICAgICAgLyohPCBTQ0IgQ1BVSUQ6IFZBUklBTlQgTWFzayAqLworCisjZGVmaW5lIFNDQl9DUFVJRF9QQVJUTk9fUG9zICAgICAgICAgICAgICAgIDQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFNDQiBDUFVJRDogUEFSVE5PIFBvc2l0aW9uICovCisjZGVmaW5lIFNDQl9DUFVJRF9QQVJUTk9fTXNrICAgICAgICAgICAgICAgKDB4RkZGdWwgPDwgU0NCX0NQVUlEX1BBUlROT19Qb3MpICAgICAgICAgICAgICAvKiE8IFNDQiBDUFVJRDogUEFSVE5PIE1hc2sgKi8KKworI2RlZmluZSBTQ0JfQ1BVSURfUkVWSVNJT05fUG9zICAgICAgICAgICAgICAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBTQ0IgQ1BVSUQ6IFJFVklTSU9OIFBvc2l0aW9uICovCisjZGVmaW5lIFNDQl9DUFVJRF9SRVZJU0lPTl9Nc2sgICAgICAgICAgICAgKDB4RnVsIDw8IFNDQl9DUFVJRF9SRVZJU0lPTl9Qb3MpICAgICAgICAgICAgICAvKiE8IFNDQiBDUFVJRDogUkVWSVNJT04gTWFzayAqLworCisvKiBTQ0IgSW50ZXJydXB0IENvbnRyb2wgU3RhdGUgUmVnaXN0ZXIgRGVmaW5pdGlvbnMgKi8KKyNkZWZpbmUgU0NCX0lDU1JfTk1JUEVORFNFVF9Qb3MgICAgICAgICAgICAzMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgU0NCIElDU1I6IE5NSVBFTkRTRVQgUG9zaXRpb24gKi8KKyNkZWZpbmUgU0NCX0lDU1JfTk1JUEVORFNFVF9Nc2sgICAgICAgICAgICAoMXVsIDw8IFNDQl9JQ1NSX05NSVBFTkRTRVRfUG9zKSAgICAgICAgICAgICAgIC8qITwgU0NCIElDU1I6IE5NSVBFTkRTRVQgTWFzayAqLworCisjZGVmaW5lIFNDQl9JQ1NSX1BFTkRTVlNFVF9Qb3MgICAgICAgICAgICAgMjggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFNDQiBJQ1NSOiBQRU5EU1ZTRVQgUG9zaXRpb24gKi8KKyNkZWZpbmUgU0NCX0lDU1JfUEVORFNWU0VUX01zayAgICAgICAgICAgICAoMXVsIDw8IFNDQl9JQ1NSX1BFTkRTVlNFVF9Qb3MpICAgICAgICAgICAgICAgIC8qITwgU0NCIElDU1I6IFBFTkRTVlNFVCBNYXNrICovCisKKyNkZWZpbmUgU0NCX0lDU1JfUEVORFNWQ0xSX1BvcyAgICAgICAgICAgICAyNyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgU0NCIElDU1I6IFBFTkRTVkNMUiBQb3NpdGlvbiAqLworI2RlZmluZSBTQ0JfSUNTUl9QRU5EU1ZDTFJfTXNrICAgICAgICAgICAgICgxdWwgPDwgU0NCX0lDU1JfUEVORFNWQ0xSX1BvcykgICAgICAgICAgICAgICAgLyohPCBTQ0IgSUNTUjogUEVORFNWQ0xSIE1hc2sgKi8KKworI2RlZmluZSBTQ0JfSUNTUl9QRU5EU1RTRVRfUG9zICAgICAgICAgICAgIDI2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBTQ0IgSUNTUjogUEVORFNUU0VUIFBvc2l0aW9uICovCisjZGVmaW5lIFNDQl9JQ1NSX1BFTkRTVFNFVF9Nc2sgICAgICAgICAgICAgKDF1bCA8PCBTQ0JfSUNTUl9QRU5EU1RTRVRfUG9zKSAgICAgICAgICAgICAgICAvKiE8IFNDQiBJQ1NSOiBQRU5EU1RTRVQgTWFzayAqLworCisjZGVmaW5lIFNDQl9JQ1NSX1BFTkRTVENMUl9Qb3MgICAgICAgICAgICAgMjUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFNDQiBJQ1NSOiBQRU5EU1RDTFIgUG9zaXRpb24gKi8KKyNkZWZpbmUgU0NCX0lDU1JfUEVORFNUQ0xSX01zayAgICAgICAgICAgICAoMXVsIDw8IFNDQl9JQ1NSX1BFTkRTVENMUl9Qb3MpICAgICAgICAgICAgICAgIC8qITwgU0NCIElDU1I6IFBFTkRTVENMUiBNYXNrICovCisKKyNkZWZpbmUgU0NCX0lDU1JfSVNSUFJFRU1QVF9Qb3MgICAgICAgICAgICAyMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgU0NCIElDU1I6IElTUlBSRUVNUFQgUG9zaXRpb24gKi8KKyNkZWZpbmUgU0NCX0lDU1JfSVNSUFJFRU1QVF9Nc2sgICAgICAgICAgICAoMXVsIDw8IFNDQl9JQ1NSX0lTUlBSRUVNUFRfUG9zKSAgICAgICAgICAgICAgIC8qITwgU0NCIElDU1I6IElTUlBSRUVNUFQgTWFzayAqLworCisjZGVmaW5lIFNDQl9JQ1NSX0lTUlBFTkRJTkdfUG9zICAgICAgICAgICAgMjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFNDQiBJQ1NSOiBJU1JQRU5ESU5HIFBvc2l0aW9uICovCisjZGVmaW5lIFNDQl9JQ1NSX0lTUlBFTkRJTkdfTXNrICAgICAgICAgICAgKDF1bCA8PCBTQ0JfSUNTUl9JU1JQRU5ESU5HX1BvcykgICAgICAgICAgICAgICAvKiE8IFNDQiBJQ1NSOiBJU1JQRU5ESU5HIE1hc2sgKi8KKworI2RlZmluZSBTQ0JfSUNTUl9WRUNUUEVORElOR19Qb3MgICAgICAgICAgIDEyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBTQ0IgSUNTUjogVkVDVFBFTkRJTkcgUG9zaXRpb24gKi8KKyNkZWZpbmUgU0NCX0lDU1JfVkVDVFBFTkRJTkdfTXNrICAgICAgICAgICAoMHgxRkZ1bCA8PCBTQ0JfSUNTUl9WRUNUUEVORElOR19Qb3MpICAgICAgICAgIC8qITwgU0NCIElDU1I6IFZFQ1RQRU5ESU5HIE1hc2sgKi8KKworI2RlZmluZSBTQ0JfSUNTUl9SRVRUT0JBU0VfUG9zICAgICAgICAgICAgIDExICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBTQ0IgSUNTUjogUkVUVE9CQVNFIFBvc2l0aW9uICovCisjZGVmaW5lIFNDQl9JQ1NSX1JFVFRPQkFTRV9Nc2sgICAgICAgICAgICAgKDF1bCA8PCBTQ0JfSUNTUl9SRVRUT0JBU0VfUG9zKSAgICAgICAgICAgICAgICAvKiE8IFNDQiBJQ1NSOiBSRVRUT0JBU0UgTWFzayAqLworCisjZGVmaW5lIFNDQl9JQ1NSX1ZFQ1RBQ1RJVkVfUG9zICAgICAgICAgICAgIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFNDQiBJQ1NSOiBWRUNUQUNUSVZFIFBvc2l0aW9uICovCisjZGVmaW5lIFNDQl9JQ1NSX1ZFQ1RBQ1RJVkVfTXNrICAgICAgICAgICAgKDB4MUZGdWwgPDwgU0NCX0lDU1JfVkVDVEFDVElWRV9Qb3MpICAgICAgICAgICAvKiE8IFNDQiBJQ1NSOiBWRUNUQUNUSVZFIE1hc2sgKi8KKworLyogU0NCIEludGVycnVwdCBDb250cm9sIFN0YXRlIFJlZ2lzdGVyIERlZmluaXRpb25zICovCisjZGVmaW5lIFNDQl9WVE9SX1RCTEJBU0VfUG9zICAgICAgICAgICAgICAgMjkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFNDQiBWVE9SOiBUQkxCQVNFIFBvc2l0aW9uICovCisjZGVmaW5lIFNDQl9WVE9SX1RCTEJBU0VfTXNrICAgICAgICAgICAgICAgKDB4MUZGdWwgPDwgU0NCX1ZUT1JfVEJMQkFTRV9Qb3MpICAgICAgICAgICAgICAvKiE8IFNDQiBWVE9SOiBUQkxCQVNFIE1hc2sgKi8KKworI2RlZmluZSBTQ0JfVlRPUl9UQkxPRkZfUG9zICAgICAgICAgICAgICAgICA3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBTQ0IgVlRPUjogVEJMT0ZGIFBvc2l0aW9uICovCisjZGVmaW5lIFNDQl9WVE9SX1RCTE9GRl9Nc2sgICAgICAgICAgICAgICAgKDB4M0ZGRkZGdWwgPDwgU0NCX1ZUT1JfVEJMT0ZGX1BvcykgICAgICAgICAgICAvKiE8IFNDQiBWVE9SOiBUQkxPRkYgTWFzayAqLworCisvKiBTQ0IgQXBwbGljYXRpb24gSW50ZXJydXB0IGFuZCBSZXNldCBDb250cm9sIFJlZ2lzdGVyIERlZmluaXRpb25zICovCisjZGVmaW5lIFNDQl9BSVJDUl9WRUNUS0VZX1BvcyAgICAgICAgICAgICAgMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFNDQiBBSVJDUjogVkVDVEtFWSBQb3NpdGlvbiAqLworI2RlZmluZSBTQ0JfQUlSQ1JfVkVDVEtFWV9Nc2sgICAgICAgICAgICAgICgweEZGRkZ1bCA8PCBTQ0JfQUlSQ1JfVkVDVEtFWV9Qb3MpICAgICAgICAgICAgLyohPCBTQ0IgQUlSQ1I6IFZFQ1RLRVkgTWFzayAqLworCisjZGVmaW5lIFNDQl9BSVJDUl9WRUNUS0VZU1RBVF9Qb3MgICAgICAgICAgMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFNDQiBBSVJDUjogVkVDVEtFWVNUQVQgUG9zaXRpb24gKi8KKyNkZWZpbmUgU0NCX0FJUkNSX1ZFQ1RLRVlTVEFUX01zayAgICAgICAgICAoMHhGRkZGdWwgPDwgU0NCX0FJUkNSX1ZFQ1RLRVlTVEFUX1BvcykgICAgICAgIC8qITwgU0NCIEFJUkNSOiBWRUNUS0VZU1RBVCBNYXNrICovCisKKyNkZWZpbmUgU0NCX0FJUkNSX0VORElBTkVTU19Qb3MgICAgICAgICAgICAxNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgU0NCIEFJUkNSOiBFTkRJQU5FU1MgUG9zaXRpb24gKi8KKyNkZWZpbmUgU0NCX0FJUkNSX0VORElBTkVTU19Nc2sgICAgICAgICAgICAoMXVsIDw8IFNDQl9BSVJDUl9FTkRJQU5FU1NfUG9zKSAgICAgICAgICAgICAgIC8qITwgU0NCIEFJUkNSOiBFTkRJQU5FU1MgTWFzayAqLworCisjZGVmaW5lIFNDQl9BSVJDUl9QUklHUk9VUF9Qb3MgICAgICAgICAgICAgIDggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFNDQiBBSVJDUjogUFJJR1JPVVAgUG9zaXRpb24gKi8KKyNkZWZpbmUgU0NCX0FJUkNSX1BSSUdST1VQX01zayAgICAgICAgICAgICAoN3VsIDw8IFNDQl9BSVJDUl9QUklHUk9VUF9Qb3MpICAgICAgICAgICAgICAgIC8qITwgU0NCIEFJUkNSOiBQUklHUk9VUCBNYXNrICovCisKKyNkZWZpbmUgU0NCX0FJUkNSX1NZU1JFU0VUUkVRX1BvcyAgICAgICAgICAgMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgU0NCIEFJUkNSOiBTWVNSRVNFVFJFUSBQb3NpdGlvbiAqLworI2RlZmluZSBTQ0JfQUlSQ1JfU1lTUkVTRVRSRVFfTXNrICAgICAgICAgICgxdWwgPDwgU0NCX0FJUkNSX1NZU1JFU0VUUkVRX1BvcykgICAgICAgICAgICAgLyohPCBTQ0IgQUlSQ1I6IFNZU1JFU0VUUkVRIE1hc2sgKi8KKworI2RlZmluZSBTQ0JfQUlSQ1JfVkVDVENMUkFDVElWRV9Qb3MgICAgICAgICAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBTQ0IgQUlSQ1I6IFZFQ1RDTFJBQ1RJVkUgUG9zaXRpb24gKi8KKyNkZWZpbmUgU0NCX0FJUkNSX1ZFQ1RDTFJBQ1RJVkVfTXNrICAgICAgICAoMXVsIDw8IFNDQl9BSVJDUl9WRUNUQ0xSQUNUSVZFX1BvcykgICAgICAgICAgIC8qITwgU0NCIEFJUkNSOiBWRUNUQ0xSQUNUSVZFIE1hc2sgKi8KKworI2RlZmluZSBTQ0JfQUlSQ1JfVkVDVFJFU0VUX1BvcyAgICAgICAgICAgICAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBTQ0IgQUlSQ1I6IFZFQ1RSRVNFVCBQb3NpdGlvbiAqLworI2RlZmluZSBTQ0JfQUlSQ1JfVkVDVFJFU0VUX01zayAgICAgICAgICAgICgxdWwgPDwgU0NCX0FJUkNSX1ZFQ1RSRVNFVF9Qb3MpICAgICAgICAgICAgICAgLyohPCBTQ0IgQUlSQ1I6IFZFQ1RSRVNFVCBNYXNrICovCisKKy8qIFNDQiBTeXN0ZW0gQ29udHJvbCBSZWdpc3RlciBEZWZpbml0aW9ucyAqLworI2RlZmluZSBTQ0JfU0NSX1NFVk9OUEVORF9Qb3MgICAgICAgICAgICAgICA0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBTQ0IgU0NSOiBTRVZPTlBFTkQgUG9zaXRpb24gKi8KKyNkZWZpbmUgU0NCX1NDUl9TRVZPTlBFTkRfTXNrICAgICAgICAgICAgICAoMXVsIDw8IFNDQl9TQ1JfU0VWT05QRU5EX1BvcykgICAgICAgICAgICAgICAgIC8qITwgU0NCIFNDUjogU0VWT05QRU5EIE1hc2sgKi8KKworI2RlZmluZSBTQ0JfU0NSX1NMRUVQREVFUF9Qb3MgICAgICAgICAgICAgICAyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBTQ0IgU0NSOiBTTEVFUERFRVAgUG9zaXRpb24gKi8KKyNkZWZpbmUgU0NCX1NDUl9TTEVFUERFRVBfTXNrICAgICAgICAgICAgICAoMXVsIDw8IFNDQl9TQ1JfU0xFRVBERUVQX1BvcykgICAgICAgICAgICAgICAgIC8qITwgU0NCIFNDUjogU0xFRVBERUVQIE1hc2sgKi8KKworI2RlZmluZSBTQ0JfU0NSX1NMRUVQT05FWElUX1BvcyAgICAgICAgICAgICAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBTQ0IgU0NSOiBTTEVFUE9ORVhJVCBQb3NpdGlvbiAqLworI2RlZmluZSBTQ0JfU0NSX1NMRUVQT05FWElUX01zayAgICAgICAgICAgICgxdWwgPDwgU0NCX1NDUl9TTEVFUE9ORVhJVF9Qb3MpICAgICAgICAgICAgICAgLyohPCBTQ0IgU0NSOiBTTEVFUE9ORVhJVCBNYXNrICovCisKKy8qIFNDQiBDb25maWd1cmF0aW9uIENvbnRyb2wgUmVnaXN0ZXIgRGVmaW5pdGlvbnMgKi8KKyNkZWZpbmUgU0NCX0NDUl9TVEtBTElHTl9Qb3MgICAgICAgICAgICAgICAgOSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgU0NCIENDUjogU1RLQUxJR04gUG9zaXRpb24gKi8KKyNkZWZpbmUgU0NCX0NDUl9TVEtBTElHTl9Nc2sgICAgICAgICAgICAgICAoMXVsIDw8IFNDQl9DQ1JfU1RLQUxJR05fUG9zKSAgICAgICAgICAgICAgICAgIC8qITwgU0NCIENDUjogU1RLQUxJR04gTWFzayAqLworCisjZGVmaW5lIFNDQl9DQ1JfQkZIRk5NSUdOX1BvcyAgICAgICAgICAgICAgIDggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFNDQiBDQ1I6IEJGSEZOTUlHTiBQb3NpdGlvbiAqLworI2RlZmluZSBTQ0JfQ0NSX0JGSEZOTUlHTl9Nc2sgICAgICAgICAgICAgICgxdWwgPDwgU0NCX0NDUl9CRkhGTk1JR05fUG9zKSAgICAgICAgICAgICAgICAgLyohPCBTQ0IgQ0NSOiBCRkhGTk1JR04gTWFzayAqLworCisjZGVmaW5lIFNDQl9DQ1JfRElWXzBfVFJQX1BvcyAgICAgICAgICAgICAgIDQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFNDQiBDQ1I6IERJVl8wX1RSUCBQb3NpdGlvbiAqLworI2RlZmluZSBTQ0JfQ0NSX0RJVl8wX1RSUF9Nc2sgICAgICAgICAgICAgICgxdWwgPDwgU0NCX0NDUl9ESVZfMF9UUlBfUG9zKSAgICAgICAgICAgICAgICAgLyohPCBTQ0IgQ0NSOiBESVZfMF9UUlAgTWFzayAqLworCisjZGVmaW5lIFNDQl9DQ1JfVU5BTElHTl9UUlBfUG9zICAgICAgICAgICAgIDMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFNDQiBDQ1I6IFVOQUxJR05fVFJQIFBvc2l0aW9uICovCisjZGVmaW5lIFNDQl9DQ1JfVU5BTElHTl9UUlBfTXNrICAgICAgICAgICAgKDF1bCA8PCBTQ0JfQ0NSX1VOQUxJR05fVFJQX1BvcykgICAgICAgICAgICAgICAvKiE8IFNDQiBDQ1I6IFVOQUxJR05fVFJQIE1hc2sgKi8KKworI2RlZmluZSBTQ0JfQ0NSX1VTRVJTRVRNUEVORF9Qb3MgICAgICAgICAgICAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBTQ0IgQ0NSOiBVU0VSU0VUTVBFTkQgUG9zaXRpb24gKi8KKyNkZWZpbmUgU0NCX0NDUl9VU0VSU0VUTVBFTkRfTXNrICAgICAgICAgICAoMXVsIDw8IFNDQl9DQ1JfVVNFUlNFVE1QRU5EX1BvcykgICAgICAgICAgICAgIC8qITwgU0NCIENDUjogVVNFUlNFVE1QRU5EIE1hc2sgKi8KKworI2RlZmluZSBTQ0JfQ0NSX05PTkJBU0VUSFJERU5BX1BvcyAgICAgICAgICAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBTQ0IgQ0NSOiBOT05CQVNFVEhSREVOQSBQb3NpdGlvbiAqLworI2RlZmluZSBTQ0JfQ0NSX05PTkJBU0VUSFJERU5BX01zayAgICAgICAgICgxdWwgPDwgU0NCX0NDUl9OT05CQVNFVEhSREVOQV9Qb3MpICAgICAgICAgICAgLyohPCBTQ0IgQ0NSOiBOT05CQVNFVEhSREVOQSBNYXNrICovCisKKy8qIFNDQiBTeXN0ZW0gSGFuZGxlciBDb250cm9sIGFuZCBTdGF0ZSBSZWdpc3RlciBEZWZpbml0aW9ucyAqLworI2RlZmluZSBTQ0JfU0hDU1JfVVNHRkFVTFRFTkFfUG9zICAgICAgICAgIDE4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBTQ0IgU0hDU1I6IFVTR0ZBVUxURU5BIFBvc2l0aW9uICovCisjZGVmaW5lIFNDQl9TSENTUl9VU0dGQVVMVEVOQV9Nc2sgICAgICAgICAgKDF1bCA8PCBTQ0JfU0hDU1JfVVNHRkFVTFRFTkFfUG9zKSAgICAgICAgICAgICAvKiE8IFNDQiBTSENTUjogVVNHRkFVTFRFTkEgTWFzayAqLworCisjZGVmaW5lIFNDQl9TSENTUl9CVVNGQVVMVEVOQV9Qb3MgICAgICAgICAgMTcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFNDQiBTSENTUjogQlVTRkFVTFRFTkEgUG9zaXRpb24gKi8KKyNkZWZpbmUgU0NCX1NIQ1NSX0JVU0ZBVUxURU5BX01zayAgICAgICAgICAoMXVsIDw8IFNDQl9TSENTUl9CVVNGQVVMVEVOQV9Qb3MpICAgICAgICAgICAgIC8qITwgU0NCIFNIQ1NSOiBCVVNGQVVMVEVOQSBNYXNrICovCisKKyNkZWZpbmUgU0NCX1NIQ1NSX01FTUZBVUxURU5BX1BvcyAgICAgICAgICAxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgU0NCIFNIQ1NSOiBNRU1GQVVMVEVOQSBQb3NpdGlvbiAqLworI2RlZmluZSBTQ0JfU0hDU1JfTUVNRkFVTFRFTkFfTXNrICAgICAgICAgICgxdWwgPDwgU0NCX1NIQ1NSX01FTUZBVUxURU5BX1BvcykgICAgICAgICAgICAgLyohPCBTQ0IgU0hDU1I6IE1FTUZBVUxURU5BIE1hc2sgKi8KKworI2RlZmluZSBTQ0JfU0hDU1JfU1ZDQUxMUEVOREVEX1BvcyAgICAgICAgIDE1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBTQ0IgU0hDU1I6IFNWQ0FMTFBFTkRFRCBQb3NpdGlvbiAqLworI2RlZmluZSBTQ0JfU0hDU1JfU1ZDQUxMUEVOREVEX01zayAgICAgICAgICgxdWwgPDwgU0NCX1NIQ1NSX1NWQ0FMTFBFTkRFRF9Qb3MpICAgICAgICAgICAgLyohPCBTQ0IgU0hDU1I6IFNWQ0FMTFBFTkRFRCBNYXNrICovCisKKyNkZWZpbmUgU0NCX1NIQ1NSX0JVU0ZBVUxUUEVOREVEX1BvcyAgICAgICAxNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgU0NCIFNIQ1NSOiBCVVNGQVVMVFBFTkRFRCBQb3NpdGlvbiAqLworI2RlZmluZSBTQ0JfU0hDU1JfQlVTRkFVTFRQRU5ERURfTXNrICAgICAgICgxdWwgPDwgU0NCX1NIQ1NSX0JVU0ZBVUxUUEVOREVEX1BvcykgICAgICAgICAgLyohPCBTQ0IgU0hDU1I6IEJVU0ZBVUxUUEVOREVEIE1hc2sgKi8KKworI2RlZmluZSBTQ0JfU0hDU1JfTUVNRkFVTFRQRU5ERURfUG9zICAgICAgIDEzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBTQ0IgU0hDU1I6IE1FTUZBVUxUUEVOREVEIFBvc2l0aW9uICovCisjZGVmaW5lIFNDQl9TSENTUl9NRU1GQVVMVFBFTkRFRF9Nc2sgICAgICAgKDF1bCA8PCBTQ0JfU0hDU1JfTUVNRkFVTFRQRU5ERURfUG9zKSAgICAgICAgICAvKiE8IFNDQiBTSENTUjogTUVNRkFVTFRQRU5ERUQgTWFzayAqLworCisjZGVmaW5lIFNDQl9TSENTUl9VU0dGQVVMVFBFTkRFRF9Qb3MgICAgICAgMTIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFNDQiBTSENTUjogVVNHRkFVTFRQRU5ERUQgUG9zaXRpb24gKi8KKyNkZWZpbmUgU0NCX1NIQ1NSX1VTR0ZBVUxUUEVOREVEX01zayAgICAgICAoMXVsIDw8IFNDQl9TSENTUl9VU0dGQVVMVFBFTkRFRF9Qb3MpICAgICAgICAgIC8qITwgU0NCIFNIQ1NSOiBVU0dGQVVMVFBFTkRFRCBNYXNrICovCisKKyNkZWZpbmUgU0NCX1NIQ1NSX1NZU1RJQ0tBQ1RfUG9zICAgICAgICAgICAxMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgU0NCIFNIQ1NSOiBTWVNUSUNLQUNUIFBvc2l0aW9uICovCisjZGVmaW5lIFNDQl9TSENTUl9TWVNUSUNLQUNUX01zayAgICAgICAgICAgKDF1bCA8PCBTQ0JfU0hDU1JfU1lTVElDS0FDVF9Qb3MpICAgICAgICAgICAgICAvKiE8IFNDQiBTSENTUjogU1lTVElDS0FDVCBNYXNrICovCisKKyNkZWZpbmUgU0NCX1NIQ1NSX1BFTkRTVkFDVF9Qb3MgICAgICAgICAgICAxMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgU0NCIFNIQ1NSOiBQRU5EU1ZBQ1QgUG9zaXRpb24gKi8KKyNkZWZpbmUgU0NCX1NIQ1NSX1BFTkRTVkFDVF9Nc2sgICAgICAgICAgICAoMXVsIDw8IFNDQl9TSENTUl9QRU5EU1ZBQ1RfUG9zKSAgICAgICAgICAgICAgIC8qITwgU0NCIFNIQ1NSOiBQRU5EU1ZBQ1QgTWFzayAqLworCisjZGVmaW5lIFNDQl9TSENTUl9NT05JVE9SQUNUX1BvcyAgICAgICAgICAgIDggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFNDQiBTSENTUjogTU9OSVRPUkFDVCBQb3NpdGlvbiAqLworI2RlZmluZSBTQ0JfU0hDU1JfTU9OSVRPUkFDVF9Nc2sgICAgICAgICAgICgxdWwgPDwgU0NCX1NIQ1NSX01PTklUT1JBQ1RfUG9zKSAgICAgICAgICAgICAgLyohPCBTQ0IgU0hDU1I6IE1PTklUT1JBQ1QgTWFzayAqLworCisjZGVmaW5lIFNDQl9TSENTUl9TVkNBTExBQ1RfUG9zICAgICAgICAgICAgIDcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFNDQiBTSENTUjogU1ZDQUxMQUNUIFBvc2l0aW9uICovCisjZGVmaW5lIFNDQl9TSENTUl9TVkNBTExBQ1RfTXNrICAgICAgICAgICAgKDF1bCA8PCBTQ0JfU0hDU1JfU1ZDQUxMQUNUX1BvcykgICAgICAgICAgICAgICAvKiE8IFNDQiBTSENTUjogU1ZDQUxMQUNUIE1hc2sgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyNkZWZpbmUgU0NCX1NIQ1NSX1VTR0ZBVUxUQUNUX1BvcyAgICAgICAgICAgMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgU0NCIFNIQ1NSOiBVU0dGQVVMVEFDVCBQb3NpdGlvbiAqLworI2RlZmluZSBTQ0JfU0hDU1JfVVNHRkFVTFRBQ1RfTXNrICAgICAgICAgICgxdWwgPDwgU0NCX1NIQ1NSX1VTR0ZBVUxUQUNUX1BvcykgICAgICAgICAgICAgLyohPCBTQ0IgU0hDU1I6IFVTR0ZBVUxUQUNUIE1hc2sgKi8KKworI2RlZmluZSBTQ0JfU0hDU1JfQlVTRkFVTFRBQ1RfUG9zICAgICAgICAgICAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBTQ0IgU0hDU1I6IEJVU0ZBVUxUQUNUIFBvc2l0aW9uICovCisjZGVmaW5lIFNDQl9TSENTUl9CVVNGQVVMVEFDVF9Nc2sgICAgICAgICAgKDF1bCA8PCBTQ0JfU0hDU1JfQlVTRkFVTFRBQ1RfUG9zKSAgICAgICAgICAgICAvKiE8IFNDQiBTSENTUjogQlVTRkFVTFRBQ1QgTWFzayAqLworCisjZGVmaW5lIFNDQl9TSENTUl9NRU1GQVVMVEFDVF9Qb3MgICAgICAgICAgIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFNDQiBTSENTUjogTUVNRkFVTFRBQ1QgUG9zaXRpb24gKi8KKyNkZWZpbmUgU0NCX1NIQ1NSX01FTUZBVUxUQUNUX01zayAgICAgICAgICAoMXVsIDw8IFNDQl9TSENTUl9NRU1GQVVMVEFDVF9Qb3MpICAgICAgICAgICAgIC8qITwgU0NCIFNIQ1NSOiBNRU1GQVVMVEFDVCBNYXNrICovCisKKy8qIFNDQiBDb25maWd1cmFibGUgRmF1bHQgU3RhdHVzIFJlZ2lzdGVycyBEZWZpbml0aW9ucyAqLworI2RlZmluZSBTQ0JfQ0ZTUl9VU0dGQVVMVFNSX1BvcyAgICAgICAgICAgIDE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBTQ0IgQ0ZTUjogVXNhZ2UgRmF1bHQgU3RhdHVzIFJlZ2lzdGVyIFBvc2l0aW9uICovCisjZGVmaW5lIFNDQl9DRlNSX1VTR0ZBVUxUU1JfTXNrICAgICAgICAgICAgKDB4RkZGRnVsIDw8IFNDQl9DRlNSX1VTR0ZBVUxUU1JfUG9zKSAgICAgICAgICAvKiE8IFNDQiBDRlNSOiBVc2FnZSBGYXVsdCBTdGF0dXMgUmVnaXN0ZXIgTWFzayAqLworCisjZGVmaW5lIFNDQl9DRlNSX0JVU0ZBVUxUU1JfUG9zICAgICAgICAgICAgIDggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFNDQiBDRlNSOiBCdXMgRmF1bHQgU3RhdHVzIFJlZ2lzdGVyIFBvc2l0aW9uICovCisjZGVmaW5lIFNDQl9DRlNSX0JVU0ZBVUxUU1JfTXNrICAgICAgICAgICAgKDB4RkZ1bCA8PCBTQ0JfQ0ZTUl9CVVNGQVVMVFNSX1BvcykgICAgICAgICAgICAvKiE8IFNDQiBDRlNSOiBCdXMgRmF1bHQgU3RhdHVzIFJlZ2lzdGVyIE1hc2sgKi8KKworI2RlZmluZSBTQ0JfQ0ZTUl9NRU1GQVVMVFNSX1BvcyAgICAgICAgICAgICAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBTQ0IgQ0ZTUjogTWVtb3J5IE1hbmFnZSBGYXVsdCBTdGF0dXMgUmVnaXN0ZXIgUG9zaXRpb24gKi8KKyNkZWZpbmUgU0NCX0NGU1JfTUVNRkFVTFRTUl9Nc2sgICAgICAgICAgICAoMHhGRnVsIDw8IFNDQl9DRlNSX01FTUZBVUxUU1JfUG9zKSAgICAgICAgICAgIC8qITwgU0NCIENGU1I6IE1lbW9yeSBNYW5hZ2UgRmF1bHQgU3RhdHVzIFJlZ2lzdGVyIE1hc2sgKi8KKworLyogU0NCIEhhcmQgRmF1bHQgU3RhdHVzIFJlZ2lzdGVycyBEZWZpbml0aW9ucyAqLworI2RlZmluZSBTQ0JfSEZTUl9ERUJVR0VWVF9Qb3MgICAgICAgICAgICAgIDMxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBTQ0IgSEZTUjogREVCVUdFVlQgUG9zaXRpb24gKi8KKyNkZWZpbmUgU0NCX0hGU1JfREVCVUdFVlRfTXNrICAgICAgICAgICAgICAoMXVsIDw8IFNDQl9IRlNSX0RFQlVHRVZUX1BvcykgICAgICAgICAgICAgICAgIC8qITwgU0NCIEhGU1I6IERFQlVHRVZUIE1hc2sgKi8KKworI2RlZmluZSBTQ0JfSEZTUl9GT1JDRURfUG9zICAgICAgICAgICAgICAgIDMwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBTQ0IgSEZTUjogRk9SQ0VEIFBvc2l0aW9uICovCisjZGVmaW5lIFNDQl9IRlNSX0ZPUkNFRF9Nc2sgICAgICAgICAgICAgICAgKDF1bCA8PCBTQ0JfSEZTUl9GT1JDRURfUG9zKSAgICAgICAgICAgICAgICAgICAvKiE8IFNDQiBIRlNSOiBGT1JDRUQgTWFzayAqLworCisjZGVmaW5lIFNDQl9IRlNSX1ZFQ1RUQkxfUG9zICAgICAgICAgICAgICAgIDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFNDQiBIRlNSOiBWRUNUVEJMIFBvc2l0aW9uICovCisjZGVmaW5lIFNDQl9IRlNSX1ZFQ1RUQkxfTXNrICAgICAgICAgICAgICAgKDF1bCA8PCBTQ0JfSEZTUl9WRUNUVEJMX1BvcykgICAgICAgICAgICAgICAgICAvKiE8IFNDQiBIRlNSOiBWRUNUVEJMIE1hc2sgKi8KKworLyogU0NCIERlYnVnIEZhdWx0IFN0YXR1cyBSZWdpc3RlciBEZWZpbml0aW9ucyAqLworI2RlZmluZSBTQ0JfREZTUl9FWFRFUk5BTF9Qb3MgICAgICAgICAgICAgICA0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBTQ0IgREZTUjogRVhURVJOQUwgUG9zaXRpb24gKi8KKyNkZWZpbmUgU0NCX0RGU1JfRVhURVJOQUxfTXNrICAgICAgICAgICAgICAoMXVsIDw8IFNDQl9ERlNSX0VYVEVSTkFMX1BvcykgICAgICAgICAgICAgICAgIC8qITwgU0NCIERGU1I6IEVYVEVSTkFMIE1hc2sgKi8KKworI2RlZmluZSBTQ0JfREZTUl9WQ0FUQ0hfUG9zICAgICAgICAgICAgICAgICAzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBTQ0IgREZTUjogVkNBVENIIFBvc2l0aW9uICovCisjZGVmaW5lIFNDQl9ERlNSX1ZDQVRDSF9Nc2sgICAgICAgICAgICAgICAgKDF1bCA8PCBTQ0JfREZTUl9WQ0FUQ0hfUG9zKSAgICAgICAgICAgICAgICAgICAvKiE8IFNDQiBERlNSOiBWQ0FUQ0ggTWFzayAqLworCisjZGVmaW5lIFNDQl9ERlNSX0RXVFRSQVBfUG9zICAgICAgICAgICAgICAgIDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFNDQiBERlNSOiBEV1RUUkFQIFBvc2l0aW9uICovCisjZGVmaW5lIFNDQl9ERlNSX0RXVFRSQVBfTXNrICAgICAgICAgICAgICAgKDF1bCA8PCBTQ0JfREZTUl9EV1RUUkFQX1BvcykgICAgICAgICAgICAgICAgICAvKiE8IFNDQiBERlNSOiBEV1RUUkFQIE1hc2sgKi8KKworI2RlZmluZSBTQ0JfREZTUl9CS1BUX1BvcyAgICAgICAgICAgICAgICAgICAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBTQ0IgREZTUjogQktQVCBQb3NpdGlvbiAqLworI2RlZmluZSBTQ0JfREZTUl9CS1BUX01zayAgICAgICAgICAgICAgICAgICgxdWwgPDwgU0NCX0RGU1JfQktQVF9Qb3MpICAgICAgICAgICAgICAgICAgICAgLyohPCBTQ0IgREZTUjogQktQVCBNYXNrICovCisKKyNkZWZpbmUgU0NCX0RGU1JfSEFMVEVEX1BvcyAgICAgICAgICAgICAgICAgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgU0NCIERGU1I6IEhBTFRFRCBQb3NpdGlvbiAqLworI2RlZmluZSBTQ0JfREZTUl9IQUxURURfTXNrICAgICAgICAgICAgICAgICgxdWwgPDwgU0NCX0RGU1JfSEFMVEVEX1BvcykgICAgICAgICAgICAgICAgICAgLyohPCBTQ0IgREZTUjogSEFMVEVEIE1hc2sgKi8KKy8qQH0qLyAvKiBlbmQgb2YgZ3JvdXAgQ01TSVNfQ00zX1NDQiAqLworCisKKy8qKiBAYWRkdG9ncm91cCBDTVNJU19DTTNfU3lzVGljayBDTVNJUyBDTTMgU3lzVGljaworICBtZW1vcnkgbWFwcGVkIHN0cnVjdHVyZSBmb3IgU3lzVGljaworICBAeworICovCit0eXBlZGVmIHN0cnVjdAoreworICBfX0lPIHVpbnQzMl90IENUUkw7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgT2Zmc2V0OiAweDAwICBTeXNUaWNrIENvbnRyb2wgYW5kIFN0YXR1cyBSZWdpc3RlciAqLworICBfX0lPIHVpbnQzMl90IExPQUQ7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgT2Zmc2V0OiAweDA0ICBTeXNUaWNrIFJlbG9hZCBWYWx1ZSBSZWdpc3RlciAgICAgICAqLworICBfX0lPIHVpbnQzMl90IFZBTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgT2Zmc2V0OiAweDA4ICBTeXNUaWNrIEN1cnJlbnQgVmFsdWUgUmVnaXN0ZXIgICAgICAqLworICBfX0kgIHVpbnQzMl90IENBTElCOyAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgT2Zmc2V0OiAweDBDICBTeXNUaWNrIENhbGlicmF0aW9uIFJlZ2lzdGVyICAgICAgICAqLworfSBTeXNUaWNrX1R5cGU7CisKKy8qIFN5c1RpY2sgQ29udHJvbCAvIFN0YXR1cyBSZWdpc3RlciBEZWZpbml0aW9ucyAqLworI2RlZmluZSBTeXNUaWNrX0NUUkxfQ09VTlRGTEFHX1BvcyAgICAgICAgIDE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBTeXNUaWNrIENUUkw6IENPVU5URkxBRyBQb3NpdGlvbiAqLworI2RlZmluZSBTeXNUaWNrX0NUUkxfQ09VTlRGTEFHX01zayAgICAgICAgICgxdWwgPDwgU3lzVGlja19DVFJMX0NPVU5URkxBR19Qb3MpICAgICAgICAgICAgLyohPCBTeXNUaWNrIENUUkw6IENPVU5URkxBRyBNYXNrICovCisKKyNkZWZpbmUgU3lzVGlja19DVFJMX0NMS1NPVVJDRV9Qb3MgICAgICAgICAgMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgU3lzVGljayBDVFJMOiBDTEtTT1VSQ0UgUG9zaXRpb24gKi8KKyNkZWZpbmUgU3lzVGlja19DVFJMX0NMS1NPVVJDRV9Nc2sgICAgICAgICAoMXVsIDw8IFN5c1RpY2tfQ1RSTF9DTEtTT1VSQ0VfUG9zKSAgICAgICAgICAgIC8qITwgU3lzVGljayBDVFJMOiBDTEtTT1VSQ0UgTWFzayAqLworCisjZGVmaW5lIFN5c1RpY2tfQ1RSTF9USUNLSU5UX1BvcyAgICAgICAgICAgIDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFN5c1RpY2sgQ1RSTDogVElDS0lOVCBQb3NpdGlvbiAqLworI2RlZmluZSBTeXNUaWNrX0NUUkxfVElDS0lOVF9Nc2sgICAgICAgICAgICgxdWwgPDwgU3lzVGlja19DVFJMX1RJQ0tJTlRfUG9zKSAgICAgICAgICAgICAgLyohPCBTeXNUaWNrIENUUkw6IFRJQ0tJTlQgTWFzayAqLworCisjZGVmaW5lIFN5c1RpY2tfQ1RSTF9FTkFCTEVfUG9zICAgICAgICAgICAgIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFN5c1RpY2sgQ1RSTDogRU5BQkxFIFBvc2l0aW9uICovCisjZGVmaW5lIFN5c1RpY2tfQ1RSTF9FTkFCTEVfTXNrICAgICAgICAgICAgKDF1bCA8PCBTeXNUaWNrX0NUUkxfRU5BQkxFX1BvcykgICAgICAgICAgICAgICAvKiE8IFN5c1RpY2sgQ1RSTDogRU5BQkxFIE1hc2sgKi8KKworLyogU3lzVGljayBSZWxvYWQgUmVnaXN0ZXIgRGVmaW5pdGlvbnMgKi8KKyNkZWZpbmUgU3lzVGlja19MT0FEX1JFTE9BRF9Qb3MgICAgICAgICAgICAgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgU3lzVGljayBMT0FEOiBSRUxPQUQgUG9zaXRpb24gKi8KKyNkZWZpbmUgU3lzVGlja19MT0FEX1JFTE9BRF9Nc2sgICAgICAgICAgICAoMHhGRkZGRkZ1bCA8PCBTeXNUaWNrX0xPQURfUkVMT0FEX1BvcykgICAgICAgIC8qITwgU3lzVGljayBMT0FEOiBSRUxPQUQgTWFzayAqLworCisvKiBTeXNUaWNrIEN1cnJlbnQgUmVnaXN0ZXIgRGVmaW5pdGlvbnMgKi8KKyNkZWZpbmUgU3lzVGlja19WQUxfQ1VSUkVOVF9Qb3MgICAgICAgICAgICAgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgU3lzVGljayBWQUw6IENVUlJFTlQgUG9zaXRpb24gKi8KKyNkZWZpbmUgU3lzVGlja19WQUxfQ1VSUkVOVF9Nc2sgICAgICAgICAgICAoMHhGRkZGRkZ1bCA8PCBTeXNUaWNrX1ZBTF9DVVJSRU5UX1BvcykgICAgICAgIC8qITwgU3lzVGljayBWQUw6IENVUlJFTlQgTWFzayAqLworCisvKiBTeXNUaWNrIENhbGlicmF0aW9uIFJlZ2lzdGVyIERlZmluaXRpb25zICovCisjZGVmaW5lIFN5c1RpY2tfQ0FMSUJfTk9SRUZfUG9zICAgICAgICAgICAgMzEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFN5c1RpY2sgQ0FMSUI6IE5PUkVGIFBvc2l0aW9uICovCisjZGVmaW5lIFN5c1RpY2tfQ0FMSUJfTk9SRUZfTXNrICAgICAgICAgICAgKDF1bCA8PCBTeXNUaWNrX0NBTElCX05PUkVGX1BvcykgICAgICAgICAgICAgICAvKiE8IFN5c1RpY2sgQ0FMSUI6IE5PUkVGIE1hc2sgKi8KKworI2RlZmluZSBTeXNUaWNrX0NBTElCX1NLRVdfUG9zICAgICAgICAgICAgIDMwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBTeXNUaWNrIENBTElCOiBTS0VXIFBvc2l0aW9uICovCisjZGVmaW5lIFN5c1RpY2tfQ0FMSUJfU0tFV19Nc2sgICAgICAgICAgICAgKDF1bCA8PCBTeXNUaWNrX0NBTElCX1NLRVdfUG9zKSAgICAgICAgICAgICAgICAvKiE8IFN5c1RpY2sgQ0FMSUI6IFNLRVcgTWFzayAqLworCisjZGVmaW5lIFN5c1RpY2tfQ0FMSUJfVEVOTVNfUG9zICAgICAgICAgICAgIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFN5c1RpY2sgQ0FMSUI6IFRFTk1TIFBvc2l0aW9uICovCisjZGVmaW5lIFN5c1RpY2tfQ0FMSUJfVEVOTVNfTXNrICAgICAgICAgICAgKDB4RkZGRkZGdWwgPDwgU3lzVGlja19WQUxfQ1VSUkVOVF9Qb3MpICAgICAgICAvKiE8IFN5c1RpY2sgQ0FMSUI6IFRFTk1TIE1hc2sgKi8KKy8qQH0qLyAvKiBlbmQgb2YgZ3JvdXAgQ01TSVNfQ00zX1N5c1RpY2sgKi8KKworCisvKiogQGFkZHRvZ3JvdXAgQ01TSVNfQ00zX0lUTSBDTVNJUyBDTTMgSVRNCisgIG1lbW9yeSBtYXBwZWQgc3RydWN0dXJlIGZvciBJbnN0cnVtZW50YXRpb24gVHJhY2UgTWFjcm9jZWxsIChJVE0pCisgIEB7CisgKi8KK3R5cGVkZWYgc3RydWN0Cit7CisgIF9fTyAgdW5pb24gIAorICB7CisgICAgX19PICB1aW50OF90ICAgIHU4OyAgICAgICAgICAgICAgICAgICAgICAgLyohPCBPZmZzZXQ6ICAgICAgIElUTSBTdGltdWx1cyBQb3J0IDgtYml0ICAgICAgICAgICAgICAgICAgICovCisgICAgX19PICB1aW50MTZfdCAgIHUxNjsgICAgICAgICAgICAgICAgICAgICAgLyohPCBPZmZzZXQ6ICAgICAgIElUTSBTdGltdWx1cyBQb3J0IDE2LWJpdCAgICAgICAgICAgICAgICAgICovCisgICAgX19PICB1aW50MzJfdCAgIHUzMjsgICAgICAgICAgICAgICAgICAgICAgLyohPCBPZmZzZXQ6ICAgICAgIElUTSBTdGltdWx1cyBQb3J0IDMyLWJpdCAgICAgICAgICAgICAgICAgICovCisgIH0gIFBPUlQgWzMyXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBPZmZzZXQ6IDB4MDAgIElUTSBTdGltdWx1cyBQb3J0IFJlZ2lzdGVycyAgICAgICAgICAgICAgICovCisgICAgICAgdWludDMyX3QgUkVTRVJWRUQwWzg2NF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIF9fSU8gdWludDMyX3QgVEVSOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBPZmZzZXQ6ICAgICAgIElUTSBUcmFjZSBFbmFibGUgUmVnaXN0ZXIgICAgICAgICAgICAgICAgICovCisgICAgICAgdWludDMyX3QgUkVTRVJWRUQxWzE1XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIF9fSU8gdWludDMyX3QgVFBSOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBPZmZzZXQ6ICAgICAgIElUTSBUcmFjZSBQcml2aWxlZ2UgUmVnaXN0ZXIgICAgICAgICAgICAgICovCisgICAgICAgdWludDMyX3QgUkVTRVJWRUQyWzE1XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIF9fSU8gdWludDMyX3QgVENSOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBPZmZzZXQ6ICAgICAgIElUTSBUcmFjZSBDb250cm9sIFJlZ2lzdGVyICAgICAgICAgICAgICAgICovCisgICAgICAgdWludDMyX3QgUkVTRVJWRUQzWzI5XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIF9fSU8gdWludDMyX3QgSVdSOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBPZmZzZXQ6ICAgICAgIElUTSBJbnRlZ3JhdGlvbiBXcml0ZSBSZWdpc3RlciAgICAgICAgICAgICovCisgIF9fSU8gdWludDMyX3QgSVJSOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBPZmZzZXQ6ICAgICAgIElUTSBJbnRlZ3JhdGlvbiBSZWFkIFJlZ2lzdGVyICAgICAgICAgICAgICovCisgIF9fSU8gdWludDMyX3QgSU1DUjsgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBPZmZzZXQ6ICAgICAgIElUTSBJbnRlZ3JhdGlvbiBNb2RlIENvbnRyb2wgUmVnaXN0ZXIgICAgICovCisgICAgICAgdWludDMyX3QgUkVTRVJWRUQ0WzQzXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIF9fSU8gdWludDMyX3QgTEFSOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBPZmZzZXQ6ICAgICAgIElUTSBMb2NrIEFjY2VzcyBSZWdpc3RlciAgICAgICAgICAgICAgICAgICovCisgIF9fSU8gdWludDMyX3QgTFNSOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBPZmZzZXQ6ICAgICAgIElUTSBMb2NrIFN0YXR1cyBSZWdpc3RlciAgICAgICAgICAgICAgICAgICovCisgICAgICAgdWludDMyX3QgUkVTRVJWRUQ1WzZdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIF9fSSAgdWludDMyX3QgUElENDsgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBPZmZzZXQ6ICAgICAgIElUTSBQZXJpcGhlcmFsIElkZW50aWZpY2F0aW9uIFJlZ2lzdGVyICM0ICovCisgIF9fSSAgdWludDMyX3QgUElENTsgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBPZmZzZXQ6ICAgICAgIElUTSBQZXJpcGhlcmFsIElkZW50aWZpY2F0aW9uIFJlZ2lzdGVyICM1ICovCisgIF9fSSAgdWludDMyX3QgUElENjsgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBPZmZzZXQ6ICAgICAgIElUTSBQZXJpcGhlcmFsIElkZW50aWZpY2F0aW9uIFJlZ2lzdGVyICM2ICovCisgIF9fSSAgdWludDMyX3QgUElENzsgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBPZmZzZXQ6ICAgICAgIElUTSBQZXJpcGhlcmFsIElkZW50aWZpY2F0aW9uIFJlZ2lzdGVyICM3ICovCisgIF9fSSAgdWludDMyX3QgUElEMDsgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBPZmZzZXQ6ICAgICAgIElUTSBQZXJpcGhlcmFsIElkZW50aWZpY2F0aW9uIFJlZ2lzdGVyICMwICovCisgIF9fSSAgdWludDMyX3QgUElEMTsgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBPZmZzZXQ6ICAgICAgIElUTSBQZXJpcGhlcmFsIElkZW50aWZpY2F0aW9uIFJlZ2lzdGVyICMxICovCisgIF9fSSAgdWludDMyX3QgUElEMjsgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBPZmZzZXQ6ICAgICAgIElUTSBQZXJpcGhlcmFsIElkZW50aWZpY2F0aW9uIFJlZ2lzdGVyICMyICovCisgIF9fSSAgdWludDMyX3QgUElEMzsgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBPZmZzZXQ6ICAgICAgIElUTSBQZXJpcGhlcmFsIElkZW50aWZpY2F0aW9uIFJlZ2lzdGVyICMzICovCisgIF9fSSAgdWludDMyX3QgQ0lEMDsgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBPZmZzZXQ6ICAgICAgIElUTSBDb21wb25lbnQgIElkZW50aWZpY2F0aW9uIFJlZ2lzdGVyICMwICovCisgIF9fSSAgdWludDMyX3QgQ0lEMTsgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBPZmZzZXQ6ICAgICAgIElUTSBDb21wb25lbnQgIElkZW50aWZpY2F0aW9uIFJlZ2lzdGVyICMxICovCisgIF9fSSAgdWludDMyX3QgQ0lEMjsgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBPZmZzZXQ6ICAgICAgIElUTSBDb21wb25lbnQgIElkZW50aWZpY2F0aW9uIFJlZ2lzdGVyICMyICovCisgIF9fSSAgdWludDMyX3QgQ0lEMzsgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBPZmZzZXQ6ICAgICAgIElUTSBDb21wb25lbnQgIElkZW50aWZpY2F0aW9uIFJlZ2lzdGVyICMzICovCit9IElUTV9UeXBlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisvKiBJVE0gVHJhY2UgUHJpdmlsZWdlIFJlZ2lzdGVyIERlZmluaXRpb25zICovCisjZGVmaW5lIElUTV9UUFJfUFJJVk1BU0tfUG9zICAgICAgICAgICAgICAgIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IElUTSBUUFI6IFBSSVZNQVNLIFBvc2l0aW9uICovCisjZGVmaW5lIElUTV9UUFJfUFJJVk1BU0tfTXNrICAgICAgICAgICAgICAgKDB4RnVsIDw8IElUTV9UUFJfUFJJVk1BU0tfUG9zKSAgICAgICAgICAgICAgICAvKiE8IElUTSBUUFI6IFBSSVZNQVNLIE1hc2sgKi8KKworLyogSVRNIFRyYWNlIENvbnRyb2wgUmVnaXN0ZXIgRGVmaW5pdGlvbnMgKi8KKyNkZWZpbmUgSVRNX1RDUl9CVVNZX1BvcyAgICAgICAgICAgICAgICAgICAyMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgSVRNIFRDUjogQlVTWSBQb3NpdGlvbiAqLworI2RlZmluZSBJVE1fVENSX0JVU1lfTXNrICAgICAgICAgICAgICAgICAgICgxdWwgPDwgSVRNX1RDUl9CVVNZX1BvcykgICAgICAgICAgICAgICAgICAgICAgLyohPCBJVE0gVENSOiBCVVNZIE1hc2sgKi8KKworI2RlZmluZSBJVE1fVENSX0FUQklEX1BvcyAgICAgICAgICAgICAgICAgIDE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBJVE0gVENSOiBBVEJJRCBQb3NpdGlvbiAqLworI2RlZmluZSBJVE1fVENSX0FUQklEX01zayAgICAgICAgICAgICAgICAgICgweDdGdWwgPDwgSVRNX1RDUl9BVEJJRF9Qb3MpICAgICAgICAgICAgICAgICAgLyohPCBJVE0gVENSOiBBVEJJRCBNYXNrICovCisKKyNkZWZpbmUgSVRNX1RDUl9UU1ByZXNjYWxlX1BvcyAgICAgICAgICAgICAgOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgSVRNIFRDUjogVFNQcmVzY2FsZSBQb3NpdGlvbiAqLworI2RlZmluZSBJVE1fVENSX1RTUHJlc2NhbGVfTXNrICAgICAgICAgICAgICgzdWwgPDwgSVRNX1RDUl9UU1ByZXNjYWxlX1BvcykgICAgICAgICAgICAgICAgLyohPCBJVE0gVENSOiBUU1ByZXNjYWxlIE1hc2sgKi8KKworI2RlZmluZSBJVE1fVENSX1NXT0VOQV9Qb3MgICAgICAgICAgICAgICAgICA0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBJVE0gVENSOiBTV09FTkEgUG9zaXRpb24gKi8KKyNkZWZpbmUgSVRNX1RDUl9TV09FTkFfTXNrICAgICAgICAgICAgICAgICAoMXVsIDw8IElUTV9UQ1JfU1dPRU5BX1BvcykgICAgICAgICAgICAgICAgICAgIC8qITwgSVRNIFRDUjogU1dPRU5BIE1hc2sgKi8KKworI2RlZmluZSBJVE1fVENSX0RXVEVOQV9Qb3MgICAgICAgICAgICAgICAgICAzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBJVE0gVENSOiBEV1RFTkEgUG9zaXRpb24gKi8KKyNkZWZpbmUgSVRNX1RDUl9EV1RFTkFfTXNrICAgICAgICAgICAgICAgICAoMXVsIDw8IElUTV9UQ1JfRFdURU5BX1BvcykgICAgICAgICAgICAgICAgICAgIC8qITwgSVRNIFRDUjogRFdURU5BIE1hc2sgKi8KKworI2RlZmluZSBJVE1fVENSX1NZTkNFTkFfUG9zICAgICAgICAgICAgICAgICAyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBJVE0gVENSOiBTWU5DRU5BIFBvc2l0aW9uICovCisjZGVmaW5lIElUTV9UQ1JfU1lOQ0VOQV9Nc2sgICAgICAgICAgICAgICAgKDF1bCA8PCBJVE1fVENSX1NZTkNFTkFfUG9zKSAgICAgICAgICAgICAgICAgICAvKiE8IElUTSBUQ1I6IFNZTkNFTkEgTWFzayAqLworCisjZGVmaW5lIElUTV9UQ1JfVFNFTkFfUG9zICAgICAgICAgICAgICAgICAgIDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IElUTSBUQ1I6IFRTRU5BIFBvc2l0aW9uICovCisjZGVmaW5lIElUTV9UQ1JfVFNFTkFfTXNrICAgICAgICAgICAgICAgICAgKDF1bCA8PCBJVE1fVENSX1RTRU5BX1BvcykgICAgICAgICAgICAgICAgICAgICAvKiE8IElUTSBUQ1I6IFRTRU5BIE1hc2sgKi8KKworI2RlZmluZSBJVE1fVENSX0lUTUVOQV9Qb3MgICAgICAgICAgICAgICAgICAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBJVE0gVENSOiBJVE0gRW5hYmxlIGJpdCBQb3NpdGlvbiAqLworI2RlZmluZSBJVE1fVENSX0lUTUVOQV9Nc2sgICAgICAgICAgICAgICAgICgxdWwgPDwgSVRNX1RDUl9JVE1FTkFfUG9zKSAgICAgICAgICAgICAgICAgICAgLyohPCBJVE0gVENSOiBJVE0gRW5hYmxlIGJpdCBNYXNrICovCisKKy8qIElUTSBJbnRlZ3JhdGlvbiBXcml0ZSBSZWdpc3RlciBEZWZpbml0aW9ucyAqLworI2RlZmluZSBJVE1fSVdSX0FUVkFMSURNX1BvcyAgICAgICAgICAgICAgICAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBJVE0gSVdSOiBBVFZBTElETSBQb3NpdGlvbiAqLworI2RlZmluZSBJVE1fSVdSX0FUVkFMSURNX01zayAgICAgICAgICAgICAgICgxdWwgPDwgSVRNX0lXUl9BVFZBTElETV9Qb3MpICAgICAgICAgICAgICAgICAgLyohPCBJVE0gSVdSOiBBVFZBTElETSBNYXNrICovCisKKy8qIElUTSBJbnRlZ3JhdGlvbiBSZWFkIFJlZ2lzdGVyIERlZmluaXRpb25zICovCisjZGVmaW5lIElUTV9JUlJfQVRSRUFEWU1fUG9zICAgICAgICAgICAgICAgIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IElUTSBJUlI6IEFUUkVBRFlNIFBvc2l0aW9uICovCisjZGVmaW5lIElUTV9JUlJfQVRSRUFEWU1fTXNrICAgICAgICAgICAgICAgKDF1bCA8PCBJVE1fSVJSX0FUUkVBRFlNX1BvcykgICAgICAgICAgICAgICAgICAvKiE8IElUTSBJUlI6IEFUUkVBRFlNIE1hc2sgKi8KKworLyogSVRNIEludGVncmF0aW9uIE1vZGUgQ29udHJvbCBSZWdpc3RlciBEZWZpbml0aW9ucyAqLworI2RlZmluZSBJVE1fSU1DUl9JTlRFR1JBVElPTl9Qb3MgICAgICAgICAgICAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBJVE0gSU1DUjogSU5URUdSQVRJT04gUG9zaXRpb24gKi8KKyNkZWZpbmUgSVRNX0lNQ1JfSU5URUdSQVRJT05fTXNrICAgICAgICAgICAoMXVsIDw8IElUTV9JTUNSX0lOVEVHUkFUSU9OX1BvcykgICAgICAgICAgICAgIC8qITwgSVRNIElNQ1I6IElOVEVHUkFUSU9OIE1hc2sgKi8KKworLyogSVRNIExvY2sgU3RhdHVzIFJlZ2lzdGVyIERlZmluaXRpb25zICovCisjZGVmaW5lIElUTV9MU1JfQnl0ZUFjY19Qb3MgICAgICAgICAgICAgICAgIDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IElUTSBMU1I6IEJ5dGVBY2MgUG9zaXRpb24gKi8KKyNkZWZpbmUgSVRNX0xTUl9CeXRlQWNjX01zayAgICAgICAgICAgICAgICAoMXVsIDw8IElUTV9MU1JfQnl0ZUFjY19Qb3MpICAgICAgICAgICAgICAgICAgIC8qITwgSVRNIExTUjogQnl0ZUFjYyBNYXNrICovCisKKyNkZWZpbmUgSVRNX0xTUl9BY2Nlc3NfUG9zICAgICAgICAgICAgICAgICAgMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgSVRNIExTUjogQWNjZXNzIFBvc2l0aW9uICovCisjZGVmaW5lIElUTV9MU1JfQWNjZXNzX01zayAgICAgICAgICAgICAgICAgKDF1bCA8PCBJVE1fTFNSX0FjY2Vzc19Qb3MpICAgICAgICAgICAgICAgICAgICAvKiE8IElUTSBMU1I6IEFjY2VzcyBNYXNrICovCisKKyNkZWZpbmUgSVRNX0xTUl9QcmVzZW50X1BvcyAgICAgICAgICAgICAgICAgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgSVRNIExTUjogUHJlc2VudCBQb3NpdGlvbiAqLworI2RlZmluZSBJVE1fTFNSX1ByZXNlbnRfTXNrICAgICAgICAgICAgICAgICgxdWwgPDwgSVRNX0xTUl9QcmVzZW50X1BvcykgICAgICAgICAgICAgICAgICAgLyohPCBJVE0gTFNSOiBQcmVzZW50IE1hc2sgKi8KKy8qQH0qLyAvKiBlbmQgb2YgZ3JvdXAgQ01TSVNfQ00zX0lUTSAqLworCisKKy8qKiBAYWRkdG9ncm91cCBDTVNJU19DTTNfSW50ZXJydXB0VHlwZSBDTVNJUyBDTTMgSW50ZXJydXB0IFR5cGUKKyAgbWVtb3J5IG1hcHBlZCBzdHJ1Y3R1cmUgZm9yIEludGVycnVwdCBUeXBlCisgIEB7CisgKi8KK3R5cGVkZWYgc3RydWN0Cit7CisgICAgICAgdWludDMyX3QgUkVTRVJWRUQwOworICBfX0kgIHVpbnQzMl90IElDVFI7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgT2Zmc2V0OiAweDA0ICBJbnRlcnJ1cHQgQ29udHJvbCBUeXBlIFJlZ2lzdGVyICovCisjaWYgKChkZWZpbmVkIF9fQ00zX1JFVikgJiYgKF9fQ00zX1JFViA+PSAweDIwMCkpCisgIF9fSU8gdWludDMyX3QgQUNUTFI7ICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBPZmZzZXQ6IDB4MDggIEF1eGlsaWFyeSBDb250cm9sIFJlZ2lzdGVyICAgICAgKi8KKyNlbHNlCisgICAgICAgdWludDMyX3QgUkVTRVJWRUQxOworI2VuZGlmCit9IEludGVycnVwdFR5cGVfVHlwZTsKKworLyogSW50ZXJydXB0IENvbnRyb2xsZXIgVHlwZSBSZWdpc3RlciBEZWZpbml0aW9ucyAqLworI2RlZmluZSBJbnRlcnJ1cHRUeXBlX0lDVFJfSU5UTElORVNOVU1fUG9zICAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBJbnRlcnJ1cHRUeXBlIElDVFI6IElOVExJTkVTTlVNIFBvc2l0aW9uICovCisjZGVmaW5lIEludGVycnVwdFR5cGVfSUNUUl9JTlRMSU5FU05VTV9Nc2sgKDB4MUZ1bCA8PCBJbnRlcnJ1cHRUeXBlX0lDVFJfSU5UTElORVNOVU1fUG9zKSAvKiE8IEludGVycnVwdFR5cGUgSUNUUjogSU5UTElORVNOVU0gTWFzayAqLworCisvKiBBdXhpbGlhcnkgQ29udHJvbCBSZWdpc3RlciBEZWZpbml0aW9ucyAqLworI2RlZmluZSBJbnRlcnJ1cHRUeXBlX0FDVExSX0RJU0ZPTERfUG9zICAgICAyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBJbnRlcnJ1cHRUeXBlIEFDVExSOiBESVNGT0xEIFBvc2l0aW9uICovCisjZGVmaW5lIEludGVycnVwdFR5cGVfQUNUTFJfRElTRk9MRF9Nc2sgICAgKDF1bCA8PCBJbnRlcnJ1cHRUeXBlX0FDVExSX0RJU0ZPTERfUG9zKSAgICAgICAvKiE8IEludGVycnVwdFR5cGUgQUNUTFI6IERJU0ZPTEQgTWFzayAqLworCisjZGVmaW5lIEludGVycnVwdFR5cGVfQUNUTFJfRElTREVGV0JVRl9Qb3MgIDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IEludGVycnVwdFR5cGUgQUNUTFI6IERJU0RFRldCVUYgUG9zaXRpb24gKi8KKyNkZWZpbmUgSW50ZXJydXB0VHlwZV9BQ1RMUl9ESVNERUZXQlVGX01zayAoMXVsIDw8IEludGVycnVwdFR5cGVfQUNUTFJfRElTREVGV0JVRl9Qb3MpICAgIC8qITwgSW50ZXJydXB0VHlwZSBBQ1RMUjogRElTREVGV0JVRiBNYXNrICovCisKKyNkZWZpbmUgSW50ZXJydXB0VHlwZV9BQ1RMUl9ESVNNQ1lDSU5UX1BvcyAgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgSW50ZXJydXB0VHlwZSBBQ1RMUjogRElTTUNZQ0lOVCBQb3NpdGlvbiAqLworI2RlZmluZSBJbnRlcnJ1cHRUeXBlX0FDVExSX0RJU01DWUNJTlRfTXNrICgxdWwgPDwgSW50ZXJydXB0VHlwZV9BQ1RMUl9ESVNNQ1lDSU5UX1BvcykgICAgLyohPCBJbnRlcnJ1cHRUeXBlIEFDVExSOiBESVNNQ1lDSU5UIE1hc2sgKi8KKy8qQH0qLyAvKiBlbmQgb2YgZ3JvdXAgQ01TSVNfQ00zX0ludGVycnVwdFR5cGUgKi8KKworCisjaWYgZGVmaW5lZCAoX19NUFVfUFJFU0VOVCkgJiYgKF9fTVBVX1BSRVNFTlQgPT0gMSkKKy8qKiBAYWRkdG9ncm91cCBDTVNJU19DTTNfTVBVIENNU0lTIENNMyBNUFUKKyAgbWVtb3J5IG1hcHBlZCBzdHJ1Y3R1cmUgZm9yIE1lbW9yeSBQcm90ZWN0aW9uIFVuaXQgKE1QVSkKKyAgQHsKKyAqLwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgX19JICB1aW50MzJfdCBUWVBFOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogMHgwMCAgTVBVIFR5cGUgUmVnaXN0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBfX0lPIHVpbnQzMl90IENUUkw7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgT2Zmc2V0OiAweDA0ICBNUFUgQ29udHJvbCBSZWdpc3RlciAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIF9fSU8gdWludDMyX3QgUk5SOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBPZmZzZXQ6IDB4MDggIE1QVSBSZWdpb24gUk5SYmVyIFJlZ2lzdGVyICAgICAgICAgICAgICAgICAgICAgKi8KKyAgX19JTyB1aW50MzJfdCBSQkFSOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogMHgwQyAgTVBVIFJlZ2lvbiBCYXNlIEFkZHJlc3MgUmVnaXN0ZXIgICAgICAgICAgICAgICAqLworICBfX0lPIHVpbnQzMl90IFJBU1I7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgT2Zmc2V0OiAweDEwICBNUFUgUmVnaW9uIEF0dHJpYnV0ZSBhbmQgU2l6ZSBSZWdpc3RlciAgICAgICAgICovCisgIF9fSU8gdWludDMyX3QgUkJBUl9BMTsgICAgICAgICAgICAgICAgICAgICAgLyohPCBPZmZzZXQ6IDB4MTQgIE1QVSBBbGlhcyAxIFJlZ2lvbiBCYXNlIEFkZHJlc3MgUmVnaXN0ZXIgICAgICAgKi8KKyAgX19JTyB1aW50MzJfdCBSQVNSX0ExOyAgICAgICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogMHgxOCAgTVBVIEFsaWFzIDEgUmVnaW9uIEF0dHJpYnV0ZSBhbmQgU2l6ZSBSZWdpc3RlciAqLworICBfX0lPIHVpbnQzMl90IFJCQVJfQTI7ICAgICAgICAgICAgICAgICAgICAgIC8qITwgT2Zmc2V0OiAweDFDICBNUFUgQWxpYXMgMiBSZWdpb24gQmFzZSBBZGRyZXNzIFJlZ2lzdGVyICAgICAgICovCisgIF9fSU8gdWludDMyX3QgUkFTUl9BMjsgICAgICAgICAgICAgICAgICAgICAgLyohPCBPZmZzZXQ6IDB4MjAgIE1QVSBBbGlhcyAyIFJlZ2lvbiBBdHRyaWJ1dGUgYW5kIFNpemUgUmVnaXN0ZXIgKi8KKyAgX19JTyB1aW50MzJfdCBSQkFSX0EzOyAgICAgICAgICAgICAgICAgICAgICAvKiE8IE9mZnNldDogMHgyNCAgTVBVIEFsaWFzIDMgUmVnaW9uIEJhc2UgQWRkcmVzcyBSZWdpc3RlciAgICAgICAqLworICBfX0lPIHVpbnQzMl90IFJBU1JfQTM7ICAgICAgICAgICAgICAgICAgICAgIC8qITwgT2Zmc2V0OiAweDI4ICBNUFUgQWxpYXMgMyBSZWdpb24gQXR0cmlidXRlIGFuZCBTaXplIFJlZ2lzdGVyICovCit9IE1QVV9UeXBlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisvKiBNUFUgVHlwZSBSZWdpc3RlciAqLworI2RlZmluZSBNUFVfVFlQRV9JUkVHSU9OX1BvcyAgICAgICAgICAgICAgIDE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBNUFUgVFlQRTogSVJFR0lPTiBQb3NpdGlvbiAqLworI2RlZmluZSBNUFVfVFlQRV9JUkVHSU9OX01zayAgICAgICAgICAgICAgICgweEZGdWwgPDwgTVBVX1RZUEVfSVJFR0lPTl9Qb3MpICAgICAgICAgICAgICAgLyohPCBNUFUgVFlQRTogSVJFR0lPTiBNYXNrICovCisKKyNkZWZpbmUgTVBVX1RZUEVfRFJFR0lPTl9Qb3MgICAgICAgICAgICAgICAgOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgTVBVIFRZUEU6IERSRUdJT04gUG9zaXRpb24gKi8KKyNkZWZpbmUgTVBVX1RZUEVfRFJFR0lPTl9Nc2sgICAgICAgICAgICAgICAoMHhGRnVsIDw8IE1QVV9UWVBFX0RSRUdJT05fUG9zKSAgICAgICAgICAgICAgIC8qITwgTVBVIFRZUEU6IERSRUdJT04gTWFzayAqLworCisjZGVmaW5lIE1QVV9UWVBFX1NFUEFSQVRFX1BvcyAgICAgICAgICAgICAgIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IE1QVSBUWVBFOiBTRVBBUkFURSBQb3NpdGlvbiAqLworI2RlZmluZSBNUFVfVFlQRV9TRVBBUkFURV9Nc2sgICAgICAgICAgICAgICgxdWwgPDwgTVBVX1RZUEVfU0VQQVJBVEVfUG9zKSAgICAgICAgICAgICAgICAgLyohPCBNUFUgVFlQRTogU0VQQVJBVEUgTWFzayAqLworCisvKiBNUFUgQ29udHJvbCBSZWdpc3RlciAqLworI2RlZmluZSBNUFVfQ1RSTF9QUklWREVGRU5BX1BvcyAgICAgICAgICAgICAyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBNUFUgQ1RSTDogUFJJVkRFRkVOQSBQb3NpdGlvbiAqLworI2RlZmluZSBNUFVfQ1RSTF9QUklWREVGRU5BX01zayAgICAgICAgICAgICgxdWwgPDwgTVBVX0NUUkxfUFJJVkRFRkVOQV9Qb3MpICAgICAgICAgICAgICAgLyohPCBNUFUgQ1RSTDogUFJJVkRFRkVOQSBNYXNrICovCisKKyNkZWZpbmUgTVBVX0NUUkxfSEZOTUlFTkFfUG9zICAgICAgICAgICAgICAgMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgTVBVIENUUkw6IEhGTk1JRU5BIFBvc2l0aW9uICovCisjZGVmaW5lIE1QVV9DVFJMX0hGTk1JRU5BX01zayAgICAgICAgICAgICAgKDF1bCA8PCBNUFVfQ1RSTF9IRk5NSUVOQV9Qb3MpICAgICAgICAgICAgICAgICAvKiE8IE1QVSBDVFJMOiBIRk5NSUVOQSBNYXNrICovCisKKyNkZWZpbmUgTVBVX0NUUkxfRU5BQkxFX1BvcyAgICAgICAgICAgICAgICAgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgTVBVIENUUkw6IEVOQUJMRSBQb3NpdGlvbiAqLworI2RlZmluZSBNUFVfQ1RSTF9FTkFCTEVfTXNrICAgICAgICAgICAgICAgICgxdWwgPDwgTVBVX0NUUkxfRU5BQkxFX1BvcykgICAgICAgICAgICAgICAgICAgLyohPCBNUFUgQ1RSTDogRU5BQkxFIE1hc2sgKi8KKworLyogTVBVIFJlZ2lvbiBOdW1iZXIgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgTVBVX1JOUl9SRUdJT05fUG9zICAgICAgICAgICAgICAgICAgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgTVBVIFJOUjogUkVHSU9OIFBvc2l0aW9uICovCisjZGVmaW5lIE1QVV9STlJfUkVHSU9OX01zayAgICAgICAgICAgICAgICAgKDB4RkZ1bCA8PCBNUFVfUk5SX1JFR0lPTl9Qb3MpICAgICAgICAgICAgICAgICAvKiE8IE1QVSBSTlI6IFJFR0lPTiBNYXNrICovCisKKy8qIE1QVSBSZWdpb24gQmFzZSBBZGRyZXNzIFJlZ2lzdGVyICovCisjZGVmaW5lIE1QVV9SQkFSX0FERFJfUG9zICAgICAgICAgICAgICAgICAgIDUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IE1QVSBSQkFSOiBBRERSIFBvc2l0aW9uICovCisjZGVmaW5lIE1QVV9SQkFSX0FERFJfTXNrICAgICAgICAgICAgICAgICAgKDB4N0ZGRkZGRnVsIDw8IE1QVV9SQkFSX0FERFJfUG9zKSAgICAgICAgICAgICAvKiE8IE1QVSBSQkFSOiBBRERSIE1hc2sgKi8KKworI2RlZmluZSBNUFVfUkJBUl9WQUxJRF9Qb3MgICAgICAgICAgICAgICAgICA0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBNUFUgUkJBUjogVkFMSUQgUG9zaXRpb24gKi8KKyNkZWZpbmUgTVBVX1JCQVJfVkFMSURfTXNrICAgICAgICAgICAgICAgICAoMXVsIDw8IE1QVV9SQkFSX1ZBTElEX1BvcykgICAgICAgICAgICAgICAgICAgIC8qITwgTVBVIFJCQVI6IFZBTElEIE1hc2sgKi8KKworI2RlZmluZSBNUFVfUkJBUl9SRUdJT05fUG9zICAgICAgICAgICAgICAgICAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBNUFUgUkJBUjogUkVHSU9OIFBvc2l0aW9uICovCisjZGVmaW5lIE1QVV9SQkFSX1JFR0lPTl9Nc2sgICAgICAgICAgICAgICAgKDB4RnVsIDw8IE1QVV9SQkFSX1JFR0lPTl9Qb3MpICAgICAgICAgICAgICAgICAvKiE8IE1QVSBSQkFSOiBSRUdJT04gTWFzayAqLworCisvKiBNUFUgUmVnaW9uIEF0dHJpYnV0ZSBhbmQgU2l6ZSBSZWdpc3RlciAqLworI2RlZmluZSBNUFVfUkFTUl9YTl9Qb3MgICAgICAgICAgICAgICAgICAgIDI4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBNUFUgUkFTUjogWE4gUG9zaXRpb24gKi8KKyNkZWZpbmUgTVBVX1JBU1JfWE5fTXNrICAgICAgICAgICAgICAgICAgICAoMXVsIDw8IE1QVV9SQVNSX1hOX1BvcykgICAgICAgICAgICAgICAgICAgICAgIC8qITwgTVBVIFJBU1I6IFhOIE1hc2sgKi8KKworI2RlZmluZSBNUFVfUkFTUl9BUF9Qb3MgICAgICAgICAgICAgICAgICAgIDI0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBNUFUgUkFTUjogQVAgUG9zaXRpb24gKi8KKyNkZWZpbmUgTVBVX1JBU1JfQVBfTXNrICAgICAgICAgICAgICAgICAgICAoN3VsIDw8IE1QVV9SQVNSX0FQX1BvcykgICAgICAgICAgICAgICAgICAgICAgIC8qITwgTVBVIFJBU1I6IEFQIE1hc2sgKi8KKworI2RlZmluZSBNUFVfUkFTUl9URVhfUG9zICAgICAgICAgICAgICAgICAgIDE5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBNUFUgUkFTUjogVEVYIFBvc2l0aW9uICovCisjZGVmaW5lIE1QVV9SQVNSX1RFWF9Nc2sgICAgICAgICAgICAgICAgICAgKDd1bCA8PCBNUFVfUkFTUl9URVhfUG9zKSAgICAgICAgICAgICAgICAgICAgICAvKiE8IE1QVSBSQVNSOiBURVggTWFzayAqLworCisjZGVmaW5lIE1QVV9SQVNSX1NfUG9zICAgICAgICAgICAgICAgICAgICAgMTggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IE1QVSBSQVNSOiBTaGFyZWFibGUgYml0IFBvc2l0aW9uICovCisjZGVmaW5lIE1QVV9SQVNSX1NfTXNrICAgICAgICAgICAgICAgICAgICAgKDF1bCA8PCBNUFVfUkFTUl9TX1BvcykgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IE1QVSBSQVNSOiBTaGFyZWFibGUgYml0IE1hc2sgKi8KKworI2RlZmluZSBNUFVfUkFTUl9DX1BvcyAgICAgICAgICAgICAgICAgICAgIDE3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBNUFUgUkFTUjogQ2FjaGVhYmxlIGJpdCBQb3NpdGlvbiAqLworI2RlZmluZSBNUFVfUkFTUl9DX01zayAgICAgICAgICAgICAgICAgICAgICgxdWwgPDwgTVBVX1JBU1JfQ19Qb3MpICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBNUFUgUkFTUjogQ2FjaGVhYmxlIGJpdCBNYXNrICovCisKKyNkZWZpbmUgTVBVX1JBU1JfQl9Qb3MgICAgICAgICAgICAgICAgICAgICAxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgTVBVIFJBU1I6IEJ1ZmZlcmFibGUgYml0IFBvc2l0aW9uICovCisjZGVmaW5lIE1QVV9SQVNSX0JfTXNrICAgICAgICAgICAgICAgICAgICAgKDF1bCA8PCBNUFVfUkFTUl9CX1BvcykgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IE1QVSBSQVNSOiBCdWZmZXJhYmxlIGJpdCBNYXNrICovCisKKyNkZWZpbmUgTVBVX1JBU1JfU1JEX1BvcyAgICAgICAgICAgICAgICAgICAgOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgTVBVIFJBU1I6IFN1Yi1SZWdpb24gRGlzYWJsZSBQb3NpdGlvbiAqLworI2RlZmluZSBNUFVfUkFTUl9TUkRfTXNrICAgICAgICAgICAgICAgICAgICgweEZGdWwgPDwgTVBVX1JBU1JfU1JEX1BvcykgICAgICAgICAgICAgICAgICAgLyohPCBNUFUgUkFTUjogU3ViLVJlZ2lvbiBEaXNhYmxlIE1hc2sgKi8KKworI2RlZmluZSBNUFVfUkFTUl9TSVpFX1BvcyAgICAgICAgICAgICAgICAgICAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBNUFUgUkFTUjogUmVnaW9uIFNpemUgRmllbGQgUG9zaXRpb24gKi8KKyNkZWZpbmUgTVBVX1JBU1JfU0laRV9Nc2sgICAgICAgICAgICAgICAgICAoMHgxRnVsIDw8IE1QVV9SQVNSX1NJWkVfUG9zKSAgICAgICAgICAgICAgICAgIC8qITwgTVBVIFJBU1I6IFJlZ2lvbiBTaXplIEZpZWxkIE1hc2sgKi8KKworI2RlZmluZSBNUFVfUkFTUl9FTkFfUG9zICAgICAgICAgICAgICAgICAgICAgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBNUFUgUkFTUjogUmVnaW9uIGVuYWJsZSBiaXQgUG9zaXRpb24gKi8KKyNkZWZpbmUgTVBVX1JBU1JfRU5BX01zayAgICAgICAgICAgICAgICAgICAgKDB4MUZ1bCA8PCBNUFVfUkFTUl9FTkFfUG9zKSAgICAgICAgICAgICAgICAgIC8qITwgTVBVIFJBU1I6IFJlZ2lvbiBlbmFibGUgYml0IERpc2FibGUgTWFzayAqLworCisvKkB9Ki8gLyogZW5kIG9mIGdyb3VwIENNU0lTX0NNM19NUFUgKi8KKyNlbmRpZgorCisKKy8qKiBAYWRkdG9ncm91cCBDTVNJU19DTTNfQ29yZURlYnVnIENNU0lTIENNMyBDb3JlIERlYnVnCisgIG1lbW9yeSBtYXBwZWQgc3RydWN0dXJlIGZvciBDb3JlIERlYnVnIFJlZ2lzdGVyCisgIEB7CisgKi8KK3R5cGVkZWYgc3RydWN0Cit7CisgIF9fSU8gdWludDMyX3QgREhDU1I7ICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBPZmZzZXQ6IDB4MDAgIERlYnVnIEhhbHRpbmcgQ29udHJvbCBhbmQgU3RhdHVzIFJlZ2lzdGVyICAgICovCisgIF9fTyAgdWludDMyX3QgRENSU1I7ICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBPZmZzZXQ6IDB4MDQgIERlYnVnIENvcmUgUmVnaXN0ZXIgU2VsZWN0b3IgUmVnaXN0ZXIgICAgICAgICovCisgIF9fSU8gdWludDMyX3QgRENSRFI7ICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBPZmZzZXQ6IDB4MDggIERlYnVnIENvcmUgUmVnaXN0ZXIgRGF0YSBSZWdpc3RlciAgICAgICAgICAgICovCisgIF9fSU8gdWludDMyX3QgREVNQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBPZmZzZXQ6IDB4MEMgIERlYnVnIEV4Y2VwdGlvbiBhbmQgTW9uaXRvciBDb250cm9sIFJlZ2lzdGVyICovCit9IENvcmVEZWJ1Z19UeXBlOworCisvKiBEZWJ1ZyBIYWx0aW5nIENvbnRyb2wgYW5kIFN0YXR1cyBSZWdpc3RlciAqLworI2RlZmluZSBDb3JlRGVidWdfREhDU1JfREJHS0VZX1BvcyAgICAgICAgIDE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBDb3JlRGVidWcgREhDU1I6IERCR0tFWSBQb3NpdGlvbiAqLworI2RlZmluZSBDb3JlRGVidWdfREhDU1JfREJHS0VZX01zayAgICAgICAgICgweEZGRkZ1bCA8PCBDb3JlRGVidWdfREhDU1JfREJHS0VZX1BvcykgICAgICAgLyohPCBDb3JlRGVidWcgREhDU1I6IERCR0tFWSBNYXNrICovCisKKyNkZWZpbmUgQ29yZURlYnVnX0RIQ1NSX1NfUkVTRVRfU1RfUG9zICAgICAyNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgQ29yZURlYnVnIERIQ1NSOiBTX1JFU0VUX1NUIFBvc2l0aW9uICovCisjZGVmaW5lIENvcmVEZWJ1Z19ESENTUl9TX1JFU0VUX1NUX01zayAgICAgKDF1bCA8PCBDb3JlRGVidWdfREhDU1JfU19SRVNFVF9TVF9Qb3MpICAgICAgICAvKiE8IENvcmVEZWJ1ZyBESENTUjogU19SRVNFVF9TVCBNYXNrICovCisKKyNkZWZpbmUgQ29yZURlYnVnX0RIQ1NSX1NfUkVUSVJFX1NUX1BvcyAgICAyNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgQ29yZURlYnVnIERIQ1NSOiBTX1JFVElSRV9TVCBQb3NpdGlvbiAqLworI2RlZmluZSBDb3JlRGVidWdfREhDU1JfU19SRVRJUkVfU1RfTXNrICAgICgxdWwgPDwgQ29yZURlYnVnX0RIQ1NSX1NfUkVUSVJFX1NUX1BvcykgICAgICAgLyohPCBDb3JlRGVidWcgREhDU1I6IFNfUkVUSVJFX1NUIE1hc2sgKi8KKworI2RlZmluZSBDb3JlRGVidWdfREhDU1JfU19MT0NLVVBfUG9zICAgICAgIDE5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBDb3JlRGVidWcgREhDU1I6IFNfTE9DS1VQIFBvc2l0aW9uICovCisjZGVmaW5lIENvcmVEZWJ1Z19ESENTUl9TX0xPQ0tVUF9Nc2sgICAgICAgKDF1bCA8PCBDb3JlRGVidWdfREhDU1JfU19MT0NLVVBfUG9zKSAgICAgICAgICAvKiE8IENvcmVEZWJ1ZyBESENTUjogU19MT0NLVVAgTWFzayAqLworCisjZGVmaW5lIENvcmVEZWJ1Z19ESENTUl9TX1NMRUVQX1BvcyAgICAgICAgMTggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IENvcmVEZWJ1ZyBESENTUjogU19TTEVFUCBQb3NpdGlvbiAqLworI2RlZmluZSBDb3JlRGVidWdfREhDU1JfU19TTEVFUF9Nc2sgICAgICAgICgxdWwgPDwgQ29yZURlYnVnX0RIQ1NSX1NfU0xFRVBfUG9zKSAgICAgICAgICAgLyohPCBDb3JlRGVidWcgREhDU1I6IFNfU0xFRVAgTWFzayAqLworCisjZGVmaW5lIENvcmVEZWJ1Z19ESENTUl9TX0hBTFRfUG9zICAgICAgICAgMTcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IENvcmVEZWJ1ZyBESENTUjogU19IQUxUIFBvc2l0aW9uICovCisjZGVmaW5lIENvcmVEZWJ1Z19ESENTUl9TX0hBTFRfTXNrICAgICAgICAgKDF1bCA8PCBDb3JlRGVidWdfREhDU1JfU19IQUxUX1BvcykgICAgICAgICAgICAvKiE8IENvcmVEZWJ1ZyBESENTUjogU19IQUxUIE1hc2sgKi8KKworI2RlZmluZSBDb3JlRGVidWdfREhDU1JfU19SRUdSRFlfUG9zICAgICAgIDE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBDb3JlRGVidWcgREhDU1I6IFNfUkVHUkRZIFBvc2l0aW9uICovCisjZGVmaW5lIENvcmVEZWJ1Z19ESENTUl9TX1JFR1JEWV9Nc2sgICAgICAgKDF1bCA8PCBDb3JlRGVidWdfREhDU1JfU19SRUdSRFlfUG9zKSAgICAgICAgICAvKiE8IENvcmVEZWJ1ZyBESENTUjogU19SRUdSRFkgTWFzayAqLworCisjZGVmaW5lIENvcmVEZWJ1Z19ESENTUl9DX1NOQVBTVEFMTF9Qb3MgICAgIDUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IENvcmVEZWJ1ZyBESENTUjogQ19TTkFQU1RBTEwgUG9zaXRpb24gKi8KKyNkZWZpbmUgQ29yZURlYnVnX0RIQ1NSX0NfU05BUFNUQUxMX01zayAgICAoMXVsIDw8IENvcmVEZWJ1Z19ESENTUl9DX1NOQVBTVEFMTF9Qb3MpICAgICAgIC8qITwgQ29yZURlYnVnIERIQ1NSOiBDX1NOQVBTVEFMTCBNYXNrICovCisKKyNkZWZpbmUgQ29yZURlYnVnX0RIQ1NSX0NfTUFTS0lOVFNfUG9zICAgICAgMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgQ29yZURlYnVnIERIQ1NSOiBDX01BU0tJTlRTIFBvc2l0aW9uICovCisjZGVmaW5lIENvcmVEZWJ1Z19ESENTUl9DX01BU0tJTlRTX01zayAgICAgKDF1bCA8PCBDb3JlRGVidWdfREhDU1JfQ19NQVNLSU5UU19Qb3MpICAgICAgICAvKiE8IENvcmVEZWJ1ZyBESENTUjogQ19NQVNLSU5UUyBNYXNrICovCisKKyNkZWZpbmUgQ29yZURlYnVnX0RIQ1NSX0NfU1RFUF9Qb3MgICAgICAgICAgMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgQ29yZURlYnVnIERIQ1NSOiBDX1NURVAgUG9zaXRpb24gKi8KKyNkZWZpbmUgQ29yZURlYnVnX0RIQ1NSX0NfU1RFUF9Nc2sgICAgICAgICAoMXVsIDw8IENvcmVEZWJ1Z19ESENTUl9DX1NURVBfUG9zKSAgICAgICAgICAgIC8qITwgQ29yZURlYnVnIERIQ1NSOiBDX1NURVAgTWFzayAqLworCisjZGVmaW5lIENvcmVEZWJ1Z19ESENTUl9DX0hBTFRfUG9zICAgICAgICAgIDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IENvcmVEZWJ1ZyBESENTUjogQ19IQUxUIFBvc2l0aW9uICovCisjZGVmaW5lIENvcmVEZWJ1Z19ESENTUl9DX0hBTFRfTXNrICAgICAgICAgKDF1bCA8PCBDb3JlRGVidWdfREhDU1JfQ19IQUxUX1BvcykgICAgICAgICAgICAvKiE8IENvcmVEZWJ1ZyBESENTUjogQ19IQUxUIE1hc2sgKi8KKworI2RlZmluZSBDb3JlRGVidWdfREhDU1JfQ19ERUJVR0VOX1BvcyAgICAgICAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBDb3JlRGVidWcgREhDU1I6IENfREVCVUdFTiBQb3NpdGlvbiAqLworI2RlZmluZSBDb3JlRGVidWdfREhDU1JfQ19ERUJVR0VOX01zayAgICAgICgxdWwgPDwgQ29yZURlYnVnX0RIQ1NSX0NfREVCVUdFTl9Qb3MpICAgICAgICAgLyohPCBDb3JlRGVidWcgREhDU1I6IENfREVCVUdFTiBNYXNrICovCisKKy8qIERlYnVnIENvcmUgUmVnaXN0ZXIgU2VsZWN0b3IgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgQ29yZURlYnVnX0RDUlNSX1JFR1duUl9Qb3MgICAgICAgICAxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgQ29yZURlYnVnIERDUlNSOiBSRUdXblIgUG9zaXRpb24gKi8KKyNkZWZpbmUgQ29yZURlYnVnX0RDUlNSX1JFR1duUl9Nc2sgICAgICAgICAoMXVsIDw8IENvcmVEZWJ1Z19EQ1JTUl9SRUdXblJfUG9zKSAgICAgICAgICAgIC8qITwgQ29yZURlYnVnIERDUlNSOiBSRUdXblIgTWFzayAqLworCisjZGVmaW5lIENvcmVEZWJ1Z19EQ1JTUl9SRUdTRUxfUG9zICAgICAgICAgIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IENvcmVEZWJ1ZyBEQ1JTUjogUkVHU0VMIFBvc2l0aW9uICovCisjZGVmaW5lIENvcmVEZWJ1Z19EQ1JTUl9SRUdTRUxfTXNrICAgICAgICAgKDB4MUZ1bCA8PCBDb3JlRGVidWdfRENSU1JfUkVHU0VMX1BvcykgICAgICAgICAvKiE8IENvcmVEZWJ1ZyBEQ1JTUjogUkVHU0VMIE1hc2sgKi8KKworLyogRGVidWcgRXhjZXB0aW9uIGFuZCBNb25pdG9yIENvbnRyb2wgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgQ29yZURlYnVnX0RFTUNSX1RSQ0VOQV9Qb3MgICAgICAgICAyNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgQ29yZURlYnVnIERFTUNSOiBUUkNFTkEgUG9zaXRpb24gKi8KKyNkZWZpbmUgQ29yZURlYnVnX0RFTUNSX1RSQ0VOQV9Nc2sgICAgICAgICAoMXVsIDw8IENvcmVEZWJ1Z19ERU1DUl9UUkNFTkFfUG9zKSAgICAgICAgICAgIC8qITwgQ29yZURlYnVnIERFTUNSOiBUUkNFTkEgTWFzayAqLworCisjZGVmaW5lIENvcmVEZWJ1Z19ERU1DUl9NT05fUkVRX1BvcyAgICAgICAgMTkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IENvcmVEZWJ1ZyBERU1DUjogTU9OX1JFUSBQb3NpdGlvbiAqLworI2RlZmluZSBDb3JlRGVidWdfREVNQ1JfTU9OX1JFUV9Nc2sgICAgICAgICgxdWwgPDwgQ29yZURlYnVnX0RFTUNSX01PTl9SRVFfUG9zKSAgICAgICAgICAgLyohPCBDb3JlRGVidWcgREVNQ1I6IE1PTl9SRVEgTWFzayAqLworCisjZGVmaW5lIENvcmVEZWJ1Z19ERU1DUl9NT05fU1RFUF9Qb3MgICAgICAgMTggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IENvcmVEZWJ1ZyBERU1DUjogTU9OX1NURVAgUG9zaXRpb24gKi8KKyNkZWZpbmUgQ29yZURlYnVnX0RFTUNSX01PTl9TVEVQX01zayAgICAgICAoMXVsIDw8IENvcmVEZWJ1Z19ERU1DUl9NT05fU1RFUF9Qb3MpICAgICAgICAgIC8qITwgQ29yZURlYnVnIERFTUNSOiBNT05fU1RFUCBNYXNrICovCisKKyNkZWZpbmUgQ29yZURlYnVnX0RFTUNSX01PTl9QRU5EX1BvcyAgICAgICAxNyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgQ29yZURlYnVnIERFTUNSOiBNT05fUEVORCBQb3NpdGlvbiAqLworI2RlZmluZSBDb3JlRGVidWdfREVNQ1JfTU9OX1BFTkRfTXNrICAgICAgICgxdWwgPDwgQ29yZURlYnVnX0RFTUNSX01PTl9QRU5EX1BvcykgICAgICAgICAgLyohPCBDb3JlRGVidWcgREVNQ1I6IE1PTl9QRU5EIE1hc2sgKi8KKworI2RlZmluZSBDb3JlRGVidWdfREVNQ1JfTU9OX0VOX1BvcyAgICAgICAgIDE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBDb3JlRGVidWcgREVNQ1I6IE1PTl9FTiBQb3NpdGlvbiAqLworI2RlZmluZSBDb3JlRGVidWdfREVNQ1JfTU9OX0VOX01zayAgICAgICAgICgxdWwgPDwgQ29yZURlYnVnX0RFTUNSX01PTl9FTl9Qb3MpICAgICAgICAgICAgLyohPCBDb3JlRGVidWcgREVNQ1I6IE1PTl9FTiBNYXNrICovCisKKyNkZWZpbmUgQ29yZURlYnVnX0RFTUNSX1ZDX0hBUkRFUlJfUG9zICAgICAxMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgQ29yZURlYnVnIERFTUNSOiBWQ19IQVJERVJSIFBvc2l0aW9uICovCisjZGVmaW5lIENvcmVEZWJ1Z19ERU1DUl9WQ19IQVJERVJSX01zayAgICAgKDF1bCA8PCBDb3JlRGVidWdfREVNQ1JfVkNfSEFSREVSUl9Qb3MpICAgICAgICAvKiE8IENvcmVEZWJ1ZyBERU1DUjogVkNfSEFSREVSUiBNYXNrICovCisKKyNkZWZpbmUgQ29yZURlYnVnX0RFTUNSX1ZDX0lOVEVSUl9Qb3MgICAgICAgOSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgQ29yZURlYnVnIERFTUNSOiBWQ19JTlRFUlIgUG9zaXRpb24gKi8KKyNkZWZpbmUgQ29yZURlYnVnX0RFTUNSX1ZDX0lOVEVSUl9Nc2sgICAgICAoMXVsIDw8IENvcmVEZWJ1Z19ERU1DUl9WQ19JTlRFUlJfUG9zKSAgICAgICAgIC8qITwgQ29yZURlYnVnIERFTUNSOiBWQ19JTlRFUlIgTWFzayAqLworCisjZGVmaW5lIENvcmVEZWJ1Z19ERU1DUl9WQ19CVVNFUlJfUG9zICAgICAgIDggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IENvcmVEZWJ1ZyBERU1DUjogVkNfQlVTRVJSIFBvc2l0aW9uICovCisjZGVmaW5lIENvcmVEZWJ1Z19ERU1DUl9WQ19CVVNFUlJfTXNrICAgICAgKDF1bCA8PCBDb3JlRGVidWdfREVNQ1JfVkNfQlVTRVJSX1BvcykgICAgICAgICAvKiE8IENvcmVEZWJ1ZyBERU1DUjogVkNfQlVTRVJSIE1hc2sgKi8KKworI2RlZmluZSBDb3JlRGVidWdfREVNQ1JfVkNfU1RBVEVSUl9Qb3MgICAgICA3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBDb3JlRGVidWcgREVNQ1I6IFZDX1NUQVRFUlIgUG9zaXRpb24gKi8KKyNkZWZpbmUgQ29yZURlYnVnX0RFTUNSX1ZDX1NUQVRFUlJfTXNrICAgICAoMXVsIDw8IENvcmVEZWJ1Z19ERU1DUl9WQ19TVEFURVJSX1BvcykgICAgICAgIC8qITwgQ29yZURlYnVnIERFTUNSOiBWQ19TVEFURVJSIE1hc2sgKi8KKworI2RlZmluZSBDb3JlRGVidWdfREVNQ1JfVkNfQ0hLRVJSX1BvcyAgICAgICA2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBDb3JlRGVidWcgREVNQ1I6IFZDX0NIS0VSUiBQb3NpdGlvbiAqLworI2RlZmluZSBDb3JlRGVidWdfREVNQ1JfVkNfQ0hLRVJSX01zayAgICAgICgxdWwgPDwgQ29yZURlYnVnX0RFTUNSX1ZDX0NIS0VSUl9Qb3MpICAgICAgICAgLyohPCBDb3JlRGVidWcgREVNQ1I6IFZDX0NIS0VSUiBNYXNrICovCisKKyNkZWZpbmUgQ29yZURlYnVnX0RFTUNSX1ZDX05PQ1BFUlJfUG9zICAgICAgNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgQ29yZURlYnVnIERFTUNSOiBWQ19OT0NQRVJSIFBvc2l0aW9uICovCisjZGVmaW5lIENvcmVEZWJ1Z19ERU1DUl9WQ19OT0NQRVJSX01zayAgICAgKDF1bCA8PCBDb3JlRGVidWdfREVNQ1JfVkNfTk9DUEVSUl9Qb3MpICAgICAgICAvKiE8IENvcmVEZWJ1ZyBERU1DUjogVkNfTk9DUEVSUiBNYXNrICovCisKKyNkZWZpbmUgQ29yZURlYnVnX0RFTUNSX1ZDX01NRVJSX1BvcyAgICAgICAgNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgQ29yZURlYnVnIERFTUNSOiBWQ19NTUVSUiBQb3NpdGlvbiAqLworI2RlZmluZSBDb3JlRGVidWdfREVNQ1JfVkNfTU1FUlJfTXNrICAgICAgICgxdWwgPDwgQ29yZURlYnVnX0RFTUNSX1ZDX01NRVJSX1BvcykgICAgICAgICAgLyohPCBDb3JlRGVidWcgREVNQ1I6IFZDX01NRVJSIE1hc2sgKi8KKworI2RlZmluZSBDb3JlRGVidWdfREVNQ1JfVkNfQ09SRVJFU0VUX1BvcyAgICAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBDb3JlRGVidWcgREVNQ1I6IFZDX0NPUkVSRVNFVCBQb3NpdGlvbiAqLworI2RlZmluZSBDb3JlRGVidWdfREVNQ1JfVkNfQ09SRVJFU0VUX01zayAgICgxdWwgPDwgQ29yZURlYnVnX0RFTUNSX1ZDX0NPUkVSRVNFVF9Qb3MpICAgICAgLyohPCBDb3JlRGVidWcgREVNQ1I6IFZDX0NPUkVSRVNFVCBNYXNrICovCisvKkB9Ki8gLyogZW5kIG9mIGdyb3VwIENNU0lTX0NNM19Db3JlRGVidWcgKi8KKworCisvKiBNZW1vcnkgbWFwcGluZyBvZiBDb3J0ZXgtTTMgSGFyZHdhcmUgKi8KKyNkZWZpbmUgU0NTX0JBU0UgICAgICAgICAgICAoMHhFMDAwRTAwMCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFN5c3RlbSBDb250cm9sIFNwYWNlIEJhc2UgQWRkcmVzcyAqLworI2RlZmluZSBJVE1fQkFTRSAgICAgICAgICAgICgweEUwMDAwMDAwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgSVRNIEJhc2UgQWRkcmVzcyAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIENvcmVEZWJ1Z19CQVNFICAgICAgKDB4RTAwMEVERjApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBDb3JlIERlYnVnIEJhc2UgQWRkcmVzcyAgICAgICAgICAgKi8KKyNkZWZpbmUgU3lzVGlja19CQVNFICAgICAgICAoU0NTX0JBU0UgKyAgMHgwMDEwKSAgICAgICAgICAgICAgICAgICAgICAvKiE8IFN5c1RpY2sgQmFzZSBBZGRyZXNzICAgICAgICAgICAgICAqLworI2RlZmluZSBOVklDX0JBU0UgICAgICAgICAgIChTQ1NfQkFTRSArICAweDAxMDApICAgICAgICAgICAgICAgICAgICAgIC8qITwgTlZJQyBCYXNlIEFkZHJlc3MgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIFNDQl9CQVNFICAgICAgICAgICAgKFNDU19CQVNFICsgIDB4MEQwMCkgICAgICAgICAgICAgICAgICAgICAgLyohPCBTeXN0ZW0gQ29udHJvbCBCbG9jayBCYXNlIEFkZHJlc3MgKi8KKworI2RlZmluZSBJbnRlcnJ1cHRUeXBlICAgICAgICgoSW50ZXJydXB0VHlwZV9UeXBlICopIFNDU19CQVNFKSAgICAgICAgIC8qITwgSW50ZXJydXB0IFR5cGUgUmVnaXN0ZXIgICAgICAgICAgICovCisjZGVmaW5lIFNDQiAgICAgICAgICAgICAgICAgKChTQ0JfVHlwZSAqKSAgICAgICAgICAgU0NCX0JBU0UpICAgICAgICAgLyohPCBTQ0IgY29uZmlndXJhdGlvbiBzdHJ1Y3QgICAgICAgICAgKi8KKyNkZWZpbmUgU3lzVGljayAgICAgICAgICAgICAoKFN5c1RpY2tfVHlwZSAqKSAgICAgICBTeXNUaWNrX0JBU0UpICAgICAvKiE8IFN5c1RpY2sgY29uZmlndXJhdGlvbiBzdHJ1Y3QgICAgICAqLworI2RlZmluZSBOVklDICAgICAgICAgICAgICAgICgoTlZJQ19UeXBlICopICAgICAgICAgIE5WSUNfQkFTRSkgICAgICAgIC8qITwgTlZJQyBjb25maWd1cmF0aW9uIHN0cnVjdCAgICAgICAgICovCisjZGVmaW5lIElUTSAgICAgICAgICAgICAgICAgKChJVE1fVHlwZSAqKSAgICAgICAgICAgSVRNX0JBU0UpICAgICAgICAgLyohPCBJVE0gY29uZmlndXJhdGlvbiBzdHJ1Y3QgICAgICAgICAgKi8KKyNkZWZpbmUgQ29yZURlYnVnICAgICAgICAgICAoKENvcmVEZWJ1Z19UeXBlICopICAgICBDb3JlRGVidWdfQkFTRSkgICAvKiE8IENvcmUgRGVidWcgY29uZmlndXJhdGlvbiBzdHJ1Y3QgICAqLworCisjaWYgZGVmaW5lZCAoX19NUFVfUFJFU0VOVCkgJiYgKF9fTVBVX1BSRVNFTlQgPT0gMSkKKyAgI2RlZmluZSBNUFVfQkFTRSAgICAgICAgICAoU0NTX0JBU0UgKyAgMHgwRDkwKSAgICAgICAgICAgICAgICAgICAgICAvKiE8IE1lbW9yeSBQcm90ZWN0aW9uIFVuaXQgICAgICAgICAgICAqLworICAjZGVmaW5lIE1QVSAgICAgICAgICAgICAgICgoTVBVX1R5cGUqKSAgICAgICAgICAgIE1QVV9CQVNFKSAgICAgICAgIC8qITwgTWVtb3J5IFByb3RlY3Rpb24gVW5pdCAgICAgICAgICAgICovCisjZW5kaWYKKworLypAfSovIC8qIGVuZCBvZiBncm91cCBDTVNJU19DTTNfY29yZV9yZWdpc3RlciAqLworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgICAgICAgICAgICAgICBIYXJkd2FyZSBBYnN0cmFjdGlvbiBMYXllcgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmIGRlZmluZWQgKCBfX0NDX0FSTSAgICkKKyAgI2RlZmluZSBfX0FTTSAgICAgICAgICAgIF9fYXNtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IGFzbSBrZXl3b3JkIGZvciBBUk0gQ29tcGlsZXIgICAgICAgICAgKi8KKyAgI2RlZmluZSBfX0lOTElORSAgICAgICAgIF9faW5saW5lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IGlubGluZSBrZXl3b3JkIGZvciBBUk0gQ29tcGlsZXIgICAgICAgKi8KKworI2VsaWYgZGVmaW5lZCAoIF9fSUNDQVJNX18gKQorICAjZGVmaW5lIF9fQVNNICAgICAgICAgICBfX2FzbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgYXNtIGtleXdvcmQgZm9yIElBUiBDb21waWxlciAgICAgICAgICAqLworICAjZGVmaW5lIF9fSU5MSU5FICAgICAgICBpbmxpbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgaW5saW5lIGtleXdvcmQgZm9yIElBUiBDb21waWxlci4gT25seSBhdmFpYWJsZSBpbiBIaWdoIG9wdGltaXphdGlvbiBtb2RlISAqLworCisjZWxpZiBkZWZpbmVkICAgKCAgX19HTlVDX18gICkKKyAgI2RlZmluZSBfX0FTTSAgICAgICAgICAgIF9fYXNtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IGFzbSBrZXl3b3JkIGZvciBHTlUgQ29tcGlsZXIgICAgICAgICAgKi8KKyAgI2RlZmluZSBfX0lOTElORSAgICAgICAgIGlubGluZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IGlubGluZSBrZXl3b3JkIGZvciBHTlUgQ29tcGlsZXIgICAgICAgKi8KKworI2VsaWYgZGVmaW5lZCAgICggIF9fVEFTS0lOR19fICApCisgICNkZWZpbmUgX19BU00gICAgICAgICAgICBfX2FzbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBhc20ga2V5d29yZCBmb3IgVEFTS0lORyBDb21waWxlciAgICAgICovCisgICNkZWZpbmUgX19JTkxJTkUgICAgICAgICBpbmxpbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBpbmxpbmUga2V5d29yZCBmb3IgVEFTS0lORyBDb21waWxlciAgICovCisKKyNlbmRpZgorCisKKy8qICMjIyMjIyMjIyMjIyMjIyMjIyMgIENvbXBpbGVyIHNwZWNpZmljIEludHJpbnNpY3MgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAqLworCisjaWYgZGVmaW5lZCAoIF9fQ0NfQVJNICAgKSAvKi0tLS0tLS0tLS0tLS0tLS0tLVJlYWxWaWV3IENvbXBpbGVyIC0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qIEFSTSBhcm1jYyBzcGVjaWZpYyBmdW5jdGlvbnMgKi8KKworI2RlZmluZSBfX2VuYWJsZV9mYXVsdF9pcnEgICAgICAgICAgICAgICAgX19lbmFibGVfZmlxCisjZGVmaW5lIF9fZGlzYWJsZV9mYXVsdF9pcnEgICAgICAgICAgICAgICBfX2Rpc2FibGVfZmlxCisKKyNkZWZpbmUgX19OT1AgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbm9wCisjZGVmaW5lIF9fV0ZJICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3dmaQorI2RlZmluZSBfX1dGRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX193ZmUKKyNkZWZpbmUgX19TRVYgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fc2V2CisjZGVmaW5lIF9fSVNCKCkgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2lzYigwKQorI2RlZmluZSBfX0RTQigpICAgICAgICAgICAgICAgICAgICAgICAgICAgX19kc2IoMCkKKyNkZWZpbmUgX19ETUIoKSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZG1iKDApCisjZGVmaW5lIF9fUkVWICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3JldgorI2RlZmluZSBfX1JCSVQgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19yYml0CisjZGVmaW5lIF9fTERSRVhCKHB0cikgICAgICAgICAgICAgICAgICAgICAoKHVuc2lnbmVkIGNoYXIgKSBfX2xkcmV4KHB0cikpCisjZGVmaW5lIF9fTERSRVhIKHB0cikgICAgICAgICAgICAgICAgICAgICAoKHVuc2lnbmVkIHNob3J0KSBfX2xkcmV4KHB0cikpCisjZGVmaW5lIF9fTERSRVhXKHB0cikgICAgICAgICAgICAgICAgICAgICAoKHVuc2lnbmVkIGludCAgKSBfX2xkcmV4KHB0cikpCisjZGVmaW5lIF9fU1RSRVhCKHZhbHVlLCBwdHIpICAgICAgICAgICAgICBfX3N0cmV4KHZhbHVlLCBwdHIpCisjZGVmaW5lIF9fU1RSRVhIKHZhbHVlLCBwdHIpICAgICAgICAgICAgICBfX3N0cmV4KHZhbHVlLCBwdHIpCisjZGVmaW5lIF9fU1RSRVhXKHZhbHVlLCBwdHIpICAgICAgICAgICAgICBfX3N0cmV4KHZhbHVlLCBwdHIpCisKKworLyogaW50cmluc2ljIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2xkcmV4ZCh2b2xhdGlsZSB2b2lkICpwdHIpICovCisvKiBpbnRyaW5zaWMgaW50IF9fc3RyZXhkKHVuc2lnbmVkIGxvbmcgbG9uZyB2YWwsIHZvbGF0aWxlIHZvaWQgKnB0cikgKi8KKy8qIGludHJpbnNpYyB2b2lkIF9fZW5hYmxlX2lycSgpOyAgICAgKi8KKy8qIGludHJpbnNpYyB2b2lkIF9fZGlzYWJsZV9pcnEoKTsgICAgKi8KKworCisvKioKKyAqIEBicmllZiAgUmV0dXJuIHRoZSBQcm9jZXNzIFN0YWNrIFBvaW50ZXIKKyAqCisgKiBAcmV0dXJuIFByb2Nlc3NTdGFja1BvaW50ZXIKKyAqCisgKiBSZXR1cm4gdGhlIGFjdHVhbCBwcm9jZXNzIHN0YWNrIHBvaW50ZXIKKyAqLworZXh0ZXJuIHVpbnQzMl90IF9fZ2V0X1BTUCh2b2lkKTsKKworLyoqCisgKiBAYnJpZWYgIFNldCB0aGUgUHJvY2VzcyBTdGFjayBQb2ludGVyCisgKgorICogQHBhcmFtICB0b3BPZlByb2NTdGFjayAgUHJvY2VzcyBTdGFjayBQb2ludGVyCisgKgorICogQXNzaWduIHRoZSB2YWx1ZSBQcm9jZXNzU3RhY2tQb2ludGVyIHRvIHRoZSBNU1AgCisgKiAocHJvY2VzcyBzdGFjayBwb2ludGVyKSBDb3J0ZXggcHJvY2Vzc29yIHJlZ2lzdGVyCisgKi8KK2V4dGVybiB2b2lkIF9fc2V0X1BTUCh1aW50MzJfdCB0b3BPZlByb2NTdGFjayk7CisKKy8qKgorICogQGJyaWVmICBSZXR1cm4gdGhlIE1haW4gU3RhY2sgUG9pbnRlcgorICoKKyAqIEByZXR1cm4gTWFpbiBTdGFjayBQb2ludGVyCisgKgorICogUmV0dXJuIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBNU1AgKG1haW4gc3RhY2sgcG9pbnRlcikKKyAqIENvcnRleCBwcm9jZXNzb3IgcmVnaXN0ZXIKKyAqLworZXh0ZXJuIHVpbnQzMl90IF9fZ2V0X01TUCh2b2lkKTsKKworLyoqCisgKiBAYnJpZWYgIFNldCB0aGUgTWFpbiBTdGFjayBQb2ludGVyCisgKgorICogQHBhcmFtICB0b3BPZk1haW5TdGFjayAgTWFpbiBTdGFjayBQb2ludGVyCisgKgorICogQXNzaWduIHRoZSB2YWx1ZSBtYWluU3RhY2tQb2ludGVyIHRvIHRoZSBNU1AgCisgKiAobWFpbiBzdGFjayBwb2ludGVyKSBDb3J0ZXggcHJvY2Vzc29yIHJlZ2lzdGVyCisgKi8KK2V4dGVybiB2b2lkIF9fc2V0X01TUCh1aW50MzJfdCB0b3BPZk1haW5TdGFjayk7CisKKy8qKgorICogQGJyaWVmICBSZXZlcnNlIGJ5dGUgb3JkZXIgaW4gdW5zaWduZWQgc2hvcnQgdmFsdWUKKyAqCisgKiBAcGFyYW0gICB2YWx1ZSAgdmFsdWUgdG8gcmV2ZXJzZQorICogQHJldHVybiAgICAgICAgIHJldmVyc2VkIHZhbHVlCisgKgorICogUmV2ZXJzZSBieXRlIG9yZGVyIGluIHVuc2lnbmVkIHNob3J0IHZhbHVlCisgKi8KK2V4dGVybiB1aW50MzJfdCBfX1JFVjE2KHVpbnQxNl90IHZhbHVlKTsKKworLyoqCisgKiBAYnJpZWYgIFJldmVyc2UgYnl0ZSBvcmRlciBpbiBzaWduZWQgc2hvcnQgdmFsdWUgd2l0aCBzaWduIGV4dGVuc2lvbiB0byBpbnRlZ2VyCisgKgorICogQHBhcmFtICAgdmFsdWUgIHZhbHVlIHRvIHJldmVyc2UKKyAqIEByZXR1cm4gICAgICAgICByZXZlcnNlZCB2YWx1ZQorICoKKyAqIFJldmVyc2UgYnl0ZSBvcmRlciBpbiBzaWduZWQgc2hvcnQgdmFsdWUgd2l0aCBzaWduIGV4dGVuc2lvbiB0byBpbnRlZ2VyCisgKi8KK2V4dGVybiBpbnQzMl90IF9fUkVWU0goaW50MTZfdCB2YWx1ZSk7CisKKworI2lmIChfX0FSTUNDX1ZFUlNJT04gPCA0MDAwMDApCisKKy8qKgorICogQGJyaWVmICBSZW1vdmUgdGhlIGV4Y2x1c2l2ZSBsb2NrIGNyZWF0ZWQgYnkgbGRyZXgKKyAqCisgKiBSZW1vdmVzIHRoZSBleGNsdXNpdmUgbG9jayB3aGljaCBpcyBjcmVhdGVkIGJ5IGxkcmV4LgorICovCitleHRlcm4gdm9pZCBfX0NMUkVYKHZvaWQpOworCisvKioKKyAqIEBicmllZiAgUmV0dXJuIHRoZSBCYXNlIFByaW9yaXR5IHZhbHVlCisgKgorICogQHJldHVybiBCYXNlUHJpb3JpdHkKKyAqCisgKiBSZXR1cm4gdGhlIGNvbnRlbnQgb2YgdGhlIGJhc2UgcHJpb3JpdHkgcmVnaXN0ZXIKKyAqLworZXh0ZXJuIHVpbnQzMl90IF9fZ2V0X0JBU0VQUkkodm9pZCk7CisKKy8qKgorICogQGJyaWVmICBTZXQgdGhlIEJhc2UgUHJpb3JpdHkgdmFsdWUKKyAqCisgKiBAcGFyYW0gIGJhc2VQcmkgIEJhc2VQcmlvcml0eQorICoKKyAqIFNldCB0aGUgYmFzZSBwcmlvcml0eSByZWdpc3RlcgorICovCitleHRlcm4gdm9pZCBfX3NldF9CQVNFUFJJKHVpbnQzMl90IGJhc2VQcmkpOworCisvKioKKyAqIEBicmllZiAgUmV0dXJuIHRoZSBQcmlvcml0eSBNYXNrIHZhbHVlCisgKgorICogQHJldHVybiBQcmlNYXNrCisgKgorICogUmV0dXJuIHN0YXRlIG9mIHRoZSBwcmlvcml0eSBtYXNrIGJpdCBmcm9tIHRoZSBwcmlvcml0eSBtYXNrIHJlZ2lzdGVyCisgKi8KK2V4dGVybiB1aW50MzJfdCBfX2dldF9QUklNQVNLKHZvaWQpOworCisvKioKKyAqIEBicmllZiAgU2V0IHRoZSBQcmlvcml0eSBNYXNrIHZhbHVlCisgKgorICogQHBhcmFtICAgcHJpTWFzayAgUHJpTWFzaworICoKKyAqIFNldCB0aGUgcHJpb3JpdHkgbWFzayBiaXQgaW4gdGhlIHByaW9yaXR5IG1hc2sgcmVnaXN0ZXIKKyAqLworZXh0ZXJuIHZvaWQgX19zZXRfUFJJTUFTSyh1aW50MzJfdCBwcmlNYXNrKTsKKworLyoqCisgKiBAYnJpZWYgIFJldHVybiB0aGUgRmF1bHQgTWFzayB2YWx1ZQorICoKKyAqIEByZXR1cm4gRmF1bHRNYXNrCisgKgorICogUmV0dXJuIHRoZSBjb250ZW50IG9mIHRoZSBmYXVsdCBtYXNrIHJlZ2lzdGVyCisgKi8KK2V4dGVybiB1aW50MzJfdCBfX2dldF9GQVVMVE1BU0sodm9pZCk7CisKKy8qKgorICogQGJyaWVmICBTZXQgdGhlIEZhdWx0IE1hc2sgdmFsdWUKKyAqCisgKiBAcGFyYW0gIGZhdWx0TWFzayBmYXVsdE1hc2sgdmFsdWUKKyAqCisgKiBTZXQgdGhlIGZhdWx0IG1hc2sgcmVnaXN0ZXIKKyAqLworZXh0ZXJuIHZvaWQgX19zZXRfRkFVTFRNQVNLKHVpbnQzMl90IGZhdWx0TWFzayk7CisKKy8qKgorICogQGJyaWVmICBSZXR1cm4gdGhlIENvbnRyb2wgUmVnaXN0ZXIgdmFsdWUKKyAqIAorICogQHJldHVybiBDb250cm9sIHZhbHVlCisgKgorICogUmV0dXJuIHRoZSBjb250ZW50IG9mIHRoZSBjb250cm9sIHJlZ2lzdGVyCisgKi8KK2V4dGVybiB1aW50MzJfdCBfX2dldF9DT05UUk9MKHZvaWQpOworCisvKioKKyAqIEBicmllZiAgU2V0IHRoZSBDb250cm9sIFJlZ2lzdGVyIHZhbHVlCisgKgorICogQHBhcmFtICBjb250cm9sICBDb250cm9sIHZhbHVlCisgKgorICogU2V0IHRoZSBjb250cm9sIHJlZ2lzdGVyCisgKi8KK2V4dGVybiB2b2lkIF9fc2V0X0NPTlRST0wodWludDMyX3QgY29udHJvbCk7CisKKyNlbHNlICAvKiAoX19BUk1DQ19WRVJTSU9OID49IDQwMDAwMCkgICovCisKKy8qKgorICogQGJyaWVmICBSZW1vdmUgdGhlIGV4Y2x1c2l2ZSBsb2NrIGNyZWF0ZWQgYnkgbGRyZXgKKyAqCisgKiBSZW1vdmVzIHRoZSBleGNsdXNpdmUgbG9jayB3aGljaCBpcyBjcmVhdGVkIGJ5IGxkcmV4LgorICovCisjZGVmaW5lIF9fQ0xSRVggICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NscmV4CisKKy8qKgorICogQGJyaWVmICBSZXR1cm4gdGhlIEJhc2UgUHJpb3JpdHkgdmFsdWUKKyAqCisgKiBAcmV0dXJuIEJhc2VQcmlvcml0eQorICoKKyAqIFJldHVybiB0aGUgY29udGVudCBvZiB0aGUgYmFzZSBwcmlvcml0eSByZWdpc3RlcgorICovCitzdGF0aWMgX19JTkxJTkUgdWludDMyX3QgIF9fZ2V0X0JBU0VQUkkodm9pZCkKK3sKKyAgcmVnaXN0ZXIgdWludDMyX3QgX19yZWdCYXNlUHJpICAgICAgICAgX19BU00oImJhc2VwcmkiKTsKKyAgcmV0dXJuKF9fcmVnQmFzZVByaSk7Cit9CisKKy8qKgorICogQGJyaWVmICBTZXQgdGhlIEJhc2UgUHJpb3JpdHkgdmFsdWUKKyAqCisgKiBAcGFyYW0gIGJhc2VQcmkgIEJhc2VQcmlvcml0eQorICoKKyAqIFNldCB0aGUgYmFzZSBwcmlvcml0eSByZWdpc3RlcgorICovCitzdGF0aWMgX19JTkxJTkUgdm9pZCBfX3NldF9CQVNFUFJJKHVpbnQzMl90IGJhc2VQcmkpCit7CisgIHJlZ2lzdGVyIHVpbnQzMl90IF9fcmVnQmFzZVByaSAgICAgICAgIF9fQVNNKCJiYXNlcHJpIik7CisgIF9fcmVnQmFzZVByaSA9IChiYXNlUHJpICYgMHhmZik7Cit9CisKKy8qKgorICogQGJyaWVmICBSZXR1cm4gdGhlIFByaW9yaXR5IE1hc2sgdmFsdWUKKyAqCisgKiBAcmV0dXJuIFByaU1hc2sKKyAqCisgKiBSZXR1cm4gc3RhdGUgb2YgdGhlIHByaW9yaXR5IG1hc2sgYml0IGZyb20gdGhlIHByaW9yaXR5IG1hc2sgcmVnaXN0ZXIKKyAqLworc3RhdGljIF9fSU5MSU5FIHVpbnQzMl90IF9fZ2V0X1BSSU1BU0sodm9pZCkKK3sKKyAgcmVnaXN0ZXIgdWludDMyX3QgX19yZWdQcmlNYXNrICAgICAgICAgX19BU00oInByaW1hc2siKTsKKyAgcmV0dXJuKF9fcmVnUHJpTWFzayk7Cit9CisKKy8qKgorICogQGJyaWVmICBTZXQgdGhlIFByaW9yaXR5IE1hc2sgdmFsdWUKKyAqCisgKiBAcGFyYW0gIHByaU1hc2sgIFByaU1hc2sKKyAqCisgKiBTZXQgdGhlIHByaW9yaXR5IG1hc2sgYml0IGluIHRoZSBwcmlvcml0eSBtYXNrIHJlZ2lzdGVyCisgKi8KK3N0YXRpYyBfX0lOTElORSB2b2lkIF9fc2V0X1BSSU1BU0sodWludDMyX3QgcHJpTWFzaykKK3sKKyAgcmVnaXN0ZXIgdWludDMyX3QgX19yZWdQcmlNYXNrICAgICAgICAgX19BU00oInByaW1hc2siKTsKKyAgX19yZWdQcmlNYXNrID0gKHByaU1hc2spOworfQorCisvKioKKyAqIEBicmllZiAgUmV0dXJuIHRoZSBGYXVsdCBNYXNrIHZhbHVlCisgKgorICogQHJldHVybiBGYXVsdE1hc2sKKyAqCisgKiBSZXR1cm4gdGhlIGNvbnRlbnQgb2YgdGhlIGZhdWx0IG1hc2sgcmVnaXN0ZXIKKyAqLworc3RhdGljIF9fSU5MSU5FIHVpbnQzMl90IF9fZ2V0X0ZBVUxUTUFTSyh2b2lkKQoreworICByZWdpc3RlciB1aW50MzJfdCBfX3JlZ0ZhdWx0TWFzayAgICAgICBfX0FTTSgiZmF1bHRtYXNrIik7CisgIHJldHVybihfX3JlZ0ZhdWx0TWFzayk7Cit9CisKKy8qKgorICogQGJyaWVmICBTZXQgdGhlIEZhdWx0IE1hc2sgdmFsdWUKKyAqCisgKiBAcGFyYW0gIGZhdWx0TWFzayAgZmF1bHRNYXNrIHZhbHVlCisgKgorICogU2V0IHRoZSBmYXVsdCBtYXNrIHJlZ2lzdGVyCisgKi8KK3N0YXRpYyBfX0lOTElORSB2b2lkIF9fc2V0X0ZBVUxUTUFTSyh1aW50MzJfdCBmYXVsdE1hc2spCit7CisgIHJlZ2lzdGVyIHVpbnQzMl90IF9fcmVnRmF1bHRNYXNrICAgICAgIF9fQVNNKCJmYXVsdG1hc2siKTsKKyAgX19yZWdGYXVsdE1hc2sgPSAoZmF1bHRNYXNrICYgMSk7Cit9CisKKy8qKgorICogQGJyaWVmICBSZXR1cm4gdGhlIENvbnRyb2wgUmVnaXN0ZXIgdmFsdWUKKyAqIAorICogQHJldHVybiBDb250cm9sIHZhbHVlCisgKgorICogUmV0dXJuIHRoZSBjb250ZW50IG9mIHRoZSBjb250cm9sIHJlZ2lzdGVyCisgKi8KK3N0YXRpYyBfX0lOTElORSB1aW50MzJfdCBfX2dldF9DT05UUk9MKHZvaWQpCit7CisgIHJlZ2lzdGVyIHVpbnQzMl90IF9fcmVnQ29udHJvbCAgICAgICAgIF9fQVNNKCJjb250cm9sIik7CisgIHJldHVybihfX3JlZ0NvbnRyb2wpOworfQorCisvKioKKyAqIEBicmllZiAgU2V0IHRoZSBDb250cm9sIFJlZ2lzdGVyIHZhbHVlCisgKgorICogQHBhcmFtICBjb250cm9sICBDb250cm9sIHZhbHVlCisgKgorICogU2V0IHRoZSBjb250cm9sIHJlZ2lzdGVyCisgKi8KK3N0YXRpYyBfX0lOTElORSB2b2lkIF9fc2V0X0NPTlRST0wodWludDMyX3QgY29udHJvbCkKK3sKKyAgcmVnaXN0ZXIgdWludDMyX3QgX19yZWdDb250cm9sICAgICAgICAgX19BU00oImNvbnRyb2wiKTsKKyAgX19yZWdDb250cm9sID0gY29udHJvbDsKK30KKworI2VuZGlmIC8qIF9fQVJNQ0NfVkVSU0lPTiAgKi8gCisKKworCisjZWxpZiAoZGVmaW5lZCAoX19JQ0NBUk1fXykpIC8qLS0tLS0tLS0tLS0tLS0tLS0tIElDQyBDb21waWxlciAtLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qIElBUiBpY2Nhcm0gc3BlY2lmaWMgZnVuY3Rpb25zICovCisKKyNkZWZpbmUgX19lbmFibGVfaXJxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19lbmFibGVfaW50ZXJydXB0ICAgICAgICAvKiE8IGdsb2JhbCBJbnRlcnJ1cHQgZW5hYmxlICovCisjZGVmaW5lIF9fZGlzYWJsZV9pcnEgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZGlzYWJsZV9pbnRlcnJ1cHQgICAgICAgLyohPCBnbG9iYWwgSW50ZXJydXB0IGRpc2FibGUgKi8KKworc3RhdGljIF9fSU5MSU5FIHZvaWQgX19lbmFibGVfZmF1bHRfaXJxKCkgICAgICAgICB7IF9fQVNNICgiY3BzaWUgZiIpOyB9CitzdGF0aWMgX19JTkxJTkUgdm9pZCBfX2Rpc2FibGVfZmF1bHRfaXJxKCkgICAgICAgIHsgX19BU00gKCJjcHNpZCBmIik7IH0KKworI2RlZmluZSBfX05PUCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX25vX29wZXJhdGlvbiAgICAgICAgICAgIC8qITwgbm8gb3BlcmF0aW9uIGludHJpbnNpYyBpbiBJQVIgQ29tcGlsZXIgKi8gCitzdGF0aWMgX19JTkxJTkUgIHZvaWQgX19XRkkoKSAgICAgICAgICAgICAgICAgICAgIHsgX19BU00gKCJ3ZmkiKTsgfQorc3RhdGljIF9fSU5MSU5FICB2b2lkIF9fV0ZFKCkgICAgICAgICAgICAgICAgICAgICB7IF9fQVNNICgid2ZlIik7IH0KK3N0YXRpYyBfX0lOTElORSAgdm9pZCBfX1NFVigpICAgICAgICAgICAgICAgICAgICAgeyBfX0FTTSAoInNldiIpOyB9CitzdGF0aWMgX19JTkxJTkUgIHZvaWQgX19DTFJFWCgpICAgICAgICAgICAgICAgICAgIHsgX19BU00gKCJjbHJleCIpOyB9CisKKy8qIGludHJpbnNpYyB2b2lkIF9fSVNCKHZvaWQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiBpbnRyaW5zaWMgdm9pZCBfX0RTQih2b2lkKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogaW50cmluc2ljIHZvaWQgX19ETUIodm9pZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIGludHJpbnNpYyB2b2lkIF9fc2V0X1BSSU1BU0soKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiBpbnRyaW5zaWMgdm9pZCBfX2dldF9QUklNQVNLKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogaW50cmluc2ljIHZvaWQgX19zZXRfRkFVTFRNQVNLKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIGludHJpbnNpYyB2b2lkIF9fZ2V0X0ZBVUxUTUFTSygpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiBpbnRyaW5zaWMgdWludDMyX3QgX19SRVYodWludDMyX3QgdmFsdWUpOyAgICAgICAgICAgICAgICAgICAgICAqLworLyogaW50cmluc2ljIHVpbnQzMl90IF9fUkVWU0godWludDMyX3QgdmFsdWUpOyAgICAgICAgICAgICAgICAgICAgKi8KKy8qIGludHJpbnNpYyB1bnNpZ25lZCBsb25nIF9fU1RSRVgodW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZyk7ICovCisvKiBpbnRyaW5zaWMgdW5zaWduZWQgbG9uZyBfX0xEUkVYKHVuc2lnbmVkIGxvbmcgKik7ICAgICAgICAgICAgICAqLworCisKKy8qKgorICogQGJyaWVmICBSZXR1cm4gdGhlIFByb2Nlc3MgU3RhY2sgUG9pbnRlcgorICoKKyAqIEByZXR1cm4gUHJvY2Vzc1N0YWNrUG9pbnRlcgorICoKKyAqIFJldHVybiB0aGUgYWN0dWFsIHByb2Nlc3Mgc3RhY2sgcG9pbnRlcgorICovCitleHRlcm4gdWludDMyX3QgX19nZXRfUFNQKHZvaWQpOworCisvKioKKyAqIEBicmllZiAgU2V0IHRoZSBQcm9jZXNzIFN0YWNrIFBvaW50ZXIKKyAqCisgKiBAcGFyYW0gIHRvcE9mUHJvY1N0YWNrICBQcm9jZXNzIFN0YWNrIFBvaW50ZXIKKyAqCisgKiBBc3NpZ24gdGhlIHZhbHVlIFByb2Nlc3NTdGFja1BvaW50ZXIgdG8gdGhlIE1TUCAKKyAqIChwcm9jZXNzIHN0YWNrIHBvaW50ZXIpIENvcnRleCBwcm9jZXNzb3IgcmVnaXN0ZXIKKyAqLworZXh0ZXJuIHZvaWQgX19zZXRfUFNQKHVpbnQzMl90IHRvcE9mUHJvY1N0YWNrKTsKKworLyoqCisgKiBAYnJpZWYgIFJldHVybiB0aGUgTWFpbiBTdGFjayBQb2ludGVyCisgKgorICogQHJldHVybiBNYWluIFN0YWNrIFBvaW50ZXIKKyAqCisgKiBSZXR1cm4gdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIE1TUCAobWFpbiBzdGFjayBwb2ludGVyKQorICogQ29ydGV4IHByb2Nlc3NvciByZWdpc3RlcgorICovCitleHRlcm4gdWludDMyX3QgX19nZXRfTVNQKHZvaWQpOworCisvKioKKyAqIEBicmllZiAgU2V0IHRoZSBNYWluIFN0YWNrIFBvaW50ZXIKKyAqCisgKiBAcGFyYW0gIHRvcE9mTWFpblN0YWNrICBNYWluIFN0YWNrIFBvaW50ZXIKKyAqCisgKiBBc3NpZ24gdGhlIHZhbHVlIG1haW5TdGFja1BvaW50ZXIgdG8gdGhlIE1TUCAKKyAqIChtYWluIHN0YWNrIHBvaW50ZXIpIENvcnRleCBwcm9jZXNzb3IgcmVnaXN0ZXIKKyAqLworZXh0ZXJuIHZvaWQgX19zZXRfTVNQKHVpbnQzMl90IHRvcE9mTWFpblN0YWNrKTsKKworLyoqCisgKiBAYnJpZWYgIFJldmVyc2UgYnl0ZSBvcmRlciBpbiB1bnNpZ25lZCBzaG9ydCB2YWx1ZQorICoKKyAqIEBwYXJhbSAgdmFsdWUgIHZhbHVlIHRvIHJldmVyc2UKKyAqIEByZXR1cm4gICAgICAgIHJldmVyc2VkIHZhbHVlCisgKgorICogUmV2ZXJzZSBieXRlIG9yZGVyIGluIHVuc2lnbmVkIHNob3J0IHZhbHVlCisgKi8KK2V4dGVybiB1aW50MzJfdCBfX1JFVjE2KHVpbnQxNl90IHZhbHVlKTsKKworLyoqCisgKiBAYnJpZWYgIFJldmVyc2UgYml0IG9yZGVyIG9mIHZhbHVlCisgKgorICogQHBhcmFtICB2YWx1ZSAgdmFsdWUgdG8gcmV2ZXJzZQorICogQHJldHVybiAgICAgICAgcmV2ZXJzZWQgdmFsdWUKKyAqCisgKiBSZXZlcnNlIGJpdCBvcmRlciBvZiB2YWx1ZQorICovCitleHRlcm4gdWludDMyX3QgX19SQklUKHVpbnQzMl90IHZhbHVlKTsKKworLyoqCisgKiBAYnJpZWYgIExEUiBFeGNsdXNpdmUgKDggYml0KQorICoKKyAqIEBwYXJhbSAgKmFkZHIgIGFkZHJlc3MgcG9pbnRlcgorICogQHJldHVybiAgICAgICAgdmFsdWUgb2YgKCphZGRyZXNzKQorICoKKyAqIEV4Y2x1c2l2ZSBMRFIgY29tbWFuZCBmb3IgOCBiaXQgdmFsdWVzKQorICovCitleHRlcm4gdWludDhfdCBfX0xEUkVYQih1aW50OF90ICphZGRyKTsKKworLyoqCisgKiBAYnJpZWYgIExEUiBFeGNsdXNpdmUgKDE2IGJpdCkKKyAqCisgKiBAcGFyYW0gICphZGRyICBhZGRyZXNzIHBvaW50ZXIKKyAqIEByZXR1cm4gICAgICAgIHZhbHVlIG9mICgqYWRkcmVzcykKKyAqCisgKiBFeGNsdXNpdmUgTERSIGNvbW1hbmQgZm9yIDE2IGJpdCB2YWx1ZXMKKyAqLworZXh0ZXJuIHVpbnQxNl90IF9fTERSRVhIKHVpbnQxNl90ICphZGRyKTsKKworLyoqCisgKiBAYnJpZWYgIExEUiBFeGNsdXNpdmUgKDMyIGJpdCkKKyAqCisgKiBAcGFyYW0gICphZGRyICBhZGRyZXNzIHBvaW50ZXIKKyAqIEByZXR1cm4gICAgICAgIHZhbHVlIG9mICgqYWRkcmVzcykKKyAqCisgKiBFeGNsdXNpdmUgTERSIGNvbW1hbmQgZm9yIDMyIGJpdCB2YWx1ZXMKKyAqLworZXh0ZXJuIHVpbnQzMl90IF9fTERSRVhXKHVpbnQzMl90ICphZGRyKTsKKworLyoqCisgKiBAYnJpZWYgIFNUUiBFeGNsdXNpdmUgKDggYml0KQorICoKKyAqIEBwYXJhbSAgdmFsdWUgIHZhbHVlIHRvIHN0b3JlCisgKiBAcGFyYW0gICphZGRyICBhZGRyZXNzIHBvaW50ZXIKKyAqIEByZXR1cm4gICAgICAgIHN1Y2Nlc3NmdWwgLyBmYWlsZWQKKyAqCisgKiBFeGNsdXNpdmUgU1RSIGNvbW1hbmQgZm9yIDggYml0IHZhbHVlcworICovCitleHRlcm4gdWludDMyX3QgX19TVFJFWEIodWludDhfdCB2YWx1ZSwgdWludDhfdCAqYWRkcik7CisKKy8qKgorICogQGJyaWVmICBTVFIgRXhjbHVzaXZlICgxNiBiaXQpCisgKgorICogQHBhcmFtICB2YWx1ZSAgdmFsdWUgdG8gc3RvcmUKKyAqIEBwYXJhbSAgKmFkZHIgIGFkZHJlc3MgcG9pbnRlcgorICogQHJldHVybiAgICAgICAgc3VjY2Vzc2Z1bCAvIGZhaWxlZAorICoKKyAqIEV4Y2x1c2l2ZSBTVFIgY29tbWFuZCBmb3IgMTYgYml0IHZhbHVlcworICovCitleHRlcm4gdWludDMyX3QgX19TVFJFWEgodWludDE2X3QgdmFsdWUsIHVpbnQxNl90ICphZGRyKTsKKworLyoqCisgKiBAYnJpZWYgIFNUUiBFeGNsdXNpdmUgKDMyIGJpdCkKKyAqCisgKiBAcGFyYW0gIHZhbHVlICB2YWx1ZSB0byBzdG9yZQorICogQHBhcmFtICAqYWRkciAgYWRkcmVzcyBwb2ludGVyCisgKiBAcmV0dXJuICAgICAgICBzdWNjZXNzZnVsIC8gZmFpbGVkCisgKgorICogRXhjbHVzaXZlIFNUUiBjb21tYW5kIGZvciAzMiBiaXQgdmFsdWVzCisgKi8KK2V4dGVybiB1aW50MzJfdCBfX1NUUkVYVyh1aW50MzJfdCB2YWx1ZSwgdWludDMyX3QgKmFkZHIpOworCisKKworI2VsaWYgKGRlZmluZWQgKF9fR05VQ19fKSkgLyotLS0tLS0tLS0tLS0tLS0tLS0gR05VIENvbXBpbGVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKiBHTlUgZ2NjIHNwZWNpZmljIGZ1bmN0aW9ucyAqLworCitzdGF0aWMgX19JTkxJTkUgdm9pZCBfX2VuYWJsZV9pcnEoKSAgICAgICAgICAgICAgIHsgX19BU00gdm9sYXRpbGUgKCJjcHNpZSBpIik7IH0KK3N0YXRpYyBfX0lOTElORSB2b2lkIF9fZGlzYWJsZV9pcnEoKSAgICAgICAgICAgICAgeyBfX0FTTSB2b2xhdGlsZSAoImNwc2lkIGkiKTsgfQorCitzdGF0aWMgX19JTkxJTkUgdm9pZCBfX2VuYWJsZV9mYXVsdF9pcnEoKSAgICAgICAgIHsgX19BU00gdm9sYXRpbGUgKCJjcHNpZSBmIik7IH0KK3N0YXRpYyBfX0lOTElORSB2b2lkIF9fZGlzYWJsZV9mYXVsdF9pcnEoKSAgICAgICAgeyBfX0FTTSB2b2xhdGlsZSAoImNwc2lkIGYiKTsgfQorCitzdGF0aWMgX19JTkxJTkUgdm9pZCBfX05PUCgpICAgICAgICAgICAgICAgICAgICAgIHsgX19BU00gdm9sYXRpbGUgKCJub3AiKTsgfQorc3RhdGljIF9fSU5MSU5FIHZvaWQgX19XRkkoKSAgICAgICAgICAgICAgICAgICAgICB7IF9fQVNNIHZvbGF0aWxlICgid2ZpIik7IH0KK3N0YXRpYyBfX0lOTElORSB2b2lkIF9fV0ZFKCkgICAgICAgICAgICAgICAgICAgICAgeyBfX0FTTSB2b2xhdGlsZSAoIndmZSIpOyB9CitzdGF0aWMgX19JTkxJTkUgdm9pZCBfX1NFVigpICAgICAgICAgICAgICAgICAgICAgIHsgX19BU00gdm9sYXRpbGUgKCJzZXYiKTsgfQorc3RhdGljIF9fSU5MSU5FIHZvaWQgX19JU0IoKSAgICAgICAgICAgICAgICAgICAgICB7IF9fQVNNIHZvbGF0aWxlICgiaXNiIik7IH0KK3N0YXRpYyBfX0lOTElORSB2b2lkIF9fRFNCKCkgICAgICAgICAgICAgICAgICAgICAgeyBfX0FTTSB2b2xhdGlsZSAoImRzYiIpOyB9CitzdGF0aWMgX19JTkxJTkUgdm9pZCBfX0RNQigpICAgICAgICAgICAgICAgICAgICAgIHsgX19BU00gdm9sYXRpbGUgKCJkbWIiKTsgfQorc3RhdGljIF9fSU5MSU5FIHZvaWQgX19DTFJFWCgpICAgICAgICAgICAgICAgICAgICB7IF9fQVNNIHZvbGF0aWxlICgiY2xyZXgiKTsgfQorCisKKy8qKgorICogQGJyaWVmICBSZXR1cm4gdGhlIFByb2Nlc3MgU3RhY2sgUG9pbnRlcgorICoKKyAqIEByZXR1cm4gUHJvY2Vzc1N0YWNrUG9pbnRlcgorICoKKyAqIFJldHVybiB0aGUgYWN0dWFsIHByb2Nlc3Mgc3RhY2sgcG9pbnRlcgorICovCitleHRlcm4gdWludDMyX3QgX19nZXRfUFNQKHZvaWQpOworCisvKioKKyAqIEBicmllZiAgU2V0IHRoZSBQcm9jZXNzIFN0YWNrIFBvaW50ZXIKKyAqCisgKiBAcGFyYW0gIHRvcE9mUHJvY1N0YWNrICBQcm9jZXNzIFN0YWNrIFBvaW50ZXIKKyAqCisgKiBBc3NpZ24gdGhlIHZhbHVlIFByb2Nlc3NTdGFja1BvaW50ZXIgdG8gdGhlIE1TUCAKKyAqIChwcm9jZXNzIHN0YWNrIHBvaW50ZXIpIENvcnRleCBwcm9jZXNzb3IgcmVnaXN0ZXIKKyAqLworZXh0ZXJuIHZvaWQgX19zZXRfUFNQKHVpbnQzMl90IHRvcE9mUHJvY1N0YWNrKTsKKworLyoqCisgKiBAYnJpZWYgIFJldHVybiB0aGUgTWFpbiBTdGFjayBQb2ludGVyCisgKgorICogQHJldHVybiBNYWluIFN0YWNrIFBvaW50ZXIKKyAqCisgKiBSZXR1cm4gdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIE1TUCAobWFpbiBzdGFjayBwb2ludGVyKQorICogQ29ydGV4IHByb2Nlc3NvciByZWdpc3RlcgorICovCitleHRlcm4gdWludDMyX3QgX19nZXRfTVNQKHZvaWQpOworCisvKioKKyAqIEBicmllZiAgU2V0IHRoZSBNYWluIFN0YWNrIFBvaW50ZXIKKyAqCisgKiBAcGFyYW0gIHRvcE9mTWFpblN0YWNrICBNYWluIFN0YWNrIFBvaW50ZXIKKyAqCisgKiBBc3NpZ24gdGhlIHZhbHVlIG1haW5TdGFja1BvaW50ZXIgdG8gdGhlIE1TUCAKKyAqIChtYWluIHN0YWNrIHBvaW50ZXIpIENvcnRleCBwcm9jZXNzb3IgcmVnaXN0ZXIKKyAqLworZXh0ZXJuIHZvaWQgX19zZXRfTVNQKHVpbnQzMl90IHRvcE9mTWFpblN0YWNrKTsKKworLyoqCisgKiBAYnJpZWYgIFJldHVybiB0aGUgQmFzZSBQcmlvcml0eSB2YWx1ZQorICoKKyAqIEByZXR1cm4gQmFzZVByaW9yaXR5CisgKgorICogUmV0dXJuIHRoZSBjb250ZW50IG9mIHRoZSBiYXNlIHByaW9yaXR5IHJlZ2lzdGVyCisgKi8KK2V4dGVybiB1aW50MzJfdCBfX2dldF9CQVNFUFJJKHZvaWQpOworCisvKioKKyAqIEBicmllZiAgU2V0IHRoZSBCYXNlIFByaW9yaXR5IHZhbHVlCisgKgorICogQHBhcmFtICBiYXNlUHJpICBCYXNlUHJpb3JpdHkKKyAqCisgKiBTZXQgdGhlIGJhc2UgcHJpb3JpdHkgcmVnaXN0ZXIKKyAqLworZXh0ZXJuIHZvaWQgX19zZXRfQkFTRVBSSSh1aW50MzJfdCBiYXNlUHJpKTsKKworLyoqCisgKiBAYnJpZWYgIFJldHVybiB0aGUgUHJpb3JpdHkgTWFzayB2YWx1ZQorICoKKyAqIEByZXR1cm4gUHJpTWFzaworICoKKyAqIFJldHVybiBzdGF0ZSBvZiB0aGUgcHJpb3JpdHkgbWFzayBiaXQgZnJvbSB0aGUgcHJpb3JpdHkgbWFzayByZWdpc3RlcgorICovCitleHRlcm4gdWludDMyX3QgIF9fZ2V0X1BSSU1BU0sodm9pZCk7CisKKy8qKgorICogQGJyaWVmICBTZXQgdGhlIFByaW9yaXR5IE1hc2sgdmFsdWUKKyAqCisgKiBAcGFyYW0gIHByaU1hc2sgIFByaU1hc2sKKyAqCisgKiBTZXQgdGhlIHByaW9yaXR5IG1hc2sgYml0IGluIHRoZSBwcmlvcml0eSBtYXNrIHJlZ2lzdGVyCisgKi8KK2V4dGVybiB2b2lkIF9fc2V0X1BSSU1BU0sodWludDMyX3QgcHJpTWFzayk7CisKKy8qKgorICogQGJyaWVmICBSZXR1cm4gdGhlIEZhdWx0IE1hc2sgdmFsdWUKKyAqCisgKiBAcmV0dXJuIEZhdWx0TWFzaworICoKKyAqIFJldHVybiB0aGUgY29udGVudCBvZiB0aGUgZmF1bHQgbWFzayByZWdpc3RlcgorICovCitleHRlcm4gdWludDMyX3QgX19nZXRfRkFVTFRNQVNLKHZvaWQpOworCisvKioKKyAqIEBicmllZiAgU2V0IHRoZSBGYXVsdCBNYXNrIHZhbHVlCisgKgorICogQHBhcmFtICBmYXVsdE1hc2sgIGZhdWx0TWFzayB2YWx1ZQorICoKKyAqIFNldCB0aGUgZmF1bHQgbWFzayByZWdpc3RlcgorICovCitleHRlcm4gdm9pZCBfX3NldF9GQVVMVE1BU0sodWludDMyX3QgZmF1bHRNYXNrKTsKKworLyoqCisgKiBAYnJpZWYgIFJldHVybiB0aGUgQ29udHJvbCBSZWdpc3RlciB2YWx1ZQorKiAKKyogIEByZXR1cm4gQ29udHJvbCB2YWx1ZQorICoKKyAqIFJldHVybiB0aGUgY29udGVudCBvZiB0aGUgY29udHJvbCByZWdpc3RlcgorICovCitleHRlcm4gdWludDMyX3QgX19nZXRfQ09OVFJPTCh2b2lkKTsKKworLyoqCisgKiBAYnJpZWYgIFNldCB0aGUgQ29udHJvbCBSZWdpc3RlciB2YWx1ZQorICoKKyAqIEBwYXJhbSAgY29udHJvbCAgQ29udHJvbCB2YWx1ZQorICoKKyAqIFNldCB0aGUgY29udHJvbCByZWdpc3RlcgorICovCitleHRlcm4gdm9pZCBfX3NldF9DT05UUk9MKHVpbnQzMl90IGNvbnRyb2wpOworCisvKioKKyAqIEBicmllZiAgUmV2ZXJzZSBieXRlIG9yZGVyIGluIGludGVnZXIgdmFsdWUKKyAqCisgKiBAcGFyYW0gIHZhbHVlICB2YWx1ZSB0byByZXZlcnNlCisgKiBAcmV0dXJuICAgICAgICByZXZlcnNlZCB2YWx1ZQorICoKKyAqIFJldmVyc2UgYnl0ZSBvcmRlciBpbiBpbnRlZ2VyIHZhbHVlCisgKi8KK2V4dGVybiB1aW50MzJfdCBfX1JFVih1aW50MzJfdCB2YWx1ZSk7CisKKy8qKgorICogQGJyaWVmICBSZXZlcnNlIGJ5dGUgb3JkZXIgaW4gdW5zaWduZWQgc2hvcnQgdmFsdWUKKyAqCisgKiBAcGFyYW0gIHZhbHVlICB2YWx1ZSB0byByZXZlcnNlCisgKiBAcmV0dXJuICAgICAgICByZXZlcnNlZCB2YWx1ZQorICoKKyAqIFJldmVyc2UgYnl0ZSBvcmRlciBpbiB1bnNpZ25lZCBzaG9ydCB2YWx1ZQorICovCitleHRlcm4gdWludDMyX3QgX19SRVYxNih1aW50MTZfdCB2YWx1ZSk7CisKKy8qKgorICogQGJyaWVmICBSZXZlcnNlIGJ5dGUgb3JkZXIgaW4gc2lnbmVkIHNob3J0IHZhbHVlIHdpdGggc2lnbiBleHRlbnNpb24gdG8gaW50ZWdlcgorICoKKyAqIEBwYXJhbSAgdmFsdWUgIHZhbHVlIHRvIHJldmVyc2UKKyAqIEByZXR1cm4gICAgICAgIHJldmVyc2VkIHZhbHVlCisgKgorICogUmV2ZXJzZSBieXRlIG9yZGVyIGluIHNpZ25lZCBzaG9ydCB2YWx1ZSB3aXRoIHNpZ24gZXh0ZW5zaW9uIHRvIGludGVnZXIKKyAqLworZXh0ZXJuIGludDMyX3QgX19SRVZTSChpbnQxNl90IHZhbHVlKTsKKworLyoqCisgKiBAYnJpZWYgIFJldmVyc2UgYml0IG9yZGVyIG9mIHZhbHVlCisgKgorICogQHBhcmFtICB2YWx1ZSAgdmFsdWUgdG8gcmV2ZXJzZQorICogQHJldHVybiAgICAgICAgcmV2ZXJzZWQgdmFsdWUKKyAqCisgKiBSZXZlcnNlIGJpdCBvcmRlciBvZiB2YWx1ZQorICovCitleHRlcm4gdWludDMyX3QgX19SQklUKHVpbnQzMl90IHZhbHVlKTsKKworLyoqCisgKiBAYnJpZWYgIExEUiBFeGNsdXNpdmUgKDggYml0KQorICoKKyAqIEBwYXJhbSAgKmFkZHIgIGFkZHJlc3MgcG9pbnRlcgorICogQHJldHVybiAgICAgICAgdmFsdWUgb2YgKCphZGRyZXNzKQorICoKKyAqIEV4Y2x1c2l2ZSBMRFIgY29tbWFuZCBmb3IgOCBiaXQgdmFsdWUKKyAqLworZXh0ZXJuIHVpbnQ4X3QgX19MRFJFWEIodWludDhfdCAqYWRkcik7CisKKy8qKgorICogQGJyaWVmICBMRFIgRXhjbHVzaXZlICgxNiBiaXQpCisgKgorICogQHBhcmFtICAqYWRkciAgYWRkcmVzcyBwb2ludGVyCisgKiBAcmV0dXJuICAgICAgICB2YWx1ZSBvZiAoKmFkZHJlc3MpCisgKgorICogRXhjbHVzaXZlIExEUiBjb21tYW5kIGZvciAxNiBiaXQgdmFsdWVzCisgKi8KK2V4dGVybiB1aW50MTZfdCBfX0xEUkVYSCh1aW50MTZfdCAqYWRkcik7CisKKy8qKgorICogQGJyaWVmICBMRFIgRXhjbHVzaXZlICgzMiBiaXQpCisgKgorICogQHBhcmFtICAqYWRkciAgYWRkcmVzcyBwb2ludGVyCisgKiBAcmV0dXJuICAgICAgICB2YWx1ZSBvZiAoKmFkZHJlc3MpCisgKgorICogRXhjbHVzaXZlIExEUiBjb21tYW5kIGZvciAzMiBiaXQgdmFsdWVzCisgKi8KK2V4dGVybiB1aW50MzJfdCBfX0xEUkVYVyh1aW50MzJfdCAqYWRkcik7CisKKy8qKgorICogQGJyaWVmICBTVFIgRXhjbHVzaXZlICg4IGJpdCkKKyAqCisgKiBAcGFyYW0gIHZhbHVlICB2YWx1ZSB0byBzdG9yZQorICogQHBhcmFtICAqYWRkciAgYWRkcmVzcyBwb2ludGVyCisgKiBAcmV0dXJuICAgICAgICBzdWNjZXNzZnVsIC8gZmFpbGVkCisgKgorICogRXhjbHVzaXZlIFNUUiBjb21tYW5kIGZvciA4IGJpdCB2YWx1ZXMKKyAqLworZXh0ZXJuIHVpbnQzMl90IF9fU1RSRVhCKHVpbnQ4X3QgdmFsdWUsIHVpbnQ4X3QgKmFkZHIpOworCisvKioKKyAqIEBicmllZiAgU1RSIEV4Y2x1c2l2ZSAoMTYgYml0KQorICoKKyAqIEBwYXJhbSAgdmFsdWUgIHZhbHVlIHRvIHN0b3JlCisgKiBAcGFyYW0gICphZGRyICBhZGRyZXNzIHBvaW50ZXIKKyAqIEByZXR1cm4gICAgICAgIHN1Y2Nlc3NmdWwgLyBmYWlsZWQKKyAqCisgKiBFeGNsdXNpdmUgU1RSIGNvbW1hbmQgZm9yIDE2IGJpdCB2YWx1ZXMKKyAqLworZXh0ZXJuIHVpbnQzMl90IF9fU1RSRVhIKHVpbnQxNl90IHZhbHVlLCB1aW50MTZfdCAqYWRkcik7CisKKy8qKgorICogQGJyaWVmICBTVFIgRXhjbHVzaXZlICgzMiBiaXQpCisgKgorICogQHBhcmFtICB2YWx1ZSAgdmFsdWUgdG8gc3RvcmUKKyAqIEBwYXJhbSAgKmFkZHIgIGFkZHJlc3MgcG9pbnRlcgorICogQHJldHVybiAgICAgICAgc3VjY2Vzc2Z1bCAvIGZhaWxlZAorICoKKyAqIEV4Y2x1c2l2ZSBTVFIgY29tbWFuZCBmb3IgMzIgYml0IHZhbHVlcworICovCitleHRlcm4gdWludDMyX3QgX19TVFJFWFcodWludDMyX3QgdmFsdWUsIHVpbnQzMl90ICphZGRyKTsKKworCisjZWxpZiAoZGVmaW5lZCAoX19UQVNLSU5HX18pKSAvKi0tLS0tLS0tLS0tLS0tLS0tLSBUQVNLSU5HIENvbXBpbGVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKiBUQVNLSU5HIGNhcm0gc3BlY2lmaWMgZnVuY3Rpb25zICovCisKKy8qCisgKiBUaGUgQ01TSVMgZnVuY3Rpb25zIGhhdmUgYmVlbiBpbXBsZW1lbnRlZCBhcyBpbnRyaW5zaWNzIGluIHRoZSBjb21waWxlci4KKyAqIFBsZWFzZSB1c2UgImNhcm0gLT9pIiB0byBnZXQgYW4gdXAgdG8gZGF0ZSBsaXN0IG9mIGFsbCBpbnN0cmluc2ljcywKKyAqIEluY2x1ZGluZyB0aGUgQ01TSVMgb25lcy4KKyAqLworCisjZW5kaWYKKworCisvKiogQGFkZHRvZ3JvdXAgQ01TSVNfQ00zX0NvcmVfRnVuY3Rpb25JbnRlcmZhY2UgQ01TSVMgQ00zIENvcmUgRnVuY3Rpb24gSW50ZXJmYWNlCisgIENvcmUgIEZ1bmN0aW9uIEludGVyZmFjZSBjb250YWluaW5nOgorICAtIENvcmUgTlZJQyBGdW5jdGlvbnMKKyAgLSBDb3JlIFN5c1RpY2sgRnVuY3Rpb25zCisgIC0gQ29yZSBSZXNldCBGdW5jdGlvbnMKKyovCisvKkB7Ki8KKworLyogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgICBOVklDIGZ1bmN0aW9ucyAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjICovCisKKy8qKgorICogQGJyaWVmICBTZXQgdGhlIFByaW9yaXR5IEdyb3VwaW5nIGluIE5WSUMgSW50ZXJydXB0IENvbnRyb2xsZXIKKyAqCisgKiBAcGFyYW0gIFByaW9yaXR5R3JvdXAgaXMgcHJpb3JpdHkgZ3JvdXBpbmcgZmllbGQKKyAqCisgKiBTZXQgdGhlIHByaW9yaXR5IGdyb3VwaW5nIGZpZWxkIHVzaW5nIHRoZSByZXF1aXJlZCB1bmxvY2sgc2VxdWVuY2UuCisgKiBUaGUgcGFyYW1ldGVyIHByaW9yaXR5X2dyb3VwaW5nIGlzIGFzc2lnbmVkIHRvIHRoZSBmaWVsZCAKKyAqIFNDQi0+QUlSQ1IgWzEwOjhdIFBSSUdST1VQIGZpZWxkLiBPbmx5IHZhbHVlcyBmcm9tIDAuLjcgYXJlIHVzZWQuCisgKiBJbiBjYXNlIG9mIGEgY29uZmxpY3QgYmV0d2VlbiBwcmlvcml0eSBncm91cGluZyBhbmQgYXZhaWxhYmxlCisgKiBwcmlvcml0eSBiaXRzIChfX05WSUNfUFJJT19CSVRTKSB0aGUgc21hbGxlc3QgcG9zc2libGUgcHJpb3JpdHkgZ3JvdXAgaXMgc2V0LgorICovCitzdGF0aWMgX19JTkxJTkUgdm9pZCBOVklDX1NldFByaW9yaXR5R3JvdXBpbmcodWludDMyX3QgUHJpb3JpdHlHcm91cCkKK3sKKyAgdWludDMyX3QgcmVnX3ZhbHVlOworICB1aW50MzJfdCBQcmlvcml0eUdyb3VwVG1wID0gKFByaW9yaXR5R3JvdXAgJiAweDA3KTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogb25seSB2YWx1ZXMgMC4uNyBhcmUgdXNlZCAgICAgICAgICAqLworICAKKyAgcmVnX3ZhbHVlICA9ICBTQ0ItPkFJUkNSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHJlYWQgb2xkIHJlZ2lzdGVyIGNvbmZpZ3VyYXRpb24gICAgKi8KKyAgcmVnX3ZhbHVlICY9IH4oU0NCX0FJUkNSX1ZFQ1RLRVlfTXNrIHwgU0NCX0FJUkNSX1BSSUdST1VQX01zayk7ICAgICAgICAgICAgIC8qIGNsZWFyIGJpdHMgdG8gY2hhbmdlICAgICAgICAgICAgICAgKi8KKyAgcmVnX3ZhbHVlICA9ICAocmVnX3ZhbHVlICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgKDB4NUZBIDw8IFNDQl9BSVJDUl9WRUNUS0VZX1BvcykgfCAKKyAgICAgICAgICAgICAgICAoUHJpb3JpdHlHcm91cFRtcCA8PCA4KSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEluc2VydCB3cml0ZSBrZXkgYW5kIHByaW9ydHkgZ3JvdXAgKi8KKyAgU0NCLT5BSVJDUiA9ICByZWdfdmFsdWU7Cit9CisKKy8qKgorICogQGJyaWVmICBHZXQgdGhlIFByaW9yaXR5IEdyb3VwaW5nIGZyb20gTlZJQyBJbnRlcnJ1cHQgQ29udHJvbGxlcgorICoKKyAqIEByZXR1cm4gcHJpb3JpdHkgZ3JvdXBpbmcgZmllbGQgCisgKgorICogR2V0IHRoZSBwcmlvcml0eSBncm91cGluZyBmcm9tIE5WSUMgSW50ZXJydXB0IENvbnRyb2xsZXIuCisgKiBwcmlvcml0eSBncm91cGluZyBpcyBTQ0ItPkFJUkNSIFsxMDo4XSBQUklHUk9VUCBmaWVsZC4KKyAqLworc3RhdGljIF9fSU5MSU5FIHVpbnQzMl90IE5WSUNfR2V0UHJpb3JpdHlHcm91cGluZyh2b2lkKQoreworICByZXR1cm4gKChTQ0ItPkFJUkNSICYgU0NCX0FJUkNSX1BSSUdST1VQX01zaykgPj4gU0NCX0FJUkNSX1BSSUdST1VQX1Bvcyk7ICAgLyogcmVhZCBwcmlvcml0eSBncm91cGluZyBmaWVsZCAqLworfQorCisvKioKKyAqIEBicmllZiAgRW5hYmxlIEludGVycnVwdCBpbiBOVklDIEludGVycnVwdCBDb250cm9sbGVyCisgKgorICogQHBhcmFtICBJUlFuICAgVGhlIHBvc2l0aXZlIG51bWJlciBvZiB0aGUgZXh0ZXJuYWwgaW50ZXJydXB0IHRvIGVuYWJsZQorICoKKyAqIEVuYWJsZSBhIGRldmljZSBzcGVjaWZpYyBpbnRlcnVwdCBpbiB0aGUgTlZJQyBpbnRlcnJ1cHQgY29udHJvbGxlci4KKyAqIFRoZSBpbnRlcnJ1cHQgbnVtYmVyIGNhbm5vdCBiZSBhIG5lZ2F0aXZlIHZhbHVlLgorICovCitzdGF0aWMgX19JTkxJTkUgdm9pZCBOVklDX0VuYWJsZUlSUShJUlFuX1R5cGUgSVJRbikKK3sKKyAgTlZJQy0+SVNFUlsoKHVpbnQzMl90KShJUlFuKSA+PiA1KV0gPSAoMSA8PCAoKHVpbnQzMl90KShJUlFuKSAmIDB4MUYpKTsgLyogZW5hYmxlIGludGVycnVwdCAqLworfQorCisvKioKKyAqIEBicmllZiAgRGlzYWJsZSB0aGUgaW50ZXJydXB0IGxpbmUgZm9yIGV4dGVybmFsIGludGVycnVwdCBzcGVjaWZpZWQKKyAqIAorICogQHBhcmFtICBJUlFuICAgVGhlIHBvc2l0aXZlIG51bWJlciBvZiB0aGUgZXh0ZXJuYWwgaW50ZXJydXB0IHRvIGRpc2FibGUKKyAqIAorICogRGlzYWJsZSBhIGRldmljZSBzcGVjaWZpYyBpbnRlcnVwdCBpbiB0aGUgTlZJQyBpbnRlcnJ1cHQgY29udHJvbGxlci4KKyAqIFRoZSBpbnRlcnJ1cHQgbnVtYmVyIGNhbm5vdCBiZSBhIG5lZ2F0aXZlIHZhbHVlLgorICovCitzdGF0aWMgX19JTkxJTkUgdm9pZCBOVklDX0Rpc2FibGVJUlEoSVJRbl9UeXBlIElSUW4pCit7CisgIE5WSUMtPklDRVJbKCh1aW50MzJfdCkoSVJRbikgPj4gNSldID0gKDEgPDwgKCh1aW50MzJfdCkoSVJRbikgJiAweDFGKSk7IC8qIGRpc2FibGUgaW50ZXJydXB0ICovCit9CisKKy8qKgorICogQGJyaWVmICBSZWFkIHRoZSBpbnRlcnJ1cHQgcGVuZGluZyBiaXQgZm9yIGEgZGV2aWNlIHNwZWNpZmljIGludGVycnVwdCBzb3VyY2UKKyAqIAorICogQHBhcmFtICBJUlFuICAgIFRoZSBudW1iZXIgb2YgdGhlIGRldmljZSBzcGVjaWZjIGludGVycnVwdAorICogQHJldHVybiAgICAgICAgIDEgPSBpbnRlcnJ1cHQgcGVuZGluZywgMCA9IGludGVycnVwdCBub3QgcGVuZGluZworICoKKyAqIFJlYWQgdGhlIHBlbmRpbmcgcmVnaXN0ZXIgaW4gTlZJQyBhbmQgcmV0dXJuIDEgaWYgaXRzIHN0YXR1cyBpcyBwZW5kaW5nLCAKKyAqIG90aGVyd2lzZSBpdCByZXR1cm5zIDAKKyAqLworc3RhdGljIF9fSU5MSU5FIHVpbnQzMl90IE5WSUNfR2V0UGVuZGluZ0lSUShJUlFuX1R5cGUgSVJRbikKK3sKKyAgcmV0dXJuKCh1aW50MzJfdCkgKChOVklDLT5JU1BSWyh1aW50MzJfdCkoSVJRbikgPj4gNV0gJiAoMSA8PCAoKHVpbnQzMl90KShJUlFuKSAmIDB4MUYpKSk/MTowKSk7IC8qIFJldHVybiAxIGlmIHBlbmRpbmcgZWxzZSAwICovCit9CisKKy8qKgorICogQGJyaWVmICBTZXQgdGhlIHBlbmRpbmcgYml0IGZvciBhbiBleHRlcm5hbCBpbnRlcnJ1cHQKKyAqIAorICogQHBhcmFtICBJUlFuICAgIFRoZSBudW1iZXIgb2YgdGhlIGludGVycnVwdCBmb3Igc2V0IHBlbmRpbmcKKyAqCisgKiBTZXQgdGhlIHBlbmRpbmcgYml0IGZvciB0aGUgc3BlY2lmaWVkIGludGVycnVwdC4KKyAqIFRoZSBpbnRlcnJ1cHQgbnVtYmVyIGNhbm5vdCBiZSBhIG5lZ2F0aXZlIHZhbHVlLgorICovCitzdGF0aWMgX19JTkxJTkUgdm9pZCBOVklDX1NldFBlbmRpbmdJUlEoSVJRbl9UeXBlIElSUW4pCit7CisgIE5WSUMtPklTUFJbKCh1aW50MzJfdCkoSVJRbikgPj4gNSldID0gKDEgPDwgKCh1aW50MzJfdCkoSVJRbikgJiAweDFGKSk7IC8qIHNldCBpbnRlcnJ1cHQgcGVuZGluZyAqLworfQorCisvKioKKyAqIEBicmllZiAgQ2xlYXIgdGhlIHBlbmRpbmcgYml0IGZvciBhbiBleHRlcm5hbCBpbnRlcnJ1cHQKKyAqCisgKiBAcGFyYW0gIElSUW4gICAgVGhlIG51bWJlciBvZiB0aGUgaW50ZXJydXB0IGZvciBjbGVhciBwZW5kaW5nCisgKgorICogQ2xlYXIgdGhlIHBlbmRpbmcgYml0IGZvciB0aGUgc3BlY2lmaWVkIGludGVycnVwdC4gCisgKiBUaGUgaW50ZXJydXB0IG51bWJlciBjYW5ub3QgYmUgYSBuZWdhdGl2ZSB2YWx1ZS4KKyAqLworc3RhdGljIF9fSU5MSU5FIHZvaWQgTlZJQ19DbGVhclBlbmRpbmdJUlEoSVJRbl9UeXBlIElSUW4pCit7CisgIE5WSUMtPklDUFJbKCh1aW50MzJfdCkoSVJRbikgPj4gNSldID0gKDEgPDwgKCh1aW50MzJfdCkoSVJRbikgJiAweDFGKSk7IC8qIENsZWFyIHBlbmRpbmcgaW50ZXJydXB0ICovCit9CisKKy8qKgorICogQGJyaWVmICBSZWFkIHRoZSBhY3RpdmUgYml0IGZvciBhbiBleHRlcm5hbCBpbnRlcnJ1cHQKKyAqCisgKiBAcGFyYW0gIElSUW4gICAgVGhlIG51bWJlciBvZiB0aGUgaW50ZXJydXB0IGZvciByZWFkIGFjdGl2ZSBiaXQKKyAqIEByZXR1cm4gICAgICAgICAxID0gaW50ZXJydXB0IGFjdGl2ZSwgMCA9IGludGVycnVwdCBub3QgYWN0aXZlCisgKgorICogUmVhZCB0aGUgYWN0aXZlIHJlZ2lzdGVyIGluIE5WSUMgYW5kIHJldHVybnMgMSBpZiBpdHMgc3RhdHVzIGlzIGFjdGl2ZSwgCisgKiBvdGhlcndpc2UgaXQgcmV0dXJucyAwLgorICovCitzdGF0aWMgX19JTkxJTkUgdWludDMyX3QgTlZJQ19HZXRBY3RpdmUoSVJRbl9UeXBlIElSUW4pCit7CisgIHJldHVybigodWludDMyX3QpKChOVklDLT5JQUJSWyh1aW50MzJfdCkoSVJRbikgPj4gNV0gJiAoMSA8PCAoKHVpbnQzMl90KShJUlFuKSAmIDB4MUYpKSk/MTowKSk7IC8qIFJldHVybiAxIGlmIGFjdGl2ZSBlbHNlIDAgKi8KK30KKworLyoqCisgKiBAYnJpZWYgIFNldCB0aGUgcHJpb3JpdHkgZm9yIGFuIGludGVycnVwdAorICoKKyAqIEBwYXJhbSAgSVJRbiAgICAgIFRoZSBudW1iZXIgb2YgdGhlIGludGVycnVwdCBmb3Igc2V0IHByaW9yaXR5CisgKiBAcGFyYW0gIHByaW9yaXR5ICBUaGUgcHJpb3JpdHkgdG8gc2V0CisgKgorICogU2V0IHRoZSBwcmlvcml0eSBmb3IgdGhlIHNwZWNpZmllZCBpbnRlcnJ1cHQuIFRoZSBpbnRlcnJ1cHQgCisgKiBudW1iZXIgY2FuIGJlIHBvc2l0aXZlIHRvIHNwZWNpZnkgYW4gZXh0ZXJuYWwgKGRldmljZSBzcGVjaWZpYykgCisgKiBpbnRlcnJ1cHQsIG9yIG5lZ2F0aXZlIHRvIHNwZWNpZnkgYW4gaW50ZXJuYWwgKGNvcmUpIGludGVycnVwdC4KKyAqCisgKiBOb3RlOiBUaGUgcHJpb3JpdHkgY2Fubm90IGJlIHNldCBmb3IgZXZlcnkgY29yZSBpbnRlcnJ1cHQuCisgKi8KK3N0YXRpYyBfX0lOTElORSB2b2lkIE5WSUNfU2V0UHJpb3JpdHkoSVJRbl9UeXBlIElSUW4sIHVpbnQzMl90IHByaW9yaXR5KQoreworICBpZihJUlFuIDwgMCkgeworICAgIFNDQi0+U0hQWygodWludDMyX3QpKElSUW4pICYgMHhGKS00XSA9ICgocHJpb3JpdHkgPDwgKDggLSBfX05WSUNfUFJJT19CSVRTKSkgJiAweGZmKTsgfSAvKiBzZXQgUHJpb3JpdHkgZm9yIENvcnRleC1NMyBTeXN0ZW0gSW50ZXJydXB0cyAqLworICBlbHNlIHsKKyAgICBOVklDLT5JUFsodWludDMyX3QpKElSUW4pXSA9ICgocHJpb3JpdHkgPDwgKDggLSBfX05WSUNfUFJJT19CSVRTKSkgJiAweGZmKTsgICAgfSAgICAgICAgLyogc2V0IFByaW9yaXR5IGZvciBkZXZpY2Ugc3BlY2lmaWMgSW50ZXJydXB0cyAgKi8KK30KKworLyoqCisgKiBAYnJpZWYgIFJlYWQgdGhlIHByaW9yaXR5IGZvciBhbiBpbnRlcnJ1cHQKKyAqCisgKiBAcGFyYW0gIElSUW4gICAgICBUaGUgbnVtYmVyIG9mIHRoZSBpbnRlcnJ1cHQgZm9yIGdldCBwcmlvcml0eQorICogQHJldHVybiAgICAgICAgICAgVGhlIHByaW9yaXR5IGZvciB0aGUgaW50ZXJydXB0CisgKgorICogUmVhZCB0aGUgcHJpb3JpdHkgZm9yIHRoZSBzcGVjaWZpZWQgaW50ZXJydXB0LiBUaGUgaW50ZXJydXB0IAorICogbnVtYmVyIGNhbiBiZSBwb3NpdGl2ZSB0byBzcGVjaWZ5IGFuIGV4dGVybmFsIChkZXZpY2Ugc3BlY2lmaWMpIAorICogaW50ZXJydXB0LCBvciBuZWdhdGl2ZSB0byBzcGVjaWZ5IGFuIGludGVybmFsIChjb3JlKSBpbnRlcnJ1cHQuCisgKgorICogVGhlIHJldHVybmVkIHByaW9yaXR5IHZhbHVlIGlzIGF1dG9tYXRpY2FsbHkgYWxpZ25lZCB0byB0aGUgaW1wbGVtZW50ZWQKKyAqIHByaW9yaXR5IGJpdHMgb2YgdGhlIG1pY3JvY29udHJvbGxlci4KKyAqCisgKiBOb3RlOiBUaGUgcHJpb3JpdHkgY2Fubm90IGJlIHNldCBmb3IgZXZlcnkgY29yZSBpbnRlcnJ1cHQuCisgKi8KK3N0YXRpYyBfX0lOTElORSB1aW50MzJfdCBOVklDX0dldFByaW9yaXR5KElSUW5fVHlwZSBJUlFuKQoreworCisgIGlmKElSUW4gPCAwKSB7CisgICAgcmV0dXJuKCh1aW50MzJfdCkoU0NCLT5TSFBbKCh1aW50MzJfdCkoSVJRbikgJiAweEYpLTRdID4+ICg4IC0gX19OVklDX1BSSU9fQklUUykpKTsgIH0gLyogZ2V0IHByaW9yaXR5IGZvciBDb3J0ZXgtTTMgc3lzdGVtIGludGVycnVwdHMgKi8KKyAgZWxzZSB7CisgICAgcmV0dXJuKCh1aW50MzJfdCkoTlZJQy0+SVBbKHVpbnQzMl90KShJUlFuKV0gICAgICAgICAgID4+ICg4IC0gX19OVklDX1BSSU9fQklUUykpKTsgIH0gLyogZ2V0IHByaW9yaXR5IGZvciBkZXZpY2Ugc3BlY2lmaWMgaW50ZXJydXB0cyAgKi8KK30KKworCisvKioKKyAqIEBicmllZiAgRW5jb2RlIHRoZSBwcmlvcml0eSBmb3IgYW4gaW50ZXJydXB0CisgKgorICogQHBhcmFtICBQcmlvcml0eUdyb3VwICAgIFRoZSB1c2VkIHByaW9yaXR5IGdyb3VwCisgKiBAcGFyYW0gIFByZWVtcHRQcmlvcml0eSAgVGhlIHByZWVtcHRpdmUgcHJpb3JpdHkgdmFsdWUgKHN0YXJ0aW5nIGZyb20gMCkKKyAqIEBwYXJhbSAgU3ViUHJpb3JpdHkgICAgICBUaGUgc3ViIHByaW9yaXR5IHZhbHVlIChzdGFydGluZyBmcm9tIDApCisgKiBAcmV0dXJuICAgICAgICAgICAgICAgICAgVGhlIGVuY29kZWQgcHJpb3JpdHkgZm9yIHRoZSBpbnRlcnJ1cHQKKyAqCisgKiBFbmNvZGUgdGhlIHByaW9yaXR5IGZvciBhbiBpbnRlcnJ1cHQgd2l0aCB0aGUgZ2l2ZW4gcHJpb3JpdHkgZ3JvdXAsCisgKiBwcmVlbXB0aXZlIHByaW9yaXR5IHZhbHVlIGFuZCBzdWIgcHJpb3JpdHkgdmFsdWUuCisgKiBJbiBjYXNlIG9mIGEgY29uZmxpY3QgYmV0d2VlbiBwcmlvcml0eSBncm91cGluZyBhbmQgYXZhaWxhYmxlCisgKiBwcmlvcml0eSBiaXRzIChfX05WSUNfUFJJT19CSVRTKSB0aGUgc2FtbGxlc3QgcG9zc2libGUgcHJpb3JpdHkgZ3JvdXAgaXMgc2V0LgorICoKKyAqIFRoZSByZXR1cm5lZCBwcmlvcml0eSB2YWx1ZSBjYW4gYmUgdXNlZCBmb3IgTlZJQ19TZXRQcmlvcml0eSguLi4pIGZ1bmN0aW9uCisgKi8KK3N0YXRpYyBfX0lOTElORSB1aW50MzJfdCBOVklDX0VuY29kZVByaW9yaXR5ICh1aW50MzJfdCBQcmlvcml0eUdyb3VwLCB1aW50MzJfdCBQcmVlbXB0UHJpb3JpdHksIHVpbnQzMl90IFN1YlByaW9yaXR5KQoreworICB1aW50MzJfdCBQcmlvcml0eUdyb3VwVG1wID0gKFByaW9yaXR5R3JvdXAgJiAweDA3KTsgICAgICAgICAgLyogb25seSB2YWx1ZXMgMC4uNyBhcmUgdXNlZCAgICAgICAgICAqLworICB1aW50MzJfdCBQcmVlbXB0UHJpb3JpdHlCaXRzOworICB1aW50MzJfdCBTdWJQcmlvcml0eUJpdHM7CisKKyAgUHJlZW1wdFByaW9yaXR5Qml0cyA9ICgoNyAtIFByaW9yaXR5R3JvdXBUbXApID4gX19OVklDX1BSSU9fQklUUykgPyBfX05WSUNfUFJJT19CSVRTIDogNyAtIFByaW9yaXR5R3JvdXBUbXA7CisgIFN1YlByaW9yaXR5Qml0cyAgICAgPSAoKFByaW9yaXR5R3JvdXBUbXAgKyBfX05WSUNfUFJJT19CSVRTKSA8IDcpID8gMCA6IFByaW9yaXR5R3JvdXBUbXAgLSA3ICsgX19OVklDX1BSSU9fQklUUzsKKyAKKyAgcmV0dXJuICgKKyAgICAgICAgICAgKChQcmVlbXB0UHJpb3JpdHkgJiAoKDEgPDwgKFByZWVtcHRQcmlvcml0eUJpdHMpKSAtIDEpKSA8PCBTdWJQcmlvcml0eUJpdHMpIHwKKyAgICAgICAgICAgKChTdWJQcmlvcml0eSAgICAgJiAoKDEgPDwgKFN1YlByaW9yaXR5Qml0cyAgICApKSAtIDEpKSkKKyAgICAgICAgICk7Cit9CisKKworLyoqCisgKiBAYnJpZWYgIERlY29kZSB0aGUgcHJpb3JpdHkgb2YgYW4gaW50ZXJydXB0CisgKgorICogQHBhcmFtICBQcmlvcml0eSAgICAgICAgICAgVGhlIHByaW9yaXR5IGZvciB0aGUgaW50ZXJydXB0CisgKiBAcGFyYW0gIFByaW9yaXR5R3JvdXAgICAgICBUaGUgdXNlZCBwcmlvcml0eSBncm91cAorICogQHBhcmFtICBwUHJlZW1wdFByaW9yaXR5ICAgVGhlIHByZWVtcHRpdmUgcHJpb3JpdHkgdmFsdWUgKHN0YXJ0aW5nIGZyb20gMCkKKyAqIEBwYXJhbSAgcFN1YlByaW9yaXR5ICAgICAgIFRoZSBzdWIgcHJpb3JpdHkgdmFsdWUgKHN0YXJ0aW5nIGZyb20gMCkKKyAqCisgKiBEZWNvZGUgYW4gaW50ZXJydXB0IHByaW9yaXR5IHZhbHVlIHdpdGggdGhlIGdpdmVuIHByaW9yaXR5IGdyb3VwIHRvIAorICogcHJlZW1wdGl2ZSBwcmlvcml0eSB2YWx1ZSBhbmQgc3ViIHByaW9yaXR5IHZhbHVlLgorICogSW4gY2FzZSBvZiBhIGNvbmZsaWN0IGJldHdlZW4gcHJpb3JpdHkgZ3JvdXBpbmcgYW5kIGF2YWlsYWJsZQorICogcHJpb3JpdHkgYml0cyAoX19OVklDX1BSSU9fQklUUykgdGhlIHNhbWxsZXN0IHBvc3NpYmxlIHByaW9yaXR5IGdyb3VwIGlzIHNldC4KKyAqCisgKiBUaGUgcHJpb3JpdHkgdmFsdWUgY2FuIGJlIHJldHJpZXZlZCB3aXRoIE5WSUNfR2V0UHJpb3JpdHkoLi4uKSBmdW5jdGlvbgorICovCitzdGF0aWMgX19JTkxJTkUgdm9pZCBOVklDX0RlY29kZVByaW9yaXR5ICh1aW50MzJfdCBQcmlvcml0eSwgdWludDMyX3QgUHJpb3JpdHlHcm91cCwgdWludDMyX3QqIHBQcmVlbXB0UHJpb3JpdHksIHVpbnQzMl90KiBwU3ViUHJpb3JpdHkpCit7CisgIHVpbnQzMl90IFByaW9yaXR5R3JvdXBUbXAgPSAoUHJpb3JpdHlHcm91cCAmIDB4MDcpOyAgICAgICAgICAvKiBvbmx5IHZhbHVlcyAwLi43IGFyZSB1c2VkICAgICAgICAgICovCisgIHVpbnQzMl90IFByZWVtcHRQcmlvcml0eUJpdHM7CisgIHVpbnQzMl90IFN1YlByaW9yaXR5Qml0czsKKworICBQcmVlbXB0UHJpb3JpdHlCaXRzID0gKCg3IC0gUHJpb3JpdHlHcm91cFRtcCkgPiBfX05WSUNfUFJJT19CSVRTKSA/IF9fTlZJQ19QUklPX0JJVFMgOiA3IC0gUHJpb3JpdHlHcm91cFRtcDsKKyAgU3ViUHJpb3JpdHlCaXRzICAgICA9ICgoUHJpb3JpdHlHcm91cFRtcCArIF9fTlZJQ19QUklPX0JJVFMpIDwgNykgPyAwIDogUHJpb3JpdHlHcm91cFRtcCAtIDcgKyBfX05WSUNfUFJJT19CSVRTOworICAKKyAgKnBQcmVlbXB0UHJpb3JpdHkgPSAoUHJpb3JpdHkgPj4gU3ViUHJpb3JpdHlCaXRzKSAmICgoMSA8PCAoUHJlZW1wdFByaW9yaXR5Qml0cykpIC0gMSk7CisgICpwU3ViUHJpb3JpdHkgICAgID0gKFByaW9yaXR5ICAgICAgICAgICAgICAgICAgICkgJiAoKDEgPDwgKFN1YlByaW9yaXR5Qml0cyAgICApKSAtIDEpOworfQorCisKKworLyogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAgICBTeXNUaWNrIGZ1bmN0aW9uICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAqLworCisjaWYgKCFkZWZpbmVkIChfX1ZlbmRvcl9TeXNUaWNrQ29uZmlnKSkgfHwgKF9fVmVuZG9yX1N5c1RpY2tDb25maWcgPT0gMCkKKworLyoqCisgKiBAYnJpZWYgIEluaXRpYWxpemUgYW5kIHN0YXJ0IHRoZSBTeXNUaWNrIGNvdW50ZXIgYW5kIGl0cyBpbnRlcnJ1cHQuCisgKgorICogQHBhcmFtICAgdGlja3MgICBudW1iZXIgb2YgdGlja3MgYmV0d2VlbiB0d28gaW50ZXJydXB0cworICogQHJldHVybiAgMSA9IGZhaWxlZCwgMCA9IHN1Y2Nlc3NmdWwKKyAqCisgKiBJbml0aWFsaXNlIHRoZSBzeXN0ZW0gdGljayB0aW1lciBhbmQgaXRzIGludGVycnVwdCBhbmQgc3RhcnQgdGhlCisgKiBzeXN0ZW0gdGljayB0aW1lciAvIGNvdW50ZXIgaW4gZnJlZSBydW5uaW5nIG1vZGUgdG8gZ2VuZXJhdGUgCisgKiBwZXJpb2RpY2FsIGludGVycnVwdHMuCisgKi8KK3N0YXRpYyBfX0lOTElORSB1aW50MzJfdCBTeXNUaWNrX0NvbmZpZyh1aW50MzJfdCB0aWNrcykKK3sgCisgIGlmICh0aWNrcyA+IFN5c1RpY2tfTE9BRF9SRUxPQURfTXNrKSAgcmV0dXJuICgxKTsgICAgICAgICAgICAvKiBSZWxvYWQgdmFsdWUgaW1wb3NzaWJsZSAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIFN5c1RpY2stPkxPQUQgID0gKHRpY2tzICYgU3lzVGlja19MT0FEX1JFTE9BRF9Nc2spIC0gMTsgICAgICAvKiBzZXQgcmVsb2FkIHJlZ2lzdGVyICovCisgIE5WSUNfU2V0UHJpb3JpdHkgKFN5c1RpY2tfSVJRbiwgKDE8PF9fTlZJQ19QUklPX0JJVFMpIC0gMSk7ICAvKiBzZXQgUHJpb3JpdHkgZm9yIENvcnRleC1NMCBTeXN0ZW0gSW50ZXJydXB0cyAqLworICBTeXNUaWNrLT5WQUwgICA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTG9hZCB0aGUgU3lzVGljayBDb3VudGVyIFZhbHVlICovCisgIFN5c1RpY2stPkNUUkwgID0gU3lzVGlja19DVFJMX0NMS1NPVVJDRV9Nc2sgfCAKKyAgICAgICAgICAgICAgICAgICBTeXNUaWNrX0NUUkxfVElDS0lOVF9Nc2sgICB8IAorICAgICAgICAgICAgICAgICAgIFN5c1RpY2tfQ1RSTF9FTkFCTEVfTXNrOyAgICAgICAgICAgICAgICAgICAgLyogRW5hYmxlIFN5c1RpY2sgSVJRIGFuZCBTeXNUaWNrIFRpbWVyICovCisgIHJldHVybiAoMCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBGdW5jdGlvbiBzdWNjZXNzZnVsICovCit9CisKKyNlbmRpZgorCisKKworCisvKiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjICAgIFJlc2V0IGZ1bmN0aW9uICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAqLworCisvKioKKyAqIEBicmllZiAgSW5pdGlhdGUgYSBzeXN0ZW0gcmVzZXQgcmVxdWVzdC4KKyAqCisgKiBJbml0aWF0ZSBhIHN5c3RlbSByZXNldCByZXF1ZXN0IHRvIHJlc2V0IHRoZSBNQ1UKKyAqLworc3RhdGljIF9fSU5MSU5FIHZvaWQgTlZJQ19TeXN0ZW1SZXNldCh2b2lkKQoreworICBTQ0ItPkFJUkNSICA9ICgoMHg1RkEgPDwgU0NCX0FJUkNSX1ZFQ1RLRVlfUG9zKSAgICAgIHwgCisgICAgICAgICAgICAgICAgIChTQ0ItPkFJUkNSICYgU0NCX0FJUkNSX1BSSUdST1VQX01zaykgfCAKKyAgICAgICAgICAgICAgICAgU0NCX0FJUkNSX1NZU1JFU0VUUkVRX01zayk7ICAgICAgICAgICAgICAgICAgIC8qIEtlZXAgcHJpb3JpdHkgZ3JvdXAgdW5jaGFuZ2VkICovCisgIF9fRFNCKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBFbnN1cmUgY29tcGxldGlvbiBvZiBtZW1vcnkgYWNjZXNzICovICAgICAgICAgICAgICAKKyAgd2hpbGUoMSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHdhaXQgdW50aWwgcmVzZXQgKi8KK30KKworLypAfSovIC8qIGVuZCBvZiBncm91cCBDTVNJU19DTTNfQ29yZV9GdW5jdGlvbkludGVyZmFjZSAqLworCisKKworLyogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBEZWJ1ZyBJbi9PdXRwdXQgZnVuY3Rpb24gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAqLworCisvKiogQGFkZHRvZ3JvdXAgQ01TSVNfQ00zX0NvcmVEZWJ1Z0ludGVyZmFjZSBDTVNJUyBDTTMgQ29yZSBEZWJ1ZyBJbnRlcmZhY2UKKyAgQ29yZSBEZWJ1ZyBJbnRlcmZhY2UgY29udGFpbmluZzoKKyAgLSBDb3JlIERlYnVnIFJlY2VpdmUgLyBUcmFuc21pdCBGdW5jdGlvbnMKKyAgLSBDb3JlIERlYnVnIERlZmluZXMKKyAgLSBDb3JlIERlYnVnIFZhcmlhYmxlcworKi8KKy8qQHsqLworCitleHRlcm4gdm9sYXRpbGUgaW50IElUTV9SeEJ1ZmZlcjsgICAgICAgICAgICAgICAgICAgIC8qITwgdmFyaWFibGUgdG8gcmVjZWl2ZSBjaGFyYWN0ZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSAgICAgICAgICAgICBJVE1fUlhCVUZGRVJfRU1QVFkgICAgMHg1QUE1NUFBNSAvKiE8IHZhbHVlIGlkZW50aWZ5aW5nIElUTV9SeEJ1ZmZlciBpcyByZWFkeSBmb3IgbmV4dCBjaGFyYWN0ZXIgKi8KKworCisvKioKKyAqIEBicmllZiAgT3V0cHV0cyBhIGNoYXJhY3RlciB2aWEgdGhlIElUTSBjaGFubmVsIDAKKyAqCisgKiBAcGFyYW0gIGNoICAgY2hhcmFjdGVyIHRvIG91dHB1dAorICogQHJldHVybiAgICAgIGNoYXJhY3RlciB0byBvdXRwdXQKKyAqCisgKiBUaGUgZnVuY3Rpb24gb3V0cHV0cyBhIGNoYXJhY3RlciB2aWEgdGhlIElUTSBjaGFubmVsIDAuIAorICogVGhlIGZ1bmN0aW9uIHJldHVybnMgd2hlbiBubyBkZWJ1Z2dlciBpcyBjb25uZWN0ZWQgdGhhdCBoYXMgYm9va2VkIHRoZSBvdXRwdXQuICAKKyAqIEl0IGlzIGJsb2NraW5nIHdoZW4gYSBkZWJ1Z2dlciBpcyBjb25uZWN0ZWQsIGJ1dCB0aGUgcHJldmlvdXMgY2hhcmFjdGVyIHNlbmQgaXMgbm90IHRyYW5zbWl0dGVkLiAKKyAqLworc3RhdGljIF9fSU5MSU5FIHVpbnQzMl90IElUTV9TZW5kQ2hhciAodWludDMyX3QgY2gpCit7CisgIGlmICgoQ29yZURlYnVnLT5ERU1DUiAmIENvcmVEZWJ1Z19ERU1DUl9UUkNFTkFfTXNrKSAgJiYgICAgICAvKiBUcmFjZSBlbmFibGVkICovCisgICAgICAoSVRNLT5UQ1IgJiBJVE1fVENSX0lUTUVOQV9Nc2spICAgICAgICAgICAgICAgICAgJiYgICAgICAvKiBJVE0gZW5hYmxlZCAqLworICAgICAgKElUTS0+VEVSICYgKDF1bCA8PCAwKSAgICAgICAgKSAgICAgICAgICAgICAgICAgICAgKSAgICAgLyogSVRNIFBvcnQgIzAgZW5hYmxlZCAqLworICB7CisgICAgd2hpbGUgKElUTS0+UE9SVFswXS51MzIgPT0gMCk7CisgICAgSVRNLT5QT1JUWzBdLnU4ID0gKHVpbnQ4X3QpIGNoOworICB9ICAKKyAgcmV0dXJuIChjaCk7Cit9CisKKworLyoqCisgKiBAYnJpZWYgIElucHV0cyBhIGNoYXJhY3RlciB2aWEgdmFyaWFibGUgSVRNX1J4QnVmZmVyCisgKgorICogQHJldHVybiAgICAgIHJlY2VpdmVkIGNoYXJhY3RlciwgLTEgPSBubyBjaGFyYWN0ZXIgcmVjZWl2ZWQKKyAqCisgKiBUaGUgZnVuY3Rpb24gaW5wdXRzIGEgY2hhcmFjdGVyIHZpYSB2YXJpYWJsZSBJVE1fUnhCdWZmZXIuIAorICogVGhlIGZ1bmN0aW9uIHJldHVybnMgd2hlbiBubyBkZWJ1Z2dlciBpcyBjb25uZWN0ZWQgdGhhdCBoYXMgYm9va2VkIHRoZSBvdXRwdXQuICAKKyAqIEl0IGlzIGJsb2NraW5nIHdoZW4gYSBkZWJ1Z2dlciBpcyBjb25uZWN0ZWQsIGJ1dCB0aGUgcHJldmlvdXMgY2hhcmFjdGVyIHNlbmQgaXMgbm90IHRyYW5zbWl0dGVkLiAKKyAqLworc3RhdGljIF9fSU5MSU5FIGludCBJVE1fUmVjZWl2ZUNoYXIgKHZvaWQpIHsKKyAgaW50IGNoID0gLTE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5vIGNoYXJhY3RlciBhdmFpbGFibGUgKi8KKworICBpZiAoSVRNX1J4QnVmZmVyICE9IElUTV9SWEJVRkZFUl9FTVBUWSkgeworICAgIGNoID0gSVRNX1J4QnVmZmVyOworICAgIElUTV9SeEJ1ZmZlciA9IElUTV9SWEJVRkZFUl9FTVBUWTsgICAgICAgLyogcmVhZHkgZm9yIG5leHQgY2hhcmFjdGVyICovCisgIH0KKyAgCisgIHJldHVybiAoY2gpOyAKK30KKworCisvKioKKyAqIEBicmllZiAgQ2hlY2sgaWYgYSBjaGFyYWN0ZXIgdmlhIHZhcmlhYmxlIElUTV9SeEJ1ZmZlciBpcyBhdmFpbGFibGUKKyAqCisgKiBAcmV0dXJuICAgICAgMSA9IGNoYXJhY3RlciBhdmFpbGFibGUsIDAgPSBubyBjaGFyYWN0ZXIgYXZhaWxhYmxlCisgKgorICogVGhlIGZ1bmN0aW9uIGNoZWNrcyAgdmFyaWFibGUgSVRNX1J4QnVmZmVyIHdoZXRoZXIgYSBjaGFyYWN0ZXIgaXMgYXZhaWxhYmxlIG9yIG5vdC4gCisgKiBUaGUgZnVuY3Rpb24gcmV0dXJucyAnMScgaWYgYSBjaGFyYWN0ZXIgaXMgYXZhaWxhYmxlIGFuZCAnMCcgaWYgbm8gY2hhcmFjdGVyIGlzIGF2YWlsYWJsZS4gCisgKi8KK3N0YXRpYyBfX0lOTElORSBpbnQgSVRNX0NoZWNrQ2hhciAodm9pZCkgeworCisgIGlmIChJVE1fUnhCdWZmZXIgPT0gSVRNX1JYQlVGRkVSX0VNUFRZKSB7CisgICAgcmV0dXJuICgwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBubyBjaGFyYWN0ZXIgYXZhaWxhYmxlICovCisgIH0gZWxzZSB7CisgICAgcmV0dXJuICgxKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICBjaGFyYWN0ZXIgYXZhaWxhYmxlICovCisgIH0KK30KKworLypAfSovIC8qIGVuZCBvZiBncm91cCBDTVNJU19DTTNfY29yZV9EZWJ1Z0ludGVyZmFjZSAqLworCisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKy8qQH0qLyAvKiBlbmQgb2YgZ3JvdXAgQ01TSVNfQ00zX2NvcmVfZGVmaW5pdGlvbnMgKi8KKworI2VuZGlmIC8qIF9fQ00zX0NPUkVfSF9fICovCisKKy8qbGludCAtcmVzdG9yZSAqLwpkaWZmIC0tZ2l0IGEvc3RfZndfbGliL2luYy9taXNjLmggYi9zdF9md19saWIvaW5jL21pc2MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YTZiZDA3Ci0tLSAvZGV2L251bGwKKysrIGIvc3RfZndfbGliL2luYy9taXNjLmgKQEAgLTAsMCArMSwyMjAgQEAKKy8qKgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKiBAZmlsZSAgICBtaXNjLmgKKyAgKiBAYXV0aG9yICBNQ0QgQXBwbGljYXRpb24gVGVhbQorICAqIEB2ZXJzaW9uIFYzLjUuMAorICAqIEBkYXRlICAgIDExLU1hcmNoLTIwMTEKKyAgKiBAYnJpZWYgICBUaGlzIGZpbGUgY29udGFpbnMgYWxsIHRoZSBmdW5jdGlvbnMgcHJvdG90eXBlcyBmb3IgdGhlIG1pc2NlbGxhbmVvdXMKKyAgKiAgICAgICAgICBmaXJtd2FyZSBsaWJyYXJ5IGZ1bmN0aW9ucyAoYWRkLW9uIHRvIENNU0lTIGZ1bmN0aW9ucykuCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqIEBhdHRlbnRpb24KKyAgKgorICAqIFRIRSBQUkVTRU5UIEZJUk1XQVJFIFdISUNIIElTIEZPUiBHVUlEQU5DRSBPTkxZIEFJTVMgQVQgUFJPVklESU5HIENVU1RPTUVSUworICAqIFdJVEggQ09ESU5HIElORk9STUFUSU9OIFJFR0FSRElORyBUSEVJUiBQUk9EVUNUUyBJTiBPUkRFUiBGT1IgVEhFTSBUTyBTQVZFCisgICogVElNRS4gQVMgQSBSRVNVTFQsIFNUTUlDUk9FTEVDVFJPTklDUyBTSEFMTCBOT1QgQkUgSEVMRCBMSUFCTEUgRk9SIEFOWQorICAqIERJUkVDVCwgSU5ESVJFQ1QgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIFdJVEggUkVTUEVDVCBUTyBBTlkgQ0xBSU1TIEFSSVNJTkcKKyAgKiBGUk9NIFRIRSBDT05URU5UIE9GIFNVQ0ggRklSTVdBUkUgQU5EL09SIFRIRSBVU0UgTUFERSBCWSBDVVNUT01FUlMgT0YgVEhFCisgICogQ09ESU5HIElORk9STUFUSU9OIENPTlRBSU5FRCBIRVJFSU4gSU4gQ09OTkVDVElPTiBXSVRIIFRIRUlSIFBST0RVQ1RTLgorICAqCisgICogPGgyPjxjZW50ZXI+JmNvcHk7IENPUFlSSUdIVCAyMDExIFNUTWljcm9lbGVjdHJvbmljczwvY2VudGVyPjwvaDI+CisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqLworCisvKiBEZWZpbmUgdG8gcHJldmVudCByZWN1cnNpdmUgaW5jbHVzaW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworI2lmbmRlZiBfX01JU0NfSAorI2RlZmluZSBfX01JU0NfSAorCisjaWZkZWYgX19jcGx1c3BsdXMKKyBleHRlcm4gIkMiIHsKKyNlbmRpZgorCisvKiBJbmNsdWRlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworI2luY2x1ZGUgInN0bTMyZjEweC5oIgorCisvKiogQGFkZHRvZ3JvdXAgU1RNMzJGMTB4X1N0ZFBlcmlwaF9Ecml2ZXIKKyAgKiBAeworICAqLworCisvKiogQGFkZHRvZ3JvdXAgTUlTQworICAqIEB7CisgICovCisKKy8qKiBAZGVmZ3JvdXAgTUlTQ19FeHBvcnRlZF9UeXBlcworICAqIEB7CisgICovCisKKy8qKiAKKyAgKiBAYnJpZWYgIE5WSUMgSW5pdCBTdHJ1Y3R1cmUgZGVmaW5pdGlvbiAgCisgICovCisKK3R5cGVkZWYgc3RydWN0Cit7CisgIHVpbnQ4X3QgTlZJQ19JUlFDaGFubmVsOyAgICAgICAgICAgICAgICAgICAgLyohPCBTcGVjaWZpZXMgdGhlIElSUSBjaGFubmVsIHRvIGJlIGVuYWJsZWQgb3IgZGlzYWJsZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIElSUW5fVHlwZSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChGb3IgdGhlIGNvbXBsZXRlIFNUTTMyIERldmljZXMgSVJRIENoYW5uZWxzIGxpc3QsIHBsZWFzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyIHRvIHN0bTMyZjEweC5oIGZpbGUpICovCisKKyAgdWludDhfdCBOVklDX0lSUUNoYW5uZWxQcmVlbXB0aW9uUHJpb3JpdHk7ICAvKiE8IFNwZWNpZmllcyB0aGUgcHJlLWVtcHRpb24gcHJpb3JpdHkgZm9yIHRoZSBJUlEgY2hhbm5lbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVkIGluIE5WSUNfSVJRQ2hhbm5lbC4gVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJldHdlZW4gMCBhbmQgMTUgYXMgZGVzY3JpYmVkIGluIHRoZSB0YWJsZSBAcmVmIE5WSUNfUHJpb3JpdHlfVGFibGUgKi8KKworICB1aW50OF90IE5WSUNfSVJRQ2hhbm5lbFN1YlByaW9yaXR5OyAgICAgICAgIC8qITwgU3BlY2lmaWVzIHRoZSBzdWJwcmlvcml0eSBsZXZlbCBmb3IgdGhlIElSUSBjaGFubmVsIHNwZWNpZmllZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gTlZJQ19JUlFDaGFubmVsLiBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmV0d2VlbiAwIGFuZCAxNSBhcyBkZXNjcmliZWQgaW4gdGhlIHRhYmxlIEByZWYgTlZJQ19Qcmlvcml0eV9UYWJsZSAqLworCisgIEZ1bmN0aW9uYWxTdGF0ZSBOVklDX0lSUUNoYW5uZWxDbWQ7ICAgICAgICAgLyohPCBTcGVjaWZpZXMgd2hldGhlciB0aGUgSVJRIGNoYW5uZWwgZGVmaW5lZCBpbiBOVklDX0lSUUNoYW5uZWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbGwgYmUgZW5hYmxlZCBvciBkaXNhYmxlZC4gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgc2V0IGVpdGhlciB0byBFTkFCTEUgb3IgRElTQUJMRSAqLyAgIAorfSBOVklDX0luaXRUeXBlRGVmOworIAorLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBOVklDX1ByaW9yaXR5X1RhYmxlIAorICAqIEB7CisgICovCisKKy8qKgorQGNvZGUgIAorIFRoZSB0YWJsZSBiZWxvdyBnaXZlcyB0aGUgYWxsb3dlZCB2YWx1ZXMgb2YgdGhlIHByZS1lbXB0aW9uIHByaW9yaXR5IGFuZCBzdWJwcmlvcml0eSBhY2NvcmRpbmcKKyB0byB0aGUgUHJpb3JpdHkgR3JvdXBpbmcgY29uZmlndXJhdGlvbiBwZXJmb3JtZWQgYnkgTlZJQ19Qcmlvcml0eUdyb3VwQ29uZmlnIGZ1bmN0aW9uCisgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICBOVklDX1ByaW9yaXR5R3JvdXAgICB8IE5WSUNfSVJRQ2hhbm5lbFByZWVtcHRpb25Qcmlvcml0eSB8IE5WSUNfSVJRQ2hhbm5lbFN1YlByaW9yaXR5ICB8IERlc2NyaXB0aW9uCisgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgIE5WSUNfUHJpb3JpdHlHcm91cF8wICB8ICAgICAgICAgICAgICAgIDAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgMC0xNSAgICAgICAgICAgICB8ICAgMCBiaXRzIGZvciBwcmUtZW1wdGlvbiBwcmlvcml0eQorICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0IGJpdHMgZm9yIHN1YnByaW9yaXR5CisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIE5WSUNfUHJpb3JpdHlHcm91cF8xICB8ICAgICAgICAgICAgICAgIDAtMSAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgMC03ICAgICAgICAgICAgICB8ICAgMSBiaXRzIGZvciBwcmUtZW1wdGlvbiBwcmlvcml0eQorICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAzIGJpdHMgZm9yIHN1YnByaW9yaXR5CisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gICAgCisgICBOVklDX1ByaW9yaXR5R3JvdXBfMiAgfCAgICAgICAgICAgICAgICAwLTMgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIDAtMyAgICAgICAgICAgICAgfCAgIDIgYml0cyBmb3IgcHJlLWVtcHRpb24gcHJpb3JpdHkKKyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiBiaXRzIGZvciBzdWJwcmlvcml0eQorICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICAgIAorICAgTlZJQ19Qcmlvcml0eUdyb3VwXzMgIHwgICAgICAgICAgICAgICAgMC03ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAwLTEgICAgICAgICAgICAgIHwgICAzIGJpdHMgZm9yIHByZS1lbXB0aW9uIHByaW9yaXR5CisgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgYml0cyBmb3Igc3VicHJpb3JpdHkKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAgICAKKyAgIE5WSUNfUHJpb3JpdHlHcm91cF80ICB8ICAgICAgICAgICAgICAgIDAtMTUgICAgICAgICAgICAgICB8ICAgICAgICAgICAgMCAgICAgICAgICAgICAgICB8ICAgNCBiaXRzIGZvciBwcmUtZW1wdGlvbiBwcmlvcml0eQorICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAwIGJpdHMgZm9yIHN1YnByaW9yaXR5ICAgICAgICAgICAgICAgICAgICAgICAKKyAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQGVuZGNvZGUKKyovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgTUlTQ19FeHBvcnRlZF9Db25zdGFudHMKKyAgKiBAeworICAqLworCisvKiogQGRlZmdyb3VwIFZlY3Rvcl9UYWJsZV9CYXNlIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgTlZJQ19WZWN0VGFiX1JBTSAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MjAwMDAwMDApCisjZGVmaW5lIE5WSUNfVmVjdFRhYl9GTEFTSCAgICAgICAgICAgKCh1aW50MzJfdCkweDA4MDAwMDAwKQorI2RlZmluZSBJU19OVklDX1ZFQ1RUQUIoVkVDVFRBQikgKCgoVkVDVFRBQikgPT0gTlZJQ19WZWN0VGFiX1JBTSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoVkVDVFRBQikgPT0gTlZJQ19WZWN0VGFiX0ZMQVNIKSkKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgU3lzdGVtX0xvd19Qb3dlciAKKyAgKiBAeworICAqLworCisjZGVmaW5lIE5WSUNfTFBfU0VWT05QRU5EICAgICAgICAgICAgKCh1aW50OF90KTB4MTApCisjZGVmaW5lIE5WSUNfTFBfU0xFRVBERUVQICAgICAgICAgICAgKCh1aW50OF90KTB4MDQpCisjZGVmaW5lIE5WSUNfTFBfU0xFRVBPTkVYSVQgICAgICAgICAgKCh1aW50OF90KTB4MDIpCisjZGVmaW5lIElTX05WSUNfTFAoTFApICgoKExQKSA9PSBOVklDX0xQX1NFVk9OUEVORCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgKChMUCkgPT0gTlZJQ19MUF9TTEVFUERFRVApIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICgoTFApID09IE5WSUNfTFBfU0xFRVBPTkVYSVQpKQorLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBQcmVlbXB0aW9uX1ByaW9yaXR5X0dyb3VwIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgTlZJQ19Qcmlvcml0eUdyb3VwXzAgICAgICAgICAoKHVpbnQzMl90KTB4NzAwKSAvKiE8IDAgYml0cyBmb3IgcHJlLWVtcHRpb24gcHJpb3JpdHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQgYml0cyBmb3Igc3VicHJpb3JpdHkgKi8KKyNkZWZpbmUgTlZJQ19Qcmlvcml0eUdyb3VwXzEgICAgICAgICAoKHVpbnQzMl90KTB4NjAwKSAvKiE8IDEgYml0cyBmb3IgcHJlLWVtcHRpb24gcHJpb3JpdHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMgYml0cyBmb3Igc3VicHJpb3JpdHkgKi8KKyNkZWZpbmUgTlZJQ19Qcmlvcml0eUdyb3VwXzIgICAgICAgICAoKHVpbnQzMl90KTB4NTAwKSAvKiE8IDIgYml0cyBmb3IgcHJlLWVtcHRpb24gcHJpb3JpdHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIgYml0cyBmb3Igc3VicHJpb3JpdHkgKi8KKyNkZWZpbmUgTlZJQ19Qcmlvcml0eUdyb3VwXzMgICAgICAgICAoKHVpbnQzMl90KTB4NDAwKSAvKiE8IDMgYml0cyBmb3IgcHJlLWVtcHRpb24gcHJpb3JpdHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgYml0cyBmb3Igc3VicHJpb3JpdHkgKi8KKyNkZWZpbmUgTlZJQ19Qcmlvcml0eUdyb3VwXzQgICAgICAgICAoKHVpbnQzMl90KTB4MzAwKSAvKiE8IDQgYml0cyBmb3IgcHJlLWVtcHRpb24gcHJpb3JpdHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgYml0cyBmb3Igc3VicHJpb3JpdHkgKi8KKworI2RlZmluZSBJU19OVklDX1BSSU9SSVRZX0dST1VQKEdST1VQKSAoKChHUk9VUCkgPT0gTlZJQ19Qcmlvcml0eUdyb3VwXzApIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoR1JPVVApID09IE5WSUNfUHJpb3JpdHlHcm91cF8xKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEdST1VQKSA9PSBOVklDX1ByaW9yaXR5R3JvdXBfMikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChHUk9VUCkgPT0gTlZJQ19Qcmlvcml0eUdyb3VwXzMpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoR1JPVVApID09IE5WSUNfUHJpb3JpdHlHcm91cF80KSkKKworI2RlZmluZSBJU19OVklDX1BSRUVNUFRJT05fUFJJT1JJVFkoUFJJT1JJVFkpICAoKFBSSU9SSVRZKSA8IDB4MTApCisKKyNkZWZpbmUgSVNfTlZJQ19TVUJfUFJJT1JJVFkoUFJJT1JJVFkpICAoKFBSSU9SSVRZKSA8IDB4MTApCisKKyNkZWZpbmUgSVNfTlZJQ19PRkZTRVQoT0ZGU0VUKSAgKChPRkZTRVQpIDwgMHgwMDBGRkZGRikKKworLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBTeXNUaWNrX2Nsb2NrX3NvdXJjZSAKKyAgKiBAeworICAqLworCisjZGVmaW5lIFN5c1RpY2tfQ0xLU291cmNlX0hDTEtfRGl2OCAgICAoKHVpbnQzMl90KTB4RkZGRkZGRkIpCisjZGVmaW5lIFN5c1RpY2tfQ0xLU291cmNlX0hDTEsgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDQpCisjZGVmaW5lIElTX1NZU1RJQ0tfQ0xLX1NPVVJDRShTT1VSQ0UpICgoKFNPVVJDRSkgPT0gU3lzVGlja19DTEtTb3VyY2VfSENMSykgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChTT1VSQ0UpID09IFN5c1RpY2tfQ0xLU291cmNlX0hDTEtfRGl2OCkpCisvKioKKyAgKiBAfQorICAqLworCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIE1JU0NfRXhwb3J0ZWRfTWFjcm9zCisgICogQHsKKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBNSVNDX0V4cG9ydGVkX0Z1bmN0aW9ucworICAqIEB7CisgICovCisKK3ZvaWQgTlZJQ19Qcmlvcml0eUdyb3VwQ29uZmlnKHVpbnQzMl90IE5WSUNfUHJpb3JpdHlHcm91cCk7Cit2b2lkIE5WSUNfSW5pdChOVklDX0luaXRUeXBlRGVmKiBOVklDX0luaXRTdHJ1Y3QpOwordm9pZCBOVklDX1NldFZlY3RvclRhYmxlKHVpbnQzMl90IE5WSUNfVmVjdFRhYiwgdWludDMyX3QgT2Zmc2V0KTsKK3ZvaWQgTlZJQ19TeXN0ZW1MUENvbmZpZyh1aW50OF90IExvd1Bvd2VyTW9kZSwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKTsKK3ZvaWQgU3lzVGlja19DTEtTb3VyY2VDb25maWcodWludDMyX3QgU3lzVGlja19DTEtTb3VyY2UpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyogX19NSVNDX0ggKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCAyMDExIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL3N0X2Z3X2xpYi9pbmMvc3RtMzJmMTB4X2FkYy5oIGIvc3RfZndfbGliL2luYy9zdG0zMmYxMHhfYWRjLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzQ2NWQzMwotLS0gL2Rldi9udWxsCisrKyBiL3N0X2Z3X2xpYi9pbmMvc3RtMzJmMTB4X2FkYy5oCkBAIC0wLDAgKzEsNDgzIEBACisvKioKKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICogQGZpbGUgICAgc3RtMzJmMTB4X2FkYy5oCisgICogQGF1dGhvciAgTUNEIEFwcGxpY2F0aW9uIFRlYW0KKyAgKiBAdmVyc2lvbiBWMy41LjAKKyAgKiBAZGF0ZSAgICAxMS1NYXJjaC0yMDExCisgICogQGJyaWVmICAgVGhpcyBmaWxlIGNvbnRhaW5zIGFsbCB0aGUgZnVuY3Rpb25zIHByb3RvdHlwZXMgZm9yIHRoZSBBREMgZmlybXdhcmUgCisgICogICAgICAgICAgbGlicmFyeS4KKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICogQGF0dGVudGlvbgorICAqCisgICogVEhFIFBSRVNFTlQgRklSTVdBUkUgV0hJQ0ggSVMgRk9SIEdVSURBTkNFIE9OTFkgQUlNUyBBVCBQUk9WSURJTkcgQ1VTVE9NRVJTCisgICogV0lUSCBDT0RJTkcgSU5GT1JNQVRJT04gUkVHQVJESU5HIFRIRUlSIFBST0RVQ1RTIElOIE9SREVSIEZPUiBUSEVNIFRPIFNBVkUKKyAgKiBUSU1FLiBBUyBBIFJFU1VMVCwgU1RNSUNST0VMRUNUUk9OSUNTIFNIQUxMIE5PVCBCRSBIRUxEIExJQUJMRSBGT1IgQU5ZCisgICogRElSRUNULCBJTkRJUkVDVCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgV0lUSCBSRVNQRUNUIFRPIEFOWSBDTEFJTVMgQVJJU0lORworICAqIEZST00gVEhFIENPTlRFTlQgT0YgU1VDSCBGSVJNV0FSRSBBTkQvT1IgVEhFIFVTRSBNQURFIEJZIENVU1RPTUVSUyBPRiBUSEUKKyAgKiBDT0RJTkcgSU5GT1JNQVRJT04gQ09OVEFJTkVEIEhFUkVJTiBJTiBDT05ORUNUSU9OIFdJVEggVEhFSVIgUFJPRFVDVFMuCisgICoKKyAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ09QWVJJR0hUIDIwMTEgU1RNaWNyb2VsZWN0cm9uaWNzPC9jZW50ZXI+PC9oMj4KKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICovCisKKy8qIERlZmluZSB0byBwcmV2ZW50IHJlY3Vyc2l2ZSBpbmNsdXNpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisjaWZuZGVmIF9fU1RNMzJGMTB4X0FEQ19ICisjZGVmaW5lIF9fU1RNMzJGMTB4X0FEQ19ICisKKyNpZmRlZiBfX2NwbHVzcGx1cworIGV4dGVybiAiQyIgeworI2VuZGlmCisKKy8qIEluY2x1ZGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisjaW5jbHVkZSAic3RtMzJmMTB4LmgiCisKKy8qKiBAYWRkdG9ncm91cCBTVE0zMkYxMHhfU3RkUGVyaXBoX0RyaXZlcgorICAqIEB7CisgICovCisKKy8qKiBAYWRkdG9ncm91cCBBREMKKyAgKiBAeworICAqLworCisvKiogQGRlZmdyb3VwIEFEQ19FeHBvcnRlZF9UeXBlcworICAqIEB7CisgICovCisKKy8qKiAKKyAgKiBAYnJpZWYgIEFEQyBJbml0IHN0cnVjdHVyZSBkZWZpbml0aW9uICAKKyAgKi8KKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgdWludDMyX3QgQURDX01vZGU7ICAgICAgICAgICAgICAgICAgICAgIC8qITwgQ29uZmlndXJlcyB0aGUgQURDIHRvIG9wZXJhdGUgaW4gaW5kZXBlbmRlbnQgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVhbCBtb2RlLiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBBRENfbW9kZSAqLworCisgIEZ1bmN0aW9uYWxTdGF0ZSBBRENfU2NhbkNvbnZNb2RlOyAgICAgICAvKiE8IFNwZWNpZmllcyB3aGV0aGVyIHRoZSBjb252ZXJzaW9uIGlzIHBlcmZvcm1lZCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTY2FuIChtdWx0aWNoYW5uZWxzKSBvciBTaW5nbGUgKG9uZSBjaGFubmVsKSBtb2RlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgc2V0IHRvIEVOQUJMRSBvciBESVNBQkxFICovCisKKyAgRnVuY3Rpb25hbFN0YXRlIEFEQ19Db250aW51b3VzQ29udk1vZGU7IC8qITwgU3BlY2lmaWVzIHdoZXRoZXIgdGhlIGNvbnZlcnNpb24gaXMgcGVyZm9ybWVkIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRpbnVvdXMgb3IgU2luZ2xlIG1vZGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBzZXQgdG8gRU5BQkxFIG9yIERJU0FCTEUuICovCisKKyAgdWludDMyX3QgQURDX0V4dGVybmFsVHJpZ0NvbnY7ICAgICAgICAgIC8qITwgRGVmaW5lcyB0aGUgZXh0ZXJuYWwgdHJpZ2dlciB1c2VkIHRvIHN0YXJ0IHRoZSBhbmFsb2cKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gZGlnaXRhbCBjb252ZXJzaW9uIG9mIHJlZ3VsYXIgY2hhbm5lbHMuIFRoaXMgcGFyYW1ldGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgQURDX2V4dGVybmFsX3RyaWdnZXJfc291cmNlc19mb3JfcmVndWxhcl9jaGFubmVsc19jb252ZXJzaW9uICovCisKKyAgdWludDMyX3QgQURDX0RhdGFBbGlnbjsgICAgICAgICAgICAgICAgIC8qITwgU3BlY2lmaWVzIHdoZXRoZXIgdGhlIEFEQyBkYXRhIGFsaWdubWVudCBpcyBsZWZ0IG9yIHJpZ2h0LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIEFEQ19kYXRhX2FsaWduICovCisKKyAgdWludDhfdCBBRENfTmJyT2ZDaGFubmVsOyAgICAgICAgICAgICAgIC8qITwgU3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgQURDIGNoYW5uZWxzIHRoYXQgd2lsbCBiZSBjb252ZXJ0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmcgdGhlIHNlcXVlbmNlciBmb3IgcmVndWxhciBjaGFubmVsIGdyb3VwLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBtdXN0IHJhbmdlIGZyb20gMSB0byAxNi4gKi8KK31BRENfSW5pdFR5cGVEZWY7CisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIEFEQ19FeHBvcnRlZF9Db25zdGFudHMKKyAgKiBAeworICAqLworCisjZGVmaW5lIElTX0FEQ19BTExfUEVSSVBIKFBFUklQSCkgKCgoUEVSSVBIKSA9PSBBREMxKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUEVSSVBIKSA9PSBBREMyKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUEVSSVBIKSA9PSBBREMzKSkKKworI2RlZmluZSBJU19BRENfRE1BX1BFUklQSChQRVJJUEgpICgoKFBFUklQSCkgPT0gQURDMSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBFUklQSCkgPT0gQURDMykpCisKKy8qKiBAZGVmZ3JvdXAgQURDX21vZGUgCisgICogQHsKKyAgKi8KKworI2RlZmluZSBBRENfTW9kZV9JbmRlcGVuZGVudCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAwKQorI2RlZmluZSBBRENfTW9kZV9SZWdJbmplY1NpbXVsdCAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDEwMDAwKQorI2RlZmluZSBBRENfTW9kZV9SZWdTaW11bHRfQWx0ZXJUcmlnICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDIwMDAwKQorI2RlZmluZSBBRENfTW9kZV9JbmplY1NpbXVsdF9GYXN0SW50ZXJsICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDMwMDAwKQorI2RlZmluZSBBRENfTW9kZV9JbmplY1NpbXVsdF9TbG93SW50ZXJsICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDQwMDAwKQorI2RlZmluZSBBRENfTW9kZV9JbmplY1NpbXVsdCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDUwMDAwKQorI2RlZmluZSBBRENfTW9kZV9SZWdTaW11bHQgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDYwMDAwKQorI2RlZmluZSBBRENfTW9kZV9GYXN0SW50ZXJsICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDcwMDAwKQorI2RlZmluZSBBRENfTW9kZV9TbG93SW50ZXJsICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDgwMDAwKQorI2RlZmluZSBBRENfTW9kZV9BbHRlclRyaWcgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDkwMDAwKQorCisjZGVmaW5lIElTX0FEQ19NT0RFKE1PREUpICgoKE1PREUpID09IEFEQ19Nb2RlX0luZGVwZW5kZW50KSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE1PREUpID09IEFEQ19Nb2RlX1JlZ0luamVjU2ltdWx0KSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE1PREUpID09IEFEQ19Nb2RlX1JlZ1NpbXVsdF9BbHRlclRyaWcpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTU9ERSkgPT0gQURDX01vZGVfSW5qZWNTaW11bHRfRmFzdEludGVybCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKChNT0RFKSA9PSBBRENfTW9kZV9JbmplY1NpbXVsdF9TbG93SW50ZXJsKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE1PREUpID09IEFEQ19Nb2RlX0luamVjU2ltdWx0KSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE1PREUpID09IEFEQ19Nb2RlX1JlZ1NpbXVsdCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKChNT0RFKSA9PSBBRENfTW9kZV9GYXN0SW50ZXJsKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE1PREUpID09IEFEQ19Nb2RlX1Nsb3dJbnRlcmwpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTU9ERSkgPT0gQURDX01vZGVfQWx0ZXJUcmlnKSkKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgQURDX2V4dGVybmFsX3RyaWdnZXJfc291cmNlc19mb3JfcmVndWxhcl9jaGFubmVsc19jb252ZXJzaW9uIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgQURDX0V4dGVybmFsVHJpZ0NvbnZfVDFfQ0MxICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMCkgLyohPCBGb3IgQURDMSBhbmQgQURDMiAqLworI2RlZmluZSBBRENfRXh0ZXJuYWxUcmlnQ29udl9UMV9DQzIgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDIwMDAwKSAvKiE8IEZvciBBREMxIGFuZCBBREMyICovCisjZGVmaW5lIEFEQ19FeHRlcm5hbFRyaWdDb252X1QyX0NDMiAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwNjAwMDApIC8qITwgRm9yIEFEQzEgYW5kIEFEQzIgKi8KKyNkZWZpbmUgQURDX0V4dGVybmFsVHJpZ0NvbnZfVDNfVFJHTyAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA4MDAwMCkgLyohPCBGb3IgQURDMSBhbmQgQURDMiAqLworI2RlZmluZSBBRENfRXh0ZXJuYWxUcmlnQ29udl9UNF9DQzQgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMEEwMDAwKSAvKiE8IEZvciBBREMxIGFuZCBBREMyICovCisjZGVmaW5lIEFEQ19FeHRlcm5hbFRyaWdDb252X0V4dF9JVDExX1RJTThfVFJHTyAgICAoKHVpbnQzMl90KTB4MDAwQzAwMDApIC8qITwgRm9yIEFEQzEgYW5kIEFEQzIgKi8KKworI2RlZmluZSBBRENfRXh0ZXJuYWxUcmlnQ29udl9UMV9DQzMgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDQwMDAwKSAvKiE8IEZvciBBREMxLCBBREMyIGFuZCBBREMzICovCisjZGVmaW5lIEFEQ19FeHRlcm5hbFRyaWdDb252X05vbmUgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwRTAwMDApIC8qITwgRm9yIEFEQzEsIEFEQzIgYW5kIEFEQzMgKi8KKworI2RlZmluZSBBRENfRXh0ZXJuYWxUcmlnQ29udl9UM19DQzEgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAwKSAvKiE8IEZvciBBREMzIG9ubHkgKi8KKyNkZWZpbmUgQURDX0V4dGVybmFsVHJpZ0NvbnZfVDJfQ0MzICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkgLyohPCBGb3IgQURDMyBvbmx5ICovCisjZGVmaW5lIEFEQ19FeHRlcm5hbFRyaWdDb252X1Q4X0NDMSAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwNjAwMDApIC8qITwgRm9yIEFEQzMgb25seSAqLworI2RlZmluZSBBRENfRXh0ZXJuYWxUcmlnQ29udl9UOF9UUkdPICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDgwMDAwKSAvKiE8IEZvciBBREMzIG9ubHkgKi8KKyNkZWZpbmUgQURDX0V4dGVybmFsVHJpZ0NvbnZfVDVfQ0MxICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDBBMDAwMCkgLyohPCBGb3IgQURDMyBvbmx5ICovCisjZGVmaW5lIEFEQ19FeHRlcm5hbFRyaWdDb252X1Q1X0NDMyAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwQzAwMDApIC8qITwgRm9yIEFEQzMgb25seSAqLworCisjZGVmaW5lIElTX0FEQ19FWFRfVFJJRyhSRUdUUklHKSAoKChSRUdUUklHKSA9PSBBRENfRXh0ZXJuYWxUcmlnQ29udl9UMV9DQzEpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFJFR1RSSUcpID09IEFEQ19FeHRlcm5hbFRyaWdDb252X1QxX0NDMikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUkVHVFJJRykgPT0gQURDX0V4dGVybmFsVHJpZ0NvbnZfVDFfQ0MzKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChSRUdUUklHKSA9PSBBRENfRXh0ZXJuYWxUcmlnQ29udl9UMl9DQzIpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFJFR1RSSUcpID09IEFEQ19FeHRlcm5hbFRyaWdDb252X1QzX1RSR08pIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFJFR1RSSUcpID09IEFEQ19FeHRlcm5hbFRyaWdDb252X1Q0X0NDNCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUkVHVFJJRykgPT0gQURDX0V4dGVybmFsVHJpZ0NvbnZfRXh0X0lUMTFfVElNOF9UUkdPKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChSRUdUUklHKSA9PSBBRENfRXh0ZXJuYWxUcmlnQ29udl9Ob25lKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChSRUdUUklHKSA9PSBBRENfRXh0ZXJuYWxUcmlnQ29udl9UM19DQzEpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFJFR1RSSUcpID09IEFEQ19FeHRlcm5hbFRyaWdDb252X1QyX0NDMykgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUkVHVFJJRykgPT0gQURDX0V4dGVybmFsVHJpZ0NvbnZfVDhfQ0MxKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChSRUdUUklHKSA9PSBBRENfRXh0ZXJuYWxUcmlnQ29udl9UOF9UUkdPKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChSRUdUUklHKSA9PSBBRENfRXh0ZXJuYWxUcmlnQ29udl9UNV9DQzEpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFJFR1RSSUcpID09IEFEQ19FeHRlcm5hbFRyaWdDb252X1Q1X0NDMykpCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIEFEQ19kYXRhX2FsaWduIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgQURDX0RhdGFBbGlnbl9SaWdodCAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMCkKKyNkZWZpbmUgQURDX0RhdGFBbGlnbl9MZWZ0ICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkKKyNkZWZpbmUgSVNfQURDX0RBVEFfQUxJR04oQUxJR04pICgoKEFMSUdOKSA9PSBBRENfRGF0YUFsaWduX1JpZ2h0KSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChBTElHTikgPT0gQURDX0RhdGFBbGlnbl9MZWZ0KSkKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgQURDX2NoYW5uZWxzIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgQURDX0NoYW5uZWxfMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwMCkKKyNkZWZpbmUgQURDX0NoYW5uZWxfMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwMSkKKyNkZWZpbmUgQURDX0NoYW5uZWxfMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwMikKKyNkZWZpbmUgQURDX0NoYW5uZWxfMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwMykKKyNkZWZpbmUgQURDX0NoYW5uZWxfNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwNCkKKyNkZWZpbmUgQURDX0NoYW5uZWxfNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwNSkKKyNkZWZpbmUgQURDX0NoYW5uZWxfNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwNikKKyNkZWZpbmUgQURDX0NoYW5uZWxfNyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwNykKKyNkZWZpbmUgQURDX0NoYW5uZWxfOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwOCkKKyNkZWZpbmUgQURDX0NoYW5uZWxfOSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwOSkKKyNkZWZpbmUgQURDX0NoYW5uZWxfMTAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwQSkKKyNkZWZpbmUgQURDX0NoYW5uZWxfMTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwQikKKyNkZWZpbmUgQURDX0NoYW5uZWxfMTIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwQykKKyNkZWZpbmUgQURDX0NoYW5uZWxfMTMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwRCkKKyNkZWZpbmUgQURDX0NoYW5uZWxfMTQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwRSkKKyNkZWZpbmUgQURDX0NoYW5uZWxfMTUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwRikKKyNkZWZpbmUgQURDX0NoYW5uZWxfMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgxMCkKKyNkZWZpbmUgQURDX0NoYW5uZWxfMTcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgxMSkKKworI2RlZmluZSBBRENfQ2hhbm5lbF9UZW1wU2Vuc29yICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdClBRENfQ2hhbm5lbF8xNikKKyNkZWZpbmUgQURDX0NoYW5uZWxfVnJlZmludCAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpQURDX0NoYW5uZWxfMTcpCisKKyNkZWZpbmUgSVNfQURDX0NIQU5ORUwoQ0hBTk5FTCkgKCgoQ0hBTk5FTCkgPT0gQURDX0NoYW5uZWxfMCkgfHwgKChDSEFOTkVMKSA9PSBBRENfQ2hhbm5lbF8xKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKENIQU5ORUwpID09IEFEQ19DaGFubmVsXzIpIHx8ICgoQ0hBTk5FTCkgPT0gQURDX0NoYW5uZWxfMykgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChDSEFOTkVMKSA9PSBBRENfQ2hhbm5lbF80KSB8fCAoKENIQU5ORUwpID09IEFEQ19DaGFubmVsXzUpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoQ0hBTk5FTCkgPT0gQURDX0NoYW5uZWxfNikgfHwgKChDSEFOTkVMKSA9PSBBRENfQ2hhbm5lbF83KSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKENIQU5ORUwpID09IEFEQ19DaGFubmVsXzgpIHx8ICgoQ0hBTk5FTCkgPT0gQURDX0NoYW5uZWxfOSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChDSEFOTkVMKSA9PSBBRENfQ2hhbm5lbF8xMCkgfHwgKChDSEFOTkVMKSA9PSBBRENfQ2hhbm5lbF8xMSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChDSEFOTkVMKSA9PSBBRENfQ2hhbm5lbF8xMikgfHwgKChDSEFOTkVMKSA9PSBBRENfQ2hhbm5lbF8xMykgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChDSEFOTkVMKSA9PSBBRENfQ2hhbm5lbF8xNCkgfHwgKChDSEFOTkVMKSA9PSBBRENfQ2hhbm5lbF8xNSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChDSEFOTkVMKSA9PSBBRENfQ2hhbm5lbF8xNikgfHwgKChDSEFOTkVMKSA9PSBBRENfQ2hhbm5lbF8xNykpCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIEFEQ19zYW1wbGluZ190aW1lIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgQURDX1NhbXBsZVRpbWVfMUN5Y2xlczUgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDAwKQorI2RlZmluZSBBRENfU2FtcGxlVGltZV83Q3ljbGVzNSAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MDEpCisjZGVmaW5lIEFEQ19TYW1wbGVUaW1lXzEzQ3ljbGVzNSAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwMikKKyNkZWZpbmUgQURDX1NhbXBsZVRpbWVfMjhDeWNsZXM1ICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDAzKQorI2RlZmluZSBBRENfU2FtcGxlVGltZV80MUN5Y2xlczUgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MDQpCisjZGVmaW5lIEFEQ19TYW1wbGVUaW1lXzU1Q3ljbGVzNSAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwNSkKKyNkZWZpbmUgQURDX1NhbXBsZVRpbWVfNzFDeWNsZXM1ICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDA2KQorI2RlZmluZSBBRENfU2FtcGxlVGltZV8yMzlDeWNsZXM1ICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MDcpCisjZGVmaW5lIElTX0FEQ19TQU1QTEVfVElNRShUSU1FKSAoKChUSU1FKSA9PSBBRENfU2FtcGxlVGltZV8xQ3ljbGVzNSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoVElNRSkgPT0gQURDX1NhbXBsZVRpbWVfN0N5Y2xlczUpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFRJTUUpID09IEFEQ19TYW1wbGVUaW1lXzEzQ3ljbGVzNSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoVElNRSkgPT0gQURDX1NhbXBsZVRpbWVfMjhDeWNsZXM1KSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChUSU1FKSA9PSBBRENfU2FtcGxlVGltZV80MUN5Y2xlczUpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFRJTUUpID09IEFEQ19TYW1wbGVUaW1lXzU1Q3ljbGVzNSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoVElNRSkgPT0gQURDX1NhbXBsZVRpbWVfNzFDeWNsZXM1KSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChUSU1FKSA9PSBBRENfU2FtcGxlVGltZV8yMzlDeWNsZXM1KSkKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgQURDX2V4dGVybmFsX3RyaWdnZXJfc291cmNlc19mb3JfaW5qZWN0ZWRfY2hhbm5lbHNfY29udmVyc2lvbiAKKyAgKiBAeworICAqLworCisjZGVmaW5lIEFEQ19FeHRlcm5hbFRyaWdJbmplY0NvbnZfVDJfVFJHTyAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAyMDAwKSAvKiE8IEZvciBBREMxIGFuZCBBREMyICovCisjZGVmaW5lIEFEQ19FeHRlcm5hbFRyaWdJbmplY0NvbnZfVDJfQ0MxICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAzMDAwKSAvKiE8IEZvciBBREMxIGFuZCBBREMyICovCisjZGVmaW5lIEFEQ19FeHRlcm5hbFRyaWdJbmplY0NvbnZfVDNfQ0M0ICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA0MDAwKSAvKiE8IEZvciBBREMxIGFuZCBBREMyICovCisjZGVmaW5lIEFEQ19FeHRlcm5hbFRyaWdJbmplY0NvbnZfVDRfVFJHTyAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA1MDAwKSAvKiE8IEZvciBBREMxIGFuZCBBREMyICovCisjZGVmaW5lIEFEQ19FeHRlcm5hbFRyaWdJbmplY0NvbnZfRXh0X0lUMTVfVElNOF9DQzQgKCh1aW50MzJfdCkweDAwMDA2MDAwKSAvKiE8IEZvciBBREMxIGFuZCBBREMyICovCisKKyNkZWZpbmUgQURDX0V4dGVybmFsVHJpZ0luamVjQ29udl9UMV9UUkdPICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDApIC8qITwgRm9yIEFEQzEsIEFEQzIgYW5kIEFEQzMgKi8KKyNkZWZpbmUgQURDX0V4dGVybmFsVHJpZ0luamVjQ29udl9UMV9DQzQgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDEwMDApIC8qITwgRm9yIEFEQzEsIEFEQzIgYW5kIEFEQzMgKi8KKyNkZWZpbmUgQURDX0V4dGVybmFsVHJpZ0luamVjQ29udl9Ob25lICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDcwMDApIC8qITwgRm9yIEFEQzEsIEFEQzIgYW5kIEFEQzMgKi8KKworI2RlZmluZSBBRENfRXh0ZXJuYWxUcmlnSW5qZWNDb252X1Q0X0NDMyAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMjAwMCkgLyohPCBGb3IgQURDMyBvbmx5ICovCisjZGVmaW5lIEFEQ19FeHRlcm5hbFRyaWdJbmplY0NvbnZfVDhfQ0MyICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAzMDAwKSAvKiE8IEZvciBBREMzIG9ubHkgKi8KKyNkZWZpbmUgQURDX0V4dGVybmFsVHJpZ0luamVjQ29udl9UOF9DQzQgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDQwMDApIC8qITwgRm9yIEFEQzMgb25seSAqLworI2RlZmluZSBBRENfRXh0ZXJuYWxUcmlnSW5qZWNDb252X1Q1X1RSR08gICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNTAwMCkgLyohPCBGb3IgQURDMyBvbmx5ICovCisjZGVmaW5lIEFEQ19FeHRlcm5hbFRyaWdJbmplY0NvbnZfVDVfQ0M0ICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA2MDAwKSAvKiE8IEZvciBBREMzIG9ubHkgKi8KKworI2RlZmluZSBJU19BRENfRVhUX0lOSkVDX1RSSUcoSU5KVFJJRykgKCgoSU5KVFJJRykgPT0gQURDX0V4dGVybmFsVHJpZ0luamVjQ29udl9UMV9UUkdPKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJTkpUUklHKSA9PSBBRENfRXh0ZXJuYWxUcmlnSW5qZWNDb252X1QxX0NDNCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoSU5KVFJJRykgPT0gQURDX0V4dGVybmFsVHJpZ0luamVjQ29udl9UMl9UUkdPKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJTkpUUklHKSA9PSBBRENfRXh0ZXJuYWxUcmlnSW5qZWNDb252X1QyX0NDMSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoSU5KVFJJRykgPT0gQURDX0V4dGVybmFsVHJpZ0luamVjQ29udl9UM19DQzQpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKElOSlRSSUcpID09IEFEQ19FeHRlcm5hbFRyaWdJbmplY0NvbnZfVDRfVFJHTykgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoSU5KVFJJRykgPT0gQURDX0V4dGVybmFsVHJpZ0luamVjQ29udl9FeHRfSVQxNV9USU04X0NDNCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoSU5KVFJJRykgPT0gQURDX0V4dGVybmFsVHJpZ0luamVjQ29udl9Ob25lKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJTkpUUklHKSA9PSBBRENfRXh0ZXJuYWxUcmlnSW5qZWNDb252X1Q0X0NDMykgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoSU5KVFJJRykgPT0gQURDX0V4dGVybmFsVHJpZ0luamVjQ29udl9UOF9DQzIpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKElOSlRSSUcpID09IEFEQ19FeHRlcm5hbFRyaWdJbmplY0NvbnZfVDhfQ0M0KSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJTkpUUklHKSA9PSBBRENfRXh0ZXJuYWxUcmlnSW5qZWNDb252X1Q1X1RSR08pIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKElOSlRSSUcpID09IEFEQ19FeHRlcm5hbFRyaWdJbmplY0NvbnZfVDVfQ0M0KSkKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgQURDX2luamVjdGVkX2NoYW5uZWxfc2VsZWN0aW9uIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgQURDX0luamVjdGVkQ2hhbm5lbF8xICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgxNCkKKyNkZWZpbmUgQURDX0luamVjdGVkQ2hhbm5lbF8yICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgxOCkKKyNkZWZpbmUgQURDX0luamVjdGVkQ2hhbm5lbF8zICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgxQykKKyNkZWZpbmUgQURDX0luamVjdGVkQ2hhbm5lbF80ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgyMCkKKyNkZWZpbmUgSVNfQURDX0lOSkVDVEVEX0NIQU5ORUwoQ0hBTk5FTCkgKCgoQ0hBTk5FTCkgPT0gQURDX0luamVjdGVkQ2hhbm5lbF8xKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKENIQU5ORUwpID09IEFEQ19JbmplY3RlZENoYW5uZWxfMikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChDSEFOTkVMKSA9PSBBRENfSW5qZWN0ZWRDaGFubmVsXzMpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoQ0hBTk5FTCkgPT0gQURDX0luamVjdGVkQ2hhbm5lbF80KSkKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgQURDX2FuYWxvZ193YXRjaGRvZ19zZWxlY3Rpb24gCisgICogQHsKKyAgKi8KKworI2RlZmluZSBBRENfQW5hbG9nV2F0Y2hkb2dfU2luZ2xlUmVnRW5hYmxlICAgICAgICAgKCh1aW50MzJfdCkweDAwODAwMjAwKQorI2RlZmluZSBBRENfQW5hbG9nV2F0Y2hkb2dfU2luZ2xlSW5qZWNFbmFibGUgICAgICAgKCh1aW50MzJfdCkweDAwNDAwMjAwKQorI2RlZmluZSBBRENfQW5hbG9nV2F0Y2hkb2dfU2luZ2xlUmVnT3JJbmplY0VuYWJsZSAgKCh1aW50MzJfdCkweDAwQzAwMjAwKQorI2RlZmluZSBBRENfQW5hbG9nV2F0Y2hkb2dfQWxsUmVnRW5hYmxlICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwODAwMDAwKQorI2RlZmluZSBBRENfQW5hbG9nV2F0Y2hkb2dfQWxsSW5qZWNFbmFibGUgICAgICAgICAgKCh1aW50MzJfdCkweDAwNDAwMDAwKQorI2RlZmluZSBBRENfQW5hbG9nV2F0Y2hkb2dfQWxsUmVnQWxsSW5qZWNFbmFibGUgICAgKCh1aW50MzJfdCkweDAwQzAwMDAwKQorI2RlZmluZSBBRENfQW5hbG9nV2F0Y2hkb2dfTm9uZSAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAwKQorCisjZGVmaW5lIElTX0FEQ19BTkFMT0dfV0FUQ0hET0coV0FUQ0hET0cpICgoKFdBVENIRE9HKSA9PSBBRENfQW5hbG9nV2F0Y2hkb2dfU2luZ2xlUmVnRW5hYmxlKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFdBVENIRE9HKSA9PSBBRENfQW5hbG9nV2F0Y2hkb2dfU2luZ2xlSW5qZWNFbmFibGUpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoV0FUQ0hET0cpID09IEFEQ19BbmFsb2dXYXRjaGRvZ19TaW5nbGVSZWdPckluamVjRW5hYmxlKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFdBVENIRE9HKSA9PSBBRENfQW5hbG9nV2F0Y2hkb2dfQWxsUmVnRW5hYmxlKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFdBVENIRE9HKSA9PSBBRENfQW5hbG9nV2F0Y2hkb2dfQWxsSW5qZWNFbmFibGUpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoV0FUQ0hET0cpID09IEFEQ19BbmFsb2dXYXRjaGRvZ19BbGxSZWdBbGxJbmplY0VuYWJsZSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChXQVRDSERPRykgPT0gQURDX0FuYWxvZ1dhdGNoZG9nX05vbmUpKQorLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBBRENfaW50ZXJydXB0c19kZWZpbml0aW9uIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgQURDX0lUX0VPQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMjIwKQorI2RlZmluZSBBRENfSVRfQVdEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAxNDApCisjZGVmaW5lIEFEQ19JVF9KRU9DICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDQ4MCkKKworI2RlZmluZSBJU19BRENfSVQoSVQpICgoKChJVCkgJiAodWludDE2X3QpMHhGODFGKSA9PSAweDAwKSAmJiAoKElUKSAhPSAweDAwKSkKKworI2RlZmluZSBJU19BRENfR0VUX0lUKElUKSAoKChJVCkgPT0gQURDX0lUX0VPQykgfHwgKChJVCkgPT0gQURDX0lUX0FXRCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJVCkgPT0gQURDX0lUX0pFT0MpKQorLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBBRENfZmxhZ3NfZGVmaW5pdGlvbiAKKyAgKiBAeworICAqLworCisjZGVmaW5lIEFEQ19GTEFHX0FXRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwMSkKKyNkZWZpbmUgQURDX0ZMQUdfRU9DICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDAyKQorI2RlZmluZSBBRENfRkxBR19KRU9DICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MDQpCisjZGVmaW5lIEFEQ19GTEFHX0pTVFJUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwOCkKKyNkZWZpbmUgQURDX0ZMQUdfU1RSVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDEwKQorI2RlZmluZSBJU19BRENfQ0xFQVJfRkxBRyhGTEFHKSAoKCgoRkxBRykgJiAodWludDhfdCkweEUwKSA9PSAweDAwKSAmJiAoKEZMQUcpICE9IDB4MDApKQorI2RlZmluZSBJU19BRENfR0VUX0ZMQUcoRkxBRykgKCgoRkxBRykgPT0gQURDX0ZMQUdfQVdEKSB8fCAoKEZMQUcpID09IEFEQ19GTEFHX0VPQykgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRkxBRykgPT0gQURDX0ZMQUdfSkVPQykgfHwgKChGTEFHKT09IEFEQ19GTEFHX0pTVFJUKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChGTEFHKSA9PSBBRENfRkxBR19TVFJUKSkKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgQURDX3RocmVzaG9sZHMgCisgICogQHsKKyAgKi8KKworI2RlZmluZSBJU19BRENfVEhSRVNIT0xEKFRIUkVTSE9MRCkgKChUSFJFU0hPTEQpIDw9IDB4RkZGKQorCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIEFEQ19pbmplY3RlZF9vZmZzZXQgCisgICogQHsKKyAgKi8KKworI2RlZmluZSBJU19BRENfT0ZGU0VUKE9GRlNFVCkgKChPRkZTRVQpIDw9IDB4RkZGKQorCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIEFEQ19pbmplY3RlZF9sZW5ndGggCisgICogQHsKKyAgKi8KKworI2RlZmluZSBJU19BRENfSU5KRUNURURfTEVOR1RIKExFTkdUSCkgKCgoTEVOR1RIKSA+PSAweDEpICYmICgoTEVOR1RIKSA8PSAweDQpKQorCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIEFEQ19pbmplY3RlZF9yYW5rIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgSVNfQURDX0lOSkVDVEVEX1JBTksoUkFOSykgKCgoUkFOSykgPj0gMHgxKSAmJiAoKFJBTkspIDw9IDB4NCkpCisKKy8qKgorICAqIEB9CisgICovIAorCisKKy8qKiBAZGVmZ3JvdXAgQURDX3JlZ3VsYXJfbGVuZ3RoIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgSVNfQURDX1JFR1VMQVJfTEVOR1RIKExFTkdUSCkgKCgoTEVOR1RIKSA+PSAweDEpICYmICgoTEVOR1RIKSA8PSAweDEwKSkKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgQURDX3JlZ3VsYXJfcmFuayAKKyAgKiBAeworICAqLworCisjZGVmaW5lIElTX0FEQ19SRUdVTEFSX1JBTksoUkFOSykgKCgoUkFOSykgPj0gMHgxKSAmJiAoKFJBTkspIDw9IDB4MTApKQorCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIEFEQ19yZWd1bGFyX2Rpc2NvbnRpbnVvdXNfbW9kZV9udW1iZXIgCisgICogQHsKKyAgKi8KKworI2RlZmluZSBJU19BRENfUkVHVUxBUl9ESVNDX05VTUJFUihOVU1CRVIpICgoKE5VTUJFUikgPj0gMHgxKSAmJiAoKE5VTUJFUikgPD0gMHg4KSkKKworLyoqCisgICogQH0KKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBBRENfRXhwb3J0ZWRfTWFjcm9zCisgICogQHsKKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBBRENfRXhwb3J0ZWRfRnVuY3Rpb25zCisgICogQHsKKyAgKi8KKwordm9pZCBBRENfRGVJbml0KEFEQ19UeXBlRGVmKiBBREN4KTsKK3ZvaWQgQURDX0luaXQoQURDX1R5cGVEZWYqIEFEQ3gsIEFEQ19Jbml0VHlwZURlZiogQURDX0luaXRTdHJ1Y3QpOwordm9pZCBBRENfU3RydWN0SW5pdChBRENfSW5pdFR5cGVEZWYqIEFEQ19Jbml0U3RydWN0KTsKK3ZvaWQgQURDX0NtZChBRENfVHlwZURlZiogQURDeCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKTsKK3ZvaWQgQURDX0RNQUNtZChBRENfVHlwZURlZiogQURDeCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKTsKK3ZvaWQgQURDX0lUQ29uZmlnKEFEQ19UeXBlRGVmKiBBREN4LCB1aW50MTZfdCBBRENfSVQsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSk7Cit2b2lkIEFEQ19SZXNldENhbGlicmF0aW9uKEFEQ19UeXBlRGVmKiBBREN4KTsKK0ZsYWdTdGF0dXMgQURDX0dldFJlc2V0Q2FsaWJyYXRpb25TdGF0dXMoQURDX1R5cGVEZWYqIEFEQ3gpOwordm9pZCBBRENfU3RhcnRDYWxpYnJhdGlvbihBRENfVHlwZURlZiogQURDeCk7CitGbGFnU3RhdHVzIEFEQ19HZXRDYWxpYnJhdGlvblN0YXR1cyhBRENfVHlwZURlZiogQURDeCk7Cit2b2lkIEFEQ19Tb2Z0d2FyZVN0YXJ0Q29udkNtZChBRENfVHlwZURlZiogQURDeCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKTsKK0ZsYWdTdGF0dXMgQURDX0dldFNvZnR3YXJlU3RhcnRDb252U3RhdHVzKEFEQ19UeXBlRGVmKiBBREN4KTsKK3ZvaWQgQURDX0Rpc2NNb2RlQ2hhbm5lbENvdW50Q29uZmlnKEFEQ19UeXBlRGVmKiBBREN4LCB1aW50OF90IE51bWJlcik7Cit2b2lkIEFEQ19EaXNjTW9kZUNtZChBRENfVHlwZURlZiogQURDeCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKTsKK3ZvaWQgQURDX1JlZ3VsYXJDaGFubmVsQ29uZmlnKEFEQ19UeXBlRGVmKiBBREN4LCB1aW50OF90IEFEQ19DaGFubmVsLCB1aW50OF90IFJhbmssIHVpbnQ4X3QgQURDX1NhbXBsZVRpbWUpOwordm9pZCBBRENfRXh0ZXJuYWxUcmlnQ29udkNtZChBRENfVHlwZURlZiogQURDeCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKTsKK3VpbnQxNl90IEFEQ19HZXRDb252ZXJzaW9uVmFsdWUoQURDX1R5cGVEZWYqIEFEQ3gpOwordWludDMyX3QgQURDX0dldER1YWxNb2RlQ29udmVyc2lvblZhbHVlKHZvaWQpOwordm9pZCBBRENfQXV0b0luamVjdGVkQ29udkNtZChBRENfVHlwZURlZiogQURDeCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKTsKK3ZvaWQgQURDX0luamVjdGVkRGlzY01vZGVDbWQoQURDX1R5cGVEZWYqIEFEQ3gsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSk7Cit2b2lkIEFEQ19FeHRlcm5hbFRyaWdJbmplY3RlZENvbnZDb25maWcoQURDX1R5cGVEZWYqIEFEQ3gsIHVpbnQzMl90IEFEQ19FeHRlcm5hbFRyaWdJbmplY0NvbnYpOwordm9pZCBBRENfRXh0ZXJuYWxUcmlnSW5qZWN0ZWRDb252Q21kKEFEQ19UeXBlRGVmKiBBREN4LCBGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpOwordm9pZCBBRENfU29mdHdhcmVTdGFydEluamVjdGVkQ29udkNtZChBRENfVHlwZURlZiogQURDeCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKTsKK0ZsYWdTdGF0dXMgQURDX0dldFNvZnR3YXJlU3RhcnRJbmplY3RlZENvbnZDbWRTdGF0dXMoQURDX1R5cGVEZWYqIEFEQ3gpOwordm9pZCBBRENfSW5qZWN0ZWRDaGFubmVsQ29uZmlnKEFEQ19UeXBlRGVmKiBBREN4LCB1aW50OF90IEFEQ19DaGFubmVsLCB1aW50OF90IFJhbmssIHVpbnQ4X3QgQURDX1NhbXBsZVRpbWUpOwordm9pZCBBRENfSW5qZWN0ZWRTZXF1ZW5jZXJMZW5ndGhDb25maWcoQURDX1R5cGVEZWYqIEFEQ3gsIHVpbnQ4X3QgTGVuZ3RoKTsKK3ZvaWQgQURDX1NldEluamVjdGVkT2Zmc2V0KEFEQ19UeXBlRGVmKiBBREN4LCB1aW50OF90IEFEQ19JbmplY3RlZENoYW5uZWwsIHVpbnQxNl90IE9mZnNldCk7Cit1aW50MTZfdCBBRENfR2V0SW5qZWN0ZWRDb252ZXJzaW9uVmFsdWUoQURDX1R5cGVEZWYqIEFEQ3gsIHVpbnQ4X3QgQURDX0luamVjdGVkQ2hhbm5lbCk7Cit2b2lkIEFEQ19BbmFsb2dXYXRjaGRvZ0NtZChBRENfVHlwZURlZiogQURDeCwgdWludDMyX3QgQURDX0FuYWxvZ1dhdGNoZG9nKTsKK3ZvaWQgQURDX0FuYWxvZ1dhdGNoZG9nVGhyZXNob2xkc0NvbmZpZyhBRENfVHlwZURlZiogQURDeCwgdWludDE2X3QgSGlnaFRocmVzaG9sZCwgdWludDE2X3QgTG93VGhyZXNob2xkKTsKK3ZvaWQgQURDX0FuYWxvZ1dhdGNoZG9nU2luZ2xlQ2hhbm5lbENvbmZpZyhBRENfVHlwZURlZiogQURDeCwgdWludDhfdCBBRENfQ2hhbm5lbCk7Cit2b2lkIEFEQ19UZW1wU2Vuc29yVnJlZmludENtZChGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpOworRmxhZ1N0YXR1cyBBRENfR2V0RmxhZ1N0YXR1cyhBRENfVHlwZURlZiogQURDeCwgdWludDhfdCBBRENfRkxBRyk7Cit2b2lkIEFEQ19DbGVhckZsYWcoQURDX1R5cGVEZWYqIEFEQ3gsIHVpbnQ4X3QgQURDX0ZMQUcpOworSVRTdGF0dXMgQURDX0dldElUU3RhdHVzKEFEQ19UeXBlRGVmKiBBREN4LCB1aW50MTZfdCBBRENfSVQpOwordm9pZCBBRENfQ2xlYXJJVFBlbmRpbmdCaXQoQURDX1R5cGVEZWYqIEFEQ3gsIHVpbnQxNl90IEFEQ19JVCk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvKl9fU1RNMzJGMTB4X0FEQ19IICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgMjAxMSBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9zdF9md19saWIvaW5jL3N0bTMyZjEweF9ia3AuaCBiL3N0X2Z3X2xpYi9pbmMvc3RtMzJmMTB4X2JrcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3NWM1ZTEKLS0tIC9kZXYvbnVsbAorKysgYi9zdF9md19saWIvaW5jL3N0bTMyZjEweF9ia3AuaApAQCAtMCwwICsxLDE5NSBAQAorLyoqCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqIEBmaWxlICAgIHN0bTMyZjEweF9ia3AuaAorICAqIEBhdXRob3IgIE1DRCBBcHBsaWNhdGlvbiBUZWFtCisgICogQHZlcnNpb24gVjMuNS4wCisgICogQGRhdGUgICAgMTEtTWFyY2gtMjAxMQorICAqIEBicmllZiAgIFRoaXMgZmlsZSBjb250YWlucyBhbGwgdGhlIGZ1bmN0aW9ucyBwcm90b3R5cGVzIGZvciB0aGUgQktQIGZpcm13YXJlIAorICAqICAgICAgICAgIGxpYnJhcnkuCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqIEBhdHRlbnRpb24KKyAgKgorICAqIFRIRSBQUkVTRU5UIEZJUk1XQVJFIFdISUNIIElTIEZPUiBHVUlEQU5DRSBPTkxZIEFJTVMgQVQgUFJPVklESU5HIENVU1RPTUVSUworICAqIFdJVEggQ09ESU5HIElORk9STUFUSU9OIFJFR0FSRElORyBUSEVJUiBQUk9EVUNUUyBJTiBPUkRFUiBGT1IgVEhFTSBUTyBTQVZFCisgICogVElNRS4gQVMgQSBSRVNVTFQsIFNUTUlDUk9FTEVDVFJPTklDUyBTSEFMTCBOT1QgQkUgSEVMRCBMSUFCTEUgRk9SIEFOWQorICAqIERJUkVDVCwgSU5ESVJFQ1QgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIFdJVEggUkVTUEVDVCBUTyBBTlkgQ0xBSU1TIEFSSVNJTkcKKyAgKiBGUk9NIFRIRSBDT05URU5UIE9GIFNVQ0ggRklSTVdBUkUgQU5EL09SIFRIRSBVU0UgTUFERSBCWSBDVVNUT01FUlMgT0YgVEhFCisgICogQ09ESU5HIElORk9STUFUSU9OIENPTlRBSU5FRCBIRVJFSU4gSU4gQ09OTkVDVElPTiBXSVRIIFRIRUlSIFBST0RVQ1RTLgorICAqCisgICogPGgyPjxjZW50ZXI+JmNvcHk7IENPUFlSSUdIVCAyMDExIFNUTWljcm9lbGVjdHJvbmljczwvY2VudGVyPjwvaDI+CisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqLworCisvKiBEZWZpbmUgdG8gcHJldmVudCByZWN1cnNpdmUgaW5jbHVzaW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworI2lmbmRlZiBfX1NUTTMyRjEweF9CS1BfSAorI2RlZmluZSBfX1NUTTMyRjEweF9CS1BfSAorCisjaWZkZWYgX19jcGx1c3BsdXMKKyBleHRlcm4gIkMiIHsKKyNlbmRpZgorCisvKiBJbmNsdWRlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworI2luY2x1ZGUgInN0bTMyZjEweC5oIgorCisvKiogQGFkZHRvZ3JvdXAgU1RNMzJGMTB4X1N0ZFBlcmlwaF9Ecml2ZXIKKyAgKiBAeworICAqLworCisvKiogQGFkZHRvZ3JvdXAgQktQCisgICogQHsKKyAgKi8KKworLyoqIEBkZWZncm91cCBCS1BfRXhwb3J0ZWRfVHlwZXMKKyAgKiBAeworICAqLworCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIEJLUF9FeHBvcnRlZF9Db25zdGFudHMKKyAgKiBAeworICAqLworCisvKiogQGRlZmdyb3VwIFRhbXBlcl9QaW5fYWN0aXZlX2xldmVsIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgQktQX1RhbXBlclBpbkxldmVsX0hpZ2ggICAgICAgICAgICgodWludDE2X3QpMHgwMDAwKQorI2RlZmluZSBCS1BfVGFtcGVyUGluTGV2ZWxfTG93ICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDEpCisjZGVmaW5lIElTX0JLUF9UQU1QRVJfUElOX0xFVkVMKExFVkVMKSAoKChMRVZFTCkgPT0gQktQX1RhbXBlclBpbkxldmVsX0hpZ2gpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKExFVkVMKSA9PSBCS1BfVGFtcGVyUGluTGV2ZWxfTG93KSkKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgUlRDX291dHB1dF9zb3VyY2VfdG9fb3V0cHV0X29uX3RoZV9UYW1wZXJfcGluIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgQktQX1JUQ091dHB1dFNvdXJjZV9Ob25lICAgICAgICAgICgodWludDE2X3QpMHgwMDAwKQorI2RlZmluZSBCS1BfUlRDT3V0cHV0U291cmNlX0NhbGliQ2xvY2sgICAgKCh1aW50MTZfdCkweDAwODApCisjZGVmaW5lIEJLUF9SVENPdXRwdXRTb3VyY2VfQWxhcm0gICAgICAgICAoKHVpbnQxNl90KTB4MDEwMCkKKyNkZWZpbmUgQktQX1JUQ091dHB1dFNvdXJjZV9TZWNvbmQgICAgICAgICgodWludDE2X3QpMHgwMzAwKQorI2RlZmluZSBJU19CS1BfUlRDX09VVFBVVF9TT1VSQ0UoU09VUkNFKSAoKChTT1VSQ0UpID09IEJLUF9SVENPdXRwdXRTb3VyY2VfTm9uZSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChTT1VSQ0UpID09IEJLUF9SVENPdXRwdXRTb3VyY2VfQ2FsaWJDbG9jaykgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChTT1VSQ0UpID09IEJLUF9SVENPdXRwdXRTb3VyY2VfQWxhcm0pIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoU09VUkNFKSA9PSBCS1BfUlRDT3V0cHV0U291cmNlX1NlY29uZCkpCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIERhdGFfQmFja3VwX1JlZ2lzdGVyIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgQktQX0RSMSAgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA0KQorI2RlZmluZSBCS1BfRFIyICAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDgpCisjZGVmaW5lIEJLUF9EUjMgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwQykKKyNkZWZpbmUgQktQX0RSNCAgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDEwKQorI2RlZmluZSBCS1BfRFI1ICAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMTQpCisjZGVmaW5lIEJLUF9EUjYgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAxOCkKKyNkZWZpbmUgQktQX0RSNyAgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDFDKQorI2RlZmluZSBCS1BfRFI4ICAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMjApCisjZGVmaW5lIEJLUF9EUjkgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAyNCkKKyNkZWZpbmUgQktQX0RSMTAgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDI4KQorI2RlZmluZSBCS1BfRFIxMSAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwNDApCisjZGVmaW5lIEJLUF9EUjEyICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA0NCkKKyNkZWZpbmUgQktQX0RSMTMgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDQ4KQorI2RlZmluZSBCS1BfRFIxNCAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwNEMpCisjZGVmaW5lIEJLUF9EUjE1ICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA1MCkKKyNkZWZpbmUgQktQX0RSMTYgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDU0KQorI2RlZmluZSBCS1BfRFIxNyAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwNTgpCisjZGVmaW5lIEJLUF9EUjE4ICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA1QykKKyNkZWZpbmUgQktQX0RSMTkgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDYwKQorI2RlZmluZSBCS1BfRFIyMCAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwNjQpCisjZGVmaW5lIEJLUF9EUjIxICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA2OCkKKyNkZWZpbmUgQktQX0RSMjIgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDZDKQorI2RlZmluZSBCS1BfRFIyMyAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwNzApCisjZGVmaW5lIEJLUF9EUjI0ICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA3NCkKKyNkZWZpbmUgQktQX0RSMjUgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDc4KQorI2RlZmluZSBCS1BfRFIyNiAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwN0MpCisjZGVmaW5lIEJLUF9EUjI3ICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA4MCkKKyNkZWZpbmUgQktQX0RSMjggICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDg0KQorI2RlZmluZSBCS1BfRFIyOSAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwODgpCisjZGVmaW5lIEJLUF9EUjMwICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA4QykKKyNkZWZpbmUgQktQX0RSMzEgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDkwKQorI2RlZmluZSBCS1BfRFIzMiAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwOTQpCisjZGVmaW5lIEJLUF9EUjMzICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA5OCkKKyNkZWZpbmUgQktQX0RSMzQgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDlDKQorI2RlZmluZSBCS1BfRFIzNSAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwQTApCisjZGVmaW5lIEJLUF9EUjM2ICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDBBNCkKKyNkZWZpbmUgQktQX0RSMzcgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMEE4KQorI2RlZmluZSBCS1BfRFIzOCAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwQUMpCisjZGVmaW5lIEJLUF9EUjM5ICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDBCMCkKKyNkZWZpbmUgQktQX0RSNDAgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMEI0KQorI2RlZmluZSBCS1BfRFI0MSAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwQjgpCisjZGVmaW5lIEJLUF9EUjQyICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDBCQykKKworI2RlZmluZSBJU19CS1BfRFIoRFIpICgoKERSKSA9PSBCS1BfRFIxKSAgfHwgKChEUikgPT0gQktQX0RSMikgIHx8ICgoRFIpID09IEJLUF9EUjMpICB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICgoRFIpID09IEJLUF9EUjQpICB8fCAoKERSKSA9PSBCS1BfRFI1KSAgfHwgKChEUikgPT0gQktQX0RSNikgIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgKChEUikgPT0gQktQX0RSNykgIHx8ICgoRFIpID09IEJLUF9EUjgpICB8fCAoKERSKSA9PSBCS1BfRFI5KSAgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAoKERSKSA9PSBCS1BfRFIxMCkgfHwgKChEUikgPT0gQktQX0RSMTEpIHx8ICgoRFIpID09IEJLUF9EUjEyKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICgoRFIpID09IEJLUF9EUjEzKSB8fCAoKERSKSA9PSBCS1BfRFIxNCkgfHwgKChEUikgPT0gQktQX0RSMTUpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgKChEUikgPT0gQktQX0RSMTYpIHx8ICgoRFIpID09IEJLUF9EUjE3KSB8fCAoKERSKSA9PSBCS1BfRFIxOCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAoKERSKSA9PSBCS1BfRFIxOSkgfHwgKChEUikgPT0gQktQX0RSMjApIHx8ICgoRFIpID09IEJLUF9EUjIxKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICgoRFIpID09IEJLUF9EUjIyKSB8fCAoKERSKSA9PSBCS1BfRFIyMykgfHwgKChEUikgPT0gQktQX0RSMjQpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgKChEUikgPT0gQktQX0RSMjUpIHx8ICgoRFIpID09IEJLUF9EUjI2KSB8fCAoKERSKSA9PSBCS1BfRFIyNykgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAoKERSKSA9PSBCS1BfRFIyOCkgfHwgKChEUikgPT0gQktQX0RSMjkpIHx8ICgoRFIpID09IEJLUF9EUjMwKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICgoRFIpID09IEJLUF9EUjMxKSB8fCAoKERSKSA9PSBCS1BfRFIzMikgfHwgKChEUikgPT0gQktQX0RSMzMpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgKChEUikgPT0gQktQX0RSMzQpIHx8ICgoRFIpID09IEJLUF9EUjM1KSB8fCAoKERSKSA9PSBCS1BfRFIzNikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAoKERSKSA9PSBCS1BfRFIzNykgfHwgKChEUikgPT0gQktQX0RSMzgpIHx8ICgoRFIpID09IEJLUF9EUjM5KSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICgoRFIpID09IEJLUF9EUjQwKSB8fCAoKERSKSA9PSBCS1BfRFI0MSkgfHwgKChEUikgPT0gQktQX0RSNDIpKQorCisjZGVmaW5lIElTX0JLUF9DQUxJQlJBVElPTl9WQUxVRShWQUxVRSkgKChWQUxVRSkgPD0gMHg3RikKKy8qKgorICAqIEB9CisgICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgQktQX0V4cG9ydGVkX01hY3JvcworICAqIEB7CisgICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgQktQX0V4cG9ydGVkX0Z1bmN0aW9ucworICAqIEB7CisgICovCisKK3ZvaWQgQktQX0RlSW5pdCh2b2lkKTsKK3ZvaWQgQktQX1RhbXBlclBpbkxldmVsQ29uZmlnKHVpbnQxNl90IEJLUF9UYW1wZXJQaW5MZXZlbCk7Cit2b2lkIEJLUF9UYW1wZXJQaW5DbWQoRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKTsKK3ZvaWQgQktQX0lUQ29uZmlnKEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSk7Cit2b2lkIEJLUF9SVENPdXRwdXRDb25maWcodWludDE2X3QgQktQX1JUQ091dHB1dFNvdXJjZSk7Cit2b2lkIEJLUF9TZXRSVENDYWxpYnJhdGlvblZhbHVlKHVpbnQ4X3QgQ2FsaWJyYXRpb25WYWx1ZSk7Cit2b2lkIEJLUF9Xcml0ZUJhY2t1cFJlZ2lzdGVyKHVpbnQxNl90IEJLUF9EUiwgdWludDE2X3QgRGF0YSk7Cit1aW50MTZfdCBCS1BfUmVhZEJhY2t1cFJlZ2lzdGVyKHVpbnQxNl90IEJLUF9EUik7CitGbGFnU3RhdHVzIEJLUF9HZXRGbGFnU3RhdHVzKHZvaWQpOwordm9pZCBCS1BfQ2xlYXJGbGFnKHZvaWQpOworSVRTdGF0dXMgQktQX0dldElUU3RhdHVzKHZvaWQpOwordm9pZCBCS1BfQ2xlYXJJVFBlbmRpbmdCaXQodm9pZCk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvKiBfX1NUTTMyRjEweF9CS1BfSCAqLworLyoqCisgICogQH0KKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCAyMDExIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL3N0X2Z3X2xpYi9pbmMvc3RtMzJmMTB4X2Nhbi5oIGIvc3RfZndfbGliL2luYy9zdG0zMmYxMHhfY2FuLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDE4NWFhMgotLS0gL2Rldi9udWxsCisrKyBiL3N0X2Z3X2xpYi9pbmMvc3RtMzJmMTB4X2Nhbi5oCkBAIC0wLDAgKzEsNjk3IEBACisvKioKKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICogQGZpbGUgICAgc3RtMzJmMTB4X2Nhbi5oCisgICogQGF1dGhvciAgTUNEIEFwcGxpY2F0aW9uIFRlYW0KKyAgKiBAdmVyc2lvbiBWMy41LjAKKyAgKiBAZGF0ZSAgICAxMS1NYXJjaC0yMDExCisgICogQGJyaWVmICAgVGhpcyBmaWxlIGNvbnRhaW5zIGFsbCB0aGUgZnVuY3Rpb25zIHByb3RvdHlwZXMgZm9yIHRoZSBDQU4gZmlybXdhcmUgCisgICogICAgICAgICAgbGlicmFyeS4KKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICogQGF0dGVudGlvbgorICAqCisgICogVEhFIFBSRVNFTlQgRklSTVdBUkUgV0hJQ0ggSVMgRk9SIEdVSURBTkNFIE9OTFkgQUlNUyBBVCBQUk9WSURJTkcgQ1VTVE9NRVJTCisgICogV0lUSCBDT0RJTkcgSU5GT1JNQVRJT04gUkVHQVJESU5HIFRIRUlSIFBST0RVQ1RTIElOIE9SREVSIEZPUiBUSEVNIFRPIFNBVkUKKyAgKiBUSU1FLiBBUyBBIFJFU1VMVCwgU1RNSUNST0VMRUNUUk9OSUNTIFNIQUxMIE5PVCBCRSBIRUxEIExJQUJMRSBGT1IgQU5ZCisgICogRElSRUNULCBJTkRJUkVDVCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgV0lUSCBSRVNQRUNUIFRPIEFOWSBDTEFJTVMgQVJJU0lORworICAqIEZST00gVEhFIENPTlRFTlQgT0YgU1VDSCBGSVJNV0FSRSBBTkQvT1IgVEhFIFVTRSBNQURFIEJZIENVU1RPTUVSUyBPRiBUSEUKKyAgKiBDT0RJTkcgSU5GT1JNQVRJT04gQ09OVEFJTkVEIEhFUkVJTiBJTiBDT05ORUNUSU9OIFdJVEggVEhFSVIgUFJPRFVDVFMuCisgICoKKyAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ09QWVJJR0hUIDIwMTEgU1RNaWNyb2VsZWN0cm9uaWNzPC9jZW50ZXI+PC9oMj4KKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICovCisKKy8qIERlZmluZSB0byBwcmV2ZW50IHJlY3Vyc2l2ZSBpbmNsdXNpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisjaWZuZGVmIF9fU1RNMzJGMTB4X0NBTl9ICisjZGVmaW5lIF9fU1RNMzJGMTB4X0NBTl9ICisKKyNpZmRlZiBfX2NwbHVzcGx1cworIGV4dGVybiAiQyIgeworI2VuZGlmCisKKy8qIEluY2x1ZGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisjaW5jbHVkZSAic3RtMzJmMTB4LmgiCisKKy8qKiBAYWRkdG9ncm91cCBTVE0zMkYxMHhfU3RkUGVyaXBoX0RyaXZlcgorICAqIEB7CisgICovCisKKy8qKiBAYWRkdG9ncm91cCBDQU4KKyAgKiBAeworICAqLworCisvKiogQGRlZmdyb3VwIENBTl9FeHBvcnRlZF9UeXBlcworICAqIEB7CisgICovCisKKyNkZWZpbmUgSVNfQ0FOX0FMTF9QRVJJUEgoUEVSSVBIKSAoKChQRVJJUEgpID09IENBTjEpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQRVJJUEgpID09IENBTjIpKQorCisvKiogCisgICogQGJyaWVmICBDQU4gaW5pdCBzdHJ1Y3R1cmUgZGVmaW5pdGlvbgorICAqLworCit0eXBlZGVmIHN0cnVjdAoreworICB1aW50MTZfdCBDQU5fUHJlc2NhbGVyOyAgIC8qITwgU3BlY2lmaWVzIHRoZSBsZW5ndGggb2YgYSB0aW1lIHF1YW50dW0uIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXQgcmFuZ2VzIGZyb20gMSB0byAxMDI0LiAqLworICAKKyAgdWludDhfdCBDQU5fTW9kZTsgICAgICAgICAvKiE8IFNwZWNpZmllcyB0aGUgQ0FOIG9wZXJhdGluZyBtb2RlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEByZWYgQ0FOX29wZXJhdGluZ19tb2RlICovCisKKyAgdWludDhfdCBDQU5fU0pXOyAgICAgICAgICAvKiE8IFNwZWNpZmllcyB0aGUgbWF4aW11bSBudW1iZXIgb2YgdGltZSBxdWFudGEgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgQ0FOIGhhcmR3YXJlIGlzIGFsbG93ZWQgdG8gbGVuZ3RoZW4gb3IgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG9ydGVuIGEgYml0IHRvIHBlcmZvcm0gcmVzeW5jaHJvbml6YXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEByZWYgQ0FOX3N5bmNocm9uaXNhdGlvbl9qdW1wX3dpZHRoICovCisKKyAgdWludDhfdCBDQU5fQlMxOyAgICAgICAgICAvKiE8IFNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIHRpbWUgcXVhbnRhIGluIEJpdCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlZ21lbnQgMS4gVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAcmVmIENBTl90aW1lX3F1YW50dW1faW5fYml0X3NlZ21lbnRfMSAqLworCisgIHVpbnQ4X3QgQ0FOX0JTMjsgICAgICAgICAgLyohPCBTcGVjaWZpZXMgdGhlIG51bWJlciBvZiB0aW1lIHF1YW50YSBpbiBCaXQgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWdtZW50IDIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEByZWYgQ0FOX3RpbWVfcXVhbnR1bV9pbl9iaXRfc2VnbWVudF8yICovCisgIAorICBGdW5jdGlvbmFsU3RhdGUgQ0FOX1RUQ007IC8qITwgRW5hYmxlIG9yIGRpc2FibGUgdGhlIHRpbWUgdHJpZ2dlcmVkIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbXVuaWNhdGlvbiBtb2RlLiBUaGlzIHBhcmFtZXRlciBjYW4gYmUgc2V0IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWl0aGVyIHRvIEVOQUJMRSBvciBESVNBQkxFLiAqLworICAKKyAgRnVuY3Rpb25hbFN0YXRlIENBTl9BQk9NOyAgLyohPCBFbmFibGUgb3IgZGlzYWJsZSB0aGUgYXV0b21hdGljIGJ1cy1vZmYgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFuYWdlbWVudC4gVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIHNldCBlaXRoZXIgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gRU5BQkxFIG9yIERJU0FCTEUuICovCisKKyAgRnVuY3Rpb25hbFN0YXRlIENBTl9BV1VNOyAgLyohPCBFbmFibGUgb3IgZGlzYWJsZSB0aGUgYXV0b21hdGljIHdha2UtdXAgbW9kZS4gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIHNldCBlaXRoZXIgdG8gRU5BQkxFIG9yIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERJU0FCTEUuICovCisKKyAgRnVuY3Rpb25hbFN0YXRlIENBTl9OQVJUOyAgLyohPCBFbmFibGUgb3IgZGlzYWJsZSB0aGUgbm8tYXV0b21hdGljIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHJhbnNtaXNzaW9uIG1vZGUuIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXQgZWl0aGVyIHRvIEVOQUJMRSBvciBESVNBQkxFLiAqLworCisgIEZ1bmN0aW9uYWxTdGF0ZSBDQU5fUkZMTTsgIC8qITwgRW5hYmxlIG9yIGRpc2FibGUgdGhlIFJlY2VpdmUgRklGTyBMb2NrZWQgbW9kZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgc2V0IGVpdGhlciB0byBFTkFCTEUgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgRElTQUJMRS4gKi8KKworICBGdW5jdGlvbmFsU3RhdGUgQ0FOX1RYRlA7ICAvKiE8IEVuYWJsZSBvciBkaXNhYmxlIHRoZSB0cmFuc21pdCBGSUZPIHByaW9yaXR5LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBzZXQgZWl0aGVyIHRvIEVOQUJMRSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciBESVNBQkxFLiAqLworfSBDQU5fSW5pdFR5cGVEZWY7CisKKy8qKiAKKyAgKiBAYnJpZWYgIENBTiBmaWx0ZXIgaW5pdCBzdHJ1Y3R1cmUgZGVmaW5pdGlvbgorICAqLworCit0eXBlZGVmIHN0cnVjdAoreworICB1aW50MTZfdCBDQU5fRmlsdGVySWRIaWdoOyAgICAgICAgIC8qITwgU3BlY2lmaWVzIHRoZSBmaWx0ZXIgaWRlbnRpZmljYXRpb24gbnVtYmVyIChNU0JzIGZvciBhIDMyLWJpdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24sIGZpcnN0IG9uZSBmb3IgYSAxNi1iaXQgY29uZmlndXJhdGlvbikuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgYmV0d2VlbiAweDAwMDAgYW5kIDB4RkZGRiAqLworCisgIHVpbnQxNl90IENBTl9GaWx0ZXJJZExvdzsgICAgICAgICAgLyohPCBTcGVjaWZpZXMgdGhlIGZpbHRlciBpZGVudGlmaWNhdGlvbiBudW1iZXIgKExTQnMgZm9yIGEgMzItYml0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiwgc2Vjb25kIG9uZSBmb3IgYSAxNi1iaXQgY29uZmlndXJhdGlvbikuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgYmV0d2VlbiAweDAwMDAgYW5kIDB4RkZGRiAqLworCisgIHVpbnQxNl90IENBTl9GaWx0ZXJNYXNrSWRIaWdoOyAgICAgLyohPCBTcGVjaWZpZXMgdGhlIGZpbHRlciBtYXNrIG51bWJlciBvciBpZGVudGlmaWNhdGlvbiBudW1iZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjb3JkaW5nIHRvIHRoZSBtb2RlIChNU0JzIGZvciBhIDMyLWJpdCBjb25maWd1cmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0IG9uZSBmb3IgYSAxNi1iaXQgY29uZmlndXJhdGlvbikuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgYmV0d2VlbiAweDAwMDAgYW5kIDB4RkZGRiAqLworCisgIHVpbnQxNl90IENBTl9GaWx0ZXJNYXNrSWRMb3c7ICAgICAgLyohPCBTcGVjaWZpZXMgdGhlIGZpbHRlciBtYXNrIG51bWJlciBvciBpZGVudGlmaWNhdGlvbiBudW1iZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjb3JkaW5nIHRvIHRoZSBtb2RlIChMU0JzIGZvciBhIDMyLWJpdCBjb25maWd1cmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY29uZCBvbmUgZm9yIGEgMTYtYml0IGNvbmZpZ3VyYXRpb24pLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIGJldHdlZW4gMHgwMDAwIGFuZCAweEZGRkYgKi8KKworICB1aW50MTZfdCBDQU5fRmlsdGVyRklGT0Fzc2lnbm1lbnQ7IC8qITwgU3BlY2lmaWVzIHRoZSBGSUZPICgwIG9yIDEpIHdoaWNoIHdpbGwgYmUgYXNzaWduZWQgdG8gdGhlIGZpbHRlci4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIENBTl9maWx0ZXJfRklGTyAqLworICAKKyAgdWludDhfdCBDQU5fRmlsdGVyTnVtYmVyOyAgICAgICAgICAvKiE8IFNwZWNpZmllcyB0aGUgZmlsdGVyIHdoaWNoIHdpbGwgYmUgaW5pdGlhbGl6ZWQuIEl0IHJhbmdlcyBmcm9tIDAgdG8gMTMuICovCisKKyAgdWludDhfdCBDQU5fRmlsdGVyTW9kZTsgICAgICAgICAgICAvKiE8IFNwZWNpZmllcyB0aGUgZmlsdGVyIG1vZGUgdG8gYmUgaW5pdGlhbGl6ZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBDQU5fZmlsdGVyX21vZGUgKi8KKworICB1aW50OF90IENBTl9GaWx0ZXJTY2FsZTsgICAgICAgICAgIC8qITwgU3BlY2lmaWVzIHRoZSBmaWx0ZXIgc2NhbGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBDQU5fZmlsdGVyX3NjYWxlICovCisKKyAgRnVuY3Rpb25hbFN0YXRlIENBTl9GaWx0ZXJBY3RpdmF0aW9uOyAvKiE8IEVuYWJsZSBvciBkaXNhYmxlIHRoZSBmaWx0ZXIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIHNldCBlaXRoZXIgdG8gRU5BQkxFIG9yIERJU0FCTEUuICovCit9IENBTl9GaWx0ZXJJbml0VHlwZURlZjsKKworLyoqIAorICAqIEBicmllZiAgQ0FOIFR4IG1lc3NhZ2Ugc3RydWN0dXJlIGRlZmluaXRpb24gIAorICAqLworCit0eXBlZGVmIHN0cnVjdAoreworICB1aW50MzJfdCBTdGRJZDsgIC8qITwgU3BlY2lmaWVzIHRoZSBzdGFuZGFyZCBpZGVudGlmaWVyLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgYmV0d2VlbiAwIHRvIDB4N0ZGLiAqLworCisgIHVpbnQzMl90IEV4dElkOyAgLyohPCBTcGVjaWZpZXMgdGhlIGV4dGVuZGVkIGlkZW50aWZpZXIuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBiZXR3ZWVuIDAgdG8gMHgxRkZGRkZGRi4gKi8KKworICB1aW50OF90IElERTsgICAgIC8qITwgU3BlY2lmaWVzIHRoZSB0eXBlIG9mIGlkZW50aWZpZXIgZm9yIHRoZSBtZXNzYWdlIHRoYXQgCisgICAgICAgICAgICAgICAgICAgICAgICB3aWxsIGJlIHRyYW5zbWl0dGVkLiBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSAKKyAgICAgICAgICAgICAgICAgICAgICAgIG9mIEByZWYgQ0FOX2lkZW50aWZpZXJfdHlwZSAqLworCisgIHVpbnQ4X3QgUlRSOyAgICAgLyohPCBTcGVjaWZpZXMgdGhlIHR5cGUgb2YgZnJhbWUgZm9yIHRoZSBtZXNzYWdlIHRoYXQgd2lsbCAKKyAgICAgICAgICAgICAgICAgICAgICAgIGJlIHRyYW5zbWl0dGVkLiBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiAKKyAgICAgICAgICAgICAgICAgICAgICAgIEByZWYgQ0FOX3JlbW90ZV90cmFuc21pc3Npb25fcmVxdWVzdCAqLworCisgIHVpbnQ4X3QgRExDOyAgICAgLyohPCBTcGVjaWZpZXMgdGhlIGxlbmd0aCBvZiB0aGUgZnJhbWUgdGhhdCB3aWxsIGJlIAorICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNtaXR0ZWQuIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIGJldHdlZW4gCisgICAgICAgICAgICAgICAgICAgICAgICAwIHRvIDggKi8KKworICB1aW50OF90IERhdGFbOF07IC8qITwgQ29udGFpbnMgdGhlIGRhdGEgdG8gYmUgdHJhbnNtaXR0ZWQuIEl0IHJhbmdlcyBmcm9tIDAgCisgICAgICAgICAgICAgICAgICAgICAgICB0byAweEZGLiAqLworfSBDYW5UeE1zZzsKKworLyoqIAorICAqIEBicmllZiAgQ0FOIFJ4IG1lc3NhZ2Ugc3RydWN0dXJlIGRlZmluaXRpb24gIAorICAqLworCit0eXBlZGVmIHN0cnVjdAoreworICB1aW50MzJfdCBTdGRJZDsgIC8qITwgU3BlY2lmaWVzIHRoZSBzdGFuZGFyZCBpZGVudGlmaWVyLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgYmV0d2VlbiAwIHRvIDB4N0ZGLiAqLworCisgIHVpbnQzMl90IEV4dElkOyAgLyohPCBTcGVjaWZpZXMgdGhlIGV4dGVuZGVkIGlkZW50aWZpZXIuCisgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBiZXR3ZWVuIDAgdG8gMHgxRkZGRkZGRi4gKi8KKworICB1aW50OF90IElERTsgICAgIC8qITwgU3BlY2lmaWVzIHRoZSB0eXBlIG9mIGlkZW50aWZpZXIgZm9yIHRoZSBtZXNzYWdlIHRoYXQgCisgICAgICAgICAgICAgICAgICAgICAgICB3aWxsIGJlIHJlY2VpdmVkLiBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiAKKyAgICAgICAgICAgICAgICAgICAgICAgIEByZWYgQ0FOX2lkZW50aWZpZXJfdHlwZSAqLworCisgIHVpbnQ4X3QgUlRSOyAgICAgLyohPCBTcGVjaWZpZXMgdGhlIHR5cGUgb2YgZnJhbWUgZm9yIHRoZSByZWNlaXZlZCBtZXNzYWdlLgorICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgCisgICAgICAgICAgICAgICAgICAgICAgICBAcmVmIENBTl9yZW1vdGVfdHJhbnNtaXNzaW9uX3JlcXVlc3QgKi8KKworICB1aW50OF90IERMQzsgICAgIC8qITwgU3BlY2lmaWVzIHRoZSBsZW5ndGggb2YgdGhlIGZyYW1lIHRoYXQgd2lsbCBiZSByZWNlaXZlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIGJldHdlZW4gMCB0byA4ICovCisKKyAgdWludDhfdCBEYXRhWzhdOyAvKiE8IENvbnRhaW5zIHRoZSBkYXRhIHRvIGJlIHJlY2VpdmVkLiBJdCByYW5nZXMgZnJvbSAwIHRvIAorICAgICAgICAgICAgICAgICAgICAgICAgMHhGRi4gKi8KKworICB1aW50OF90IEZNSTsgICAgIC8qITwgU3BlY2lmaWVzIHRoZSBpbmRleCBvZiB0aGUgZmlsdGVyIHRoZSBtZXNzYWdlIHN0b3JlZCBpbiAKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBtYWlsYm94IHBhc3NlcyB0aHJvdWdoLiBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSAKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlIGJldHdlZW4gMCB0byAweEZGICovCit9IENhblJ4TXNnOworCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIENBTl9FeHBvcnRlZF9Db25zdGFudHMKKyAgKiBAeworICAqLworCisvKiogQGRlZmdyb3VwIENBTl9zbGVlcF9jb25zdGFudHMgCisgICogQHsKKyAgKi8KKworI2RlZmluZSBDQU5fSW5pdFN0YXR1c19GYWlsZWQgICAgICAgICAgICAgICgodWludDhfdCkweDAwKSAvKiE8IENBTiBpbml0aWFsaXphdGlvbiBmYWlsZWQgKi8KKyNkZWZpbmUgQ0FOX0luaXRTdGF0dXNfU3VjY2VzcyAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwMSkgLyohPCBDQU4gaW5pdGlhbGl6YXRpb24gT0sgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBDQU5fTW9kZSAKKyAgKiBAeworICAqLworCisjZGVmaW5lIENBTl9Nb2RlX05vcm1hbCAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwMCkgIC8qITwgbm9ybWFsIG1vZGUgKi8KKyNkZWZpbmUgQ0FOX01vZGVfTG9vcEJhY2sgICAgICAgICAgICgodWludDhfdCkweDAxKSAgLyohPCBsb29wYmFjayBtb2RlICovCisjZGVmaW5lIENBTl9Nb2RlX1NpbGVudCAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwMikgIC8qITwgc2lsZW50IG1vZGUgKi8KKyNkZWZpbmUgQ0FOX01vZGVfU2lsZW50X0xvb3BCYWNrICAgICgodWludDhfdCkweDAzKSAgLyohPCBsb29wYmFjayBjb21iaW5lZCB3aXRoIHNpbGVudCBtb2RlICovCisKKyNkZWZpbmUgSVNfQ0FOX01PREUoTU9ERSkgKCgoTU9ERSkgPT0gQ0FOX01vZGVfTm9ybWFsKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE1PREUpID09IENBTl9Nb2RlX0xvb3BCYWNrKXx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTU9ERSkgPT0gQ0FOX01vZGVfU2lsZW50KSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE1PREUpID09IENBTl9Nb2RlX1NpbGVudF9Mb29wQmFjaykpCisvKioKKyAgKiBAfQorICAqLworCisKKy8qKgorICAqIEBkZWZncm91cCBDQU5fT3BlcmF0aW5nX01vZGUgCisgICogQHsKKyAgKi8gIAorI2RlZmluZSBDQU5fT3BlcmF0aW5nTW9kZV9Jbml0aWFsaXphdGlvbiAgKCh1aW50OF90KTB4MDApIC8qITwgSW5pdGlhbGl6YXRpb24gbW9kZSAqLworI2RlZmluZSBDQU5fT3BlcmF0aW5nTW9kZV9Ob3JtYWwgICAgICAgICAgKCh1aW50OF90KTB4MDEpIC8qITwgTm9ybWFsIG1vZGUgKi8KKyNkZWZpbmUgQ0FOX09wZXJhdGluZ01vZGVfU2xlZXAgICAgICAgICAgICgodWludDhfdCkweDAyKSAvKiE8IHNsZWVwIG1vZGUgKi8KKworCisjZGVmaW5lIElTX0NBTl9PUEVSQVRJTkdfTU9ERShNT0RFKSAoKChNT0RFKSA9PSBDQU5fT3BlcmF0aW5nTW9kZV9Jbml0aWFsaXphdGlvbikgfHxcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE1PREUpID09IENBTl9PcGVyYXRpbmdNb2RlX05vcm1hbCl8fCBcCisJCQkJCQkJCQkJCQkJCQkJCQkoKE1PREUpID09IENBTl9PcGVyYXRpbmdNb2RlX1NsZWVwKSkKKy8qKgorICAqIEB9CisgICovCisgIAorLyoqCisgICogQGRlZmdyb3VwIENBTl9Nb2RlX1N0YXR1cworICAqIEB7CisgICovICAKKworI2RlZmluZSBDQU5fTW9kZVN0YXR1c19GYWlsZWQgICAgKCh1aW50OF90KTB4MDApICAgICAgICAgICAgICAgIC8qITwgQ0FOIGVudGVyaW5nIHRoZSBzcGVjaWZpYyBtb2RlIGZhaWxlZCAqLworI2RlZmluZSBDQU5fTW9kZVN0YXR1c19TdWNjZXNzICAgKCh1aW50OF90KSFDQU5fTW9kZVN0YXR1c19GYWlsZWQpICAgLyohPCBDQU4gZW50ZXJpbmcgdGhlIHNwZWNpZmljIG1vZGUgU3VjY2VlZCAqLworCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgQ0FOX3N5bmNocm9uaXNhdGlvbl9qdW1wX3dpZHRoIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgQ0FOX1NKV18xdHEgICAgICAgICAgICAgICAgICgodWludDhfdCkweDAwKSAgLyohPCAxIHRpbWUgcXVhbnR1bSAqLworI2RlZmluZSBDQU5fU0pXXzJ0cSAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MDEpICAvKiE8IDIgdGltZSBxdWFudHVtICovCisjZGVmaW5lIENBTl9TSldfM3RxICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwMikgIC8qITwgMyB0aW1lIHF1YW50dW0gKi8KKyNkZWZpbmUgQ0FOX1NKV180dHEgICAgICAgICAgICAgICAgICgodWludDhfdCkweDAzKSAgLyohPCA0IHRpbWUgcXVhbnR1bSAqLworCisjZGVmaW5lIElTX0NBTl9TSlcoU0pXKSAoKChTSlcpID09IENBTl9TSldfMXRxKSB8fCAoKFNKVykgPT0gQ0FOX1NKV18ydHEpfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICgoU0pXKSA9PSBDQU5fU0pXXzN0cSkgfHwgKChTSlcpID09IENBTl9TSldfNHRxKSkKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgQ0FOX3RpbWVfcXVhbnR1bV9pbl9iaXRfc2VnbWVudF8xIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgQ0FOX0JTMV8xdHEgICAgICAgICAgICAgICAgICgodWludDhfdCkweDAwKSAgLyohPCAxIHRpbWUgcXVhbnR1bSAqLworI2RlZmluZSBDQU5fQlMxXzJ0cSAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MDEpICAvKiE8IDIgdGltZSBxdWFudHVtICovCisjZGVmaW5lIENBTl9CUzFfM3RxICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwMikgIC8qITwgMyB0aW1lIHF1YW50dW0gKi8KKyNkZWZpbmUgQ0FOX0JTMV80dHEgICAgICAgICAgICAgICAgICgodWludDhfdCkweDAzKSAgLyohPCA0IHRpbWUgcXVhbnR1bSAqLworI2RlZmluZSBDQU5fQlMxXzV0cSAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MDQpICAvKiE8IDUgdGltZSBxdWFudHVtICovCisjZGVmaW5lIENBTl9CUzFfNnRxICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwNSkgIC8qITwgNiB0aW1lIHF1YW50dW0gKi8KKyNkZWZpbmUgQ0FOX0JTMV83dHEgICAgICAgICAgICAgICAgICgodWludDhfdCkweDA2KSAgLyohPCA3IHRpbWUgcXVhbnR1bSAqLworI2RlZmluZSBDQU5fQlMxXzh0cSAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MDcpICAvKiE8IDggdGltZSBxdWFudHVtICovCisjZGVmaW5lIENBTl9CUzFfOXRxICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwOCkgIC8qITwgOSB0aW1lIHF1YW50dW0gKi8KKyNkZWZpbmUgQ0FOX0JTMV8xMHRxICAgICAgICAgICAgICAgICgodWludDhfdCkweDA5KSAgLyohPCAxMCB0aW1lIHF1YW50dW0gKi8KKyNkZWZpbmUgQ0FOX0JTMV8xMXRxICAgICAgICAgICAgICAgICgodWludDhfdCkweDBBKSAgLyohPCAxMSB0aW1lIHF1YW50dW0gKi8KKyNkZWZpbmUgQ0FOX0JTMV8xMnRxICAgICAgICAgICAgICAgICgodWludDhfdCkweDBCKSAgLyohPCAxMiB0aW1lIHF1YW50dW0gKi8KKyNkZWZpbmUgQ0FOX0JTMV8xM3RxICAgICAgICAgICAgICAgICgodWludDhfdCkweDBDKSAgLyohPCAxMyB0aW1lIHF1YW50dW0gKi8KKyNkZWZpbmUgQ0FOX0JTMV8xNHRxICAgICAgICAgICAgICAgICgodWludDhfdCkweDBEKSAgLyohPCAxNCB0aW1lIHF1YW50dW0gKi8KKyNkZWZpbmUgQ0FOX0JTMV8xNXRxICAgICAgICAgICAgICAgICgodWludDhfdCkweDBFKSAgLyohPCAxNSB0aW1lIHF1YW50dW0gKi8KKyNkZWZpbmUgQ0FOX0JTMV8xNnRxICAgICAgICAgICAgICAgICgodWludDhfdCkweDBGKSAgLyohPCAxNiB0aW1lIHF1YW50dW0gKi8KKworI2RlZmluZSBJU19DQU5fQlMxKEJTMSkgKChCUzEpIDw9IENBTl9CUzFfMTZ0cSkKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgQ0FOX3RpbWVfcXVhbnR1bV9pbl9iaXRfc2VnbWVudF8yIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgQ0FOX0JTMl8xdHEgICAgICAgICAgICAgICAgICgodWludDhfdCkweDAwKSAgLyohPCAxIHRpbWUgcXVhbnR1bSAqLworI2RlZmluZSBDQU5fQlMyXzJ0cSAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MDEpICAvKiE8IDIgdGltZSBxdWFudHVtICovCisjZGVmaW5lIENBTl9CUzJfM3RxICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwMikgIC8qITwgMyB0aW1lIHF1YW50dW0gKi8KKyNkZWZpbmUgQ0FOX0JTMl80dHEgICAgICAgICAgICAgICAgICgodWludDhfdCkweDAzKSAgLyohPCA0IHRpbWUgcXVhbnR1bSAqLworI2RlZmluZSBDQU5fQlMyXzV0cSAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MDQpICAvKiE8IDUgdGltZSBxdWFudHVtICovCisjZGVmaW5lIENBTl9CUzJfNnRxICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwNSkgIC8qITwgNiB0aW1lIHF1YW50dW0gKi8KKyNkZWZpbmUgQ0FOX0JTMl83dHEgICAgICAgICAgICAgICAgICgodWludDhfdCkweDA2KSAgLyohPCA3IHRpbWUgcXVhbnR1bSAqLworI2RlZmluZSBDQU5fQlMyXzh0cSAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MDcpICAvKiE8IDggdGltZSBxdWFudHVtICovCisKKyNkZWZpbmUgSVNfQ0FOX0JTMihCUzIpICgoQlMyKSA8PSBDQU5fQlMyXzh0cSkKKworLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBDQU5fY2xvY2tfcHJlc2NhbGVyIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgSVNfQ0FOX1BSRVNDQUxFUihQUkVTQ0FMRVIpICgoKFBSRVNDQUxFUikgPj0gMSkgJiYgKChQUkVTQ0FMRVIpIDw9IDEwMjQpKQorCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIENBTl9maWx0ZXJfbnVtYmVyIAorICAqIEB7CisgICovCisjaWZuZGVmIFNUTTMyRjEwWF9DTAorICAjZGVmaW5lIElTX0NBTl9GSUxURVJfTlVNQkVSKE5VTUJFUikgKChOVU1CRVIpIDw9IDEzKQorI2Vsc2UKKyAgI2RlZmluZSBJU19DQU5fRklMVEVSX05VTUJFUihOVU1CRVIpICgoTlVNQkVSKSA8PSAyNykKKyNlbmRpZiAvKiBTVE0zMkYxMFhfQ0wgKi8gCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIENBTl9maWx0ZXJfbW9kZSAKKyAgKiBAeworICAqLworCisjZGVmaW5lIENBTl9GaWx0ZXJNb2RlX0lkTWFzayAgICAgICAoKHVpbnQ4X3QpMHgwMCkgIC8qITwgaWRlbnRpZmllci9tYXNrIG1vZGUgKi8KKyNkZWZpbmUgQ0FOX0ZpbHRlck1vZGVfSWRMaXN0ICAgICAgICgodWludDhfdCkweDAxKSAgLyohPCBpZGVudGlmaWVyIGxpc3QgbW9kZSAqLworCisjZGVmaW5lIElTX0NBTl9GSUxURVJfTU9ERShNT0RFKSAoKChNT0RFKSA9PSBDQU5fRmlsdGVyTW9kZV9JZE1hc2spIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE1PREUpID09IENBTl9GaWx0ZXJNb2RlX0lkTGlzdCkpCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIENBTl9maWx0ZXJfc2NhbGUgCisgICogQHsKKyAgKi8KKworI2RlZmluZSBDQU5fRmlsdGVyU2NhbGVfMTZiaXQgICAgICAgKCh1aW50OF90KTB4MDApIC8qITwgVHdvIDE2LWJpdCBmaWx0ZXJzICovCisjZGVmaW5lIENBTl9GaWx0ZXJTY2FsZV8zMmJpdCAgICAgICAoKHVpbnQ4X3QpMHgwMSkgLyohPCBPbmUgMzItYml0IGZpbHRlciAqLworCisjZGVmaW5lIElTX0NBTl9GSUxURVJfU0NBTEUoU0NBTEUpICgoKFNDQUxFKSA9PSBDQU5fRmlsdGVyU2NhbGVfMTZiaXQpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoU0NBTEUpID09IENBTl9GaWx0ZXJTY2FsZV8zMmJpdCkpCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgQ0FOX2ZpbHRlcl9GSUZPCisgICogQHsKKyAgKi8KKworI2RlZmluZSBDQU5fRmlsdGVyX0ZJRk8wICAgICAgICAgICAgICgodWludDhfdCkweDAwKSAgLyohPCBGaWx0ZXIgRklGTyAwIGFzc2lnbm1lbnQgZm9yIGZpbHRlciB4ICovCisjZGVmaW5lIENBTl9GaWx0ZXJfRklGTzEgICAgICAgICAgICAgKCh1aW50OF90KTB4MDEpICAvKiE8IEZpbHRlciBGSUZPIDEgYXNzaWdubWVudCBmb3IgZmlsdGVyIHggKi8KKyNkZWZpbmUgSVNfQ0FOX0ZJTFRFUl9GSUZPKEZJRk8pICgoKEZJRk8pID09IENBTl9GaWx0ZXJGSUZPMCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRklGTykgPT0gQ0FOX0ZpbHRlckZJRk8xKSkKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgU3RhcnRfYmFua19maWx0ZXJfZm9yX3NsYXZlX0NBTiAKKyAgKiBAeworICAqLworI2RlZmluZSBJU19DQU5fQkFOS05VTUJFUihCQU5LTlVNQkVSKSAoKChCQU5LTlVNQkVSKSA+PSAxKSAmJiAoKEJBTktOVU1CRVIpIDw9IDI3KSkKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgQ0FOX1R4IAorICAqIEB7CisgICovCisKKyNkZWZpbmUgSVNfQ0FOX1RSQU5TTUlUTUFJTEJPWChUUkFOU01JVE1BSUxCT1gpICgoVFJBTlNNSVRNQUlMQk9YKSA8PSAoKHVpbnQ4X3QpMHgwMikpCisjZGVmaW5lIElTX0NBTl9TVERJRChTVERJRCkgICAoKFNURElEKSA8PSAoKHVpbnQzMl90KTB4N0ZGKSkKKyNkZWZpbmUgSVNfQ0FOX0VYVElEKEVYVElEKSAgICgoRVhUSUQpIDw9ICgodWludDMyX3QpMHgxRkZGRkZGRikpCisjZGVmaW5lIElTX0NBTl9ETEMoRExDKSAgICAgICAoKERMQykgPD0gKCh1aW50OF90KTB4MDgpKQorCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIENBTl9pZGVudGlmaWVyX3R5cGUgCisgICogQHsKKyAgKi8KKworI2RlZmluZSBDQU5fSWRfU3RhbmRhcmQgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAwKSAgLyohPCBTdGFuZGFyZCBJZCAqLworI2RlZmluZSBDQU5fSWRfRXh0ZW5kZWQgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgLyohPCBFeHRlbmRlZCBJZCAqLworI2RlZmluZSBJU19DQU5fSURUWVBFKElEVFlQRSkgKCgoSURUWVBFKSA9PSBDQU5fSWRfU3RhbmRhcmQpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKElEVFlQRSkgPT0gQ0FOX0lkX0V4dGVuZGVkKSkKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgQ0FOX3JlbW90ZV90cmFuc21pc3Npb25fcmVxdWVzdCAKKyAgKiBAeworICAqLworCisjZGVmaW5lIENBTl9SVFJfRGF0YSAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDApICAvKiE8IERhdGEgZnJhbWUgKi8KKyNkZWZpbmUgQ0FOX1JUUl9SZW1vdGUgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMikgIC8qITwgUmVtb3RlIGZyYW1lICovCisjZGVmaW5lIElTX0NBTl9SVFIoUlRSKSAoKChSVFIpID09IENBTl9SVFJfRGF0YSkgfHwgKChSVFIpID09IENBTl9SVFJfUmVtb3RlKSkKKworLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBDQU5fdHJhbnNtaXRfY29uc3RhbnRzIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgQ0FOX1R4U3RhdHVzX0ZhaWxlZCAgICAgICAgICgodWludDhfdCkweDAwKS8qITwgQ0FOIHRyYW5zbWlzc2lvbiBmYWlsZWQgKi8KKyNkZWZpbmUgQ0FOX1R4U3RhdHVzX09rICAgICAgICAgICAgICgodWludDhfdCkweDAxKSAvKiE8IENBTiB0cmFuc21pc3Npb24gc3VjY2VlZGVkICovCisjZGVmaW5lIENBTl9UeFN0YXR1c19QZW5kaW5nICAgICAgICAoKHVpbnQ4X3QpMHgwMikgLyohPCBDQU4gdHJhbnNtaXNzaW9uIHBlbmRpbmcgKi8KKyNkZWZpbmUgQ0FOX1R4U3RhdHVzX05vTWFpbEJveCAgICAgICgodWludDhfdCkweDA0KSAvKiE8IENBTiBjZWxsIGRpZCBub3QgcHJvdmlkZSBhbiBlbXB0eSBtYWlsYm94ICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgQ0FOX3JlY2VpdmVfRklGT19udW1iZXJfY29uc3RhbnRzIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgQ0FOX0ZJRk8wICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwMCkgLyohPCBDQU4gRklGTyAwIHVzZWQgdG8gcmVjZWl2ZSAqLworI2RlZmluZSBDQU5fRklGTzEgICAgICAgICAgICAgICAgICgodWludDhfdCkweDAxKSAvKiE8IENBTiBGSUZPIDEgdXNlZCB0byByZWNlaXZlICovCisKKyNkZWZpbmUgSVNfQ0FOX0ZJRk8oRklGTykgKCgoRklGTykgPT0gQ0FOX0ZJRk8wKSB8fCAoKEZJRk8pID09IENBTl9GSUZPMSkpCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgQ0FOX3NsZWVwX2NvbnN0YW50cyAKKyAgKiBAeworICAqLworCisjZGVmaW5lIENBTl9TbGVlcF9GYWlsZWQgICAgICgodWludDhfdCkweDAwKSAvKiE8IENBTiBkaWQgbm90IGVudGVyIHRoZSBzbGVlcCBtb2RlICovCisjZGVmaW5lIENBTl9TbGVlcF9PayAgICAgICAgICgodWludDhfdCkweDAxKSAvKiE8IENBTiBlbnRlcmVkIHRoZSBzbGVlcCBtb2RlICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgQ0FOX3dha2VfdXBfY29uc3RhbnRzIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgQ0FOX1dha2VVcF9GYWlsZWQgICAgICAgICgodWludDhfdCkweDAwKSAvKiE8IENBTiBkaWQgbm90IGxlYXZlIHRoZSBzbGVlcCBtb2RlICovCisjZGVmaW5lIENBTl9XYWtlVXBfT2sgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwMSkgLyohPCBDQU4gbGVhdmVkIHRoZSBzbGVlcCBtb2RlICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKgorICAqIEBkZWZncm91cCAgIENBTl9FcnJvcl9Db2RlX2NvbnN0YW50cworICAqIEB7CisgICovICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyNkZWZpbmUgQ0FOX0Vycm9yQ29kZV9Ob0VyciAgICAgICAgICAgKCh1aW50OF90KTB4MDApIC8qITwgTm8gRXJyb3IgKi8gCisjZGVmaW5lCUNBTl9FcnJvckNvZGVfU3R1ZmZFcnIgICAgICAgICgodWludDhfdCkweDEwKSAvKiE8IFN0dWZmIEVycm9yICovIAorI2RlZmluZQlDQU5fRXJyb3JDb2RlX0Zvcm1FcnIgICAgICAgICAoKHVpbnQ4X3QpMHgyMCkgLyohPCBGb3JtIEVycm9yICovIAorI2RlZmluZQlDQU5fRXJyb3JDb2RlX0FDS0VyciAgICAgICAgICAoKHVpbnQ4X3QpMHgzMCkgLyohPCBBY2tub3dsZWRnbWVudCBFcnJvciAqLyAKKyNkZWZpbmUJQ0FOX0Vycm9yQ29kZV9CaXRSZWNlc3NpdmVFcnIgKCh1aW50OF90KTB4NDApIC8qITwgQml0IFJlY2Vzc2l2ZSBFcnJvciAqLyAKKyNkZWZpbmUJQ0FOX0Vycm9yQ29kZV9CaXREb21pbmFudEVyciAgKCh1aW50OF90KTB4NTApIC8qITwgQml0IERvbWluYW50IEVycm9yICovIAorI2RlZmluZQlDQU5fRXJyb3JDb2RlX0NSQ0VyciAgICAgICAgICAoKHVpbnQ4X3QpMHg2MCkgLyohPCBDUkMgRXJyb3IgICovIAorI2RlZmluZQlDQU5fRXJyb3JDb2RlX1NvZnR3YXJlU2V0RXJyICAoKHVpbnQ4X3QpMHg3MCkgLyohPCBTb2Z0d2FyZSBTZXQgRXJyb3IgKi8gCisKKworLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBDQU5fZmxhZ3MgCisgICogQHsKKyAgKi8KKy8qIElmIHRoZSBmbGFnIGlzIDB4M1hYWFhYWFgsIGl0IG1lYW5zIHRoYXQgaXQgY2FuIGJlIHVzZWQgd2l0aCBDQU5fR2V0RmxhZ1N0YXR1cygpCisgICBhbmQgQ0FOX0NsZWFyRmxhZygpIGZ1bmN0aW9ucy4gKi8KKy8qIElmIHRoZSBmbGFnIGlzIDB4MVhYWFhYWFgsIGl0IG1lYW5zIHRoYXQgaXQgY2FuIG9ubHkgYmUgdXNlZCB3aXRoIENBTl9HZXRGbGFnU3RhdHVzKCkgZnVuY3Rpb24uICAqLworCisvKiBUcmFuc21pdCBGbGFncyAqLworI2RlZmluZSBDQU5fRkxBR19SUUNQMCAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MzgwMDAwMDEpIC8qITwgUmVxdWVzdCBNYWlsQm94MCBGbGFnICovCisjZGVmaW5lIENBTl9GTEFHX1JRQ1AxICAgICAgICAgICAgICgodWludDMyX3QpMHgzODAwMDEwMCkgLyohPCBSZXF1ZXN0IE1haWxCb3gxIEZsYWcgKi8KKyNkZWZpbmUgQ0FOX0ZMQUdfUlFDUDIgICAgICAgICAgICAgKCh1aW50MzJfdCkweDM4MDEwMDAwKSAvKiE8IFJlcXVlc3QgTWFpbEJveDIgRmxhZyAqLworCisvKiBSZWNlaXZlIEZsYWdzICovCisjZGVmaW5lIENBTl9GTEFHX0ZNUDAgICAgICAgICAgICAgICgodWludDMyX3QpMHgxMjAwMDAwMykgLyohPCBGSUZPIDAgTWVzc2FnZSBQZW5kaW5nIEZsYWcgKi8KKyNkZWZpbmUgQ0FOX0ZMQUdfRkYwICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDMyMDAwMDA4KSAvKiE8IEZJRk8gMCBGdWxsIEZsYWcgICAgICAgICAgICAqLworI2RlZmluZSBDQU5fRkxBR19GT1YwICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MzIwMDAwMTApIC8qITwgRklGTyAwIE92ZXJydW4gRmxhZyAgICAgICAgICovCisjZGVmaW5lIENBTl9GTEFHX0ZNUDEgICAgICAgICAgICAgICgodWludDMyX3QpMHgxNDAwMDAwMykgLyohPCBGSUZPIDEgTWVzc2FnZSBQZW5kaW5nIEZsYWcgKi8KKyNkZWZpbmUgQ0FOX0ZMQUdfRkYxICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDM0MDAwMDA4KSAvKiE8IEZJRk8gMSBGdWxsIEZsYWcgICAgICAgICAgICAqLworI2RlZmluZSBDQU5fRkxBR19GT1YxICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MzQwMDAwMTApIC8qITwgRklGTyAxIE92ZXJydW4gRmxhZyAgICAgICAgICovCisKKy8qIE9wZXJhdGluZyBNb2RlIEZsYWdzICovCisjZGVmaW5lIENBTl9GTEFHX1dLVSAgICAgICAgICAgICAgICgodWludDMyX3QpMHgzMTAwMDAwOCkgLyohPCBXYWtlIHVwIEZsYWcgKi8KKyNkZWZpbmUgQ0FOX0ZMQUdfU0xBSyAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDMxMDAwMDEyKSAvKiE8IFNsZWVwIGFja25vd2xlZGdlIEZsYWcgKi8KKy8qIE5vdGU6IFdoZW4gU0xBSyBpbnR0ZXJ1cHQgaXMgZGlzYWJsZWQgKFNMS0lFPTApLCBubyBwb2xsaW5nIG9uIFNMQUtJIGlzIHBvc3NpYmxlLiAKKyAgICAgICAgIEluIHRoaXMgY2FzZSB0aGUgU0xBSyBiaXQgY2FuIGJlIHBvbGxlZC4qLworCisvKiBFcnJvciBGbGFncyAqLworI2RlZmluZSBDQU5fRkxBR19FV0cgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTBGMDAwMDEpIC8qITwgRXJyb3IgV2FybmluZyBGbGFnICAgKi8KKyNkZWZpbmUgQ0FOX0ZMQUdfRVBWICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDEwRjAwMDAyKSAvKiE8IEVycm9yIFBhc3NpdmUgRmxhZyAgICovCisjZGVmaW5lIENBTl9GTEFHX0JPRiAgICAgICAgICAgICAgICgodWludDMyX3QpMHgxMEYwMDAwNCkgLyohPCBCdXMtT2ZmIEZsYWcgICAgICAgICAqLworI2RlZmluZSBDQU5fRkxBR19MRUMgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MzBGMDAwNzApIC8qITwgTGFzdCBlcnJvciBjb2RlIEZsYWcgKi8KKworI2RlZmluZSBJU19DQU5fR0VUX0ZMQUcoRkxBRykgKCgoRkxBRykgPT0gQ0FOX0ZMQUdfTEVDKSAgfHwgKChGTEFHKSA9PSBDQU5fRkxBR19CT0YpICAgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRkxBRykgPT0gQ0FOX0ZMQUdfRVBWKSAgfHwgKChGTEFHKSA9PSBDQU5fRkxBR19FV0cpICAgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRkxBRykgPT0gQ0FOX0ZMQUdfV0tVKSAgfHwgKChGTEFHKSA9PSBDQU5fRkxBR19GT1YwKSAgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRkxBRykgPT0gQ0FOX0ZMQUdfRkYwKSAgfHwgKChGTEFHKSA9PSBDQU5fRkxBR19GTVAwKSAgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRkxBRykgPT0gQ0FOX0ZMQUdfRk9WMSkgfHwgKChGTEFHKSA9PSBDQU5fRkxBR19GRjEpICAgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRkxBRykgPT0gQ0FOX0ZMQUdfRk1QMSkgfHwgKChGTEFHKSA9PSBDQU5fRkxBR19SUUNQMikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRkxBRykgPT0gQ0FOX0ZMQUdfUlFDUDEpfHwgKChGTEFHKSA9PSBDQU5fRkxBR19SUUNQMCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRkxBRykgPT0gQ0FOX0ZMQUdfU0xBSyApKQorCisjZGVmaW5lIElTX0NBTl9DTEVBUl9GTEFHKEZMQUcpKCgoRkxBRykgPT0gQ0FOX0ZMQUdfTEVDKSB8fCAoKEZMQUcpID09IENBTl9GTEFHX1JRQ1AyKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRkxBRykgPT0gQ0FOX0ZMQUdfUlFDUDEpICB8fCAoKEZMQUcpID09IENBTl9GTEFHX1JRQ1AwKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRkxBRykgPT0gQ0FOX0ZMQUdfRkYwKSAgfHwgKChGTEFHKSA9PSBDQU5fRkxBR19GT1YwKSB8fFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChGTEFHKSA9PSBDQU5fRkxBR19GRjEpIHx8ICgoRkxBRykgPT0gQ0FOX0ZMQUdfRk9WMSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEZMQUcpID09IENBTl9GTEFHX1dLVSkgfHwgKChGTEFHKSA9PSBDQU5fRkxBR19TTEFLKSkKKy8qKgorICAqIEB9CisgICovCisKKyAgCisvKiogQGRlZmdyb3VwIENBTl9pbnRlcnJ1cHRzIAorICAqIEB7CisgICovCisKKworICAKKyNkZWZpbmUgQ0FOX0lUX1RNRSAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgLyohPCBUcmFuc21pdCBtYWlsYm94IGVtcHR5IEludGVycnVwdCovCisKKy8qIFJlY2VpdmUgSW50ZXJydXB0cyAqLworI2RlZmluZSBDQU5fSVRfRk1QMCAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAyKSAvKiE8IEZJRk8gMCBtZXNzYWdlIHBlbmRpbmcgSW50ZXJydXB0Ki8KKyNkZWZpbmUgQ0FOX0lUX0ZGMCAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNCkgLyohPCBGSUZPIDAgZnVsbCBJbnRlcnJ1cHQqLworI2RlZmluZSBDQU5fSVRfRk9WMCAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA4KSAvKiE8IEZJRk8gMCBvdmVycnVuIEludGVycnVwdCovCisjZGVmaW5lIENBTl9JVF9GTVAxICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApIC8qITwgRklGTyAxIG1lc3NhZ2UgcGVuZGluZyBJbnRlcnJ1cHQqLworI2RlZmluZSBDQU5fSVRfRkYxICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKSAvKiE8IEZJRk8gMSBmdWxsIEludGVycnVwdCovCisjZGVmaW5lIENBTl9JVF9GT1YxICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwNDApIC8qITwgRklGTyAxIG92ZXJydW4gSW50ZXJydXB0Ki8KKworLyogT3BlcmF0aW5nIE1vZGUgSW50ZXJydXB0cyAqLworI2RlZmluZSBDQU5fSVRfV0tVICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDEwMDAwKSAvKiE8IFdha2UtdXAgSW50ZXJydXB0Ki8KKyNkZWZpbmUgQ0FOX0lUX1NMSyAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkgLyohPCBTbGVlcCBhY2tub3dsZWRnZSBJbnRlcnJ1cHQqLworCisvKiBFcnJvciBJbnRlcnJ1cHRzICovCisjZGVmaW5lIENBTl9JVF9FV0cgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAxMDApIC8qITwgRXJyb3Igd2FybmluZyBJbnRlcnJ1cHQqLworI2RlZmluZSBDQU5fSVRfRVBWICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMjAwKSAvKiE8IEVycm9yIHBhc3NpdmUgSW50ZXJydXB0Ki8KKyNkZWZpbmUgQ0FOX0lUX0JPRiAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDQwMCkgLyohPCBCdXMtb2ZmIEludGVycnVwdCovCisjZGVmaW5lIENBTl9JVF9MRUMgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA4MDApIC8qITwgTGFzdCBlcnJvciBjb2RlIEludGVycnVwdCovCisjZGVmaW5lIENBTl9JVF9FUlIgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDgwMDApIC8qITwgRXJyb3IgSW50ZXJydXB0Ki8KKworLyogRmxhZ3MgbmFtZWQgYXMgSW50ZXJydXB0cyA6IGtlcHQgb25seSBmb3IgRlcgY29tcGF0aWJpbGl0eSAqLworI2RlZmluZSBDQU5fSVRfUlFDUDAgICBDQU5fSVRfVE1FCisjZGVmaW5lIENBTl9JVF9SUUNQMSAgIENBTl9JVF9UTUUKKyNkZWZpbmUgQ0FOX0lUX1JRQ1AyICAgQ0FOX0lUX1RNRQorCisKKyNkZWZpbmUgSVNfQ0FOX0lUKElUKSAgICAgICAgKCgoSVQpID09IENBTl9JVF9UTUUpIHx8ICgoSVQpID09IENBTl9JVF9GTVAwKSAgfHxcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoSVQpID09IENBTl9JVF9GRjApICB8fCAoKElUKSA9PSBDQU5fSVRfRk9WMCkgIHx8XAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKElUKSA9PSBDQU5fSVRfRk1QMSkgfHwgKChJVCkgPT0gQ0FOX0lUX0ZGMSkgICB8fFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJVCkgPT0gQ0FOX0lUX0ZPVjEpIHx8ICgoSVQpID09IENBTl9JVF9FV0cpICAgfHxcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoSVQpID09IENBTl9JVF9FUFYpICB8fCAoKElUKSA9PSBDQU5fSVRfQk9GKSAgIHx8XAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKElUKSA9PSBDQU5fSVRfTEVDKSAgfHwgKChJVCkgPT0gQ0FOX0lUX0VSUikgICB8fFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJVCkgPT0gQ0FOX0lUX1dLVSkgIHx8ICgoSVQpID09IENBTl9JVF9TTEspKQorCisjZGVmaW5lIElTX0NBTl9DTEVBUl9JVChJVCkgKCgoSVQpID09IENBTl9JVF9UTUUpIHx8ICgoSVQpID09IENBTl9JVF9GRjApICAgIHx8XAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKElUKSA9PSBDQU5fSVRfRk9WMCl8fCAoKElUKSA9PSBDQU5fSVRfRkYxKSAgICB8fFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJVCkgPT0gQ0FOX0lUX0ZPVjEpfHwgKChJVCkgPT0gQ0FOX0lUX0VXRykgICAgfHxcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoSVQpID09IENBTl9JVF9FUFYpIHx8ICgoSVQpID09IENBTl9JVF9CT0YpICAgIHx8XAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKElUKSA9PSBDQU5fSVRfTEVDKSB8fCAoKElUKSA9PSBDQU5fSVRfRVJSKSAgICB8fFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJVCkgPT0gQ0FOX0lUX1dLVSkgfHwgKChJVCkgPT0gQ0FOX0lUX1NMSykpCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgQ0FOX0xlZ2FjeSAKKyAgKiBAeworICAqLworI2RlZmluZSBDQU5JTklURkFJTEVEICAgICAgICAgICAgICAgQ0FOX0luaXRTdGF0dXNfRmFpbGVkCisjZGVmaW5lIENBTklOSVRPSyAgICAgICAgICAgICAgICAgICBDQU5fSW5pdFN0YXR1c19TdWNjZXNzCisjZGVmaW5lIENBTl9GaWx0ZXJGSUZPMCAgICAgICAgICAgICBDQU5fRmlsdGVyX0ZJRk8wCisjZGVmaW5lIENBTl9GaWx0ZXJGSUZPMSAgICAgICAgICAgICBDQU5fRmlsdGVyX0ZJRk8xCisjZGVmaW5lIENBTl9JRF9TVEQgICAgICAgICAgICAgICAgICBDQU5fSWRfU3RhbmRhcmQgICAgICAgICAgIAorI2RlZmluZSBDQU5fSURfRVhUICAgICAgICAgICAgICAgICAgQ0FOX0lkX0V4dGVuZGVkCisjZGVmaW5lIENBTl9SVFJfREFUQSAgICAgICAgICAgICAgICBDQU5fUlRSX0RhdGEgICAgICAgICAKKyNkZWZpbmUgQ0FOX1JUUl9SRU1PVEUgICAgICAgICAgICAgIENBTl9SVFJfUmVtb3RlCisjZGVmaW5lIENBTlRYRkFJTEUgICAgICAgICAgICAgICAgICBDQU5fVHhTdGF0dXNfRmFpbGVkCisjZGVmaW5lIENBTlRYT0sgICAgICAgICAgICAgICAgICAgICBDQU5fVHhTdGF0dXNfT2sKKyNkZWZpbmUgQ0FOVFhQRU5ESU5HICAgICAgICAgICAgICAgIENBTl9UeFN0YXR1c19QZW5kaW5nCisjZGVmaW5lIENBTl9OT19NQiAgICAgICAgICAgICAgICAgICBDQU5fVHhTdGF0dXNfTm9NYWlsQm94CisjZGVmaW5lIENBTlNMRUVQRkFJTEVEICAgICAgICAgICAgICBDQU5fU2xlZXBfRmFpbGVkCisjZGVmaW5lIENBTlNMRUVQT0sgICAgICAgICAgICAgICAgICBDQU5fU2xlZXBfT2sKKyNkZWZpbmUgQ0FOV0FLRVVQRkFJTEVEICAgICAgICAgICAgIENBTl9XYWtlVXBfRmFpbGVkICAgICAgICAKKyNkZWZpbmUgQ0FOV0FLRVVQT0sgICAgICAgICAgICAgICAgIENBTl9XYWtlVXBfT2sgICAgICAgIAorCisvKioKKyAgKiBAfQorICAqLworCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIENBTl9FeHBvcnRlZF9NYWNyb3MKKyAgKiBAeworICAqLworCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIENBTl9FeHBvcnRlZF9GdW5jdGlvbnMKKyAgKiBAeworICAqLworLyogIEZ1bmN0aW9uIHVzZWQgdG8gc2V0IHRoZSBDQU4gY29uZmlndXJhdGlvbiB0byB0aGUgZGVmYXVsdCByZXNldCBzdGF0ZSAqKioqKi8gCit2b2lkIENBTl9EZUluaXQoQ0FOX1R5cGVEZWYqIENBTngpOworCisvKiBJbml0aWFsaXphdGlvbiBhbmQgQ29uZmlndXJhdGlvbiBmdW5jdGlvbnMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLyAKK3VpbnQ4X3QgQ0FOX0luaXQoQ0FOX1R5cGVEZWYqIENBTngsIENBTl9Jbml0VHlwZURlZiogQ0FOX0luaXRTdHJ1Y3QpOwordm9pZCBDQU5fRmlsdGVySW5pdChDQU5fRmlsdGVySW5pdFR5cGVEZWYqIENBTl9GaWx0ZXJJbml0U3RydWN0KTsKK3ZvaWQgQ0FOX1N0cnVjdEluaXQoQ0FOX0luaXRUeXBlRGVmKiBDQU5fSW5pdFN0cnVjdCk7Cit2b2lkIENBTl9TbGF2ZVN0YXJ0QmFuayh1aW50OF90IENBTl9CYW5rTnVtYmVyKTsgCit2b2lkIENBTl9EQkdGcmVlemUoQ0FOX1R5cGVEZWYqIENBTngsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSk7Cit2b2lkIENBTl9UVENvbU1vZGVDbWQoQ0FOX1R5cGVEZWYqIENBTngsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSk7CisKKy8qIFRyYW5zbWl0IGZ1bmN0aW9ucyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCit1aW50OF90IENBTl9UcmFuc21pdChDQU5fVHlwZURlZiogQ0FOeCwgQ2FuVHhNc2cqIFR4TWVzc2FnZSk7Cit1aW50OF90IENBTl9UcmFuc21pdFN0YXR1cyhDQU5fVHlwZURlZiogQ0FOeCwgdWludDhfdCBUcmFuc21pdE1haWxib3gpOwordm9pZCBDQU5fQ2FuY2VsVHJhbnNtaXQoQ0FOX1R5cGVEZWYqIENBTngsIHVpbnQ4X3QgTWFpbGJveCk7CisKKy8qIFJlY2VpdmUgZnVuY3Rpb25zICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCit2b2lkIENBTl9SZWNlaXZlKENBTl9UeXBlRGVmKiBDQU54LCB1aW50OF90IEZJRk9OdW1iZXIsIENhblJ4TXNnKiBSeE1lc3NhZ2UpOwordm9pZCBDQU5fRklGT1JlbGVhc2UoQ0FOX1R5cGVEZWYqIENBTngsIHVpbnQ4X3QgRklGT051bWJlcik7Cit1aW50OF90IENBTl9NZXNzYWdlUGVuZGluZyhDQU5fVHlwZURlZiogQ0FOeCwgdWludDhfdCBGSUZPTnVtYmVyKTsKKworCisvKiBPcGVyYXRpb24gbW9kZXMgZnVuY3Rpb25zICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwordWludDhfdCBDQU5fT3BlcmF0aW5nTW9kZVJlcXVlc3QoQ0FOX1R5cGVEZWYqIENBTngsIHVpbnQ4X3QgQ0FOX09wZXJhdGluZ01vZGUpOwordWludDhfdCBDQU5fU2xlZXAoQ0FOX1R5cGVEZWYqIENBTngpOwordWludDhfdCBDQU5fV2FrZVVwKENBTl9UeXBlRGVmKiBDQU54KTsKKworLyogRXJyb3IgbWFuYWdlbWVudCBmdW5jdGlvbnMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3VpbnQ4X3QgQ0FOX0dldExhc3RFcnJvckNvZGUoQ0FOX1R5cGVEZWYqIENBTngpOwordWludDhfdCBDQU5fR2V0UmVjZWl2ZUVycm9yQ291bnRlcihDQU5fVHlwZURlZiogQ0FOeCk7Cit1aW50OF90IENBTl9HZXRMU0JUcmFuc21pdEVycm9yQ291bnRlcihDQU5fVHlwZURlZiogQ0FOeCk7CisKKy8qIEludGVycnVwdHMgYW5kIGZsYWdzIG1hbmFnZW1lbnQgZnVuY3Rpb25zICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCit2b2lkIENBTl9JVENvbmZpZyhDQU5fVHlwZURlZiogQ0FOeCwgdWludDMyX3QgQ0FOX0lULCBGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpOworRmxhZ1N0YXR1cyBDQU5fR2V0RmxhZ1N0YXR1cyhDQU5fVHlwZURlZiogQ0FOeCwgdWludDMyX3QgQ0FOX0ZMQUcpOwordm9pZCBDQU5fQ2xlYXJGbGFnKENBTl9UeXBlRGVmKiBDQU54LCB1aW50MzJfdCBDQU5fRkxBRyk7CitJVFN0YXR1cyBDQU5fR2V0SVRTdGF0dXMoQ0FOX1R5cGVEZWYqIENBTngsIHVpbnQzMl90IENBTl9JVCk7Cit2b2lkIENBTl9DbGVhcklUUGVuZGluZ0JpdChDQU5fVHlwZURlZiogQ0FOeCwgdWludDMyX3QgQ0FOX0lUKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8qIF9fU1RNMzJGMTB4X0NBTl9IICovCisvKioKKyAgKiBAfQorICAqLworCisvKioKKyAgKiBAfQorICAqLworCisvKioKKyAgKiBAfQorICAqLworCisvKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIDIwMTEgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvc3RfZndfbGliL2luYy9zdG0zMmYxMHhfY2VjLmggYi9zdF9md19saWIvaW5jL3N0bTMyZjEweF9jZWMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Y2U2ODk2Ci0tLSAvZGV2L251bGwKKysrIGIvc3RfZndfbGliL2luYy9zdG0zMmYxMHhfY2VjLmgKQEAgLTAsMCArMSwyMTAgQEAKKy8qKgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKiBAZmlsZSAgICBzdG0zMmYxMHhfY2VjLmgKKyAgKiBAYXV0aG9yICBNQ0QgQXBwbGljYXRpb24gVGVhbQorICAqIEB2ZXJzaW9uIFYzLjUuMAorICAqIEBkYXRlICAgIDExLU1hcmNoLTIwMTEKKyAgKiBAYnJpZWYgICBUaGlzIGZpbGUgY29udGFpbnMgYWxsIHRoZSBmdW5jdGlvbnMgcHJvdG90eXBlcyBmb3IgdGhlIENFQyBmaXJtd2FyZSAKKyAgKiAgICAgICAgICBsaWJyYXJ5LgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKiBAYXR0ZW50aW9uCisgICoKKyAgKiBUSEUgUFJFU0VOVCBGSVJNV0FSRSBXSElDSCBJUyBGT1IgR1VJREFOQ0UgT05MWSBBSU1TIEFUIFBST1ZJRElORyBDVVNUT01FUlMKKyAgKiBXSVRIIENPRElORyBJTkZPUk1BVElPTiBSRUdBUkRJTkcgVEhFSVIgUFJPRFVDVFMgSU4gT1JERVIgRk9SIFRIRU0gVE8gU0FWRQorICAqIFRJTUUuIEFTIEEgUkVTVUxULCBTVE1JQ1JPRUxFQ1RST05JQ1MgU0hBTEwgTk9UIEJFIEhFTEQgTElBQkxFIEZPUiBBTlkKKyAgKiBESVJFQ1QsIElORElSRUNUIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBXSVRIIFJFU1BFQ1QgVE8gQU5ZIENMQUlNUyBBUklTSU5HCisgICogRlJPTSBUSEUgQ09OVEVOVCBPRiBTVUNIIEZJUk1XQVJFIEFORC9PUiBUSEUgVVNFIE1BREUgQlkgQ1VTVE9NRVJTIE9GIFRIRQorICAqIENPRElORyBJTkZPUk1BVElPTiBDT05UQUlORUQgSEVSRUlOIElOIENPTk5FQ1RJT04gV0lUSCBUSEVJUiBQUk9EVUNUUy4KKyAgKgorICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDT1BZUklHSFQgMjAxMSBTVE1pY3JvZWxlY3Ryb25pY3M8L2NlbnRlcj48L2gyPgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKi8KKworLyogRGVmaW5lIHRvIHByZXZlbnQgcmVjdXJzaXZlIGluY2x1c2lvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyNpZm5kZWYgX19TVE0zMkYxMHhfQ0VDX0gKKyNkZWZpbmUgX19TVE0zMkYxMHhfQ0VDX0gKKworI2lmZGVmIF9fY3BsdXNwbHVzCisgZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLyogSW5jbHVkZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyNpbmNsdWRlICJzdG0zMmYxMHguaCIKKworLyoqIEBhZGR0b2dyb3VwIFNUTTMyRjEweF9TdGRQZXJpcGhfRHJpdmVyCisgICogQHsKKyAgKi8KKworLyoqIEBhZGR0b2dyb3VwIENFQworICAqIEB7CisgICovCisgIAorCisvKiogQGRlZmdyb3VwIENFQ19FeHBvcnRlZF9UeXBlcworICAqIEB7CisgICovCisgICAKKy8qKiAKKyAgKiBAYnJpZWYgIENFQyBJbml0IHN0cnVjdHVyZSBkZWZpbml0aW9uICAKKyAgKi8gCit0eXBlZGVmIHN0cnVjdAoreworICB1aW50MTZfdCBDRUNfQml0VGltaW5nTW9kZTsgLyohPCBDb25maWd1cmVzIHRoZSBDRUMgQml0IFRpbWluZyBFcnJvciBNb2RlLiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIENFQ19CaXRUaW1pbmdfTW9kZSAqLworICB1aW50MTZfdCBDRUNfQml0UGVyaW9kTW9kZTsgLyohPCBDb25maWd1cmVzIHRoZSBDRUMgQml0IFBlcmlvZCBFcnJvciBNb2RlLiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIENFQ19CaXRQZXJpb2RfTW9kZSAqLworfUNFQ19Jbml0VHlwZURlZjsKKworLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBDRUNfRXhwb3J0ZWRfQ29uc3RhbnRzCisgICogQHsKKyAgKi8gCisgIAorLyoqIEBkZWZncm91cCBDRUNfQml0VGltaW5nX01vZGUgCisgICogQHsKKyAgKi8gCisjZGVmaW5lIENFQ19CaXRUaW1pbmdTdGRNb2RlICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDApIC8qITwgQml0IHRpbWluZyBlcnJvciBTdGFuZGFyZCBNb2RlICovCisjZGVmaW5lIENFQ19CaXRUaW1pbmdFcnJGcmVlTW9kZSAgICAgICAgICAgICAgICBDRUNfQ0ZHUl9CVEVNICAgLyohPCBCaXQgdGltaW5nIGVycm9yIEZyZWUgTW9kZSAqLworCisjZGVmaW5lIElTX0NFQ19CSVRfVElNSU5HX0VSUk9SX01PREUoTU9ERSkgKCgoTU9ERSkgPT0gQ0VDX0JpdFRpbWluZ1N0ZE1vZGUpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChNT0RFKSA9PSBDRUNfQml0VGltaW5nRXJyRnJlZU1vZGUpKQorLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBDRUNfQml0UGVyaW9kX01vZGUgCisgICogQHsKKyAgKi8gCisjZGVmaW5lIENFQ19CaXRQZXJpb2RTdGRNb2RlICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDApIC8qITwgQml0IHBlcmlvZCBlcnJvciBTdGFuZGFyZCBNb2RlICovCisjZGVmaW5lIENFQ19CaXRQZXJpb2RGbGV4aWJsZU1vZGUgICAgICAgICAgICAgICAgQ0VDX0NGR1JfQlBFTSAgIC8qITwgQml0IHBlcmlvZCBlcnJvciBGbGV4aWJsZSBNb2RlICovCisKKyNkZWZpbmUgSVNfQ0VDX0JJVF9QRVJJT0RfRVJST1JfTU9ERShNT0RFKSAoKChNT0RFKSA9PSBDRUNfQml0UGVyaW9kU3RkTW9kZSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE1PREUpID09IENFQ19CaXRQZXJpb2RGbGV4aWJsZU1vZGUpKQorLyoqCisgICogQH0KKyAgKi8gCisKKworLyoqIEBkZWZncm91cCBDRUNfaW50ZXJydXB0c19kZWZpbml0aW9uIAorICAqIEB7CisgICovIAorI2RlZmluZSBDRUNfSVRfVEVSUiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENFQ19DU1JfVEVSUgorI2RlZmluZSBDRUNfSVRfVEJUUkYgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENFQ19DU1JfVEJUUkYKKyNkZWZpbmUgQ0VDX0lUX1JFUlIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDRUNfQ1NSX1JFUlIKKyNkZWZpbmUgQ0VDX0lUX1JCVEYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDRUNfQ1NSX1JCVEYKKyNkZWZpbmUgSVNfQ0VDX0dFVF9JVChJVCkgKCgoSVQpID09IENFQ19JVF9URVJSKSB8fCAoKElUKSA9PSBDRUNfSVRfVEJUUkYpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgoSVQpID09IENFQ19JVF9SRVJSKSB8fCAoKElUKSA9PSBDRUNfSVRfUkJURikpCisvKioKKyAgKiBAfQorICAqLyAKKworCisvKiogQGRlZmdyb3VwIENFQ19Pd25fQWRkcmVzcyAKKyAgKiBAeworICAqLyAKKyNkZWZpbmUgSVNfQ0VDX0FERFJFU1MoQUREUkVTUykgKChBRERSRVNTKSA8IDB4MTApCisvKioKKyAgKiBAfQorICAqLyAKKworLyoqIEBkZWZncm91cCBDRUNfUHJlc2NhbGVyIAorICAqIEB7CisgICovIAorI2RlZmluZSBJU19DRUNfUFJFU0NBTEVSKFBSRVNDQUxFUikgKChQUkVTQ0FMRVIpIDw9IDB4M0ZGRikKKworLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBDRUNfZmxhZ3NfZGVmaW5pdGlvbiAKKyAgKiBAeworICAqLworICAgCisvKiogCisgICogQGJyaWVmICBFU1IgcmVnaXN0ZXIgZmxhZ3MgIAorICAqLyAKKyNkZWZpbmUgQ0VDX0ZMQUdfQlRFICAgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgxMDAxMDAwMCkKKyNkZWZpbmUgQ0VDX0ZMQUdfQlBFICAgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgxMDAyMDAwMCkKKyNkZWZpbmUgQ0VDX0ZMQUdfUkJURkUgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgxMDA0MDAwMCkKKyNkZWZpbmUgQ0VDX0ZMQUdfU0JFICAgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgxMDA4MDAwMCkKKyNkZWZpbmUgQ0VDX0ZMQUdfQUNLRSAgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgxMDEwMDAwMCkKKyNkZWZpbmUgQ0VDX0ZMQUdfTElORSAgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgxMDIwMDAwMCkKKyNkZWZpbmUgQ0VDX0ZMQUdfVEJURkUgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgxMDQwMDAwMCkKKworLyoqIAorICAqIEBicmllZiAgQ1NSIHJlZ2lzdGVyIGZsYWdzICAKKyAgKi8gCisjZGVmaW5lIENFQ19GTEFHX1RFT00gICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAKKyNkZWZpbmUgQ0VDX0ZMQUdfVEVSUiAgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNCkKKyNkZWZpbmUgQ0VDX0ZMQUdfVEJUUkYgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkKKyNkZWZpbmUgQ0VDX0ZMQUdfUlNPTSAgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAxMCkKKyNkZWZpbmUgQ0VDX0ZMQUdfUkVPTSAgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAyMCkKKyNkZWZpbmUgQ0VDX0ZMQUdfUkVSUiAgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkKKyNkZWZpbmUgQ0VDX0ZMQUdfUkJURiAgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA4MCkKKworI2RlZmluZSBJU19DRUNfQ0xFQVJfRkxBRyhGTEFHKSAoKCgoRkxBRykgJiAodWludDMyX3QpMHhGRkZGRkYwMykgPT0gMHgwMCkgJiYgKChGTEFHKSAhPSAweDAwKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyNkZWZpbmUgSVNfQ0VDX0dFVF9GTEFHKEZMQUcpICgoKEZMQUcpID09IENFQ19GTEFHX0JURSkgfHwgKChGTEFHKSA9PSBDRUNfRkxBR19CUEUpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEZMQUcpID09IENFQ19GTEFHX1JCVEZFKSB8fCAoKEZMQUcpPT0gQ0VDX0ZMQUdfU0JFKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChGTEFHKSA9PSBDRUNfRkxBR19BQ0tFKSB8fCAoKEZMQUcpID09IENFQ19GTEFHX0xJTkUpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEZMQUcpID09IENFQ19GTEFHX1RCVEZFKSB8fCAoKEZMQUcpID09IENFQ19GTEFHX1RFT00pIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEZMQUcpID09IENFQ19GTEFHX1RFUlIpIHx8ICgoRkxBRykgPT0gQ0VDX0ZMQUdfVEJUUkYpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEZMQUcpID09IENFQ19GTEFHX1JTT00pIHx8ICgoRkxBRykgPT0gQ0VDX0ZMQUdfUkVPTSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRkxBRykgPT0gQ0VDX0ZMQUdfUkVSUikgfHwgKChGTEFHKSA9PSBDRUNfRkxBR19SQlRGKSkKKworLyoqCisgICogQH0KKyAgKi8gCisKKy8qKgorICAqIEB9CisgICovIAorCisvKiogQGRlZmdyb3VwIENFQ19FeHBvcnRlZF9NYWNyb3MKKyAgKiBAeworICAqLworIAorLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBDRUNfRXhwb3J0ZWRfRnVuY3Rpb25zCisgICogQHsKKyAgKi8gCit2b2lkIENFQ19EZUluaXQodm9pZCk7Cit2b2lkIENFQ19Jbml0KENFQ19Jbml0VHlwZURlZiogQ0VDX0luaXRTdHJ1Y3QpOwordm9pZCBDRUNfQ21kKEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSk7Cit2b2lkIENFQ19JVENvbmZpZyhGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpOwordm9pZCBDRUNfT3duQWRkcmVzc0NvbmZpZyh1aW50OF90IENFQ19Pd25BZGRyZXNzKTsKK3ZvaWQgQ0VDX1NldFByZXNjYWxlcih1aW50MTZfdCBDRUNfUHJlc2NhbGVyKTsKK3ZvaWQgQ0VDX1NlbmREYXRhQnl0ZSh1aW50OF90IERhdGEpOwordWludDhfdCBDRUNfUmVjZWl2ZURhdGFCeXRlKHZvaWQpOwordm9pZCBDRUNfU3RhcnRPZk1lc3NhZ2Uodm9pZCk7Cit2b2lkIENFQ19FbmRPZk1lc3NhZ2VDbWQoRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKTsKK0ZsYWdTdGF0dXMgQ0VDX0dldEZsYWdTdGF0dXModWludDMyX3QgQ0VDX0ZMQUcpOwordm9pZCBDRUNfQ2xlYXJGbGFnKHVpbnQzMl90IENFQ19GTEFHKTsKK0lUU3RhdHVzIENFQ19HZXRJVFN0YXR1cyh1aW50OF90IENFQ19JVCk7Cit2b2lkIENFQ19DbGVhcklUUGVuZGluZ0JpdCh1aW50MTZfdCBDRUNfSVQpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyogX19TVE0zMkYxMHhfQ0VDX0ggKi8KKworLyoqCisgICogQH0KKyAgKi8gCisKKy8qKgorICAqIEB9CisgICovIAorCisvKioKKyAgKiBAfQorICAqLyAKKworLyoqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCAyMDExIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL3N0X2Z3X2xpYi9pbmMvc3RtMzJmMTB4X2NyYy5oIGIvc3RfZndfbGliL2luYy9zdG0zMmYxMHhfY3JjLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzM2MmZjYQotLS0gL2Rldi9udWxsCisrKyBiL3N0X2Z3X2xpYi9pbmMvc3RtMzJmMTB4X2NyYy5oCkBAIC0wLDAgKzEsOTQgQEAKKy8qKgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKiBAZmlsZSAgICBzdG0zMmYxMHhfY3JjLmgKKyAgKiBAYXV0aG9yICBNQ0QgQXBwbGljYXRpb24gVGVhbQorICAqIEB2ZXJzaW9uIFYzLjUuMAorICAqIEBkYXRlICAgIDExLU1hcmNoLTIwMTEKKyAgKiBAYnJpZWYgICBUaGlzIGZpbGUgY29udGFpbnMgYWxsIHRoZSBmdW5jdGlvbnMgcHJvdG90eXBlcyBmb3IgdGhlIENSQyBmaXJtd2FyZSAKKyAgKiAgICAgICAgICBsaWJyYXJ5LgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKiBAYXR0ZW50aW9uCisgICoKKyAgKiBUSEUgUFJFU0VOVCBGSVJNV0FSRSBXSElDSCBJUyBGT1IgR1VJREFOQ0UgT05MWSBBSU1TIEFUIFBST1ZJRElORyBDVVNUT01FUlMKKyAgKiBXSVRIIENPRElORyBJTkZPUk1BVElPTiBSRUdBUkRJTkcgVEhFSVIgUFJPRFVDVFMgSU4gT1JERVIgRk9SIFRIRU0gVE8gU0FWRQorICAqIFRJTUUuIEFTIEEgUkVTVUxULCBTVE1JQ1JPRUxFQ1RST05JQ1MgU0hBTEwgTk9UIEJFIEhFTEQgTElBQkxFIEZPUiBBTlkKKyAgKiBESVJFQ1QsIElORElSRUNUIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBXSVRIIFJFU1BFQ1QgVE8gQU5ZIENMQUlNUyBBUklTSU5HCisgICogRlJPTSBUSEUgQ09OVEVOVCBPRiBTVUNIIEZJUk1XQVJFIEFORC9PUiBUSEUgVVNFIE1BREUgQlkgQ1VTVE9NRVJTIE9GIFRIRQorICAqIENPRElORyBJTkZPUk1BVElPTiBDT05UQUlORUQgSEVSRUlOIElOIENPTk5FQ1RJT04gV0lUSCBUSEVJUiBQUk9EVUNUUy4KKyAgKgorICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDT1BZUklHSFQgMjAxMSBTVE1pY3JvZWxlY3Ryb25pY3M8L2NlbnRlcj48L2gyPgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKi8KKworLyogRGVmaW5lIHRvIHByZXZlbnQgcmVjdXJzaXZlIGluY2x1c2lvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyNpZm5kZWYgX19TVE0zMkYxMHhfQ1JDX0gKKyNkZWZpbmUgX19TVE0zMkYxMHhfQ1JDX0gKKworI2lmZGVmIF9fY3BsdXNwbHVzCisgZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLyogSW5jbHVkZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyNpbmNsdWRlICJzdG0zMmYxMHguaCIKKworLyoqIEBhZGR0b2dyb3VwIFNUTTMyRjEweF9TdGRQZXJpcGhfRHJpdmVyCisgICogQHsKKyAgKi8KKworLyoqIEBhZGR0b2dyb3VwIENSQworICAqIEB7CisgICovCisKKy8qKiBAZGVmZ3JvdXAgQ1JDX0V4cG9ydGVkX1R5cGVzCisgICogQHsKKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBDUkNfRXhwb3J0ZWRfQ29uc3RhbnRzCisgICogQHsKKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBDUkNfRXhwb3J0ZWRfTWFjcm9zCisgICogQHsKKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBDUkNfRXhwb3J0ZWRfRnVuY3Rpb25zCisgICogQHsKKyAgKi8KKwordm9pZCBDUkNfUmVzZXREUih2b2lkKTsKK3VpbnQzMl90IENSQ19DYWxjQ1JDKHVpbnQzMl90IERhdGEpOwordWludDMyX3QgQ1JDX0NhbGNCbG9ja0NSQyh1aW50MzJfdCBwQnVmZmVyW10sIHVpbnQzMl90IEJ1ZmZlckxlbmd0aCk7Cit1aW50MzJfdCBDUkNfR2V0Q1JDKHZvaWQpOwordm9pZCBDUkNfU2V0SURSZWdpc3Rlcih1aW50OF90IElEVmFsdWUpOwordWludDhfdCBDUkNfR2V0SURSZWdpc3Rlcih2b2lkKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8qIF9fU1RNMzJGMTB4X0NSQ19IICovCisvKioKKyAgKiBAfQorICAqLworCisvKioKKyAgKiBAfQorICAqLworCisvKioKKyAgKiBAfQorICAqLworCisvKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIDIwMTEgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvc3RfZndfbGliL2luYy9zdG0zMmYxMHhfZGFjLmggYi9zdF9md19saWIvaW5jL3N0bTMyZjEweF9kYWMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNzQ3NzNjCi0tLSAvZGV2L251bGwKKysrIGIvc3RfZndfbGliL2luYy9zdG0zMmYxMHhfZGFjLmgKQEAgLTAsMCArMSwzMTcgQEAKKy8qKgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKiBAZmlsZSAgICBzdG0zMmYxMHhfZGFjLmgKKyAgKiBAYXV0aG9yICBNQ0QgQXBwbGljYXRpb24gVGVhbQorICAqIEB2ZXJzaW9uIFYzLjUuMAorICAqIEBkYXRlICAgIDExLU1hcmNoLTIwMTEKKyAgKiBAYnJpZWYgICBUaGlzIGZpbGUgY29udGFpbnMgYWxsIHRoZSBmdW5jdGlvbnMgcHJvdG90eXBlcyBmb3IgdGhlIERBQyBmaXJtd2FyZSAKKyAgKiAgICAgICAgICBsaWJyYXJ5LgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKiBAYXR0ZW50aW9uCisgICoKKyAgKiBUSEUgUFJFU0VOVCBGSVJNV0FSRSBXSElDSCBJUyBGT1IgR1VJREFOQ0UgT05MWSBBSU1TIEFUIFBST1ZJRElORyBDVVNUT01FUlMKKyAgKiBXSVRIIENPRElORyBJTkZPUk1BVElPTiBSRUdBUkRJTkcgVEhFSVIgUFJPRFVDVFMgSU4gT1JERVIgRk9SIFRIRU0gVE8gU0FWRQorICAqIFRJTUUuIEFTIEEgUkVTVUxULCBTVE1JQ1JPRUxFQ1RST05JQ1MgU0hBTEwgTk9UIEJFIEhFTEQgTElBQkxFIEZPUiBBTlkKKyAgKiBESVJFQ1QsIElORElSRUNUIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBXSVRIIFJFU1BFQ1QgVE8gQU5ZIENMQUlNUyBBUklTSU5HCisgICogRlJPTSBUSEUgQ09OVEVOVCBPRiBTVUNIIEZJUk1XQVJFIEFORC9PUiBUSEUgVVNFIE1BREUgQlkgQ1VTVE9NRVJTIE9GIFRIRQorICAqIENPRElORyBJTkZPUk1BVElPTiBDT05UQUlORUQgSEVSRUlOIElOIENPTk5FQ1RJT04gV0lUSCBUSEVJUiBQUk9EVUNUUy4KKyAgKgorICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDT1BZUklHSFQgMjAxMSBTVE1pY3JvZWxlY3Ryb25pY3M8L2NlbnRlcj48L2gyPgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKi8KKworLyogRGVmaW5lIHRvIHByZXZlbnQgcmVjdXJzaXZlIGluY2x1c2lvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyNpZm5kZWYgX19TVE0zMkYxMHhfREFDX0gKKyNkZWZpbmUgX19TVE0zMkYxMHhfREFDX0gKKworI2lmZGVmIF9fY3BsdXNwbHVzCisgZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLyogSW5jbHVkZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyNpbmNsdWRlICJzdG0zMmYxMHguaCIKKworLyoqIEBhZGR0b2dyb3VwIFNUTTMyRjEweF9TdGRQZXJpcGhfRHJpdmVyCisgICogQHsKKyAgKi8KKworLyoqIEBhZGR0b2dyb3VwIERBQworICAqIEB7CisgICovCisKKy8qKiBAZGVmZ3JvdXAgREFDX0V4cG9ydGVkX1R5cGVzCisgICogQHsKKyAgKi8KKworLyoqIAorICAqIEBicmllZiAgREFDIEluaXQgc3RydWN0dXJlIGRlZmluaXRpb24KKyAgKi8KKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgdWludDMyX3QgREFDX1RyaWdnZXI7ICAgICAgICAgICAgICAgICAgICAgIC8qITwgU3BlY2lmaWVzIHRoZSBleHRlcm5hbCB0cmlnZ2VyIGZvciB0aGUgc2VsZWN0ZWQgREFDIGNoYW5uZWwuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgREFDX3RyaWdnZXJfc2VsZWN0aW9uICovCisKKyAgdWludDMyX3QgREFDX1dhdmVHZW5lcmF0aW9uOyAgICAgICAgICAgICAgIC8qITwgU3BlY2lmaWVzIHdoZXRoZXIgREFDIGNoYW5uZWwgbm9pc2Ugd2F2ZXMgb3IgdHJpYW5nbGUgd2F2ZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlIGdlbmVyYXRlZCwgb3Igd2hldGhlciBubyB3YXZlIGlzIGdlbmVyYXRlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBEQUNfd2F2ZV9nZW5lcmF0aW9uICovCisKKyAgdWludDMyX3QgREFDX0xGU1JVbm1hc2tfVHJpYW5nbGVBbXBsaXR1ZGU7IC8qITwgU3BlY2lmaWVzIHRoZSBMRlNSIG1hc2sgZm9yIG5vaXNlIHdhdmUgZ2VuZXJhdGlvbiBvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgbWF4aW11bSBhbXBsaXR1ZGUgdHJpYW5nbGUgZ2VuZXJhdGlvbiBmb3IgdGhlIERBQyBjaGFubmVsLiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBEQUNfbGZzcnVubWFza190cmlhbmdsZWFtcGxpdHVkZSAqLworCisgIHVpbnQzMl90IERBQ19PdXRwdXRCdWZmZXI7ICAgICAgICAgICAgICAgICAvKiE8IFNwZWNpZmllcyB3aGV0aGVyIHRoZSBEQUMgY2hhbm5lbCBvdXRwdXQgYnVmZmVyIGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgREFDX291dHB1dF9idWZmZXIgKi8KK31EQUNfSW5pdFR5cGVEZWY7CisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgREFDX0V4cG9ydGVkX0NvbnN0YW50cworICAqIEB7CisgICovCisKKy8qKiBAZGVmZ3JvdXAgREFDX3RyaWdnZXJfc2VsZWN0aW9uIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgREFDX1RyaWdnZXJfTm9uZSAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDApIC8qITwgQ29udmVyc2lvbiBpcyBhdXRvbWF0aWMgb25jZSB0aGUgREFDMV9ESFJ4eHh4IHJlZ2lzdGVyIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXMgYmVlbiBsb2FkZWQsIGFuZCBub3QgYnkgZXh0ZXJuYWwgdHJpZ2dlciAqLworI2RlZmluZSBEQUNfVHJpZ2dlcl9UNl9UUkdPICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNCkgLyohPCBUSU02IFRSR08gc2VsZWN0ZWQgYXMgZXh0ZXJuYWwgY29udmVyc2lvbiB0cmlnZ2VyIGZvciBEQUMgY2hhbm5lbCAqLworI2RlZmluZSBEQUNfVHJpZ2dlcl9UOF9UUkdPICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwQykgLyohPCBUSU04IFRSR08gc2VsZWN0ZWQgYXMgZXh0ZXJuYWwgY29udmVyc2lvbiB0cmlnZ2VyIGZvciBEQUMgY2hhbm5lbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmx5IGluIEhpZ2gtZGVuc2l0eSBkZXZpY2VzKi8KKyNkZWZpbmUgREFDX1RyaWdnZXJfVDNfVFJHTyAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMEMpIC8qITwgVElNOCBUUkdPIHNlbGVjdGVkIGFzIGV4dGVybmFsIGNvbnZlcnNpb24gdHJpZ2dlciBmb3IgREFDIGNoYW5uZWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25seSBpbiBDb25uZWN0aXZpdHkgbGluZSwgTWVkaXVtLWRlbnNpdHkgYW5kIExvdy1kZW5zaXR5IFZhbHVlIExpbmUgZGV2aWNlcyAqLworI2RlZmluZSBEQUNfVHJpZ2dlcl9UN19UUkdPICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAxNCkgLyohPCBUSU03IFRSR08gc2VsZWN0ZWQgYXMgZXh0ZXJuYWwgY29udmVyc2lvbiB0cmlnZ2VyIGZvciBEQUMgY2hhbm5lbCAqLworI2RlZmluZSBEQUNfVHJpZ2dlcl9UNV9UUkdPICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAxQykgLyohPCBUSU01IFRSR08gc2VsZWN0ZWQgYXMgZXh0ZXJuYWwgY29udmVyc2lvbiB0cmlnZ2VyIGZvciBEQUMgY2hhbm5lbCAqLworI2RlZmluZSBEQUNfVHJpZ2dlcl9UMTVfVFJHTyAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAxQykgLyohPCBUSU0xNSBUUkdPIHNlbGVjdGVkIGFzIGV4dGVybmFsIGNvbnZlcnNpb24gdHJpZ2dlciBmb3IgREFDIGNoYW5uZWwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ubHkgaW4gTWVkaXVtLWRlbnNpdHkgYW5kIExvdy1kZW5zaXR5IFZhbHVlIExpbmUgZGV2aWNlcyovCisjZGVmaW5lIERBQ19UcmlnZ2VyX1QyX1RSR08gICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDI0KSAvKiE8IFRJTTIgVFJHTyBzZWxlY3RlZCBhcyBleHRlcm5hbCBjb252ZXJzaW9uIHRyaWdnZXIgZm9yIERBQyBjaGFubmVsICovCisjZGVmaW5lIERBQ19UcmlnZ2VyX1Q0X1RSR08gICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDJDKSAvKiE8IFRJTTQgVFJHTyBzZWxlY3RlZCBhcyBleHRlcm5hbCBjb252ZXJzaW9uIHRyaWdnZXIgZm9yIERBQyBjaGFubmVsICovCisjZGVmaW5lIERBQ19UcmlnZ2VyX0V4dF9JVDkgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDM0KSAvKiE8IEVYVEkgTGluZTkgZXZlbnQgc2VsZWN0ZWQgYXMgZXh0ZXJuYWwgY29udmVyc2lvbiB0cmlnZ2VyIGZvciBEQUMgY2hhbm5lbCAqLworI2RlZmluZSBEQUNfVHJpZ2dlcl9Tb2Z0d2FyZSAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAzQykgLyohPCBDb252ZXJzaW9uIHN0YXJ0ZWQgYnkgc29mdHdhcmUgdHJpZ2dlciBmb3IgREFDIGNoYW5uZWwgKi8KKworI2RlZmluZSBJU19EQUNfVFJJR0dFUihUUklHR0VSKSAoKChUUklHR0VSKSA9PSBEQUNfVHJpZ2dlcl9Ob25lKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFRSSUdHRVIpID09IERBQ19UcmlnZ2VyX1Q2X1RSR08pIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoVFJJR0dFUikgPT0gREFDX1RyaWdnZXJfVDhfVFJHTykgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChUUklHR0VSKSA9PSBEQUNfVHJpZ2dlcl9UN19UUkdPKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFRSSUdHRVIpID09IERBQ19UcmlnZ2VyX1Q1X1RSR08pIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoVFJJR0dFUikgPT0gREFDX1RyaWdnZXJfVDJfVFJHTykgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChUUklHR0VSKSA9PSBEQUNfVHJpZ2dlcl9UNF9UUkdPKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFRSSUdHRVIpID09IERBQ19UcmlnZ2VyX0V4dF9JVDkpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoVFJJR0dFUikgPT0gREFDX1RyaWdnZXJfU29mdHdhcmUpKQorCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIERBQ193YXZlX2dlbmVyYXRpb24gCisgICogQHsKKyAgKi8KKworI2RlZmluZSBEQUNfV2F2ZUdlbmVyYXRpb25fTm9uZSAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMCkKKyNkZWZpbmUgREFDX1dhdmVHZW5lcmF0aW9uX05vaXNlICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwNDApCisjZGVmaW5lIERBQ19XYXZlR2VuZXJhdGlvbl9UcmlhbmdsZSAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDgwKQorI2RlZmluZSBJU19EQUNfR0VORVJBVEVfV0FWRShXQVZFKSAoKChXQVZFKSA9PSBEQUNfV2F2ZUdlbmVyYXRpb25fTm9uZSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChXQVZFKSA9PSBEQUNfV2F2ZUdlbmVyYXRpb25fTm9pc2UpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoV0FWRSkgPT0gREFDX1dhdmVHZW5lcmF0aW9uX1RyaWFuZ2xlKSkKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgREFDX2xmc3J1bm1hc2tfdHJpYW5nbGVhbXBsaXR1ZGUKKyAgKiBAeworICAqLworCisjZGVmaW5lIERBQ19MRlNSVW5tYXNrX0JpdDAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAwKSAvKiE8IFVubWFzayBEQUMgY2hhbm5lbCBMRlNSIGJpdDAgZm9yIG5vaXNlIHdhdmUgZ2VuZXJhdGlvbiAqLworI2RlZmluZSBEQUNfTEZTUlVubWFza19CaXRzMV8wICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDEwMCkgLyohPCBVbm1hc2sgREFDIGNoYW5uZWwgTEZTUiBiaXRbMTowXSBmb3Igbm9pc2Ugd2F2ZSBnZW5lcmF0aW9uICovCisjZGVmaW5lIERBQ19MRlNSVW5tYXNrX0JpdHMyXzAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMjAwKSAvKiE8IFVubWFzayBEQUMgY2hhbm5lbCBMRlNSIGJpdFsyOjBdIGZvciBub2lzZSB3YXZlIGdlbmVyYXRpb24gKi8KKyNkZWZpbmUgREFDX0xGU1JVbm1hc2tfQml0czNfMCAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAzMDApIC8qITwgVW5tYXNrIERBQyBjaGFubmVsIExGU1IgYml0WzM6MF0gZm9yIG5vaXNlIHdhdmUgZ2VuZXJhdGlvbiAqLworI2RlZmluZSBEQUNfTEZTUlVubWFza19CaXRzNF8wICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDQwMCkgLyohPCBVbm1hc2sgREFDIGNoYW5uZWwgTEZTUiBiaXRbNDowXSBmb3Igbm9pc2Ugd2F2ZSBnZW5lcmF0aW9uICovCisjZGVmaW5lIERBQ19MRlNSVW5tYXNrX0JpdHM1XzAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwNTAwKSAvKiE8IFVubWFzayBEQUMgY2hhbm5lbCBMRlNSIGJpdFs1OjBdIGZvciBub2lzZSB3YXZlIGdlbmVyYXRpb24gKi8KKyNkZWZpbmUgREFDX0xGU1JVbm1hc2tfQml0czZfMCAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA2MDApIC8qITwgVW5tYXNrIERBQyBjaGFubmVsIExGU1IgYml0WzY6MF0gZm9yIG5vaXNlIHdhdmUgZ2VuZXJhdGlvbiAqLworI2RlZmluZSBEQUNfTEZTUlVubWFza19CaXRzN18wICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDcwMCkgLyohPCBVbm1hc2sgREFDIGNoYW5uZWwgTEZTUiBiaXRbNzowXSBmb3Igbm9pc2Ugd2F2ZSBnZW5lcmF0aW9uICovCisjZGVmaW5lIERBQ19MRlNSVW5tYXNrX0JpdHM4XzAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwODAwKSAvKiE8IFVubWFzayBEQUMgY2hhbm5lbCBMRlNSIGJpdFs4OjBdIGZvciBub2lzZSB3YXZlIGdlbmVyYXRpb24gKi8KKyNkZWZpbmUgREFDX0xGU1JVbm1hc2tfQml0czlfMCAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA5MDApIC8qITwgVW5tYXNrIERBQyBjaGFubmVsIExGU1IgYml0Wzk6MF0gZm9yIG5vaXNlIHdhdmUgZ2VuZXJhdGlvbiAqLworI2RlZmluZSBEQUNfTEZTUlVubWFza19CaXRzMTBfMCAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMEEwMCkgLyohPCBVbm1hc2sgREFDIGNoYW5uZWwgTEZTUiBiaXRbMTA6MF0gZm9yIG5vaXNlIHdhdmUgZ2VuZXJhdGlvbiAqLworI2RlZmluZSBEQUNfTEZTUlVubWFza19CaXRzMTFfMCAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMEIwMCkgLyohPCBVbm1hc2sgREFDIGNoYW5uZWwgTEZTUiBiaXRbMTE6MF0gZm9yIG5vaXNlIHdhdmUgZ2VuZXJhdGlvbiAqLworI2RlZmluZSBEQUNfVHJpYW5nbGVBbXBsaXR1ZGVfMSAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMCkgLyohPCBTZWxlY3QgbWF4IHRyaWFuZ2xlIGFtcGxpdHVkZSBvZiAxICovCisjZGVmaW5lIERBQ19UcmlhbmdsZUFtcGxpdHVkZV8zICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKSAvKiE8IFNlbGVjdCBtYXggdHJpYW5nbGUgYW1wbGl0dWRlIG9mIDMgKi8KKyNkZWZpbmUgREFDX1RyaWFuZ2xlQW1wbGl0dWRlXzcgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAyMDApIC8qITwgU2VsZWN0IG1heCB0cmlhbmdsZSBhbXBsaXR1ZGUgb2YgNyAqLworI2RlZmluZSBEQUNfVHJpYW5nbGVBbXBsaXR1ZGVfMTUgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDMwMCkgLyohPCBTZWxlY3QgbWF4IHRyaWFuZ2xlIGFtcGxpdHVkZSBvZiAxNSAqLworI2RlZmluZSBEQUNfVHJpYW5nbGVBbXBsaXR1ZGVfMzEgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDQwMCkgLyohPCBTZWxlY3QgbWF4IHRyaWFuZ2xlIGFtcGxpdHVkZSBvZiAzMSAqLworI2RlZmluZSBEQUNfVHJpYW5nbGVBbXBsaXR1ZGVfNjMgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDUwMCkgLyohPCBTZWxlY3QgbWF4IHRyaWFuZ2xlIGFtcGxpdHVkZSBvZiA2MyAqLworI2RlZmluZSBEQUNfVHJpYW5nbGVBbXBsaXR1ZGVfMTI3ICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDYwMCkgLyohPCBTZWxlY3QgbWF4IHRyaWFuZ2xlIGFtcGxpdHVkZSBvZiAxMjcgKi8KKyNkZWZpbmUgREFDX1RyaWFuZ2xlQW1wbGl0dWRlXzI1NSAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA3MDApIC8qITwgU2VsZWN0IG1heCB0cmlhbmdsZSBhbXBsaXR1ZGUgb2YgMjU1ICovCisjZGVmaW5lIERBQ19UcmlhbmdsZUFtcGxpdHVkZV81MTEgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwODAwKSAvKiE8IFNlbGVjdCBtYXggdHJpYW5nbGUgYW1wbGl0dWRlIG9mIDUxMSAqLworI2RlZmluZSBEQUNfVHJpYW5nbGVBbXBsaXR1ZGVfMTAyMyAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDkwMCkgLyohPCBTZWxlY3QgbWF4IHRyaWFuZ2xlIGFtcGxpdHVkZSBvZiAxMDIzICovCisjZGVmaW5lIERBQ19UcmlhbmdsZUFtcGxpdHVkZV8yMDQ3ICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwQTAwKSAvKiE8IFNlbGVjdCBtYXggdHJpYW5nbGUgYW1wbGl0dWRlIG9mIDIwNDcgKi8KKyNkZWZpbmUgREFDX1RyaWFuZ2xlQW1wbGl0dWRlXzQwOTUgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDBCMDApIC8qITwgU2VsZWN0IG1heCB0cmlhbmdsZSBhbXBsaXR1ZGUgb2YgNDA5NSAqLworCisjZGVmaW5lIElTX0RBQ19MRlNSX1VOTUFTS19UUklBTkdMRV9BTVBMSVRVREUoVkFMVUUpICgoKFZBTFVFKSA9PSBEQUNfTEZTUlVubWFza19CaXQwKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFZBTFVFKSA9PSBEQUNfTEZTUlVubWFza19CaXRzMV8wKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFZBTFVFKSA9PSBEQUNfTEZTUlVubWFza19CaXRzMl8wKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFZBTFVFKSA9PSBEQUNfTEZTUlVubWFza19CaXRzM18wKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFZBTFVFKSA9PSBEQUNfTEZTUlVubWFza19CaXRzNF8wKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFZBTFVFKSA9PSBEQUNfTEZTUlVubWFza19CaXRzNV8wKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFZBTFVFKSA9PSBEQUNfTEZTUlVubWFza19CaXRzNl8wKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFZBTFVFKSA9PSBEQUNfTEZTUlVubWFza19CaXRzN18wKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFZBTFVFKSA9PSBEQUNfTEZTUlVubWFza19CaXRzOF8wKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFZBTFVFKSA9PSBEQUNfTEZTUlVubWFza19CaXRzOV8wKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFZBTFVFKSA9PSBEQUNfTEZTUlVubWFza19CaXRzMTBfMCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChWQUxVRSkgPT0gREFDX0xGU1JVbm1hc2tfQml0czExXzApIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoVkFMVUUpID09IERBQ19UcmlhbmdsZUFtcGxpdHVkZV8xKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFZBTFVFKSA9PSBEQUNfVHJpYW5nbGVBbXBsaXR1ZGVfMykgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChWQUxVRSkgPT0gREFDX1RyaWFuZ2xlQW1wbGl0dWRlXzcpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoVkFMVUUpID09IERBQ19UcmlhbmdsZUFtcGxpdHVkZV8xNSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChWQUxVRSkgPT0gREFDX1RyaWFuZ2xlQW1wbGl0dWRlXzMxKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFZBTFVFKSA9PSBEQUNfVHJpYW5nbGVBbXBsaXR1ZGVfNjMpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoVkFMVUUpID09IERBQ19UcmlhbmdsZUFtcGxpdHVkZV8xMjcpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoVkFMVUUpID09IERBQ19UcmlhbmdsZUFtcGxpdHVkZV8yNTUpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoVkFMVUUpID09IERBQ19UcmlhbmdsZUFtcGxpdHVkZV81MTEpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoVkFMVUUpID09IERBQ19UcmlhbmdsZUFtcGxpdHVkZV8xMDIzKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFZBTFVFKSA9PSBEQUNfVHJpYW5nbGVBbXBsaXR1ZGVfMjA0NykgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChWQUxVRSkgPT0gREFDX1RyaWFuZ2xlQW1wbGl0dWRlXzQwOTUpKQorLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBEQUNfb3V0cHV0X2J1ZmZlciAKKyAgKiBAeworICAqLworCisjZGVmaW5lIERBQ19PdXRwdXRCdWZmZXJfRW5hYmxlICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAwKQorI2RlZmluZSBEQUNfT3V0cHV0QnVmZmVyX0Rpc2FibGUgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMikKKyNkZWZpbmUgSVNfREFDX09VVFBVVF9CVUZGRVJfU1RBVEUoU1RBVEUpICgoKFNUQVRFKSA9PSBEQUNfT3V0cHV0QnVmZmVyX0VuYWJsZSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoU1RBVEUpID09IERBQ19PdXRwdXRCdWZmZXJfRGlzYWJsZSkpCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIERBQ19DaGFubmVsX3NlbGVjdGlvbiAKKyAgKiBAeworICAqLworCisjZGVmaW5lIERBQ19DaGFubmVsXzEgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAwKQorI2RlZmluZSBEQUNfQ2hhbm5lbF8yICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAxMCkKKyNkZWZpbmUgSVNfREFDX0NIQU5ORUwoQ0hBTk5FTCkgKCgoQ0hBTk5FTCkgPT0gREFDX0NoYW5uZWxfMSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChDSEFOTkVMKSA9PSBEQUNfQ2hhbm5lbF8yKSkKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgREFDX2RhdGFfYWxpZ25tZW50IAorICAqIEB7CisgICovCisKKyNkZWZpbmUgREFDX0FsaWduXzEyYl9SICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDApCisjZGVmaW5lIERBQ19BbGlnbl8xMmJfTCAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KQorI2RlZmluZSBEQUNfQWxpZ25fOGJfUiAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkKKyNkZWZpbmUgSVNfREFDX0FMSUdOKEFMSUdOKSAoKChBTElHTikgPT0gREFDX0FsaWduXzEyYl9SKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoQUxJR04pID09IERBQ19BbGlnbl8xMmJfTCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEFMSUdOKSA9PSBEQUNfQWxpZ25fOGJfUikpCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIERBQ193YXZlX2dlbmVyYXRpb24gCisgICogQHsKKyAgKi8KKworI2RlZmluZSBEQUNfV2F2ZV9Ob2lzZSAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkKKyNkZWZpbmUgREFDX1dhdmVfVHJpYW5nbGUgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApCisjZGVmaW5lIElTX0RBQ19XQVZFKFdBVkUpICgoKFdBVkUpID09IERBQ19XYXZlX05vaXNlKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFdBVkUpID09IERBQ19XYXZlX1RyaWFuZ2xlKSkKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgREFDX2RhdGEgCisgICogQHsKKyAgKi8KKworI2RlZmluZSBJU19EQUNfREFUQShEQVRBKSAoKERBVEEpIDw9IDB4RkZGMCkgCisvKioKKyAgKiBAfQorICAqLworI2lmIGRlZmluZWQgKFNUTTMyRjEwWF9MRF9WTCkgfHwgZGVmaW5lZCAoU1RNMzJGMTBYX01EX1ZMKSAgfHwgZGVmaW5lZCAoU1RNMzJGMTBYX0hEX1ZMKQorLyoqIEBkZWZncm91cCBEQUNfaW50ZXJydXB0c19kZWZpbml0aW9uIAorICAqIEB7CisgICovIAorICAKKyNkZWZpbmUgREFDX0lUX0RNQVVEUiAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAKKyNkZWZpbmUgSVNfREFDX0lUKElUKSAoKChJVCkgPT0gREFDX0lUX0RNQVVEUikpIAorCisvKioKKyAgKiBAfQorICAqLyAKKworLyoqIEBkZWZncm91cCBEQUNfZmxhZ3NfZGVmaW5pdGlvbiAKKyAgKiBAeworICAqLyAKKyAgCisjZGVmaW5lIERBQ19GTEFHX0RNQVVEUiAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAyMDAwKSAgCisjZGVmaW5lIElTX0RBQ19GTEFHKEZMQUcpICgoKEZMQUcpID09IERBQ19GTEFHX0RNQVVEUikpICAKKworLyoqCisgICogQH0KKyAgKi8KKyNlbmRpZgorCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIERBQ19FeHBvcnRlZF9NYWNyb3MKKyAgKiBAeworICAqLworCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIERBQ19FeHBvcnRlZF9GdW5jdGlvbnMKKyAgKiBAeworICAqLworCit2b2lkIERBQ19EZUluaXQodm9pZCk7Cit2b2lkIERBQ19Jbml0KHVpbnQzMl90IERBQ19DaGFubmVsLCBEQUNfSW5pdFR5cGVEZWYqIERBQ19Jbml0U3RydWN0KTsKK3ZvaWQgREFDX1N0cnVjdEluaXQoREFDX0luaXRUeXBlRGVmKiBEQUNfSW5pdFN0cnVjdCk7Cit2b2lkIERBQ19DbWQodWludDMyX3QgREFDX0NoYW5uZWwsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSk7CisjaWYgZGVmaW5lZCAoU1RNMzJGMTBYX0xEX1ZMKSB8fCBkZWZpbmVkIChTVE0zMkYxMFhfTURfVkwpIHx8IGRlZmluZWQgKFNUTTMyRjEwWF9IRF9WTCkKK3ZvaWQgREFDX0lUQ29uZmlnKHVpbnQzMl90IERBQ19DaGFubmVsLCB1aW50MzJfdCBEQUNfSVQsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSk7CisjZW5kaWYKK3ZvaWQgREFDX0RNQUNtZCh1aW50MzJfdCBEQUNfQ2hhbm5lbCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKTsKK3ZvaWQgREFDX1NvZnR3YXJlVHJpZ2dlckNtZCh1aW50MzJfdCBEQUNfQ2hhbm5lbCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKTsKK3ZvaWQgREFDX0R1YWxTb2Z0d2FyZVRyaWdnZXJDbWQoRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKTsKK3ZvaWQgREFDX1dhdmVHZW5lcmF0aW9uQ21kKHVpbnQzMl90IERBQ19DaGFubmVsLCB1aW50MzJfdCBEQUNfV2F2ZSwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKTsKK3ZvaWQgREFDX1NldENoYW5uZWwxRGF0YSh1aW50MzJfdCBEQUNfQWxpZ24sIHVpbnQxNl90IERhdGEpOwordm9pZCBEQUNfU2V0Q2hhbm5lbDJEYXRhKHVpbnQzMl90IERBQ19BbGlnbiwgdWludDE2X3QgRGF0YSk7Cit2b2lkIERBQ19TZXREdWFsQ2hhbm5lbERhdGEodWludDMyX3QgREFDX0FsaWduLCB1aW50MTZfdCBEYXRhMiwgdWludDE2X3QgRGF0YTEpOwordWludDE2X3QgREFDX0dldERhdGFPdXRwdXRWYWx1ZSh1aW50MzJfdCBEQUNfQ2hhbm5lbCk7CisjaWYgZGVmaW5lZCAoU1RNMzJGMTBYX0xEX1ZMKSB8fCBkZWZpbmVkIChTVE0zMkYxMFhfTURfVkwpIHx8IGRlZmluZWQgKFNUTTMyRjEwWF9IRF9WTCkgCitGbGFnU3RhdHVzIERBQ19HZXRGbGFnU3RhdHVzKHVpbnQzMl90IERBQ19DaGFubmVsLCB1aW50MzJfdCBEQUNfRkxBRyk7Cit2b2lkIERBQ19DbGVhckZsYWcodWludDMyX3QgREFDX0NoYW5uZWwsIHVpbnQzMl90IERBQ19GTEFHKTsKK0lUU3RhdHVzIERBQ19HZXRJVFN0YXR1cyh1aW50MzJfdCBEQUNfQ2hhbm5lbCwgdWludDMyX3QgREFDX0lUKTsKK3ZvaWQgREFDX0NsZWFySVRQZW5kaW5nQml0KHVpbnQzMl90IERBQ19DaGFubmVsLCB1aW50MzJfdCBEQUNfSVQpOworI2VuZGlmCisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvKl9fU1RNMzJGMTB4X0RBQ19IICovCisvKioKKyAgKiBAfQorICAqLworCisvKioKKyAgKiBAfQorICAqLworCisvKioKKyAgKiBAfQorICAqLworCisvKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIDIwMTEgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvc3RfZndfbGliL2luYy9zdG0zMmYxMHhfZGJnbWN1LmggYi9zdF9md19saWIvaW5jL3N0bTMyZjEweF9kYmdtY3UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OWNlYjlhCi0tLSAvZGV2L251bGwKKysrIGIvc3RfZndfbGliL2luYy9zdG0zMmYxMHhfZGJnbWN1LmgKQEAgLTAsMCArMSwxMTkgQEAKKy8qKgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKiBAZmlsZSAgICBzdG0zMmYxMHhfZGJnbWN1LmgKKyAgKiBAYXV0aG9yICBNQ0QgQXBwbGljYXRpb24gVGVhbQorICAqIEB2ZXJzaW9uIFYzLjUuMAorICAqIEBkYXRlICAgIDExLU1hcmNoLTIwMTEKKyAgKiBAYnJpZWYgICBUaGlzIGZpbGUgY29udGFpbnMgYWxsIHRoZSBmdW5jdGlvbnMgcHJvdG90eXBlcyBmb3IgdGhlIERCR01DVSAKKyAgKiAgICAgICAgICBmaXJtd2FyZSBsaWJyYXJ5LgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKiBAYXR0ZW50aW9uCisgICoKKyAgKiBUSEUgUFJFU0VOVCBGSVJNV0FSRSBXSElDSCBJUyBGT1IgR1VJREFOQ0UgT05MWSBBSU1TIEFUIFBST1ZJRElORyBDVVNUT01FUlMKKyAgKiBXSVRIIENPRElORyBJTkZPUk1BVElPTiBSRUdBUkRJTkcgVEhFSVIgUFJPRFVDVFMgSU4gT1JERVIgRk9SIFRIRU0gVE8gU0FWRQorICAqIFRJTUUuIEFTIEEgUkVTVUxULCBTVE1JQ1JPRUxFQ1RST05JQ1MgU0hBTEwgTk9UIEJFIEhFTEQgTElBQkxFIEZPUiBBTlkKKyAgKiBESVJFQ1QsIElORElSRUNUIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBXSVRIIFJFU1BFQ1QgVE8gQU5ZIENMQUlNUyBBUklTSU5HCisgICogRlJPTSBUSEUgQ09OVEVOVCBPRiBTVUNIIEZJUk1XQVJFIEFORC9PUiBUSEUgVVNFIE1BREUgQlkgQ1VTVE9NRVJTIE9GIFRIRQorICAqIENPRElORyBJTkZPUk1BVElPTiBDT05UQUlORUQgSEVSRUlOIElOIENPTk5FQ1RJT04gV0lUSCBUSEVJUiBQUk9EVUNUUy4KKyAgKgorICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDT1BZUklHSFQgMjAxMSBTVE1pY3JvZWxlY3Ryb25pY3M8L2NlbnRlcj48L2gyPgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKi8KKworLyogRGVmaW5lIHRvIHByZXZlbnQgcmVjdXJzaXZlIGluY2x1c2lvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyNpZm5kZWYgX19TVE0zMkYxMHhfREJHTUNVX0gKKyNkZWZpbmUgX19TVE0zMkYxMHhfREJHTUNVX0gKKworI2lmZGVmIF9fY3BsdXNwbHVzCisgZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLyogSW5jbHVkZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyNpbmNsdWRlICJzdG0zMmYxMHguaCIKKworLyoqIEBhZGR0b2dyb3VwIFNUTTMyRjEweF9TdGRQZXJpcGhfRHJpdmVyCisgICogQHsKKyAgKi8KKworLyoqIEBhZGR0b2dyb3VwIERCR01DVQorICAqIEB7CisgICovCisKKy8qKiBAZGVmZ3JvdXAgREJHTUNVX0V4cG9ydGVkX1R5cGVzCisgICogQHsKKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBEQkdNQ1VfRXhwb3J0ZWRfQ29uc3RhbnRzCisgICogQHsKKyAgKi8KKworI2RlZmluZSBEQkdNQ1VfU0xFRVAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkKKyNkZWZpbmUgREJHTUNVX1NUT1AgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpCisjZGVmaW5lIERCR01DVV9TVEFOREJZICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KQorI2RlZmluZSBEQkdNQ1VfSVdER19TVE9QICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDEwMCkKKyNkZWZpbmUgREJHTUNVX1dXREdfU1RPUCAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAyMDApCisjZGVmaW5lIERCR01DVV9USU0xX1NUT1AgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwNDAwKQorI2RlZmluZSBEQkdNQ1VfVElNMl9TVE9QICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkKKyNkZWZpbmUgREJHTUNVX1RJTTNfU1RPUCAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDEwMDApCisjZGVmaW5lIERCR01DVV9USU00X1NUT1AgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAyMDAwKQorI2RlZmluZSBEQkdNQ1VfQ0FOMV9TVE9QICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkKKyNkZWZpbmUgREJHTUNVX0kyQzFfU01CVVNfVElNRU9VVCAgICAoKHVpbnQzMl90KTB4MDAwMDgwMDApCisjZGVmaW5lIERCR01DVV9JMkMyX1NNQlVTX1RJTUVPVVQgICAgKCh1aW50MzJfdCkweDAwMDEwMDAwKQorI2RlZmluZSBEQkdNQ1VfVElNOF9TVE9QICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkKKyNkZWZpbmUgREJHTUNVX1RJTTVfU1RPUCAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwNDAwMDApCisjZGVmaW5lIERCR01DVV9USU02X1NUT1AgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDgwMDAwKQorI2RlZmluZSBEQkdNQ1VfVElNN19TVE9QICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDEwMDAwMCkKKyNkZWZpbmUgREJHTUNVX0NBTjJfU1RPUCAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAyMDAwMDApCisjZGVmaW5lIERCR01DVV9USU0xNV9TVE9QICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwNDAwMDAwKQorI2RlZmluZSBEQkdNQ1VfVElNMTZfU1RPUCAgICAgICAgICAgICgodWludDMyX3QpMHgwMDgwMDAwMCkKKyNkZWZpbmUgREJHTUNVX1RJTTE3X1NUT1AgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDEwMDAwMDApCisjZGVmaW5lIERCR01DVV9USU0xMl9TVE9QICAgICAgICAgICAgKCh1aW50MzJfdCkweDAyMDAwMDAwKQorI2RlZmluZSBEQkdNQ1VfVElNMTNfU1RPUCAgICAgICAgICAgICgodWludDMyX3QpMHgwNDAwMDAwMCkKKyNkZWZpbmUgREJHTUNVX1RJTTE0X1NUT1AgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDgwMDAwMDApCisjZGVmaW5lIERCR01DVV9USU05X1NUT1AgICAgICAgICAgICAgKCh1aW50MzJfdCkweDEwMDAwMDAwKQorI2RlZmluZSBEQkdNQ1VfVElNMTBfU1RPUCAgICAgICAgICAgICgodWludDMyX3QpMHgyMDAwMDAwMCkKKyNkZWZpbmUgREJHTUNVX1RJTTExX1NUT1AgICAgICAgICAgICAoKHVpbnQzMl90KTB4NDAwMDAwMDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisjZGVmaW5lIElTX0RCR01DVV9QRVJJUEgoUEVSSVBIKSAoKCgoUEVSSVBIKSAmIDB4ODAwMDAwRjgpID09IDB4MDApICYmICgoUEVSSVBIKSAhPSAweDAwKSkKKy8qKgorICAqIEB9CisgICovIAorCisvKiogQGRlZmdyb3VwIERCR01DVV9FeHBvcnRlZF9NYWNyb3MKKyAgKiBAeworICAqLworCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIERCR01DVV9FeHBvcnRlZF9GdW5jdGlvbnMKKyAgKiBAeworICAqLworCit1aW50MzJfdCBEQkdNQ1VfR2V0UkVWSUQodm9pZCk7Cit1aW50MzJfdCBEQkdNQ1VfR2V0REVWSUQodm9pZCk7Cit2b2lkIERCR01DVV9Db25maWcodWludDMyX3QgREJHTUNVX1BlcmlwaCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8qIF9fU1RNMzJGMTB4X0RCR01DVV9IICovCisvKioKKyAgKiBAfQorICAqLworCisvKioKKyAgKiBAfQorICAqLworCisvKioKKyAgKiBAfQorICAqLworCisvKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIDIwMTEgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvc3RfZndfbGliL2luYy9zdG0zMmYxMHhfZG1hLmggYi9zdF9md19saWIvaW5jL3N0bTMyZjEweF9kbWEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNDI3NWZlCi0tLSAvZGV2L251bGwKKysrIGIvc3RfZndfbGliL2luYy9zdG0zMmYxMHhfZG1hLmgKQEAgLTAsMCArMSw0MzkgQEAKKy8qKgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKiBAZmlsZSAgICBzdG0zMmYxMHhfZG1hLmgKKyAgKiBAYXV0aG9yICBNQ0QgQXBwbGljYXRpb24gVGVhbQorICAqIEB2ZXJzaW9uIFYzLjUuMAorICAqIEBkYXRlICAgIDExLU1hcmNoLTIwMTEKKyAgKiBAYnJpZWYgICBUaGlzIGZpbGUgY29udGFpbnMgYWxsIHRoZSBmdW5jdGlvbnMgcHJvdG90eXBlcyBmb3IgdGhlIERNQSBmaXJtd2FyZSAKKyAgKiAgICAgICAgICBsaWJyYXJ5LgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKiBAYXR0ZW50aW9uCisgICoKKyAgKiBUSEUgUFJFU0VOVCBGSVJNV0FSRSBXSElDSCBJUyBGT1IgR1VJREFOQ0UgT05MWSBBSU1TIEFUIFBST1ZJRElORyBDVVNUT01FUlMKKyAgKiBXSVRIIENPRElORyBJTkZPUk1BVElPTiBSRUdBUkRJTkcgVEhFSVIgUFJPRFVDVFMgSU4gT1JERVIgRk9SIFRIRU0gVE8gU0FWRQorICAqIFRJTUUuIEFTIEEgUkVTVUxULCBTVE1JQ1JPRUxFQ1RST05JQ1MgU0hBTEwgTk9UIEJFIEhFTEQgTElBQkxFIEZPUiBBTlkKKyAgKiBESVJFQ1QsIElORElSRUNUIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBXSVRIIFJFU1BFQ1QgVE8gQU5ZIENMQUlNUyBBUklTSU5HCisgICogRlJPTSBUSEUgQ09OVEVOVCBPRiBTVUNIIEZJUk1XQVJFIEFORC9PUiBUSEUgVVNFIE1BREUgQlkgQ1VTVE9NRVJTIE9GIFRIRQorICAqIENPRElORyBJTkZPUk1BVElPTiBDT05UQUlORUQgSEVSRUlOIElOIENPTk5FQ1RJT04gV0lUSCBUSEVJUiBQUk9EVUNUUy4KKyAgKgorICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDT1BZUklHSFQgMjAxMSBTVE1pY3JvZWxlY3Ryb25pY3M8L2NlbnRlcj48L2gyPgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKi8KKworLyogRGVmaW5lIHRvIHByZXZlbnQgcmVjdXJzaXZlIGluY2x1c2lvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyNpZm5kZWYgX19TVE0zMkYxMHhfRE1BX0gKKyNkZWZpbmUgX19TVE0zMkYxMHhfRE1BX0gKKworI2lmZGVmIF9fY3BsdXNwbHVzCisgZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLyogSW5jbHVkZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyNpbmNsdWRlICJzdG0zMmYxMHguaCIKKworLyoqIEBhZGR0b2dyb3VwIFNUTTMyRjEweF9TdGRQZXJpcGhfRHJpdmVyCisgICogQHsKKyAgKi8KKworLyoqIEBhZGR0b2dyb3VwIERNQQorICAqIEB7CisgICovCisKKy8qKiBAZGVmZ3JvdXAgRE1BX0V4cG9ydGVkX1R5cGVzCisgICogQHsKKyAgKi8KKworLyoqIAorICAqIEBicmllZiAgRE1BIEluaXQgc3RydWN0dXJlIGRlZmluaXRpb24KKyAgKi8KKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgdWludDMyX3QgRE1BX1BlcmlwaGVyYWxCYXNlQWRkcjsgLyohPCBTcGVjaWZpZXMgdGhlIHBlcmlwaGVyYWwgYmFzZSBhZGRyZXNzIGZvciBETUF5IENoYW5uZWx4LiAqLworCisgIHVpbnQzMl90IERNQV9NZW1vcnlCYXNlQWRkcjsgICAgIC8qITwgU3BlY2lmaWVzIHRoZSBtZW1vcnkgYmFzZSBhZGRyZXNzIGZvciBETUF5IENoYW5uZWx4LiAqLworCisgIHVpbnQzMl90IERNQV9ESVI7ICAgICAgICAgICAgICAgIC8qITwgU3BlY2lmaWVzIGlmIHRoZSBwZXJpcGhlcmFsIGlzIHRoZSBzb3VyY2Ugb3IgZGVzdGluYXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBETUFfZGF0YV90cmFuc2Zlcl9kaXJlY3Rpb24gKi8KKworICB1aW50MzJfdCBETUFfQnVmZmVyU2l6ZTsgICAgICAgICAvKiE8IFNwZWNpZmllcyB0aGUgYnVmZmVyIHNpemUsIGluIGRhdGEgdW5pdCwgb2YgdGhlIHNwZWNpZmllZCBDaGFubmVsLiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZGF0YSB1bml0IGlzIGVxdWFsIHRvIHRoZSBjb25maWd1cmF0aW9uIHNldCBpbiBETUFfUGVyaXBoZXJhbERhdGFTaXplCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgRE1BX01lbW9yeURhdGFTaXplIG1lbWJlcnMgZGVwZW5kaW5nIGluIHRoZSB0cmFuc2ZlciBkaXJlY3Rpb24uICovCisKKyAgdWludDMyX3QgRE1BX1BlcmlwaGVyYWxJbmM7ICAgICAgLyohPCBTcGVjaWZpZXMgd2hldGhlciB0aGUgUGVyaXBoZXJhbCBhZGRyZXNzIHJlZ2lzdGVyIGlzIGluY3JlbWVudGVkIG9yIG5vdC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIERNQV9wZXJpcGhlcmFsX2luY3JlbWVudGVkX21vZGUgKi8KKworICB1aW50MzJfdCBETUFfTWVtb3J5SW5jOyAgICAgICAgICAvKiE8IFNwZWNpZmllcyB3aGV0aGVyIHRoZSBtZW1vcnkgYWRkcmVzcyByZWdpc3RlciBpcyBpbmNyZW1lbnRlZCBvciBub3QuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBETUFfbWVtb3J5X2luY3JlbWVudGVkX21vZGUgKi8KKworICB1aW50MzJfdCBETUFfUGVyaXBoZXJhbERhdGFTaXplOyAvKiE8IFNwZWNpZmllcyB0aGUgUGVyaXBoZXJhbCBkYXRhIHdpZHRoLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgRE1BX3BlcmlwaGVyYWxfZGF0YV9zaXplICovCisKKyAgdWludDMyX3QgRE1BX01lbW9yeURhdGFTaXplOyAgICAgLyohPCBTcGVjaWZpZXMgdGhlIE1lbW9yeSBkYXRhIHdpZHRoLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgRE1BX21lbW9yeV9kYXRhX3NpemUgKi8KKworICB1aW50MzJfdCBETUFfTW9kZTsgICAgICAgICAgICAgICAvKiE8IFNwZWNpZmllcyB0aGUgb3BlcmF0aW9uIG1vZGUgb2YgdGhlIERNQXkgQ2hhbm5lbHguCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBETUFfY2lyY3VsYXJfbm9ybWFsX21vZGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQG5vdGU6IFRoZSBjaXJjdWxhciBidWZmZXIgbW9kZSBjYW5ub3QgYmUgdXNlZCBpZiB0aGUgbWVtb3J5LXRvLW1lbW9yeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgdHJhbnNmZXIgaXMgY29uZmlndXJlZCBvbiB0aGUgc2VsZWN0ZWQgQ2hhbm5lbCAqLworCisgIHVpbnQzMl90IERNQV9Qcmlvcml0eTsgICAgICAgICAgIC8qITwgU3BlY2lmaWVzIHRoZSBzb2Z0d2FyZSBwcmlvcml0eSBmb3IgdGhlIERNQXkgQ2hhbm5lbHguCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBETUFfcHJpb3JpdHlfbGV2ZWwgKi8KKworICB1aW50MzJfdCBETUFfTTJNOyAgICAgICAgICAgICAgICAvKiE8IFNwZWNpZmllcyBpZiB0aGUgRE1BeSBDaGFubmVseCB3aWxsIGJlIHVzZWQgaW4gbWVtb3J5LXRvLW1lbW9yeSB0cmFuc2Zlci4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIERNQV9tZW1vcnlfdG9fbWVtb3J5ICovCit9RE1BX0luaXRUeXBlRGVmOworCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIERNQV9FeHBvcnRlZF9Db25zdGFudHMKKyAgKiBAeworICAqLworCisjZGVmaW5lIElTX0RNQV9BTExfUEVSSVBIKFBFUklQSCkgKCgoUEVSSVBIKSA9PSBETUExX0NoYW5uZWwxKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUEVSSVBIKSA9PSBETUExX0NoYW5uZWwyKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUEVSSVBIKSA9PSBETUExX0NoYW5uZWwzKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUEVSSVBIKSA9PSBETUExX0NoYW5uZWw0KSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUEVSSVBIKSA9PSBETUExX0NoYW5uZWw1KSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUEVSSVBIKSA9PSBETUExX0NoYW5uZWw2KSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUEVSSVBIKSA9PSBETUExX0NoYW5uZWw3KSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUEVSSVBIKSA9PSBETUEyX0NoYW5uZWwxKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUEVSSVBIKSA9PSBETUEyX0NoYW5uZWwyKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUEVSSVBIKSA9PSBETUEyX0NoYW5uZWwzKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUEVSSVBIKSA9PSBETUEyX0NoYW5uZWw0KSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUEVSSVBIKSA9PSBETUEyX0NoYW5uZWw1KSkKKworLyoqIEBkZWZncm91cCBETUFfZGF0YV90cmFuc2Zlcl9kaXJlY3Rpb24gCisgICogQHsKKyAgKi8KKworI2RlZmluZSBETUFfRElSX1BlcmlwaGVyYWxEU1QgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAxMCkKKyNkZWZpbmUgRE1BX0RJUl9QZXJpcGhlcmFsU1JDICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDApCisjZGVmaW5lIElTX0RNQV9ESVIoRElSKSAoKChESVIpID09IERNQV9ESVJfUGVyaXBoZXJhbERTVCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICgoRElSKSA9PSBETUFfRElSX1BlcmlwaGVyYWxTUkMpKQorLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBETUFfcGVyaXBoZXJhbF9pbmNyZW1lbnRlZF9tb2RlIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgRE1BX1BlcmlwaGVyYWxJbmNfRW5hYmxlICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwNDApCisjZGVmaW5lIERNQV9QZXJpcGhlcmFsSW5jX0Rpc2FibGUgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAwKQorI2RlZmluZSBJU19ETUFfUEVSSVBIRVJBTF9JTkNfU1RBVEUoU1RBVEUpICgoKFNUQVRFKSA9PSBETUFfUGVyaXBoZXJhbEluY19FbmFibGUpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChTVEFURSkgPT0gRE1BX1BlcmlwaGVyYWxJbmNfRGlzYWJsZSkpCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIERNQV9tZW1vcnlfaW5jcmVtZW50ZWRfbW9kZSAKKyAgKiBAeworICAqLworCisjZGVmaW5lIERNQV9NZW1vcnlJbmNfRW5hYmxlICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDgwKQorI2RlZmluZSBETUFfTWVtb3J5SW5jX0Rpc2FibGUgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMCkKKyNkZWZpbmUgSVNfRE1BX01FTU9SWV9JTkNfU1RBVEUoU1RBVEUpICgoKFNUQVRFKSA9PSBETUFfTWVtb3J5SW5jX0VuYWJsZSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoU1RBVEUpID09IERNQV9NZW1vcnlJbmNfRGlzYWJsZSkpCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIERNQV9wZXJpcGhlcmFsX2RhdGFfc2l6ZSAKKyAgKiBAeworICAqLworCisjZGVmaW5lIERNQV9QZXJpcGhlcmFsRGF0YVNpemVfQnl0ZSAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAwKQorI2RlZmluZSBETUFfUGVyaXBoZXJhbERhdGFTaXplX0hhbGZXb3JkICAgICgodWludDMyX3QpMHgwMDAwMDEwMCkKKyNkZWZpbmUgRE1BX1BlcmlwaGVyYWxEYXRhU2l6ZV9Xb3JkICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAyMDApCisjZGVmaW5lIElTX0RNQV9QRVJJUEhFUkFMX0RBVEFfU0laRShTSVpFKSAoKChTSVpFKSA9PSBETUFfUGVyaXBoZXJhbERhdGFTaXplX0J5dGUpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFNJWkUpID09IERNQV9QZXJpcGhlcmFsRGF0YVNpemVfSGFsZldvcmQpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFNJWkUpID09IERNQV9QZXJpcGhlcmFsRGF0YVNpemVfV29yZCkpCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIERNQV9tZW1vcnlfZGF0YV9zaXplIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgRE1BX01lbW9yeURhdGFTaXplX0J5dGUgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDApCisjZGVmaW5lIERNQV9NZW1vcnlEYXRhU2l6ZV9IYWxmV29yZCAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwNDAwKQorI2RlZmluZSBETUFfTWVtb3J5RGF0YVNpemVfV29yZCAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkKKyNkZWZpbmUgSVNfRE1BX01FTU9SWV9EQVRBX1NJWkUoU0laRSkgKCgoU0laRSkgPT0gRE1BX01lbW9yeURhdGFTaXplX0J5dGUpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoU0laRSkgPT0gRE1BX01lbW9yeURhdGFTaXplX0hhbGZXb3JkKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFNJWkUpID09IERNQV9NZW1vcnlEYXRhU2l6ZV9Xb3JkKSkKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgRE1BX2NpcmN1bGFyX25vcm1hbF9tb2RlIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgRE1BX01vZGVfQ2lyY3VsYXIgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMjApCisjZGVmaW5lIERNQV9Nb2RlX05vcm1hbCAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAwKQorI2RlZmluZSBJU19ETUFfTU9ERShNT0RFKSAoKChNT0RFKSA9PSBETUFfTW9kZV9DaXJjdWxhcikgfHwgKChNT0RFKSA9PSBETUFfTW9kZV9Ob3JtYWwpKQorLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBETUFfcHJpb3JpdHlfbGV2ZWwgCisgICogQHsKKyAgKi8KKworI2RlZmluZSBETUFfUHJpb3JpdHlfVmVyeUhpZ2ggICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMzAwMCkKKyNkZWZpbmUgRE1BX1ByaW9yaXR5X0hpZ2ggICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApCisjZGVmaW5lIERNQV9Qcmlvcml0eV9NZWRpdW0gICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKQorI2RlZmluZSBETUFfUHJpb3JpdHlfTG93ICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMCkKKyNkZWZpbmUgSVNfRE1BX1BSSU9SSVRZKFBSSU9SSVRZKSAoKChQUklPUklUWSkgPT0gRE1BX1ByaW9yaXR5X1ZlcnlIaWdoKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUFJJT1JJVFkpID09IERNQV9Qcmlvcml0eV9IaWdoKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUFJJT1JJVFkpID09IERNQV9Qcmlvcml0eV9NZWRpdW0pIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQUklPUklUWSkgPT0gRE1BX1ByaW9yaXR5X0xvdykpCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIERNQV9tZW1vcnlfdG9fbWVtb3J5IAorICAqIEB7CisgICovCisKKyNkZWZpbmUgRE1BX00yTV9FbmFibGUgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDQwMDApCisjZGVmaW5lIERNQV9NMk1fRGlzYWJsZSAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAwKQorI2RlZmluZSBJU19ETUFfTTJNX1NUQVRFKFNUQVRFKSAoKChTVEFURSkgPT0gRE1BX00yTV9FbmFibGUpIHx8ICgoU1RBVEUpID09IERNQV9NMk1fRGlzYWJsZSkpCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgRE1BX2ludGVycnVwdHNfZGVmaW5pdGlvbiAKKyAgKiBAeworICAqLworCisjZGVmaW5lIERNQV9JVF9UQyAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAyKQorI2RlZmluZSBETUFfSVRfSFQgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNCkKKyNkZWZpbmUgRE1BX0lUX1RFICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDgpCisjZGVmaW5lIElTX0RNQV9DT05GSUdfSVQoSVQpICgoKChJVCkgJiAweEZGRkZGRkYxKSA9PSAweDAwKSAmJiAoKElUKSAhPSAweDAwKSkKKworI2RlZmluZSBETUExX0lUX0dMMSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkKKyNkZWZpbmUgRE1BMV9JVF9UQzEgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpCisjZGVmaW5lIERNQTFfSVRfSFQxICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KQorI2RlZmluZSBETUExX0lUX1RFMSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkKKyNkZWZpbmUgRE1BMV9JVF9HTDIgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApCisjZGVmaW5lIERNQTFfSVRfVEMyICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKQorI2RlZmluZSBETUExX0lUX0hUMiAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkKKyNkZWZpbmUgRE1BMV9JVF9URTIgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApCisjZGVmaW5lIERNQTFfSVRfR0wzICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKQorI2RlZmluZSBETUExX0lUX1RDMyAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkKKyNkZWZpbmUgRE1BMV9JVF9IVDMgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApCisjZGVmaW5lIERNQTFfSVRfVEUzICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwODAwKQorI2RlZmluZSBETUExX0lUX0dMNCAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMTAwMCkKKyNkZWZpbmUgRE1BMV9JVF9UQzQgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApCisjZGVmaW5lIERNQTFfSVRfSFQ0ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA0MDAwKQorI2RlZmluZSBETUExX0lUX1RFNCAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwODAwMCkKKyNkZWZpbmUgRE1BMV9JVF9HTDUgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMTAwMDApCisjZGVmaW5lIERNQTFfSVRfVEM1ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDIwMDAwKQorI2RlZmluZSBETUExX0lUX0hUNSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA0MDAwMCkKKyNkZWZpbmUgRE1BMV9JVF9URTUgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApCisjZGVmaW5lIERNQTFfSVRfR0w2ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMTAwMDAwKQorI2RlZmluZSBETUExX0lUX1RDNiAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDIwMDAwMCkKKyNkZWZpbmUgRE1BMV9JVF9IVDYgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApCisjZGVmaW5lIERNQTFfSVRfVEU2ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwODAwMDAwKQorI2RlZmluZSBETUExX0lUX0dMNyAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMTAwMDAwMCkKKyNkZWZpbmUgRE1BMV9JVF9UQzcgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDIwMDAwMDApCisjZGVmaW5lIERNQTFfSVRfSFQ3ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA0MDAwMDAwKQorI2RlZmluZSBETUExX0lUX1RFNyAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwODAwMDAwMCkKKworI2RlZmluZSBETUEyX0lUX0dMMSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgxMDAwMDAwMSkKKyNkZWZpbmUgRE1BMl9JVF9UQzEgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwMDIpCisjZGVmaW5lIERNQTJfSVRfSFQxICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDEwMDAwMDA0KQorI2RlZmluZSBETUEyX0lUX1RFMSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgxMDAwMDAwOCkKKyNkZWZpbmUgRE1BMl9JVF9HTDIgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwMTApCisjZGVmaW5lIERNQTJfSVRfVEMyICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDEwMDAwMDIwKQorI2RlZmluZSBETUEyX0lUX0hUMiAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgxMDAwMDA0MCkKKyNkZWZpbmUgRE1BMl9JVF9URTIgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwODApCisjZGVmaW5lIERNQTJfSVRfR0wzICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDEwMDAwMTAwKQorI2RlZmluZSBETUEyX0lUX1RDMyAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgxMDAwMDIwMCkKKyNkZWZpbmUgRE1BMl9JVF9IVDMgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDA0MDApCisjZGVmaW5lIERNQTJfSVRfVEUzICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDEwMDAwODAwKQorI2RlZmluZSBETUEyX0lUX0dMNCAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgxMDAwMTAwMCkKKyNkZWZpbmUgRE1BMl9JVF9UQzQgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDIwMDApCisjZGVmaW5lIERNQTJfSVRfSFQ0ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDEwMDA0MDAwKQorI2RlZmluZSBETUEyX0lUX1RFNCAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgxMDAwODAwMCkKKyNkZWZpbmUgRE1BMl9JVF9HTDUgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMTAwMDApCisjZGVmaW5lIERNQTJfSVRfVEM1ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDEwMDIwMDAwKQorI2RlZmluZSBETUEyX0lUX0hUNSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgxMDA0MDAwMCkKKyNkZWZpbmUgRE1BMl9JVF9URTUgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwODAwMDApCisKKyNkZWZpbmUgSVNfRE1BX0NMRUFSX0lUKElUKSAoKCgoKElUKSAmIDB4RjAwMDAwMDApID09IDB4MDApIHx8ICgoKElUKSAmIDB4RUZGMDAwMDApID09IDB4MDApKSAmJiAoKElUKSAhPSAweDAwKSkKKworI2RlZmluZSBJU19ETUFfR0VUX0lUKElUKSAoKChJVCkgPT0gRE1BMV9JVF9HTDEpIHx8ICgoSVQpID09IERNQTFfSVRfVEMxKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoKElUKSA9PSBETUExX0lUX0hUMSkgfHwgKChJVCkgPT0gRE1BMV9JVF9URTEpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgoSVQpID09IERNQTFfSVRfR0wyKSB8fCAoKElUKSA9PSBETUExX0lUX1RDMikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJVCkgPT0gRE1BMV9JVF9IVDIpIHx8ICgoSVQpID09IERNQTFfSVRfVEUyKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoKElUKSA9PSBETUExX0lUX0dMMykgfHwgKChJVCkgPT0gRE1BMV9JVF9UQzMpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgoSVQpID09IERNQTFfSVRfSFQzKSB8fCAoKElUKSA9PSBETUExX0lUX1RFMykgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJVCkgPT0gRE1BMV9JVF9HTDQpIHx8ICgoSVQpID09IERNQTFfSVRfVEM0KSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoKElUKSA9PSBETUExX0lUX0hUNCkgfHwgKChJVCkgPT0gRE1BMV9JVF9URTQpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgoSVQpID09IERNQTFfSVRfR0w1KSB8fCAoKElUKSA9PSBETUExX0lUX1RDNSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJVCkgPT0gRE1BMV9JVF9IVDUpIHx8ICgoSVQpID09IERNQTFfSVRfVEU1KSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoKElUKSA9PSBETUExX0lUX0dMNikgfHwgKChJVCkgPT0gRE1BMV9JVF9UQzYpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgoSVQpID09IERNQTFfSVRfSFQ2KSB8fCAoKElUKSA9PSBETUExX0lUX1RFNikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJVCkgPT0gRE1BMV9JVF9HTDcpIHx8ICgoSVQpID09IERNQTFfSVRfVEM3KSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoKElUKSA9PSBETUExX0lUX0hUNykgfHwgKChJVCkgPT0gRE1BMV9JVF9URTcpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgoSVQpID09IERNQTJfSVRfR0wxKSB8fCAoKElUKSA9PSBETUEyX0lUX1RDMSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJVCkgPT0gRE1BMl9JVF9IVDEpIHx8ICgoSVQpID09IERNQTJfSVRfVEUxKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoKElUKSA9PSBETUEyX0lUX0dMMikgfHwgKChJVCkgPT0gRE1BMl9JVF9UQzIpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgoSVQpID09IERNQTJfSVRfSFQyKSB8fCAoKElUKSA9PSBETUEyX0lUX1RFMikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJVCkgPT0gRE1BMl9JVF9HTDMpIHx8ICgoSVQpID09IERNQTJfSVRfVEMzKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoKElUKSA9PSBETUEyX0lUX0hUMykgfHwgKChJVCkgPT0gRE1BMl9JVF9URTMpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgoSVQpID09IERNQTJfSVRfR0w0KSB8fCAoKElUKSA9PSBETUEyX0lUX1RDNCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJVCkgPT0gRE1BMl9JVF9IVDQpIHx8ICgoSVQpID09IERNQTJfSVRfVEU0KSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoKElUKSA9PSBETUEyX0lUX0dMNSkgfHwgKChJVCkgPT0gRE1BMl9JVF9UQzUpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgoSVQpID09IERNQTJfSVRfSFQ1KSB8fCAoKElUKSA9PSBETUEyX0lUX1RFNSkpCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgRE1BX2ZsYWdzX2RlZmluaXRpb24gCisgICogQHsKKyAgKi8KKyNkZWZpbmUgRE1BMV9GTEFHX0dMMSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDEpCisjZGVmaW5lIERNQTFfRkxBR19UQzEgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAyKQorI2RlZmluZSBETUExX0ZMQUdfSFQxICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNCkKKyNkZWZpbmUgRE1BMV9GTEFHX1RFMSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDgpCisjZGVmaW5lIERNQTFfRkxBR19HTDIgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDEwKQorI2RlZmluZSBETUExX0ZMQUdfVEMyICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAyMCkKKyNkZWZpbmUgRE1BMV9GTEFHX0hUMiAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwNDApCisjZGVmaW5lIERNQTFfRkxBR19URTIgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDgwKQorI2RlZmluZSBETUExX0ZMQUdfR0wzICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDEwMCkKKyNkZWZpbmUgRE1BMV9GTEFHX1RDMyAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAyMDApCisjZGVmaW5lIERNQTFfRkxBR19IVDMgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwNDAwKQorI2RlZmluZSBETUExX0ZMQUdfVEUzICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkKKyNkZWZpbmUgRE1BMV9GTEFHX0dMNCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDEwMDApCisjZGVmaW5lIERNQTFfRkxBR19UQzQgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAyMDAwKQorI2RlZmluZSBETUExX0ZMQUdfSFQ0ICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkKKyNkZWZpbmUgRE1BMV9GTEFHX1RFNCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDgwMDApCisjZGVmaW5lIERNQTFfRkxBR19HTDUgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDEwMDAwKQorI2RlZmluZSBETUExX0ZMQUdfVEM1ICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkKKyNkZWZpbmUgRE1BMV9GTEFHX0hUNSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwNDAwMDApCisjZGVmaW5lIERNQTFfRkxBR19URTUgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDgwMDAwKQorI2RlZmluZSBETUExX0ZMQUdfR0w2ICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDEwMDAwMCkKKyNkZWZpbmUgRE1BMV9GTEFHX1RDNiAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAyMDAwMDApCisjZGVmaW5lIERNQTFfRkxBR19IVDYgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwNDAwMDAwKQorI2RlZmluZSBETUExX0ZMQUdfVEU2ICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDgwMDAwMCkKKyNkZWZpbmUgRE1BMV9GTEFHX0dMNyAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDEwMDAwMDApCisjZGVmaW5lIERNQTFfRkxBR19UQzcgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAyMDAwMDAwKQorI2RlZmluZSBETUExX0ZMQUdfSFQ3ICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwNDAwMDAwMCkKKyNkZWZpbmUgRE1BMV9GTEFHX1RFNyAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDgwMDAwMDApCisKKyNkZWZpbmUgRE1BMl9GTEFHX0dMMSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwMDEpCisjZGVmaW5lIERNQTJfRkxBR19UQzEgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDEwMDAwMDAyKQorI2RlZmluZSBETUEyX0ZMQUdfSFQxICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgxMDAwMDAwNCkKKyNkZWZpbmUgRE1BMl9GTEFHX1RFMSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwMDgpCisjZGVmaW5lIERNQTJfRkxBR19HTDIgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDEwMDAwMDEwKQorI2RlZmluZSBETUEyX0ZMQUdfVEMyICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgxMDAwMDAyMCkKKyNkZWZpbmUgRE1BMl9GTEFHX0hUMiAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwNDApCisjZGVmaW5lIERNQTJfRkxBR19URTIgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDEwMDAwMDgwKQorI2RlZmluZSBETUEyX0ZMQUdfR0wzICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgxMDAwMDEwMCkKKyNkZWZpbmUgRE1BMl9GTEFHX1RDMyAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAyMDApCisjZGVmaW5lIERNQTJfRkxBR19IVDMgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDEwMDAwNDAwKQorI2RlZmluZSBETUEyX0ZMQUdfVEUzICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgxMDAwMDgwMCkKKyNkZWZpbmUgRE1BMl9GTEFHX0dMNCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDEwMDApCisjZGVmaW5lIERNQTJfRkxBR19UQzQgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDEwMDAyMDAwKQorI2RlZmluZSBETUEyX0ZMQUdfSFQ0ICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgxMDAwNDAwMCkKKyNkZWZpbmUgRE1BMl9GTEFHX1RFNCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDgwMDApCisjZGVmaW5lIERNQTJfRkxBR19HTDUgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDEwMDEwMDAwKQorI2RlZmluZSBETUEyX0ZMQUdfVEM1ICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgxMDAyMDAwMCkKKyNkZWZpbmUgRE1BMl9GTEFHX0hUNSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwNDAwMDApCisjZGVmaW5lIERNQTJfRkxBR19URTUgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDEwMDgwMDAwKQorCisjZGVmaW5lIElTX0RNQV9DTEVBUl9GTEFHKEZMQUcpICgoKCgoRkxBRykgJiAweEYwMDAwMDAwKSA9PSAweDAwKSB8fCAoKChGTEFHKSAmIDB4RUZGMDAwMDApID09IDB4MDApKSAmJiAoKEZMQUcpICE9IDB4MDApKQorCisjZGVmaW5lIElTX0RNQV9HRVRfRkxBRyhGTEFHKSAoKChGTEFHKSA9PSBETUExX0ZMQUdfR0wxKSB8fCAoKEZMQUcpID09IERNQTFfRkxBR19UQzEpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEZMQUcpID09IERNQTFfRkxBR19IVDEpIHx8ICgoRkxBRykgPT0gRE1BMV9GTEFHX1RFMSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRkxBRykgPT0gRE1BMV9GTEFHX0dMMikgfHwgKChGTEFHKSA9PSBETUExX0ZMQUdfVEMyKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChGTEFHKSA9PSBETUExX0ZMQUdfSFQyKSB8fCAoKEZMQUcpID09IERNQTFfRkxBR19URTIpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEZMQUcpID09IERNQTFfRkxBR19HTDMpIHx8ICgoRkxBRykgPT0gRE1BMV9GTEFHX1RDMykgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRkxBRykgPT0gRE1BMV9GTEFHX0hUMykgfHwgKChGTEFHKSA9PSBETUExX0ZMQUdfVEUzKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChGTEFHKSA9PSBETUExX0ZMQUdfR0w0KSB8fCAoKEZMQUcpID09IERNQTFfRkxBR19UQzQpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEZMQUcpID09IERNQTFfRkxBR19IVDQpIHx8ICgoRkxBRykgPT0gRE1BMV9GTEFHX1RFNCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRkxBRykgPT0gRE1BMV9GTEFHX0dMNSkgfHwgKChGTEFHKSA9PSBETUExX0ZMQUdfVEM1KSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChGTEFHKSA9PSBETUExX0ZMQUdfSFQ1KSB8fCAoKEZMQUcpID09IERNQTFfRkxBR19URTUpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEZMQUcpID09IERNQTFfRkxBR19HTDYpIHx8ICgoRkxBRykgPT0gRE1BMV9GTEFHX1RDNikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRkxBRykgPT0gRE1BMV9GTEFHX0hUNikgfHwgKChGTEFHKSA9PSBETUExX0ZMQUdfVEU2KSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChGTEFHKSA9PSBETUExX0ZMQUdfR0w3KSB8fCAoKEZMQUcpID09IERNQTFfRkxBR19UQzcpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEZMQUcpID09IERNQTFfRkxBR19IVDcpIHx8ICgoRkxBRykgPT0gRE1BMV9GTEFHX1RFNykgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRkxBRykgPT0gRE1BMl9GTEFHX0dMMSkgfHwgKChGTEFHKSA9PSBETUEyX0ZMQUdfVEMxKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChGTEFHKSA9PSBETUEyX0ZMQUdfSFQxKSB8fCAoKEZMQUcpID09IERNQTJfRkxBR19URTEpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEZMQUcpID09IERNQTJfRkxBR19HTDIpIHx8ICgoRkxBRykgPT0gRE1BMl9GTEFHX1RDMikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRkxBRykgPT0gRE1BMl9GTEFHX0hUMikgfHwgKChGTEFHKSA9PSBETUEyX0ZMQUdfVEUyKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChGTEFHKSA9PSBETUEyX0ZMQUdfR0wzKSB8fCAoKEZMQUcpID09IERNQTJfRkxBR19UQzMpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEZMQUcpID09IERNQTJfRkxBR19IVDMpIHx8ICgoRkxBRykgPT0gRE1BMl9GTEFHX1RFMykgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRkxBRykgPT0gRE1BMl9GTEFHX0dMNCkgfHwgKChGTEFHKSA9PSBETUEyX0ZMQUdfVEM0KSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChGTEFHKSA9PSBETUEyX0ZMQUdfSFQ0KSB8fCAoKEZMQUcpID09IERNQTJfRkxBR19URTQpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEZMQUcpID09IERNQTJfRkxBR19HTDUpIHx8ICgoRkxBRykgPT0gRE1BMl9GTEFHX1RDNSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRkxBRykgPT0gRE1BMl9GTEFHX0hUNSkgfHwgKChGTEFHKSA9PSBETUEyX0ZMQUdfVEU1KSkKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgRE1BX0J1ZmZlcl9TaXplIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgSVNfRE1BX0JVRkZFUl9TSVpFKFNJWkUpICgoKFNJWkUpID49IDB4MSkgJiYgKChTSVpFKSA8IDB4MTAwMDApKQorCisvKioKKyAgKiBAfQorICAqLworCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIERNQV9FeHBvcnRlZF9NYWNyb3MKKyAgKiBAeworICAqLworCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIERNQV9FeHBvcnRlZF9GdW5jdGlvbnMKKyAgKiBAeworICAqLworCit2b2lkIERNQV9EZUluaXQoRE1BX0NoYW5uZWxfVHlwZURlZiogRE1BeV9DaGFubmVseCk7Cit2b2lkIERNQV9Jbml0KERNQV9DaGFubmVsX1R5cGVEZWYqIERNQXlfQ2hhbm5lbHgsIERNQV9Jbml0VHlwZURlZiogRE1BX0luaXRTdHJ1Y3QpOwordm9pZCBETUFfU3RydWN0SW5pdChETUFfSW5pdFR5cGVEZWYqIERNQV9Jbml0U3RydWN0KTsKK3ZvaWQgRE1BX0NtZChETUFfQ2hhbm5lbF9UeXBlRGVmKiBETUF5X0NoYW5uZWx4LCBGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpOwordm9pZCBETUFfSVRDb25maWcoRE1BX0NoYW5uZWxfVHlwZURlZiogRE1BeV9DaGFubmVseCwgdWludDMyX3QgRE1BX0lULCBGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpOwordm9pZCBETUFfU2V0Q3VyckRhdGFDb3VudGVyKERNQV9DaGFubmVsX1R5cGVEZWYqIERNQXlfQ2hhbm5lbHgsIHVpbnQxNl90IERhdGFOdW1iZXIpOyAKK3VpbnQxNl90IERNQV9HZXRDdXJyRGF0YUNvdW50ZXIoRE1BX0NoYW5uZWxfVHlwZURlZiogRE1BeV9DaGFubmVseCk7CitGbGFnU3RhdHVzIERNQV9HZXRGbGFnU3RhdHVzKHVpbnQzMl90IERNQXlfRkxBRyk7Cit2b2lkIERNQV9DbGVhckZsYWcodWludDMyX3QgRE1BeV9GTEFHKTsKK0lUU3RhdHVzIERNQV9HZXRJVFN0YXR1cyh1aW50MzJfdCBETUF5X0lUKTsKK3ZvaWQgRE1BX0NsZWFySVRQZW5kaW5nQml0KHVpbnQzMl90IERNQXlfSVQpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLypfX1NUTTMyRjEweF9ETUFfSCAqLworLyoqCisgICogQH0KKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCAyMDExIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL3N0X2Z3X2xpYi9pbmMvc3RtMzJmMTB4X2V4dGkuaCBiL3N0X2Z3X2xpYi9pbmMvc3RtMzJmMTB4X2V4dGkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYjlkN2Y2Ci0tLSAvZGV2L251bGwKKysrIGIvc3RfZndfbGliL2luYy9zdG0zMmYxMHhfZXh0aS5oCkBAIC0wLDAgKzEsMTg0IEBACisvKioKKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICogQGZpbGUgICAgc3RtMzJmMTB4X2V4dGkuaAorICAqIEBhdXRob3IgIE1DRCBBcHBsaWNhdGlvbiBUZWFtCisgICogQHZlcnNpb24gVjMuNS4wCisgICogQGRhdGUgICAgMTEtTWFyY2gtMjAxMQorICAqIEBicmllZiAgIFRoaXMgZmlsZSBjb250YWlucyBhbGwgdGhlIGZ1bmN0aW9ucyBwcm90b3R5cGVzIGZvciB0aGUgRVhUSSBmaXJtd2FyZQorICAqICAgICAgICAgIGxpYnJhcnkuCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqIEBhdHRlbnRpb24KKyAgKgorICAqIFRIRSBQUkVTRU5UIEZJUk1XQVJFIFdISUNIIElTIEZPUiBHVUlEQU5DRSBPTkxZIEFJTVMgQVQgUFJPVklESU5HIENVU1RPTUVSUworICAqIFdJVEggQ09ESU5HIElORk9STUFUSU9OIFJFR0FSRElORyBUSEVJUiBQUk9EVUNUUyBJTiBPUkRFUiBGT1IgVEhFTSBUTyBTQVZFCisgICogVElNRS4gQVMgQSBSRVNVTFQsIFNUTUlDUk9FTEVDVFJPTklDUyBTSEFMTCBOT1QgQkUgSEVMRCBMSUFCTEUgRk9SIEFOWQorICAqIERJUkVDVCwgSU5ESVJFQ1QgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIFdJVEggUkVTUEVDVCBUTyBBTlkgQ0xBSU1TIEFSSVNJTkcKKyAgKiBGUk9NIFRIRSBDT05URU5UIE9GIFNVQ0ggRklSTVdBUkUgQU5EL09SIFRIRSBVU0UgTUFERSBCWSBDVVNUT01FUlMgT0YgVEhFCisgICogQ09ESU5HIElORk9STUFUSU9OIENPTlRBSU5FRCBIRVJFSU4gSU4gQ09OTkVDVElPTiBXSVRIIFRIRUlSIFBST0RVQ1RTLgorICAqCisgICogPGgyPjxjZW50ZXI+JmNvcHk7IENPUFlSSUdIVCAyMDExIFNUTWljcm9lbGVjdHJvbmljczwvY2VudGVyPjwvaDI+CisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqLworCisvKiBEZWZpbmUgdG8gcHJldmVudCByZWN1cnNpdmUgaW5jbHVzaW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworI2lmbmRlZiBfX1NUTTMyRjEweF9FWFRJX0gKKyNkZWZpbmUgX19TVE0zMkYxMHhfRVhUSV9ICisKKyNpZmRlZiBfX2NwbHVzcGx1cworIGV4dGVybiAiQyIgeworI2VuZGlmCisKKy8qIEluY2x1ZGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisjaW5jbHVkZSAic3RtMzJmMTB4LmgiCisKKy8qKiBAYWRkdG9ncm91cCBTVE0zMkYxMHhfU3RkUGVyaXBoX0RyaXZlcgorICAqIEB7CisgICovCisKKy8qKiBAYWRkdG9ncm91cCBFWFRJCisgICogQHsKKyAgKi8KKworLyoqIEBkZWZncm91cCBFWFRJX0V4cG9ydGVkX1R5cGVzCisgICogQHsKKyAgKi8KKworLyoqIAorICAqIEBicmllZiAgRVhUSSBtb2RlIGVudW1lcmF0aW9uICAKKyAgKi8KKwordHlwZWRlZiBlbnVtCit7CisgIEVYVElfTW9kZV9JbnRlcnJ1cHQgPSAweDAwLAorICBFWFRJX01vZGVfRXZlbnQgPSAweDA0Cit9RVhUSU1vZGVfVHlwZURlZjsKKworI2RlZmluZSBJU19FWFRJX01PREUoTU9ERSkgKCgoTU9ERSkgPT0gRVhUSV9Nb2RlX0ludGVycnVwdCkgfHwgKChNT0RFKSA9PSBFWFRJX01vZGVfRXZlbnQpKQorCisvKiogCisgICogQGJyaWVmICBFWFRJIFRyaWdnZXIgZW51bWVyYXRpb24gIAorICAqLworCit0eXBlZGVmIGVudW0KK3sKKyAgRVhUSV9UcmlnZ2VyX1Jpc2luZyA9IDB4MDgsCisgIEVYVElfVHJpZ2dlcl9GYWxsaW5nID0gMHgwQywgIAorICBFWFRJX1RyaWdnZXJfUmlzaW5nX0ZhbGxpbmcgPSAweDEwCit9RVhUSVRyaWdnZXJfVHlwZURlZjsKKworI2RlZmluZSBJU19FWFRJX1RSSUdHRVIoVFJJR0dFUikgKCgoVFJJR0dFUikgPT0gRVhUSV9UcmlnZ2VyX1Jpc2luZykgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoVFJJR0dFUikgPT0gRVhUSV9UcmlnZ2VyX0ZhbGxpbmcpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFRSSUdHRVIpID09IEVYVElfVHJpZ2dlcl9SaXNpbmdfRmFsbGluZykpCisvKiogCisgICogQGJyaWVmICBFWFRJIEluaXQgU3RydWN0dXJlIGRlZmluaXRpb24gIAorICAqLworCit0eXBlZGVmIHN0cnVjdAoreworICB1aW50MzJfdCBFWFRJX0xpbmU7ICAgICAgICAgICAgICAgLyohPCBTcGVjaWZpZXMgdGhlIEVYVEkgbGluZXMgdG8gYmUgZW5hYmxlZCBvciBkaXNhYmxlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGFueSBjb21iaW5hdGlvbiBvZiBAcmVmIEVYVElfTGluZXMgKi8KKyAgIAorICBFWFRJTW9kZV9UeXBlRGVmIEVYVElfTW9kZTsgICAgICAgLyohPCBTcGVjaWZpZXMgdGhlIG1vZGUgZm9yIHRoZSBFWFRJIGxpbmVzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIEVYVElNb2RlX1R5cGVEZWYgKi8KKworICBFWFRJVHJpZ2dlcl9UeXBlRGVmIEVYVElfVHJpZ2dlcjsgLyohPCBTcGVjaWZpZXMgdGhlIHRyaWdnZXIgc2lnbmFsIGFjdGl2ZSBlZGdlIGZvciB0aGUgRVhUSSBsaW5lcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBFWFRJTW9kZV9UeXBlRGVmICovCisKKyAgRnVuY3Rpb25hbFN0YXRlIEVYVElfTGluZUNtZDsgICAgIC8qITwgU3BlY2lmaWVzIHRoZSBuZXcgc3RhdGUgb2YgdGhlIHNlbGVjdGVkIEVYVEkgbGluZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBzZXQgZWl0aGVyIHRvIEVOQUJMRSBvciBESVNBQkxFICovIAorfUVYVElfSW5pdFR5cGVEZWY7CisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgRVhUSV9FeHBvcnRlZF9Db25zdGFudHMKKyAgKiBAeworICAqLworCisvKiogQGRlZmdyb3VwIEVYVElfTGluZXMgCisgICogQHsKKyAgKi8KKworI2RlZmluZSBFWFRJX0xpbmUwICAgICAgICgodWludDMyX3QpMHgwMDAwMSkgIC8qITwgRXh0ZXJuYWwgaW50ZXJydXB0IGxpbmUgMCAqLworI2RlZmluZSBFWFRJX0xpbmUxICAgICAgICgodWludDMyX3QpMHgwMDAwMikgIC8qITwgRXh0ZXJuYWwgaW50ZXJydXB0IGxpbmUgMSAqLworI2RlZmluZSBFWFRJX0xpbmUyICAgICAgICgodWludDMyX3QpMHgwMDAwNCkgIC8qITwgRXh0ZXJuYWwgaW50ZXJydXB0IGxpbmUgMiAqLworI2RlZmluZSBFWFRJX0xpbmUzICAgICAgICgodWludDMyX3QpMHgwMDAwOCkgIC8qITwgRXh0ZXJuYWwgaW50ZXJydXB0IGxpbmUgMyAqLworI2RlZmluZSBFWFRJX0xpbmU0ICAgICAgICgodWludDMyX3QpMHgwMDAxMCkgIC8qITwgRXh0ZXJuYWwgaW50ZXJydXB0IGxpbmUgNCAqLworI2RlZmluZSBFWFRJX0xpbmU1ICAgICAgICgodWludDMyX3QpMHgwMDAyMCkgIC8qITwgRXh0ZXJuYWwgaW50ZXJydXB0IGxpbmUgNSAqLworI2RlZmluZSBFWFRJX0xpbmU2ICAgICAgICgodWludDMyX3QpMHgwMDA0MCkgIC8qITwgRXh0ZXJuYWwgaW50ZXJydXB0IGxpbmUgNiAqLworI2RlZmluZSBFWFRJX0xpbmU3ICAgICAgICgodWludDMyX3QpMHgwMDA4MCkgIC8qITwgRXh0ZXJuYWwgaW50ZXJydXB0IGxpbmUgNyAqLworI2RlZmluZSBFWFRJX0xpbmU4ICAgICAgICgodWludDMyX3QpMHgwMDEwMCkgIC8qITwgRXh0ZXJuYWwgaW50ZXJydXB0IGxpbmUgOCAqLworI2RlZmluZSBFWFRJX0xpbmU5ICAgICAgICgodWludDMyX3QpMHgwMDIwMCkgIC8qITwgRXh0ZXJuYWwgaW50ZXJydXB0IGxpbmUgOSAqLworI2RlZmluZSBFWFRJX0xpbmUxMCAgICAgICgodWludDMyX3QpMHgwMDQwMCkgIC8qITwgRXh0ZXJuYWwgaW50ZXJydXB0IGxpbmUgMTAgKi8KKyNkZWZpbmUgRVhUSV9MaW5lMTEgICAgICAoKHVpbnQzMl90KTB4MDA4MDApICAvKiE8IEV4dGVybmFsIGludGVycnVwdCBsaW5lIDExICovCisjZGVmaW5lIEVYVElfTGluZTEyICAgICAgKCh1aW50MzJfdCkweDAxMDAwKSAgLyohPCBFeHRlcm5hbCBpbnRlcnJ1cHQgbGluZSAxMiAqLworI2RlZmluZSBFWFRJX0xpbmUxMyAgICAgICgodWludDMyX3QpMHgwMjAwMCkgIC8qITwgRXh0ZXJuYWwgaW50ZXJydXB0IGxpbmUgMTMgKi8KKyNkZWZpbmUgRVhUSV9MaW5lMTQgICAgICAoKHVpbnQzMl90KTB4MDQwMDApICAvKiE8IEV4dGVybmFsIGludGVycnVwdCBsaW5lIDE0ICovCisjZGVmaW5lIEVYVElfTGluZTE1ICAgICAgKCh1aW50MzJfdCkweDA4MDAwKSAgLyohPCBFeHRlcm5hbCBpbnRlcnJ1cHQgbGluZSAxNSAqLworI2RlZmluZSBFWFRJX0xpbmUxNiAgICAgICgodWludDMyX3QpMHgxMDAwMCkgIC8qITwgRXh0ZXJuYWwgaW50ZXJydXB0IGxpbmUgMTYgQ29ubmVjdGVkIHRvIHRoZSBQVkQgT3V0cHV0ICovCisjZGVmaW5lIEVYVElfTGluZTE3ICAgICAgKCh1aW50MzJfdCkweDIwMDAwKSAgLyohPCBFeHRlcm5hbCBpbnRlcnJ1cHQgbGluZSAxNyBDb25uZWN0ZWQgdG8gdGhlIFJUQyBBbGFybSBldmVudCAqLworI2RlZmluZSBFWFRJX0xpbmUxOCAgICAgICgodWludDMyX3QpMHg0MDAwMCkgIC8qITwgRXh0ZXJuYWwgaW50ZXJydXB0IGxpbmUgMTggQ29ubmVjdGVkIHRvIHRoZSBVU0IgRGV2aWNlL1VTQiBPVEcgRlMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdha2V1cCBmcm9tIHN1c3BlbmQgZXZlbnQgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyNkZWZpbmUgRVhUSV9MaW5lMTkgICAgICAoKHVpbnQzMl90KTB4ODAwMDApICAvKiE8IEV4dGVybmFsIGludGVycnVwdCBsaW5lIDE5IENvbm5lY3RlZCB0byB0aGUgRXRoZXJuZXQgV2FrZXVwIGV2ZW50ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyNkZWZpbmUgSVNfRVhUSV9MSU5FKExJTkUpICgoKChMSU5FKSAmICh1aW50MzJfdCkweEZGRjAwMDAwKSA9PSAweDAwKSAmJiAoKExJTkUpICE9ICh1aW50MTZfdCkweDAwKSkKKyNkZWZpbmUgSVNfR0VUX0VYVElfTElORShMSU5FKSAoKChMSU5FKSA9PSBFWFRJX0xpbmUwKSB8fCAoKExJTkUpID09IEVYVElfTGluZTEpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKExJTkUpID09IEVYVElfTGluZTIpIHx8ICgoTElORSkgPT0gRVhUSV9MaW5lMykgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTElORSkgPT0gRVhUSV9MaW5lNCkgfHwgKChMSU5FKSA9PSBFWFRJX0xpbmU1KSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChMSU5FKSA9PSBFWFRJX0xpbmU2KSB8fCAoKExJTkUpID09IEVYVElfTGluZTcpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKExJTkUpID09IEVYVElfTGluZTgpIHx8ICgoTElORSkgPT0gRVhUSV9MaW5lOSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTElORSkgPT0gRVhUSV9MaW5lMTApIHx8ICgoTElORSkgPT0gRVhUSV9MaW5lMTEpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKExJTkUpID09IEVYVElfTGluZTEyKSB8fCAoKExJTkUpID09IEVYVElfTGluZTEzKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChMSU5FKSA9PSBFWFRJX0xpbmUxNCkgfHwgKChMSU5FKSA9PSBFWFRJX0xpbmUxNSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTElORSkgPT0gRVhUSV9MaW5lMTYpIHx8ICgoTElORSkgPT0gRVhUSV9MaW5lMTcpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKExJTkUpID09IEVYVElfTGluZTE4KSB8fCAoKExJTkUpID09IEVYVElfTGluZTE5KSkKKworICAgICAgICAgICAgICAgICAgICAKKy8qKgorICAqIEB9CisgICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgRVhUSV9FeHBvcnRlZF9NYWNyb3MKKyAgKiBAeworICAqLworCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIEVYVElfRXhwb3J0ZWRfRnVuY3Rpb25zCisgICogQHsKKyAgKi8KKwordm9pZCBFWFRJX0RlSW5pdCh2b2lkKTsKK3ZvaWQgRVhUSV9Jbml0KEVYVElfSW5pdFR5cGVEZWYqIEVYVElfSW5pdFN0cnVjdCk7Cit2b2lkIEVYVElfU3RydWN0SW5pdChFWFRJX0luaXRUeXBlRGVmKiBFWFRJX0luaXRTdHJ1Y3QpOwordm9pZCBFWFRJX0dlbmVyYXRlU1dJbnRlcnJ1cHQodWludDMyX3QgRVhUSV9MaW5lKTsKK0ZsYWdTdGF0dXMgRVhUSV9HZXRGbGFnU3RhdHVzKHVpbnQzMl90IEVYVElfTGluZSk7Cit2b2lkIEVYVElfQ2xlYXJGbGFnKHVpbnQzMl90IEVYVElfTGluZSk7CitJVFN0YXR1cyBFWFRJX0dldElUU3RhdHVzKHVpbnQzMl90IEVYVElfTGluZSk7Cit2b2lkIEVYVElfQ2xlYXJJVFBlbmRpbmdCaXQodWludDMyX3QgRVhUSV9MaW5lKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8qIF9fU1RNMzJGMTB4X0VYVElfSCAqLworLyoqCisgICogQH0KKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCAyMDExIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL3N0X2Z3X2xpYi9pbmMvc3RtMzJmMTB4X2ZsYXNoLmggYi9zdF9md19saWIvaW5jL3N0bTMyZjEweF9mbGFzaC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzNzIwZGUKLS0tIC9kZXYvbnVsbAorKysgYi9zdF9md19saWIvaW5jL3N0bTMyZjEweF9mbGFzaC5oCkBAIC0wLDAgKzEsNDI2IEBACisvKioKKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICogQGZpbGUgICAgc3RtMzJmMTB4X2ZsYXNoLmgKKyAgKiBAYXV0aG9yICBNQ0QgQXBwbGljYXRpb24gVGVhbQorICAqIEB2ZXJzaW9uIFYzLjUuMAorICAqIEBkYXRlICAgIDExLU1hcmNoLTIwMTEKKyAgKiBAYnJpZWYgICBUaGlzIGZpbGUgY29udGFpbnMgYWxsIHRoZSBmdW5jdGlvbnMgcHJvdG90eXBlcyBmb3IgdGhlIEZMQVNIIAorICAqICAgICAgICAgIGZpcm13YXJlIGxpYnJhcnkuCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqIEBhdHRlbnRpb24KKyAgKgorICAqIFRIRSBQUkVTRU5UIEZJUk1XQVJFIFdISUNIIElTIEZPUiBHVUlEQU5DRSBPTkxZIEFJTVMgQVQgUFJPVklESU5HIENVU1RPTUVSUworICAqIFdJVEggQ09ESU5HIElORk9STUFUSU9OIFJFR0FSRElORyBUSEVJUiBQUk9EVUNUUyBJTiBPUkRFUiBGT1IgVEhFTSBUTyBTQVZFCisgICogVElNRS4gQVMgQSBSRVNVTFQsIFNUTUlDUk9FTEVDVFJPTklDUyBTSEFMTCBOT1QgQkUgSEVMRCBMSUFCTEUgRk9SIEFOWQorICAqIERJUkVDVCwgSU5ESVJFQ1QgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIFdJVEggUkVTUEVDVCBUTyBBTlkgQ0xBSU1TIEFSSVNJTkcKKyAgKiBGUk9NIFRIRSBDT05URU5UIE9GIFNVQ0ggRklSTVdBUkUgQU5EL09SIFRIRSBVU0UgTUFERSBCWSBDVVNUT01FUlMgT0YgVEhFCisgICogQ09ESU5HIElORk9STUFUSU9OIENPTlRBSU5FRCBIRVJFSU4gSU4gQ09OTkVDVElPTiBXSVRIIFRIRUlSIFBST0RVQ1RTLgorICAqCisgICogPGgyPjxjZW50ZXI+JmNvcHk7IENPUFlSSUdIVCAyMDExIFNUTWljcm9lbGVjdHJvbmljczwvY2VudGVyPjwvaDI+CisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqLworCisvKiBEZWZpbmUgdG8gcHJldmVudCByZWN1cnNpdmUgaW5jbHVzaW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworI2lmbmRlZiBfX1NUTTMyRjEweF9GTEFTSF9ICisjZGVmaW5lIF9fU1RNMzJGMTB4X0ZMQVNIX0gKKworI2lmZGVmIF9fY3BsdXNwbHVzCisgZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLyogSW5jbHVkZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyNpbmNsdWRlICJzdG0zMmYxMHguaCIKKworLyoqIEBhZGR0b2dyb3VwIFNUTTMyRjEweF9TdGRQZXJpcGhfRHJpdmVyCisgICogQHsKKyAgKi8KKworLyoqIEBhZGR0b2dyb3VwIEZMQVNICisgICogQHsKKyAgKi8KKworLyoqIEBkZWZncm91cCBGTEFTSF9FeHBvcnRlZF9UeXBlcworICAqIEB7CisgICovCisKKy8qKiAKKyAgKiBAYnJpZWYgIEZMQVNIIFN0YXR1cyAgCisgICovCisKK3R5cGVkZWYgZW51bQoreyAKKyAgRkxBU0hfQlVTWSA9IDEsCisgIEZMQVNIX0VSUk9SX1BHLAorICBGTEFTSF9FUlJPUl9XUlAsCisgIEZMQVNIX0NPTVBMRVRFLAorICBGTEFTSF9USU1FT1VUCit9RkxBU0hfU3RhdHVzOworCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIEZMQVNIX0V4cG9ydGVkX0NvbnN0YW50cworICAqIEB7CisgICovCisKKy8qKiBAZGVmZ3JvdXAgRmxhc2hfTGF0ZW5jeSAKKyAgKiBAeworICAqLworCisjZGVmaW5lIEZMQVNIX0xhdGVuY3lfMCAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDApICAvKiE8IEZMQVNIIFplcm8gTGF0ZW5jeSBjeWNsZSAqLworI2RlZmluZSBGTEFTSF9MYXRlbmN5XzEgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxKSAgLyohPCBGTEFTSCBPbmUgTGF0ZW5jeSBjeWNsZSAqLworI2RlZmluZSBGTEFTSF9MYXRlbmN5XzIgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAyKSAgLyohPCBGTEFTSCBUd28gTGF0ZW5jeSBjeWNsZXMgKi8KKyNkZWZpbmUgSVNfRkxBU0hfTEFURU5DWShMQVRFTkNZKSAoKChMQVRFTkNZKSA9PSBGTEFTSF9MYXRlbmN5XzApIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChMQVRFTkNZKSA9PSBGTEFTSF9MYXRlbmN5XzEpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChMQVRFTkNZKSA9PSBGTEFTSF9MYXRlbmN5XzIpKQorLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBIYWxmX0N5Y2xlX0VuYWJsZV9EaXNhYmxlIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgRkxBU0hfSGFsZkN5Y2xlQWNjZXNzX0VuYWJsZSAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgIC8qITwgRkxBU0ggSGFsZiBDeWNsZSBFbmFibGUgKi8KKyNkZWZpbmUgRkxBU0hfSGFsZkN5Y2xlQWNjZXNzX0Rpc2FibGUgICgodWludDMyX3QpMHgwMDAwMDAwMCkgIC8qITwgRkxBU0ggSGFsZiBDeWNsZSBEaXNhYmxlICovCisjZGVmaW5lIElTX0ZMQVNIX0hBTEZDWUNMRUFDQ0VTU19TVEFURShTVEFURSkgKCgoU1RBVEUpID09IEZMQVNIX0hhbGZDeWNsZUFjY2Vzc19FbmFibGUpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChTVEFURSkgPT0gRkxBU0hfSGFsZkN5Y2xlQWNjZXNzX0Rpc2FibGUpKSAKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgUHJlZmV0Y2hfQnVmZmVyX0VuYWJsZV9EaXNhYmxlIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgRkxBU0hfUHJlZmV0Y2hCdWZmZXJfRW5hYmxlICAgICgodWludDMyX3QpMHgwMDAwMDAxMCkgIC8qITwgRkxBU0ggUHJlZmV0Y2ggQnVmZmVyIEVuYWJsZSAqLworI2RlZmluZSBGTEFTSF9QcmVmZXRjaEJ1ZmZlcl9EaXNhYmxlICAgKCh1aW50MzJfdCkweDAwMDAwMDAwKSAgLyohPCBGTEFTSCBQcmVmZXRjaCBCdWZmZXIgRGlzYWJsZSAqLworI2RlZmluZSBJU19GTEFTSF9QUkVGRVRDSEJVRkZFUl9TVEFURShTVEFURSkgKCgoU1RBVEUpID09IEZMQVNIX1ByZWZldGNoQnVmZmVyX0VuYWJsZSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoU1RBVEUpID09IEZMQVNIX1ByZWZldGNoQnVmZmVyX0Rpc2FibGUpKSAKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgT3B0aW9uX0J5dGVzX1dyaXRlX1Byb3RlY3Rpb24gCisgICogQHsKKyAgKi8KKworLyogVmFsdWVzIHRvIGJlIHVzZWQgd2l0aCBTVE0zMiBMb3cgYW5kIE1lZGl1bSBkZW5zaXR5IGRldmljZXMgKi8KKyNkZWZpbmUgRkxBU0hfV1JQcm90X1BhZ2VzMHRvMyAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgLyohPCBTVE0zMiBMb3cgYW5kIE1lZGl1bSBkZW5zaXR5IGRldmljZXM6IFdyaXRlIHByb3RlY3Rpb24gb2YgcGFnZSAwIHRvIDMgKi8KKyNkZWZpbmUgRkxBU0hfV1JQcm90X1BhZ2VzNHRvNyAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMikgLyohPCBTVE0zMiBMb3cgYW5kIE1lZGl1bSBkZW5zaXR5IGRldmljZXM6IFdyaXRlIHByb3RlY3Rpb24gb2YgcGFnZSA0IHRvIDcgKi8KKyNkZWZpbmUgRkxBU0hfV1JQcm90X1BhZ2VzOHRvMTEgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNCkgLyohPCBTVE0zMiBMb3cgYW5kIE1lZGl1bSBkZW5zaXR5IGRldmljZXM6IFdyaXRlIHByb3RlY3Rpb24gb2YgcGFnZSA4IHRvIDExICovCisjZGVmaW5lIEZMQVNIX1dSUHJvdF9QYWdlczEydG8xNSAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDgpIC8qITwgU1RNMzIgTG93IGFuZCBNZWRpdW0gZGVuc2l0eSBkZXZpY2VzOiBXcml0ZSBwcm90ZWN0aW9uIG9mIHBhZ2UgMTIgdG8gMTUgKi8KKyNkZWZpbmUgRkxBU0hfV1JQcm90X1BhZ2VzMTZ0bzE5ICAgICAgICgodWludDMyX3QpMHgwMDAwMDAxMCkgLyohPCBTVE0zMiBMb3cgYW5kIE1lZGl1bSBkZW5zaXR5IGRldmljZXM6IFdyaXRlIHByb3RlY3Rpb24gb2YgcGFnZSAxNiB0byAxOSAqLworI2RlZmluZSBGTEFTSF9XUlByb3RfUGFnZXMyMHRvMjMgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKSAvKiE8IFNUTTMyIExvdyBhbmQgTWVkaXVtIGRlbnNpdHkgZGV2aWNlczogV3JpdGUgcHJvdGVjdGlvbiBvZiBwYWdlIDIwIHRvIDIzICovCisjZGVmaW5lIEZMQVNIX1dSUHJvdF9QYWdlczI0dG8yNyAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwNDApIC8qITwgU1RNMzIgTG93IGFuZCBNZWRpdW0gZGVuc2l0eSBkZXZpY2VzOiBXcml0ZSBwcm90ZWN0aW9uIG9mIHBhZ2UgMjQgdG8gMjcgKi8KKyNkZWZpbmUgRkxBU0hfV1JQcm90X1BhZ2VzMjh0bzMxICAgICAgICgodWludDMyX3QpMHgwMDAwMDA4MCkgLyohPCBTVE0zMiBMb3cgYW5kIE1lZGl1bSBkZW5zaXR5IGRldmljZXM6IFdyaXRlIHByb3RlY3Rpb24gb2YgcGFnZSAyOCB0byAzMSAqLworCisvKiBWYWx1ZXMgdG8gYmUgdXNlZCB3aXRoIFNUTTMyIE1lZGl1bS1kZW5zaXR5IGRldmljZXMgKi8KKyNkZWZpbmUgRkxBU0hfV1JQcm90X1BhZ2VzMzJ0bzM1ICAgICAgICgodWludDMyX3QpMHgwMDAwMDEwMCkgLyohPCBTVE0zMiBNZWRpdW0tZGVuc2l0eSBkZXZpY2VzOiBXcml0ZSBwcm90ZWN0aW9uIG9mIHBhZ2UgMzIgdG8gMzUgKi8KKyNkZWZpbmUgRkxBU0hfV1JQcm90X1BhZ2VzMzZ0bzM5ICAgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkgLyohPCBTVE0zMiBNZWRpdW0tZGVuc2l0eSBkZXZpY2VzOiBXcml0ZSBwcm90ZWN0aW9uIG9mIHBhZ2UgMzYgdG8gMzkgKi8KKyNkZWZpbmUgRkxBU0hfV1JQcm90X1BhZ2VzNDB0bzQzICAgICAgICgodWludDMyX3QpMHgwMDAwMDQwMCkgLyohPCBTVE0zMiBNZWRpdW0tZGVuc2l0eSBkZXZpY2VzOiBXcml0ZSBwcm90ZWN0aW9uIG9mIHBhZ2UgNDAgdG8gNDMgKi8KKyNkZWZpbmUgRkxBU0hfV1JQcm90X1BhZ2VzNDR0bzQ3ICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgLyohPCBTVE0zMiBNZWRpdW0tZGVuc2l0eSBkZXZpY2VzOiBXcml0ZSBwcm90ZWN0aW9uIG9mIHBhZ2UgNDQgdG8gNDcgKi8KKyNkZWZpbmUgRkxBU0hfV1JQcm90X1BhZ2VzNDh0bzUxICAgICAgICgodWludDMyX3QpMHgwMDAwMTAwMCkgLyohPCBTVE0zMiBNZWRpdW0tZGVuc2l0eSBkZXZpY2VzOiBXcml0ZSBwcm90ZWN0aW9uIG9mIHBhZ2UgNDggdG8gNTEgKi8KKyNkZWZpbmUgRkxBU0hfV1JQcm90X1BhZ2VzNTJ0bzU1ICAgICAgICgodWludDMyX3QpMHgwMDAwMjAwMCkgLyohPCBTVE0zMiBNZWRpdW0tZGVuc2l0eSBkZXZpY2VzOiBXcml0ZSBwcm90ZWN0aW9uIG9mIHBhZ2UgNTIgdG8gNTUgKi8KKyNkZWZpbmUgRkxBU0hfV1JQcm90X1BhZ2VzNTZ0bzU5ICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgLyohPCBTVE0zMiBNZWRpdW0tZGVuc2l0eSBkZXZpY2VzOiBXcml0ZSBwcm90ZWN0aW9uIG9mIHBhZ2UgNTYgdG8gNTkgKi8KKyNkZWZpbmUgRkxBU0hfV1JQcm90X1BhZ2VzNjB0bzYzICAgICAgICgodWludDMyX3QpMHgwMDAwODAwMCkgLyohPCBTVE0zMiBNZWRpdW0tZGVuc2l0eSBkZXZpY2VzOiBXcml0ZSBwcm90ZWN0aW9uIG9mIHBhZ2UgNjAgdG8gNjMgKi8KKyNkZWZpbmUgRkxBU0hfV1JQcm90X1BhZ2VzNjR0bzY3ICAgICAgICgodWludDMyX3QpMHgwMDAxMDAwMCkgLyohPCBTVE0zMiBNZWRpdW0tZGVuc2l0eSBkZXZpY2VzOiBXcml0ZSBwcm90ZWN0aW9uIG9mIHBhZ2UgNjQgdG8gNjcgKi8KKyNkZWZpbmUgRkxBU0hfV1JQcm90X1BhZ2VzNjh0bzcxICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkgLyohPCBTVE0zMiBNZWRpdW0tZGVuc2l0eSBkZXZpY2VzOiBXcml0ZSBwcm90ZWN0aW9uIG9mIHBhZ2UgNjggdG8gNzEgKi8KKyNkZWZpbmUgRkxBU0hfV1JQcm90X1BhZ2VzNzJ0bzc1ICAgICAgICgodWludDMyX3QpMHgwMDA0MDAwMCkgLyohPCBTVE0zMiBNZWRpdW0tZGVuc2l0eSBkZXZpY2VzOiBXcml0ZSBwcm90ZWN0aW9uIG9mIHBhZ2UgNzIgdG8gNzUgKi8KKyNkZWZpbmUgRkxBU0hfV1JQcm90X1BhZ2VzNzZ0bzc5ICAgICAgICgodWludDMyX3QpMHgwMDA4MDAwMCkgLyohPCBTVE0zMiBNZWRpdW0tZGVuc2l0eSBkZXZpY2VzOiBXcml0ZSBwcm90ZWN0aW9uIG9mIHBhZ2UgNzYgdG8gNzkgKi8KKyNkZWZpbmUgRkxBU0hfV1JQcm90X1BhZ2VzODB0bzgzICAgICAgICgodWludDMyX3QpMHgwMDEwMDAwMCkgLyohPCBTVE0zMiBNZWRpdW0tZGVuc2l0eSBkZXZpY2VzOiBXcml0ZSBwcm90ZWN0aW9uIG9mIHBhZ2UgODAgdG8gODMgKi8KKyNkZWZpbmUgRkxBU0hfV1JQcm90X1BhZ2VzODR0bzg3ICAgICAgICgodWludDMyX3QpMHgwMDIwMDAwMCkgLyohPCBTVE0zMiBNZWRpdW0tZGVuc2l0eSBkZXZpY2VzOiBXcml0ZSBwcm90ZWN0aW9uIG9mIHBhZ2UgODQgdG8gODcgKi8KKyNkZWZpbmUgRkxBU0hfV1JQcm90X1BhZ2VzODh0bzkxICAgICAgICgodWludDMyX3QpMHgwMDQwMDAwMCkgLyohPCBTVE0zMiBNZWRpdW0tZGVuc2l0eSBkZXZpY2VzOiBXcml0ZSBwcm90ZWN0aW9uIG9mIHBhZ2UgODggdG8gOTEgKi8KKyNkZWZpbmUgRkxBU0hfV1JQcm90X1BhZ2VzOTJ0bzk1ICAgICAgICgodWludDMyX3QpMHgwMDgwMDAwMCkgLyohPCBTVE0zMiBNZWRpdW0tZGVuc2l0eSBkZXZpY2VzOiBXcml0ZSBwcm90ZWN0aW9uIG9mIHBhZ2UgOTIgdG8gOTUgKi8KKyNkZWZpbmUgRkxBU0hfV1JQcm90X1BhZ2VzOTZ0bzk5ICAgICAgICgodWludDMyX3QpMHgwMTAwMDAwMCkgLyohPCBTVE0zMiBNZWRpdW0tZGVuc2l0eSBkZXZpY2VzOiBXcml0ZSBwcm90ZWN0aW9uIG9mIHBhZ2UgOTYgdG8gOTkgKi8KKyNkZWZpbmUgRkxBU0hfV1JQcm90X1BhZ2VzMTAwdG8xMDMgICAgICgodWludDMyX3QpMHgwMjAwMDAwMCkgLyohPCBTVE0zMiBNZWRpdW0tZGVuc2l0eSBkZXZpY2VzOiBXcml0ZSBwcm90ZWN0aW9uIG9mIHBhZ2UgMTAwIHRvIDEwMyAqLworI2RlZmluZSBGTEFTSF9XUlByb3RfUGFnZXMxMDR0bzEwNyAgICAgKCh1aW50MzJfdCkweDA0MDAwMDAwKSAvKiE8IFNUTTMyIE1lZGl1bS1kZW5zaXR5IGRldmljZXM6IFdyaXRlIHByb3RlY3Rpb24gb2YgcGFnZSAxMDQgdG8gMTA3ICovCisjZGVmaW5lIEZMQVNIX1dSUHJvdF9QYWdlczEwOHRvMTExICAgICAoKHVpbnQzMl90KTB4MDgwMDAwMDApIC8qITwgU1RNMzIgTWVkaXVtLWRlbnNpdHkgZGV2aWNlczogV3JpdGUgcHJvdGVjdGlvbiBvZiBwYWdlIDEwOCB0byAxMTEgKi8KKyNkZWZpbmUgRkxBU0hfV1JQcm90X1BhZ2VzMTEydG8xMTUgICAgICgodWludDMyX3QpMHgxMDAwMDAwMCkgLyohPCBTVE0zMiBNZWRpdW0tZGVuc2l0eSBkZXZpY2VzOiBXcml0ZSBwcm90ZWN0aW9uIG9mIHBhZ2UgMTEyIHRvIDExNSAqLworI2RlZmluZSBGTEFTSF9XUlByb3RfUGFnZXMxMTZ0bzExOSAgICAgKCh1aW50MzJfdCkweDIwMDAwMDAwKSAvKiE8IFNUTTMyIE1lZGl1bS1kZW5zaXR5IGRldmljZXM6IFdyaXRlIHByb3RlY3Rpb24gb2YgcGFnZSAxMTUgdG8gMTE5ICovCisjZGVmaW5lIEZMQVNIX1dSUHJvdF9QYWdlczEyMHRvMTIzICAgICAoKHVpbnQzMl90KTB4NDAwMDAwMDApIC8qITwgU1RNMzIgTWVkaXVtLWRlbnNpdHkgZGV2aWNlczogV3JpdGUgcHJvdGVjdGlvbiBvZiBwYWdlIDEyMCB0byAxMjMgKi8KKyNkZWZpbmUgRkxBU0hfV1JQcm90X1BhZ2VzMTI0dG8xMjcgICAgICgodWludDMyX3QpMHg4MDAwMDAwMCkgLyohPCBTVE0zMiBNZWRpdW0tZGVuc2l0eSBkZXZpY2VzOiBXcml0ZSBwcm90ZWN0aW9uIG9mIHBhZ2UgMTI0IHRvIDEyNyAqLworCisvKiBWYWx1ZXMgdG8gYmUgdXNlZCB3aXRoIFNUTTMyIEhpZ2gtZGVuc2l0eSBhbmQgU1RNMzJGMTBYIENvbm5lY3Rpdml0eSBsaW5lIGRldmljZXMgKi8KKyNkZWZpbmUgRkxBU0hfV1JQcm90X1BhZ2VzMHRvMSAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgLyohPCBTVE0zMiBIaWdoLWRlbnNpdHksIFhMLWRlbnNpdHkgYW5kIENvbm5lY3Rpdml0eSBsaW5lIGRldmljZXM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV3JpdGUgcHJvdGVjdGlvbiBvZiBwYWdlIDAgdG8gMSAqLworI2RlZmluZSBGTEFTSF9XUlByb3RfUGFnZXMydG8zICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAyKSAvKiE8IFNUTTMyIEhpZ2gtZGVuc2l0eSwgWEwtZGVuc2l0eSBhbmQgQ29ubmVjdGl2aXR5IGxpbmUgZGV2aWNlczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXcml0ZSBwcm90ZWN0aW9uIG9mIHBhZ2UgMiB0byAzICovCisjZGVmaW5lIEZMQVNIX1dSUHJvdF9QYWdlczR0bzUgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDQpIC8qITwgU1RNMzIgSGlnaC1kZW5zaXR5LCBYTC1kZW5zaXR5IGFuZCBDb25uZWN0aXZpdHkgbGluZSBkZXZpY2VzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdyaXRlIHByb3RlY3Rpb24gb2YgcGFnZSA0IHRvIDUgKi8KKyNkZWZpbmUgRkxBU0hfV1JQcm90X1BhZ2VzNnRvNyAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgLyohPCBTVE0zMiBIaWdoLWRlbnNpdHksIFhMLWRlbnNpdHkgYW5kIENvbm5lY3Rpdml0eSBsaW5lIGRldmljZXM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV3JpdGUgcHJvdGVjdGlvbiBvZiBwYWdlIDYgdG8gNyAqLworI2RlZmluZSBGTEFTSF9XUlByb3RfUGFnZXM4dG85ICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDEwKSAvKiE8IFNUTTMyIEhpZ2gtZGVuc2l0eSwgWEwtZGVuc2l0eSBhbmQgQ29ubmVjdGl2aXR5IGxpbmUgZGV2aWNlczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXcml0ZSBwcm90ZWN0aW9uIG9mIHBhZ2UgOCB0byA5ICovCisjZGVmaW5lIEZMQVNIX1dSUHJvdF9QYWdlczEwdG8xMSAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMjApIC8qITwgU1RNMzIgSGlnaC1kZW5zaXR5LCBYTC1kZW5zaXR5IGFuZCBDb25uZWN0aXZpdHkgbGluZSBkZXZpY2VzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdyaXRlIHByb3RlY3Rpb24gb2YgcGFnZSAxMCB0byAxMSAqLworI2RlZmluZSBGTEFTSF9XUlByb3RfUGFnZXMxMnRvMTMgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDQwKSAvKiE8IFNUTTMyIEhpZ2gtZGVuc2l0eSwgWEwtZGVuc2l0eSBhbmQgQ29ubmVjdGl2aXR5IGxpbmUgZGV2aWNlczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXcml0ZSBwcm90ZWN0aW9uIG9mIHBhZ2UgMTIgdG8gMTMgKi8KKyNkZWZpbmUgRkxBU0hfV1JQcm90X1BhZ2VzMTR0bzE1ICAgICAgICgodWludDMyX3QpMHgwMDAwMDA4MCkgLyohPCBTVE0zMiBIaWdoLWRlbnNpdHksIFhMLWRlbnNpdHkgYW5kIENvbm5lY3Rpdml0eSBsaW5lIGRldmljZXM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV3JpdGUgcHJvdGVjdGlvbiBvZiBwYWdlIDE0IHRvIDE1ICovCisjZGVmaW5lIEZMQVNIX1dSUHJvdF9QYWdlczE2dG8xNyAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAxMDApIC8qITwgU1RNMzIgSGlnaC1kZW5zaXR5LCBYTC1kZW5zaXR5IGFuZCBDb25uZWN0aXZpdHkgbGluZSBkZXZpY2VzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdyaXRlIHByb3RlY3Rpb24gb2YgcGFnZSAxNiB0byAxNyAqLworI2RlZmluZSBGTEFTSF9XUlByb3RfUGFnZXMxOHRvMTkgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMjAwKSAvKiE8IFNUTTMyIEhpZ2gtZGVuc2l0eSwgWEwtZGVuc2l0eSBhbmQgQ29ubmVjdGl2aXR5IGxpbmUgZGV2aWNlczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXcml0ZSBwcm90ZWN0aW9uIG9mIHBhZ2UgMTggdG8gMTkgKi8KKyNkZWZpbmUgRkxBU0hfV1JQcm90X1BhZ2VzMjB0bzIxICAgICAgICgodWludDMyX3QpMHgwMDAwMDQwMCkgLyohPCBTVE0zMiBIaWdoLWRlbnNpdHksIFhMLWRlbnNpdHkgYW5kIENvbm5lY3Rpdml0eSBsaW5lIGRldmljZXM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV3JpdGUgcHJvdGVjdGlvbiBvZiBwYWdlIDIwIHRvIDIxICovCisjZGVmaW5lIEZMQVNIX1dSUHJvdF9QYWdlczIydG8yMyAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA4MDApIC8qITwgU1RNMzIgSGlnaC1kZW5zaXR5LCBYTC1kZW5zaXR5IGFuZCBDb25uZWN0aXZpdHkgbGluZSBkZXZpY2VzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdyaXRlIHByb3RlY3Rpb24gb2YgcGFnZSAyMiB0byAyMyAqLworI2RlZmluZSBGTEFTSF9XUlByb3RfUGFnZXMyNHRvMjUgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKSAvKiE8IFNUTTMyIEhpZ2gtZGVuc2l0eSwgWEwtZGVuc2l0eSBhbmQgQ29ubmVjdGl2aXR5IGxpbmUgZGV2aWNlczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXcml0ZSBwcm90ZWN0aW9uIG9mIHBhZ2UgMjQgdG8gMjUgKi8KKyNkZWZpbmUgRkxBU0hfV1JQcm90X1BhZ2VzMjZ0bzI3ICAgICAgICgodWludDMyX3QpMHgwMDAwMjAwMCkgLyohPCBTVE0zMiBIaWdoLWRlbnNpdHksIFhMLWRlbnNpdHkgYW5kIENvbm5lY3Rpdml0eSBsaW5lIGRldmljZXM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV3JpdGUgcHJvdGVjdGlvbiBvZiBwYWdlIDI2IHRvIDI3ICovCisjZGVmaW5lIEZMQVNIX1dSUHJvdF9QYWdlczI4dG8yOSAgICAgICAoKHVpbnQzMl90KTB4MDAwMDQwMDApIC8qITwgU1RNMzIgSGlnaC1kZW5zaXR5LCBYTC1kZW5zaXR5IGFuZCBDb25uZWN0aXZpdHkgbGluZSBkZXZpY2VzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdyaXRlIHByb3RlY3Rpb24gb2YgcGFnZSAyOCB0byAyOSAqLworI2RlZmluZSBGTEFTSF9XUlByb3RfUGFnZXMzMHRvMzEgICAgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKSAvKiE8IFNUTTMyIEhpZ2gtZGVuc2l0eSwgWEwtZGVuc2l0eSBhbmQgQ29ubmVjdGl2aXR5IGxpbmUgZGV2aWNlczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXcml0ZSBwcm90ZWN0aW9uIG9mIHBhZ2UgMzAgdG8gMzEgKi8KKyNkZWZpbmUgRkxBU0hfV1JQcm90X1BhZ2VzMzJ0bzMzICAgICAgICgodWludDMyX3QpMHgwMDAxMDAwMCkgLyohPCBTVE0zMiBIaWdoLWRlbnNpdHksIFhMLWRlbnNpdHkgYW5kIENvbm5lY3Rpdml0eSBsaW5lIGRldmljZXM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV3JpdGUgcHJvdGVjdGlvbiBvZiBwYWdlIDMyIHRvIDMzICovCisjZGVmaW5lIEZMQVNIX1dSUHJvdF9QYWdlczM0dG8zNSAgICAgICAoKHVpbnQzMl90KTB4MDAwMjAwMDApIC8qITwgU1RNMzIgSGlnaC1kZW5zaXR5LCBYTC1kZW5zaXR5IGFuZCBDb25uZWN0aXZpdHkgbGluZSBkZXZpY2VzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdyaXRlIHByb3RlY3Rpb24gb2YgcGFnZSAzNCB0byAzNSAqLworI2RlZmluZSBGTEFTSF9XUlByb3RfUGFnZXMzNnRvMzcgICAgICAgKCh1aW50MzJfdCkweDAwMDQwMDAwKSAvKiE8IFNUTTMyIEhpZ2gtZGVuc2l0eSwgWEwtZGVuc2l0eSBhbmQgQ29ubmVjdGl2aXR5IGxpbmUgZGV2aWNlczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXcml0ZSBwcm90ZWN0aW9uIG9mIHBhZ2UgMzYgdG8gMzcgKi8KKyNkZWZpbmUgRkxBU0hfV1JQcm90X1BhZ2VzMzh0bzM5ICAgICAgICgodWludDMyX3QpMHgwMDA4MDAwMCkgLyohPCBTVE0zMiBIaWdoLWRlbnNpdHksIFhMLWRlbnNpdHkgYW5kIENvbm5lY3Rpdml0eSBsaW5lIGRldmljZXM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV3JpdGUgcHJvdGVjdGlvbiBvZiBwYWdlIDM4IHRvIDM5ICovCisjZGVmaW5lIEZMQVNIX1dSUHJvdF9QYWdlczQwdG80MSAgICAgICAoKHVpbnQzMl90KTB4MDAxMDAwMDApIC8qITwgU1RNMzIgSGlnaC1kZW5zaXR5LCBYTC1kZW5zaXR5IGFuZCBDb25uZWN0aXZpdHkgbGluZSBkZXZpY2VzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdyaXRlIHByb3RlY3Rpb24gb2YgcGFnZSA0MCB0byA0MSAqLworI2RlZmluZSBGTEFTSF9XUlByb3RfUGFnZXM0MnRvNDMgICAgICAgKCh1aW50MzJfdCkweDAwMjAwMDAwKSAvKiE8IFNUTTMyIEhpZ2gtZGVuc2l0eSwgWEwtZGVuc2l0eSBhbmQgQ29ubmVjdGl2aXR5IGxpbmUgZGV2aWNlczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXcml0ZSBwcm90ZWN0aW9uIG9mIHBhZ2UgNDIgdG8gNDMgKi8KKyNkZWZpbmUgRkxBU0hfV1JQcm90X1BhZ2VzNDR0bzQ1ICAgICAgICgodWludDMyX3QpMHgwMDQwMDAwMCkgLyohPCBTVE0zMiBIaWdoLWRlbnNpdHksIFhMLWRlbnNpdHkgYW5kIENvbm5lY3Rpdml0eSBsaW5lIGRldmljZXM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV3JpdGUgcHJvdGVjdGlvbiBvZiBwYWdlIDQ0IHRvIDQ1ICovCisjZGVmaW5lIEZMQVNIX1dSUHJvdF9QYWdlczQ2dG80NyAgICAgICAoKHVpbnQzMl90KTB4MDA4MDAwMDApIC8qITwgU1RNMzIgSGlnaC1kZW5zaXR5LCBYTC1kZW5zaXR5IGFuZCBDb25uZWN0aXZpdHkgbGluZSBkZXZpY2VzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdyaXRlIHByb3RlY3Rpb24gb2YgcGFnZSA0NiB0byA0NyAqLworI2RlZmluZSBGTEFTSF9XUlByb3RfUGFnZXM0OHRvNDkgICAgICAgKCh1aW50MzJfdCkweDAxMDAwMDAwKSAvKiE8IFNUTTMyIEhpZ2gtZGVuc2l0eSwgWEwtZGVuc2l0eSBhbmQgQ29ubmVjdGl2aXR5IGxpbmUgZGV2aWNlczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXcml0ZSBwcm90ZWN0aW9uIG9mIHBhZ2UgNDggdG8gNDkgKi8KKyNkZWZpbmUgRkxBU0hfV1JQcm90X1BhZ2VzNTB0bzUxICAgICAgICgodWludDMyX3QpMHgwMjAwMDAwMCkgLyohPCBTVE0zMiBIaWdoLWRlbnNpdHksIFhMLWRlbnNpdHkgYW5kIENvbm5lY3Rpdml0eSBsaW5lIGRldmljZXM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV3JpdGUgcHJvdGVjdGlvbiBvZiBwYWdlIDUwIHRvIDUxICovCisjZGVmaW5lIEZMQVNIX1dSUHJvdF9QYWdlczUydG81MyAgICAgICAoKHVpbnQzMl90KTB4MDQwMDAwMDApIC8qITwgU1RNMzIgSGlnaC1kZW5zaXR5LCBYTC1kZW5zaXR5IGFuZCBDb25uZWN0aXZpdHkgbGluZSBkZXZpY2VzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdyaXRlIHByb3RlY3Rpb24gb2YgcGFnZSA1MiB0byA1MyAqLworI2RlZmluZSBGTEFTSF9XUlByb3RfUGFnZXM1NHRvNTUgICAgICAgKCh1aW50MzJfdCkweDA4MDAwMDAwKSAvKiE8IFNUTTMyIEhpZ2gtZGVuc2l0eSwgWEwtZGVuc2l0eSBhbmQgQ29ubmVjdGl2aXR5IGxpbmUgZGV2aWNlczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXcml0ZSBwcm90ZWN0aW9uIG9mIHBhZ2UgNTQgdG8gNTUgKi8KKyNkZWZpbmUgRkxBU0hfV1JQcm90X1BhZ2VzNTZ0bzU3ICAgICAgICgodWludDMyX3QpMHgxMDAwMDAwMCkgLyohPCBTVE0zMiBIaWdoLWRlbnNpdHksIFhMLWRlbnNpdHkgYW5kIENvbm5lY3Rpdml0eSBsaW5lIGRldmljZXM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV3JpdGUgcHJvdGVjdGlvbiBvZiBwYWdlIDU2IHRvIDU3ICovCisjZGVmaW5lIEZMQVNIX1dSUHJvdF9QYWdlczU4dG81OSAgICAgICAoKHVpbnQzMl90KTB4MjAwMDAwMDApIC8qITwgU1RNMzIgSGlnaC1kZW5zaXR5LCBYTC1kZW5zaXR5IGFuZCBDb25uZWN0aXZpdHkgbGluZSBkZXZpY2VzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdyaXRlIHByb3RlY3Rpb24gb2YgcGFnZSA1OCB0byA1OSAqLworI2RlZmluZSBGTEFTSF9XUlByb3RfUGFnZXM2MHRvNjEgICAgICAgKCh1aW50MzJfdCkweDQwMDAwMDAwKSAvKiE8IFNUTTMyIEhpZ2gtZGVuc2l0eSwgWEwtZGVuc2l0eSBhbmQgQ29ubmVjdGl2aXR5IGxpbmUgZGV2aWNlczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXcml0ZSBwcm90ZWN0aW9uIG9mIHBhZ2UgNjAgdG8gNjEgKi8KKyNkZWZpbmUgRkxBU0hfV1JQcm90X1BhZ2VzNjJ0bzEyNyAgICAgICgodWludDMyX3QpMHg4MDAwMDAwMCkgLyohPCBTVE0zMiBDb25uZWN0aXZpdHkgbGluZSBkZXZpY2VzOiBXcml0ZSBwcm90ZWN0aW9uIG9mIHBhZ2UgNjIgdG8gMTI3ICovCisjZGVmaW5lIEZMQVNIX1dSUHJvdF9QYWdlczYydG8yNTUgICAgICAoKHVpbnQzMl90KTB4ODAwMDAwMDApIC8qITwgU1RNMzIgTWVkaXVtLWRlbnNpdHkgZGV2aWNlczogV3JpdGUgcHJvdGVjdGlvbiBvZiBwYWdlIDYyIHRvIDI1NSAqLworI2RlZmluZSBGTEFTSF9XUlByb3RfUGFnZXM2MnRvNTExICAgICAgKCh1aW50MzJfdCkweDgwMDAwMDAwKSAvKiE8IFNUTTMyIFhMLWRlbnNpdHkgZGV2aWNlczogV3JpdGUgcHJvdGVjdGlvbiBvZiBwYWdlIDYyIHRvIDUxMSAqLworCisjZGVmaW5lIEZMQVNIX1dSUHJvdF9BbGxQYWdlcyAgICAgICAgICAoKHVpbnQzMl90KTB4RkZGRkZGRkYpIC8qITwgV3JpdGUgcHJvdGVjdGlvbiBvZiBhbGwgUGFnZXMgKi8KKworI2RlZmluZSBJU19GTEFTSF9XUlBST1RfUEFHRShQQUdFKSAoKChQQUdFKSAhPSAweDAwMDAwMDAwKSkKKworI2RlZmluZSBJU19GTEFTSF9BRERSRVNTKEFERFJFU1MpICgoKEFERFJFU1MpID49IDB4MDgwMDAwMDApICYmICgoQUREUkVTUykgPCAweDA4MEZGRkZGKSkKKworI2RlZmluZSBJU19PQl9EQVRBX0FERFJFU1MoQUREUkVTUykgKCgoQUREUkVTUykgPT0gMHgxRkZGRjgwNCkgfHwgKChBRERSRVNTKSA9PSAweDFGRkZGODA2KSkKKworLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBPcHRpb25fQnl0ZXNfSVdhdGNoZG9nIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgT0JfSVdER19TVyAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAxKSAgLyohPCBTb2Z0d2FyZSBJV0RHIHNlbGVjdGVkICovCisjZGVmaW5lIE9CX0lXREdfSFcgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMCkgIC8qITwgSGFyZHdhcmUgSVdERyBzZWxlY3RlZCAqLworI2RlZmluZSBJU19PQl9JV0RHX1NPVVJDRShTT1VSQ0UpICgoKFNPVVJDRSkgPT0gT0JfSVdER19TVykgfHwgKChTT1VSQ0UpID09IE9CX0lXREdfSFcpKQorCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIE9wdGlvbl9CeXRlc19uUlNUX1NUT1AgCisgICogQHsKKyAgKi8KKworI2RlZmluZSBPQl9TVE9QX05vUlNUICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDIpIC8qITwgTm8gcmVzZXQgZ2VuZXJhdGVkIHdoZW4gZW50ZXJpbmcgaW4gU1RPUCAqLworI2RlZmluZSBPQl9TVE9QX1JTVCAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDApIC8qITwgUmVzZXQgZ2VuZXJhdGVkIHdoZW4gZW50ZXJpbmcgaW4gU1RPUCAqLworI2RlZmluZSBJU19PQl9TVE9QX1NPVVJDRShTT1VSQ0UpICgoKFNPVVJDRSkgPT0gT0JfU1RPUF9Ob1JTVCkgfHwgKChTT1VSQ0UpID09IE9CX1NUT1BfUlNUKSkKKworLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBPcHRpb25fQnl0ZXNfblJTVF9TVERCWSAKKyAgKiBAeworICAqLworCisjZGVmaW5lIE9CX1NUREJZX05vUlNUICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwNCkgLyohPCBObyByZXNldCBnZW5lcmF0ZWQgd2hlbiBlbnRlcmluZyBpbiBTVEFOREJZICovCisjZGVmaW5lIE9CX1NUREJZX1JTVCAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMCkgLyohPCBSZXNldCBnZW5lcmF0ZWQgd2hlbiBlbnRlcmluZyBpbiBTVEFOREJZICovCisjZGVmaW5lIElTX09CX1NUREJZX1NPVVJDRShTT1VSQ0UpICgoKFNPVVJDRSkgPT0gT0JfU1REQllfTm9SU1QpIHx8ICgoU09VUkNFKSA9PSBPQl9TVERCWV9SU1QpKQorCisjaWZkZWYgU1RNMzJGMTBYX1hMCisvKioKKyAgKiBAfQorICAqLworLyoqIEBkZWZncm91cCBGTEFTSF9Cb290CisgICogQHsKKyAgKi8KKyNkZWZpbmUgRkxBU0hfQk9PVF9CYW5rMSAgKCh1aW50MTZfdCkweDAwMDApIC8qITwgQXQgc3RhcnR1cCwgaWYgYm9vdCBwaW5zIGFyZSBzZXQgaW4gYm9vdCBmcm9tIHVzZXIgRmxhc2ggcG9zaXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHRoaXMgcGFyYW1ldGVyIGlzIHNlbGVjdGVkIHRoZSBkZXZpY2Ugd2lsbCBib290IGZyb20gQmFuazEoRGVmYXVsdCkgKi8KKyNkZWZpbmUgRkxBU0hfQk9PVF9CYW5rMiAgKCh1aW50MTZfdCkweDAwMDEpIC8qITwgQXQgc3RhcnR1cCwgaWYgYm9vdCBwaW5zIGFyZSBzZXQgaW4gYm9vdCBmcm9tIHVzZXIgRmxhc2ggcG9zaXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHRoaXMgcGFyYW1ldGVyIGlzIHNlbGVjdGVkIHRoZSBkZXZpY2Ugd2lsbCBib290IGZyb20gQmFuayAyIG9yIEJhbmsgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kaW5nIG9uIHRoZSBhY3RpdmF0aW9uIG9mIHRoZSBiYW5rICovCisjZGVmaW5lIElTX0ZMQVNIX0JPT1QoQk9PVCkgKCgoQk9PVCkgPT0gRkxBU0hfQk9PVF9CYW5rMSkgfHwgKChCT09UKSA9PSBGTEFTSF9CT09UX0JhbmsyKSkKKyNlbmRpZgorLyoqCisgICogQH0KKyAgKi8KKy8qKiBAZGVmZ3JvdXAgRkxBU0hfSW50ZXJydXB0cyAKKyAgKiBAeworICAqLworI2lmZGVmIFNUTTMyRjEwWF9YTAorI2RlZmluZSBGTEFTSF9JVF9CQU5LMl9FUlJPUiAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDgwMDAwNDAwKSAgLyohPCBGUEVDIEJBTksyIGVycm9yIGludGVycnVwdCBzb3VyY2UgKi8KKyNkZWZpbmUgRkxBU0hfSVRfQkFOSzJfRU9QICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHg4MDAwMTAwMCkgIC8qITwgRW5kIG9mIEZMQVNIIEJBTksyIE9wZXJhdGlvbiBJbnRlcnJ1cHQgc291cmNlICovCisKKyNkZWZpbmUgRkxBU0hfSVRfQkFOSzFfRVJST1IgICAgICAgICAgICAgICAgIEZMQVNIX0lUX0VSUk9SICAgICAgICAgIC8qITwgRlBFQyBCQU5LMSBlcnJvciBpbnRlcnJ1cHQgc291cmNlICovCisjZGVmaW5lIEZMQVNIX0lUX0JBTksxX0VPUCAgICAgICAgICAgICAgICAgICBGTEFTSF9JVF9FT1AgICAgICAgICAgICAvKiE8IEVuZCBvZiBGTEFTSCBCQU5LMSBPcGVyYXRpb24gSW50ZXJydXB0IHNvdXJjZSAqLworCisjZGVmaW5lIEZMQVNIX0lUX0VSUk9SICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApICAvKiE8IEZQRUMgQkFOSzEgZXJyb3IgaW50ZXJydXB0IHNvdXJjZSAqLworI2RlZmluZSBGTEFTSF9JVF9FT1AgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKSAgLyohPCBFbmQgb2YgRkxBU0ggQkFOSzEgT3BlcmF0aW9uIEludGVycnVwdCBzb3VyY2UgKi8KKyNkZWZpbmUgSVNfRkxBU0hfSVQoSVQpICgoKChJVCkgJiAodWludDMyX3QpMHg3RkZGRUJGRikgPT0gMHgwMDAwMDAwMCkgJiYgKCgoSVQpICE9IDB4MDAwMDAwMDApKSkKKyNlbHNlCisjZGVmaW5lIEZMQVNIX0lUX0VSUk9SICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApICAvKiE8IEZQRUMgZXJyb3IgaW50ZXJydXB0IHNvdXJjZSAqLworI2RlZmluZSBGTEFTSF9JVF9FT1AgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKSAgLyohPCBFbmQgb2YgRkxBU0ggT3BlcmF0aW9uIEludGVycnVwdCBzb3VyY2UgKi8KKyNkZWZpbmUgRkxBU0hfSVRfQkFOSzFfRVJST1IgICAgICAgICAgIEZMQVNIX0lUX0VSUk9SICAgICAgICAgIC8qITwgRlBFQyBCQU5LMSBlcnJvciBpbnRlcnJ1cHQgc291cmNlICovCisjZGVmaW5lIEZMQVNIX0lUX0JBTksxX0VPUCAgICAgICAgICAgICBGTEFTSF9JVF9FT1AgICAgICAgICAgICAvKiE8IEVuZCBvZiBGTEFTSCBCQU5LMSBPcGVyYXRpb24gSW50ZXJydXB0IHNvdXJjZSAqLworCisjZGVmaW5lIElTX0ZMQVNIX0lUKElUKSAoKCgoSVQpICYgKHVpbnQzMl90KTB4RkZGRkVCRkYpID09IDB4MDAwMDAwMDApICYmICgoKElUKSAhPSAweDAwMDAwMDAwKSkpCisjZW5kaWYKKworLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBGTEFTSF9GbGFncyAKKyAgKiBAeworICAqLworI2lmZGVmIFNUTTMyRjEwWF9YTAorI2RlZmluZSBGTEFTSF9GTEFHX0JBTksyX0JTWSAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDgwMDAwMDAxKSAgLyohPCBGTEFTSCBCQU5LMiBCdXN5IGZsYWcgKi8KKyNkZWZpbmUgRkxBU0hfRkxBR19CQU5LMl9FT1AgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHg4MDAwMDAyMCkgIC8qITwgRkxBU0ggQkFOSzIgRW5kIG9mIE9wZXJhdGlvbiBmbGFnICovCisjZGVmaW5lIEZMQVNIX0ZMQUdfQkFOSzJfUEdFUlIgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4ODAwMDAwMDQpICAvKiE8IEZMQVNIIEJBTksyIFByb2dyYW0gZXJyb3IgZmxhZyAqLworI2RlZmluZSBGTEFTSF9GTEFHX0JBTksyX1dSUFJURVJSICAgICAgICAgICAgKCh1aW50MzJfdCkweDgwMDAwMDEwKSAgLyohPCBGTEFTSCBCQU5LMiBXcml0ZSBwcm90ZWN0ZWQgZXJyb3IgZmxhZyAqLworCisjZGVmaW5lIEZMQVNIX0ZMQUdfQkFOSzFfQlNZICAgICAgICAgICAgICAgICBGTEFTSF9GTEFHX0JTWSAgICAgICAvKiE8IEZMQVNIIEJBTksxIEJ1c3kgZmxhZyovCisjZGVmaW5lIEZMQVNIX0ZMQUdfQkFOSzFfRU9QICAgICAgICAgICAgICAgICBGTEFTSF9GTEFHX0VPUCAgICAgICAvKiE8IEZMQVNIIEJBTksxIEVuZCBvZiBPcGVyYXRpb24gZmxhZyAqLworI2RlZmluZSBGTEFTSF9GTEFHX0JBTksxX1BHRVJSICAgICAgICAgICAgICAgRkxBU0hfRkxBR19QR0VSUiAgICAgLyohPCBGTEFTSCBCQU5LMSBQcm9ncmFtIGVycm9yIGZsYWcgKi8KKyNkZWZpbmUgRkxBU0hfRkxBR19CQU5LMV9XUlBSVEVSUiAgICAgICAgICAgIEZMQVNIX0ZMQUdfV1JQUlRFUlIgIC8qITwgRkxBU0ggQkFOSzEgV3JpdGUgcHJvdGVjdGVkIGVycm9yIGZsYWcgKi8KKworI2RlZmluZSBGTEFTSF9GTEFHX0JTWSAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxKSAgLyohPCBGTEFTSCBCdXN5IGZsYWcgKi8KKyNkZWZpbmUgRkxBU0hfRkxBR19FT1AgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAyMCkgIC8qITwgRkxBU0ggRW5kIG9mIE9wZXJhdGlvbiBmbGFnICovCisjZGVmaW5lIEZMQVNIX0ZMQUdfUEdFUlIgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDQpICAvKiE8IEZMQVNIIFByb2dyYW0gZXJyb3IgZmxhZyAqLworI2RlZmluZSBGTEFTSF9GTEFHX1dSUFJURVJSICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDEwKSAgLyohPCBGTEFTSCBXcml0ZSBwcm90ZWN0ZWQgZXJyb3IgZmxhZyAqLworI2RlZmluZSBGTEFTSF9GTEFHX09QVEVSUiAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxKSAgLyohPCBGTEFTSCBPcHRpb24gQnl0ZSBlcnJvciBmbGFnICovCisgCisjZGVmaW5lIElTX0ZMQVNIX0NMRUFSX0ZMQUcoRkxBRykgKCgoKEZMQUcpICYgKHVpbnQzMl90KTB4N0ZGRkZGQ0EpID09IDB4MDAwMDAwMDApICYmICgoRkxBRykgIT0gMHgwMDAwMDAwMCkpCisjZGVmaW5lIElTX0ZMQVNIX0dFVF9GTEFHKEZMQUcpICAoKChGTEFHKSA9PSBGTEFTSF9GTEFHX0JTWSkgfHwgKChGTEFHKSA9PSBGTEFTSF9GTEFHX0VPUCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRkxBRykgPT0gRkxBU0hfRkxBR19QR0VSUikgfHwgKChGTEFHKSA9PSBGTEFTSF9GTEFHX1dSUFJURVJSKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChGTEFHKSA9PSBGTEFTSF9GTEFHX09QVEVSUil8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChGTEFHKSA9PSBGTEFTSF9GTEFHX0JBTksxX0JTWSkgfHwgKChGTEFHKSA9PSBGTEFTSF9GTEFHX0JBTksxX0VPUCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRkxBRykgPT0gRkxBU0hfRkxBR19CQU5LMV9QR0VSUikgfHwgKChGTEFHKSA9PSBGTEFTSF9GTEFHX0JBTksxX1dSUFJURVJSKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChGTEFHKSA9PSBGTEFTSF9GTEFHX0JBTksyX0JTWSkgfHwgKChGTEFHKSA9PSBGTEFTSF9GTEFHX0JBTksyX0VPUCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRkxBRykgPT0gRkxBU0hfRkxBR19CQU5LMl9QR0VSUikgfHwgKChGTEFHKSA9PSBGTEFTSF9GTEFHX0JBTksyX1dSUFJURVJSKSkKKyNlbHNlCisjZGVmaW5lIEZMQVNIX0ZMQUdfQlNZICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDEpICAvKiE8IEZMQVNIIEJ1c3kgZmxhZyAqLworI2RlZmluZSBGTEFTSF9GTEFHX0VPUCAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKSAgLyohPCBGTEFTSCBFbmQgb2YgT3BlcmF0aW9uIGZsYWcgKi8KKyNkZWZpbmUgRkxBU0hfRkxBR19QR0VSUiAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNCkgIC8qITwgRkxBU0ggUHJvZ3JhbSBlcnJvciBmbGFnICovCisjZGVmaW5lIEZMQVNIX0ZMQUdfV1JQUlRFUlIgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAvKiE8IEZMQVNIIFdyaXRlIHByb3RlY3RlZCBlcnJvciBmbGFnICovCisjZGVmaW5lIEZMQVNIX0ZMQUdfT1BURVJSICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDEpICAvKiE8IEZMQVNIIE9wdGlvbiBCeXRlIGVycm9yIGZsYWcgKi8KKworI2RlZmluZSBGTEFTSF9GTEFHX0JBTksxX0JTWSAgICAgICAgICAgICAgICAgRkxBU0hfRkxBR19CU1kgICAgICAgLyohPCBGTEFTSCBCQU5LMSBCdXN5IGZsYWcqLworI2RlZmluZSBGTEFTSF9GTEFHX0JBTksxX0VPUCAgICAgICAgICAgICAgICAgRkxBU0hfRkxBR19FT1AgICAgICAgLyohPCBGTEFTSCBCQU5LMSBFbmQgb2YgT3BlcmF0aW9uIGZsYWcgKi8KKyNkZWZpbmUgRkxBU0hfRkxBR19CQU5LMV9QR0VSUiAgICAgICAgICAgICAgIEZMQVNIX0ZMQUdfUEdFUlIgICAgIC8qITwgRkxBU0ggQkFOSzEgUHJvZ3JhbSBlcnJvciBmbGFnICovCisjZGVmaW5lIEZMQVNIX0ZMQUdfQkFOSzFfV1JQUlRFUlIgICAgICAgICAgICBGTEFTSF9GTEFHX1dSUFJURVJSICAvKiE8IEZMQVNIIEJBTksxIFdyaXRlIHByb3RlY3RlZCBlcnJvciBmbGFnICovCisgCisjZGVmaW5lIElTX0ZMQVNIX0NMRUFSX0ZMQUcoRkxBRykgKCgoKEZMQUcpICYgKHVpbnQzMl90KTB4RkZGRkZGQ0EpID09IDB4MDAwMDAwMDApICYmICgoRkxBRykgIT0gMHgwMDAwMDAwMCkpCisjZGVmaW5lIElTX0ZMQVNIX0dFVF9GTEFHKEZMQUcpICAoKChGTEFHKSA9PSBGTEFTSF9GTEFHX0JTWSkgfHwgKChGTEFHKSA9PSBGTEFTSF9GTEFHX0VPUCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRkxBRykgPT0gRkxBU0hfRkxBR19QR0VSUikgfHwgKChGTEFHKSA9PSBGTEFTSF9GTEFHX1dSUFJURVJSKSB8fCBcCisJCQkJCQkJCSAgKChGTEFHKSA9PSBGTEFTSF9GTEFHX0JBTksxX0JTWSkgfHwgKChGTEFHKSA9PSBGTEFTSF9GTEFHX0JBTksxX0VPUCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRkxBRykgPT0gRkxBU0hfRkxBR19CQU5LMV9QR0VSUikgfHwgKChGTEFHKSA9PSBGTEFTSF9GTEFHX0JBTksxX1dSUFJURVJSKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChGTEFHKSA9PSBGTEFTSF9GTEFHX09QVEVSUikpCisjZW5kaWYKKworLyoqCisgICogQH0KKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBGTEFTSF9FeHBvcnRlZF9NYWNyb3MKKyAgKiBAeworICAqLworCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIEZMQVNIX0V4cG9ydGVkX0Z1bmN0aW9ucworICAqIEB7CisgICovCisKKy8qLS0tLS0tLS0tLS0tIEZ1bmN0aW9ucyB1c2VkIGZvciBhbGwgU1RNMzJGMTB4IGRldmljZXMgLS0tLS0qLwordm9pZCBGTEFTSF9TZXRMYXRlbmN5KHVpbnQzMl90IEZMQVNIX0xhdGVuY3kpOwordm9pZCBGTEFTSF9IYWxmQ3ljbGVBY2Nlc3NDbWQodWludDMyX3QgRkxBU0hfSGFsZkN5Y2xlQWNjZXNzKTsKK3ZvaWQgRkxBU0hfUHJlZmV0Y2hCdWZmZXJDbWQodWludDMyX3QgRkxBU0hfUHJlZmV0Y2hCdWZmZXIpOwordm9pZCBGTEFTSF9VbmxvY2sodm9pZCk7Cit2b2lkIEZMQVNIX0xvY2sodm9pZCk7CitGTEFTSF9TdGF0dXMgRkxBU0hfRXJhc2VQYWdlKHVpbnQzMl90IFBhZ2VfQWRkcmVzcyk7CitGTEFTSF9TdGF0dXMgRkxBU0hfRXJhc2VBbGxQYWdlcyh2b2lkKTsKK0ZMQVNIX1N0YXR1cyBGTEFTSF9FcmFzZU9wdGlvbkJ5dGVzKHZvaWQpOworRkxBU0hfU3RhdHVzIEZMQVNIX1Byb2dyYW1Xb3JkKHVpbnQzMl90IEFkZHJlc3MsIHVpbnQzMl90IERhdGEpOworRkxBU0hfU3RhdHVzIEZMQVNIX1Byb2dyYW1IYWxmV29yZCh1aW50MzJfdCBBZGRyZXNzLCB1aW50MTZfdCBEYXRhKTsKK0ZMQVNIX1N0YXR1cyBGTEFTSF9Qcm9ncmFtT3B0aW9uQnl0ZURhdGEodWludDMyX3QgQWRkcmVzcywgdWludDhfdCBEYXRhKTsKK0ZMQVNIX1N0YXR1cyBGTEFTSF9FbmFibGVXcml0ZVByb3RlY3Rpb24odWludDMyX3QgRkxBU0hfUGFnZXMpOworRkxBU0hfU3RhdHVzIEZMQVNIX1JlYWRPdXRQcm90ZWN0aW9uKEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSk7CitGTEFTSF9TdGF0dXMgRkxBU0hfVXNlck9wdGlvbkJ5dGVDb25maWcodWludDE2X3QgT0JfSVdERywgdWludDE2X3QgT0JfU1RPUCwgdWludDE2X3QgT0JfU1REQlkpOwordWludDMyX3QgRkxBU0hfR2V0VXNlck9wdGlvbkJ5dGUodm9pZCk7Cit1aW50MzJfdCBGTEFTSF9HZXRXcml0ZVByb3RlY3Rpb25PcHRpb25CeXRlKHZvaWQpOworRmxhZ1N0YXR1cyBGTEFTSF9HZXRSZWFkT3V0UHJvdGVjdGlvblN0YXR1cyh2b2lkKTsKK0ZsYWdTdGF0dXMgRkxBU0hfR2V0UHJlZmV0Y2hCdWZmZXJTdGF0dXModm9pZCk7Cit2b2lkIEZMQVNIX0lUQ29uZmlnKHVpbnQzMl90IEZMQVNIX0lULCBGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpOworRmxhZ1N0YXR1cyBGTEFTSF9HZXRGbGFnU3RhdHVzKHVpbnQzMl90IEZMQVNIX0ZMQUcpOwordm9pZCBGTEFTSF9DbGVhckZsYWcodWludDMyX3QgRkxBU0hfRkxBRyk7CitGTEFTSF9TdGF0dXMgRkxBU0hfR2V0U3RhdHVzKHZvaWQpOworRkxBU0hfU3RhdHVzIEZMQVNIX1dhaXRGb3JMYXN0T3BlcmF0aW9uKHVpbnQzMl90IFRpbWVvdXQpOworCisvKi0tLS0tLS0tLS0tLSBOZXcgZnVuY3Rpb24gdXNlZCBmb3IgYWxsIFNUTTMyRjEweCBkZXZpY2VzIC0tLS0tKi8KK3ZvaWQgRkxBU0hfVW5sb2NrQmFuazEodm9pZCk7Cit2b2lkIEZMQVNIX0xvY2tCYW5rMSh2b2lkKTsKK0ZMQVNIX1N0YXR1cyBGTEFTSF9FcmFzZUFsbEJhbmsxUGFnZXModm9pZCk7CitGTEFTSF9TdGF0dXMgRkxBU0hfR2V0QmFuazFTdGF0dXModm9pZCk7CitGTEFTSF9TdGF0dXMgRkxBU0hfV2FpdEZvckxhc3RCYW5rMU9wZXJhdGlvbih1aW50MzJfdCBUaW1lb3V0KTsKKworI2lmZGVmIFNUTTMyRjEwWF9YTAorLyotLS0tIE5ldyBGdW5jdGlvbnMgdXNlZCBvbmx5IHdpdGggU1RNMzJGMTB4X1hMIGRlbnNpdHkgZGV2aWNlcyAtLS0tLSovCit2b2lkIEZMQVNIX1VubG9ja0JhbmsyKHZvaWQpOwordm9pZCBGTEFTSF9Mb2NrQmFuazIodm9pZCk7CitGTEFTSF9TdGF0dXMgRkxBU0hfRXJhc2VBbGxCYW5rMlBhZ2VzKHZvaWQpOworRkxBU0hfU3RhdHVzIEZMQVNIX0dldEJhbmsyU3RhdHVzKHZvaWQpOworRkxBU0hfU3RhdHVzIEZMQVNIX1dhaXRGb3JMYXN0QmFuazJPcGVyYXRpb24odWludDMyX3QgVGltZW91dCk7CitGTEFTSF9TdGF0dXMgRkxBU0hfQm9vdENvbmZpZyh1aW50MTZfdCBGTEFTSF9CT09UKTsKKyNlbmRpZgorCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyogX19TVE0zMkYxMHhfRkxBU0hfSCAqLworLyoqCisgICogQH0KKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCAyMDExIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL3N0X2Z3X2xpYi9pbmMvc3RtMzJmMTB4X2ZzbWMuaCBiL3N0X2Z3X2xpYi9pbmMvc3RtMzJmMTB4X2ZzbWMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZTE3NjlkCi0tLSAvZGV2L251bGwKKysrIGIvc3RfZndfbGliL2luYy9zdG0zMmYxMHhfZnNtYy5oCkBAIC0wLDAgKzEsNzMzIEBACisvKioKKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICogQGZpbGUgICAgc3RtMzJmMTB4X2ZzbWMuaAorICAqIEBhdXRob3IgIE1DRCBBcHBsaWNhdGlvbiBUZWFtCisgICogQHZlcnNpb24gVjMuNS4wCisgICogQGRhdGUgICAgMTEtTWFyY2gtMjAxMQorICAqIEBicmllZiAgIFRoaXMgZmlsZSBjb250YWlucyBhbGwgdGhlIGZ1bmN0aW9ucyBwcm90b3R5cGVzIGZvciB0aGUgRlNNQyBmaXJtd2FyZSAKKyAgKiAgICAgICAgICBsaWJyYXJ5LgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKiBAYXR0ZW50aW9uCisgICoKKyAgKiBUSEUgUFJFU0VOVCBGSVJNV0FSRSBXSElDSCBJUyBGT1IgR1VJREFOQ0UgT05MWSBBSU1TIEFUIFBST1ZJRElORyBDVVNUT01FUlMKKyAgKiBXSVRIIENPRElORyBJTkZPUk1BVElPTiBSRUdBUkRJTkcgVEhFSVIgUFJPRFVDVFMgSU4gT1JERVIgRk9SIFRIRU0gVE8gU0FWRQorICAqIFRJTUUuIEFTIEEgUkVTVUxULCBTVE1JQ1JPRUxFQ1RST05JQ1MgU0hBTEwgTk9UIEJFIEhFTEQgTElBQkxFIEZPUiBBTlkKKyAgKiBESVJFQ1QsIElORElSRUNUIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBXSVRIIFJFU1BFQ1QgVE8gQU5ZIENMQUlNUyBBUklTSU5HCisgICogRlJPTSBUSEUgQ09OVEVOVCBPRiBTVUNIIEZJUk1XQVJFIEFORC9PUiBUSEUgVVNFIE1BREUgQlkgQ1VTVE9NRVJTIE9GIFRIRQorICAqIENPRElORyBJTkZPUk1BVElPTiBDT05UQUlORUQgSEVSRUlOIElOIENPTk5FQ1RJT04gV0lUSCBUSEVJUiBQUk9EVUNUUy4KKyAgKgorICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDT1BZUklHSFQgMjAxMSBTVE1pY3JvZWxlY3Ryb25pY3M8L2NlbnRlcj48L2gyPgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKi8KKworLyogRGVmaW5lIHRvIHByZXZlbnQgcmVjdXJzaXZlIGluY2x1c2lvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyNpZm5kZWYgX19TVE0zMkYxMHhfRlNNQ19ICisjZGVmaW5lIF9fU1RNMzJGMTB4X0ZTTUNfSAorCisjaWZkZWYgX19jcGx1c3BsdXMKKyBleHRlcm4gIkMiIHsKKyNlbmRpZgorCisvKiBJbmNsdWRlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworI2luY2x1ZGUgInN0bTMyZjEweC5oIgorCisvKiogQGFkZHRvZ3JvdXAgU1RNMzJGMTB4X1N0ZFBlcmlwaF9Ecml2ZXIKKyAgKiBAeworICAqLworCisvKiogQGFkZHRvZ3JvdXAgRlNNQworICAqIEB7CisgICovCisKKy8qKiBAZGVmZ3JvdXAgRlNNQ19FeHBvcnRlZF9UeXBlcworICAqIEB7CisgICovCisKKy8qKiAKKyAgKiBAYnJpZWYgIFRpbWluZyBwYXJhbWV0ZXJzIEZvciBOT1IvU1JBTSBCYW5rcyAgCisgICovCisKK3R5cGVkZWYgc3RydWN0Cit7CisgIHVpbnQzMl90IEZTTUNfQWRkcmVzc1NldHVwVGltZTsgICAgICAgLyohPCBEZWZpbmVzIHRoZSBudW1iZXIgb2YgSENMSyBjeWNsZXMgdG8gY29uZmlndXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZHVyYXRpb24gb2YgdGhlIGFkZHJlc3Mgc2V0dXAgdGltZS4gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBiZXR3ZWVuIDAgYW5kIDB4Ri4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBub3RlOiBJdCBpcyBub3QgdXNlZCB3aXRoIHN5bmNocm9ub3VzIE5PUiBGbGFzaCBtZW1vcmllcy4gKi8KKworICB1aW50MzJfdCBGU01DX0FkZHJlc3NIb2xkVGltZTsgICAgICAgIC8qITwgRGVmaW5lcyB0aGUgbnVtYmVyIG9mIEhDTEsgY3ljbGVzIHRvIGNvbmZpZ3VyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGR1cmF0aW9uIG9mIHRoZSBhZGRyZXNzIGhvbGQgdGltZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIGJldHdlZW4gMCBhbmQgMHhGLiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBub3RlOiBJdCBpcyBub3QgdXNlZCB3aXRoIHN5bmNocm9ub3VzIE5PUiBGbGFzaCBtZW1vcmllcy4qLworCisgIHVpbnQzMl90IEZTTUNfRGF0YVNldHVwVGltZTsgICAgICAgICAgLyohPCBEZWZpbmVzIHRoZSBudW1iZXIgb2YgSENMSyBjeWNsZXMgdG8gY29uZmlndXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgZHVyYXRpb24gb2YgdGhlIGRhdGEgc2V0dXAgdGltZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIGJldHdlZW4gMCBhbmQgMHhGRi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBub3RlOiBJdCBpcyB1c2VkIGZvciBTUkFNcywgUk9NcyBhbmQgYXN5bmNocm9ub3VzIG11bHRpcGxleGVkIE5PUiBGbGFzaCBtZW1vcmllcy4gKi8KKworICB1aW50MzJfdCBGU01DX0J1c1R1cm5Bcm91bmREdXJhdGlvbjsgIC8qITwgRGVmaW5lcyB0aGUgbnVtYmVyIG9mIEhDTEsgY3ljbGVzIHRvIGNvbmZpZ3VyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGR1cmF0aW9uIG9mIHRoZSBidXMgdHVybmFyb3VuZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIGJldHdlZW4gMCBhbmQgMHhGLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQG5vdGU6IEl0IGlzIG9ubHkgdXNlZCBmb3IgbXVsdGlwbGV4ZWQgTk9SIEZsYXNoIG1lbW9yaWVzLiAqLworCisgIHVpbnQzMl90IEZTTUNfQ0xLRGl2aXNpb247ICAgICAgICAgICAgLyohPCBEZWZpbmVzIHRoZSBwZXJpb2Qgb2YgQ0xLIGNsb2NrIG91dHB1dCBzaWduYWwsIGV4cHJlc3NlZCBpbiBudW1iZXIgb2YgSENMSyBjeWNsZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBiZXR3ZWVuIDEgYW5kIDB4Ri4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBub3RlOiBUaGlzIHBhcmFtZXRlciBpcyBub3QgdXNlZCBmb3IgYXN5bmNocm9ub3VzIE5PUiBGbGFzaCwgU1JBTSBvciBST00gYWNjZXNzZXMuICovCisKKyAgdWludDMyX3QgRlNNQ19EYXRhTGF0ZW5jeTsgICAgICAgICAgICAvKiE8IERlZmluZXMgdGhlIG51bWJlciBvZiBtZW1vcnkgY2xvY2sgY3ljbGVzIHRvIGlzc3VlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byB0aGUgbWVtb3J5IGJlZm9yZSBnZXR0aW5nIHRoZSBmaXJzdCBkYXRhLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHZhbHVlIG9mIHRoaXMgcGFyYW1ldGVyIGRlcGVuZHMgb24gdGhlIG1lbW9yeSB0eXBlIGFzIHNob3duIGJlbG93OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gSXQgbXVzdCBiZSBzZXQgdG8gMCBpbiBjYXNlIG9mIGEgQ1JBTQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gSXQgaXMgZG9uJ3QgY2FyZSBpbiBhc3luY2hyb25vdXMgTk9SLCBTUkFNIG9yIFJPTSBhY2Nlc3NlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gSXQgbWF5IGFzc3VtZSBhIHZhbHVlIGJldHdlZW4gMCBhbmQgMHhGIGluIE5PUiBGbGFzaCBtZW1vcmllcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBzeW5jaHJvbm91cyBidXJzdCBtb2RlIGVuYWJsZSAqLworCisgIHVpbnQzMl90IEZTTUNfQWNjZXNzTW9kZTsgICAgICAgICAgICAgLyohPCBTcGVjaWZpZXMgdGhlIGFzeW5jaHJvbm91cyBhY2Nlc3MgbW9kZS4gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIEZTTUNfQWNjZXNzX01vZGUgKi8KK31GU01DX05PUlNSQU1UaW1pbmdJbml0VHlwZURlZjsKKworLyoqIAorICAqIEBicmllZiAgRlNNQyBOT1IvU1JBTSBJbml0IHN0cnVjdHVyZSBkZWZpbml0aW9uCisgICovCisKK3R5cGVkZWYgc3RydWN0Cit7CisgIHVpbnQzMl90IEZTTUNfQmFuazsgICAgICAgICAgICAgICAgLyohPCBTcGVjaWZpZXMgdGhlIE5PUi9TUkFNIG1lbW9yeSBiYW5rIHRoYXQgd2lsbCBiZSB1c2VkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBGU01DX05PUlNSQU1fQmFuayAqLworCisgIHVpbnQzMl90IEZTTUNfRGF0YUFkZHJlc3NNdXg7ICAgICAgLyohPCBTcGVjaWZpZXMgd2hldGhlciB0aGUgYWRkcmVzcyBhbmQgZGF0YSB2YWx1ZXMgYXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZXhlZCBvbiB0aGUgZGF0YWJ1cyBvciBub3QuIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBGU01DX0RhdGFfQWRkcmVzc19CdXNfTXVsdGlwbGV4aW5nICovCisKKyAgdWludDMyX3QgRlNNQ19NZW1vcnlUeXBlOyAgICAgICAgICAvKiE8IFNwZWNpZmllcyB0aGUgdHlwZSBvZiBleHRlcm5hbCBtZW1vcnkgYXR0YWNoZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBjb3JyZXNwb25kaW5nIG1lbW9yeSBiYW5rLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBGU01DX01lbW9yeV9UeXBlICovCisKKyAgdWludDMyX3QgRlNNQ19NZW1vcnlEYXRhV2lkdGg7ICAgICAvKiE8IFNwZWNpZmllcyB0aGUgZXh0ZXJuYWwgbWVtb3J5IGRldmljZSB3aWR0aC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgRlNNQ19EYXRhX1dpZHRoICovCisKKyAgdWludDMyX3QgRlNNQ19CdXJzdEFjY2Vzc01vZGU7ICAgICAvKiE8IEVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIGJ1cnN0IGFjY2VzcyBtb2RlIGZvciBGbGFzaCBtZW1vcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZCBvbmx5IHdpdGggc3luY2hyb25vdXMgYnVyc3QgRmxhc2ggbWVtb3JpZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIEZTTUNfQnVyc3RfQWNjZXNzX01vZGUgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICB1aW50MzJfdCBGU01DX0FzeW5jaHJvbm91c1dhaXQ7ICAgICAvKiE8IEVuYWJsZXMgb3IgZGlzYWJsZXMgd2FpdCBzaWduYWwgZHVyaW5nIGFzeW5jaHJvbm91cyB0cmFuc2ZlcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZCBvbmx5IHdpdGggYXN5bmNocm9ub3VzIEZsYXNoIG1lbW9yaWVzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBGU01DX0FzeW5jaHJvbm91c1dhaXQgKi8KKworICB1aW50MzJfdCBGU01DX1dhaXRTaWduYWxQb2xhcml0eTsgIC8qITwgU3BlY2lmaWVzIHRoZSB3YWl0IHNpZ25hbCBwb2xhcml0eSwgdmFsaWQgb25seSB3aGVuIGFjY2Vzc2luZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIEZsYXNoIG1lbW9yeSBpbiBidXJzdCBtb2RlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBGU01DX1dhaXRfU2lnbmFsX1BvbGFyaXR5ICovCisKKyAgdWludDMyX3QgRlNNQ19XcmFwTW9kZTsgICAgICAgICAgICAvKiE8IEVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIFdyYXBwZWQgYnVyc3QgYWNjZXNzIG1vZGUgZm9yIEZsYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1vcnksIHZhbGlkIG9ubHkgd2hlbiBhY2Nlc3NpbmcgRmxhc2ggbWVtb3JpZXMgaW4gYnVyc3QgbW9kZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgRlNNQ19XcmFwX01vZGUgKi8KKworICB1aW50MzJfdCBGU01DX1dhaXRTaWduYWxBY3RpdmU7ICAgIC8qITwgU3BlY2lmaWVzIGlmIHRoZSB3YWl0IHNpZ25hbCBpcyBhc3NlcnRlZCBieSB0aGUgbWVtb3J5IG9uZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvY2sgY3ljbGUgYmVmb3JlIHRoZSB3YWl0IHN0YXRlIG9yIGR1cmluZyB0aGUgd2FpdCBzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkIG9ubHkgd2hlbiBhY2Nlc3NpbmcgbWVtb3JpZXMgaW4gYnVyc3QgbW9kZS4gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIEZTTUNfV2FpdF9UaW1pbmcgKi8KKworICB1aW50MzJfdCBGU01DX1dyaXRlT3BlcmF0aW9uOyAgICAgIC8qITwgRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgd3JpdGUgb3BlcmF0aW9uIGluIHRoZSBzZWxlY3RlZCBiYW5rIGJ5IHRoZSBGU01DLiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgRlNNQ19Xcml0ZV9PcGVyYXRpb24gKi8KKworICB1aW50MzJfdCBGU01DX1dhaXRTaWduYWw7ICAgICAgICAgIC8qITwgRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgd2FpdC1zdGF0ZSBpbnNlcnRpb24gdmlhIHdhaXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25hbCwgdmFsaWQgZm9yIEZsYXNoIG1lbW9yeSBhY2Nlc3MgaW4gYnVyc3QgbW9kZS4gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIEZTTUNfV2FpdF9TaWduYWwgKi8KKworICB1aW50MzJfdCBGU01DX0V4dGVuZGVkTW9kZTsgICAgICAgIC8qITwgRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgZXh0ZW5kZWQgbW9kZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgRlNNQ19FeHRlbmRlZF9Nb2RlICovCisKKyAgdWludDMyX3QgRlNNQ19Xcml0ZUJ1cnN0OyAgICAgICAgICAvKiE8IEVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIHdyaXRlIGJ1cnN0IG9wZXJhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgRlNNQ19Xcml0ZV9CdXJzdCAqLyAKKworICBGU01DX05PUlNSQU1UaW1pbmdJbml0VHlwZURlZiogRlNNQ19SZWFkV3JpdGVUaW1pbmdTdHJ1Y3Q7IC8qITwgVGltaW5nIFBhcmFtZXRlcnMgZm9yIHdyaXRlIGFuZCByZWFkIGFjY2VzcyBpZiB0aGUgIEV4dGVuZGVkTW9kZSBpcyBub3QgdXNlZCovICAKKworICBGU01DX05PUlNSQU1UaW1pbmdJbml0VHlwZURlZiogRlNNQ19Xcml0ZVRpbWluZ1N0cnVjdDsgICAgIC8qITwgVGltaW5nIFBhcmFtZXRlcnMgZm9yIHdyaXRlIGFjY2VzcyBpZiB0aGUgIEV4dGVuZGVkTW9kZSBpcyB1c2VkKi8gICAgICAKK31GU01DX05PUlNSQU1Jbml0VHlwZURlZjsKKworLyoqIAorICAqIEBicmllZiAgVGltaW5nIHBhcmFtZXRlcnMgRm9yIEZTTUMgTkFORCBhbmQgUENDQVJEIEJhbmtzCisgICovCisKK3R5cGVkZWYgc3RydWN0Cit7CisgIHVpbnQzMl90IEZTTUNfU2V0dXBUaW1lOyAgICAgIC8qITwgRGVmaW5lcyB0aGUgbnVtYmVyIG9mIEhDTEsgY3ljbGVzIHRvIHNldHVwIGFkZHJlc3MgYmVmb3JlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGNvbW1hbmQgYXNzZXJ0aW9uIGZvciBOQU5ELUZsYXNoIHJlYWQgb3Igd3JpdGUgYWNjZXNzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gY29tbW9uL0F0dHJpYnV0ZSBvciBJL08gbWVtb3J5IHNwYWNlIChkZXBlbmRpbmcgb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgbWVtb3J5IHNwYWNlIHRpbWluZyB0byBiZSBjb25maWd1cmVkKS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBiZXR3ZWVuIDAgYW5kIDB4RkYuKi8KKworICB1aW50MzJfdCBGU01DX1dhaXRTZXR1cFRpbWU7ICAvKiE8IERlZmluZXMgdGhlIG1pbmltdW0gbnVtYmVyIG9mIEhDTEsgY3ljbGVzIHRvIGFzc2VydCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kIGZvciBOQU5ELUZsYXNoIHJlYWQgb3Igd3JpdGUgYWNjZXNzIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uL0F0dHJpYnV0ZSBvciBJL08gbWVtb3J5IHNwYWNlIChkZXBlbmRpbmcgb24gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtb3J5IHNwYWNlIHRpbWluZyB0byBiZSBjb25maWd1cmVkKS4gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgbnVtYmVyIGJldHdlZW4gMHgwMCBhbmQgMHhGRiAqLworCisgIHVpbnQzMl90IEZTTUNfSG9sZFNldHVwVGltZTsgIC8qITwgRGVmaW5lcyB0aGUgbnVtYmVyIG9mIEhDTEsgY2xvY2sgY3ljbGVzIHRvIGhvbGQgYWRkcmVzcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhbmQgZGF0YSBmb3Igd3JpdGUgYWNjZXNzKSBhZnRlciB0aGUgY29tbWFuZCBkZWFzc2VydGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBOQU5ELUZsYXNoIHJlYWQgb3Igd3JpdGUgYWNjZXNzIHRvIGNvbW1vbi9BdHRyaWJ1dGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciBJL08gbWVtb3J5IHNwYWNlIChkZXBlbmRpbmcgb24gdGhlIG1lbW9yeSBzcGFjZSB0aW1pbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBiZSBjb25maWd1cmVkKS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSBudW1iZXIgYmV0d2VlbiAweDAwIGFuZCAweEZGICovCisKKyAgdWludDMyX3QgRlNNQ19IaVpTZXR1cFRpbWU7ICAgLyohPCBEZWZpbmVzIHRoZSBudW1iZXIgb2YgSENMSyBjbG9jayBjeWNsZXMgZHVyaW5nIHdoaWNoIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFidXMgaXMga2VwdCBpbiBIaVogYWZ0ZXIgdGhlIHN0YXJ0IG9mIGEgTkFORC1GbGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlIGFjY2VzcyB0byBjb21tb24vQXR0cmlidXRlIG9yIEkvTyBtZW1vcnkgc3BhY2UgKGRlcGVuZGluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uIHRoZSBtZW1vcnkgc3BhY2UgdGltaW5nIHRvIGJlIGNvbmZpZ3VyZWQpLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIG51bWJlciBiZXR3ZWVuIDB4MDAgYW5kIDB4RkYgKi8KK31GU01DX05BTkRfUENDQVJEVGltaW5nSW5pdFR5cGVEZWY7CisKKy8qKiAKKyAgKiBAYnJpZWYgIEZTTUMgTkFORCBJbml0IHN0cnVjdHVyZSBkZWZpbml0aW9uCisgICovCisKK3R5cGVkZWYgc3RydWN0Cit7CisgIHVpbnQzMl90IEZTTUNfQmFuazsgICAgICAgICAgICAgIC8qITwgU3BlY2lmaWVzIHRoZSBOQU5EIG1lbW9yeSBiYW5rIHRoYXQgd2lsbCBiZSB1c2VkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIEZTTUNfTkFORF9CYW5rICovCisKKyAgdWludDMyX3QgRlNNQ19XYWl0ZmVhdHVyZTsgICAgICAvKiE8IEVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIFdhaXQgZmVhdHVyZSBmb3IgdGhlIE5BTkQgTWVtb3J5IEJhbmsuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYW55IHZhbHVlIG9mIEByZWYgRlNNQ19XYWl0X2ZlYXR1cmUgKi8KKworICB1aW50MzJfdCBGU01DX01lbW9yeURhdGFXaWR0aDsgIC8qITwgU3BlY2lmaWVzIHRoZSBleHRlcm5hbCBtZW1vcnkgZGV2aWNlIHdpZHRoLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGFueSB2YWx1ZSBvZiBAcmVmIEZTTUNfRGF0YV9XaWR0aCAqLworCisgIHVpbnQzMl90IEZTTUNfRUNDOyAgICAgICAgICAgICAgLyohPCBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBFQ0MgY29tcHV0YXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYW55IHZhbHVlIG9mIEByZWYgRlNNQ19FQ0MgKi8KKworICB1aW50MzJfdCBGU01DX0VDQ1BhZ2VTaXplOyAgICAgIC8qITwgRGVmaW5lcyB0aGUgcGFnZSBzaXplIGZvciB0aGUgZXh0ZW5kZWQgRUNDLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGFueSB2YWx1ZSBvZiBAcmVmIEZTTUNfRUNDX1BhZ2VfU2l6ZSAqLworCisgIHVpbnQzMl90IEZTTUNfVENMUlNldHVwVGltZTsgICAgLyohPCBEZWZpbmVzIHRoZSBudW1iZXIgb2YgSENMSyBjeWNsZXMgdG8gY29uZmlndXJlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsYXkgYmV0d2VlbiBDTEUgbG93IGFuZCBSRSBsb3cuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBiZXR3ZWVuIDAgYW5kIDB4RkYuICovCisKKyAgdWludDMyX3QgRlNNQ19UQVJTZXR1cFRpbWU7ICAgICAvKiE8IERlZmluZXMgdGhlIG51bWJlciBvZiBIQ0xLIGN5Y2xlcyB0byBjb25maWd1cmUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxheSBiZXR3ZWVuIEFMRSBsb3cgYW5kIFJFIGxvdy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIG51bWJlciBiZXR3ZWVuIDB4MCBhbmQgMHhGRiAqLyAKKworICBGU01DX05BTkRfUENDQVJEVGltaW5nSW5pdFR5cGVEZWYqICBGU01DX0NvbW1vblNwYWNlVGltaW5nU3RydWN0OyAgIC8qITwgRlNNQyBDb21tb24gU3BhY2UgVGltaW5nICovIAorCisgIEZTTUNfTkFORF9QQ0NBUkRUaW1pbmdJbml0VHlwZURlZiogIEZTTUNfQXR0cmlidXRlU3BhY2VUaW1pbmdTdHJ1Y3Q7IC8qITwgRlNNQyBBdHRyaWJ1dGUgU3BhY2UgVGltaW5nICovCit9RlNNQ19OQU5ESW5pdFR5cGVEZWY7CisKKy8qKiAKKyAgKiBAYnJpZWYgIEZTTUMgUENDQVJEIEluaXQgc3RydWN0dXJlIGRlZmluaXRpb24KKyAgKi8KKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgdWludDMyX3QgRlNNQ19XYWl0ZmVhdHVyZTsgICAgLyohPCBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBXYWl0IGZlYXR1cmUgZm9yIHRoZSBNZW1vcnkgQmFuay4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhbnkgdmFsdWUgb2YgQHJlZiBGU01DX1dhaXRfZmVhdHVyZSAqLworCisgIHVpbnQzMl90IEZTTUNfVENMUlNldHVwVGltZTsgIC8qITwgRGVmaW5lcyB0aGUgbnVtYmVyIG9mIEhDTEsgY3ljbGVzIHRvIGNvbmZpZ3VyZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxheSBiZXR3ZWVuIENMRSBsb3cgYW5kIFJFIGxvdy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBiZXR3ZWVuIDAgYW5kIDB4RkYuICovCisKKyAgdWludDMyX3QgRlNNQ19UQVJTZXR1cFRpbWU7ICAgLyohPCBEZWZpbmVzIHRoZSBudW1iZXIgb2YgSENMSyBjeWNsZXMgdG8gY29uZmlndXJlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGF5IGJldHdlZW4gQUxFIGxvdyBhbmQgUkUgbG93LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIG51bWJlciBiZXR3ZWVuIDB4MCBhbmQgMHhGRiAqLyAKKworICAKKyAgRlNNQ19OQU5EX1BDQ0FSRFRpbWluZ0luaXRUeXBlRGVmKiAgRlNNQ19Db21tb25TcGFjZVRpbWluZ1N0cnVjdDsgLyohPCBGU01DIENvbW1vbiBTcGFjZSBUaW1pbmcgKi8KKworICBGU01DX05BTkRfUENDQVJEVGltaW5nSW5pdFR5cGVEZWYqICBGU01DX0F0dHJpYnV0ZVNwYWNlVGltaW5nU3RydWN0OyAgLyohPCBGU01DIEF0dHJpYnV0ZSBTcGFjZSBUaW1pbmcgKi8gCisgIAorICBGU01DX05BTkRfUENDQVJEVGltaW5nSW5pdFR5cGVEZWYqICBGU01DX0lPU3BhY2VUaW1pbmdTdHJ1Y3Q7IC8qITwgRlNNQyBJTyBTcGFjZSBUaW1pbmcgKi8gIAorfUZTTUNfUENDQVJESW5pdFR5cGVEZWY7CisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgRlNNQ19FeHBvcnRlZF9Db25zdGFudHMKKyAgKiBAeworICAqLworCisvKiogQGRlZmdyb3VwIEZTTUNfTk9SU1JBTV9CYW5rIAorICAqIEB7CisgICovCisjZGVmaW5lIEZTTUNfQmFuazFfTk9SU1JBTTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMCkKKyNkZWZpbmUgRlNNQ19CYW5rMV9OT1JTUkFNMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAyKQorI2RlZmluZSBGU01DX0JhbmsxX05PUlNSQU0zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDQpCisjZGVmaW5lIEZTTUNfQmFuazFfTk9SU1JBTTQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNikKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgRlNNQ19OQU5EX0JhbmsgCisgICogQHsKKyAgKi8gIAorI2RlZmluZSBGU01DX0JhbmsyX05BTkQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApCisjZGVmaW5lIEZTTUNfQmFuazNfTkFORCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDEwMCkKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgRlNNQ19QQ0NBUkRfQmFuayAKKyAgKiBAeworICAqLyAgICAKKyNkZWZpbmUgRlNNQ19CYW5rNF9QQ0NBUkQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKQorLyoqCisgICogQH0KKyAgKi8KKworI2RlZmluZSBJU19GU01DX05PUlNSQU1fQkFOSyhCQU5LKSAoKChCQU5LKSA9PSBGU01DX0JhbmsxX05PUlNSQU0xKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEJBTkspID09IEZTTUNfQmFuazFfTk9SU1JBTTIpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoQkFOSykgPT0gRlNNQ19CYW5rMV9OT1JTUkFNMykgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChCQU5LKSA9PSBGU01DX0JhbmsxX05PUlNSQU00KSkKKworI2RlZmluZSBJU19GU01DX05BTkRfQkFOSyhCQU5LKSAoKChCQU5LKSA9PSBGU01DX0JhbmsyX05BTkQpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoQkFOSykgPT0gRlNNQ19CYW5rM19OQU5EKSkKKworI2RlZmluZSBJU19GU01DX0dFVEZMQUdfQkFOSyhCQU5LKSAoKChCQU5LKSA9PSBGU01DX0JhbmsyX05BTkQpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoQkFOSykgPT0gRlNNQ19CYW5rM19OQU5EKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEJBTkspID09IEZTTUNfQmFuazRfUENDQVJEKSkKKworI2RlZmluZSBJU19GU01DX0lUX0JBTksoQkFOSykgKCgoQkFOSykgPT0gRlNNQ19CYW5rMl9OQU5EKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChCQU5LKSA9PSBGU01DX0JhbmszX05BTkQpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEJBTkspID09IEZTTUNfQmFuazRfUENDQVJEKSkKKworLyoqIEBkZWZncm91cCBOT1JfU1JBTV9Db250cm9sbGVyIAorICAqIEB7CisgICovCisKKy8qKiBAZGVmZ3JvdXAgRlNNQ19EYXRhX0FkZHJlc3NfQnVzX011bHRpcGxleGluZyAKKyAgKiBAeworICAqLworCisjZGVmaW5lIEZTTUNfRGF0YUFkZHJlc3NNdXhfRGlzYWJsZSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAwKQorI2RlZmluZSBGU01DX0RhdGFBZGRyZXNzTXV4X0VuYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMikKKyNkZWZpbmUgSVNfRlNNQ19NVVgoTVVYKSAoKChNVVgpID09IEZTTUNfRGF0YUFkZHJlc3NNdXhfRGlzYWJsZSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAoKE1VWCkgPT0gRlNNQ19EYXRhQWRkcmVzc011eF9FbmFibGUpKQorCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIEZTTUNfTWVtb3J5X1R5cGUgCisgICogQHsKKyAgKi8KKworI2RlZmluZSBGU01DX01lbW9yeVR5cGVfU1JBTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDApCisjZGVmaW5lIEZTTUNfTWVtb3J5VHlwZV9QU1JBTSAgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNCkKKyNkZWZpbmUgRlNNQ19NZW1vcnlUeXBlX05PUiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA4KQorI2RlZmluZSBJU19GU01DX01FTU9SWShNRU1PUlkpICgoKE1FTU9SWSkgPT0gRlNNQ19NZW1vcnlUeXBlX1NSQU0pIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChNRU1PUlkpID09IEZTTUNfTWVtb3J5VHlwZV9QU1JBTSl8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTUVNT1JZKSA9PSBGU01DX01lbW9yeVR5cGVfTk9SKSkKKworLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBGU01DX0RhdGFfV2lkdGggCisgICogQHsKKyAgKi8KKworI2RlZmluZSBGU01DX01lbW9yeURhdGFXaWR0aF84YiAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDApCisjZGVmaW5lIEZTTUNfTWVtb3J5RGF0YVdpZHRoXzE2YiAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAxMCkKKyNkZWZpbmUgSVNfRlNNQ19NRU1PUllfV0lEVEgoV0lEVEgpICgoKFdJRFRIKSA9PSBGU01DX01lbW9yeURhdGFXaWR0aF84YikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoV0lEVEgpID09IEZTTUNfTWVtb3J5RGF0YVdpZHRoXzE2YikpCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgRlNNQ19CdXJzdF9BY2Nlc3NfTW9kZSAKKyAgKiBAeworICAqLworCisjZGVmaW5lIEZTTUNfQnVyc3RBY2Nlc3NNb2RlX0Rpc2FibGUgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMCkgCisjZGVmaW5lIEZTTUNfQnVyc3RBY2Nlc3NNb2RlX0VuYWJsZSAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDEwMCkKKyNkZWZpbmUgSVNfRlNNQ19CVVJTVE1PREUoU1RBVEUpICgoKFNUQVRFKSA9PSBGU01DX0J1cnN0QWNjZXNzTW9kZV9EaXNhYmxlKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChTVEFURSkgPT0gRlNNQ19CdXJzdEFjY2Vzc01vZGVfRW5hYmxlKSkKKy8qKgorICAqIEB9CisgICovCisgIAorLyoqIEBkZWZncm91cCBGU01DX0FzeW5jaHJvbm91c1dhaXQgCisgICogQHsKKyAgKi8KKyNkZWZpbmUgRlNNQ19Bc3luY2hyb25vdXNXYWl0X0Rpc2FibGUgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAwKQorI2RlZmluZSBGU01DX0FzeW5jaHJvbm91c1dhaXRfRW5hYmxlICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDgwMDApCisjZGVmaW5lIElTX0ZTTUNfQVNZTldBSVQoU1RBVEUpICgoKFNUQVRFKSA9PSBGU01DX0FzeW5jaHJvbm91c1dhaXRfRGlzYWJsZSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChTVEFURSkgPT0gRlNNQ19Bc3luY2hyb25vdXNXYWl0X0VuYWJsZSkpCisKKy8qKgorICAqIEB9CisgICovCisgIAorLyoqIEBkZWZncm91cCBGU01DX1dhaXRfU2lnbmFsX1BvbGFyaXR5IAorICAqIEB7CisgICovCisKKyNkZWZpbmUgRlNNQ19XYWl0U2lnbmFsUG9sYXJpdHlfTG93ICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAwKQorI2RlZmluZSBGU01DX1dhaXRTaWduYWxQb2xhcml0eV9IaWdoICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAyMDApCisjZGVmaW5lIElTX0ZTTUNfV0FJVF9QT0xBUklUWShQT0xBUklUWSkgKCgoUE9MQVJJVFkpID09IEZTTUNfV2FpdFNpZ25hbFBvbGFyaXR5X0xvdykgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBPTEFSSVRZKSA9PSBGU01DX1dhaXRTaWduYWxQb2xhcml0eV9IaWdoKSkgCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgRlNNQ19XcmFwX01vZGUgCisgICogQHsKKyAgKi8KKworI2RlZmluZSBGU01DX1dyYXBNb2RlX0Rpc2FibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDApCisjZGVmaW5lIEZTTUNfV3JhcE1vZGVfRW5hYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDQwMCkgCisjZGVmaW5lIElTX0ZTTUNfV1JBUF9NT0RFKE1PREUpICgoKE1PREUpID09IEZTTUNfV3JhcE1vZGVfRGlzYWJsZSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChNT0RFKSA9PSBGU01DX1dyYXBNb2RlX0VuYWJsZSkpCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgRlNNQ19XYWl0X1RpbWluZyAKKyAgKiBAeworICAqLworCisjZGVmaW5lIEZTTUNfV2FpdFNpZ25hbEFjdGl2ZV9CZWZvcmVXYWl0U3RhdGUgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMCkKKyNkZWZpbmUgRlNNQ19XYWl0U2lnbmFsQWN0aXZlX0R1cmluZ1dhaXRTdGF0ZSAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwODAwKSAKKyNkZWZpbmUgSVNfRlNNQ19XQUlUX1NJR05BTF9BQ1RJVkUoQUNUSVZFKSAoKChBQ1RJVkUpID09IEZTTUNfV2FpdFNpZ25hbEFjdGl2ZV9CZWZvcmVXYWl0U3RhdGUpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChBQ1RJVkUpID09IEZTTUNfV2FpdFNpZ25hbEFjdGl2ZV9EdXJpbmdXYWl0U3RhdGUpKQorCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIEZTTUNfV3JpdGVfT3BlcmF0aW9uIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgRlNNQ19Xcml0ZU9wZXJhdGlvbl9EaXNhYmxlICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAwKQorI2RlZmluZSBGU01DX1dyaXRlT3BlcmF0aW9uX0VuYWJsZSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDEwMDApCisjZGVmaW5lIElTX0ZTTUNfV1JJVEVfT1BFUkFUSU9OKE9QRVJBVElPTikgKCgoT1BFUkFUSU9OKSA9PSBGU01DX1dyaXRlT3BlcmF0aW9uX0Rpc2FibGUpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChPUEVSQVRJT04pID09IEZTTUNfV3JpdGVPcGVyYXRpb25fRW5hYmxlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBGU01DX1dhaXRfU2lnbmFsIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgRlNNQ19XYWl0U2lnbmFsX0Rpc2FibGUgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAwKQorI2RlZmluZSBGU01DX1dhaXRTaWduYWxfRW5hYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApIAorI2RlZmluZSBJU19GU01DX1dBSVRFX1NJR05BTChTSUdOQUwpICgoKFNJR05BTCkgPT0gRlNNQ19XYWl0U2lnbmFsX0Rpc2FibGUpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChTSUdOQUwpID09IEZTTUNfV2FpdFNpZ25hbF9FbmFibGUpKQorLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBGU01DX0V4dGVuZGVkX01vZGUgCisgICogQHsKKyAgKi8KKworI2RlZmluZSBGU01DX0V4dGVuZGVkTW9kZV9EaXNhYmxlICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDApCisjZGVmaW5lIEZTTUNfRXh0ZW5kZWRNb2RlX0VuYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkKKworI2RlZmluZSBJU19GU01DX0VYVEVOREVEX01PREUoTU9ERSkgKCgoTU9ERSkgPT0gRlNNQ19FeHRlbmRlZE1vZGVfRGlzYWJsZSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTU9ERSkgPT0gRlNNQ19FeHRlbmRlZE1vZGVfRW5hYmxlKSkgCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgRlNNQ19Xcml0ZV9CdXJzdCAKKyAgKiBAeworICAqLworCisjZGVmaW5lIEZTTUNfV3JpdGVCdXJzdF9EaXNhYmxlICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMCkKKyNkZWZpbmUgRlNNQ19Xcml0ZUJ1cnN0X0VuYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDgwMDAwKSAKKyNkZWZpbmUgSVNfRlNNQ19XUklURV9CVVJTVChCVVJTVCkgKCgoQlVSU1QpID09IEZTTUNfV3JpdGVCdXJzdF9EaXNhYmxlKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEJVUlNUKSA9PSBGU01DX1dyaXRlQnVyc3RfRW5hYmxlKSkKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgRlNNQ19BZGRyZXNzX1NldHVwX1RpbWUgCisgICogQHsKKyAgKi8KKworI2RlZmluZSBJU19GU01DX0FERFJFU1NfU0VUVVBfVElNRShUSU1FKSAoKFRJTUUpIDw9IDB4RikKKworLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBGU01DX0FkZHJlc3NfSG9sZF9UaW1lIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgSVNfRlNNQ19BRERSRVNTX0hPTERfVElNRShUSU1FKSAoKFRJTUUpIDw9IDB4RikKKworLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBGU01DX0RhdGFfU2V0dXBfVGltZSAKKyAgKiBAeworICAqLworCisjZGVmaW5lIElTX0ZTTUNfREFUQVNFVFVQX1RJTUUoVElNRSkgKCgoVElNRSkgPiAwKSAmJiAoKFRJTUUpIDw9IDB4RkYpKQorCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIEZTTUNfQnVzX1R1cm5fYXJvdW5kX0R1cmF0aW9uIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgSVNfRlNNQ19UVVJOQVJPVU5EX1RJTUUoVElNRSkgKChUSU1FKSA8PSAweEYpCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgRlNNQ19DTEtfRGl2aXNpb24gCisgICogQHsKKyAgKi8KKworI2RlZmluZSBJU19GU01DX0NMS19ESVYoRElWKSAoKERJVikgPD0gMHhGKQorCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIEZTTUNfRGF0YV9MYXRlbmN5IAorICAqIEB7CisgICovCisKKyNkZWZpbmUgSVNfRlNNQ19EQVRBX0xBVEVOQ1koTEFURU5DWSkgKChMQVRFTkNZKSA8PSAweEYpCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgRlNNQ19BY2Nlc3NfTW9kZSAKKyAgKiBAeworICAqLworCisjZGVmaW5lIEZTTUNfQWNjZXNzTW9kZV9BICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMCkKKyNkZWZpbmUgRlNNQ19BY2Nlc3NNb2RlX0IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDEwMDAwMDAwKSAKKyNkZWZpbmUgRlNNQ19BY2Nlc3NNb2RlX0MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDIwMDAwMDAwKQorI2RlZmluZSBGU01DX0FjY2Vzc01vZGVfRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MzAwMDAwMDApCisjZGVmaW5lIElTX0ZTTUNfQUNDRVNTX01PREUoTU9ERSkgKCgoTU9ERSkgPT0gRlNNQ19BY2Nlc3NNb2RlX0EpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChNT0RFKSA9PSBGU01DX0FjY2Vzc01vZGVfQikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE1PREUpID09IEZTTUNfQWNjZXNzTW9kZV9DKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTU9ERSkgPT0gRlNNQ19BY2Nlc3NNb2RlX0QpKSAKKworLyoqCisgICogQH0KKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKyAgCisvKiogQGRlZmdyb3VwIE5BTkRfUENDQVJEX0NvbnRyb2xsZXIgCisgICogQHsKKyAgKi8KKworLyoqIEBkZWZncm91cCBGU01DX1dhaXRfZmVhdHVyZSAKKyAgKiBAeworICAqLworCisjZGVmaW5lIEZTTUNfV2FpdGZlYXR1cmVfRGlzYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMCkKKyNkZWZpbmUgRlNNQ19XYWl0ZmVhdHVyZV9FbmFibGUgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAyKQorI2RlZmluZSBJU19GU01DX1dBSVRfRkVBVFVSRShGRUFUVVJFKSAoKChGRUFUVVJFKSA9PSBGU01DX1dhaXRmZWF0dXJlX0Rpc2FibGUpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRkVBVFVSRSkgPT0gRlNNQ19XYWl0ZmVhdHVyZV9FbmFibGUpKQorCisvKioKKyAgKiBAfQorICAqLworCisKKy8qKiBAZGVmZ3JvdXAgRlNNQ19FQ0MgCisgICogQHsKKyAgKi8KKworI2RlZmluZSBGU01DX0VDQ19EaXNhYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDApCisjZGVmaW5lIEZTTUNfRUNDX0VuYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkKKyNkZWZpbmUgSVNfRlNNQ19FQ0NfU1RBVEUoU1RBVEUpICgoKFNUQVRFKSA9PSBGU01DX0VDQ19EaXNhYmxlKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChTVEFURSkgPT0gRlNNQ19FQ0NfRW5hYmxlKSkKKworLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBGU01DX0VDQ19QYWdlX1NpemUgCisgICogQHsKKyAgKi8KKworI2RlZmluZSBGU01DX0VDQ1BhZ2VTaXplXzI1NkJ5dGVzICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDApCisjZGVmaW5lIEZTTUNfRUNDUGFnZVNpemVfNTEyQnl0ZXMgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkKKyNkZWZpbmUgRlNNQ19FQ0NQYWdlU2l6ZV8xMDI0Qnl0ZXMgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDQwMDAwKQorI2RlZmluZSBGU01DX0VDQ1BhZ2VTaXplXzIwNDhCeXRlcyAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwNjAwMDApCisjZGVmaW5lIEZTTUNfRUNDUGFnZVNpemVfNDA5NkJ5dGVzICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA4MDAwMCkKKyNkZWZpbmUgRlNNQ19FQ0NQYWdlU2l6ZV84MTkyQnl0ZXMgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMEEwMDAwKQorI2RlZmluZSBJU19GU01DX0VDQ1BBR0VfU0laRShTSVpFKSAoKChTSVpFKSA9PSBGU01DX0VDQ1BhZ2VTaXplXzI1NkJ5dGVzKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFNJWkUpID09IEZTTUNfRUNDUGFnZVNpemVfNTEyQnl0ZXMpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoU0laRSkgPT0gRlNNQ19FQ0NQYWdlU2l6ZV8xMDI0Qnl0ZXMpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoU0laRSkgPT0gRlNNQ19FQ0NQYWdlU2l6ZV8yMDQ4Qnl0ZXMpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoU0laRSkgPT0gRlNNQ19FQ0NQYWdlU2l6ZV80MDk2Qnl0ZXMpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoU0laRSkgPT0gRlNNQ19FQ0NQYWdlU2l6ZV84MTkyQnl0ZXMpKQorCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIEZTTUNfVENMUl9TZXR1cF9UaW1lIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgSVNfRlNNQ19UQ0xSX1RJTUUoVElNRSkgKChUSU1FKSA8PSAweEZGKQorCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIEZTTUNfVEFSX1NldHVwX1RpbWUgCisgICogQHsKKyAgKi8KKworI2RlZmluZSBJU19GU01DX1RBUl9USU1FKFRJTUUpICgoVElNRSkgPD0gMHhGRikKKworLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBGU01DX1NldHVwX1RpbWUgCisgICogQHsKKyAgKi8KKworI2RlZmluZSBJU19GU01DX1NFVFVQX1RJTUUoVElNRSkgKChUSU1FKSA8PSAweEZGKQorCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIEZTTUNfV2FpdF9TZXR1cF9UaW1lIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgSVNfRlNNQ19XQUlUX1RJTUUoVElNRSkgKChUSU1FKSA8PSAweEZGKQorCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIEZTTUNfSG9sZF9TZXR1cF9UaW1lIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgSVNfRlNNQ19IT0xEX1RJTUUoVElNRSkgKChUSU1FKSA8PSAweEZGKQorCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIEZTTUNfSGlaX1NldHVwX1RpbWUgCisgICogQHsKKyAgKi8KKworI2RlZmluZSBJU19GU01DX0hJWl9USU1FKFRJTUUpICgoVElNRSkgPD0gMHhGRikKKworLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBGU01DX0ludGVycnVwdF9zb3VyY2VzIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgRlNNQ19JVF9SaXNpbmdFZGdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA4KQorI2RlZmluZSBGU01DX0lUX0xldmVsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApCisjZGVmaW5lIEZTTUNfSVRfRmFsbGluZ0VkZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAyMCkKKyNkZWZpbmUgSVNfRlNNQ19JVChJVCkgKCgoKElUKSAmICh1aW50MzJfdCkweEZGRkZGRkM3KSA9PSAweDAwMDAwMDAwKSAmJiAoKElUKSAhPSAweDAwMDAwMDAwKSkKKyNkZWZpbmUgSVNfRlNNQ19HRVRfSVQoSVQpICgoKElUKSA9PSBGU01DX0lUX1Jpc2luZ0VkZ2UpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKElUKSA9PSBGU01DX0lUX0xldmVsKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJVCkgPT0gRlNNQ19JVF9GYWxsaW5nRWRnZSkpIAorLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBGU01DX0ZsYWdzIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgRlNNQ19GTEFHX1Jpc2luZ0VkZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxKQorI2RlZmluZSBGU01DX0ZMQUdfTGV2ZWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpCisjZGVmaW5lIEZTTUNfRkxBR19GYWxsaW5nRWRnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNCkKKyNkZWZpbmUgRlNNQ19GTEFHX0ZFTVBUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDQwKQorI2RlZmluZSBJU19GU01DX0dFVF9GTEFHKEZMQUcpICgoKEZMQUcpID09IEZTTUNfRkxBR19SaXNpbmdFZGdlKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRkxBRykgPT0gRlNNQ19GTEFHX0xldmVsKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRkxBRykgPT0gRlNNQ19GTEFHX0ZhbGxpbmdFZGdlKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRkxBRykgPT0gRlNNQ19GTEFHX0ZFTVBUKSkKKworI2RlZmluZSBJU19GU01DX0NMRUFSX0ZMQUcoRkxBRykgKCgoKEZMQUcpICYgKHVpbnQzMl90KTB4RkZGRkZGRjgpID09IDB4MDAwMDAwMDApICYmICgoRkxBRykgIT0gMHgwMDAwMDAwMCkpCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgRlNNQ19FeHBvcnRlZF9NYWNyb3MKKyAgKiBAeworICAqLworCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIEZTTUNfRXhwb3J0ZWRfRnVuY3Rpb25zCisgICogQHsKKyAgKi8KKwordm9pZCBGU01DX05PUlNSQU1EZUluaXQodWludDMyX3QgRlNNQ19CYW5rKTsKK3ZvaWQgRlNNQ19OQU5ERGVJbml0KHVpbnQzMl90IEZTTUNfQmFuayk7Cit2b2lkIEZTTUNfUENDQVJERGVJbml0KHZvaWQpOwordm9pZCBGU01DX05PUlNSQU1Jbml0KEZTTUNfTk9SU1JBTUluaXRUeXBlRGVmKiBGU01DX05PUlNSQU1Jbml0U3RydWN0KTsKK3ZvaWQgRlNNQ19OQU5ESW5pdChGU01DX05BTkRJbml0VHlwZURlZiogRlNNQ19OQU5ESW5pdFN0cnVjdCk7Cit2b2lkIEZTTUNfUENDQVJESW5pdChGU01DX1BDQ0FSREluaXRUeXBlRGVmKiBGU01DX1BDQ0FSREluaXRTdHJ1Y3QpOwordm9pZCBGU01DX05PUlNSQU1TdHJ1Y3RJbml0KEZTTUNfTk9SU1JBTUluaXRUeXBlRGVmKiBGU01DX05PUlNSQU1Jbml0U3RydWN0KTsKK3ZvaWQgRlNNQ19OQU5EU3RydWN0SW5pdChGU01DX05BTkRJbml0VHlwZURlZiogRlNNQ19OQU5ESW5pdFN0cnVjdCk7Cit2b2lkIEZTTUNfUENDQVJEU3RydWN0SW5pdChGU01DX1BDQ0FSREluaXRUeXBlRGVmKiBGU01DX1BDQ0FSREluaXRTdHJ1Y3QpOwordm9pZCBGU01DX05PUlNSQU1DbWQodWludDMyX3QgRlNNQ19CYW5rLCBGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpOwordm9pZCBGU01DX05BTkRDbWQodWludDMyX3QgRlNNQ19CYW5rLCBGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpOwordm9pZCBGU01DX1BDQ0FSRENtZChGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpOwordm9pZCBGU01DX05BTkRFQ0NDbWQodWludDMyX3QgRlNNQ19CYW5rLCBGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpOwordWludDMyX3QgRlNNQ19HZXRFQ0ModWludDMyX3QgRlNNQ19CYW5rKTsKK3ZvaWQgRlNNQ19JVENvbmZpZyh1aW50MzJfdCBGU01DX0JhbmssIHVpbnQzMl90IEZTTUNfSVQsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSk7CitGbGFnU3RhdHVzIEZTTUNfR2V0RmxhZ1N0YXR1cyh1aW50MzJfdCBGU01DX0JhbmssIHVpbnQzMl90IEZTTUNfRkxBRyk7Cit2b2lkIEZTTUNfQ2xlYXJGbGFnKHVpbnQzMl90IEZTTUNfQmFuaywgdWludDMyX3QgRlNNQ19GTEFHKTsKK0lUU3RhdHVzIEZTTUNfR2V0SVRTdGF0dXModWludDMyX3QgRlNNQ19CYW5rLCB1aW50MzJfdCBGU01DX0lUKTsKK3ZvaWQgRlNNQ19DbGVhcklUUGVuZGluZ0JpdCh1aW50MzJfdCBGU01DX0JhbmssIHVpbnQzMl90IEZTTUNfSVQpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLypfX1NUTTMyRjEweF9GU01DX0ggKi8KKy8qKgorICAqIEB9CisgICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKgorICAqIEB9CisgICovIAorCisvKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIDIwMTEgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvc3RfZndfbGliL2luYy9zdG0zMmYxMHhfZ3Bpby5oIGIvc3RfZndfbGliL2luYy9zdG0zMmYxMHhfZ3Bpby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkMjhkYTgKLS0tIC9kZXYvbnVsbAorKysgYi9zdF9md19saWIvaW5jL3N0bTMyZjEweF9ncGlvLmgKQEAgLTAsMCArMSwzODUgQEAKKy8qKgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKiBAZmlsZSAgICBzdG0zMmYxMHhfZ3Bpby5oCisgICogQGF1dGhvciAgTUNEIEFwcGxpY2F0aW9uIFRlYW0KKyAgKiBAdmVyc2lvbiBWMy41LjAKKyAgKiBAZGF0ZSAgICAxMS1NYXJjaC0yMDExCisgICogQGJyaWVmICAgVGhpcyBmaWxlIGNvbnRhaW5zIGFsbCB0aGUgZnVuY3Rpb25zIHByb3RvdHlwZXMgZm9yIHRoZSBHUElPIAorICAqICAgICAgICAgIGZpcm13YXJlIGxpYnJhcnkuCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqIEBhdHRlbnRpb24KKyAgKgorICAqIFRIRSBQUkVTRU5UIEZJUk1XQVJFIFdISUNIIElTIEZPUiBHVUlEQU5DRSBPTkxZIEFJTVMgQVQgUFJPVklESU5HIENVU1RPTUVSUworICAqIFdJVEggQ09ESU5HIElORk9STUFUSU9OIFJFR0FSRElORyBUSEVJUiBQUk9EVUNUUyBJTiBPUkRFUiBGT1IgVEhFTSBUTyBTQVZFCisgICogVElNRS4gQVMgQSBSRVNVTFQsIFNUTUlDUk9FTEVDVFJPTklDUyBTSEFMTCBOT1QgQkUgSEVMRCBMSUFCTEUgRk9SIEFOWQorICAqIERJUkVDVCwgSU5ESVJFQ1QgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIFdJVEggUkVTUEVDVCBUTyBBTlkgQ0xBSU1TIEFSSVNJTkcKKyAgKiBGUk9NIFRIRSBDT05URU5UIE9GIFNVQ0ggRklSTVdBUkUgQU5EL09SIFRIRSBVU0UgTUFERSBCWSBDVVNUT01FUlMgT0YgVEhFCisgICogQ09ESU5HIElORk9STUFUSU9OIENPTlRBSU5FRCBIRVJFSU4gSU4gQ09OTkVDVElPTiBXSVRIIFRIRUlSIFBST0RVQ1RTLgorICAqCisgICogPGgyPjxjZW50ZXI+JmNvcHk7IENPUFlSSUdIVCAyMDExIFNUTWljcm9lbGVjdHJvbmljczwvY2VudGVyPjwvaDI+CisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqLworCisvKiBEZWZpbmUgdG8gcHJldmVudCByZWN1cnNpdmUgaW5jbHVzaW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworI2lmbmRlZiBfX1NUTTMyRjEweF9HUElPX0gKKyNkZWZpbmUgX19TVE0zMkYxMHhfR1BJT19ICisKKyNpZmRlZiBfX2NwbHVzcGx1cworIGV4dGVybiAiQyIgeworI2VuZGlmCisKKy8qIEluY2x1ZGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisjaW5jbHVkZSAic3RtMzJmMTB4LmgiCisKKy8qKiBAYWRkdG9ncm91cCBTVE0zMkYxMHhfU3RkUGVyaXBoX0RyaXZlcgorICAqIEB7CisgICovCisKKy8qKiBAYWRkdG9ncm91cCBHUElPCisgICogQHsKKyAgKi8KKworLyoqIEBkZWZncm91cCBHUElPX0V4cG9ydGVkX1R5cGVzCisgICogQHsKKyAgKi8KKworI2RlZmluZSBJU19HUElPX0FMTF9QRVJJUEgoUEVSSVBIKSAoKChQRVJJUEgpID09IEdQSU9BKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBFUklQSCkgPT0gR1BJT0IpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUEVSSVBIKSA9PSBHUElPQykgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQRVJJUEgpID09IEdQSU9EKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBFUklQSCkgPT0gR1BJT0UpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUEVSSVBIKSA9PSBHUElPRikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQRVJJUEgpID09IEdQSU9HKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy8qKiAKKyAgKiBAYnJpZWYgIE91dHB1dCBNYXhpbXVtIGZyZXF1ZW5jeSBzZWxlY3Rpb24gIAorICAqLworCit0eXBlZGVmIGVudW0KK3sgCisgIEdQSU9fU3BlZWRfMTBNSHogPSAxLAorICBHUElPX1NwZWVkXzJNSHosIAorICBHUElPX1NwZWVkXzUwTUh6Cit9R1BJT1NwZWVkX1R5cGVEZWY7CisjZGVmaW5lIElTX0dQSU9fU1BFRUQoU1BFRUQpICgoKFNQRUVEKSA9PSBHUElPX1NwZWVkXzEwTUh6KSB8fCAoKFNQRUVEKSA9PSBHUElPX1NwZWVkXzJNSHopIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoU1BFRUQpID09IEdQSU9fU3BlZWRfNTBNSHopKQorCisvKiogCisgICogQGJyaWVmICBDb25maWd1cmF0aW9uIE1vZGUgZW51bWVyYXRpb24gIAorICAqLworCit0eXBlZGVmIGVudW0KK3sgR1BJT19Nb2RlX0FJTiA9IDB4MCwKKyAgR1BJT19Nb2RlX0lOX0ZMT0FUSU5HID0gMHgwNCwKKyAgR1BJT19Nb2RlX0lQRCA9IDB4MjgsCisgIEdQSU9fTW9kZV9JUFUgPSAweDQ4LAorICBHUElPX01vZGVfT3V0X09EID0gMHgxNCwKKyAgR1BJT19Nb2RlX091dF9QUCA9IDB4MTAsCisgIEdQSU9fTW9kZV9BRl9PRCA9IDB4MUMsCisgIEdQSU9fTW9kZV9BRl9QUCA9IDB4MTgKK31HUElPTW9kZV9UeXBlRGVmOworCisjZGVmaW5lIElTX0dQSU9fTU9ERShNT0RFKSAoKChNT0RFKSA9PSBHUElPX01vZGVfQUlOKSB8fCAoKE1PREUpID09IEdQSU9fTW9kZV9JTl9GTE9BVElORykgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTU9ERSkgPT0gR1BJT19Nb2RlX0lQRCkgfHwgKChNT0RFKSA9PSBHUElPX01vZGVfSVBVKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChNT0RFKSA9PSBHUElPX01vZGVfT3V0X09EKSB8fCAoKE1PREUpID09IEdQSU9fTW9kZV9PdXRfUFApIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE1PREUpID09IEdQSU9fTW9kZV9BRl9PRCkgfHwgKChNT0RFKSA9PSBHUElPX01vZGVfQUZfUFApKQorCisvKiogCisgICogQGJyaWVmICBHUElPIEluaXQgc3RydWN0dXJlIGRlZmluaXRpb24gIAorICAqLworCit0eXBlZGVmIHN0cnVjdAoreworICB1aW50MTZfdCBHUElPX1BpbjsgICAgICAgICAgICAgLyohPCBTcGVjaWZpZXMgdGhlIEdQSU8gcGlucyB0byBiZSBjb25maWd1cmVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYW55IHZhbHVlIG9mIEByZWYgR1BJT19waW5zX2RlZmluZSAqLworCisgIEdQSU9TcGVlZF9UeXBlRGVmIEdQSU9fU3BlZWQ7ICAvKiE8IFNwZWNpZmllcyB0aGUgc3BlZWQgZm9yIHRoZSBzZWxlY3RlZCBwaW5zLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIEdQSU9TcGVlZF9UeXBlRGVmICovCisKKyAgR1BJT01vZGVfVHlwZURlZiBHUElPX01vZGU7ICAgIC8qITwgU3BlY2lmaWVzIHRoZSBvcGVyYXRpbmcgbW9kZSBmb3IgdGhlIHNlbGVjdGVkIHBpbnMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgR1BJT01vZGVfVHlwZURlZiAqLworfUdQSU9fSW5pdFR5cGVEZWY7CisKKworLyoqIAorICAqIEBicmllZiAgQml0X1NFVCBhbmQgQml0X1JFU0VUIGVudW1lcmF0aW9uICAKKyAgKi8KKwordHlwZWRlZiBlbnVtCit7IEJpdF9SRVNFVCA9IDAsCisgIEJpdF9TRVQKK31CaXRBY3Rpb247CisKKyNkZWZpbmUgSVNfR1BJT19CSVRfQUNUSU9OKEFDVElPTikgKCgoQUNUSU9OKSA9PSBCaXRfUkVTRVQpIHx8ICgoQUNUSU9OKSA9PSBCaXRfU0VUKSkKKworLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBHUElPX0V4cG9ydGVkX0NvbnN0YW50cworICAqIEB7CisgICovCisKKy8qKiBAZGVmZ3JvdXAgR1BJT19waW5zX2RlZmluZSAKKyAgKiBAeworICAqLworCisjZGVmaW5lIEdQSU9fUGluXzAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAxKSAgLyohPCBQaW4gMCBzZWxlY3RlZCAqLworI2RlZmluZSBHUElPX1Bpbl8xICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMikgIC8qITwgUGluIDEgc2VsZWN0ZWQgKi8KKyNkZWZpbmUgR1BJT19QaW5fMiAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDQpICAvKiE8IFBpbiAyIHNlbGVjdGVkICovCisjZGVmaW5lIEdQSU9fUGluXzMgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA4KSAgLyohPCBQaW4gMyBzZWxlY3RlZCAqLworI2RlZmluZSBHUElPX1Bpbl80ICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAxMCkgIC8qITwgUGluIDQgc2VsZWN0ZWQgKi8KKyNkZWZpbmUgR1BJT19QaW5fNSAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMjApICAvKiE8IFBpbiA1IHNlbGVjdGVkICovCisjZGVmaW5lIEdQSU9fUGluXzYgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDQwKSAgLyohPCBQaW4gNiBzZWxlY3RlZCAqLworI2RlZmluZSBHUElPX1Bpbl83ICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA4MCkgIC8qITwgUGluIDcgc2VsZWN0ZWQgKi8KKyNkZWZpbmUgR1BJT19QaW5fOCAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAxMDApICAvKiE8IFBpbiA4IHNlbGVjdGVkICovCisjZGVmaW5lIEdQSU9fUGluXzkgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMjAwKSAgLyohPCBQaW4gOSBzZWxlY3RlZCAqLworI2RlZmluZSBHUElPX1Bpbl8xMCAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDQwMCkgIC8qITwgUGluIDEwIHNlbGVjdGVkICovCisjZGVmaW5lIEdQSU9fUGluXzExICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwODAwKSAgLyohPCBQaW4gMTEgc2VsZWN0ZWQgKi8KKyNkZWZpbmUgR1BJT19QaW5fMTIgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDEwMDApICAvKiE8IFBpbiAxMiBzZWxlY3RlZCAqLworI2RlZmluZSBHUElPX1Bpbl8xMyAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MjAwMCkgIC8qITwgUGluIDEzIHNlbGVjdGVkICovCisjZGVmaW5lIEdQSU9fUGluXzE0ICAgICAgICAgICAgICAgICgodWludDE2X3QpMHg0MDAwKSAgLyohPCBQaW4gMTQgc2VsZWN0ZWQgKi8KKyNkZWZpbmUgR1BJT19QaW5fMTUgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDgwMDApICAvKiE8IFBpbiAxNSBzZWxlY3RlZCAqLworI2RlZmluZSBHUElPX1Bpbl9BbGwgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4RkZGRikgIC8qITwgQWxsIHBpbnMgc2VsZWN0ZWQgKi8KKworI2RlZmluZSBJU19HUElPX1BJTihQSU4pICgoKChQSU4pICYgKHVpbnQxNl90KTB4MDApID09IDB4MDApICYmICgoUElOKSAhPSAodWludDE2X3QpMHgwMCkpCisKKyNkZWZpbmUgSVNfR0VUX0dQSU9fUElOKFBJTikgKCgoUElOKSA9PSBHUElPX1Bpbl8wKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBJTikgPT0gR1BJT19QaW5fMSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQSU4pID09IEdQSU9fUGluXzIpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUElOKSA9PSBHUElPX1Bpbl8zKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBJTikgPT0gR1BJT19QaW5fNCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQSU4pID09IEdQSU9fUGluXzUpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUElOKSA9PSBHUElPX1Bpbl82KSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBJTikgPT0gR1BJT19QaW5fNykgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQSU4pID09IEdQSU9fUGluXzgpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUElOKSA9PSBHUElPX1Bpbl85KSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBJTikgPT0gR1BJT19QaW5fMTApIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUElOKSA9PSBHUElPX1Bpbl8xMSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQSU4pID09IEdQSU9fUGluXzEyKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBJTikgPT0gR1BJT19QaW5fMTMpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUElOKSA9PSBHUElPX1Bpbl8xNCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQSU4pID09IEdQSU9fUGluXzE1KSkKKworLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBHUElPX1JlbWFwX2RlZmluZSAKKyAgKiBAeworICAqLworCisjZGVmaW5lIEdQSU9fUmVtYXBfU1BJMSAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDEpICAvKiE8IFNQSTEgQWx0ZXJuYXRlIEZ1bmN0aW9uIG1hcHBpbmcgKi8KKyNkZWZpbmUgR1BJT19SZW1hcF9JMkMxICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMikgIC8qITwgSTJDMSBBbHRlcm5hdGUgRnVuY3Rpb24gbWFwcGluZyAqLworI2RlZmluZSBHUElPX1JlbWFwX1VTQVJUMSAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgLyohPCBVU0FSVDEgQWx0ZXJuYXRlIEZ1bmN0aW9uIG1hcHBpbmcgKi8KKyNkZWZpbmUgR1BJT19SZW1hcF9VU0FSVDIgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgIC8qITwgVVNBUlQyIEFsdGVybmF0ZSBGdW5jdGlvbiBtYXBwaW5nICovCisjZGVmaW5lIEdQSU9fUGFydGlhbFJlbWFwX1VTQVJUMyAgICAoKHVpbnQzMl90KTB4MDAxNDAwMTApICAvKiE8IFVTQVJUMyBQYXJ0aWFsIEFsdGVybmF0ZSBGdW5jdGlvbiBtYXBwaW5nICovCisjZGVmaW5lIEdQSU9fRnVsbFJlbWFwX1VTQVJUMyAgICAgICAoKHVpbnQzMl90KTB4MDAxNDAwMzApICAvKiE8IFVTQVJUMyBGdWxsIEFsdGVybmF0ZSBGdW5jdGlvbiBtYXBwaW5nICovCisjZGVmaW5lIEdQSU9fUGFydGlhbFJlbWFwX1RJTTEgICAgICAoKHVpbnQzMl90KTB4MDAxNjAwNDApICAvKiE8IFRJTTEgUGFydGlhbCBBbHRlcm5hdGUgRnVuY3Rpb24gbWFwcGluZyAqLworI2RlZmluZSBHUElPX0Z1bGxSZW1hcF9USU0xICAgICAgICAgKCh1aW50MzJfdCkweDAwMTYwMEMwKSAgLyohPCBUSU0xIEZ1bGwgQWx0ZXJuYXRlIEZ1bmN0aW9uIG1hcHBpbmcgKi8KKyNkZWZpbmUgR1BJT19QYXJ0aWFsUmVtYXAxX1RJTTIgICAgICgodWludDMyX3QpMHgwMDE4MDEwMCkgIC8qITwgVElNMiBQYXJ0aWFsMSBBbHRlcm5hdGUgRnVuY3Rpb24gbWFwcGluZyAqLworI2RlZmluZSBHUElPX1BhcnRpYWxSZW1hcDJfVElNMiAgICAgKCh1aW50MzJfdCkweDAwMTgwMjAwKSAgLyohPCBUSU0yIFBhcnRpYWwyIEFsdGVybmF0ZSBGdW5jdGlvbiBtYXBwaW5nICovCisjZGVmaW5lIEdQSU9fRnVsbFJlbWFwX1RJTTIgICAgICAgICAoKHVpbnQzMl90KTB4MDAxODAzMDApICAvKiE8IFRJTTIgRnVsbCBBbHRlcm5hdGUgRnVuY3Rpb24gbWFwcGluZyAqLworI2RlZmluZSBHUElPX1BhcnRpYWxSZW1hcF9USU0zICAgICAgKCh1aW50MzJfdCkweDAwMUEwODAwKSAgLyohPCBUSU0zIFBhcnRpYWwgQWx0ZXJuYXRlIEZ1bmN0aW9uIG1hcHBpbmcgKi8KKyNkZWZpbmUgR1BJT19GdWxsUmVtYXBfVElNMyAgICAgICAgICgodWludDMyX3QpMHgwMDFBMEMwMCkgIC8qITwgVElNMyBGdWxsIEFsdGVybmF0ZSBGdW5jdGlvbiBtYXBwaW5nICovCisjZGVmaW5lIEdQSU9fUmVtYXBfVElNNCAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDEwMDApICAvKiE8IFRJTTQgQWx0ZXJuYXRlIEZ1bmN0aW9uIG1hcHBpbmcgKi8KKyNkZWZpbmUgR1BJT19SZW1hcDFfQ0FOMSAgICAgICAgICAgICgodWludDMyX3QpMHgwMDFENDAwMCkgIC8qITwgQ0FOMSBBbHRlcm5hdGUgRnVuY3Rpb24gbWFwcGluZyAqLworI2RlZmluZSBHUElPX1JlbWFwMl9DQU4xICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMUQ2MDAwKSAgLyohPCBDQU4xIEFsdGVybmF0ZSBGdW5jdGlvbiBtYXBwaW5nICovCisjZGVmaW5lIEdQSU9fUmVtYXBfUEQwMSAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDgwMDApICAvKiE8IFBEMDEgQWx0ZXJuYXRlIEZ1bmN0aW9uIG1hcHBpbmcgKi8KKyNkZWZpbmUgR1BJT19SZW1hcF9USU01Q0g0X0xTSSAgICAgICgodWludDMyX3QpMHgwMDIwMDAwMSkgIC8qITwgTFNJIGNvbm5lY3RlZCB0byBUSU01IENoYW5uZWw0IGlucHV0IGNhcHR1cmUgZm9yIGNhbGlicmF0aW9uICovCisjZGVmaW5lIEdQSU9fUmVtYXBfQURDMV9FVFJHSU5KICAgICAoKHVpbnQzMl90KTB4MDAyMDAwMDIpICAvKiE8IEFEQzEgRXh0ZXJuYWwgVHJpZ2dlciBJbmplY3RlZCBDb252ZXJzaW9uIHJlbWFwcGluZyAqLworI2RlZmluZSBHUElPX1JlbWFwX0FEQzFfRVRSR1JFRyAgICAgKCh1aW50MzJfdCkweDAwMjAwMDA0KSAgLyohPCBBREMxIEV4dGVybmFsIFRyaWdnZXIgUmVndWxhciBDb252ZXJzaW9uIHJlbWFwcGluZyAqLworI2RlZmluZSBHUElPX1JlbWFwX0FEQzJfRVRSR0lOSiAgICAgKCh1aW50MzJfdCkweDAwMjAwMDA4KSAgLyohPCBBREMyIEV4dGVybmFsIFRyaWdnZXIgSW5qZWN0ZWQgQ29udmVyc2lvbiByZW1hcHBpbmcgKi8KKyNkZWZpbmUgR1BJT19SZW1hcF9BREMyX0VUUkdSRUcgICAgICgodWludDMyX3QpMHgwMDIwMDAxMCkgIC8qITwgQURDMiBFeHRlcm5hbCBUcmlnZ2VyIFJlZ3VsYXIgQ29udmVyc2lvbiByZW1hcHBpbmcgKi8KKyNkZWZpbmUgR1BJT19SZW1hcF9FVEggICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDIwMDAyMCkgIC8qITwgRXRoZXJuZXQgcmVtYXBwaW5nIChvbmx5IGZvciBDb25uZWN0aXZpdHkgbGluZSBkZXZpY2VzKSAqLworI2RlZmluZSBHUElPX1JlbWFwX0NBTjIgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMjAwMDQwKSAgLyohPCBDQU4yIHJlbWFwcGluZyAob25seSBmb3IgQ29ubmVjdGl2aXR5IGxpbmUgZGV2aWNlcykgKi8KKyNkZWZpbmUgR1BJT19SZW1hcF9TV0pfTm9KVFJTVCAgICAgICgodWludDMyX3QpMHgwMDMwMDEwMCkgIC8qITwgRnVsbCBTV0ogRW5hYmxlZCAoSlRBRy1EUCArIFNXLURQKSBidXQgd2l0aG91dCBKVFJTVCAqLworI2RlZmluZSBHUElPX1JlbWFwX1NXSl9KVEFHRGlzYWJsZSAgKCh1aW50MzJfdCkweDAwMzAwMjAwKSAgLyohPCBKVEFHLURQIERpc2FibGVkIGFuZCBTVy1EUCBFbmFibGVkICovCisjZGVmaW5lIEdQSU9fUmVtYXBfU1dKX0Rpc2FibGUgICAgICAoKHVpbnQzMl90KTB4MDAzMDA0MDApICAvKiE8IEZ1bGwgU1dKIERpc2FibGVkIChKVEFHLURQICsgU1ctRFApICovCisjZGVmaW5lIEdQSU9fUmVtYXBfU1BJMyAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAyMDExMDApICAvKiE8IFNQSTMvSTJTMyBBbHRlcm5hdGUgRnVuY3Rpb24gbWFwcGluZyAob25seSBmb3IgQ29ubmVjdGl2aXR5IGxpbmUgZGV2aWNlcykgKi8KKyNkZWZpbmUgR1BJT19SZW1hcF9USU0ySVRSMV9QVFBfU09GICgodWludDMyX3QpMHgwMDIwMjAwMCkgIC8qITwgRXRoZXJuZXQgUFRQIG91dHB1dCBvciBVU0IgT1RHIFNPRiAoU3RhcnQgb2YgRnJhbWUpIGNvbm5lY3RlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBUSU0yIEludGVybmFsIFRyaWdnZXIgMSBmb3IgY2FsaWJyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9ubHkgZm9yIENvbm5lY3Rpdml0eSBsaW5lIGRldmljZXMpICovCisjZGVmaW5lIEdQSU9fUmVtYXBfUFRQX1BQUyAgICAgICAgICAoKHVpbnQzMl90KTB4MDAyMDQwMDApICAvKiE8IEV0aGVybmV0IE1BQyBQUFNfUFRTIG91dHB1dCBvbiBQQjA1IChvbmx5IGZvciBDb25uZWN0aXZpdHkgbGluZSBkZXZpY2VzKSAqLworCisjZGVmaW5lIEdQSU9fUmVtYXBfVElNMTUgICAgICAgICAgICAoKHVpbnQzMl90KTB4ODAwMDAwMDEpICAvKiE8IFRJTTE1IEFsdGVybmF0ZSBGdW5jdGlvbiBtYXBwaW5nIChvbmx5IGZvciBWYWx1ZSBsaW5lIGRldmljZXMpICovCisjZGVmaW5lIEdQSU9fUmVtYXBfVElNMTYgICAgICAgICAgICAoKHVpbnQzMl90KTB4ODAwMDAwMDIpICAvKiE8IFRJTTE2IEFsdGVybmF0ZSBGdW5jdGlvbiBtYXBwaW5nIChvbmx5IGZvciBWYWx1ZSBsaW5lIGRldmljZXMpICovCisjZGVmaW5lIEdQSU9fUmVtYXBfVElNMTcgICAgICAgICAgICAoKHVpbnQzMl90KTB4ODAwMDAwMDQpICAvKiE8IFRJTTE3IEFsdGVybmF0ZSBGdW5jdGlvbiBtYXBwaW5nIChvbmx5IGZvciBWYWx1ZSBsaW5lIGRldmljZXMpICovCisjZGVmaW5lIEdQSU9fUmVtYXBfQ0VDICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4ODAwMDAwMDgpICAvKiE8IENFQyBBbHRlcm5hdGUgRnVuY3Rpb24gbWFwcGluZyAob25seSBmb3IgVmFsdWUgbGluZSBkZXZpY2VzKSAqLworI2RlZmluZSBHUElPX1JlbWFwX1RJTTFfRE1BICAgICAgICAgKCh1aW50MzJfdCkweDgwMDAwMDEwKSAgLyohPCBUSU0xIERNQSByZXF1ZXN0cyBtYXBwaW5nIChvbmx5IGZvciBWYWx1ZSBsaW5lIGRldmljZXMpICovCisKKyNkZWZpbmUgR1BJT19SZW1hcF9USU05ICAgICAgICAgICAgICgodWludDMyX3QpMHg4MDAwMDAyMCkgIC8qITwgVElNOSBBbHRlcm5hdGUgRnVuY3Rpb24gbWFwcGluZyAob25seSBmb3IgWEwtZGVuc2l0eSBkZXZpY2VzKSAqLworI2RlZmluZSBHUElPX1JlbWFwX1RJTTEwICAgICAgICAgICAgKCh1aW50MzJfdCkweDgwMDAwMDQwKSAgLyohPCBUSU0xMCBBbHRlcm5hdGUgRnVuY3Rpb24gbWFwcGluZyAob25seSBmb3IgWEwtZGVuc2l0eSBkZXZpY2VzKSAqLworI2RlZmluZSBHUElPX1JlbWFwX1RJTTExICAgICAgICAgICAgKCh1aW50MzJfdCkweDgwMDAwMDgwKSAgLyohPCBUSU0xMSBBbHRlcm5hdGUgRnVuY3Rpb24gbWFwcGluZyAob25seSBmb3IgWEwtZGVuc2l0eSBkZXZpY2VzKSAqLworI2RlZmluZSBHUElPX1JlbWFwX1RJTTEzICAgICAgICAgICAgKCh1aW50MzJfdCkweDgwMDAwMTAwKSAgLyohPCBUSU0xMyBBbHRlcm5hdGUgRnVuY3Rpb24gbWFwcGluZyAob25seSBmb3IgSGlnaCBkZW5zaXR5IFZhbHVlIGxpbmUgYW5kIFhMLWRlbnNpdHkgZGV2aWNlcykgKi8KKyNkZWZpbmUgR1BJT19SZW1hcF9USU0xNCAgICAgICAgICAgICgodWludDMyX3QpMHg4MDAwMDIwMCkgIC8qITwgVElNMTQgQWx0ZXJuYXRlIEZ1bmN0aW9uIG1hcHBpbmcgKG9ubHkgZm9yIEhpZ2ggZGVuc2l0eSBWYWx1ZSBsaW5lIGFuZCBYTC1kZW5zaXR5IGRldmljZXMpICovCisjZGVmaW5lIEdQSU9fUmVtYXBfRlNNQ19OQURWICAgICAgICAoKHVpbnQzMl90KTB4ODAwMDA0MDApICAvKiE8IEZTTUNfTkFEViBBbHRlcm5hdGUgRnVuY3Rpb24gbWFwcGluZyAob25seSBmb3IgSGlnaCBkZW5zaXR5IFZhbHVlIGxpbmUgYW5kIFhMLWRlbnNpdHkgZGV2aWNlcykgKi8KKworI2RlZmluZSBHUElPX1JlbWFwX1RJTTY3X0RBQ19ETUEgICAgKCh1aW50MzJfdCkweDgwMDAwODAwKSAgLyohPCBUSU02L1RJTTcgYW5kIERBQyBETUEgcmVxdWVzdHMgcmVtYXBwaW5nIChvbmx5IGZvciBIaWdoIGRlbnNpdHkgVmFsdWUgbGluZSBkZXZpY2VzKSAqLworI2RlZmluZSBHUElPX1JlbWFwX1RJTTEyICAgICAgICAgICAgKCh1aW50MzJfdCkweDgwMDAxMDAwKSAgLyohPCBUSU0xMiBBbHRlcm5hdGUgRnVuY3Rpb24gbWFwcGluZyAob25seSBmb3IgSGlnaCBkZW5zaXR5IFZhbHVlIGxpbmUgZGV2aWNlcykgKi8KKyNkZWZpbmUgR1BJT19SZW1hcF9NSVNDICAgICAgICAgICAgICgodWludDMyX3QpMHg4MDAwMjAwMCkgIC8qITwgTWlzY2VsbGFuZW91cyBSZW1hcCAoRE1BMiBDaGFubmVsNSBQb3NpdGlvbiBhbmQgREFDIFRyaWdnZXIgcmVtYXBwaW5nLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25seSBmb3IgSGlnaCBkZW5zaXR5IFZhbHVlIGxpbmUgZGV2aWNlcykgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisKKyNkZWZpbmUgSVNfR1BJT19SRU1BUChSRU1BUCkgKCgoUkVNQVApID09IEdQSU9fUmVtYXBfU1BJMSkgfHwgKChSRU1BUCkgPT0gR1BJT19SZW1hcF9JMkMxKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFJFTUFQKSA9PSBHUElPX1JlbWFwX1VTQVJUMSkgfHwgKChSRU1BUCkgPT0gR1BJT19SZW1hcF9VU0FSVDIpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUkVNQVApID09IEdQSU9fUGFydGlhbFJlbWFwX1VTQVJUMykgfHwgKChSRU1BUCkgPT0gR1BJT19GdWxsUmVtYXBfVVNBUlQzKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFJFTUFQKSA9PSBHUElPX1BhcnRpYWxSZW1hcF9USU0xKSB8fCAoKFJFTUFQKSA9PSBHUElPX0Z1bGxSZW1hcF9USU0xKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFJFTUFQKSA9PSBHUElPX1BhcnRpYWxSZW1hcDFfVElNMikgfHwgKChSRU1BUCkgPT0gR1BJT19QYXJ0aWFsUmVtYXAyX1RJTTIpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUkVNQVApID09IEdQSU9fRnVsbFJlbWFwX1RJTTIpIHx8ICgoUkVNQVApID09IEdQSU9fUGFydGlhbFJlbWFwX1RJTTMpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUkVNQVApID09IEdQSU9fRnVsbFJlbWFwX1RJTTMpIHx8ICgoUkVNQVApID09IEdQSU9fUmVtYXBfVElNNCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChSRU1BUCkgPT0gR1BJT19SZW1hcDFfQ0FOMSkgfHwgKChSRU1BUCkgPT0gR1BJT19SZW1hcDJfQ0FOMSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChSRU1BUCkgPT0gR1BJT19SZW1hcF9QRDAxKSB8fCAoKFJFTUFQKSA9PSBHUElPX1JlbWFwX1RJTTVDSDRfTFNJKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFJFTUFQKSA9PSBHUElPX1JlbWFwX0FEQzFfRVRSR0lOSikgfHwoKFJFTUFQKSA9PSBHUElPX1JlbWFwX0FEQzFfRVRSR1JFRykgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChSRU1BUCkgPT0gR1BJT19SZW1hcF9BREMyX0VUUkdJTkopIHx8KChSRU1BUCkgPT0gR1BJT19SZW1hcF9BREMyX0VUUkdSRUcpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUkVNQVApID09IEdQSU9fUmVtYXBfRVRIKSB8fCgoUkVNQVApID09IEdQSU9fUmVtYXBfQ0FOMikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChSRU1BUCkgPT0gR1BJT19SZW1hcF9TV0pfTm9KVFJTVCkgfHwgKChSRU1BUCkgPT0gR1BJT19SZW1hcF9TV0pfSlRBR0Rpc2FibGUpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUkVNQVApID09IEdQSU9fUmVtYXBfU1dKX0Rpc2FibGUpfHwgKChSRU1BUCkgPT0gR1BJT19SZW1hcF9TUEkzKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFJFTUFQKSA9PSBHUElPX1JlbWFwX1RJTTJJVFIxX1BUUF9TT0YpIHx8ICgoUkVNQVApID09IEdQSU9fUmVtYXBfUFRQX1BQUykgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChSRU1BUCkgPT0gR1BJT19SZW1hcF9USU0xNSkgfHwgKChSRU1BUCkgPT0gR1BJT19SZW1hcF9USU0xNikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChSRU1BUCkgPT0gR1BJT19SZW1hcF9USU0xNykgfHwgKChSRU1BUCkgPT0gR1BJT19SZW1hcF9DRUMpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUkVNQVApID09IEdQSU9fUmVtYXBfVElNMV9ETUEpIHx8ICgoUkVNQVApID09IEdQSU9fUmVtYXBfVElNOSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChSRU1BUCkgPT0gR1BJT19SZW1hcF9USU0xMCkgfHwgKChSRU1BUCkgPT0gR1BJT19SZW1hcF9USU0xMSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChSRU1BUCkgPT0gR1BJT19SZW1hcF9USU0xMykgfHwgKChSRU1BUCkgPT0gR1BJT19SZW1hcF9USU0xNCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChSRU1BUCkgPT0gR1BJT19SZW1hcF9GU01DX05BRFYpIHx8ICgoUkVNQVApID09IEdQSU9fUmVtYXBfVElNNjdfREFDX0RNQSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChSRU1BUCkgPT0gR1BJT19SZW1hcF9USU0xMikgfHwgKChSRU1BUCkgPT0gR1BJT19SZW1hcF9NSVNDKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLyoqCisgICogQH0KKyAgKi8gCisKKy8qKiBAZGVmZ3JvdXAgR1BJT19Qb3J0X1NvdXJjZXMgCisgICogQHsKKyAgKi8KKworI2RlZmluZSBHUElPX1BvcnRTb3VyY2VHUElPQSAgICAgICAoKHVpbnQ4X3QpMHgwMCkKKyNkZWZpbmUgR1BJT19Qb3J0U291cmNlR1BJT0IgICAgICAgKCh1aW50OF90KTB4MDEpCisjZGVmaW5lIEdQSU9fUG9ydFNvdXJjZUdQSU9DICAgICAgICgodWludDhfdCkweDAyKQorI2RlZmluZSBHUElPX1BvcnRTb3VyY2VHUElPRCAgICAgICAoKHVpbnQ4X3QpMHgwMykKKyNkZWZpbmUgR1BJT19Qb3J0U291cmNlR1BJT0UgICAgICAgKCh1aW50OF90KTB4MDQpCisjZGVmaW5lIEdQSU9fUG9ydFNvdXJjZUdQSU9GICAgICAgICgodWludDhfdCkweDA1KQorI2RlZmluZSBHUElPX1BvcnRTb3VyY2VHUElPRyAgICAgICAoKHVpbnQ4X3QpMHgwNikKKyNkZWZpbmUgSVNfR1BJT19FVkVOVE9VVF9QT1JUX1NPVVJDRShQT1JUU09VUkNFKSAoKChQT1JUU09VUkNFKSA9PSBHUElPX1BvcnRTb3VyY2VHUElPQSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBPUlRTT1VSQ0UpID09IEdQSU9fUG9ydFNvdXJjZUdQSU9CKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUE9SVFNPVVJDRSkgPT0gR1BJT19Qb3J0U291cmNlR1BJT0MpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQT1JUU09VUkNFKSA9PSBHUElPX1BvcnRTb3VyY2VHUElPRCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBPUlRTT1VSQ0UpID09IEdQSU9fUG9ydFNvdXJjZUdQSU9FKSkKKworI2RlZmluZSBJU19HUElPX0VYVElfUE9SVF9TT1VSQ0UoUE9SVFNPVVJDRSkgKCgoUE9SVFNPVVJDRSkgPT0gR1BJT19Qb3J0U291cmNlR1BJT0EpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBPUlRTT1VSQ0UpID09IEdQSU9fUG9ydFNvdXJjZUdQSU9CKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQT1JUU09VUkNFKSA9PSBHUElPX1BvcnRTb3VyY2VHUElPQykgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUE9SVFNPVVJDRSkgPT0gR1BJT19Qb3J0U291cmNlR1BJT0QpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBPUlRTT1VSQ0UpID09IEdQSU9fUG9ydFNvdXJjZUdQSU9FKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQT1JUU09VUkNFKSA9PSBHUElPX1BvcnRTb3VyY2VHUElPRikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUE9SVFNPVVJDRSkgPT0gR1BJT19Qb3J0U291cmNlR1BJT0cpKQorCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIEdQSU9fUGluX3NvdXJjZXMgCisgICogQHsKKyAgKi8KKworI2RlZmluZSBHUElPX1BpblNvdXJjZTAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwMCkKKyNkZWZpbmUgR1BJT19QaW5Tb3VyY2UxICAgICAgICAgICAgKCh1aW50OF90KTB4MDEpCisjZGVmaW5lIEdQSU9fUGluU291cmNlMiAgICAgICAgICAgICgodWludDhfdCkweDAyKQorI2RlZmluZSBHUElPX1BpblNvdXJjZTMgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwMykKKyNkZWZpbmUgR1BJT19QaW5Tb3VyY2U0ICAgICAgICAgICAgKCh1aW50OF90KTB4MDQpCisjZGVmaW5lIEdQSU9fUGluU291cmNlNSAgICAgICAgICAgICgodWludDhfdCkweDA1KQorI2RlZmluZSBHUElPX1BpblNvdXJjZTYgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwNikKKyNkZWZpbmUgR1BJT19QaW5Tb3VyY2U3ICAgICAgICAgICAgKCh1aW50OF90KTB4MDcpCisjZGVmaW5lIEdQSU9fUGluU291cmNlOCAgICAgICAgICAgICgodWludDhfdCkweDA4KQorI2RlZmluZSBHUElPX1BpblNvdXJjZTkgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwOSkKKyNkZWZpbmUgR1BJT19QaW5Tb3VyY2UxMCAgICAgICAgICAgKCh1aW50OF90KTB4MEEpCisjZGVmaW5lIEdQSU9fUGluU291cmNlMTEgICAgICAgICAgICgodWludDhfdCkweDBCKQorI2RlZmluZSBHUElPX1BpblNvdXJjZTEyICAgICAgICAgICAoKHVpbnQ4X3QpMHgwQykKKyNkZWZpbmUgR1BJT19QaW5Tb3VyY2UxMyAgICAgICAgICAgKCh1aW50OF90KTB4MEQpCisjZGVmaW5lIEdQSU9fUGluU291cmNlMTQgICAgICAgICAgICgodWludDhfdCkweDBFKQorI2RlZmluZSBHUElPX1BpblNvdXJjZTE1ICAgICAgICAgICAoKHVpbnQ4X3QpMHgwRikKKworI2RlZmluZSBJU19HUElPX1BJTl9TT1VSQ0UoUElOU09VUkNFKSAoKChQSU5TT1VSQ0UpID09IEdQSU9fUGluU291cmNlMCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQSU5TT1VSQ0UpID09IEdQSU9fUGluU291cmNlMSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQSU5TT1VSQ0UpID09IEdQSU9fUGluU291cmNlMikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQSU5TT1VSQ0UpID09IEdQSU9fUGluU291cmNlMykgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQSU5TT1VSQ0UpID09IEdQSU9fUGluU291cmNlNCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQSU5TT1VSQ0UpID09IEdQSU9fUGluU291cmNlNSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQSU5TT1VSQ0UpID09IEdQSU9fUGluU291cmNlNikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQSU5TT1VSQ0UpID09IEdQSU9fUGluU291cmNlNykgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQSU5TT1VSQ0UpID09IEdQSU9fUGluU291cmNlOCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQSU5TT1VSQ0UpID09IEdQSU9fUGluU291cmNlOSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQSU5TT1VSQ0UpID09IEdQSU9fUGluU291cmNlMTApIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUElOU09VUkNFKSA9PSBHUElPX1BpblNvdXJjZTExKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBJTlNPVVJDRSkgPT0gR1BJT19QaW5Tb3VyY2UxMikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQSU5TT1VSQ0UpID09IEdQSU9fUGluU291cmNlMTMpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUElOU09VUkNFKSA9PSBHUElPX1BpblNvdXJjZTE0KSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBJTlNPVVJDRSkgPT0gR1BJT19QaW5Tb3VyY2UxNSkpCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgRXRoZXJuZXRfTWVkaWFfSW50ZXJmYWNlIAorICAqIEB7CisgICovIAorI2RlZmluZSBHUElPX0VUSF9NZWRpYUludGVyZmFjZV9NSUkgICAgKCh1MzIpMHgwMDAwMDAwMCkgCisjZGVmaW5lIEdQSU9fRVRIX01lZGlhSW50ZXJmYWNlX1JNSUkgICAoKHUzMikweDAwMDAwMDAxKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisjZGVmaW5lIElTX0dQSU9fRVRIX01FRElBX0lOVEVSRkFDRShJTlRFUkZBQ0UpICgoKElOVEVSRkFDRSkgPT0gR1BJT19FVEhfTWVkaWFJbnRlcmZhY2VfTUlJKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKElOVEVSRkFDRSkgPT0gR1BJT19FVEhfTWVkaWFJbnRlcmZhY2VfUk1JSSkpCisKKy8qKgorICAqIEB9CisgICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIEdQSU9fRXhwb3J0ZWRfTWFjcm9zCisgICogQHsKKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBHUElPX0V4cG9ydGVkX0Z1bmN0aW9ucworICAqIEB7CisgICovCisKK3ZvaWQgR1BJT19EZUluaXQoR1BJT19UeXBlRGVmKiBHUElPeCk7Cit2b2lkIEdQSU9fQUZJT0RlSW5pdCh2b2lkKTsKK3ZvaWQgR1BJT19Jbml0KEdQSU9fVHlwZURlZiogR1BJT3gsIEdQSU9fSW5pdFR5cGVEZWYqIEdQSU9fSW5pdFN0cnVjdCk7Cit2b2lkIEdQSU9fU3RydWN0SW5pdChHUElPX0luaXRUeXBlRGVmKiBHUElPX0luaXRTdHJ1Y3QpOwordWludDhfdCBHUElPX1JlYWRJbnB1dERhdGFCaXQoR1BJT19UeXBlRGVmKiBHUElPeCwgdWludDE2X3QgR1BJT19QaW4pOwordWludDE2X3QgR1BJT19SZWFkSW5wdXREYXRhKEdQSU9fVHlwZURlZiogR1BJT3gpOwordWludDhfdCBHUElPX1JlYWRPdXRwdXREYXRhQml0KEdQSU9fVHlwZURlZiogR1BJT3gsIHVpbnQxNl90IEdQSU9fUGluKTsKK3VpbnQxNl90IEdQSU9fUmVhZE91dHB1dERhdGEoR1BJT19UeXBlRGVmKiBHUElPeCk7Cit2b2lkIEdQSU9fU2V0Qml0cyhHUElPX1R5cGVEZWYqIEdQSU94LCB1aW50MTZfdCBHUElPX1Bpbik7Cit2b2lkIEdQSU9fUmVzZXRCaXRzKEdQSU9fVHlwZURlZiogR1BJT3gsIHVpbnQxNl90IEdQSU9fUGluKTsKK3ZvaWQgR1BJT19Xcml0ZUJpdChHUElPX1R5cGVEZWYqIEdQSU94LCB1aW50MTZfdCBHUElPX1BpbiwgQml0QWN0aW9uIEJpdFZhbCk7Cit2b2lkIEdQSU9fV3JpdGUoR1BJT19UeXBlRGVmKiBHUElPeCwgdWludDE2X3QgUG9ydFZhbCk7Cit2b2lkIEdQSU9fUGluTG9ja0NvbmZpZyhHUElPX1R5cGVEZWYqIEdQSU94LCB1aW50MTZfdCBHUElPX1Bpbik7Cit2b2lkIEdQSU9fRXZlbnRPdXRwdXRDb25maWcodWludDhfdCBHUElPX1BvcnRTb3VyY2UsIHVpbnQ4X3QgR1BJT19QaW5Tb3VyY2UpOwordm9pZCBHUElPX0V2ZW50T3V0cHV0Q21kKEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSk7Cit2b2lkIEdQSU9fUGluUmVtYXBDb25maWcodWludDMyX3QgR1BJT19SZW1hcCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKTsKK3ZvaWQgR1BJT19FWFRJTGluZUNvbmZpZyh1aW50OF90IEdQSU9fUG9ydFNvdXJjZSwgdWludDhfdCBHUElPX1BpblNvdXJjZSk7Cit2b2lkIEdQSU9fRVRIX01lZGlhSW50ZXJmYWNlQ29uZmlnKHVpbnQzMl90IEdQSU9fRVRIX01lZGlhSW50ZXJmYWNlKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8qIF9fU1RNMzJGMTB4X0dQSU9fSCAqLworLyoqCisgICogQH0KKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCAyMDExIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL3N0X2Z3X2xpYi9pbmMvc3RtMzJmMTB4X2kyYy5oIGIvc3RfZndfbGliL2luYy9zdG0zMmYxMHhfaTJjLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjBlNGIxNAotLS0gL2Rldi9udWxsCisrKyBiL3N0X2Z3X2xpYi9pbmMvc3RtMzJmMTB4X2kyYy5oCkBAIC0wLDAgKzEsNjg0IEBACisvKioKKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICogQGZpbGUgICAgc3RtMzJmMTB4X2kyYy5oCisgICogQGF1dGhvciAgTUNEIEFwcGxpY2F0aW9uIFRlYW0KKyAgKiBAdmVyc2lvbiBWMy41LjAKKyAgKiBAZGF0ZSAgICAxMS1NYXJjaC0yMDExCisgICogQGJyaWVmICAgVGhpcyBmaWxlIGNvbnRhaW5zIGFsbCB0aGUgZnVuY3Rpb25zIHByb3RvdHlwZXMgZm9yIHRoZSBJMkMgZmlybXdhcmUgCisgICogICAgICAgICAgbGlicmFyeS4KKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICogQGF0dGVudGlvbgorICAqCisgICogVEhFIFBSRVNFTlQgRklSTVdBUkUgV0hJQ0ggSVMgRk9SIEdVSURBTkNFIE9OTFkgQUlNUyBBVCBQUk9WSURJTkcgQ1VTVE9NRVJTCisgICogV0lUSCBDT0RJTkcgSU5GT1JNQVRJT04gUkVHQVJESU5HIFRIRUlSIFBST0RVQ1RTIElOIE9SREVSIEZPUiBUSEVNIFRPIFNBVkUKKyAgKiBUSU1FLiBBUyBBIFJFU1VMVCwgU1RNSUNST0VMRUNUUk9OSUNTIFNIQUxMIE5PVCBCRSBIRUxEIExJQUJMRSBGT1IgQU5ZCisgICogRElSRUNULCBJTkRJUkVDVCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgV0lUSCBSRVNQRUNUIFRPIEFOWSBDTEFJTVMgQVJJU0lORworICAqIEZST00gVEhFIENPTlRFTlQgT0YgU1VDSCBGSVJNV0FSRSBBTkQvT1IgVEhFIFVTRSBNQURFIEJZIENVU1RPTUVSUyBPRiBUSEUKKyAgKiBDT0RJTkcgSU5GT1JNQVRJT04gQ09OVEFJTkVEIEhFUkVJTiBJTiBDT05ORUNUSU9OIFdJVEggVEhFSVIgUFJPRFVDVFMuCisgICoKKyAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ09QWVJJR0hUIDIwMTEgU1RNaWNyb2VsZWN0cm9uaWNzPC9jZW50ZXI+PC9oMj4KKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICovCisKKy8qIERlZmluZSB0byBwcmV2ZW50IHJlY3Vyc2l2ZSBpbmNsdXNpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisjaWZuZGVmIF9fU1RNMzJGMTB4X0kyQ19ICisjZGVmaW5lIF9fU1RNMzJGMTB4X0kyQ19ICisKKyNpZmRlZiBfX2NwbHVzcGx1cworIGV4dGVybiAiQyIgeworI2VuZGlmCisKKy8qIEluY2x1ZGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisjaW5jbHVkZSAic3RtMzJmMTB4LmgiCisKKy8qKiBAYWRkdG9ncm91cCBTVE0zMkYxMHhfU3RkUGVyaXBoX0RyaXZlcgorICAqIEB7CisgICovCisKKy8qKiBAYWRkdG9ncm91cCBJMkMKKyAgKiBAeworICAqLworCisvKiogQGRlZmdyb3VwIEkyQ19FeHBvcnRlZF9UeXBlcworICAqIEB7CisgICovCisKKy8qKiAKKyAgKiBAYnJpZWYgIEkyQyBJbml0IHN0cnVjdHVyZSBkZWZpbml0aW9uICAKKyAgKi8KKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgdWludDMyX3QgSTJDX0Nsb2NrU3BlZWQ7ICAgICAgICAgIC8qITwgU3BlY2lmaWVzIHRoZSBjbG9jayBmcmVxdWVuY3kuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIG11c3QgYmUgc2V0IHRvIGEgdmFsdWUgbG93ZXIgdGhhbiA0MDBrSHogKi8KKworICB1aW50MTZfdCBJMkNfTW9kZTsgICAgICAgICAgICAgICAgLyohPCBTcGVjaWZpZXMgdGhlIEkyQyBtb2RlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIEkyQ19tb2RlICovCisKKyAgdWludDE2X3QgSTJDX0R1dHlDeWNsZTsgICAgICAgICAgIC8qITwgU3BlY2lmaWVzIHRoZSBJMkMgZmFzdCBtb2RlIGR1dHkgY3ljbGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgSTJDX2R1dHlfY3ljbGVfaW5fZmFzdF9tb2RlICovCisKKyAgdWludDE2X3QgSTJDX093bkFkZHJlc3MxOyAgICAgICAgIC8qITwgU3BlY2lmaWVzIHRoZSBmaXJzdCBkZXZpY2Ugb3duIGFkZHJlc3MuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIDctYml0IG9yIDEwLWJpdCBhZGRyZXNzLiAqLworCisgIHVpbnQxNl90IEkyQ19BY2s7ICAgICAgICAgICAgICAgICAvKiE8IEVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIGFja25vd2xlZGdlbWVudC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBJMkNfYWNrbm93bGVkZ2VtZW50ICovCisKKyAgdWludDE2X3QgSTJDX0Fja25vd2xlZGdlZEFkZHJlc3M7IC8qITwgU3BlY2lmaWVzIGlmIDctYml0IG9yIDEwLWJpdCBhZGRyZXNzIGlzIGFja25vd2xlZGdlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBJMkNfYWNrbm93bGVkZ2VkX2FkZHJlc3MgKi8KK31JMkNfSW5pdFR5cGVEZWY7CisKKy8qKgorICAqIEB9CisgICovIAorCisKKy8qKiBAZGVmZ3JvdXAgSTJDX0V4cG9ydGVkX0NvbnN0YW50cworICAqIEB7CisgICovCisKKyNkZWZpbmUgSVNfSTJDX0FMTF9QRVJJUEgoUEVSSVBIKSAoKChQRVJJUEgpID09IEkyQzEpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQRVJJUEgpID09IEkyQzIpKQorLyoqIEBkZWZncm91cCBJMkNfbW9kZSAKKyAgKiBAeworICAqLworCisjZGVmaW5lIEkyQ19Nb2RlX0kyQyAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDApCisjZGVmaW5lIEkyQ19Nb2RlX1NNQnVzRGV2aWNlICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDIpICAKKyNkZWZpbmUgSTJDX01vZGVfU01CdXNIb3N0ICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwQSkKKyNkZWZpbmUgSVNfSTJDX01PREUoTU9ERSkgKCgoTU9ERSkgPT0gSTJDX01vZGVfSTJDKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE1PREUpID09IEkyQ19Nb2RlX1NNQnVzRGV2aWNlKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE1PREUpID09IEkyQ19Nb2RlX1NNQnVzSG9zdCkpCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIEkyQ19kdXR5X2N5Y2xlX2luX2Zhc3RfbW9kZSAKKyAgKiBAeworICAqLworCisjZGVmaW5lIEkyQ19EdXR5Q3ljbGVfMTZfOSAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDQwMDApIC8qITwgSTJDIGZhc3QgbW9kZSBUbG93L1RoaWdoID0gMTYvOSAqLworI2RlZmluZSBJMkNfRHV0eUN5Y2xlXzIgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHhCRkZGKSAvKiE8IEkyQyBmYXN0IG1vZGUgVGxvdy9UaGlnaCA9IDIgKi8KKyNkZWZpbmUgSVNfSTJDX0RVVFlfQ1lDTEUoQ1lDTEUpICgoKENZQ0xFKSA9PSBJMkNfRHV0eUN5Y2xlXzE2XzkpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKENZQ0xFKSA9PSBJMkNfRHV0eUN5Y2xlXzIpKQorLyoqCisgICogQH0KKyAgKi8gCisKKy8qKiBAZGVmZ3JvdXAgSTJDX2Fja25vd2xlZGdlbWVudAorICAqIEB7CisgICovCisKKyNkZWZpbmUgSTJDX0Fja19FbmFibGUgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDQwMCkKKyNkZWZpbmUgSTJDX0Fja19EaXNhYmxlICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMCkKKyNkZWZpbmUgSVNfSTJDX0FDS19TVEFURShTVEFURSkgKCgoU1RBVEUpID09IEkyQ19BY2tfRW5hYmxlKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFNUQVRFKSA9PSBJMkNfQWNrX0Rpc2FibGUpKQorLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBJMkNfdHJhbnNmZXJfZGlyZWN0aW9uIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgIEkyQ19EaXJlY3Rpb25fVHJhbnNtaXR0ZXIgICAgICAoKHVpbnQ4X3QpMHgwMCkKKyNkZWZpbmUgIEkyQ19EaXJlY3Rpb25fUmVjZWl2ZXIgICAgICAgICAoKHVpbnQ4X3QpMHgwMSkKKyNkZWZpbmUgSVNfSTJDX0RJUkVDVElPTihESVJFQ1RJT04pICgoKERJUkVDVElPTikgPT0gSTJDX0RpcmVjdGlvbl9UcmFuc21pdHRlcikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRElSRUNUSU9OKSA9PSBJMkNfRGlyZWN0aW9uX1JlY2VpdmVyKSkKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgSTJDX2Fja25vd2xlZGdlZF9hZGRyZXNzIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgSTJDX0Fja25vd2xlZGdlZEFkZHJlc3NfN2JpdCAgICAoKHVpbnQxNl90KTB4NDAwMCkKKyNkZWZpbmUgSTJDX0Fja25vd2xlZGdlZEFkZHJlc3NfMTBiaXQgICAoKHVpbnQxNl90KTB4QzAwMCkKKyNkZWZpbmUgSVNfSTJDX0FDS05PV0xFREdFX0FERFJFU1MoQUREUkVTUykgKCgoQUREUkVTUykgPT0gSTJDX0Fja25vd2xlZGdlZEFkZHJlc3NfN2JpdCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChBRERSRVNTKSA9PSBJMkNfQWNrbm93bGVkZ2VkQWRkcmVzc18xMGJpdCkpCisvKioKKyAgKiBAfQorICAqLyAKKworLyoqIEBkZWZncm91cCBJMkNfcmVnaXN0ZXJzIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgSTJDX1JlZ2lzdGVyX0NSMSAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwMCkKKyNkZWZpbmUgSTJDX1JlZ2lzdGVyX0NSMiAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwNCkKKyNkZWZpbmUgSTJDX1JlZ2lzdGVyX09BUjEgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwOCkKKyNkZWZpbmUgSTJDX1JlZ2lzdGVyX09BUjIgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwQykKKyNkZWZpbmUgSTJDX1JlZ2lzdGVyX0RSICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgxMCkKKyNkZWZpbmUgSTJDX1JlZ2lzdGVyX1NSMSAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgxNCkKKyNkZWZpbmUgSTJDX1JlZ2lzdGVyX1NSMiAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgxOCkKKyNkZWZpbmUgSTJDX1JlZ2lzdGVyX0NDUiAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgxQykKKyNkZWZpbmUgSTJDX1JlZ2lzdGVyX1RSSVNFICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgyMCkKKyNkZWZpbmUgSVNfSTJDX1JFR0lTVEVSKFJFR0lTVEVSKSAoKChSRUdJU1RFUikgPT0gSTJDX1JlZ2lzdGVyX0NSMSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFJFR0lTVEVSKSA9PSBJMkNfUmVnaXN0ZXJfQ1IyKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUkVHSVNURVIpID09IEkyQ19SZWdpc3Rlcl9PQVIxKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUkVHSVNURVIpID09IEkyQ19SZWdpc3Rlcl9PQVIyKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUkVHSVNURVIpID09IEkyQ19SZWdpc3Rlcl9EUikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFJFR0lTVEVSKSA9PSBJMkNfUmVnaXN0ZXJfU1IxKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUkVHSVNURVIpID09IEkyQ19SZWdpc3Rlcl9TUjIpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChSRUdJU1RFUikgPT0gSTJDX1JlZ2lzdGVyX0NDUikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFJFR0lTVEVSKSA9PSBJMkNfUmVnaXN0ZXJfVFJJU0UpKQorLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBJMkNfU01CdXNfYWxlcnRfcGluX2xldmVsIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgSTJDX1NNQnVzQWxlcnRfTG93ICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MjAwMCkKKyNkZWZpbmUgSTJDX1NNQnVzQWxlcnRfSGlnaCAgICAgICAgICAgICAoKHVpbnQxNl90KTB4REZGRikKKyNkZWZpbmUgSVNfSTJDX1NNQlVTX0FMRVJUKEFMRVJUKSAoKChBTEVSVCkgPT0gSTJDX1NNQnVzQWxlcnRfTG93KSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoQUxFUlQpID09IEkyQ19TTUJ1c0FsZXJ0X0hpZ2gpKQorLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBJMkNfUEVDX3Bvc2l0aW9uIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgSTJDX1BFQ1Bvc2l0aW9uX05leHQgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDgwMCkKKyNkZWZpbmUgSTJDX1BFQ1Bvc2l0aW9uX0N1cnJlbnQgICAgICAgICAoKHVpbnQxNl90KTB4RjdGRikKKyNkZWZpbmUgSVNfSTJDX1BFQ19QT1NJVElPTihQT1NJVElPTikgKCgoUE9TSVRJT04pID09IEkyQ19QRUNQb3NpdGlvbl9OZXh0KSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBPU0lUSU9OKSA9PSBJMkNfUEVDUG9zaXRpb25fQ3VycmVudCkpCisvKioKKyAgKiBAfQorICAqLyAKKworLyoqIEBkZWZncm91cCBJMkNfTkNBS19wb3NpdGlvbiAKKyAgKiBAeworICAqLworCisjZGVmaW5lIEkyQ19OQUNLUG9zaXRpb25fTmV4dCAgICAgICAgICAgKCh1aW50MTZfdCkweDA4MDApCisjZGVmaW5lIEkyQ19OQUNLUG9zaXRpb25fQ3VycmVudCAgICAgICAgKCh1aW50MTZfdCkweEY3RkYpCisjZGVmaW5lIElTX0kyQ19OQUNLX1BPU0lUSU9OKFBPU0lUSU9OKSAgKCgoUE9TSVRJT04pID09IEkyQ19OQUNLUG9zaXRpb25fTmV4dCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBPU0lUSU9OKSA9PSBJMkNfTkFDS1Bvc2l0aW9uX0N1cnJlbnQpKQorLyoqCisgICogQH0KKyAgKi8gCisKKy8qKiBAZGVmZ3JvdXAgSTJDX2ludGVycnVwdHNfZGVmaW5pdGlvbiAKKyAgKiBAeworICAqLworCisjZGVmaW5lIEkyQ19JVF9CVUYgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDA0MDApCisjZGVmaW5lIEkyQ19JVF9FVlQgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAyMDApCisjZGVmaW5lIEkyQ19JVF9FUlIgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAxMDApCisjZGVmaW5lIElTX0kyQ19DT05GSUdfSVQoSVQpICgoKChJVCkgJiAodWludDE2X3QpMHhGOEZGKSA9PSAweDAwKSAmJiAoKElUKSAhPSAweDAwKSkKKy8qKgorICAqIEB9CisgICovIAorCisvKiogQGRlZmdyb3VwIEkyQ19pbnRlcnJ1cHRzX2RlZmluaXRpb24gCisgICogQHsKKyAgKi8KKworI2RlZmluZSBJMkNfSVRfU01CQUxFUlQgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMTAwODAwMCkKKyNkZWZpbmUgSTJDX0lUX1RJTUVPVVQgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDEwMDQwMDApCisjZGVmaW5lIEkyQ19JVF9QRUNFUlIgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAxMDAxMDAwKQorI2RlZmluZSBJMkNfSVRfT1ZSICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMTAwMDgwMCkKKyNkZWZpbmUgSTJDX0lUX0FGICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDEwMDA0MDApCisjZGVmaW5lIEkyQ19JVF9BUkxPICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAxMDAwMjAwKQorI2RlZmluZSBJMkNfSVRfQkVSUiAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMTAwMDEwMCkKKyNkZWZpbmUgSTJDX0lUX1RYRSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDYwMDAwODApCisjZGVmaW5lIEkyQ19JVF9SWE5FICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA2MDAwMDQwKQorI2RlZmluZSBJMkNfSVRfU1RPUEYgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMjAwMDAxMCkKKyNkZWZpbmUgSTJDX0lUX0FERDEwICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDIwMDAwMDgpCisjZGVmaW5lIEkyQ19JVF9CVEYgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAyMDAwMDA0KQorI2RlZmluZSBJMkNfSVRfQUREUiAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMjAwMDAwMikKKyNkZWZpbmUgSTJDX0lUX1NCICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDIwMDAwMDEpCisKKyNkZWZpbmUgSVNfSTJDX0NMRUFSX0lUKElUKSAoKCgoSVQpICYgKHVpbnQxNl90KTB4MjBGRikgPT0gMHgwMCkgJiYgKChJVCkgIT0gKHVpbnQxNl90KTB4MDApKQorCisjZGVmaW5lIElTX0kyQ19HRVRfSVQoSVQpICgoKElUKSA9PSBJMkNfSVRfU01CQUxFUlQpIHx8ICgoSVQpID09IEkyQ19JVF9USU1FT1VUKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoKElUKSA9PSBJMkNfSVRfUEVDRVJSKSB8fCAoKElUKSA9PSBJMkNfSVRfT1ZSKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoKElUKSA9PSBJMkNfSVRfQUYpIHx8ICgoSVQpID09IEkyQ19JVF9BUkxPKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoKElUKSA9PSBJMkNfSVRfQkVSUikgfHwgKChJVCkgPT0gSTJDX0lUX1RYRSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJVCkgPT0gSTJDX0lUX1JYTkUpIHx8ICgoSVQpID09IEkyQ19JVF9TVE9QRikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJVCkgPT0gSTJDX0lUX0FERDEwKSB8fCAoKElUKSA9PSBJMkNfSVRfQlRGKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoKElUKSA9PSBJMkNfSVRfQUREUikgfHwgKChJVCkgPT0gSTJDX0lUX1NCKSkKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgSTJDX2ZsYWdzX2RlZmluaXRpb24gCisgICogQHsKKyAgKi8KKworLyoqIAorICAqIEBicmllZiAgU1IyIHJlZ2lzdGVyIGZsYWdzICAKKyAgKi8KKworI2RlZmluZSBJMkNfRkxBR19EVUFMRiAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDgwMDAwMCkKKyNkZWZpbmUgSTJDX0ZMQUdfU01CSE9TVCAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApCisjZGVmaW5lIEkyQ19GTEFHX1NNQkRFRkFVTFQgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMjAwMDAwKQorI2RlZmluZSBJMkNfRkxBR19HRU5DQUxMICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDEwMDAwMCkKKyNkZWZpbmUgSTJDX0ZMQUdfVFJBICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwNDAwMDApCisjZGVmaW5lIEkyQ19GTEFHX0JVU1kgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDIwMDAwKQorI2RlZmluZSBJMkNfRkxBR19NU0wgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAxMDAwMCkKKworLyoqIAorICAqIEBicmllZiAgU1IxIHJlZ2lzdGVyIGZsYWdzICAKKyAgKi8KKworI2RlZmluZSBJMkNfRkxBR19TTUJBTEVSVCAgICAgICAgICAgICAgICgodWludDMyX3QpMHgxMDAwODAwMCkKKyNkZWZpbmUgSTJDX0ZMQUdfVElNRU9VVCAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDQwMDApCisjZGVmaW5lIEkyQ19GTEFHX1BFQ0VSUiAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDEwMDAxMDAwKQorI2RlZmluZSBJMkNfRkxBR19PVlIgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgxMDAwMDgwMCkKKyNkZWZpbmUgSTJDX0ZMQUdfQUYgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDA0MDApCisjZGVmaW5lIEkyQ19GTEFHX0FSTE8gICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDEwMDAwMjAwKQorI2RlZmluZSBJMkNfRkxBR19CRVJSICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgxMDAwMDEwMCkKKyNkZWZpbmUgSTJDX0ZMQUdfVFhFICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwODApCisjZGVmaW5lIEkyQ19GTEFHX1JYTkUgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDEwMDAwMDQwKQorI2RlZmluZSBJMkNfRkxBR19TVE9QRiAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgxMDAwMDAxMCkKKyNkZWZpbmUgSTJDX0ZMQUdfQUREMTAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwMDgpCisjZGVmaW5lIEkyQ19GTEFHX0JURiAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDEwMDAwMDA0KQorI2RlZmluZSBJMkNfRkxBR19BRERSICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgxMDAwMDAwMikKKyNkZWZpbmUgSTJDX0ZMQUdfU0IgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwMDEpCisKKyNkZWZpbmUgSVNfSTJDX0NMRUFSX0ZMQUcoRkxBRykgKCgoKEZMQUcpICYgKHVpbnQxNl90KTB4MjBGRikgPT0gMHgwMCkgJiYgKChGTEFHKSAhPSAodWludDE2X3QpMHgwMCkpCisKKyNkZWZpbmUgSVNfSTJDX0dFVF9GTEFHKEZMQUcpICgoKEZMQUcpID09IEkyQ19GTEFHX0RVQUxGKSB8fCAoKEZMQUcpID09IEkyQ19GTEFHX1NNQkhPU1QpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEZMQUcpID09IEkyQ19GTEFHX1NNQkRFRkFVTFQpIHx8ICgoRkxBRykgPT0gSTJDX0ZMQUdfR0VOQ0FMTCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRkxBRykgPT0gSTJDX0ZMQUdfVFJBKSB8fCAoKEZMQUcpID09IEkyQ19GTEFHX0JVU1kpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEZMQUcpID09IEkyQ19GTEFHX01TTCkgfHwgKChGTEFHKSA9PSBJMkNfRkxBR19TTUJBTEVSVCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRkxBRykgPT0gSTJDX0ZMQUdfVElNRU9VVCkgfHwgKChGTEFHKSA9PSBJMkNfRkxBR19QRUNFUlIpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEZMQUcpID09IEkyQ19GTEFHX09WUikgfHwgKChGTEFHKSA9PSBJMkNfRkxBR19BRikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRkxBRykgPT0gSTJDX0ZMQUdfQVJMTykgfHwgKChGTEFHKSA9PSBJMkNfRkxBR19CRVJSKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChGTEFHKSA9PSBJMkNfRkxBR19UWEUpIHx8ICgoRkxBRykgPT0gSTJDX0ZMQUdfUlhORSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRkxBRykgPT0gSTJDX0ZMQUdfU1RPUEYpIHx8ICgoRkxBRykgPT0gSTJDX0ZMQUdfQUREMTApIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEZMQUcpID09IEkyQ19GTEFHX0JURikgfHwgKChGTEFHKSA9PSBJMkNfRkxBR19BRERSKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChGTEFHKSA9PSBJMkNfRkxBR19TQikpCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIEkyQ19FdmVudHMgCisgICogQHsKKyAgKi8KKworLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgIAorICAgICAgICAgICAgICAgICAgICAgSTJDIE1hc3RlciBFdmVudHMgKEV2ZW50cyBncm91cGVkIGluIG9yZGVyIG9mIGNvbW11bmljYXRpb24pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCisvKiogCisgICogQGJyaWVmICBDb21tdW5pY2F0aW9uIHN0YXJ0CisgICogCisgICogQWZ0ZXIgc2VuZGluZyB0aGUgU1RBUlQgY29uZGl0aW9uIChJMkNfR2VuZXJhdGVTVEFSVCgpIGZ1bmN0aW9uKSB0aGUgbWFzdGVyIAorICAqIGhhcyB0byB3YWl0IGZvciB0aGlzIGV2ZW50LiBJdCBtZWFucyB0aGF0IHRoZSBTdGFydCBjb25kaXRpb24gaGFzIGJlZW4gY29ycmVjdGx5IAorICAqIHJlbGVhc2VkIG9uIHRoZSBJMkMgYnVzICh0aGUgYnVzIGlzIGZyZWUsIG5vIG90aGVyIGRldmljZXMgaXMgY29tbXVuaWNhdGluZykuCisgICogCisgICovCisvKiAtLUVWNSAqLworI2RlZmluZSAgSTJDX0VWRU5UX01BU1RFUl9NT0RFX1NFTEVDVCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMzAwMDEpICAvKiBCVVNZLCBNU0wgYW5kIFNCIGZsYWcgKi8KKworLyoqIAorICAqIEBicmllZiAgQWRkcmVzcyBBY2tub3dsZWRnZQorICAqIAorICAqIEFmdGVyIGNoZWNraW5nIG9uIEVWNSAoc3RhcnQgY29uZGl0aW9uIGNvcnJlY3RseSByZWxlYXNlZCBvbiB0aGUgYnVzKSwgdGhlIAorICAqIG1hc3RlciBzZW5kcyB0aGUgYWRkcmVzcyBvZiB0aGUgc2xhdmUocykgd2l0aCB3aGljaCBpdCB3aWxsIGNvbW11bmljYXRlIAorICAqIChJMkNfU2VuZDdiaXRBZGRyZXNzKCkgZnVuY3Rpb24sIGl0IGFsc28gZGV0ZXJtaW5lcyB0aGUgZGlyZWN0aW9uIG9mIHRoZSBjb21tdW5pY2F0aW9uOiAKKyAgKiBNYXN0ZXIgdHJhbnNtaXR0ZXIgb3IgUmVjZWl2ZXIpLiBUaGVuIHRoZSBtYXN0ZXIgaGFzIHRvIHdhaXQgdGhhdCBhIHNsYXZlIGFja25vd2xlZGdlcyAKKyAgKiBoaXMgYWRkcmVzcy4gSWYgYW4gYWNrbm93bGVkZ2UgaXMgc2VudCBvbiB0aGUgYnVzLCBvbmUgb2YgdGhlIGZvbGxvd2luZyBldmVudHMgd2lsbCAKKyAgKiBiZSBzZXQ6CisgICogCisgICogIDEpIEluIGNhc2Ugb2YgTWFzdGVyIFJlY2VpdmVyICg3LWJpdCBhZGRyZXNzaW5nKTogdGhlIEkyQ19FVkVOVF9NQVNURVJfUkVDRUlWRVJfTU9ERV9TRUxFQ1RFRCAKKyAgKiAgICAgZXZlbnQgaXMgc2V0LgorICAqICAKKyAgKiAgMikgSW4gY2FzZSBvZiBNYXN0ZXIgVHJhbnNtaXR0ZXIgKDctYml0IGFkZHJlc3NpbmcpOiB0aGUgSTJDX0VWRU5UX01BU1RFUl9UUkFOU01JVFRFUl9NT0RFX1NFTEVDVEVEIAorICAqICAgICBpcyBzZXQKKyAgKiAgCisgICogIDMpIEluIGNhc2Ugb2YgMTAtQml0IGFkZHJlc3NpbmcgbW9kZSwgdGhlIG1hc3RlciAoanVzdCBhZnRlciBnZW5lcmF0aW5nIHRoZSBTVEFSVCAKKyAgKiAgYW5kIGNoZWNraW5nIG9uIEVWNSkgaGFzIHRvIHNlbmQgdGhlIGhlYWRlciBvZiAxMC1iaXQgYWRkcmVzc2luZyBtb2RlIChJMkNfU2VuZERhdGEoKSAKKyAgKiAgZnVuY3Rpb24pLiBUaGVuIG1hc3RlciBzaG91bGQgd2FpdCBvbiBFVjkuIEl0IG1lYW5zIHRoYXQgdGhlIDEwLWJpdCBhZGRyZXNzaW5nIAorICAqICBoZWFkZXIgaGFzIGJlZW4gY29ycmVjdGx5IHNlbnQgb24gdGhlIGJ1cy4gVGhlbiBtYXN0ZXIgc2hvdWxkIHNlbmQgdGhlIHNlY29uZCBwYXJ0IG9mIAorICAqICB0aGUgMTAtYml0IGFkZHJlc3MgKExTQikgdXNpbmcgdGhlIGZ1bmN0aW9uIEkyQ19TZW5kN2JpdEFkZHJlc3MoKS4gVGhlbiBtYXN0ZXIgCisgICogIHNob3VsZCB3YWl0IGZvciBldmVudCBFVjYuIAorICAqICAgICAKKyAgKi8KKworLyogLS1FVjYgKi8KKyNkZWZpbmUgIEkyQ19FVkVOVF9NQVNURVJfVFJBTlNNSVRURVJfTU9ERV9TRUxFQ1RFRCAgICAgICAgKCh1aW50MzJfdCkweDAwMDcwMDgyKSAgLyogQlVTWSwgTVNMLCBBRERSLCBUWEUgYW5kIFRSQSBmbGFncyAqLworI2RlZmluZSAgSTJDX0VWRU5UX01BU1RFUl9SRUNFSVZFUl9NT0RFX1NFTEVDVEVEICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMzAwMDIpICAvKiBCVVNZLCBNU0wgYW5kIEFERFIgZmxhZ3MgKi8KKy8qIC0tRVY5ICovCisjZGVmaW5lICBJMkNfRVZFTlRfTUFTVEVSX01PREVfQUREUkVTUzEwICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAzMDAwOCkgIC8qIEJVU1ksIE1TTCBhbmQgQUREMTAgZmxhZ3MgKi8KKworLyoqIAorICAqIEBicmllZiBDb21tdW5pY2F0aW9uIGV2ZW50cworICAqIAorICAqIElmIGEgY29tbXVuaWNhdGlvbiBpcyBlc3RhYmxpc2hlZCAoU1RBUlQgY29uZGl0aW9uIGdlbmVyYXRlZCBhbmQgc2xhdmUgYWRkcmVzcyAKKyAgKiBhY2tub3dsZWRnZWQpIHRoZW4gdGhlIG1hc3RlciBoYXMgdG8gY2hlY2sgb24gb25lIG9mIHRoZSBmb2xsb3dpbmcgZXZlbnRzIGZvciAKKyAgKiBjb21tdW5pY2F0aW9uIHByb2NlZHVyZXM6CisgICogIAorICAqIDEpIE1hc3RlciBSZWNlaXZlciBtb2RlOiBUaGUgbWFzdGVyIGhhcyB0byB3YWl0IG9uIHRoZSBldmVudCBFVjcgdGhlbiB0byByZWFkIAorICAqICAgIHRoZSBkYXRhIHJlY2VpdmVkIGZyb20gdGhlIHNsYXZlIChJMkNfUmVjZWl2ZURhdGEoKSBmdW5jdGlvbikuCisgICogCisgICogMikgTWFzdGVyIFRyYW5zbWl0dGVyIG1vZGU6IFRoZSBtYXN0ZXIgaGFzIHRvIHNlbmQgZGF0YSAoSTJDX1NlbmREYXRhKCkgCisgICogICAgZnVuY3Rpb24pIHRoZW4gdG8gd2FpdCBvbiBldmVudCBFVjggb3IgRVY4XzIuCisgICogICAgVGhlc2UgdHdvIGV2ZW50cyBhcmUgc2ltaWxhcjogCisgICogICAgIC0gRVY4IG1lYW5zIHRoYXQgdGhlIGRhdGEgaGFzIGJlZW4gd3JpdHRlbiBpbiB0aGUgZGF0YSByZWdpc3RlciBhbmQgaXMgCisgICogICAgICAgYmVpbmcgc2hpZnRlZCBvdXQuCisgICogICAgIC0gRVY4XzIgbWVhbnMgdGhhdCB0aGUgZGF0YSBoYXMgYmVlbiBwaHlzaWNhbGx5IHNoaWZ0ZWQgb3V0IGFuZCBvdXRwdXQgCisgICogICAgICAgb24gdGhlIGJ1cy4KKyAgKiAgICAgSW4gbW9zdCBjYXNlcywgdXNpbmcgRVY4IGlzIHN1ZmZpY2llbnQgZm9yIHRoZSBhcHBsaWNhdGlvbi4KKyAgKiAgICAgVXNpbmcgRVY4XzIgbGVhZHMgdG8gYSBzbG93ZXIgY29tbXVuaWNhdGlvbiBidXQgZW5zdXJlIG1vcmUgcmVsaWFibGUgdGVzdC4KKyAgKiAgICAgRVY4XzIgaXMgYWxzbyBtb3JlIHN1aXRhYmxlIHRoYW4gRVY4IGZvciB0ZXN0aW5nIG9uIHRoZSBsYXN0IGRhdGEgdHJhbnNtaXNzaW9uIAorICAqICAgICAoYmVmb3JlIFN0b3AgY29uZGl0aW9uIGdlbmVyYXRpb24pLgorICAqICAgICAKKyAgKiAgQG5vdGUgSW4gY2FzZSB0aGUgIHVzZXIgc29mdHdhcmUgZG9lcyBub3QgZ3VhcmFudGVlIHRoYXQgdGhpcyBldmVudCBFVjcgaXMgCisgICogIG1hbmFnZWQgYmVmb3JlIHRoZSBjdXJyZW50IGJ5dGUgZW5kIG9mIHRyYW5zZmVyLCB0aGVuIHVzZXIgbWF5IGNoZWNrIG9uIEVWNyAKKyAgKiAgYW5kIEJURiBmbGFnIGF0IHRoZSBzYW1lIHRpbWUgKGllLiAoSTJDX0VWRU5UX01BU1RFUl9CWVRFX1JFQ0VJVkVEIHwgSTJDX0ZMQUdfQlRGKSkuCisgICogIEluIHRoaXMgY2FzZSB0aGUgY29tbXVuaWNhdGlvbiBtYXkgYmUgc2xvd2VyLgorICAqIAorICAqLworCisvKiBNYXN0ZXIgUkVDRUlWRVIgbW9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIAorLyogLS1FVjcgKi8KKyNkZWZpbmUgIEkyQ19FVkVOVF9NQVNURVJfQllURV9SRUNFSVZFRCAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDMwMDQwKSAgLyogQlVTWSwgTVNMIGFuZCBSWE5FIGZsYWdzICovCisKKy8qIE1hc3RlciBUUkFOU01JVFRFUiBtb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qIC0tRVY4ICovCisjZGVmaW5lIEkyQ19FVkVOVF9NQVNURVJfQllURV9UUkFOU01JVFRJTkcgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA3MDA4MCkgLyogVFJBLCBCVVNZLCBNU0wsIFRYRSBmbGFncyAqLworLyogLS1FVjhfMiAqLworI2RlZmluZSAgSTJDX0VWRU5UX01BU1RFUl9CWVRFX1RSQU5TTUlUVEVEICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwNzAwODQpICAvKiBUUkEsIEJVU1ksIE1TTCwgVFhFIGFuZCBCVEYgZmxhZ3MgKi8KKworCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAgCisgICAgICAgICAgICAgICAgICAgICBJMkMgU2xhdmUgRXZlbnRzIChFdmVudHMgZ3JvdXBlZCBpbiBvcmRlciBvZiBjb21tdW5pY2F0aW9uKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworCisvKiogCisgICogQGJyaWVmICBDb21tdW5pY2F0aW9uIHN0YXJ0IGV2ZW50cworICAqIAorICAqIFdhaXQgb24gb25lIG9mIHRoZXNlIGV2ZW50cyBhdCB0aGUgc3RhcnQgb2YgdGhlIGNvbW11bmljYXRpb24uIEl0IG1lYW5zIHRoYXQgCisgICogdGhlIEkyQyBwZXJpcGhlcmFsIGRldGVjdGVkIGEgU3RhcnQgY29uZGl0aW9uIG9uIHRoZSBidXMgKGdlbmVyYXRlZCBieSBtYXN0ZXIgCisgICogZGV2aWNlKSBmb2xsb3dlZCBieSB0aGUgcGVyaXBoZXJhbCBhZGRyZXNzLiBUaGUgcGVyaXBoZXJhbCBnZW5lcmF0ZXMgYW4gQUNLIAorICAqIGNvbmRpdGlvbiBvbiB0aGUgYnVzIChpZiB0aGUgYWNrbm93bGVkZ2UgZmVhdHVyZSBpcyBlbmFibGVkIHRocm91Z2ggZnVuY3Rpb24gCisgICogSTJDX0Fja25vd2xlZGdlQ29uZmlnKCkpIGFuZCB0aGUgZXZlbnRzIGxpc3RlZCBhYm92ZSBhcmUgc2V0IDoKKyAgKiAgCisgICogMSkgSW4gbm9ybWFsIGNhc2UgKG9ubHkgb25lIGFkZHJlc3MgbWFuYWdlZCBieSB0aGUgc2xhdmUpLCB3aGVuIHRoZSBhZGRyZXNzIAorICAqICAgc2VudCBieSB0aGUgbWFzdGVyIG1hdGNoZXMgdGhlIG93biBhZGRyZXNzIG9mIHRoZSBwZXJpcGhlcmFsIChjb25maWd1cmVkIGJ5IAorICAqICAgSTJDX093bkFkZHJlc3MxIGZpZWxkKSB0aGUgSTJDX0VWRU5UX1NMQVZFX1hYWF9BRERSRVNTX01BVENIRUQgZXZlbnQgaXMgc2V0IAorICAqICAgKHdoZXJlIFhYWCBjb3VsZCBiZSBUUkFOU01JVFRFUiBvciBSRUNFSVZFUikuCisgICogICAgCisgICogMikgSW4gY2FzZSB0aGUgYWRkcmVzcyBzZW50IGJ5IHRoZSBtYXN0ZXIgbWF0Y2hlcyB0aGUgc2Vjb25kIGFkZHJlc3Mgb2YgdGhlIAorICAqICAgcGVyaXBoZXJhbCAoY29uZmlndXJlZCBieSB0aGUgZnVuY3Rpb24gSTJDX093bkFkZHJlc3MyQ29uZmlnKCkgYW5kIGVuYWJsZWQgCisgICogICBieSB0aGUgZnVuY3Rpb24gSTJDX0R1YWxBZGRyZXNzQ21kKCkpIHRoZSBldmVudHMgSTJDX0VWRU5UX1NMQVZFX1hYWF9TRUNPTkRBRERSRVNTX01BVENIRUQgCisgICogICAod2hlcmUgWFhYIGNvdWxkIGJlIFRSQU5TTUlUVEVSIG9yIFJFQ0VJVkVSKSBhcmUgc2V0LgorICAqICAgCisgICogMykgSW4gY2FzZSB0aGUgYWRkcmVzcyBzZW50IGJ5IHRoZSBtYXN0ZXIgaXMgR2VuZXJhbCBDYWxsIChhZGRyZXNzIDB4MDApIGFuZCAKKyAgKiAgIGlmIHRoZSBHZW5lcmFsIENhbGwgaXMgZW5hYmxlZCBmb3IgdGhlIHBlcmlwaGVyYWwgKHVzaW5nIGZ1bmN0aW9uIEkyQ19HZW5lcmFsQ2FsbENtZCgpKSAKKyAgKiAgIHRoZSBmb2xsb3dpbmcgZXZlbnQgaXMgc2V0IEkyQ19FVkVOVF9TTEFWRV9HRU5FUkFMQ0FMTEFERFJFU1NfTUFUQ0hFRC4gICAKKyAgKiAKKyAgKi8KKworLyogLS1FVjEgIChhbGwgdGhlIGV2ZW50cyBiZWxvdyBhcmUgdmFyaWFudHMgb2YgRVYxKSAqLyAgIAorLyogMSkgQ2FzZSBvZiBPbmUgU2luZ2xlIEFkZHJlc3MgbWFuYWdlZCBieSB0aGUgc2xhdmUgKi8KKyNkZWZpbmUgIEkyQ19FVkVOVF9TTEFWRV9SRUNFSVZFUl9BRERSRVNTX01BVENIRUQgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDIwMDAyKSAvKiBCVVNZIGFuZCBBRERSIGZsYWdzICovCisjZGVmaW5lICBJMkNfRVZFTlRfU0xBVkVfVFJBTlNNSVRURVJfQUREUkVTU19NQVRDSEVEICAgICAgICgodWludDMyX3QpMHgwMDA2MDA4MikgLyogVFJBLCBCVVNZLCBUWEUgYW5kIEFERFIgZmxhZ3MgKi8KKworLyogMikgQ2FzZSBvZiBEdWFsIGFkZHJlc3MgbWFuYWdlZCBieSB0aGUgc2xhdmUgKi8KKyNkZWZpbmUgIEkyQ19FVkVOVF9TTEFWRV9SRUNFSVZFUl9TRUNPTkRBRERSRVNTX01BVENIRUQgICAgKCh1aW50MzJfdCkweDAwODIwMDAwKSAgLyogRFVBTEYgYW5kIEJVU1kgZmxhZ3MgKi8KKyNkZWZpbmUgIEkyQ19FVkVOVF9TTEFWRV9UUkFOU01JVFRFUl9TRUNPTkRBRERSRVNTX01BVENIRUQgKCh1aW50MzJfdCkweDAwODYwMDgwKSAgLyogRFVBTEYsIFRSQSwgQlVTWSBhbmQgVFhFIGZsYWdzICovCisKKy8qIDMpIENhc2Ugb2YgR2VuZXJhbCBDYWxsIGVuYWJsZWQgZm9yIHRoZSBzbGF2ZSAqLworI2RlZmluZSAgSTJDX0VWRU5UX1NMQVZFX0dFTkVSQUxDQUxMQUREUkVTU19NQVRDSEVEICAgICAgICAoKHVpbnQzMl90KTB4MDAxMjAwMDApICAvKiBHRU5DQUxMIGFuZCBCVVNZIGZsYWdzICovCisKKy8qKiAKKyAgKiBAYnJpZWYgIENvbW11bmljYXRpb24gZXZlbnRzCisgICogCisgICogV2FpdCBvbiBvbmUgb2YgdGhlc2UgZXZlbnRzIHdoZW4gRVYxIGhhcyBhbHJlYWR5IGJlZW4gY2hlY2tlZCBhbmQ6IAorICAqIAorICAqIC0gU2xhdmUgUkVDRUlWRVIgbW9kZToKKyAgKiAgICAgLSBFVjI6IFdoZW4gdGhlIGFwcGxpY2F0aW9uIGlzIGV4cGVjdGluZyBhIGRhdGEgYnl0ZSB0byBiZSByZWNlaXZlZC4gCisgICogICAgIC0gRVY0OiBXaGVuIHRoZSBhcHBsaWNhdGlvbiBpcyBleHBlY3RpbmcgdGhlIGVuZCBvZiB0aGUgY29tbXVuaWNhdGlvbjogbWFzdGVyIAorICAqICAgICAgIHNlbmRzIGEgc3RvcCBjb25kaXRpb24gYW5kIGRhdGEgdHJhbnNtaXNzaW9uIGlzIHN0b3BwZWQuCisgICogICAgCisgICogLSBTbGF2ZSBUcmFuc21pdHRlciBtb2RlOgorICAqICAgIC0gRVYzOiBXaGVuIGEgYnl0ZSBoYXMgYmVlbiB0cmFuc21pdHRlZCBieSB0aGUgc2xhdmUgYW5kIHRoZSBhcHBsaWNhdGlvbiBpcyBleHBlY3RpbmcgCisgICogICAgICB0aGUgZW5kIG9mIHRoZSBieXRlIHRyYW5zbWlzc2lvbi4gVGhlIHR3byBldmVudHMgSTJDX0VWRU5UX1NMQVZFX0JZVEVfVFJBTlNNSVRURUQgYW5kCisgICogICAgICBJMkNfRVZFTlRfU0xBVkVfQllURV9UUkFOU01JVFRJTkcgYXJlIHNpbWlsYXIuIFRoZSBzZWNvbmQgb25lIGNhbiBvcHRpb25hbGx5IGJlIAorICAqICAgICAgdXNlZCB3aGVuIHRoZSB1c2VyIHNvZnR3YXJlIGRvZXNuJ3QgZ3VhcmFudGVlIHRoZSBFVjMgaXMgbWFuYWdlZCBiZWZvcmUgdGhlCisgICogICAgICBjdXJyZW50IGJ5dGUgZW5kIG9mIHRyYW5zZmVyLgorICAqICAgIC0gRVYzXzI6IFdoZW4gdGhlIG1hc3RlciBzZW5kcyBhIE5BQ0sgaW4gb3JkZXIgdG8gdGVsbCBzbGF2ZSB0aGF0IGRhdGEgdHJhbnNtaXNzaW9uIAorICAqICAgICAgc2hhbGwgZW5kIChiZWZvcmUgc2VuZGluZyB0aGUgU1RPUCBjb25kaXRpb24pLiBJbiB0aGlzIGNhc2Ugc2xhdmUgaGFzIHRvIHN0b3Agc2VuZGluZyAKKyAgKiAgICAgIGRhdGEgYnl0ZXMgYW5kIGV4cGVjdCBhIFN0b3AgY29uZGl0aW9uIG9uIHRoZSBidXMuCisgICogICAgICAKKyAgKiAgQG5vdGUgSW4gY2FzZSB0aGUgIHVzZXIgc29mdHdhcmUgZG9lcyBub3QgZ3VhcmFudGVlIHRoYXQgdGhlIGV2ZW50IEVWMiBpcyAKKyAgKiAgbWFuYWdlZCBiZWZvcmUgdGhlIGN1cnJlbnQgYnl0ZSBlbmQgb2YgdHJhbnNmZXIsIHRoZW4gdXNlciBtYXkgY2hlY2sgb24gRVYyIAorICAqICBhbmQgQlRGIGZsYWcgYXQgdGhlIHNhbWUgdGltZSAoaWUuIChJMkNfRVZFTlRfU0xBVkVfQllURV9SRUNFSVZFRCB8IEkyQ19GTEFHX0JURikpLgorICAqIEluIHRoaXMgY2FzZSB0aGUgY29tbXVuaWNhdGlvbiBtYXkgYmUgc2xvd2VyLgorICAqCisgICovCisKKy8qIFNsYXZlIFJFQ0VJVkVSIG1vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyAKKy8qIC0tRVYyICovCisjZGVmaW5lICBJMkNfRVZFTlRfU0xBVkVfQllURV9SRUNFSVZFRCAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDA0MCkgIC8qIEJVU1kgYW5kIFJYTkUgZmxhZ3MgKi8KKy8qIC0tRVY0ICAqLworI2RlZmluZSAgSTJDX0VWRU5UX1NMQVZFX1NUT1BfREVURUNURUQgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAvKiBTVE9QRiBmbGFnICovCisKKy8qIFNsYXZlIFRSQU5TTUlUVEVSIG1vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyogLS1FVjMgKi8KKyNkZWZpbmUgIEkyQ19FVkVOVF9TTEFWRV9CWVRFX1RSQU5TTUlUVEVEICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDYwMDg0KSAgLyogVFJBLCBCVVNZLCBUWEUgYW5kIEJURiBmbGFncyAqLworI2RlZmluZSAgSTJDX0VWRU5UX1NMQVZFX0JZVEVfVFJBTlNNSVRUSU5HICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwNjAwODApICAvKiBUUkEsIEJVU1kgYW5kIFRYRSBmbGFncyAqLworLyogLS1FVjNfMiAqLworI2RlZmluZSAgSTJDX0VWRU5UX1NMQVZFX0FDS19GQUlMVVJFICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApICAvKiBBRiBmbGFnICovCisKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09ICAgICAgRW5kIG9mIEV2ZW50cyBEZXNjcmlwdGlvbiAgICAgICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKworI2RlZmluZSBJU19JMkNfRVZFTlQoRVZFTlQpICgoKEVWRU5UKSA9PSBJMkNfRVZFTlRfU0xBVkVfVFJBTlNNSVRURVJfQUREUkVTU19NQVRDSEVEKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRVZFTlQpID09IEkyQ19FVkVOVF9TTEFWRV9SRUNFSVZFUl9BRERSRVNTX01BVENIRUQpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChFVkVOVCkgPT0gSTJDX0VWRU5UX1NMQVZFX1RSQU5TTUlUVEVSX1NFQ09OREFERFJFU1NfTUFUQ0hFRCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEVWRU5UKSA9PSBJMkNfRVZFTlRfU0xBVkVfUkVDRUlWRVJfU0VDT05EQUREUkVTU19NQVRDSEVEKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRVZFTlQpID09IEkyQ19FVkVOVF9TTEFWRV9HRU5FUkFMQ0FMTEFERFJFU1NfTUFUQ0hFRCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEVWRU5UKSA9PSBJMkNfRVZFTlRfU0xBVkVfQllURV9SRUNFSVZFRCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEVWRU5UKSA9PSAoSTJDX0VWRU5UX1NMQVZFX0JZVEVfUkVDRUlWRUQgfCBJMkNfRkxBR19EVUFMRikpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChFVkVOVCkgPT0gKEkyQ19FVkVOVF9TTEFWRV9CWVRFX1JFQ0VJVkVEIHwgSTJDX0ZMQUdfR0VOQ0FMTCkpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChFVkVOVCkgPT0gSTJDX0VWRU5UX1NMQVZFX0JZVEVfVFJBTlNNSVRURUQpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChFVkVOVCkgPT0gKEkyQ19FVkVOVF9TTEFWRV9CWVRFX1RSQU5TTUlUVEVEIHwgSTJDX0ZMQUdfRFVBTEYpKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRVZFTlQpID09IChJMkNfRVZFTlRfU0xBVkVfQllURV9UUkFOU01JVFRFRCB8IEkyQ19GTEFHX0dFTkNBTEwpKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRVZFTlQpID09IEkyQ19FVkVOVF9TTEFWRV9TVE9QX0RFVEVDVEVEKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRVZFTlQpID09IEkyQ19FVkVOVF9NQVNURVJfTU9ERV9TRUxFQ1QpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChFVkVOVCkgPT0gSTJDX0VWRU5UX01BU1RFUl9UUkFOU01JVFRFUl9NT0RFX1NFTEVDVEVEKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRVZFTlQpID09IEkyQ19FVkVOVF9NQVNURVJfUkVDRUlWRVJfTU9ERV9TRUxFQ1RFRCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEVWRU5UKSA9PSBJMkNfRVZFTlRfTUFTVEVSX0JZVEVfUkVDRUlWRUQpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChFVkVOVCkgPT0gSTJDX0VWRU5UX01BU1RFUl9CWVRFX1RSQU5TTUlUVEVEKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRVZFTlQpID09IEkyQ19FVkVOVF9NQVNURVJfQllURV9UUkFOU01JVFRJTkcpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChFVkVOVCkgPT0gSTJDX0VWRU5UX01BU1RFUl9NT0RFX0FERFJFU1MxMCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEVWRU5UKSA9PSBJMkNfRVZFTlRfU0xBVkVfQUNLX0ZBSUxVUkUpKQorLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBJMkNfb3duX2FkZHJlc3MxIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgSVNfSTJDX09XTl9BRERSRVNTMShBRERSRVNTMSkgKChBRERSRVNTMSkgPD0gMHgzRkYpCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIEkyQ19jbG9ja19zcGVlZCAKKyAgKiBAeworICAqLworCisjZGVmaW5lIElTX0kyQ19DTE9DS19TUEVFRChTUEVFRCkgKCgoU1BFRUQpID49IDB4MSkgJiYgKChTUEVFRCkgPD0gNDAwMDAwKSkKKy8qKgorICAqIEB9CisgICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgSTJDX0V4cG9ydGVkX01hY3JvcworICAqIEB7CisgICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgSTJDX0V4cG9ydGVkX0Z1bmN0aW9ucworICAqIEB7CisgICovCisKK3ZvaWQgSTJDX0RlSW5pdChJMkNfVHlwZURlZiogSTJDeCk7Cit2b2lkIEkyQ19Jbml0KEkyQ19UeXBlRGVmKiBJMkN4LCBJMkNfSW5pdFR5cGVEZWYqIEkyQ19Jbml0U3RydWN0KTsKK3ZvaWQgSTJDX1N0cnVjdEluaXQoSTJDX0luaXRUeXBlRGVmKiBJMkNfSW5pdFN0cnVjdCk7Cit2b2lkIEkyQ19DbWQoSTJDX1R5cGVEZWYqIEkyQ3gsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSk7Cit2b2lkIEkyQ19ETUFDbWQoSTJDX1R5cGVEZWYqIEkyQ3gsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSk7Cit2b2lkIEkyQ19ETUFMYXN0VHJhbnNmZXJDbWQoSTJDX1R5cGVEZWYqIEkyQ3gsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSk7Cit2b2lkIEkyQ19HZW5lcmF0ZVNUQVJUKEkyQ19UeXBlRGVmKiBJMkN4LCBGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpOwordm9pZCBJMkNfR2VuZXJhdGVTVE9QKEkyQ19UeXBlRGVmKiBJMkN4LCBGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpOwordm9pZCBJMkNfQWNrbm93bGVkZ2VDb25maWcoSTJDX1R5cGVEZWYqIEkyQ3gsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSk7Cit2b2lkIEkyQ19Pd25BZGRyZXNzMkNvbmZpZyhJMkNfVHlwZURlZiogSTJDeCwgdWludDhfdCBBZGRyZXNzKTsKK3ZvaWQgSTJDX0R1YWxBZGRyZXNzQ21kKEkyQ19UeXBlRGVmKiBJMkN4LCBGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpOwordm9pZCBJMkNfR2VuZXJhbENhbGxDbWQoSTJDX1R5cGVEZWYqIEkyQ3gsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSk7Cit2b2lkIEkyQ19JVENvbmZpZyhJMkNfVHlwZURlZiogSTJDeCwgdWludDE2X3QgSTJDX0lULCBGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpOwordm9pZCBJMkNfU2VuZERhdGEoSTJDX1R5cGVEZWYqIEkyQ3gsIHVpbnQ4X3QgRGF0YSk7Cit1aW50OF90IEkyQ19SZWNlaXZlRGF0YShJMkNfVHlwZURlZiogSTJDeCk7Cit2b2lkIEkyQ19TZW5kN2JpdEFkZHJlc3MoSTJDX1R5cGVEZWYqIEkyQ3gsIHVpbnQ4X3QgQWRkcmVzcywgdWludDhfdCBJMkNfRGlyZWN0aW9uKTsKK3VpbnQxNl90IEkyQ19SZWFkUmVnaXN0ZXIoSTJDX1R5cGVEZWYqIEkyQ3gsIHVpbnQ4X3QgSTJDX1JlZ2lzdGVyKTsKK3ZvaWQgSTJDX1NvZnR3YXJlUmVzZXRDbWQoSTJDX1R5cGVEZWYqIEkyQ3gsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSk7Cit2b2lkIEkyQ19OQUNLUG9zaXRpb25Db25maWcoSTJDX1R5cGVEZWYqIEkyQ3gsIHVpbnQxNl90IEkyQ19OQUNLUG9zaXRpb24pOwordm9pZCBJMkNfU01CdXNBbGVydENvbmZpZyhJMkNfVHlwZURlZiogSTJDeCwgdWludDE2X3QgSTJDX1NNQnVzQWxlcnQpOwordm9pZCBJMkNfVHJhbnNtaXRQRUMoSTJDX1R5cGVEZWYqIEkyQ3gsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSk7Cit2b2lkIEkyQ19QRUNQb3NpdGlvbkNvbmZpZyhJMkNfVHlwZURlZiogSTJDeCwgdWludDE2X3QgSTJDX1BFQ1Bvc2l0aW9uKTsKK3ZvaWQgSTJDX0NhbGN1bGF0ZVBFQyhJMkNfVHlwZURlZiogSTJDeCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKTsKK3VpbnQ4X3QgSTJDX0dldFBFQyhJMkNfVHlwZURlZiogSTJDeCk7Cit2b2lkIEkyQ19BUlBDbWQoSTJDX1R5cGVEZWYqIEkyQ3gsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSk7Cit2b2lkIEkyQ19TdHJldGNoQ2xvY2tDbWQoSTJDX1R5cGVEZWYqIEkyQ3gsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSk7Cit2b2lkIEkyQ19GYXN0TW9kZUR1dHlDeWNsZUNvbmZpZyhJMkNfVHlwZURlZiogSTJDeCwgdWludDE2X3QgSTJDX0R1dHlDeWNsZSk7CisKKy8qKgorICogQGJyaWVmCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgIEkyQyBTdGF0ZSBNb25pdG9yaW5nIEZ1bmN0aW9ucworICogICAgICAgICAgICAgICAgICAgICAgIAorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogICAKKyAqIFRoaXMgSTJDIGRyaXZlciBwcm92aWRlcyB0aHJlZSBkaWZmZXJlbnQgd2F5cyBmb3IgSTJDIHN0YXRlIG1vbml0b3JpbmcKKyAqICBkZXBlbmRpbmcgb24gdGhlIGFwcGxpY2F0aW9uIHJlcXVpcmVtZW50cyBhbmQgY29uc3RyYWludHM6CisgKiAgICAgICAgCisgKiAgCisgKiAxKSBCYXNpYyBzdGF0ZSBtb25pdG9yaW5nOgorICogICAgVXNpbmcgSTJDX0NoZWNrRXZlbnQoKSBmdW5jdGlvbjoKKyAqICAgIEl0IGNvbXBhcmVzIHRoZSBzdGF0dXMgcmVnaXN0ZXJzIChTUjEgYW5kIFNSMikgY29udGVudCB0byBhIGdpdmVuIGV2ZW50CisgKiAgICAoY2FuIGJlIHRoZSBjb21iaW5hdGlvbiBvZiBvbmUgb3IgbW9yZSBmbGFncykuCisgKiAgICBJdCByZXR1cm5zIFNVQ0NFU1MgaWYgdGhlIGN1cnJlbnQgc3RhdHVzIGluY2x1ZGVzIHRoZSBnaXZlbiBmbGFncyAKKyAqICAgIGFuZCByZXR1cm5zIEVSUk9SIGlmIG9uZSBvciBtb3JlIGZsYWdzIGFyZSBtaXNzaW5nIGluIHRoZSBjdXJyZW50IHN0YXR1cy4KKyAqICAgIC0gV2hlbiB0byB1c2U6CisgKiAgICAgIC0gVGhpcyBmdW5jdGlvbiBpcyBzdWl0YWJsZSBmb3IgbW9zdCBhcHBsaWNhdGlvbnMgYXMgd2VsbCBhcyBmb3Igc3RhcnR1cCAKKyAqICAgICAgYWN0aXZpdHkgc2luY2UgdGhlIGV2ZW50cyBhcmUgZnVsbHkgZGVzY3JpYmVkIGluIHRoZSBwcm9kdWN0IHJlZmVyZW5jZSBtYW51YWwgCisgKiAgICAgIChSTTAwMDgpLgorICogICAgICAtIEl0IGlzIGFsc28gc3VpdGFibGUgZm9yIHVzZXJzIHdobyBuZWVkIHRvIGRlZmluZSB0aGVpciBvd24gZXZlbnRzLgorICogICAgLSBMaW1pdGF0aW9uczoKKyAqICAgICAgLSBJZiBhbiBlcnJvciBvY2N1cnMgKGllLiBlcnJvciBmbGFncyBhcmUgc2V0IGJlc2lkZXMgdG8gdGhlIG1vbml0b3JlZCBmbGFncyksCisgKiAgICAgICAgdGhlIEkyQ19DaGVja0V2ZW50KCkgZnVuY3Rpb24gbWF5IHJldHVybiBTVUNDRVNTIGRlc3BpdGUgdGhlIGNvbW11bmljYXRpb24KKyAqICAgICAgICBob2xkIG9yIGNvcnJ1cHRlZCByZWFsIHN0YXRlLiAKKyAqICAgICAgICBJbiB0aGlzIGNhc2UsIGl0IGlzIGFkdmlzZWQgdG8gdXNlIGVycm9yIGludGVycnVwdHMgdG8gbW9uaXRvciB0aGUgZXJyb3IKKyAqICAgICAgICBldmVudHMgYW5kIGhhbmRsZSB0aGVtIGluIHRoZSBpbnRlcnJ1cHQgSVJRIGhhbmRsZXIuCisgKiAgICAgICAgCisgKiAgICAgICAgQG5vdGUgCisgKiAgICAgICAgRm9yIGVycm9yIG1hbmFnZW1lbnQsIGl0IGlzIGFkdmlzZWQgdG8gdXNlIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zOgorICogICAgICAgICAgLSBJMkNfSVRDb25maWcoKSB0byBjb25maWd1cmUgYW5kIGVuYWJsZSB0aGUgZXJyb3IgaW50ZXJydXB0cyAoSTJDX0lUX0VSUikuCisgKiAgICAgICAgICAtIEkyQ3hfRVJfSVJRSGFuZGxlcigpIHdoaWNoIGlzIGNhbGxlZCB3aGVuIHRoZSBlcnJvciBpbnRlcnJ1cHQgb2NjdXJzLgorICogICAgICAgICAgICBXaGVyZSB4IGlzIHRoZSBwZXJpcGhlcmFsIGluc3RhbmNlIChJMkMxLCBJMkMyIC4uLikKKyAqICAgICAgICAgIC0gSTJDX0dldEZsYWdTdGF0dXMoKSBvciBJMkNfR2V0SVRTdGF0dXMoKSB0byBiZSBjYWxsZWQgaW50byBJMkN4X0VSX0lSUUhhbmRsZXIoKQorICogICAgICAgICAgICBpbiBvcmRlciB0byBkZXRlcm1pbmUgd2hpY2ggZXJyb3Igb2NjdXJyZWQuCisgKiAgICAgICAgICAtIEkyQ19DbGVhckZsYWcoKSBvciBJMkNfQ2xlYXJJVFBlbmRpbmdCaXQoKSBhbmQvb3IgSTJDX1NvZnR3YXJlUmVzZXRDbWQoKQorICogICAgICAgICAgICBhbmQvb3IgSTJDX0dlbmVyYXRlU3RvcCgpIGluIG9yZGVyIHRvIGNsZWFyIHRoZSBlcnJvciBmbGFnIGFuZCBzb3VyY2UsCisgKiAgICAgICAgICAgIGFuZCByZXR1cm4gdG8gY29ycmVjdCBjb21tdW5pY2F0aW9uIHN0YXR1cy4KKyAqICAgICAgICAgICAgCisgKgorICogIDIpIEFkdmFuY2VkIHN0YXRlIG1vbml0b3Jpbmc6CisgKiAgICAgVXNpbmcgdGhlIGZ1bmN0aW9uIEkyQ19HZXRMYXN0RXZlbnQoKSB3aGljaCByZXR1cm5zIHRoZSBpbWFnZSBvZiBib3RoIHN0YXR1cyAKKyAqICAgICByZWdpc3RlcnMgaW4gYSBzaW5nbGUgd29yZCAodWludDMyX3QpIChTdGF0dXMgUmVnaXN0ZXIgMiB2YWx1ZSBpcyBzaGlmdGVkIGxlZnQgCisgKiAgICAgYnkgMTYgYml0cyBhbmQgY29uY2F0ZW5hdGVkIHRvIFN0YXR1cyBSZWdpc3RlciAxKS4KKyAqICAgICAtIFdoZW4gdG8gdXNlOgorICogICAgICAgLSBUaGlzIGZ1bmN0aW9uIGlzIHN1aXRhYmxlIGZvciB0aGUgc2FtZSBhcHBsaWNhdGlvbnMgYWJvdmUgYnV0IGl0IGFsbG93cyB0bworICogICAgICAgICBvdmVyY29tZSB0aGUgbGltaXRhdGlvbnMgb2YgSTJDX0dldEZsYWdTdGF0dXMoKSBmdW5jdGlvbiAoc2VlIGJlbG93KS4KKyAqICAgICAgICAgVGhlIHJldHVybmVkIHZhbHVlIGNvdWxkIGJlIGNvbXBhcmVkIHRvIGV2ZW50cyBhbHJlYWR5IGRlZmluZWQgaW4gdGhlIAorICogICAgICAgICBsaWJyYXJ5IChzdG0zMmYxMHhfaTJjLmgpIG9yIHRvIGN1c3RvbSB2YWx1ZXMgZGVmaW5lZCBieSB1c2VyLgorICogICAgICAgLSBUaGlzIGZ1bmN0aW9uIGlzIHN1aXRhYmxlIHdoZW4gbXVsdGlwbGUgZmxhZ3MgYXJlIG1vbml0b3JlZCBhdCB0aGUgc2FtZSB0aW1lLgorICogICAgICAgLSBBdCB0aGUgb3Bwb3NpdGUgb2YgSTJDX0NoZWNrRXZlbnQoKSBmdW5jdGlvbiwgdGhpcyBmdW5jdGlvbiBhbGxvd3MgdXNlciB0bworICogICAgICAgICBjaG9vc2Ugd2hlbiBhbiBldmVudCBpcyBhY2NlcHRlZCAod2hlbiBhbGwgZXZlbnRzIGZsYWdzIGFyZSBzZXQgYW5kIG5vIAorICogICAgICAgICBvdGhlciBmbGFncyBhcmUgc2V0IG9yIGp1c3Qgd2hlbiB0aGUgbmVlZGVkIGZsYWdzIGFyZSBzZXQgbGlrZSAKKyAqICAgICAgICAgSTJDX0NoZWNrRXZlbnQoKSBmdW5jdGlvbikuCisgKiAgICAgLSBMaW1pdGF0aW9uczoKKyAqICAgICAgIC0gVXNlciBtYXkgbmVlZCB0byBkZWZpbmUgaGlzIG93biBldmVudHMuCisgKiAgICAgICAtIFNhbWUgcmVtYXJrIGNvbmNlcm5pbmcgdGhlIGVycm9yIG1hbmFnZW1lbnQgaXMgYXBwbGljYWJsZSBmb3IgdGhpcyAKKyAqICAgICAgICAgZnVuY3Rpb24gaWYgdXNlciBkZWNpZGVzIHRvIGNoZWNrIG9ubHkgcmVndWxhciBjb21tdW5pY2F0aW9uIGZsYWdzIChhbmQgCisgKiAgICAgICAgIGlnbm9yZXMgZXJyb3IgZmxhZ3MpLgorICogICAgIAorICoKKyAqICAzKSBGbGFnLWJhc2VkIHN0YXRlIG1vbml0b3Jpbmc6CisgKiAgICAgVXNpbmcgdGhlIGZ1bmN0aW9uIEkyQ19HZXRGbGFnU3RhdHVzKCkgd2hpY2ggc2ltcGx5IHJldHVybnMgdGhlIHN0YXR1cyBvZiAKKyAqICAgICBvbmUgc2luZ2xlIGZsYWcgKGllLiBJMkNfRkxBR19SWE5FIC4uLikuIAorICogICAgIC0gV2hlbiB0byB1c2U6CisgKiAgICAgICAgLSBUaGlzIGZ1bmN0aW9uIGNvdWxkIGJlIHVzZWQgZm9yIHNwZWNpZmljIGFwcGxpY2F0aW9ucyBvciBpbiBkZWJ1ZyBwaGFzZS4KKyAqICAgICAgICAtIEl0IGlzIHN1aXRhYmxlIHdoZW4gb25seSBvbmUgZmxhZyBjaGVja2luZyBpcyBuZWVkZWQgKG1vc3QgSTJDIGV2ZW50cyAKKyAqICAgICAgICAgIGFyZSBtb25pdG9yZWQgdGhyb3VnaCBtdWx0aXBsZSBmbGFncykuCisgKiAgICAgLSBMaW1pdGF0aW9uczogCisgKiAgICAgICAgLSBXaGVuIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiwgdGhlIFN0YXR1cyByZWdpc3RlciBpcyBhY2Nlc3NlZC4gU29tZSBmbGFncyBhcmUKKyAqICAgICAgICAgIGNsZWFyZWQgd2hlbiB0aGUgc3RhdHVzIHJlZ2lzdGVyIGlzIGFjY2Vzc2VkLiBTbyBjaGVja2luZyB0aGUgc3RhdHVzCisgKiAgICAgICAgICBvZiBvbmUgRmxhZywgbWF5IGNsZWFyIG90aGVyIG9uZXMuCisgKiAgICAgICAgLSBGdW5jdGlvbiBtYXkgbmVlZCB0byBiZSBjYWxsZWQgdHdpY2Ugb3IgbW9yZSBpbiBvcmRlciB0byBtb25pdG9yIG9uZSAKKyAqICAgICAgICAgIHNpbmdsZSBldmVudC4KKyAqICAgICAgICAgICAgCisgKi8KKworLyoqCisgKiAKKyAqICAxKSBCYXNpYyBzdGF0ZSBtb25pdG9yaW5nCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitFcnJvclN0YXR1cyBJMkNfQ2hlY2tFdmVudChJMkNfVHlwZURlZiogSTJDeCwgdWludDMyX3QgSTJDX0VWRU5UKTsKKy8qKgorICogCisgKiAgMikgQWR2YW5jZWQgc3RhdGUgbW9uaXRvcmluZworICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLwordWludDMyX3QgSTJDX0dldExhc3RFdmVudChJMkNfVHlwZURlZiogSTJDeCk7CisvKioKKyAqIAorICogIDMpIEZsYWctYmFzZWQgc3RhdGUgbW9uaXRvcmluZworICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworRmxhZ1N0YXR1cyBJMkNfR2V0RmxhZ1N0YXR1cyhJMkNfVHlwZURlZiogSTJDeCwgdWludDMyX3QgSTJDX0ZMQUcpOworLyoqCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworCit2b2lkIEkyQ19DbGVhckZsYWcoSTJDX1R5cGVEZWYqIEkyQ3gsIHVpbnQzMl90IEkyQ19GTEFHKTsKK0lUU3RhdHVzIEkyQ19HZXRJVFN0YXR1cyhJMkNfVHlwZURlZiogSTJDeCwgdWludDMyX3QgSTJDX0lUKTsKK3ZvaWQgSTJDX0NsZWFySVRQZW5kaW5nQml0KEkyQ19UeXBlRGVmKiBJMkN4LCB1aW50MzJfdCBJMkNfSVQpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLypfX1NUTTMyRjEweF9JMkNfSCAqLworLyoqCisgICogQH0KKyAgKi8gCisKKy8qKgorICAqIEB9CisgICovIAorCisvKioKKyAgKiBAfQorICAqLyAKKworLyoqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCAyMDExIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL3N0X2Z3X2xpYi9pbmMvc3RtMzJmMTB4X2l3ZGcuaCBiL3N0X2Z3X2xpYi9pbmMvc3RtMzJmMTB4X2l3ZGcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNWIwYmI1Ci0tLSAvZGV2L251bGwKKysrIGIvc3RfZndfbGliL2luYy9zdG0zMmYxMHhfaXdkZy5oCkBAIC0wLDAgKzEsMTQwIEBACisvKioKKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICogQGZpbGUgICAgc3RtMzJmMTB4X2l3ZGcuaAorICAqIEBhdXRob3IgIE1DRCBBcHBsaWNhdGlvbiBUZWFtCisgICogQHZlcnNpb24gVjMuNS4wCisgICogQGRhdGUgICAgMTEtTWFyY2gtMjAxMQorICAqIEBicmllZiAgIFRoaXMgZmlsZSBjb250YWlucyBhbGwgdGhlIGZ1bmN0aW9ucyBwcm90b3R5cGVzIGZvciB0aGUgSVdERyAKKyAgKiAgICAgICAgICBmaXJtd2FyZSBsaWJyYXJ5LgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKiBAYXR0ZW50aW9uCisgICoKKyAgKiBUSEUgUFJFU0VOVCBGSVJNV0FSRSBXSElDSCBJUyBGT1IgR1VJREFOQ0UgT05MWSBBSU1TIEFUIFBST1ZJRElORyBDVVNUT01FUlMKKyAgKiBXSVRIIENPRElORyBJTkZPUk1BVElPTiBSRUdBUkRJTkcgVEhFSVIgUFJPRFVDVFMgSU4gT1JERVIgRk9SIFRIRU0gVE8gU0FWRQorICAqIFRJTUUuIEFTIEEgUkVTVUxULCBTVE1JQ1JPRUxFQ1RST05JQ1MgU0hBTEwgTk9UIEJFIEhFTEQgTElBQkxFIEZPUiBBTlkKKyAgKiBESVJFQ1QsIElORElSRUNUIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBXSVRIIFJFU1BFQ1QgVE8gQU5ZIENMQUlNUyBBUklTSU5HCisgICogRlJPTSBUSEUgQ09OVEVOVCBPRiBTVUNIIEZJUk1XQVJFIEFORC9PUiBUSEUgVVNFIE1BREUgQlkgQ1VTVE9NRVJTIE9GIFRIRQorICAqIENPRElORyBJTkZPUk1BVElPTiBDT05UQUlORUQgSEVSRUlOIElOIENPTk5FQ1RJT04gV0lUSCBUSEVJUiBQUk9EVUNUUy4KKyAgKgorICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDT1BZUklHSFQgMjAxMSBTVE1pY3JvZWxlY3Ryb25pY3M8L2NlbnRlcj48L2gyPgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKi8KKworLyogRGVmaW5lIHRvIHByZXZlbnQgcmVjdXJzaXZlIGluY2x1c2lvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyNpZm5kZWYgX19TVE0zMkYxMHhfSVdER19ICisjZGVmaW5lIF9fU1RNMzJGMTB4X0lXREdfSAorCisjaWZkZWYgX19jcGx1c3BsdXMKKyBleHRlcm4gIkMiIHsKKyNlbmRpZgorCisvKiBJbmNsdWRlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworI2luY2x1ZGUgInN0bTMyZjEweC5oIgorCisvKiogQGFkZHRvZ3JvdXAgU1RNMzJGMTB4X1N0ZFBlcmlwaF9Ecml2ZXIKKyAgKiBAeworICAqLworCisvKiogQGFkZHRvZ3JvdXAgSVdERworICAqIEB7CisgICovCisKKy8qKiBAZGVmZ3JvdXAgSVdER19FeHBvcnRlZF9UeXBlcworICAqIEB7CisgICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgSVdER19FeHBvcnRlZF9Db25zdGFudHMKKyAgKiBAeworICAqLworCisvKiogQGRlZmdyb3VwIElXREdfV3JpdGVBY2Nlc3MKKyAgKiBAeworICAqLworCisjZGVmaW5lIElXREdfV3JpdGVBY2Nlc3NfRW5hYmxlICAgICAoKHVpbnQxNl90KTB4NTU1NSkKKyNkZWZpbmUgSVdER19Xcml0ZUFjY2Vzc19EaXNhYmxlICAgICgodWludDE2X3QpMHgwMDAwKQorI2RlZmluZSBJU19JV0RHX1dSSVRFX0FDQ0VTUyhBQ0NFU1MpICgoKEFDQ0VTUykgPT0gSVdER19Xcml0ZUFjY2Vzc19FbmFibGUpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChBQ0NFU1MpID09IElXREdfV3JpdGVBY2Nlc3NfRGlzYWJsZSkpCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIElXREdfcHJlc2NhbGVyIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgSVdER19QcmVzY2FsZXJfNCAgICAgICAgICAgICgodWludDhfdCkweDAwKQorI2RlZmluZSBJV0RHX1ByZXNjYWxlcl84ICAgICAgICAgICAgKCh1aW50OF90KTB4MDEpCisjZGVmaW5lIElXREdfUHJlc2NhbGVyXzE2ICAgICAgICAgICAoKHVpbnQ4X3QpMHgwMikKKyNkZWZpbmUgSVdER19QcmVzY2FsZXJfMzIgICAgICAgICAgICgodWludDhfdCkweDAzKQorI2RlZmluZSBJV0RHX1ByZXNjYWxlcl82NCAgICAgICAgICAgKCh1aW50OF90KTB4MDQpCisjZGVmaW5lIElXREdfUHJlc2NhbGVyXzEyOCAgICAgICAgICAoKHVpbnQ4X3QpMHgwNSkKKyNkZWZpbmUgSVdER19QcmVzY2FsZXJfMjU2ICAgICAgICAgICgodWludDhfdCkweDA2KQorI2RlZmluZSBJU19JV0RHX1BSRVNDQUxFUihQUkVTQ0FMRVIpICgoKFBSRVNDQUxFUikgPT0gSVdER19QcmVzY2FsZXJfNCkgIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQUkVTQ0FMRVIpID09IElXREdfUHJlc2NhbGVyXzgpICB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUFJFU0NBTEVSKSA9PSBJV0RHX1ByZXNjYWxlcl8xNikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBSRVNDQUxFUikgPT0gSVdER19QcmVzY2FsZXJfMzIpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQUkVTQ0FMRVIpID09IElXREdfUHJlc2NhbGVyXzY0KSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUFJFU0NBTEVSKSA9PSBJV0RHX1ByZXNjYWxlcl8xMjgpfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBSRVNDQUxFUikgPT0gSVdER19QcmVzY2FsZXJfMjU2KSkKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgSVdER19GbGFnIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgSVdER19GTEFHX1BWVSAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAxKQorI2RlZmluZSBJV0RHX0ZMQUdfUlZVICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDIpCisjZGVmaW5lIElTX0lXREdfRkxBRyhGTEFHKSAoKChGTEFHKSA9PSBJV0RHX0ZMQUdfUFZVKSB8fCAoKEZMQUcpID09IElXREdfRkxBR19SVlUpKQorI2RlZmluZSBJU19JV0RHX1JFTE9BRChSRUxPQUQpICgoUkVMT0FEKSA8PSAweEZGRikKKy8qKgorICAqIEB9CisgICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgSVdER19FeHBvcnRlZF9NYWNyb3MKKyAgKiBAeworICAqLworCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIElXREdfRXhwb3J0ZWRfRnVuY3Rpb25zCisgICogQHsKKyAgKi8KKwordm9pZCBJV0RHX1dyaXRlQWNjZXNzQ21kKHVpbnQxNl90IElXREdfV3JpdGVBY2Nlc3MpOwordm9pZCBJV0RHX1NldFByZXNjYWxlcih1aW50OF90IElXREdfUHJlc2NhbGVyKTsKK3ZvaWQgSVdER19TZXRSZWxvYWQodWludDE2X3QgUmVsb2FkKTsKK3ZvaWQgSVdER19SZWxvYWRDb3VudGVyKHZvaWQpOwordm9pZCBJV0RHX0VuYWJsZSh2b2lkKTsKK0ZsYWdTdGF0dXMgSVdER19HZXRGbGFnU3RhdHVzKHVpbnQxNl90IElXREdfRkxBRyk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvKiBfX1NUTTMyRjEweF9JV0RHX0ggKi8KKy8qKgorICAqIEB9CisgICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgMjAxMSBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9zdF9md19saWIvaW5jL3N0bTMyZjEweF9wd3IuaCBiL3N0X2Z3X2xpYi9pbmMvc3RtMzJmMTB4X3B3ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjMDI1ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9zdF9md19saWIvaW5jL3N0bTMyZjEweF9wd3IuaApAQCAtMCwwICsxLDE1NiBAQAorLyoqCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqIEBmaWxlICAgIHN0bTMyZjEweF9wd3IuaAorICAqIEBhdXRob3IgIE1DRCBBcHBsaWNhdGlvbiBUZWFtCisgICogQHZlcnNpb24gVjMuNS4wCisgICogQGRhdGUgICAgMTEtTWFyY2gtMjAxMQorICAqIEBicmllZiAgIFRoaXMgZmlsZSBjb250YWlucyBhbGwgdGhlIGZ1bmN0aW9ucyBwcm90b3R5cGVzIGZvciB0aGUgUFdSIGZpcm13YXJlIAorICAqICAgICAgICAgIGxpYnJhcnkuCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqIEBhdHRlbnRpb24KKyAgKgorICAqIFRIRSBQUkVTRU5UIEZJUk1XQVJFIFdISUNIIElTIEZPUiBHVUlEQU5DRSBPTkxZIEFJTVMgQVQgUFJPVklESU5HIENVU1RPTUVSUworICAqIFdJVEggQ09ESU5HIElORk9STUFUSU9OIFJFR0FSRElORyBUSEVJUiBQUk9EVUNUUyBJTiBPUkRFUiBGT1IgVEhFTSBUTyBTQVZFCisgICogVElNRS4gQVMgQSBSRVNVTFQsIFNUTUlDUk9FTEVDVFJPTklDUyBTSEFMTCBOT1QgQkUgSEVMRCBMSUFCTEUgRk9SIEFOWQorICAqIERJUkVDVCwgSU5ESVJFQ1QgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIFdJVEggUkVTUEVDVCBUTyBBTlkgQ0xBSU1TIEFSSVNJTkcKKyAgKiBGUk9NIFRIRSBDT05URU5UIE9GIFNVQ0ggRklSTVdBUkUgQU5EL09SIFRIRSBVU0UgTUFERSBCWSBDVVNUT01FUlMgT0YgVEhFCisgICogQ09ESU5HIElORk9STUFUSU9OIENPTlRBSU5FRCBIRVJFSU4gSU4gQ09OTkVDVElPTiBXSVRIIFRIRUlSIFBST0RVQ1RTLgorICAqCisgICogPGgyPjxjZW50ZXI+JmNvcHk7IENPUFlSSUdIVCAyMDExIFNUTWljcm9lbGVjdHJvbmljczwvY2VudGVyPjwvaDI+CisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqLworCisvKiBEZWZpbmUgdG8gcHJldmVudCByZWN1cnNpdmUgaW5jbHVzaW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworI2lmbmRlZiBfX1NUTTMyRjEweF9QV1JfSAorI2RlZmluZSBfX1NUTTMyRjEweF9QV1JfSAorCisjaWZkZWYgX19jcGx1c3BsdXMKKyBleHRlcm4gIkMiIHsKKyNlbmRpZgorCisvKiBJbmNsdWRlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworI2luY2x1ZGUgInN0bTMyZjEweC5oIgorCisvKiogQGFkZHRvZ3JvdXAgU1RNMzJGMTB4X1N0ZFBlcmlwaF9Ecml2ZXIKKyAgKiBAeworICAqLworCisvKiogQGFkZHRvZ3JvdXAgUFdSCisgICogQHsKKyAgKi8gCisKKy8qKiBAZGVmZ3JvdXAgUFdSX0V4cG9ydGVkX1R5cGVzCisgICogQHsKKyAgKi8gCisKKy8qKgorICAqIEB9CisgICovIAorCisvKiogQGRlZmdyb3VwIFBXUl9FeHBvcnRlZF9Db25zdGFudHMKKyAgKiBAeworICAqLyAKKworLyoqIEBkZWZncm91cCBQVkRfZGV0ZWN0aW9uX2xldmVsIAorICAqIEB7CisgICovIAorCisjZGVmaW5lIFBXUl9QVkRMZXZlbF8yVjIgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAwKQorI2RlZmluZSBQV1JfUFZETGV2ZWxfMlYzICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAyMCkKKyNkZWZpbmUgUFdSX1BWRExldmVsXzJWNCAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwNDApCisjZGVmaW5lIFBXUl9QVkRMZXZlbF8yVjUgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDYwKQorI2RlZmluZSBQV1JfUFZETGV2ZWxfMlY2ICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA4MCkKKyNkZWZpbmUgUFdSX1BWRExldmVsXzJWNyAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwQTApCisjZGVmaW5lIFBXUl9QVkRMZXZlbF8yVjggICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMEMwKQorI2RlZmluZSBQV1JfUFZETGV2ZWxfMlY5ICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDBFMCkKKyNkZWZpbmUgSVNfUFdSX1BWRF9MRVZFTChMRVZFTCkgKCgoTEVWRUwpID09IFBXUl9QVkRMZXZlbF8yVjIpIHx8ICgoTEVWRUwpID09IFBXUl9QVkRMZXZlbF8yVjMpfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChMRVZFTCkgPT0gUFdSX1BWRExldmVsXzJWNCkgfHwgKChMRVZFTCkgPT0gUFdSX1BWRExldmVsXzJWNSl8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKExFVkVMKSA9PSBQV1JfUFZETGV2ZWxfMlY2KSB8fCAoKExFVkVMKSA9PSBQV1JfUFZETGV2ZWxfMlY3KXx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTEVWRUwpID09IFBXUl9QVkRMZXZlbF8yVjgpIHx8ICgoTEVWRUwpID09IFBXUl9QVkRMZXZlbF8yVjkpKQorLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBSZWd1bGF0b3Jfc3RhdGVfaXNfU1RPUF9tb2RlIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgUFdSX1JlZ3VsYXRvcl9PTiAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDApCisjZGVmaW5lIFBXUl9SZWd1bGF0b3JfTG93UG93ZXIgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxKQorI2RlZmluZSBJU19QV1JfUkVHVUxBVE9SKFJFR1VMQVRPUikgKCgoUkVHVUxBVE9SKSA9PSBQV1JfUmVndWxhdG9yX09OKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChSRUdVTEFUT1IpID09IFBXUl9SZWd1bGF0b3JfTG93UG93ZXIpKQorLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBTVE9QX21vZGVfZW50cnkgCisgICogQHsKKyAgKi8KKworI2RlZmluZSBQV1JfU1RPUEVudHJ5X1dGSSAgICAgICAgICgodWludDhfdCkweDAxKQorI2RlZmluZSBQV1JfU1RPUEVudHJ5X1dGRSAgICAgICAgICgodWludDhfdCkweDAyKQorI2RlZmluZSBJU19QV1JfU1RPUF9FTlRSWShFTlRSWSkgKCgoRU5UUlkpID09IFBXUl9TVE9QRW50cnlfV0ZJKSB8fCAoKEVOVFJZKSA9PSBQV1JfU1RPUEVudHJ5X1dGRSkpCisgCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIFBXUl9GbGFnIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgUFdSX0ZMQUdfV1UgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDEpCisjZGVmaW5lIFBXUl9GTEFHX1NCICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAyKQorI2RlZmluZSBQV1JfRkxBR19QVkRPICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNCkKKyNkZWZpbmUgSVNfUFdSX0dFVF9GTEFHKEZMQUcpICgoKEZMQUcpID09IFBXUl9GTEFHX1dVKSB8fCAoKEZMQUcpID09IFBXUl9GTEFHX1NCKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChGTEFHKSA9PSBQV1JfRkxBR19QVkRPKSkKKworI2RlZmluZSBJU19QV1JfQ0xFQVJfRkxBRyhGTEFHKSAoKChGTEFHKSA9PSBQV1JfRkxBR19XVSkgfHwgKChGTEFHKSA9PSBQV1JfRkxBR19TQikpCisvKioKKyAgKiBAfQorICAqLworCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIFBXUl9FeHBvcnRlZF9NYWNyb3MKKyAgKiBAeworICAqLworCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIFBXUl9FeHBvcnRlZF9GdW5jdGlvbnMKKyAgKiBAeworICAqLworCit2b2lkIFBXUl9EZUluaXQodm9pZCk7Cit2b2lkIFBXUl9CYWNrdXBBY2Nlc3NDbWQoRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKTsKK3ZvaWQgUFdSX1BWRENtZChGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpOwordm9pZCBQV1JfUFZETGV2ZWxDb25maWcodWludDMyX3QgUFdSX1BWRExldmVsKTsKK3ZvaWQgUFdSX1dha2VVcFBpbkNtZChGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpOwordm9pZCBQV1JfRW50ZXJTVE9QTW9kZSh1aW50MzJfdCBQV1JfUmVndWxhdG9yLCB1aW50OF90IFBXUl9TVE9QRW50cnkpOwordm9pZCBQV1JfRW50ZXJTVEFOREJZTW9kZSh2b2lkKTsKK0ZsYWdTdGF0dXMgUFdSX0dldEZsYWdTdGF0dXModWludDMyX3QgUFdSX0ZMQUcpOwordm9pZCBQV1JfQ2xlYXJGbGFnKHVpbnQzMl90IFBXUl9GTEFHKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8qIF9fU1RNMzJGMTB4X1BXUl9IICovCisvKioKKyAgKiBAfQorICAqLworCisvKioKKyAgKiBAfQorICAqLworCisvKioKKyAgKiBAfQorICAqLworCisvKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIDIwMTEgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvc3RfZndfbGliL2luYy9zdG0zMmYxMHhfcmNjLmggYi9zdF9md19saWIvaW5jL3N0bTMyZjEweF9yY2MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMTQ5YzM0Ci0tLSAvZGV2L251bGwKKysrIGIvc3RfZndfbGliL2luYy9zdG0zMmYxMHhfcmNjLmgKQEAgLTAsMCArMSw3MjcgQEAKKy8qKgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKiBAZmlsZSAgICBzdG0zMmYxMHhfcmNjLmgKKyAgKiBAYXV0aG9yICBNQ0QgQXBwbGljYXRpb24gVGVhbQorICAqIEB2ZXJzaW9uIFYzLjUuMAorICAqIEBkYXRlICAgIDExLU1hcmNoLTIwMTEKKyAgKiBAYnJpZWYgICBUaGlzIGZpbGUgY29udGFpbnMgYWxsIHRoZSBmdW5jdGlvbnMgcHJvdG90eXBlcyBmb3IgdGhlIFJDQyBmaXJtd2FyZSAKKyAgKiAgICAgICAgICBsaWJyYXJ5LgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKiBAYXR0ZW50aW9uCisgICoKKyAgKiBUSEUgUFJFU0VOVCBGSVJNV0FSRSBXSElDSCBJUyBGT1IgR1VJREFOQ0UgT05MWSBBSU1TIEFUIFBST1ZJRElORyBDVVNUT01FUlMKKyAgKiBXSVRIIENPRElORyBJTkZPUk1BVElPTiBSRUdBUkRJTkcgVEhFSVIgUFJPRFVDVFMgSU4gT1JERVIgRk9SIFRIRU0gVE8gU0FWRQorICAqIFRJTUUuIEFTIEEgUkVTVUxULCBTVE1JQ1JPRUxFQ1RST05JQ1MgU0hBTEwgTk9UIEJFIEhFTEQgTElBQkxFIEZPUiBBTlkKKyAgKiBESVJFQ1QsIElORElSRUNUIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBXSVRIIFJFU1BFQ1QgVE8gQU5ZIENMQUlNUyBBUklTSU5HCisgICogRlJPTSBUSEUgQ09OVEVOVCBPRiBTVUNIIEZJUk1XQVJFIEFORC9PUiBUSEUgVVNFIE1BREUgQlkgQ1VTVE9NRVJTIE9GIFRIRQorICAqIENPRElORyBJTkZPUk1BVElPTiBDT05UQUlORUQgSEVSRUlOIElOIENPTk5FQ1RJT04gV0lUSCBUSEVJUiBQUk9EVUNUUy4KKyAgKgorICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDT1BZUklHSFQgMjAxMSBTVE1pY3JvZWxlY3Ryb25pY3M8L2NlbnRlcj48L2gyPgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKi8KKworLyogRGVmaW5lIHRvIHByZXZlbnQgcmVjdXJzaXZlIGluY2x1c2lvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyNpZm5kZWYgX19TVE0zMkYxMHhfUkNDX0gKKyNkZWZpbmUgX19TVE0zMkYxMHhfUkNDX0gKKworI2lmZGVmIF9fY3BsdXNwbHVzCisgZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLyogSW5jbHVkZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyNpbmNsdWRlICJzdG0zMmYxMHguaCIKKworLyoqIEBhZGR0b2dyb3VwIFNUTTMyRjEweF9TdGRQZXJpcGhfRHJpdmVyCisgICogQHsKKyAgKi8KKworLyoqIEBhZGR0b2dyb3VwIFJDQworICAqIEB7CisgICovCisKKy8qKiBAZGVmZ3JvdXAgUkNDX0V4cG9ydGVkX1R5cGVzCisgICogQHsKKyAgKi8KKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgdWludDMyX3QgU1lTQ0xLX0ZyZXF1ZW5jeTsgIC8qITwgcmV0dXJucyBTWVNDTEsgY2xvY2sgZnJlcXVlbmN5IGV4cHJlc3NlZCBpbiBIeiAqLworICB1aW50MzJfdCBIQ0xLX0ZyZXF1ZW5jeTsgICAgLyohPCByZXR1cm5zIEhDTEsgY2xvY2sgZnJlcXVlbmN5IGV4cHJlc3NlZCBpbiBIeiAqLworICB1aW50MzJfdCBQQ0xLMV9GcmVxdWVuY3k7ICAgLyohPCByZXR1cm5zIFBDTEsxIGNsb2NrIGZyZXF1ZW5jeSBleHByZXNzZWQgaW4gSHogKi8KKyAgdWludDMyX3QgUENMSzJfRnJlcXVlbmN5OyAgIC8qITwgcmV0dXJucyBQQ0xLMiBjbG9jayBmcmVxdWVuY3kgZXhwcmVzc2VkIGluIEh6ICovCisgIHVpbnQzMl90IEFEQ0NMS19GcmVxdWVuY3k7ICAvKiE8IHJldHVybnMgQURDQ0xLIGNsb2NrIGZyZXF1ZW5jeSBleHByZXNzZWQgaW4gSHogKi8KK31SQ0NfQ2xvY2tzVHlwZURlZjsKKworLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBSQ0NfRXhwb3J0ZWRfQ29uc3RhbnRzCisgICogQHsKKyAgKi8KKworLyoqIEBkZWZncm91cCBIU0VfY29uZmlndXJhdGlvbiAKKyAgKiBAeworICAqLworCisjZGVmaW5lIFJDQ19IU0VfT0ZGICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMCkKKyNkZWZpbmUgUkNDX0hTRV9PTiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDEwMDAwKQorI2RlZmluZSBSQ0NfSFNFX0J5cGFzcyAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwNDAwMDApCisjZGVmaW5lIElTX1JDQ19IU0UoSFNFKSAoKChIU0UpID09IFJDQ19IU0VfT0ZGKSB8fCAoKEhTRSkgPT0gUkNDX0hTRV9PTikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICgoSFNFKSA9PSBSQ0NfSFNFX0J5cGFzcykpCisKKy8qKgorICAqIEB9CisgICovIAorCisvKiogQGRlZmdyb3VwIFBMTF9lbnRyeV9jbG9ja19zb3VyY2UgCisgICogQHsKKyAgKi8KKworI2RlZmluZSBSQ0NfUExMU291cmNlX0hTSV9EaXYyICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDApCisKKyNpZiAhZGVmaW5lZCAoU1RNMzJGMTBYX0xEX1ZMKSAmJiAhZGVmaW5lZCAoU1RNMzJGMTBYX01EX1ZMKSAmJiAhZGVmaW5lZCAoU1RNMzJGMTBYX0hEX1ZMKSAmJiAhZGVmaW5lZCAoU1RNMzJGMTBYX0NMKQorICNkZWZpbmUgUkNDX1BMTFNvdXJjZV9IU0VfRGl2MSAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDEwMDAwKQorICNkZWZpbmUgUkNDX1BMTFNvdXJjZV9IU0VfRGl2MiAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDMwMDAwKQorICNkZWZpbmUgSVNfUkNDX1BMTF9TT1VSQ0UoU09VUkNFKSAoKChTT1VSQ0UpID09IFJDQ19QTExTb3VyY2VfSFNJX0RpdjIpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChTT1VSQ0UpID09IFJDQ19QTExTb3VyY2VfSFNFX0RpdjEpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChTT1VSQ0UpID09IFJDQ19QTExTb3VyY2VfSFNFX0RpdjIpKQorI2Vsc2UKKyAjZGVmaW5lIFJDQ19QTExTb3VyY2VfUFJFRElWMSAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAxMDAwMCkKKyAjZGVmaW5lIElTX1JDQ19QTExfU09VUkNFKFNPVVJDRSkgKCgoU09VUkNFKSA9PSBSQ0NfUExMU291cmNlX0hTSV9EaXYyKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoU09VUkNFKSA9PSBSQ0NfUExMU291cmNlX1BSRURJVjEpKQorI2VuZGlmIC8qIFNUTTMyRjEwWF9DTCAqLyAKKworLyoqCisgICogQH0KKyAgKi8gCisKKy8qKiBAZGVmZ3JvdXAgUExMX211bHRpcGxpY2F0aW9uX2ZhY3RvciAKKyAgKiBAeworICAqLworI2lmbmRlZiBTVE0zMkYxMFhfQ0wKKyAjZGVmaW5lIFJDQ19QTExNdWxfMiAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAwKQorICNkZWZpbmUgUkNDX1BMTE11bF8zICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwNDAwMDApCisgI2RlZmluZSBSQ0NfUExMTXVsXzQgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA4MDAwMCkKKyAjZGVmaW5lIFJDQ19QTExNdWxfNSAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMEMwMDAwKQorICNkZWZpbmUgUkNDX1BMTE11bF82ICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAxMDAwMDApCisgI2RlZmluZSBSQ0NfUExMTXVsXzcgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDE0MDAwMCkKKyAjZGVmaW5lIFJDQ19QTExNdWxfOCAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMTgwMDAwKQorICNkZWZpbmUgUkNDX1BMTE11bF85ICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAxQzAwMDApCisgI2RlZmluZSBSQ0NfUExMTXVsXzEwICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDIwMDAwMCkKKyAjZGVmaW5lIFJDQ19QTExNdWxfMTEgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMjQwMDAwKQorICNkZWZpbmUgUkNDX1BMTE11bF8xMiAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAyODAwMDApCisgI2RlZmluZSBSQ0NfUExMTXVsXzEzICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDJDMDAwMCkKKyAjZGVmaW5lIFJDQ19QTExNdWxfMTQgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMzAwMDAwKQorICNkZWZpbmUgUkNDX1BMTE11bF8xNSAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAzNDAwMDApCisgI2RlZmluZSBSQ0NfUExMTXVsXzE2ICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDM4MDAwMCkKKyAjZGVmaW5lIElTX1JDQ19QTExfTVVMKE1VTCkgKCgoTVVMKSA9PSBSQ0NfUExMTXVsXzIpIHx8ICgoTVVMKSA9PSBSQ0NfUExMTXVsXzMpICAgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChNVUwpID09IFJDQ19QTExNdWxfNCkgfHwgKChNVUwpID09IFJDQ19QTExNdWxfNSkgICB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE1VTCkgPT0gUkNDX1BMTE11bF82KSB8fCAoKE1VTCkgPT0gUkNDX1BMTE11bF83KSAgIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTVVMKSA9PSBSQ0NfUExMTXVsXzgpIHx8ICgoTVVMKSA9PSBSQ0NfUExMTXVsXzkpICAgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChNVUwpID09IFJDQ19QTExNdWxfMTApIHx8ICgoTVVMKSA9PSBSQ0NfUExMTXVsXzExKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE1VTCkgPT0gUkNDX1BMTE11bF8xMikgfHwgKChNVUwpID09IFJDQ19QTExNdWxfMTMpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTVVMKSA9PSBSQ0NfUExMTXVsXzE0KSB8fCAoKE1VTCkgPT0gUkNDX1BMTE11bF8xNSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChNVUwpID09IFJDQ19QTExNdWxfMTYpKQorCisjZWxzZQorICNkZWZpbmUgUkNDX1BMTE11bF80ICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApCisgI2RlZmluZSBSQ0NfUExMTXVsXzUgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDBDMDAwMCkKKyAjZGVmaW5lIFJDQ19QTExNdWxfNiAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMTAwMDAwKQorICNkZWZpbmUgUkNDX1BMTE11bF83ICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAxNDAwMDApCisgI2RlZmluZSBSQ0NfUExMTXVsXzggICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDE4MDAwMCkKKyAjZGVmaW5lIFJDQ19QTExNdWxfOSAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMUMwMDAwKQorICNkZWZpbmUgUkNDX1BMTE11bF82XzUgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAzNDAwMDApCisKKyAjZGVmaW5lIElTX1JDQ19QTExfTVVMKE1VTCkgKCgoTVVMKSA9PSBSQ0NfUExMTXVsXzQpIHx8ICgoTVVMKSA9PSBSQ0NfUExMTXVsXzUpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTVVMKSA9PSBSQ0NfUExMTXVsXzYpIHx8ICgoTVVMKSA9PSBSQ0NfUExMTXVsXzcpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTVVMKSA9PSBSQ0NfUExMTXVsXzgpIHx8ICgoTVVMKSA9PSBSQ0NfUExMTXVsXzkpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTVVMKSA9PSBSQ0NfUExMTXVsXzZfNSkpCisjZW5kaWYgLyogU1RNMzJGMTBYX0NMICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIFBSRURJVjFfZGl2aXNpb25fZmFjdG9yCisgICogQHsKKyAgKi8KKyNpZiBkZWZpbmVkIChTVE0zMkYxMFhfTERfVkwpIHx8IGRlZmluZWQgKFNUTTMyRjEwWF9NRF9WTCkgfHwgZGVmaW5lZCAoU1RNMzJGMTBYX0hEX1ZMKSB8fCBkZWZpbmVkIChTVE0zMkYxMFhfQ0wpCisgI2RlZmluZSAgUkNDX1BSRURJVjFfRGl2MSAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMCkKKyAjZGVmaW5lICBSQ0NfUFJFRElWMV9EaXYyICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxKQorICNkZWZpbmUgIFJDQ19QUkVESVYxX0RpdjMgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpCisgI2RlZmluZSAgUkNDX1BSRURJVjFfRGl2NCAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMykKKyAjZGVmaW5lICBSQ0NfUFJFRElWMV9EaXY1ICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KQorICNkZWZpbmUgIFJDQ19QUkVESVYxX0RpdjYgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDUpCisgI2RlZmluZSAgUkNDX1BSRURJVjFfRGl2NyAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNikKKyAjZGVmaW5lICBSQ0NfUFJFRElWMV9EaXY4ICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA3KQorICNkZWZpbmUgIFJDQ19QUkVESVYxX0RpdjkgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDgpCisgI2RlZmluZSAgUkNDX1BSRURJVjFfRGl2MTAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOSkKKyAjZGVmaW5lICBSQ0NfUFJFRElWMV9EaXYxMSAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDBBKQorICNkZWZpbmUgIFJDQ19QUkVESVYxX0RpdjEyICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMEIpCisgI2RlZmluZSAgUkNDX1BSRURJVjFfRGl2MTMgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwQykKKyAjZGVmaW5lICBSQ0NfUFJFRElWMV9EaXYxNCAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDBEKQorICNkZWZpbmUgIFJDQ19QUkVESVYxX0RpdjE1ICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMEUpCisgI2RlZmluZSAgUkNDX1BSRURJVjFfRGl2MTYgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwRikKKworICNkZWZpbmUgSVNfUkNDX1BSRURJVjEoUFJFRElWMSkgKCgoUFJFRElWMSkgPT0gUkNDX1BSRURJVjFfRGl2MSkgfHwgKChQUkVESVYxKSA9PSBSQ0NfUFJFRElWMV9EaXYyKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQUkVESVYxKSA9PSBSQ0NfUFJFRElWMV9EaXYzKSB8fCAoKFBSRURJVjEpID09IFJDQ19QUkVESVYxX0RpdjQpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBSRURJVjEpID09IFJDQ19QUkVESVYxX0RpdjUpIHx8ICgoUFJFRElWMSkgPT0gUkNDX1BSRURJVjFfRGl2NikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUFJFRElWMSkgPT0gUkNDX1BSRURJVjFfRGl2NykgfHwgKChQUkVESVYxKSA9PSBSQ0NfUFJFRElWMV9EaXY4KSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQUkVESVYxKSA9PSBSQ0NfUFJFRElWMV9EaXY5KSB8fCAoKFBSRURJVjEpID09IFJDQ19QUkVESVYxX0RpdjEwKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQUkVESVYxKSA9PSBSQ0NfUFJFRElWMV9EaXYxMSkgfHwgKChQUkVESVYxKSA9PSBSQ0NfUFJFRElWMV9EaXYxMikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUFJFRElWMSkgPT0gUkNDX1BSRURJVjFfRGl2MTMpIHx8ICgoUFJFRElWMSkgPT0gUkNDX1BSRURJVjFfRGl2MTQpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBSRURJVjEpID09IFJDQ19QUkVESVYxX0RpdjE1KSB8fCAoKFBSRURJVjEpID09IFJDQ19QUkVESVYxX0RpdjE2KSkKKyNlbmRpZgorLyoqCisgICogQH0KKyAgKi8KKworCisvKiogQGRlZmdyb3VwIFBSRURJVjFfY2xvY2tfc291cmNlCisgICogQHsKKyAgKi8KKyNpZmRlZiBTVE0zMkYxMFhfQ0wKKy8qIFBSRURJVjEgY2xvY2sgc291cmNlIChmb3IgU1RNMzIgY29ubmVjdGl2aXR5IGxpbmUgZGV2aWNlcykgKi8KKyAjZGVmaW5lICBSQ0NfUFJFRElWMV9Tb3VyY2VfSFNFICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAwKSAKKyAjZGVmaW5lICBSQ0NfUFJFRElWMV9Tb3VyY2VfUExMMiAgICAgICAgKCh1aW50MzJfdCkweDAwMDEwMDAwKSAKKworICNkZWZpbmUgSVNfUkNDX1BSRURJVjFfU09VUkNFKFNPVVJDRSkgKCgoU09VUkNFKSA9PSBSQ0NfUFJFRElWMV9Tb3VyY2VfSFNFKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChTT1VSQ0UpID09IFJDQ19QUkVESVYxX1NvdXJjZV9QTEwyKSkgCisjZWxpZiBkZWZpbmVkIChTVE0zMkYxMFhfTERfVkwpIHx8IGRlZmluZWQgKFNUTTMyRjEwWF9NRF9WTCkgfHwgZGVmaW5lZCAoU1RNMzJGMTBYX0hEX1ZMKQorLyogUFJFRElWMSBjbG9jayBzb3VyY2UgKGZvciBTVE0zMiBWYWx1ZSBsaW5lIGRldmljZXMpICovCisgI2RlZmluZSAgUkNDX1BSRURJVjFfU291cmNlX0hTRSAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMCkgCisKKyAjZGVmaW5lIElTX1JDQ19QUkVESVYxX1NPVVJDRShTT1VSQ0UpICgoKFNPVVJDRSkgPT0gUkNDX1BSRURJVjFfU291cmNlX0hTRSkpIAorI2VuZGlmCisvKioKKyAgKiBAfQorICAqLworCisjaWZkZWYgU1RNMzJGMTBYX0NMCisvKiogQGRlZmdyb3VwIFBSRURJVjJfZGl2aXNpb25fZmFjdG9yCisgICogQHsKKyAgKi8KKyAgCisgI2RlZmluZSAgUkNDX1BSRURJVjJfRGl2MSAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMCkKKyAjZGVmaW5lICBSQ0NfUFJFRElWMl9EaXYyICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDEwKQorICNkZWZpbmUgIFJDQ19QUkVESVYyX0RpdjMgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMjApCisgI2RlZmluZSAgUkNDX1BSRURJVjJfRGl2NCAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAzMCkKKyAjZGVmaW5lICBSQ0NfUFJFRElWMl9EaXY1ICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDQwKQorICNkZWZpbmUgIFJDQ19QUkVESVYyX0RpdjYgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwNTApCisgI2RlZmluZSAgUkNDX1BSRURJVjJfRGl2NyAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA2MCkKKyAjZGVmaW5lICBSQ0NfUFJFRElWMl9EaXY4ICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDcwKQorICNkZWZpbmUgIFJDQ19QUkVESVYyX0RpdjkgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApCisgI2RlZmluZSAgUkNDX1BSRURJVjJfRGl2MTAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA5MCkKKyAjZGVmaW5lICBSQ0NfUFJFRElWMl9EaXYxMSAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMEEwKQorICNkZWZpbmUgIFJDQ19QUkVESVYyX0RpdjEyICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwQjApCisgI2RlZmluZSAgUkNDX1BSRURJVjJfRGl2MTMgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDBDMCkKKyAjZGVmaW5lICBSQ0NfUFJFRElWMl9EaXYxNCAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMEQwKQorICNkZWZpbmUgIFJDQ19QUkVESVYyX0RpdjE1ICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwRTApCisgI2RlZmluZSAgUkNDX1BSRURJVjJfRGl2MTYgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDBGMCkKKworICNkZWZpbmUgSVNfUkNDX1BSRURJVjIoUFJFRElWMikgKCgoUFJFRElWMikgPT0gUkNDX1BSRURJVjJfRGl2MSkgfHwgKChQUkVESVYyKSA9PSBSQ0NfUFJFRElWMl9EaXYyKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQUkVESVYyKSA9PSBSQ0NfUFJFRElWMl9EaXYzKSB8fCAoKFBSRURJVjIpID09IFJDQ19QUkVESVYyX0RpdjQpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBSRURJVjIpID09IFJDQ19QUkVESVYyX0RpdjUpIHx8ICgoUFJFRElWMikgPT0gUkNDX1BSRURJVjJfRGl2NikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUFJFRElWMikgPT0gUkNDX1BSRURJVjJfRGl2NykgfHwgKChQUkVESVYyKSA9PSBSQ0NfUFJFRElWMl9EaXY4KSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQUkVESVYyKSA9PSBSQ0NfUFJFRElWMl9EaXY5KSB8fCAoKFBSRURJVjIpID09IFJDQ19QUkVESVYyX0RpdjEwKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQUkVESVYyKSA9PSBSQ0NfUFJFRElWMl9EaXYxMSkgfHwgKChQUkVESVYyKSA9PSBSQ0NfUFJFRElWMl9EaXYxMikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUFJFRElWMikgPT0gUkNDX1BSRURJVjJfRGl2MTMpIHx8ICgoUFJFRElWMikgPT0gUkNDX1BSRURJVjJfRGl2MTQpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBSRURJVjIpID09IFJDQ19QUkVESVYyX0RpdjE1KSB8fCAoKFBSRURJVjIpID09IFJDQ19QUkVESVYyX0RpdjE2KSkKKy8qKgorICAqIEB9CisgICovCisKKworLyoqIEBkZWZncm91cCBQTEwyX211bHRpcGxpY2F0aW9uX2ZhY3RvcgorICAqIEB7CisgICovCisgIAorICNkZWZpbmUgIFJDQ19QTEwyTXVsXzggICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA2MDApCisgI2RlZmluZSAgUkNDX1BMTDJNdWxfOSAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDcwMCkKKyAjZGVmaW5lICBSQ0NfUExMMk11bF8xMCAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwODAwKQorICNkZWZpbmUgIFJDQ19QTEwyTXVsXzExICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA5MDApCisgI2RlZmluZSAgUkNDX1BMTDJNdWxfMTIgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMEEwMCkKKyAjZGVmaW5lICBSQ0NfUExMMk11bF8xMyAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwQjAwKQorICNkZWZpbmUgIFJDQ19QTEwyTXVsXzE0ICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDBDMDApCisgI2RlZmluZSAgUkNDX1BMTDJNdWxfMTYgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMEUwMCkKKyAjZGVmaW5lICBSQ0NfUExMMk11bF8yMCAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwRjAwKQorCisgI2RlZmluZSBJU19SQ0NfUExMMl9NVUwoTVVMKSAoKChNVUwpID09IFJDQ19QTEwyTXVsXzgpIHx8ICgoTVVMKSA9PSBSQ0NfUExMMk11bF85KSAgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTVVMKSA9PSBSQ0NfUExMMk11bF8xMCkgfHwgKChNVUwpID09IFJDQ19QTEwyTXVsXzExKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChNVUwpID09IFJDQ19QTEwyTXVsXzEyKSB8fCAoKE1VTCkgPT0gUkNDX1BMTDJNdWxfMTMpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE1VTCkgPT0gUkNDX1BMTDJNdWxfMTQpIHx8ICgoTVVMKSA9PSBSQ0NfUExMMk11bF8xNikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTVVMKSA9PSBSQ0NfUExMMk11bF8yMCkpCisvKioKKyAgKiBAfQorICAqLworCisKKy8qKiBAZGVmZ3JvdXAgUExMM19tdWx0aXBsaWNhdGlvbl9mYWN0b3IKKyAgKiBAeworICAqLworCisgI2RlZmluZSAgUkNDX1BMTDNNdWxfOCAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNjAwMCkKKyAjZGVmaW5lICBSQ0NfUExMM011bF85ICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA3MDAwKQorICNkZWZpbmUgIFJDQ19QTEwzTXVsXzEwICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDgwMDApCisgI2RlZmluZSAgUkNDX1BMTDNNdWxfMTEgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwOTAwMCkKKyAjZGVmaW5lICBSQ0NfUExMM011bF8xMiAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDBBMDAwKQorICNkZWZpbmUgIFJDQ19QTEwzTXVsXzEzICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMEIwMDApCisgI2RlZmluZSAgUkNDX1BMTDNNdWxfMTQgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwQzAwMCkKKyAjZGVmaW5lICBSQ0NfUExMM011bF8xNiAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDBFMDAwKQorICNkZWZpbmUgIFJDQ19QTEwzTXVsXzIwICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMEYwMDApCisKKyAjZGVmaW5lIElTX1JDQ19QTEwzX01VTChNVUwpICgoKE1VTCkgPT0gUkNDX1BMTDNNdWxfOCkgfHwgKChNVUwpID09IFJDQ19QTEwzTXVsXzkpICB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChNVUwpID09IFJDQ19QTEwzTXVsXzEwKSB8fCAoKE1VTCkgPT0gUkNDX1BMTDNNdWxfMTEpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE1VTCkgPT0gUkNDX1BMTDNNdWxfMTIpIHx8ICgoTVVMKSA9PSBSQ0NfUExMM011bF8xMykgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTVVMKSA9PSBSQ0NfUExMM011bF8xNCkgfHwgKChNVUwpID09IFJDQ19QTEwzTXVsXzE2KSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChNVUwpID09IFJDQ19QTEwzTXVsXzIwKSkKKy8qKgorICAqIEB9CisgICovCisKKyNlbmRpZiAvKiBTVE0zMkYxMFhfQ0wgKi8KKworCisvKiogQGRlZmdyb3VwIFN5c3RlbV9jbG9ja19zb3VyY2UgCisgICogQHsKKyAgKi8KKworI2RlZmluZSBSQ0NfU1lTQ0xLU291cmNlX0hTSSAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDApCisjZGVmaW5lIFJDQ19TWVNDTEtTb3VyY2VfSFNFICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkKKyNkZWZpbmUgUkNDX1NZU0NMS1NvdXJjZV9QTExDTEsgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAyKQorI2RlZmluZSBJU19SQ0NfU1lTQ0xLX1NPVVJDRShTT1VSQ0UpICgoKFNPVVJDRSkgPT0gUkNDX1NZU0NMS1NvdXJjZV9IU0kpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChTT1VSQ0UpID09IFJDQ19TWVNDTEtTb3VyY2VfSFNFKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoU09VUkNFKSA9PSBSQ0NfU1lTQ0xLU291cmNlX1BMTENMSykpCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIEFIQl9jbG9ja19zb3VyY2UgCisgICogQHsKKyAgKi8KKworI2RlZmluZSBSQ0NfU1lTQ0xLX0RpdjEgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDApCisjZGVmaW5lIFJDQ19TWVNDTEtfRGl2MiAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA4MCkKKyNkZWZpbmUgUkNDX1NZU0NMS19EaXY0ICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDkwKQorI2RlZmluZSBSQ0NfU1lTQ0xLX0RpdjggICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwQTApCisjZGVmaW5lIFJDQ19TWVNDTEtfRGl2MTYgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDBCMCkKKyNkZWZpbmUgUkNDX1NZU0NMS19EaXY2NCAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMEMwKQorI2RlZmluZSBSQ0NfU1lTQ0xLX0RpdjEyOCAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwRDApCisjZGVmaW5lIFJDQ19TWVNDTEtfRGl2MjU2ICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDBFMCkKKyNkZWZpbmUgUkNDX1NZU0NMS19EaXY1MTIgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMEYwKQorI2RlZmluZSBJU19SQ0NfSENMSyhIQ0xLKSAoKChIQ0xLKSA9PSBSQ0NfU1lTQ0xLX0RpdjEpIHx8ICgoSENMSykgPT0gUkNDX1NZU0NMS19EaXYyKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEhDTEspID09IFJDQ19TWVNDTEtfRGl2NCkgfHwgKChIQ0xLKSA9PSBSQ0NfU1lTQ0xLX0RpdjgpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgoSENMSykgPT0gUkNDX1NZU0NMS19EaXYxNikgfHwgKChIQ0xLKSA9PSBSQ0NfU1lTQ0xLX0RpdjY0KSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEhDTEspID09IFJDQ19TWVNDTEtfRGl2MTI4KSB8fCAoKEhDTEspID09IFJDQ19TWVNDTEtfRGl2MjU2KSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEhDTEspID09IFJDQ19TWVNDTEtfRGl2NTEyKSkKKy8qKgorICAqIEB9CisgICovIAorCisvKiogQGRlZmdyb3VwIEFQQjFfQVBCMl9jbG9ja19zb3VyY2UgCisgICogQHsKKyAgKi8KKworI2RlZmluZSBSQ0NfSENMS19EaXYxICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDApCisjZGVmaW5lIFJDQ19IQ0xLX0RpdjIgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDQwMCkKKyNkZWZpbmUgUkNDX0hDTEtfRGl2NCAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwNTAwKQorI2RlZmluZSBSQ0NfSENMS19EaXY4ICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA2MDApCisjZGVmaW5lIFJDQ19IQ0xLX0RpdjE2ICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDcwMCkKKyNkZWZpbmUgSVNfUkNDX1BDTEsoUENMSykgKCgoUENMSykgPT0gUkNDX0hDTEtfRGl2MSkgfHwgKChQQ0xLKSA9PSBSQ0NfSENMS19EaXYyKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBDTEspID09IFJDQ19IQ0xLX0RpdjQpIHx8ICgoUENMSykgPT0gUkNDX0hDTEtfRGl2OCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQQ0xLKSA9PSBSQ0NfSENMS19EaXYxNikpCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIFJDQ19JbnRlcnJ1cHRfc291cmNlIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgUkNDX0lUX0xTSVJEWSAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MDEpCisjZGVmaW5lIFJDQ19JVF9MU0VSRFkgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDAyKQorI2RlZmluZSBSQ0NfSVRfSFNJUkRZICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwNCkKKyNkZWZpbmUgUkNDX0lUX0hTRVJEWSAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MDgpCisjZGVmaW5lIFJDQ19JVF9QTExSRFkgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDEwKQorI2RlZmluZSBSQ0NfSVRfQ1NTICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHg4MCkKKworI2lmbmRlZiBTVE0zMkYxMFhfQ0wKKyAjZGVmaW5lIElTX1JDQ19JVChJVCkgKCgoKElUKSAmICh1aW50OF90KTB4RTApID09IDB4MDApICYmICgoSVQpICE9IDB4MDApKQorICNkZWZpbmUgSVNfUkNDX0dFVF9JVChJVCkgKCgoSVQpID09IFJDQ19JVF9MU0lSRFkpIHx8ICgoSVQpID09IFJDQ19JVF9MU0VSRFkpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKElUKSA9PSBSQ0NfSVRfSFNJUkRZKSB8fCAoKElUKSA9PSBSQ0NfSVRfSFNFUkRZKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJVCkgPT0gUkNDX0lUX1BMTFJEWSkgfHwgKChJVCkgPT0gUkNDX0lUX0NTUykpCisgI2RlZmluZSBJU19SQ0NfQ0xFQVJfSVQoSVQpICgoKChJVCkgJiAodWludDhfdCkweDYwKSA9PSAweDAwKSAmJiAoKElUKSAhPSAweDAwKSkKKyNlbHNlCisgI2RlZmluZSBSQ0NfSVRfUExMMlJEWSAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDIwKQorICNkZWZpbmUgUkNDX0lUX1BMTDNSRFkgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHg0MCkKKyAjZGVmaW5lIElTX1JDQ19JVChJVCkgKCgoKElUKSAmICh1aW50OF90KTB4ODApID09IDB4MDApICYmICgoSVQpICE9IDB4MDApKQorICNkZWZpbmUgSVNfUkNDX0dFVF9JVChJVCkgKCgoSVQpID09IFJDQ19JVF9MU0lSRFkpIHx8ICgoSVQpID09IFJDQ19JVF9MU0VSRFkpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKElUKSA9PSBSQ0NfSVRfSFNJUkRZKSB8fCAoKElUKSA9PSBSQ0NfSVRfSFNFUkRZKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJVCkgPT0gUkNDX0lUX1BMTFJEWSkgfHwgKChJVCkgPT0gUkNDX0lUX0NTUykgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoSVQpID09IFJDQ19JVF9QTEwyUkRZKSB8fCAoKElUKSA9PSBSQ0NfSVRfUExMM1JEWSkpCisgI2RlZmluZSBJU19SQ0NfQ0xFQVJfSVQoSVQpICgoSVQpICE9IDB4MDApCisjZW5kaWYgLyogU1RNMzJGMTBYX0NMICovIAorCisKKy8qKgorICAqIEB9CisgICovCisKKyNpZm5kZWYgU1RNMzJGMTBYX0NMCisvKiogQGRlZmdyb3VwIFVTQl9EZXZpY2VfY2xvY2tfc291cmNlIAorICAqIEB7CisgICovCisKKyAjZGVmaW5lIFJDQ19VU0JDTEtTb3VyY2VfUExMQ0xLXzFEaXY1ICAgKCh1aW50OF90KTB4MDApCisgI2RlZmluZSBSQ0NfVVNCQ0xLU291cmNlX1BMTENMS19EaXYxICAgICgodWludDhfdCkweDAxKQorCisgI2RlZmluZSBJU19SQ0NfVVNCQ0xLX1NPVVJDRShTT1VSQ0UpICgoKFNPVVJDRSkgPT0gUkNDX1VTQkNMS1NvdXJjZV9QTExDTEtfMURpdjUpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChTT1VSQ0UpID09IFJDQ19VU0JDTEtTb3VyY2VfUExMQ0xLX0RpdjEpKQorLyoqCisgICogQH0KKyAgKi8KKyNlbHNlCisvKiogQGRlZmdyb3VwIFVTQl9PVEdfRlNfY2xvY2tfc291cmNlIAorICAqIEB7CisgICovCisgI2RlZmluZSBSQ0NfT1RHRlNDTEtTb3VyY2VfUExMVkNPX0RpdjMgICAgKCh1aW50OF90KTB4MDApCisgI2RlZmluZSBSQ0NfT1RHRlNDTEtTb3VyY2VfUExMVkNPX0RpdjIgICAgKCh1aW50OF90KTB4MDEpCisKKyAjZGVmaW5lIElTX1JDQ19PVEdGU0NMS19TT1VSQ0UoU09VUkNFKSAoKChTT1VSQ0UpID09IFJDQ19PVEdGU0NMS1NvdXJjZV9QTExWQ09fRGl2MykgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFNPVVJDRSkgPT0gUkNDX09UR0ZTQ0xLU291cmNlX1BMTFZDT19EaXYyKSkKKy8qKgorICAqIEB9CisgICovCisjZW5kaWYgLyogU1RNMzJGMTBYX0NMICovIAorCisKKyNpZmRlZiBTVE0zMkYxMFhfQ0wKKy8qKiBAZGVmZ3JvdXAgSTJTMl9jbG9ja19zb3VyY2UgCisgICogQHsKKyAgKi8KKyAjZGVmaW5lIFJDQ19JMlMyQ0xLU291cmNlX1NZU0NMSyAgICAgICAgKCh1aW50OF90KTB4MDApCisgI2RlZmluZSBSQ0NfSTJTMkNMS1NvdXJjZV9QTEwzX1ZDTyAgICAgICgodWludDhfdCkweDAxKQorCisgI2RlZmluZSBJU19SQ0NfSTJTMkNMS19TT1VSQ0UoU09VUkNFKSAoKChTT1VSQ0UpID09IFJDQ19JMlMyQ0xLU291cmNlX1NZU0NMSykgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoU09VUkNFKSA9PSBSQ0NfSTJTMkNMS1NvdXJjZV9QTEwzX1ZDTykpCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIEkyUzNfY2xvY2tfc291cmNlIAorICAqIEB7CisgICovCisgI2RlZmluZSBSQ0NfSTJTM0NMS1NvdXJjZV9TWVNDTEsgICAgICAgICgodWludDhfdCkweDAwKQorICNkZWZpbmUgUkNDX0kyUzNDTEtTb3VyY2VfUExMM19WQ08gICAgICAoKHVpbnQ4X3QpMHgwMSkKKworICNkZWZpbmUgSVNfUkNDX0kyUzNDTEtfU09VUkNFKFNPVVJDRSkgKCgoU09VUkNFKSA9PSBSQ0NfSTJTM0NMS1NvdXJjZV9TWVNDTEspIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFNPVVJDRSkgPT0gUkNDX0kyUzNDTEtTb3VyY2VfUExMM19WQ08pKSAgICAKKy8qKgorICAqIEB9CisgICovCisjZW5kaWYgLyogU1RNMzJGMTBYX0NMICovICAKKyAgCisKKy8qKiBAZGVmZ3JvdXAgQURDX2Nsb2NrX3NvdXJjZSAKKyAgKiBAeworICAqLworCisjZGVmaW5lIFJDQ19QQ0xLMl9EaXYyICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMCkKKyNkZWZpbmUgUkNDX1BDTEsyX0RpdjQgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA0MDAwKQorI2RlZmluZSBSQ0NfUENMSzJfRGl2NiAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDgwMDApCisjZGVmaW5lIFJDQ19QQ0xLMl9EaXY4ICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwQzAwMCkKKyNkZWZpbmUgSVNfUkNDX0FEQ0NMSyhBRENDTEspICgoKEFEQ0NMSykgPT0gUkNDX1BDTEsyX0RpdjIpIHx8ICgoQURDQ0xLKSA9PSBSQ0NfUENMSzJfRGl2NCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoQURDQ0xLKSA9PSBSQ0NfUENMSzJfRGl2NikgfHwgKChBRENDTEspID09IFJDQ19QQ0xLMl9EaXY4KSkKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgTFNFX2NvbmZpZ3VyYXRpb24gCisgICogQHsKKyAgKi8KKworI2RlZmluZSBSQ0NfTFNFX09GRiAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwMCkKKyNkZWZpbmUgUkNDX0xTRV9PTiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MDEpCisjZGVmaW5lIFJDQ19MU0VfQnlwYXNzICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDA0KQorI2RlZmluZSBJU19SQ0NfTFNFKExTRSkgKCgoTFNFKSA9PSBSQ0NfTFNFX09GRikgfHwgKChMU0UpID09IFJDQ19MU0VfT04pIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKExTRSkgPT0gUkNDX0xTRV9CeXBhc3MpKQorLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBSVENfY2xvY2tfc291cmNlIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgUkNDX1JUQ0NMS1NvdXJjZV9MU0UgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKQorI2RlZmluZSBSQ0NfUlRDQ0xLU291cmNlX0xTSSAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAyMDApCisjZGVmaW5lIFJDQ19SVENDTEtTb3VyY2VfSFNFX0RpdjEyOCAgICAgICgodWludDMyX3QpMHgwMDAwMDMwMCkKKyNkZWZpbmUgSVNfUkNDX1JUQ0NMS19TT1VSQ0UoU09VUkNFKSAoKChTT1VSQ0UpID09IFJDQ19SVENDTEtTb3VyY2VfTFNFKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoU09VUkNFKSA9PSBSQ0NfUlRDQ0xLU291cmNlX0xTSSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFNPVVJDRSkgPT0gUkNDX1JUQ0NMS1NvdXJjZV9IU0VfRGl2MTI4KSkKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgQUhCX3BlcmlwaGVyYWwgCisgICogQHsKKyAgKi8KKworI2RlZmluZSBSQ0NfQUhCUGVyaXBoX0RNQTEgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDEpCisjZGVmaW5lIFJDQ19BSEJQZXJpcGhfRE1BMiAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMikKKyNkZWZpbmUgUkNDX0FIQlBlcmlwaF9TUkFNICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KQorI2RlZmluZSBSQ0NfQUhCUGVyaXBoX0ZMSVRGICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApCisjZGVmaW5lIFJDQ19BSEJQZXJpcGhfQ1JDICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkKKworI2lmbmRlZiBTVE0zMkYxMFhfQ0wKKyAjZGVmaW5lIFJDQ19BSEJQZXJpcGhfRlNNQyAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKQorICNkZWZpbmUgUkNDX0FIQlBlcmlwaF9TRElPICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApCisgI2RlZmluZSBJU19SQ0NfQUhCX1BFUklQSChQRVJJUEgpICgoKChQRVJJUEgpICYgMHhGRkZGRkFBOCkgPT0gMHgwMCkgJiYgKChQRVJJUEgpICE9IDB4MDApKQorI2Vsc2UKKyAjZGVmaW5lIFJDQ19BSEJQZXJpcGhfT1RHX0ZTICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKQorICNkZWZpbmUgUkNDX0FIQlBlcmlwaF9FVEhfTUFDICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDQwMDApCisgI2RlZmluZSBSQ0NfQUhCUGVyaXBoX0VUSF9NQUNfVHggICAgICAgICgodWludDMyX3QpMHgwMDAwODAwMCkKKyAjZGVmaW5lIFJDQ19BSEJQZXJpcGhfRVRIX01BQ19SeCAgICAgICAgKCh1aW50MzJfdCkweDAwMDEwMDAwKQorCisgI2RlZmluZSBJU19SQ0NfQUhCX1BFUklQSChQRVJJUEgpICgoKChQRVJJUEgpICYgMHhGRkZFMkZBOCkgPT0gMHgwMCkgJiYgKChQRVJJUEgpICE9IDB4MDApKQorICNkZWZpbmUgSVNfUkNDX0FIQl9QRVJJUEhfUkVTRVQoUEVSSVBIKSAoKCgoUEVSSVBIKSAmIDB4RkZGRkFGRkYpID09IDB4MDApICYmICgoUEVSSVBIKSAhPSAweDAwKSkKKyNlbmRpZiAvKiBTVE0zMkYxMFhfQ0wgKi8KKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgQVBCMl9wZXJpcGhlcmFsIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgUkNDX0FQQjJQZXJpcGhfQUZJTyAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxKQorI2RlZmluZSBSQ0NfQVBCMlBlcmlwaF9HUElPQSAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDQpCisjZGVmaW5lIFJDQ19BUEIyUGVyaXBoX0dQSU9CICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkKKyNkZWZpbmUgUkNDX0FQQjJQZXJpcGhfR1BJT0MgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDEwKQorI2RlZmluZSBSQ0NfQVBCMlBlcmlwaF9HUElPRCAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMjApCisjZGVmaW5lIFJDQ19BUEIyUGVyaXBoX0dQSU9FICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkKKyNkZWZpbmUgUkNDX0FQQjJQZXJpcGhfR1BJT0YgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDgwKQorI2RlZmluZSBSQ0NfQVBCMlBlcmlwaF9HUElPRyAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAxMDApCisjZGVmaW5lIFJDQ19BUEIyUGVyaXBoX0FEQzEgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkKKyNkZWZpbmUgUkNDX0FQQjJQZXJpcGhfQURDMiAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwNDAwKQorI2RlZmluZSBSQ0NfQVBCMlBlcmlwaF9USU0xICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA4MDApCisjZGVmaW5lIFJDQ19BUEIyUGVyaXBoX1NQSTEgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMTAwMCkKKyNkZWZpbmUgUkNDX0FQQjJQZXJpcGhfVElNOCAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAyMDAwKQorI2RlZmluZSBSQ0NfQVBCMlBlcmlwaF9VU0FSVDEgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDQwMDApCisjZGVmaW5lIFJDQ19BUEIyUGVyaXBoX0FEQzMgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwODAwMCkKKyNkZWZpbmUgUkNDX0FQQjJQZXJpcGhfVElNMTUgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDEwMDAwKQorI2RlZmluZSBSQ0NfQVBCMlBlcmlwaF9USU0xNiAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMjAwMDApCisjZGVmaW5lIFJDQ19BUEIyUGVyaXBoX1RJTTE3ICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA0MDAwMCkKKyNkZWZpbmUgUkNDX0FQQjJQZXJpcGhfVElNOSAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDgwMDAwKQorI2RlZmluZSBSQ0NfQVBCMlBlcmlwaF9USU0xMCAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAxMDAwMDApCisjZGVmaW5lIFJDQ19BUEIyUGVyaXBoX1RJTTExICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDIwMDAwMCkKKworI2RlZmluZSBJU19SQ0NfQVBCMl9QRVJJUEgoUEVSSVBIKSAoKCgoUEVSSVBIKSAmIDB4RkZDMDAwMDIpID09IDB4MDApICYmICgoUEVSSVBIKSAhPSAweDAwKSkKKy8qKgorICAqIEB9CisgICovIAorCisvKiogQGRlZmdyb3VwIEFQQjFfcGVyaXBoZXJhbCAKKyAgKiBAeworICAqLworCisjZGVmaW5lIFJDQ19BUEIxUGVyaXBoX1RJTTIgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkKKyNkZWZpbmUgUkNDX0FQQjFQZXJpcGhfVElNMyAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAyKQorI2RlZmluZSBSQ0NfQVBCMVBlcmlwaF9USU00ICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDQpCisjZGVmaW5lIFJDQ19BUEIxUGVyaXBoX1RJTTUgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkKKyNkZWZpbmUgUkNDX0FQQjFQZXJpcGhfVElNNiAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDEwKQorI2RlZmluZSBSQ0NfQVBCMVBlcmlwaF9USU03ICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMjApCisjZGVmaW5lIFJDQ19BUEIxUGVyaXBoX1RJTTEyICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkKKyNkZWZpbmUgUkNDX0FQQjFQZXJpcGhfVElNMTMgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDgwKQorI2RlZmluZSBSQ0NfQVBCMVBlcmlwaF9USU0xNCAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAxMDApCisjZGVmaW5lIFJDQ19BUEIxUGVyaXBoX1dXREcgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkKKyNkZWZpbmUgUkNDX0FQQjFQZXJpcGhfU1BJMiAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA0MDAwKQorI2RlZmluZSBSQ0NfQVBCMVBlcmlwaF9TUEkzICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDgwMDApCisjZGVmaW5lIFJDQ19BUEIxUGVyaXBoX1VTQVJUMiAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkKKyNkZWZpbmUgUkNDX0FQQjFQZXJpcGhfVVNBUlQzICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDQwMDAwKQorI2RlZmluZSBSQ0NfQVBCMVBlcmlwaF9VQVJUNCAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApCisjZGVmaW5lIFJDQ19BUEIxUGVyaXBoX1VBUlQ1ICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDEwMDAwMCkKKyNkZWZpbmUgUkNDX0FQQjFQZXJpcGhfSTJDMSAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMjAwMDAwKQorI2RlZmluZSBSQ0NfQVBCMVBlcmlwaF9JMkMyICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApCisjZGVmaW5lIFJDQ19BUEIxUGVyaXBoX1VTQiAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDgwMDAwMCkKKyNkZWZpbmUgUkNDX0FQQjFQZXJpcGhfQ0FOMSAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAyMDAwMDAwKQorI2RlZmluZSBSQ0NfQVBCMVBlcmlwaF9DQU4yICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDQwMDAwMDApCisjZGVmaW5lIFJDQ19BUEIxUGVyaXBoX0JLUCAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwODAwMDAwMCkKKyNkZWZpbmUgUkNDX0FQQjFQZXJpcGhfUFdSICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDEwMDAwMDAwKQorI2RlZmluZSBSQ0NfQVBCMVBlcmlwaF9EQUMgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MjAwMDAwMDApCisjZGVmaW5lIFJDQ19BUEIxUGVyaXBoX0NFQyAgICAgICAgICAgICAgICgodWludDMyX3QpMHg0MDAwMDAwMCkKKyAKKyNkZWZpbmUgSVNfUkNDX0FQQjFfUEVSSVBIKFBFUklQSCkgKCgoKFBFUklQSCkgJiAweDgxMDEzNjAwKSA9PSAweDAwKSAmJiAoKFBFUklQSCkgIT0gMHgwMCkpCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgQ2xvY2tfc291cmNlX3RvX291dHB1dF9vbl9NQ09fcGluIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgUkNDX01DT19Ob0Nsb2NrICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MDApCisjZGVmaW5lIFJDQ19NQ09fU1lTQ0xLICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDA0KQorI2RlZmluZSBSQ0NfTUNPX0hTSSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwNSkKKyNkZWZpbmUgUkNDX01DT19IU0UgICAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MDYpCisjZGVmaW5lIFJDQ19NQ09fUExMQ0xLX0RpdjIgICAgICAgICAgICAgICgodWludDhfdCkweDA3KQorCisjaWZuZGVmIFNUTTMyRjEwWF9DTAorICNkZWZpbmUgSVNfUkNDX01DTyhNQ08pICgoKE1DTykgPT0gUkNDX01DT19Ob0Nsb2NrKSB8fCAoKE1DTykgPT0gUkNDX01DT19IU0kpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKChNQ08pID09IFJDQ19NQ09fU1lTQ0xLKSAgfHwgKChNQ08pID09IFJDQ19NQ09fSFNFKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICgoTUNPKSA9PSBSQ0NfTUNPX1BMTENMS19EaXYyKSkKKyNlbHNlCisgI2RlZmluZSBSQ0NfTUNPX1BMTDJDTEsgICAgICAgICAgICAgICAgICgodWludDhfdCkweDA4KQorICNkZWZpbmUgUkNDX01DT19QTEwzQ0xLX0RpdjIgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwOSkKKyAjZGVmaW5lIFJDQ19NQ09fWFQxICAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MEEpCisgI2RlZmluZSBSQ0NfTUNPX1BMTDNDTEsgICAgICAgICAgICAgICAgICgodWludDhfdCkweDBCKQorCisgI2RlZmluZSBJU19SQ0NfTUNPKE1DTykgKCgoTUNPKSA9PSBSQ0NfTUNPX05vQ2xvY2spIHx8ICgoTUNPKSA9PSBSQ0NfTUNPX0hTSSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAoKE1DTykgPT0gUkNDX01DT19TWVNDTEspICB8fCAoKE1DTykgPT0gUkNDX01DT19IU0UpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKChNQ08pID09IFJDQ19NQ09fUExMQ0xLX0RpdjIpIHx8ICgoTUNPKSA9PSBSQ0NfTUNPX1BMTDJDTEspIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKChNQ08pID09IFJDQ19NQ09fUExMM0NMS19EaXYyKSB8fCAoKE1DTykgPT0gUkNDX01DT19YVDEpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKChNQ08pID09IFJDQ19NQ09fUExMM0NMSykpCisjZW5kaWYgLyogU1RNMzJGMTBYX0NMICovIAorCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIFJDQ19GbGFnIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgUkNDX0ZMQUdfSFNJUkRZICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MjEpCisjZGVmaW5lIFJDQ19GTEFHX0hTRVJEWSAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDMxKQorI2RlZmluZSBSQ0NfRkxBR19QTExSRFkgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgzOSkKKyNkZWZpbmUgUkNDX0ZMQUdfTFNFUkRZICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4NDEpCisjZGVmaW5lIFJDQ19GTEFHX0xTSVJEWSAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDYxKQorI2RlZmluZSBSQ0NfRkxBR19QSU5SU1QgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHg3QSkKKyNkZWZpbmUgUkNDX0ZMQUdfUE9SUlNUICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4N0IpCisjZGVmaW5lIFJDQ19GTEFHX1NGVFJTVCAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDdDKQorI2RlZmluZSBSQ0NfRkxBR19JV0RHUlNUICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHg3RCkKKyNkZWZpbmUgUkNDX0ZMQUdfV1dER1JTVCAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4N0UpCisjZGVmaW5lIFJDQ19GTEFHX0xQV1JSU1QgICAgICAgICAgICAgICAgICgodWludDhfdCkweDdGKQorCisjaWZuZGVmIFNUTTMyRjEwWF9DTAorICNkZWZpbmUgSVNfUkNDX0ZMQUcoRkxBRykgKCgoRkxBRykgPT0gUkNDX0ZMQUdfSFNJUkRZKSB8fCAoKEZMQUcpID09IFJDQ19GTEFHX0hTRVJEWSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRkxBRykgPT0gUkNDX0ZMQUdfUExMUkRZKSB8fCAoKEZMQUcpID09IFJDQ19GTEFHX0xTRVJEWSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRkxBRykgPT0gUkNDX0ZMQUdfTFNJUkRZKSB8fCAoKEZMQUcpID09IFJDQ19GTEFHX1BJTlJTVCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRkxBRykgPT0gUkNDX0ZMQUdfUE9SUlNUKSB8fCAoKEZMQUcpID09IFJDQ19GTEFHX1NGVFJTVCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRkxBRykgPT0gUkNDX0ZMQUdfSVdER1JTVCl8fCAoKEZMQUcpID09IFJDQ19GTEFHX1dXREdSU1QpfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRkxBRykgPT0gUkNDX0ZMQUdfTFBXUlJTVCkpCisjZWxzZQorICNkZWZpbmUgUkNDX0ZMQUdfUExMMlJEWSAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgzQikgCisgI2RlZmluZSBSQ0NfRkxBR19QTEwzUkRZICAgICAgICAgICAgICAgICgodWludDhfdCkweDNEKSAKKyAjZGVmaW5lIElTX1JDQ19GTEFHKEZMQUcpICgoKEZMQUcpID09IFJDQ19GTEFHX0hTSVJEWSkgfHwgKChGTEFHKSA9PSBSQ0NfRkxBR19IU0VSRFkpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEZMQUcpID09IFJDQ19GTEFHX1BMTFJEWSkgfHwgKChGTEFHKSA9PSBSQ0NfRkxBR19MU0VSRFkpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEZMQUcpID09IFJDQ19GTEFHX1BMTDJSRFkpIHx8ICgoRkxBRykgPT0gUkNDX0ZMQUdfUExMM1JEWSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRkxBRykgPT0gUkNDX0ZMQUdfTFNJUkRZKSB8fCAoKEZMQUcpID09IFJDQ19GTEFHX1BJTlJTVCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRkxBRykgPT0gUkNDX0ZMQUdfUE9SUlNUKSB8fCAoKEZMQUcpID09IFJDQ19GTEFHX1NGVFJTVCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRkxBRykgPT0gUkNDX0ZMQUdfSVdER1JTVCl8fCAoKEZMQUcpID09IFJDQ19GTEFHX1dXREdSU1QpfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRkxBRykgPT0gUkNDX0ZMQUdfTFBXUlJTVCkpCisjZW5kaWYgLyogU1RNMzJGMTBYX0NMICovIAorCisjZGVmaW5lIElTX1JDQ19DQUxJQlJBVElPTl9WQUxVRShWQUxVRSkgKChWQUxVRSkgPD0gMHgxRikKKy8qKgorICAqIEB9CisgICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgUkNDX0V4cG9ydGVkX01hY3JvcworICAqIEB7CisgICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgUkNDX0V4cG9ydGVkX0Z1bmN0aW9ucworICAqIEB7CisgICovCisKK3ZvaWQgUkNDX0RlSW5pdCh2b2lkKTsKK3ZvaWQgUkNDX0hTRUNvbmZpZyh1aW50MzJfdCBSQ0NfSFNFKTsKK0Vycm9yU3RhdHVzIFJDQ19XYWl0Rm9ySFNFU3RhcnRVcCh2b2lkKTsKK3ZvaWQgUkNDX0FkanVzdEhTSUNhbGlicmF0aW9uVmFsdWUodWludDhfdCBIU0lDYWxpYnJhdGlvblZhbHVlKTsKK3ZvaWQgUkNDX0hTSUNtZChGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpOwordm9pZCBSQ0NfUExMQ29uZmlnKHVpbnQzMl90IFJDQ19QTExTb3VyY2UsIHVpbnQzMl90IFJDQ19QTExNdWwpOwordm9pZCBSQ0NfUExMQ21kKEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSk7CisKKyNpZiBkZWZpbmVkIChTVE0zMkYxMFhfTERfVkwpIHx8IGRlZmluZWQgKFNUTTMyRjEwWF9NRF9WTCkgfHwgZGVmaW5lZCAoU1RNMzJGMTBYX0hEX1ZMKSB8fCBkZWZpbmVkIChTVE0zMkYxMFhfQ0wpCisgdm9pZCBSQ0NfUFJFRElWMUNvbmZpZyh1aW50MzJfdCBSQ0NfUFJFRElWMV9Tb3VyY2UsIHVpbnQzMl90IFJDQ19QUkVESVYxX0Rpdik7CisjZW5kaWYKKworI2lmZGVmICBTVE0zMkYxMFhfQ0wKKyB2b2lkIFJDQ19QUkVESVYyQ29uZmlnKHVpbnQzMl90IFJDQ19QUkVESVYyX0Rpdik7Cisgdm9pZCBSQ0NfUExMMkNvbmZpZyh1aW50MzJfdCBSQ0NfUExMMk11bCk7Cisgdm9pZCBSQ0NfUExMMkNtZChGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpOworIHZvaWQgUkNDX1BMTDNDb25maWcodWludDMyX3QgUkNDX1BMTDNNdWwpOworIHZvaWQgUkNDX1BMTDNDbWQoRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKTsKKyNlbmRpZiAvKiBTVE0zMkYxMFhfQ0wgKi8gCisKK3ZvaWQgUkNDX1NZU0NMS0NvbmZpZyh1aW50MzJfdCBSQ0NfU1lTQ0xLU291cmNlKTsKK3VpbnQ4X3QgUkNDX0dldFNZU0NMS1NvdXJjZSh2b2lkKTsKK3ZvaWQgUkNDX0hDTEtDb25maWcodWludDMyX3QgUkNDX1NZU0NMSyk7Cit2b2lkIFJDQ19QQ0xLMUNvbmZpZyh1aW50MzJfdCBSQ0NfSENMSyk7Cit2b2lkIFJDQ19QQ0xLMkNvbmZpZyh1aW50MzJfdCBSQ0NfSENMSyk7Cit2b2lkIFJDQ19JVENvbmZpZyh1aW50OF90IFJDQ19JVCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKTsKKworI2lmbmRlZiBTVE0zMkYxMFhfQ0wKKyB2b2lkIFJDQ19VU0JDTEtDb25maWcodWludDMyX3QgUkNDX1VTQkNMS1NvdXJjZSk7CisjZWxzZQorIHZvaWQgUkNDX09UR0ZTQ0xLQ29uZmlnKHVpbnQzMl90IFJDQ19PVEdGU0NMS1NvdXJjZSk7CisjZW5kaWYgLyogU1RNMzJGMTBYX0NMICovIAorCit2b2lkIFJDQ19BRENDTEtDb25maWcodWludDMyX3QgUkNDX1BDTEsyKTsKKworI2lmZGVmIFNUTTMyRjEwWF9DTAorIHZvaWQgUkNDX0kyUzJDTEtDb25maWcodWludDMyX3QgUkNDX0kyUzJDTEtTb3VyY2UpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyB2b2lkIFJDQ19JMlMzQ0xLQ29uZmlnKHVpbnQzMl90IFJDQ19JMlMzQ0xLU291cmNlKTsKKyNlbmRpZiAvKiBTVE0zMkYxMFhfQ0wgKi8gCisKK3ZvaWQgUkNDX0xTRUNvbmZpZyh1aW50OF90IFJDQ19MU0UpOwordm9pZCBSQ0NfTFNJQ21kKEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSk7Cit2b2lkIFJDQ19SVENDTEtDb25maWcodWludDMyX3QgUkNDX1JUQ0NMS1NvdXJjZSk7Cit2b2lkIFJDQ19SVENDTEtDbWQoRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKTsKK3ZvaWQgUkNDX0dldENsb2Nrc0ZyZXEoUkNDX0Nsb2Nrc1R5cGVEZWYqIFJDQ19DbG9ja3MpOwordm9pZCBSQ0NfQUhCUGVyaXBoQ2xvY2tDbWQodWludDMyX3QgUkNDX0FIQlBlcmlwaCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKTsKK3ZvaWQgUkNDX0FQQjJQZXJpcGhDbG9ja0NtZCh1aW50MzJfdCBSQ0NfQVBCMlBlcmlwaCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKTsKK3ZvaWQgUkNDX0FQQjFQZXJpcGhDbG9ja0NtZCh1aW50MzJfdCBSQ0NfQVBCMVBlcmlwaCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKTsKKworI2lmZGVmIFNUTTMyRjEwWF9DTAordm9pZCBSQ0NfQUhCUGVyaXBoUmVzZXRDbWQodWludDMyX3QgUkNDX0FIQlBlcmlwaCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKTsKKyNlbmRpZiAvKiBTVE0zMkYxMFhfQ0wgKi8gCisKK3ZvaWQgUkNDX0FQQjJQZXJpcGhSZXNldENtZCh1aW50MzJfdCBSQ0NfQVBCMlBlcmlwaCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKTsKK3ZvaWQgUkNDX0FQQjFQZXJpcGhSZXNldENtZCh1aW50MzJfdCBSQ0NfQVBCMVBlcmlwaCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKTsKK3ZvaWQgUkNDX0JhY2t1cFJlc2V0Q21kKEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSk7Cit2b2lkIFJDQ19DbG9ja1NlY3VyaXR5U3lzdGVtQ21kKEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSk7Cit2b2lkIFJDQ19NQ09Db25maWcodWludDhfdCBSQ0NfTUNPKTsKK0ZsYWdTdGF0dXMgUkNDX0dldEZsYWdTdGF0dXModWludDhfdCBSQ0NfRkxBRyk7Cit2b2lkIFJDQ19DbGVhckZsYWcodm9pZCk7CitJVFN0YXR1cyBSQ0NfR2V0SVRTdGF0dXModWludDhfdCBSQ0NfSVQpOwordm9pZCBSQ0NfQ2xlYXJJVFBlbmRpbmdCaXQodWludDhfdCBSQ0NfSVQpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyogX19TVE0zMkYxMHhfUkNDX0ggKi8KKy8qKgorICAqIEB9CisgICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKgorICAqIEB9CisgICovIAorCisvKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIDIwMTEgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvc3RfZndfbGliL2luYy9zdG0zMmYxMHhfcnRjLmggYi9zdF9md19saWIvaW5jL3N0bTMyZjEweF9ydGMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZDhiZWI1Ci0tLSAvZGV2L251bGwKKysrIGIvc3RfZndfbGliL2luYy9zdG0zMmYxMHhfcnRjLmgKQEAgLTAsMCArMSwxMzUgQEAKKy8qKgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKiBAZmlsZSAgICBzdG0zMmYxMHhfcnRjLmgKKyAgKiBAYXV0aG9yICBNQ0QgQXBwbGljYXRpb24gVGVhbQorICAqIEB2ZXJzaW9uIFYzLjUuMAorICAqIEBkYXRlICAgIDExLU1hcmNoLTIwMTEKKyAgKiBAYnJpZWYgICBUaGlzIGZpbGUgY29udGFpbnMgYWxsIHRoZSBmdW5jdGlvbnMgcHJvdG90eXBlcyBmb3IgdGhlIFJUQyBmaXJtd2FyZSAKKyAgKiAgICAgICAgICBsaWJyYXJ5LgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKiBAYXR0ZW50aW9uCisgICoKKyAgKiBUSEUgUFJFU0VOVCBGSVJNV0FSRSBXSElDSCBJUyBGT1IgR1VJREFOQ0UgT05MWSBBSU1TIEFUIFBST1ZJRElORyBDVVNUT01FUlMKKyAgKiBXSVRIIENPRElORyBJTkZPUk1BVElPTiBSRUdBUkRJTkcgVEhFSVIgUFJPRFVDVFMgSU4gT1JERVIgRk9SIFRIRU0gVE8gU0FWRQorICAqIFRJTUUuIEFTIEEgUkVTVUxULCBTVE1JQ1JPRUxFQ1RST05JQ1MgU0hBTEwgTk9UIEJFIEhFTEQgTElBQkxFIEZPUiBBTlkKKyAgKiBESVJFQ1QsIElORElSRUNUIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBXSVRIIFJFU1BFQ1QgVE8gQU5ZIENMQUlNUyBBUklTSU5HCisgICogRlJPTSBUSEUgQ09OVEVOVCBPRiBTVUNIIEZJUk1XQVJFIEFORC9PUiBUSEUgVVNFIE1BREUgQlkgQ1VTVE9NRVJTIE9GIFRIRQorICAqIENPRElORyBJTkZPUk1BVElPTiBDT05UQUlORUQgSEVSRUlOIElOIENPTk5FQ1RJT04gV0lUSCBUSEVJUiBQUk9EVUNUUy4KKyAgKgorICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDT1BZUklHSFQgMjAxMSBTVE1pY3JvZWxlY3Ryb25pY3M8L2NlbnRlcj48L2gyPgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKi8KKworLyogRGVmaW5lIHRvIHByZXZlbnQgcmVjdXJzaXZlIGluY2x1c2lvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyNpZm5kZWYgX19TVE0zMkYxMHhfUlRDX0gKKyNkZWZpbmUgX19TVE0zMkYxMHhfUlRDX0gKKworI2lmZGVmIF9fY3BsdXNwbHVzCisgZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLyogSW5jbHVkZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyNpbmNsdWRlICJzdG0zMmYxMHguaCIKKworLyoqIEBhZGR0b2dyb3VwIFNUTTMyRjEweF9TdGRQZXJpcGhfRHJpdmVyCisgICogQHsKKyAgKi8KKworLyoqIEBhZGR0b2dyb3VwIFJUQworICAqIEB7CisgICovIAorCisvKiogQGRlZmdyb3VwIFJUQ19FeHBvcnRlZF9UeXBlcworICAqIEB7CisgICovIAorCisvKioKKyAgKiBAfQorICAqLyAKKworLyoqIEBkZWZncm91cCBSVENfRXhwb3J0ZWRfQ29uc3RhbnRzCisgICogQHsKKyAgKi8KKworLyoqIEBkZWZncm91cCBSVENfaW50ZXJydXB0c19kZWZpbmUgCisgICogQHsKKyAgKi8KKworI2RlZmluZSBSVENfSVRfT1cgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwNCkgIC8qITwgT3ZlcmZsb3cgaW50ZXJydXB0ICovCisjZGVmaW5lIFJUQ19JVF9BTFIgICAgICAgICAgICgodWludDE2X3QpMHgwMDAyKSAgLyohPCBBbGFybSBpbnRlcnJ1cHQgKi8KKyNkZWZpbmUgUlRDX0lUX1NFQyAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDEpICAvKiE8IFNlY29uZCBpbnRlcnJ1cHQgKi8KKyNkZWZpbmUgSVNfUlRDX0lUKElUKSAoKCgoSVQpICYgKHVpbnQxNl90KTB4RkZGOCkgPT0gMHgwMCkgJiYgKChJVCkgIT0gMHgwMCkpCisjZGVmaW5lIElTX1JUQ19HRVRfSVQoSVQpICgoKElUKSA9PSBSVENfSVRfT1cpIHx8ICgoSVQpID09IFJUQ19JVF9BTFIpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgoSVQpID09IFJUQ19JVF9TRUMpKQorLyoqCisgICogQH0KKyAgKi8gCisKKy8qKiBAZGVmZ3JvdXAgUlRDX2ludGVycnVwdHNfZmxhZ3MgCisgICogQHsKKyAgKi8KKworI2RlZmluZSBSVENfRkxBR19SVE9GRiAgICAgICAoKHVpbnQxNl90KTB4MDAyMCkgIC8qITwgUlRDIE9wZXJhdGlvbiBPRkYgZmxhZyAqLworI2RlZmluZSBSVENfRkxBR19SU0YgICAgICAgICAoKHVpbnQxNl90KTB4MDAwOCkgIC8qITwgUmVnaXN0ZXJzIFN5bmNocm9uaXplZCBmbGFnICovCisjZGVmaW5lIFJUQ19GTEFHX09XICAgICAgICAgICgodWludDE2X3QpMHgwMDA0KSAgLyohPCBPdmVyZmxvdyBmbGFnICovCisjZGVmaW5lIFJUQ19GTEFHX0FMUiAgICAgICAgICgodWludDE2X3QpMHgwMDAyKSAgLyohPCBBbGFybSBmbGFnICovCisjZGVmaW5lIFJUQ19GTEFHX1NFQyAgICAgICAgICgodWludDE2X3QpMHgwMDAxKSAgLyohPCBTZWNvbmQgZmxhZyAqLworI2RlZmluZSBJU19SVENfQ0xFQVJfRkxBRyhGTEFHKSAoKCgoRkxBRykgJiAodWludDE2X3QpMHhGRkYwKSA9PSAweDAwKSAmJiAoKEZMQUcpICE9IDB4MDApKQorI2RlZmluZSBJU19SVENfR0VUX0ZMQUcoRkxBRykgKCgoRkxBRykgPT0gUlRDX0ZMQUdfUlRPRkYpIHx8ICgoRkxBRykgPT0gUlRDX0ZMQUdfUlNGKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChGTEFHKSA9PSBSVENfRkxBR19PVykgfHwgKChGTEFHKSA9PSBSVENfRkxBR19BTFIpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEZMQUcpID09IFJUQ19GTEFHX1NFQykpCisjZGVmaW5lIElTX1JUQ19QUkVTQ0FMRVIoUFJFU0NBTEVSKSAoKFBSRVNDQUxFUikgPD0gMHhGRkZGRikKKworLyoqCisgICogQH0KKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBSVENfRXhwb3J0ZWRfTWFjcm9zCisgICogQHsKKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBSVENfRXhwb3J0ZWRfRnVuY3Rpb25zCisgICogQHsKKyAgKi8KKwordm9pZCBSVENfSVRDb25maWcodWludDE2X3QgUlRDX0lULCBGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpOwordm9pZCBSVENfRW50ZXJDb25maWdNb2RlKHZvaWQpOwordm9pZCBSVENfRXhpdENvbmZpZ01vZGUodm9pZCk7Cit1aW50MzJfdCAgUlRDX0dldENvdW50ZXIodm9pZCk7Cit2b2lkIFJUQ19TZXRDb3VudGVyKHVpbnQzMl90IENvdW50ZXJWYWx1ZSk7Cit2b2lkIFJUQ19TZXRQcmVzY2FsZXIodWludDMyX3QgUHJlc2NhbGVyVmFsdWUpOwordm9pZCBSVENfU2V0QWxhcm0odWludDMyX3QgQWxhcm1WYWx1ZSk7Cit1aW50MzJfdCAgUlRDX0dldERpdmlkZXIodm9pZCk7Cit2b2lkIFJUQ19XYWl0Rm9yTGFzdFRhc2sodm9pZCk7Cit2b2lkIFJUQ19XYWl0Rm9yU3luY2hybyh2b2lkKTsKK0ZsYWdTdGF0dXMgUlRDX0dldEZsYWdTdGF0dXModWludDE2X3QgUlRDX0ZMQUcpOwordm9pZCBSVENfQ2xlYXJGbGFnKHVpbnQxNl90IFJUQ19GTEFHKTsKK0lUU3RhdHVzIFJUQ19HZXRJVFN0YXR1cyh1aW50MTZfdCBSVENfSVQpOwordm9pZCBSVENfQ2xlYXJJVFBlbmRpbmdCaXQodWludDE2X3QgUlRDX0lUKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8qIF9fU1RNMzJGMTB4X1JUQ19IICovCisvKioKKyAgKiBAfQorICAqLworCisvKioKKyAgKiBAfQorICAqLworCisvKioKKyAgKiBAfQorICAqLworCisvKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIDIwMTEgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvc3RfZndfbGliL2luYy9zdG0zMmYxMHhfc2Rpby5oIGIvc3RfZndfbGliL2luYy9zdG0zMmYxMHhfc2Rpby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxYzA1OGEKLS0tIC9kZXYvbnVsbAorKysgYi9zdF9md19saWIvaW5jL3N0bTMyZjEweF9zZGlvLmgKQEAgLTAsMCArMSw1MzEgQEAKKy8qKgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKiBAZmlsZSAgICBzdG0zMmYxMHhfc2Rpby5oCisgICogQGF1dGhvciAgTUNEIEFwcGxpY2F0aW9uIFRlYW0KKyAgKiBAdmVyc2lvbiBWMy41LjAKKyAgKiBAZGF0ZSAgICAxMS1NYXJjaC0yMDExCisgICogQGJyaWVmICAgVGhpcyBmaWxlIGNvbnRhaW5zIGFsbCB0aGUgZnVuY3Rpb25zIHByb3RvdHlwZXMgZm9yIHRoZSBTRElPIGZpcm13YXJlCisgICogICAgICAgICAgbGlicmFyeS4KKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICogQGF0dGVudGlvbgorICAqCisgICogVEhFIFBSRVNFTlQgRklSTVdBUkUgV0hJQ0ggSVMgRk9SIEdVSURBTkNFIE9OTFkgQUlNUyBBVCBQUk9WSURJTkcgQ1VTVE9NRVJTCisgICogV0lUSCBDT0RJTkcgSU5GT1JNQVRJT04gUkVHQVJESU5HIFRIRUlSIFBST0RVQ1RTIElOIE9SREVSIEZPUiBUSEVNIFRPIFNBVkUKKyAgKiBUSU1FLiBBUyBBIFJFU1VMVCwgU1RNSUNST0VMRUNUUk9OSUNTIFNIQUxMIE5PVCBCRSBIRUxEIExJQUJMRSBGT1IgQU5ZCisgICogRElSRUNULCBJTkRJUkVDVCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgV0lUSCBSRVNQRUNUIFRPIEFOWSBDTEFJTVMgQVJJU0lORworICAqIEZST00gVEhFIENPTlRFTlQgT0YgU1VDSCBGSVJNV0FSRSBBTkQvT1IgVEhFIFVTRSBNQURFIEJZIENVU1RPTUVSUyBPRiBUSEUKKyAgKiBDT0RJTkcgSU5GT1JNQVRJT04gQ09OVEFJTkVEIEhFUkVJTiBJTiBDT05ORUNUSU9OIFdJVEggVEhFSVIgUFJPRFVDVFMuCisgICoKKyAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ09QWVJJR0hUIDIwMTEgU1RNaWNyb2VsZWN0cm9uaWNzPC9jZW50ZXI+PC9oMj4KKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICovCisKKy8qIERlZmluZSB0byBwcmV2ZW50IHJlY3Vyc2l2ZSBpbmNsdXNpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisjaWZuZGVmIF9fU1RNMzJGMTB4X1NESU9fSAorI2RlZmluZSBfX1NUTTMyRjEweF9TRElPX0gKKworI2lmZGVmIF9fY3BsdXNwbHVzCisgZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLyogSW5jbHVkZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyNpbmNsdWRlICJzdG0zMmYxMHguaCIKKworLyoqIEBhZGR0b2dyb3VwIFNUTTMyRjEweF9TdGRQZXJpcGhfRHJpdmVyCisgICogQHsKKyAgKi8KKworLyoqIEBhZGR0b2dyb3VwIFNESU8KKyAgKiBAeworICAqLworCisvKiogQGRlZmdyb3VwIFNESU9fRXhwb3J0ZWRfVHlwZXMKKyAgKiBAeworICAqLworCit0eXBlZGVmIHN0cnVjdAoreworICB1aW50MzJfdCBTRElPX0Nsb2NrRWRnZTsgICAgICAgICAgICAvKiE8IFNwZWNpZmllcyB0aGUgY2xvY2sgdHJhbnNpdGlvbiBvbiB3aGljaCB0aGUgYml0IGNhcHR1cmUgaXMgbWFkZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIFNESU9fQ2xvY2tfRWRnZSAqLworCisgIHVpbnQzMl90IFNESU9fQ2xvY2tCeXBhc3M7ICAgICAgICAgIC8qITwgU3BlY2lmaWVzIHdoZXRoZXIgdGhlIFNESU8gQ2xvY2sgZGl2aWRlciBieXBhc3MgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVkIG9yIGRpc2FibGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgU0RJT19DbG9ja19CeXBhc3MgKi8KKworICB1aW50MzJfdCBTRElPX0Nsb2NrUG93ZXJTYXZlOyAgICAgICAvKiE8IFNwZWNpZmllcyB3aGV0aGVyIFNESU8gQ2xvY2sgb3V0cHV0IGlzIGVuYWJsZWQgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZCB3aGVuIHRoZSBidXMgaXMgaWRsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIFNESU9fQ2xvY2tfUG93ZXJfU2F2ZSAqLworCisgIHVpbnQzMl90IFNESU9fQnVzV2lkZTsgICAgICAgICAgICAgIC8qITwgU3BlY2lmaWVzIHRoZSBTRElPIGJ1cyB3aWR0aC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIFNESU9fQnVzX1dpZGUgKi8KKworICB1aW50MzJfdCBTRElPX0hhcmR3YXJlRmxvd0NvbnRyb2w7ICAvKiE8IFNwZWNpZmllcyB3aGV0aGVyIHRoZSBTRElPIGhhcmR3YXJlIGZsb3cgY29udHJvbCBpcyBlbmFibGVkIG9yIGRpc2FibGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgU0RJT19IYXJkd2FyZV9GbG93X0NvbnRyb2wgKi8KKworICB1aW50OF90IFNESU9fQ2xvY2tEaXY7ICAgICAgICAgICAgICAvKiE8IFNwZWNpZmllcyB0aGUgY2xvY2sgZnJlcXVlbmN5IG9mIHRoZSBTRElPIGNvbnRyb2xsZXIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgYmV0d2VlbiAweDAwIGFuZCAweEZGLiAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorfSBTRElPX0luaXRUeXBlRGVmOworCit0eXBlZGVmIHN0cnVjdAoreworICB1aW50MzJfdCBTRElPX0FyZ3VtZW50OyAgLyohPCBTcGVjaWZpZXMgdGhlIFNESU8gY29tbWFuZCBhcmd1bWVudCB3aGljaCBpcyBzZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGEgY2FyZCBhcyBwYXJ0IG9mIGEgY29tbWFuZCBtZXNzYWdlLiBJZiBhIGNvbW1hbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbnMgYW4gYXJndW1lbnQsIGl0IG11c3QgYmUgbG9hZGVkIGludG8gdGhpcyByZWdpc3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWZvcmUgd3JpdGluZyB0aGUgY29tbWFuZCB0byB0aGUgY29tbWFuZCByZWdpc3RlciAqLworCisgIHVpbnQzMl90IFNESU9fQ21kSW5kZXg7ICAvKiE8IFNwZWNpZmllcyB0aGUgU0RJTyBjb21tYW5kIGluZGV4LiBJdCBtdXN0IGJlIGxvd2VyIHRoYW4gMHg0MC4gKi8KKworICB1aW50MzJfdCBTRElPX1Jlc3BvbnNlOyAgLyohPCBTcGVjaWZpZXMgdGhlIFNESU8gcmVzcG9uc2UgdHlwZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBTRElPX1Jlc3BvbnNlX1R5cGUgKi8KKworICB1aW50MzJfdCBTRElPX1dhaXQ7ICAgICAgLyohPCBTcGVjaWZpZXMgd2hldGhlciBTRElPIHdhaXQtZm9yLWludGVycnVwdCByZXF1ZXN0IGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgU0RJT19XYWl0X0ludGVycnVwdF9TdGF0ZSAqLworCisgIHVpbnQzMl90IFNESU9fQ1BTTTsgICAgICAvKiE8IFNwZWNpZmllcyB3aGV0aGVyIFNESU8gQ29tbWFuZCBwYXRoIHN0YXRlIG1hY2hpbmUgKENQU00pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgU0RJT19DUFNNX1N0YXRlICovCit9IFNESU9fQ21kSW5pdFR5cGVEZWY7CisKK3R5cGVkZWYgc3RydWN0Cit7CisgIHVpbnQzMl90IFNESU9fRGF0YVRpbWVPdXQ7ICAgIC8qITwgU3BlY2lmaWVzIHRoZSBkYXRhIHRpbWVvdXQgcGVyaW9kIGluIGNhcmQgYnVzIGNsb2NrIHBlcmlvZHMuICovCisKKyAgdWludDMyX3QgU0RJT19EYXRhTGVuZ3RoOyAgICAgLyohPCBTcGVjaWZpZXMgdGhlIG51bWJlciBvZiBkYXRhIGJ5dGVzIHRvIGJlIHRyYW5zZmVycmVkLiAqLworIAorICB1aW50MzJfdCBTRElPX0RhdGFCbG9ja1NpemU7ICAvKiE8IFNwZWNpZmllcyB0aGUgZGF0YSBibG9jayBzaXplIGZvciBibG9jayB0cmFuc2Zlci4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIFNESU9fRGF0YV9CbG9ja19TaXplICovCisgCisgIHVpbnQzMl90IFNESU9fVHJhbnNmZXJEaXI7ICAgIC8qITwgU3BlY2lmaWVzIHRoZSBkYXRhIHRyYW5zZmVyIGRpcmVjdGlvbiwgd2hldGhlciB0aGUgdHJhbnNmZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBhIHJlYWQgb3Igd3JpdGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBTRElPX1RyYW5zZmVyX0RpcmVjdGlvbiAqLworIAorICB1aW50MzJfdCBTRElPX1RyYW5zZmVyTW9kZTsgICAvKiE8IFNwZWNpZmllcyB3aGV0aGVyIGRhdGEgdHJhbnNmZXIgaXMgaW4gc3RyZWFtIG9yIGJsb2NrIG1vZGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBTRElPX1RyYW5zZmVyX1R5cGUgKi8KKyAKKyAgdWludDMyX3QgU0RJT19EUFNNOyAgICAgICAgICAgLyohPCBTcGVjaWZpZXMgd2hldGhlciBTRElPIERhdGEgcGF0aCBzdGF0ZSBtYWNoaW5lIChEUFNNKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBTRElPX0RQU01fU3RhdGUgKi8KK30gU0RJT19EYXRhSW5pdFR5cGVEZWY7CisKKy8qKgorICAqIEB9CisgICovIAorCisvKiogQGRlZmdyb3VwIFNESU9fRXhwb3J0ZWRfQ29uc3RhbnRzCisgICogQHsKKyAgKi8KKworLyoqIEBkZWZncm91cCBTRElPX0Nsb2NrX0VkZ2UgCisgICogQHsKKyAgKi8KKworI2RlZmluZSBTRElPX0Nsb2NrRWRnZV9SaXNpbmcgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDApCisjZGVmaW5lIFNESU9fQ2xvY2tFZGdlX0ZhbGxpbmcgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMjAwMCkKKyNkZWZpbmUgSVNfU0RJT19DTE9DS19FREdFKEVER0UpICgoKEVER0UpID09IFNESU9fQ2xvY2tFZGdlX1Jpc2luZykgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRURHRSkgPT0gU0RJT19DbG9ja0VkZ2VfRmFsbGluZykpCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIFNESU9fQ2xvY2tfQnlwYXNzIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgU0RJT19DbG9ja0J5cGFzc19EaXNhYmxlICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMCkKKyNkZWZpbmUgU0RJT19DbG9ja0J5cGFzc19FbmFibGUgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDQwMCkgICAgCisjZGVmaW5lIElTX1NESU9fQ0xPQ0tfQllQQVNTKEJZUEFTUykgKCgoQllQQVNTKSA9PSBTRElPX0Nsb2NrQnlwYXNzX0Rpc2FibGUpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEJZUEFTUykgPT0gU0RJT19DbG9ja0J5cGFzc19FbmFibGUpKQorLyoqCisgICogQH0KKyAgKi8gCisKKy8qKiBAZGVmZ3JvdXAgU0RJT19DbG9ja19Qb3dlcl9TYXZlIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgU0RJT19DbG9ja1Bvd2VyU2F2ZV9EaXNhYmxlICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAwKQorI2RlZmluZSBTRElPX0Nsb2NrUG93ZXJTYXZlX0VuYWJsZSAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAyMDApIAorI2RlZmluZSBJU19TRElPX0NMT0NLX1BPV0VSX1NBVkUoU0FWRSkgKCgoU0FWRSkgPT0gU0RJT19DbG9ja1Bvd2VyU2F2ZV9EaXNhYmxlKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChTQVZFKSA9PSBTRElPX0Nsb2NrUG93ZXJTYXZlX0VuYWJsZSkpCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIFNESU9fQnVzX1dpZGUgCisgICogQHsKKyAgKi8KKworI2RlZmluZSBTRElPX0J1c1dpZGVfMWIgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDApCisjZGVmaW5lIFNESU9fQnVzV2lkZV80YiAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkKKyNkZWZpbmUgU0RJT19CdXNXaWRlXzhiICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKQorI2RlZmluZSBJU19TRElPX0JVU19XSURFKFdJREUpICgoKFdJREUpID09IFNESU9fQnVzV2lkZV8xYikgfHwgKChXSURFKSA9PSBTRElPX0J1c1dpZGVfNGIpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChXSURFKSA9PSBTRElPX0J1c1dpZGVfOGIpKQorCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIFNESU9fSGFyZHdhcmVfRmxvd19Db250cm9sIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgU0RJT19IYXJkd2FyZUZsb3dDb250cm9sX0Rpc2FibGUgICAgKCh1aW50MzJfdCkweDAwMDAwMDAwKQorI2RlZmluZSBTRElPX0hhcmR3YXJlRmxvd0NvbnRyb2xfRW5hYmxlICAgICAoKHVpbnQzMl90KTB4MDAwMDQwMDApCisjZGVmaW5lIElTX1NESU9fSEFSRFdBUkVfRkxPV19DT05UUk9MKENPTlRST0wpICgoKENPTlRST0wpID09IFNESU9fSGFyZHdhcmVGbG93Q29udHJvbF9EaXNhYmxlKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKENPTlRST0wpID09IFNESU9fSGFyZHdhcmVGbG93Q29udHJvbF9FbmFibGUpKQorLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBTRElPX1Bvd2VyX1N0YXRlIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgU0RJT19Qb3dlclN0YXRlX09GRiAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAwKQorI2RlZmluZSBTRElPX1Bvd2VyU3RhdGVfT04gICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDMpCisjZGVmaW5lIElTX1NESU9fUE9XRVJfU1RBVEUoU1RBVEUpICgoKFNUQVRFKSA9PSBTRElPX1Bvd2VyU3RhdGVfT0ZGKSB8fCAoKFNUQVRFKSA9PSBTRElPX1Bvd2VyU3RhdGVfT04pKSAKKy8qKgorICAqIEB9CisgICovIAorCisKKy8qKiBAZGVmZ3JvdXAgU0RJT19JbnRlcnJ1cHRfc291cmNlcyAKKyAgKiBAeworICAqLworCisjZGVmaW5lIFNESU9fSVRfQ0NSQ0ZBSUwgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkKKyNkZWZpbmUgU0RJT19JVF9EQ1JDRkFJTCAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAyKQorI2RlZmluZSBTRElPX0lUX0NUSU1FT1VUICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDQpCisjZGVmaW5lIFNESU9fSVRfRFRJTUVPVVQgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkKKyNkZWZpbmUgU0RJT19JVF9UWFVOREVSUiAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDEwKQorI2RlZmluZSBTRElPX0lUX1JYT1ZFUlIgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMjApCisjZGVmaW5lIFNESU9fSVRfQ01EUkVORCAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkKKyNkZWZpbmUgU0RJT19JVF9DTURTRU5UICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDgwKQorI2RlZmluZSBTRElPX0lUX0RBVEFFTkQgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAxMDApCisjZGVmaW5lIFNESU9fSVRfU1RCSVRFUlIgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkKKyNkZWZpbmUgU0RJT19JVF9EQkNLRU5EICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwNDAwKQorI2RlZmluZSBTRElPX0lUX0NNREFDVCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA4MDApCisjZGVmaW5lIFNESU9fSVRfVFhBQ1QgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMTAwMCkKKyNkZWZpbmUgU0RJT19JVF9SWEFDVCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAyMDAwKQorI2RlZmluZSBTRElPX0lUX1RYRklGT0hFICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDQwMDApCisjZGVmaW5lIFNESU9fSVRfUlhGSUZPSEYgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwODAwMCkKKyNkZWZpbmUgU0RJT19JVF9UWEZJRk9GICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDEwMDAwKQorI2RlZmluZSBTRElPX0lUX1JYRklGT0YgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMjAwMDApCisjZGVmaW5lIFNESU9fSVRfVFhGSUZPRSAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA0MDAwMCkKKyNkZWZpbmUgU0RJT19JVF9SWEZJRk9FICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDgwMDAwKQorI2RlZmluZSBTRElPX0lUX1RYREFWTCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAxMDAwMDApCisjZGVmaW5lIFNESU9fSVRfUlhEQVZMICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDIwMDAwMCkKKyNkZWZpbmUgU0RJT19JVF9TRElPSVQgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwNDAwMDAwKQorI2RlZmluZSBTRElPX0lUX0NFQVRBRU5EICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA4MDAwMDApCisjZGVmaW5lIElTX1NESU9fSVQoSVQpICgoKChJVCkgJiAodWludDMyX3QpMHhGRjAwMDAwMCkgPT0gMHgwMCkgJiYgKChJVCkgIT0gKHVpbnQzMl90KTB4MDApKQorLyoqCisgICogQH0KKyAgKi8gCisKKy8qKiBAZGVmZ3JvdXAgU0RJT19Db21tYW5kX0luZGV4CisgICogQHsKKyAgKi8KKworI2RlZmluZSBJU19TRElPX0NNRF9JTkRFWChJTkRFWCkgICAgICAgICAgICAoKElOREVYKSA8IDB4NDApCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIFNESU9fUmVzcG9uc2VfVHlwZSAKKyAgKiBAeworICAqLworCisjZGVmaW5lIFNESU9fUmVzcG9uc2VfTm8gICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMCkKKyNkZWZpbmUgU0RJT19SZXNwb25zZV9TaG9ydCAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDQwKQorI2RlZmluZSBTRElPX1Jlc3BvbnNlX0xvbmcgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwQzApCisjZGVmaW5lIElTX1NESU9fUkVTUE9OU0UoUkVTUE9OU0UpICgoKFJFU1BPTlNFKSA9PSBTRElPX1Jlc3BvbnNlX05vKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFJFU1BPTlNFKSA9PSBTRElPX1Jlc3BvbnNlX1Nob3J0KSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFJFU1BPTlNFKSA9PSBTRElPX1Jlc3BvbnNlX0xvbmcpKQorLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBTRElPX1dhaXRfSW50ZXJydXB0X1N0YXRlIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgU0RJT19XYWl0X05vICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAwKSAvKiE8IFNESU8gTm8gV2FpdCwgVGltZU91dCBpcyBlbmFibGVkICovCisjZGVmaW5lIFNESU9fV2FpdF9JVCAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDEwMCkgLyohPCBTRElPIFdhaXQgSW50ZXJydXB0IFJlcXVlc3QgKi8KKyNkZWZpbmUgU0RJT19XYWl0X1BlbmQgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMjAwKSAvKiE8IFNESU8gV2FpdCBFbmQgb2YgdHJhbnNmZXIgKi8KKyNkZWZpbmUgSVNfU0RJT19XQUlUKFdBSVQpICgoKFdBSVQpID09IFNESU9fV2FpdF9ObykgfHwgKChXQUlUKSA9PSBTRElPX1dhaXRfSVQpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFdBSVQpID09IFNESU9fV2FpdF9QZW5kKSkKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgU0RJT19DUFNNX1N0YXRlIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgU0RJT19DUFNNX0Rpc2FibGUgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMCkKKyNkZWZpbmUgU0RJT19DUFNNX0VuYWJsZSAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDQwMCkKKyNkZWZpbmUgSVNfU0RJT19DUFNNKENQU00pICgoKENQU00pID09IFNESU9fQ1BTTV9FbmFibGUpIHx8ICgoQ1BTTSkgPT0gU0RJT19DUFNNX0Rpc2FibGUpKQorLyoqCisgICogQH0KKyAgKi8gCisKKy8qKiBAZGVmZ3JvdXAgU0RJT19SZXNwb25zZV9SZWdpc3RlcnMgCisgICogQHsKKyAgKi8KKworI2RlZmluZSBTRElPX1JFU1AxICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDApCisjZGVmaW5lIFNESU9fUkVTUDIgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNCkKKyNkZWZpbmUgU0RJT19SRVNQMyAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA4KQorI2RlZmluZSBTRElPX1JFU1A0ICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMEMpCisjZGVmaW5lIElTX1NESU9fUkVTUChSRVNQKSAoKChSRVNQKSA9PSBTRElPX1JFU1AxKSB8fCAoKFJFU1ApID09IFNESU9fUkVTUDIpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFJFU1ApID09IFNESU9fUkVTUDMpIHx8ICgoUkVTUCkgPT0gU0RJT19SRVNQNCkpCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIFNESU9fRGF0YV9MZW5ndGggCisgICogQHsKKyAgKi8KKworI2RlZmluZSBJU19TRElPX0RBVEFfTEVOR1RIKExFTkdUSCkgKChMRU5HVEgpIDw9IDB4MDFGRkZGRkYpCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIFNESU9fRGF0YV9CbG9ja19TaXplIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgU0RJT19EYXRhQmxvY2tTaXplXzFiICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAwKQorI2RlZmluZSBTRElPX0RhdGFCbG9ja1NpemVfMmIgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApCisjZGVmaW5lIFNESU9fRGF0YUJsb2NrU2l6ZV80YiAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAyMCkKKyNkZWZpbmUgU0RJT19EYXRhQmxvY2tTaXplXzhiICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDMwKQorI2RlZmluZSBTRElPX0RhdGFCbG9ja1NpemVfMTZiICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwNDApCisjZGVmaW5lIFNESU9fRGF0YUJsb2NrU2l6ZV8zMmIgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA1MCkKKyNkZWZpbmUgU0RJT19EYXRhQmxvY2tTaXplXzY0YiAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDYwKQorI2RlZmluZSBTRElPX0RhdGFCbG9ja1NpemVfMTI4YiAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwNzApCisjZGVmaW5lIFNESU9fRGF0YUJsb2NrU2l6ZV8yNTZiICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA4MCkKKyNkZWZpbmUgU0RJT19EYXRhQmxvY2tTaXplXzUxMmIgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDkwKQorI2RlZmluZSBTRElPX0RhdGFCbG9ja1NpemVfMTAyNGIgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwQTApCisjZGVmaW5lIFNESU9fRGF0YUJsb2NrU2l6ZV8yMDQ4YiAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDBCMCkKKyNkZWZpbmUgU0RJT19EYXRhQmxvY2tTaXplXzQwOTZiICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMEMwKQorI2RlZmluZSBTRElPX0RhdGFCbG9ja1NpemVfODE5MmIgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwRDApCisjZGVmaW5lIFNESU9fRGF0YUJsb2NrU2l6ZV8xNjM4NGIgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDBFMCkKKyNkZWZpbmUgSVNfU0RJT19CTE9DS19TSVpFKFNJWkUpICgoKFNJWkUpID09IFNESU9fRGF0YUJsb2NrU2l6ZV8xYikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoU0laRSkgPT0gU0RJT19EYXRhQmxvY2tTaXplXzJiKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChTSVpFKSA9PSBTRElPX0RhdGFCbG9ja1NpemVfNGIpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFNJWkUpID09IFNESU9fRGF0YUJsb2NrU2l6ZV84YikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoU0laRSkgPT0gU0RJT19EYXRhQmxvY2tTaXplXzE2YikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoU0laRSkgPT0gU0RJT19EYXRhQmxvY2tTaXplXzMyYikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoU0laRSkgPT0gU0RJT19EYXRhQmxvY2tTaXplXzY0YikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoU0laRSkgPT0gU0RJT19EYXRhQmxvY2tTaXplXzEyOGIpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFNJWkUpID09IFNESU9fRGF0YUJsb2NrU2l6ZV8yNTZiKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChTSVpFKSA9PSBTRElPX0RhdGFCbG9ja1NpemVfNTEyYikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoU0laRSkgPT0gU0RJT19EYXRhQmxvY2tTaXplXzEwMjRiKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChTSVpFKSA9PSBTRElPX0RhdGFCbG9ja1NpemVfMjA0OGIpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFNJWkUpID09IFNESU9fRGF0YUJsb2NrU2l6ZV80MDk2YikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoU0laRSkgPT0gU0RJT19EYXRhQmxvY2tTaXplXzgxOTJiKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChTSVpFKSA9PSBTRElPX0RhdGFCbG9ja1NpemVfMTYzODRiKSkgCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIFNESU9fVHJhbnNmZXJfRGlyZWN0aW9uIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgU0RJT19UcmFuc2ZlckRpcl9Ub0NhcmQgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAwKQorI2RlZmluZSBTRElPX1RyYW5zZmVyRGlyX1RvU0RJTyAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpCisjZGVmaW5lIElTX1NESU9fVFJBTlNGRVJfRElSKERJUikgKCgoRElSKSA9PSBTRElPX1RyYW5zZmVyRGlyX1RvQ2FyZCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKERJUikgPT0gU0RJT19UcmFuc2ZlckRpcl9Ub1NESU8pKQorLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBTRElPX1RyYW5zZmVyX1R5cGUgCisgICogQHsKKyAgKi8KKworI2RlZmluZSBTRElPX1RyYW5zZmVyTW9kZV9CbG9jayAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDApCisjZGVmaW5lIFNESU9fVHJhbnNmZXJNb2RlX1N0cmVhbSAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNCkKKyNkZWZpbmUgSVNfU0RJT19UUkFOU0ZFUl9NT0RFKE1PREUpICgoKE1PREUpID09IFNESU9fVHJhbnNmZXJNb2RlX1N0cmVhbSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTU9ERSkgPT0gU0RJT19UcmFuc2Zlck1vZGVfQmxvY2spKQorLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBTRElPX0RQU01fU3RhdGUgCisgICogQHsKKyAgKi8KKworI2RlZmluZSBTRElPX0RQU01fRGlzYWJsZSAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAwKQorI2RlZmluZSBTRElPX0RQU01fRW5hYmxlICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxKQorI2RlZmluZSBJU19TRElPX0RQU00oRFBTTSkgKCgoRFBTTSkgPT0gU0RJT19EUFNNX0VuYWJsZSkgfHwgKChEUFNNKSA9PSBTRElPX0RQU01fRGlzYWJsZSkpCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIFNESU9fRmxhZ3MgCisgICogQHsKKyAgKi8KKworI2RlZmluZSBTRElPX0ZMQUdfQ0NSQ0ZBSUwgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDEpCisjZGVmaW5lIFNESU9fRkxBR19EQ1JDRkFJTCAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMikKKyNkZWZpbmUgU0RJT19GTEFHX0NUSU1FT1VUICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KQorI2RlZmluZSBTRElPX0ZMQUdfRFRJTUVPVVQgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDgpCisjZGVmaW5lIFNESU9fRkxBR19UWFVOREVSUiAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAxMCkKKyNkZWZpbmUgU0RJT19GTEFHX1JYT1ZFUlIgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKQorI2RlZmluZSBTRElPX0ZMQUdfQ01EUkVORCAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwNDApCisjZGVmaW5lIFNESU9fRkxBR19DTURTRU5UICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA4MCkKKyNkZWZpbmUgU0RJT19GTEFHX0RBVEFFTkQgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKQorI2RlZmluZSBTRElPX0ZMQUdfU1RCSVRFUlIgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAyMDApCisjZGVmaW5lIFNESU9fRkxBR19EQkNLRU5EICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDQwMCkKKyNkZWZpbmUgU0RJT19GTEFHX0NNREFDVCAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwODAwKQorI2RlZmluZSBTRElPX0ZMQUdfVFhBQ1QgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDEwMDApCisjZGVmaW5lIFNESU9fRkxBR19SWEFDVCAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMjAwMCkKKyNkZWZpbmUgU0RJT19GTEFHX1RYRklGT0hFICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA0MDAwKQorI2RlZmluZSBTRElPX0ZMQUdfUlhGSUZPSEYgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDgwMDApCisjZGVmaW5lIFNESU9fRkxBR19UWEZJRk9GICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAxMDAwMCkKKyNkZWZpbmUgU0RJT19GTEFHX1JYRklGT0YgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDIwMDAwKQorI2RlZmluZSBTRElPX0ZMQUdfVFhGSUZPRSAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwNDAwMDApCisjZGVmaW5lIFNESU9fRkxBR19SWEZJRk9FICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA4MDAwMCkKKyNkZWZpbmUgU0RJT19GTEFHX1RYREFWTCAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMTAwMDAwKQorI2RlZmluZSBTRElPX0ZMQUdfUlhEQVZMICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAyMDAwMDApCisjZGVmaW5lIFNESU9fRkxBR19TRElPSVQgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDQwMDAwMCkKKyNkZWZpbmUgU0RJT19GTEFHX0NFQVRBRU5EICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwODAwMDAwKQorI2RlZmluZSBJU19TRElPX0ZMQUcoRkxBRykgKCgoRkxBRykgID09IFNESU9fRkxBR19DQ1JDRkFJTCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRkxBRykgID09IFNESU9fRkxBR19EQ1JDRkFJTCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRkxBRykgID09IFNESU9fRkxBR19DVElNRU9VVCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRkxBRykgID09IFNESU9fRkxBR19EVElNRU9VVCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRkxBRykgID09IFNESU9fRkxBR19UWFVOREVSUikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRkxBRykgID09IFNESU9fRkxBR19SWE9WRVJSKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChGTEFHKSAgPT0gU0RJT19GTEFHX0NNRFJFTkQpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEZMQUcpICA9PSBTRElPX0ZMQUdfQ01EU0VOVCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRkxBRykgID09IFNESU9fRkxBR19EQVRBRU5EKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChGTEFHKSAgPT0gU0RJT19GTEFHX1NUQklURVJSKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChGTEFHKSAgPT0gU0RJT19GTEFHX0RCQ0tFTkQpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEZMQUcpICA9PSBTRElPX0ZMQUdfQ01EQUNUKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChGTEFHKSAgPT0gU0RJT19GTEFHX1RYQUNUKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChGTEFHKSAgPT0gU0RJT19GTEFHX1JYQUNUKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChGTEFHKSAgPT0gU0RJT19GTEFHX1RYRklGT0hFKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChGTEFHKSAgPT0gU0RJT19GTEFHX1JYRklGT0hGKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChGTEFHKSAgPT0gU0RJT19GTEFHX1RYRklGT0YpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEZMQUcpICA9PSBTRElPX0ZMQUdfUlhGSUZPRikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRkxBRykgID09IFNESU9fRkxBR19UWEZJRk9FKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChGTEFHKSAgPT0gU0RJT19GTEFHX1JYRklGT0UpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEZMQUcpICA9PSBTRElPX0ZMQUdfVFhEQVZMKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChGTEFHKSAgPT0gU0RJT19GTEFHX1JYREFWTCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRkxBRykgID09IFNESU9fRkxBR19TRElPSVQpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEZMQUcpICA9PSBTRElPX0ZMQUdfQ0VBVEFFTkQpKQorCisjZGVmaW5lIElTX1NESU9fQ0xFQVJfRkxBRyhGTEFHKSAoKCgoRkxBRykgJiAodWludDMyX3QpMHhGRjNGRjgwMCkgPT0gMHgwMCkgJiYgKChGTEFHKSAhPSAodWludDMyX3QpMHgwMCkpCisKKyNkZWZpbmUgSVNfU0RJT19HRVRfSVQoSVQpICgoKElUKSAgPT0gU0RJT19JVF9DQ1JDRkFJTCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoSVQpICA9PSBTRElPX0lUX0RDUkNGQUlMKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJVCkgID09IFNESU9fSVRfQ1RJTUVPVVQpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKElUKSAgPT0gU0RJT19JVF9EVElNRU9VVCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoSVQpICA9PSBTRElPX0lUX1RYVU5ERVJSKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJVCkgID09IFNESU9fSVRfUlhPVkVSUikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoSVQpICA9PSBTRElPX0lUX0NNRFJFTkQpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKElUKSAgPT0gU0RJT19JVF9DTURTRU5UKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJVCkgID09IFNESU9fSVRfREFUQUVORCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoSVQpICA9PSBTRElPX0lUX1NUQklURVJSKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJVCkgID09IFNESU9fSVRfREJDS0VORCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoSVQpICA9PSBTRElPX0lUX0NNREFDVCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoSVQpICA9PSBTRElPX0lUX1RYQUNUKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJVCkgID09IFNESU9fSVRfUlhBQ1QpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKElUKSAgPT0gU0RJT19JVF9UWEZJRk9IRSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoSVQpICA9PSBTRElPX0lUX1JYRklGT0hGKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJVCkgID09IFNESU9fSVRfVFhGSUZPRikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoSVQpICA9PSBTRElPX0lUX1JYRklGT0YpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKElUKSAgPT0gU0RJT19JVF9UWEZJRk9FKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJVCkgID09IFNESU9fSVRfUlhGSUZPRSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoSVQpICA9PSBTRElPX0lUX1RYREFWTCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoSVQpICA9PSBTRElPX0lUX1JYREFWTCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoSVQpICA9PSBTRElPX0lUX1NESU9JVCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoSVQpICA9PSBTRElPX0lUX0NFQVRBRU5EKSkKKworI2RlZmluZSBJU19TRElPX0NMRUFSX0lUKElUKSAoKCgoSVQpICYgKHVpbnQzMl90KTB4RkYzRkY4MDApID09IDB4MDApICYmICgoSVQpICE9ICh1aW50MzJfdCkweDAwKSkKKworLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBTRElPX1JlYWRfV2FpdF9Nb2RlIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgU0RJT19SZWFkV2FpdE1vZGVfQ0xLICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxKQorI2RlZmluZSBTRElPX1JlYWRXYWl0TW9kZV9EQVRBMiAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDApCisjZGVmaW5lIElTX1NESU9fUkVBRFdBSVRfTU9ERShNT0RFKSAoKChNT0RFKSA9PSBTRElPX1JlYWRXYWl0TW9kZV9DTEspIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE1PREUpID09IFNESU9fUmVhZFdhaXRNb2RlX0RBVEEyKSkKKy8qKgorICAqIEB9CisgICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgU0RJT19FeHBvcnRlZF9NYWNyb3MKKyAgKiBAeworICAqLworCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIFNESU9fRXhwb3J0ZWRfRnVuY3Rpb25zCisgICogQHsKKyAgKi8KKwordm9pZCBTRElPX0RlSW5pdCh2b2lkKTsKK3ZvaWQgU0RJT19Jbml0KFNESU9fSW5pdFR5cGVEZWYqIFNESU9fSW5pdFN0cnVjdCk7Cit2b2lkIFNESU9fU3RydWN0SW5pdChTRElPX0luaXRUeXBlRGVmKiBTRElPX0luaXRTdHJ1Y3QpOwordm9pZCBTRElPX0Nsb2NrQ21kKEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSk7Cit2b2lkIFNESU9fU2V0UG93ZXJTdGF0ZSh1aW50MzJfdCBTRElPX1Bvd2VyU3RhdGUpOwordWludDMyX3QgU0RJT19HZXRQb3dlclN0YXRlKHZvaWQpOwordm9pZCBTRElPX0lUQ29uZmlnKHVpbnQzMl90IFNESU9fSVQsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSk7Cit2b2lkIFNESU9fRE1BQ21kKEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSk7Cit2b2lkIFNESU9fU2VuZENvbW1hbmQoU0RJT19DbWRJbml0VHlwZURlZiAqU0RJT19DbWRJbml0U3RydWN0KTsKK3ZvaWQgU0RJT19DbWRTdHJ1Y3RJbml0KFNESU9fQ21kSW5pdFR5cGVEZWYqIFNESU9fQ21kSW5pdFN0cnVjdCk7Cit1aW50OF90IFNESU9fR2V0Q29tbWFuZFJlc3BvbnNlKHZvaWQpOwordWludDMyX3QgU0RJT19HZXRSZXNwb25zZSh1aW50MzJfdCBTRElPX1JFU1ApOwordm9pZCBTRElPX0RhdGFDb25maWcoU0RJT19EYXRhSW5pdFR5cGVEZWYqIFNESU9fRGF0YUluaXRTdHJ1Y3QpOwordm9pZCBTRElPX0RhdGFTdHJ1Y3RJbml0KFNESU9fRGF0YUluaXRUeXBlRGVmKiBTRElPX0RhdGFJbml0U3RydWN0KTsKK3VpbnQzMl90IFNESU9fR2V0RGF0YUNvdW50ZXIodm9pZCk7Cit1aW50MzJfdCBTRElPX1JlYWREYXRhKHZvaWQpOwordm9pZCBTRElPX1dyaXRlRGF0YSh1aW50MzJfdCBEYXRhKTsKK3VpbnQzMl90IFNESU9fR2V0RklGT0NvdW50KHZvaWQpOwordm9pZCBTRElPX1N0YXJ0U0RJT1JlYWRXYWl0KEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSk7Cit2b2lkIFNESU9fU3RvcFNESU9SZWFkV2FpdChGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpOwordm9pZCBTRElPX1NldFNESU9SZWFkV2FpdE1vZGUodWludDMyX3QgU0RJT19SZWFkV2FpdE1vZGUpOwordm9pZCBTRElPX1NldFNESU9PcGVyYXRpb24oRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKTsKK3ZvaWQgU0RJT19TZW5kU0RJT1N1c3BlbmRDbWQoRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKTsKK3ZvaWQgU0RJT19Db21tYW5kQ29tcGxldGlvbkNtZChGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpOwordm9pZCBTRElPX0NFQVRBSVRDbWQoRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKTsKK3ZvaWQgU0RJT19TZW5kQ0VBVEFDbWQoRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKTsKK0ZsYWdTdGF0dXMgU0RJT19HZXRGbGFnU3RhdHVzKHVpbnQzMl90IFNESU9fRkxBRyk7Cit2b2lkIFNESU9fQ2xlYXJGbGFnKHVpbnQzMl90IFNESU9fRkxBRyk7CitJVFN0YXR1cyBTRElPX0dldElUU3RhdHVzKHVpbnQzMl90IFNESU9fSVQpOwordm9pZCBTRElPX0NsZWFySVRQZW5kaW5nQml0KHVpbnQzMl90IFNESU9fSVQpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyogX19TVE0zMkYxMHhfU0RJT19IICovCisvKioKKyAgKiBAfQorICAqLworCisvKioKKyAgKiBAfQorICAqLworCisvKioKKyAgKiBAfQorICAqLworCisvKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIDIwMTEgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvc3RfZndfbGliL2luYy9zdG0zMmYxMHhfc3BpLmggYi9zdF9md19saWIvaW5jL3N0bTMyZjEweF9zcGkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yM2NjMjZkCi0tLSAvZGV2L251bGwKKysrIGIvc3RfZndfbGliL2luYy9zdG0zMmYxMHhfc3BpLmgKQEAgLTAsMCArMSw0ODcgQEAKKy8qKgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKiBAZmlsZSAgICBzdG0zMmYxMHhfc3BpLmgKKyAgKiBAYXV0aG9yICBNQ0QgQXBwbGljYXRpb24gVGVhbQorICAqIEB2ZXJzaW9uIFYzLjUuMAorICAqIEBkYXRlICAgIDExLU1hcmNoLTIwMTEKKyAgKiBAYnJpZWYgICBUaGlzIGZpbGUgY29udGFpbnMgYWxsIHRoZSBmdW5jdGlvbnMgcHJvdG90eXBlcyBmb3IgdGhlIFNQSSBmaXJtd2FyZSAKKyAgKiAgICAgICAgICBsaWJyYXJ5LgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKiBAYXR0ZW50aW9uCisgICoKKyAgKiBUSEUgUFJFU0VOVCBGSVJNV0FSRSBXSElDSCBJUyBGT1IgR1VJREFOQ0UgT05MWSBBSU1TIEFUIFBST1ZJRElORyBDVVNUT01FUlMKKyAgKiBXSVRIIENPRElORyBJTkZPUk1BVElPTiBSRUdBUkRJTkcgVEhFSVIgUFJPRFVDVFMgSU4gT1JERVIgRk9SIFRIRU0gVE8gU0FWRQorICAqIFRJTUUuIEFTIEEgUkVTVUxULCBTVE1JQ1JPRUxFQ1RST05JQ1MgU0hBTEwgTk9UIEJFIEhFTEQgTElBQkxFIEZPUiBBTlkKKyAgKiBESVJFQ1QsIElORElSRUNUIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBXSVRIIFJFU1BFQ1QgVE8gQU5ZIENMQUlNUyBBUklTSU5HCisgICogRlJPTSBUSEUgQ09OVEVOVCBPRiBTVUNIIEZJUk1XQVJFIEFORC9PUiBUSEUgVVNFIE1BREUgQlkgQ1VTVE9NRVJTIE9GIFRIRQorICAqIENPRElORyBJTkZPUk1BVElPTiBDT05UQUlORUQgSEVSRUlOIElOIENPTk5FQ1RJT04gV0lUSCBUSEVJUiBQUk9EVUNUUy4KKyAgKgorICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDT1BZUklHSFQgMjAxMSBTVE1pY3JvZWxlY3Ryb25pY3M8L2NlbnRlcj48L2gyPgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKi8KKworLyogRGVmaW5lIHRvIHByZXZlbnQgcmVjdXJzaXZlIGluY2x1c2lvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyNpZm5kZWYgX19TVE0zMkYxMHhfU1BJX0gKKyNkZWZpbmUgX19TVE0zMkYxMHhfU1BJX0gKKworI2lmZGVmIF9fY3BsdXNwbHVzCisgZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLyogSW5jbHVkZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyNpbmNsdWRlICJzdG0zMmYxMHguaCIKKworLyoqIEBhZGR0b2dyb3VwIFNUTTMyRjEweF9TdGRQZXJpcGhfRHJpdmVyCisgICogQHsKKyAgKi8KKworLyoqIEBhZGR0b2dyb3VwIFNQSQorICAqIEB7CisgICovIAorCisvKiogQGRlZmdyb3VwIFNQSV9FeHBvcnRlZF9UeXBlcworICAqIEB7CisgICovCisKKy8qKiAKKyAgKiBAYnJpZWYgIFNQSSBJbml0IHN0cnVjdHVyZSBkZWZpbml0aW9uICAKKyAgKi8KKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgdWludDE2X3QgU1BJX0RpcmVjdGlvbjsgICAgICAgICAgIC8qITwgU3BlY2lmaWVzIHRoZSBTUEkgdW5pZGlyZWN0aW9uYWwgb3IgYmlkaXJlY3Rpb25hbCBkYXRhIG1vZGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgU1BJX2RhdGFfZGlyZWN0aW9uICovCisKKyAgdWludDE2X3QgU1BJX01vZGU7ICAgICAgICAgICAgICAgIC8qITwgU3BlY2lmaWVzIHRoZSBTUEkgb3BlcmF0aW5nIG1vZGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgU1BJX21vZGUgKi8KKworICB1aW50MTZfdCBTUElfRGF0YVNpemU7ICAgICAgICAgICAgLyohPCBTcGVjaWZpZXMgdGhlIFNQSSBkYXRhIHNpemUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgU1BJX2RhdGFfc2l6ZSAqLworCisgIHVpbnQxNl90IFNQSV9DUE9MOyAgICAgICAgICAgICAgICAvKiE8IFNwZWNpZmllcyB0aGUgc2VyaWFsIGNsb2NrIHN0ZWFkeSBzdGF0ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBTUElfQ2xvY2tfUG9sYXJpdHkgKi8KKworICB1aW50MTZfdCBTUElfQ1BIQTsgICAgICAgICAgICAgICAgLyohPCBTcGVjaWZpZXMgdGhlIGNsb2NrIGFjdGl2ZSBlZGdlIGZvciB0aGUgYml0IGNhcHR1cmUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgU1BJX0Nsb2NrX1BoYXNlICovCisKKyAgdWludDE2X3QgU1BJX05TUzsgICAgICAgICAgICAgICAgIC8qITwgU3BlY2lmaWVzIHdoZXRoZXIgdGhlIE5TUyBzaWduYWwgaXMgbWFuYWdlZCBieQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXJkd2FyZSAoTlNTIHBpbikgb3IgYnkgc29mdHdhcmUgdXNpbmcgdGhlIFNTSSBiaXQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgU1BJX1NsYXZlX1NlbGVjdF9tYW5hZ2VtZW50ICovCisgCisgIHVpbnQxNl90IFNQSV9CYXVkUmF0ZVByZXNjYWxlcjsgICAvKiE8IFNwZWNpZmllcyB0aGUgQmF1ZCBSYXRlIHByZXNjYWxlciB2YWx1ZSB3aGljaCB3aWxsIGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZWQgdG8gY29uZmlndXJlIHRoZSB0cmFuc21pdCBhbmQgcmVjZWl2ZSBTQ0sgY2xvY2suCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgU1BJX0JhdWRSYXRlX1ByZXNjYWxlci4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQG5vdGUgVGhlIGNvbW11bmljYXRpb24gY2xvY2sgaXMgZGVyaXZlZCBmcm9tIHRoZSBtYXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvY2suIFRoZSBzbGF2ZSBjbG9jayBkb2VzIG5vdCBuZWVkIHRvIGJlIHNldC4gKi8KKworICB1aW50MTZfdCBTUElfRmlyc3RCaXQ7ICAgICAgICAgICAgLyohPCBTcGVjaWZpZXMgd2hldGhlciBkYXRhIHRyYW5zZmVycyBzdGFydCBmcm9tIE1TQiBvciBMU0IgYml0LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIFNQSV9NU0JfTFNCX3RyYW5zbWlzc2lvbiAqLworCisgIHVpbnQxNl90IFNQSV9DUkNQb2x5bm9taWFsOyAgICAgICAvKiE8IFNwZWNpZmllcyB0aGUgcG9seW5vbWlhbCB1c2VkIGZvciB0aGUgQ1JDIGNhbGN1bGF0aW9uLiAqLworfVNQSV9Jbml0VHlwZURlZjsKKworLyoqIAorICAqIEBicmllZiAgSTJTIEluaXQgc3RydWN0dXJlIGRlZmluaXRpb24gIAorICAqLworCit0eXBlZGVmIHN0cnVjdAoreworCisgIHVpbnQxNl90IEkyU19Nb2RlOyAgICAgICAgIC8qITwgU3BlY2lmaWVzIHRoZSBJMlMgb3BlcmF0aW5nIG1vZGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBJMlNfTW9kZSAqLworCisgIHVpbnQxNl90IEkyU19TdGFuZGFyZDsgICAgIC8qITwgU3BlY2lmaWVzIHRoZSBzdGFuZGFyZCB1c2VkIGZvciB0aGUgSTJTIGNvbW11bmljYXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBJMlNfU3RhbmRhcmQgKi8KKworICB1aW50MTZfdCBJMlNfRGF0YUZvcm1hdDsgICAvKiE8IFNwZWNpZmllcyB0aGUgZGF0YSBmb3JtYXQgZm9yIHRoZSBJMlMgY29tbXVuaWNhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIEkyU19EYXRhX0Zvcm1hdCAqLworCisgIHVpbnQxNl90IEkyU19NQ0xLT3V0cHV0OyAgIC8qITwgU3BlY2lmaWVzIHdoZXRoZXIgdGhlIEkyUyBNQ0xLIG91dHB1dCBpcyBlbmFibGVkIG9yIG5vdC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIEkyU19NQ0xLX091dHB1dCAqLworCisgIHVpbnQzMl90IEkyU19BdWRpb0ZyZXE7ICAgIC8qITwgU3BlY2lmaWVzIHRoZSBmcmVxdWVuY3kgc2VsZWN0ZWQgZm9yIHRoZSBJMlMgY29tbXVuaWNhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIEkyU19BdWRpb19GcmVxdWVuY3kgKi8KKworICB1aW50MTZfdCBJMlNfQ1BPTDsgICAgICAgICAvKiE8IFNwZWNpZmllcyB0aGUgaWRsZSBzdGF0ZSBvZiB0aGUgSTJTIGNsb2NrLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgSTJTX0Nsb2NrX1BvbGFyaXR5ICovCit9STJTX0luaXRUeXBlRGVmOworCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIFNQSV9FeHBvcnRlZF9Db25zdGFudHMKKyAgKiBAeworICAqLworCisjZGVmaW5lIElTX1NQSV9BTExfUEVSSVBIKFBFUklQSCkgKCgoUEVSSVBIKSA9PSBTUEkxKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUEVSSVBIKSA9PSBTUEkyKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUEVSSVBIKSA9PSBTUEkzKSkKKworI2RlZmluZSBJU19TUElfMjNfUEVSSVBIKFBFUklQSCkgKCgoUEVSSVBIKSA9PSBTUEkyKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQRVJJUEgpID09IFNQSTMpKQorCisvKiogQGRlZmdyb3VwIFNQSV9kYXRhX2RpcmVjdGlvbiAKKyAgKiBAeworICAqLworICAKKyNkZWZpbmUgU1BJX0RpcmVjdGlvbl8yTGluZXNfRnVsbER1cGxleCAoKHVpbnQxNl90KTB4MDAwMCkKKyNkZWZpbmUgU1BJX0RpcmVjdGlvbl8yTGluZXNfUnhPbmx5ICAgICAoKHVpbnQxNl90KTB4MDQwMCkKKyNkZWZpbmUgU1BJX0RpcmVjdGlvbl8xTGluZV9SeCAgICAgICAgICAoKHVpbnQxNl90KTB4ODAwMCkKKyNkZWZpbmUgU1BJX0RpcmVjdGlvbl8xTGluZV9UeCAgICAgICAgICAoKHVpbnQxNl90KTB4QzAwMCkKKyNkZWZpbmUgSVNfU1BJX0RJUkVDVElPTl9NT0RFKE1PREUpICgoKE1PREUpID09IFNQSV9EaXJlY3Rpb25fMkxpbmVzX0Z1bGxEdXBsZXgpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE1PREUpID09IFNQSV9EaXJlY3Rpb25fMkxpbmVzX1J4T25seSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTU9ERSkgPT0gU1BJX0RpcmVjdGlvbl8xTGluZV9SeCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTU9ERSkgPT0gU1BJX0RpcmVjdGlvbl8xTGluZV9UeCkpCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIFNQSV9tb2RlIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgU1BJX01vZGVfTWFzdGVyICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDEwNCkKKyNkZWZpbmUgU1BJX01vZGVfU2xhdmUgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMCkKKyNkZWZpbmUgSVNfU1BJX01PREUoTU9ERSkgKCgoTU9ERSkgPT0gU1BJX01vZGVfTWFzdGVyKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE1PREUpID09IFNQSV9Nb2RlX1NsYXZlKSkKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgU1BJX2RhdGFfc2l6ZSAKKyAgKiBAeworICAqLworCisjZGVmaW5lIFNQSV9EYXRhU2l6ZV8xNmIgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDA4MDApCisjZGVmaW5lIFNQSV9EYXRhU2l6ZV84YiAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDApCisjZGVmaW5lIElTX1NQSV9EQVRBU0laRShEQVRBU0laRSkgKCgoREFUQVNJWkUpID09IFNQSV9EYXRhU2l6ZV8xNmIpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChEQVRBU0laRSkgPT0gU1BJX0RhdGFTaXplXzhiKSkKKy8qKgorICAqIEB9CisgICovIAorCisvKiogQGRlZmdyb3VwIFNQSV9DbG9ja19Qb2xhcml0eSAKKyAgKiBAeworICAqLworCisjZGVmaW5lIFNQSV9DUE9MX0xvdyAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDApCisjZGVmaW5lIFNQSV9DUE9MX0hpZ2ggICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDIpCisjZGVmaW5lIElTX1NQSV9DUE9MKENQT0wpICgoKENQT0wpID09IFNQSV9DUE9MX0xvdykgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKChDUE9MKSA9PSBTUElfQ1BPTF9IaWdoKSkKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgU1BJX0Nsb2NrX1BoYXNlIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgU1BJX0NQSEFfMUVkZ2UgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMCkKKyNkZWZpbmUgU1BJX0NQSEFfMkVkZ2UgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMSkKKyNkZWZpbmUgSVNfU1BJX0NQSEEoQ1BIQSkgKCgoQ1BIQSkgPT0gU1BJX0NQSEFfMUVkZ2UpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgoQ1BIQSkgPT0gU1BJX0NQSEFfMkVkZ2UpKQorLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBTUElfU2xhdmVfU2VsZWN0X21hbmFnZW1lbnQgCisgICogQHsKKyAgKi8KKworI2RlZmluZSBTUElfTlNTX1NvZnQgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMjAwKQorI2RlZmluZSBTUElfTlNTX0hhcmQgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAwKQorI2RlZmluZSBJU19TUElfTlNTKE5TUykgKCgoTlNTKSA9PSBTUElfTlNTX1NvZnQpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKE5TUykgPT0gU1BJX05TU19IYXJkKSkKKy8qKgorICAqIEB9CisgICovIAorCisvKiogQGRlZmdyb3VwIFNQSV9CYXVkUmF0ZV9QcmVzY2FsZXIgCisgICogQHsKKyAgKi8KKworI2RlZmluZSBTUElfQmF1ZFJhdGVQcmVzY2FsZXJfMiAgICAgICAgICgodWludDE2X3QpMHgwMDAwKQorI2RlZmluZSBTUElfQmF1ZFJhdGVQcmVzY2FsZXJfNCAgICAgICAgICgodWludDE2X3QpMHgwMDA4KQorI2RlZmluZSBTUElfQmF1ZFJhdGVQcmVzY2FsZXJfOCAgICAgICAgICgodWludDE2X3QpMHgwMDEwKQorI2RlZmluZSBTUElfQmF1ZFJhdGVQcmVzY2FsZXJfMTYgICAgICAgICgodWludDE2X3QpMHgwMDE4KQorI2RlZmluZSBTUElfQmF1ZFJhdGVQcmVzY2FsZXJfMzIgICAgICAgICgodWludDE2X3QpMHgwMDIwKQorI2RlZmluZSBTUElfQmF1ZFJhdGVQcmVzY2FsZXJfNjQgICAgICAgICgodWludDE2X3QpMHgwMDI4KQorI2RlZmluZSBTUElfQmF1ZFJhdGVQcmVzY2FsZXJfMTI4ICAgICAgICgodWludDE2X3QpMHgwMDMwKQorI2RlZmluZSBTUElfQmF1ZFJhdGVQcmVzY2FsZXJfMjU2ICAgICAgICgodWludDE2X3QpMHgwMDM4KQorI2RlZmluZSBJU19TUElfQkFVRFJBVEVfUFJFU0NBTEVSKFBSRVNDQUxFUikgKCgoUFJFU0NBTEVSKSA9PSBTUElfQmF1ZFJhdGVQcmVzY2FsZXJfMikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUFJFU0NBTEVSKSA9PSBTUElfQmF1ZFJhdGVQcmVzY2FsZXJfNCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUFJFU0NBTEVSKSA9PSBTUElfQmF1ZFJhdGVQcmVzY2FsZXJfOCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUFJFU0NBTEVSKSA9PSBTUElfQmF1ZFJhdGVQcmVzY2FsZXJfMTYpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBSRVNDQUxFUikgPT0gU1BJX0JhdWRSYXRlUHJlc2NhbGVyXzMyKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQUkVTQ0FMRVIpID09IFNQSV9CYXVkUmF0ZVByZXNjYWxlcl82NCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUFJFU0NBTEVSKSA9PSBTUElfQmF1ZFJhdGVQcmVzY2FsZXJfMTI4KSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQUkVTQ0FMRVIpID09IFNQSV9CYXVkUmF0ZVByZXNjYWxlcl8yNTYpKQorLyoqCisgICogQH0KKyAgKi8gCisKKy8qKiBAZGVmZ3JvdXAgU1BJX01TQl9MU0JfdHJhbnNtaXNzaW9uIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgU1BJX0ZpcnN0Qml0X01TQiAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMCkKKyNkZWZpbmUgU1BJX0ZpcnN0Qml0X0xTQiAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA4MCkKKyNkZWZpbmUgSVNfU1BJX0ZJUlNUX0JJVChCSVQpICgoKEJJVCkgPT0gU1BJX0ZpcnN0Qml0X01TQikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoQklUKSA9PSBTUElfRmlyc3RCaXRfTFNCKSkKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgSTJTX01vZGUgCisgICogQHsKKyAgKi8KKworI2RlZmluZSBJMlNfTW9kZV9TbGF2ZVR4ICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAwKQorI2RlZmluZSBJMlNfTW9kZV9TbGF2ZVJ4ICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMTAwKQorI2RlZmluZSBJMlNfTW9kZV9NYXN0ZXJUeCAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMjAwKQorI2RlZmluZSBJMlNfTW9kZV9NYXN0ZXJSeCAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMzAwKQorI2RlZmluZSBJU19JMlNfTU9ERShNT0RFKSAoKChNT0RFKSA9PSBJMlNfTW9kZV9TbGF2ZVR4KSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE1PREUpID09IEkyU19Nb2RlX1NsYXZlUngpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTU9ERSkgPT0gSTJTX01vZGVfTWFzdGVyVHgpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTU9ERSkgPT0gSTJTX01vZGVfTWFzdGVyUngpICkKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgSTJTX1N0YW5kYXJkIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgSTJTX1N0YW5kYXJkX1BoaWxsaXBzICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMCkKKyNkZWZpbmUgSTJTX1N0YW5kYXJkX01TQiAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAxMCkKKyNkZWZpbmUgSTJTX1N0YW5kYXJkX0xTQiAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAyMCkKKyNkZWZpbmUgSTJTX1N0YW5kYXJkX1BDTVNob3J0ICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAzMCkKKyNkZWZpbmUgSTJTX1N0YW5kYXJkX1BDTUxvbmcgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDBCMCkKKyNkZWZpbmUgSVNfSTJTX1NUQU5EQVJEKFNUQU5EQVJEKSAoKChTVEFOREFSRCkgPT0gSTJTX1N0YW5kYXJkX1BoaWxsaXBzKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoU1RBTkRBUkQpID09IEkyU19TdGFuZGFyZF9NU0IpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChTVEFOREFSRCkgPT0gSTJTX1N0YW5kYXJkX0xTQikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFNUQU5EQVJEKSA9PSBJMlNfU3RhbmRhcmRfUENNU2hvcnQpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChTVEFOREFSRCkgPT0gSTJTX1N0YW5kYXJkX1BDTUxvbmcpKQorLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBJMlNfRGF0YV9Gb3JtYXQgCisgICogQHsKKyAgKi8KKworI2RlZmluZSBJMlNfRGF0YUZvcm1hdF8xNmIgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAwKQorI2RlZmluZSBJMlNfRGF0YUZvcm1hdF8xNmJleHRlbmRlZCAgICAgICgodWludDE2X3QpMHgwMDAxKQorI2RlZmluZSBJMlNfRGF0YUZvcm1hdF8yNGIgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAzKQorI2RlZmluZSBJMlNfRGF0YUZvcm1hdF8zMmIgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA1KQorI2RlZmluZSBJU19JMlNfREFUQV9GT1JNQVQoRk9STUFUKSAoKChGT1JNQVQpID09IEkyU19EYXRhRm9ybWF0XzE2YikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChGT1JNQVQpID09IEkyU19EYXRhRm9ybWF0XzE2YmV4dGVuZGVkKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEZPUk1BVCkgPT0gSTJTX0RhdGFGb3JtYXRfMjRiKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEZPUk1BVCkgPT0gSTJTX0RhdGFGb3JtYXRfMzJiKSkKKy8qKgorICAqIEB9CisgICovIAorCisvKiogQGRlZmdyb3VwIEkyU19NQ0xLX091dHB1dCAKKyAgKiBAeworICAqLworCisjZGVmaW5lIEkyU19NQ0xLT3V0cHV0X0VuYWJsZSAgICAgICAgICAgKCh1aW50MTZfdCkweDAyMDApCisjZGVmaW5lIEkyU19NQ0xLT3V0cHV0X0Rpc2FibGUgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDApCisjZGVmaW5lIElTX0kyU19NQ0xLX09VVFBVVChPVVRQVVQpICgoKE9VVFBVVCkgPT0gSTJTX01DTEtPdXRwdXRfRW5hYmxlKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE9VVFBVVCkgPT0gSTJTX01DTEtPdXRwdXRfRGlzYWJsZSkpCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIEkyU19BdWRpb19GcmVxdWVuY3kgCisgICogQHsKKyAgKi8KKworI2RlZmluZSBJMlNfQXVkaW9GcmVxXzE5MmsgICAgICAgICAgICAgICAoKHVpbnQzMl90KTE5MjAwMCkKKyNkZWZpbmUgSTJTX0F1ZGlvRnJlcV85NmsgICAgICAgICAgICAgICAgKCh1aW50MzJfdCk5NjAwMCkKKyNkZWZpbmUgSTJTX0F1ZGlvRnJlcV80OGsgICAgICAgICAgICAgICAgKCh1aW50MzJfdCk0ODAwMCkKKyNkZWZpbmUgSTJTX0F1ZGlvRnJlcV80NGsgICAgICAgICAgICAgICAgKCh1aW50MzJfdCk0NDEwMCkKKyNkZWZpbmUgSTJTX0F1ZGlvRnJlcV8zMmsgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkzMjAwMCkKKyNkZWZpbmUgSTJTX0F1ZGlvRnJlcV8yMmsgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkyMjA1MCkKKyNkZWZpbmUgSTJTX0F1ZGlvRnJlcV8xNmsgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkxNjAwMCkKKyNkZWZpbmUgSTJTX0F1ZGlvRnJlcV8xMWsgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkxMTAyNSkKKyNkZWZpbmUgSTJTX0F1ZGlvRnJlcV84ayAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCk4MDAwKQorI2RlZmluZSBJMlNfQXVkaW9GcmVxX0RlZmF1bHQgICAgICAgICAgICAoKHVpbnQzMl90KTIpCisKKyNkZWZpbmUgSVNfSTJTX0FVRElPX0ZSRVEoRlJFUSkgKCgoKEZSRVEpID49IEkyU19BdWRpb0ZyZXFfOGspICYmIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEZSRVEpIDw9IEkyU19BdWRpb0ZyZXFfMTkyaykpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRlJFUSkgPT0gSTJTX0F1ZGlvRnJlcV9EZWZhdWx0KSkKKy8qKgorICAqIEB9CisgICovIAorCisvKiogQGRlZmdyb3VwIEkyU19DbG9ja19Qb2xhcml0eSAKKyAgKiBAeworICAqLworCisjZGVmaW5lIEkyU19DUE9MX0xvdyAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDApCisjZGVmaW5lIEkyU19DUE9MX0hpZ2ggICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDgpCisjZGVmaW5lIElTX0kyU19DUE9MKENQT0wpICgoKENQT0wpID09IEkyU19DUE9MX0xvdykgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKChDUE9MKSA9PSBJMlNfQ1BPTF9IaWdoKSkKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgU1BJX0kyU19ETUFfdHJhbnNmZXJfcmVxdWVzdHMgCisgICogQHsKKyAgKi8KKworI2RlZmluZSBTUElfSTJTX0RNQVJlcV9UeCAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAyKQorI2RlZmluZSBTUElfSTJTX0RNQVJlcV9SeCAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAxKQorI2RlZmluZSBJU19TUElfSTJTX0RNQVJFUShETUFSRVEpICgoKChETUFSRVEpICYgKHVpbnQxNl90KTB4RkZGQykgPT0gMHgwMCkgJiYgKChETUFSRVEpICE9IDB4MDApKQorLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBTUElfTlNTX2ludGVybmFsX3NvZnR3YXJlX21hbmFnZW1lbnQgCisgICogQHsKKyAgKi8KKworI2RlZmluZSBTUElfTlNTSW50ZXJuYWxTb2Z0X1NldCAgICAgICAgICgodWludDE2X3QpMHgwMTAwKQorI2RlZmluZSBTUElfTlNTSW50ZXJuYWxTb2Z0X1Jlc2V0ICAgICAgICgodWludDE2X3QpMHhGRUZGKQorI2RlZmluZSBJU19TUElfTlNTX0lOVEVSTkFMKElOVEVSTkFMKSAoKChJTlRFUk5BTCkgPT0gU1BJX05TU0ludGVybmFsU29mdF9TZXQpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoSU5URVJOQUwpID09IFNQSV9OU1NJbnRlcm5hbFNvZnRfUmVzZXQpKQorLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBTUElfQ1JDX1RyYW5zbWl0X1JlY2VpdmUgCisgICogQHsKKyAgKi8KKworI2RlZmluZSBTUElfQ1JDX1R4ICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDAwKQorI2RlZmluZSBTUElfQ1JDX1J4ICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDAxKQorI2RlZmluZSBJU19TUElfQ1JDKENSQykgKCgoQ1JDKSA9PSBTUElfQ1JDX1R4KSB8fCAoKENSQykgPT0gU1BJX0NSQ19SeCkpCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIFNQSV9kaXJlY3Rpb25fdHJhbnNtaXRfcmVjZWl2ZSAKKyAgKiBAeworICAqLworCisjZGVmaW5lIFNQSV9EaXJlY3Rpb25fUnggICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweEJGRkYpCisjZGVmaW5lIFNQSV9EaXJlY3Rpb25fVHggICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDQwMDApCisjZGVmaW5lIElTX1NQSV9ESVJFQ1RJT04oRElSRUNUSU9OKSAoKChESVJFQ1RJT04pID09IFNQSV9EaXJlY3Rpb25fUngpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKERJUkVDVElPTikgPT0gU1BJX0RpcmVjdGlvbl9UeCkpCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIFNQSV9JMlNfaW50ZXJydXB0c19kZWZpbml0aW9uIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgU1BJX0kyU19JVF9UWEUgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHg3MSkKKyNkZWZpbmUgU1BJX0kyU19JVF9SWE5FICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHg2MCkKKyNkZWZpbmUgU1BJX0kyU19JVF9FUlIgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHg1MCkKKyNkZWZpbmUgSVNfU1BJX0kyU19DT05GSUdfSVQoSVQpICgoKElUKSA9PSBTUElfSTJTX0lUX1RYRSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJVCkgPT0gU1BJX0kyU19JVF9SWE5FKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKElUKSA9PSBTUElfSTJTX0lUX0VSUikpCisjZGVmaW5lIFNQSV9JMlNfSVRfT1ZSICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4NTYpCisjZGVmaW5lIFNQSV9JVF9NT0RGICAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4NTUpCisjZGVmaW5lIFNQSV9JVF9DUkNFUlIgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4NTQpCisjZGVmaW5lIEkyU19JVF9VRFIgICAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4NTMpCisjZGVmaW5lIElTX1NQSV9JMlNfQ0xFQVJfSVQoSVQpICgoKElUKSA9PSBTUElfSVRfQ1JDRVJSKSkKKyNkZWZpbmUgSVNfU1BJX0kyU19HRVRfSVQoSVQpICgoKElUKSA9PSBTUElfSTJTX0lUX1JYTkUpIHx8ICgoSVQpID09IFNQSV9JMlNfSVRfVFhFKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJVCkgPT0gSTJTX0lUX1VEUikgfHwgKChJVCkgPT0gU1BJX0lUX0NSQ0VSUikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoSVQpID09IFNQSV9JVF9NT0RGKSB8fCAoKElUKSA9PSBTUElfSTJTX0lUX09WUikpCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIFNQSV9JMlNfZmxhZ3NfZGVmaW5pdGlvbiAKKyAgKiBAeworICAqLworCisjZGVmaW5lIFNQSV9JMlNfRkxBR19SWE5FICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDEpCisjZGVmaW5lIFNQSV9JMlNfRkxBR19UWEUgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDIpCisjZGVmaW5lIEkyU19GTEFHX0NIU0lERSAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDQpCisjZGVmaW5lIEkyU19GTEFHX1VEUiAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDgpCisjZGVmaW5lIFNQSV9GTEFHX0NSQ0VSUiAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMTApCisjZGVmaW5lIFNQSV9GTEFHX01PREYgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMjApCisjZGVmaW5lIFNQSV9JMlNfRkxBR19PVlIgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwNDApCisjZGVmaW5lIFNQSV9JMlNfRkxBR19CU1kgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwODApCisjZGVmaW5lIElTX1NQSV9JMlNfQ0xFQVJfRkxBRyhGTEFHKSAoKChGTEFHKSA9PSBTUElfRkxBR19DUkNFUlIpKQorI2RlZmluZSBJU19TUElfSTJTX0dFVF9GTEFHKEZMQUcpICgoKEZMQUcpID09IFNQSV9JMlNfRkxBR19CU1kpIHx8ICgoRkxBRykgPT0gU1BJX0kyU19GTEFHX09WUikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEZMQUcpID09IFNQSV9GTEFHX01PREYpIHx8ICgoRkxBRykgPT0gU1BJX0ZMQUdfQ1JDRVJSKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRkxBRykgPT0gSTJTX0ZMQUdfVURSKSB8fCAoKEZMQUcpID09IEkyU19GTEFHX0NIU0lERSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEZMQUcpID09IFNQSV9JMlNfRkxBR19UWEUpIHx8ICgoRkxBRykgPT0gU1BJX0kyU19GTEFHX1JYTkUpKQorLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBTUElfQ1JDX3BvbHlub21pYWwgCisgICogQHsKKyAgKi8KKworI2RlZmluZSBJU19TUElfQ1JDX1BPTFlOT01JQUwoUE9MWU5PTUlBTCkgKChQT0xZTk9NSUFMKSA+PSAweDEpCisvKioKKyAgKiBAfQorICAqLworCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIFNQSV9FeHBvcnRlZF9NYWNyb3MKKyAgKiBAeworICAqLworCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIFNQSV9FeHBvcnRlZF9GdW5jdGlvbnMKKyAgKiBAeworICAqLworCit2b2lkIFNQSV9JMlNfRGVJbml0KFNQSV9UeXBlRGVmKiBTUEl4KTsKK3ZvaWQgU1BJX0luaXQoU1BJX1R5cGVEZWYqIFNQSXgsIFNQSV9Jbml0VHlwZURlZiogU1BJX0luaXRTdHJ1Y3QpOwordm9pZCBJMlNfSW5pdChTUElfVHlwZURlZiogU1BJeCwgSTJTX0luaXRUeXBlRGVmKiBJMlNfSW5pdFN0cnVjdCk7Cit2b2lkIFNQSV9TdHJ1Y3RJbml0KFNQSV9Jbml0VHlwZURlZiogU1BJX0luaXRTdHJ1Y3QpOwordm9pZCBJMlNfU3RydWN0SW5pdChJMlNfSW5pdFR5cGVEZWYqIEkyU19Jbml0U3RydWN0KTsKK3ZvaWQgU1BJX0NtZChTUElfVHlwZURlZiogU1BJeCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKTsKK3ZvaWQgSTJTX0NtZChTUElfVHlwZURlZiogU1BJeCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKTsKK3ZvaWQgU1BJX0kyU19JVENvbmZpZyhTUElfVHlwZURlZiogU1BJeCwgdWludDhfdCBTUElfSTJTX0lULCBGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpOwordm9pZCBTUElfSTJTX0RNQUNtZChTUElfVHlwZURlZiogU1BJeCwgdWludDE2X3QgU1BJX0kyU19ETUFSZXEsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSk7Cit2b2lkIFNQSV9JMlNfU2VuZERhdGEoU1BJX1R5cGVEZWYqIFNQSXgsIHVpbnQxNl90IERhdGEpOwordWludDE2X3QgU1BJX0kyU19SZWNlaXZlRGF0YShTUElfVHlwZURlZiogU1BJeCk7Cit2b2lkIFNQSV9OU1NJbnRlcm5hbFNvZnR3YXJlQ29uZmlnKFNQSV9UeXBlRGVmKiBTUEl4LCB1aW50MTZfdCBTUElfTlNTSW50ZXJuYWxTb2Z0KTsKK3ZvaWQgU1BJX1NTT3V0cHV0Q21kKFNQSV9UeXBlRGVmKiBTUEl4LCBGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpOwordm9pZCBTUElfRGF0YVNpemVDb25maWcoU1BJX1R5cGVEZWYqIFNQSXgsIHVpbnQxNl90IFNQSV9EYXRhU2l6ZSk7Cit2b2lkIFNQSV9UcmFuc21pdENSQyhTUElfVHlwZURlZiogU1BJeCk7Cit2b2lkIFNQSV9DYWxjdWxhdGVDUkMoU1BJX1R5cGVEZWYqIFNQSXgsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSk7Cit1aW50MTZfdCBTUElfR2V0Q1JDKFNQSV9UeXBlRGVmKiBTUEl4LCB1aW50OF90IFNQSV9DUkMpOwordWludDE2X3QgU1BJX0dldENSQ1BvbHlub21pYWwoU1BJX1R5cGVEZWYqIFNQSXgpOwordm9pZCBTUElfQmlEaXJlY3Rpb25hbExpbmVDb25maWcoU1BJX1R5cGVEZWYqIFNQSXgsIHVpbnQxNl90IFNQSV9EaXJlY3Rpb24pOworRmxhZ1N0YXR1cyBTUElfSTJTX0dldEZsYWdTdGF0dXMoU1BJX1R5cGVEZWYqIFNQSXgsIHVpbnQxNl90IFNQSV9JMlNfRkxBRyk7Cit2b2lkIFNQSV9JMlNfQ2xlYXJGbGFnKFNQSV9UeXBlRGVmKiBTUEl4LCB1aW50MTZfdCBTUElfSTJTX0ZMQUcpOworSVRTdGF0dXMgU1BJX0kyU19HZXRJVFN0YXR1cyhTUElfVHlwZURlZiogU1BJeCwgdWludDhfdCBTUElfSTJTX0lUKTsKK3ZvaWQgU1BJX0kyU19DbGVhcklUUGVuZGluZ0JpdChTUElfVHlwZURlZiogU1BJeCwgdWludDhfdCBTUElfSTJTX0lUKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8qX19TVE0zMkYxMHhfU1BJX0ggKi8KKy8qKgorICAqIEB9CisgICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgMjAxMSBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9zdF9md19saWIvaW5jL3N0bTMyZjEweF90aW0uaCBiL3N0X2Z3X2xpYi9pbmMvc3RtMzJmMTB4X3RpbS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1YmY3NmEKLS0tIC9kZXYvbnVsbAorKysgYi9zdF9md19saWIvaW5jL3N0bTMyZjEweF90aW0uaApAQCAtMCwwICsxLDExNjQgQEAKKy8qKgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKiBAZmlsZSAgICBzdG0zMmYxMHhfdGltLmgKKyAgKiBAYXV0aG9yICBNQ0QgQXBwbGljYXRpb24gVGVhbQorICAqIEB2ZXJzaW9uIFYzLjUuMAorICAqIEBkYXRlICAgIDExLU1hcmNoLTIwMTEKKyAgKiBAYnJpZWYgICBUaGlzIGZpbGUgY29udGFpbnMgYWxsIHRoZSBmdW5jdGlvbnMgcHJvdG90eXBlcyBmb3IgdGhlIFRJTSBmaXJtd2FyZSAKKyAgKiAgICAgICAgICBsaWJyYXJ5LgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKiBAYXR0ZW50aW9uCisgICoKKyAgKiBUSEUgUFJFU0VOVCBGSVJNV0FSRSBXSElDSCBJUyBGT1IgR1VJREFOQ0UgT05MWSBBSU1TIEFUIFBST1ZJRElORyBDVVNUT01FUlMKKyAgKiBXSVRIIENPRElORyBJTkZPUk1BVElPTiBSRUdBUkRJTkcgVEhFSVIgUFJPRFVDVFMgSU4gT1JERVIgRk9SIFRIRU0gVE8gU0FWRQorICAqIFRJTUUuIEFTIEEgUkVTVUxULCBTVE1JQ1JPRUxFQ1RST05JQ1MgU0hBTEwgTk9UIEJFIEhFTEQgTElBQkxFIEZPUiBBTlkKKyAgKiBESVJFQ1QsIElORElSRUNUIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBXSVRIIFJFU1BFQ1QgVE8gQU5ZIENMQUlNUyBBUklTSU5HCisgICogRlJPTSBUSEUgQ09OVEVOVCBPRiBTVUNIIEZJUk1XQVJFIEFORC9PUiBUSEUgVVNFIE1BREUgQlkgQ1VTVE9NRVJTIE9GIFRIRQorICAqIENPRElORyBJTkZPUk1BVElPTiBDT05UQUlORUQgSEVSRUlOIElOIENPTk5FQ1RJT04gV0lUSCBUSEVJUiBQUk9EVUNUUy4KKyAgKgorICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDT1BZUklHSFQgMjAxMSBTVE1pY3JvZWxlY3Ryb25pY3M8L2NlbnRlcj48L2gyPgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKi8KKworLyogRGVmaW5lIHRvIHByZXZlbnQgcmVjdXJzaXZlIGluY2x1c2lvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyNpZm5kZWYgX19TVE0zMkYxMHhfVElNX0gKKyNkZWZpbmUgX19TVE0zMkYxMHhfVElNX0gKKworI2lmZGVmIF9fY3BsdXNwbHVzCisgZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLyogSW5jbHVkZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyNpbmNsdWRlICJzdG0zMmYxMHguaCIKKworLyoqIEBhZGR0b2dyb3VwIFNUTTMyRjEweF9TdGRQZXJpcGhfRHJpdmVyCisgICogQHsKKyAgKi8KKworLyoqIEBhZGR0b2dyb3VwIFRJTQorICAqIEB7CisgICovIAorCisvKiogQGRlZmdyb3VwIFRJTV9FeHBvcnRlZF9UeXBlcworICAqIEB7CisgICovIAorCisvKiogCisgICogQGJyaWVmICBUSU0gVGltZSBCYXNlIEluaXQgc3RydWN0dXJlIGRlZmluaXRpb24KKyAgKiBAbm90ZSAgIFRoaXMgc3RydWN0dXJlIGlzIHVzZWQgd2l0aCBhbGwgVElNeCBleGNlcHQgZm9yIFRJTTYgYW5kIFRJTTcuICAgIAorICAqLworCit0eXBlZGVmIHN0cnVjdAoreworICB1aW50MTZfdCBUSU1fUHJlc2NhbGVyOyAgICAgICAgIC8qITwgU3BlY2lmaWVzIHRoZSBwcmVzY2FsZXIgdmFsdWUgdXNlZCB0byBkaXZpZGUgdGhlIFRJTSBjbG9jay4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIG51bWJlciBiZXR3ZWVuIDB4MDAwMCBhbmQgMHhGRkZGICovCisKKyAgdWludDE2X3QgVElNX0NvdW50ZXJNb2RlOyAgICAgICAvKiE8IFNwZWNpZmllcyB0aGUgY291bnRlciBtb2RlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBUSU1fQ291bnRlcl9Nb2RlICovCisKKyAgdWludDE2X3QgVElNX1BlcmlvZDsgICAgICAgICAgICAvKiE8IFNwZWNpZmllcyB0aGUgcGVyaW9kIHZhbHVlIHRvIGJlIGxvYWRlZCBpbnRvIHRoZSBhY3RpdmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF1dG8tUmVsb2FkIFJlZ2lzdGVyIGF0IHRoZSBuZXh0IHVwZGF0ZSBldmVudC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbiAweDAwMDAgYW5kIDB4RkZGRi4gICovIAorCisgIHVpbnQxNl90IFRJTV9DbG9ja0RpdmlzaW9uOyAgICAgLyohPCBTcGVjaWZpZXMgdGhlIGNsb2NrIGRpdmlzaW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIFRJTV9DbG9ja19EaXZpc2lvbl9DS0QgKi8KKworICB1aW50OF90IFRJTV9SZXBldGl0aW9uQ291bnRlcjsgIC8qITwgU3BlY2lmaWVzIHRoZSByZXBldGl0aW9uIGNvdW50ZXIgdmFsdWUuIEVhY2ggdGltZSB0aGUgUkNSIGRvd25jb3VudGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFjaGVzIHplcm8sIGFuIHVwZGF0ZSBldmVudCBpcyBnZW5lcmF0ZWQgYW5kIGNvdW50aW5nIHJlc3RhcnRzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIHRoZSBSQ1IgdmFsdWUgKE4pLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBtZWFucyBpbiBQV00gbW9kZSB0aGF0IChOKzEpIGNvcnJlc3BvbmRzIHRvOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSB0aGUgbnVtYmVyIG9mIFBXTSBwZXJpb2RzIGluIGVkZ2UtYWxpZ25lZCBtb2RlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIHRoZSBudW1iZXIgb2YgaGFsZiBQV00gcGVyaW9kIGluIGNlbnRlci1hbGlnbmVkIG1vZGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbiAweDAwIGFuZCAweEZGLiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBub3RlIFRoaXMgcGFyYW1ldGVyIGlzIHZhbGlkIG9ubHkgZm9yIFRJTTEgYW5kIFRJTTguICovCit9IFRJTV9UaW1lQmFzZUluaXRUeXBlRGVmOyAgICAgICAKKworLyoqIAorICAqIEBicmllZiAgVElNIE91dHB1dCBDb21wYXJlIEluaXQgc3RydWN0dXJlIGRlZmluaXRpb24gIAorICAqLworCit0eXBlZGVmIHN0cnVjdAoreworICB1aW50MTZfdCBUSU1fT0NNb2RlOyAgICAgICAgLyohPCBTcGVjaWZpZXMgdGhlIFRJTSBtb2RlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIFRJTV9PdXRwdXRfQ29tcGFyZV9hbmRfUFdNX21vZGVzICovCisKKyAgdWludDE2X3QgVElNX091dHB1dFN0YXRlOyAgIC8qITwgU3BlY2lmaWVzIHRoZSBUSU0gT3V0cHV0IENvbXBhcmUgc3RhdGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgVElNX091dHB1dF9Db21wYXJlX3N0YXRlICovCisKKyAgdWludDE2X3QgVElNX091dHB1dE5TdGF0ZTsgIC8qITwgU3BlY2lmaWVzIHRoZSBUSU0gY29tcGxlbWVudGFyeSBPdXRwdXQgQ29tcGFyZSBzdGF0ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBUSU1fT3V0cHV0X0NvbXBhcmVfTl9zdGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAbm90ZSBUaGlzIHBhcmFtZXRlciBpcyB2YWxpZCBvbmx5IGZvciBUSU0xIGFuZCBUSU04LiAqLworCisgIHVpbnQxNl90IFRJTV9QdWxzZTsgICAgICAgICAvKiE8IFNwZWNpZmllcyB0aGUgcHVsc2UgdmFsdWUgdG8gYmUgbG9hZGVkIGludG8gdGhlIENhcHR1cmUgQ29tcGFyZSBSZWdpc3Rlci4gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIG51bWJlciBiZXR3ZWVuIDB4MDAwMCBhbmQgMHhGRkZGICovCisKKyAgdWludDE2X3QgVElNX09DUG9sYXJpdHk7ICAgIC8qITwgU3BlY2lmaWVzIHRoZSBvdXRwdXQgcG9sYXJpdHkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgVElNX091dHB1dF9Db21wYXJlX1BvbGFyaXR5ICovCisKKyAgdWludDE2X3QgVElNX09DTlBvbGFyaXR5OyAgIC8qITwgU3BlY2lmaWVzIHRoZSBjb21wbGVtZW50YXJ5IG91dHB1dCBwb2xhcml0eS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBUSU1fT3V0cHV0X0NvbXBhcmVfTl9Qb2xhcml0eQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAbm90ZSBUaGlzIHBhcmFtZXRlciBpcyB2YWxpZCBvbmx5IGZvciBUSU0xIGFuZCBUSU04LiAqLworCisgIHVpbnQxNl90IFRJTV9PQ0lkbGVTdGF0ZTsgICAvKiE8IFNwZWNpZmllcyB0aGUgVElNIE91dHB1dCBDb21wYXJlIHBpbiBzdGF0ZSBkdXJpbmcgSWRsZSBzdGF0ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBUSU1fT3V0cHV0X0NvbXBhcmVfSWRsZV9TdGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAbm90ZSBUaGlzIHBhcmFtZXRlciBpcyB2YWxpZCBvbmx5IGZvciBUSU0xIGFuZCBUSU04LiAqLworCisgIHVpbnQxNl90IFRJTV9PQ05JZGxlU3RhdGU7ICAvKiE8IFNwZWNpZmllcyB0aGUgVElNIE91dHB1dCBDb21wYXJlIHBpbiBzdGF0ZSBkdXJpbmcgSWRsZSBzdGF0ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBUSU1fT3V0cHV0X0NvbXBhcmVfTl9JZGxlX1N0YXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBub3RlIFRoaXMgcGFyYW1ldGVyIGlzIHZhbGlkIG9ubHkgZm9yIFRJTTEgYW5kIFRJTTguICovCit9IFRJTV9PQ0luaXRUeXBlRGVmOworCisvKiogCisgICogQGJyaWVmICBUSU0gSW5wdXQgQ2FwdHVyZSBJbml0IHN0cnVjdHVyZSBkZWZpbml0aW9uICAKKyAgKi8KKwordHlwZWRlZiBzdHJ1Y3QKK3sKKworICB1aW50MTZfdCBUSU1fQ2hhbm5lbDsgICAgICAvKiE8IFNwZWNpZmllcyB0aGUgVElNIGNoYW5uZWwuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBUSU1fQ2hhbm5lbCAqLworCisgIHVpbnQxNl90IFRJTV9JQ1BvbGFyaXR5OyAgIC8qITwgU3BlY2lmaWVzIHRoZSBhY3RpdmUgZWRnZSBvZiB0aGUgaW5wdXQgc2lnbmFsLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgVElNX0lucHV0X0NhcHR1cmVfUG9sYXJpdHkgKi8KKworICB1aW50MTZfdCBUSU1fSUNTZWxlY3Rpb247ICAvKiE8IFNwZWNpZmllcyB0aGUgaW5wdXQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBUSU1fSW5wdXRfQ2FwdHVyZV9TZWxlY3Rpb24gKi8KKworICB1aW50MTZfdCBUSU1fSUNQcmVzY2FsZXI7ICAvKiE8IFNwZWNpZmllcyB0aGUgSW5wdXQgQ2FwdHVyZSBQcmVzY2FsZXIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBUSU1fSW5wdXRfQ2FwdHVyZV9QcmVzY2FsZXIgKi8KKworICB1aW50MTZfdCBUSU1fSUNGaWx0ZXI7ICAgICAvKiE8IFNwZWNpZmllcyB0aGUgaW5wdXQgY2FwdHVyZSBmaWx0ZXIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgbnVtYmVyIGJldHdlZW4gMHgwIGFuZCAweEYgKi8KK30gVElNX0lDSW5pdFR5cGVEZWY7CisKKy8qKiAKKyAgKiBAYnJpZWYgIEJEVFIgc3RydWN0dXJlIGRlZmluaXRpb24gCisgICogQG5vdGUgICBUaGlzIHN0cnVjdHVyZSBpcyB1c2VkIG9ubHkgd2l0aCBUSU0xIGFuZCBUSU04LiAgICAKKyAgKi8KKwordHlwZWRlZiBzdHJ1Y3QKK3sKKworICB1aW50MTZfdCBUSU1fT1NTUlN0YXRlOyAgICAgICAgLyohPCBTcGVjaWZpZXMgdGhlIE9mZi1TdGF0ZSBzZWxlY3Rpb24gdXNlZCBpbiBSdW4gbW9kZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBPU1NSX09mZl9TdGF0ZV9TZWxlY3Rpb25fZm9yX1J1bl9tb2RlX3N0YXRlICovCisKKyAgdWludDE2X3QgVElNX09TU0lTdGF0ZTsgICAgICAgIC8qITwgU3BlY2lmaWVzIHRoZSBPZmYtU3RhdGUgdXNlZCBpbiBJZGxlIHN0YXRlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIE9TU0lfT2ZmX1N0YXRlX1NlbGVjdGlvbl9mb3JfSWRsZV9tb2RlX3N0YXRlICovCisKKyAgdWludDE2X3QgVElNX0xPQ0tMZXZlbDsgICAgICAgIC8qITwgU3BlY2lmaWVzIHRoZSBMT0NLIGxldmVsIHBhcmFtZXRlcnMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgTG9ja19sZXZlbCAqLyAKKworICB1aW50MTZfdCBUSU1fRGVhZFRpbWU7ICAgICAgICAgLyohPCBTcGVjaWZpZXMgdGhlIGRlbGF5IHRpbWUgYmV0d2VlbiB0aGUgc3dpdGNoaW5nLW9mZiBhbmQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaGluZy1vbiBvZiB0aGUgb3V0cHV0cy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgbnVtYmVyIGJldHdlZW4gMHgwMCBhbmQgMHhGRiAgKi8KKworICB1aW50MTZfdCBUSU1fQnJlYWs7ICAgICAgICAgICAgLyohPCBTcGVjaWZpZXMgd2hldGhlciB0aGUgVElNIEJyZWFrIGlucHV0IGlzIGVuYWJsZWQgb3Igbm90LiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBCcmVha19JbnB1dF9lbmFibGVfZGlzYWJsZSAqLworCisgIHVpbnQxNl90IFRJTV9CcmVha1BvbGFyaXR5OyAgICAvKiE8IFNwZWNpZmllcyB0aGUgVElNIEJyZWFrIElucHV0IHBpbiBwb2xhcml0eS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBCcmVha19Qb2xhcml0eSAqLworCisgIHVpbnQxNl90IFRJTV9BdXRvbWF0aWNPdXRwdXQ7ICAvKiE8IFNwZWNpZmllcyB3aGV0aGVyIHRoZSBUSU0gQXV0b21hdGljIE91dHB1dCBmZWF0dXJlIGlzIGVuYWJsZWQgb3Igbm90LiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBUSU1fQU9FX0JpdF9TZXRfUmVzZXQgKi8KK30gVElNX0JEVFJJbml0VHlwZURlZjsKKworLyoqIEBkZWZncm91cCBUSU1fRXhwb3J0ZWRfY29uc3RhbnRzIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgSVNfVElNX0FMTF9QRVJJUEgoUEVSSVBIKSAoKChQRVJJUEgpID09IFRJTTEpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQRVJJUEgpID09IFRJTTIpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQRVJJUEgpID09IFRJTTMpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQRVJJUEgpID09IFRJTTQpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQRVJJUEgpID09IFRJTTUpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQRVJJUEgpID09IFRJTTYpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQRVJJUEgpID09IFRJTTcpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQRVJJUEgpID09IFRJTTgpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQRVJJUEgpID09IFRJTTkpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQRVJJUEgpID09IFRJTTEwKXx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQRVJJUEgpID09IFRJTTExKXx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQRVJJUEgpID09IFRJTTEyKXx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQRVJJUEgpID09IFRJTTEzKXx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQRVJJUEgpID09IFRJTTE0KXx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQRVJJUEgpID09IFRJTTE1KXx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQRVJJUEgpID09IFRJTTE2KXx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQRVJJUEgpID09IFRJTTE3KSkKKworLyogTElTVDE6IFRJTSAxIGFuZCA4ICovCisjZGVmaW5lIElTX1RJTV9MSVNUMV9QRVJJUEgoUEVSSVBIKSAgKCgoUEVSSVBIKSA9PSBUSU0xKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUEVSSVBIKSA9PSBUSU04KSkKKworLyogTElTVDI6IFRJTSAxLCA4LCAxNSAxNiBhbmQgMTcgKi8KKyNkZWZpbmUgSVNfVElNX0xJU1QyX1BFUklQSChQRVJJUEgpICgoKFBFUklQSCkgPT0gVElNMSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUEVSSVBIKSA9PSBUSU04KSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQRVJJUEgpID09IFRJTTE1KXx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBFUklQSCkgPT0gVElNMTYpfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUEVSSVBIKSA9PSBUSU0xNykpIAorCisvKiBMSVNUMzogVElNIDEsIDIsIDMsIDQsIDUgYW5kIDggKi8KKyNkZWZpbmUgSVNfVElNX0xJU1QzX1BFUklQSChQRVJJUEgpICgoKFBFUklQSCkgPT0gVElNMSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUEVSSVBIKSA9PSBUSU0yKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQRVJJUEgpID09IFRJTTMpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBFUklQSCkgPT0gVElNNCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUEVSSVBIKSA9PSBUSU01KSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQRVJJUEgpID09IFRJTTgpKSAKKwkJCQkJCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLyogTElTVDQ6IFRJTSAxLCAyLCAzLCA0LCA1LCA4LCAxNSwgMTYgYW5kIDE3ICovCisjZGVmaW5lIElTX1RJTV9MSVNUNF9QRVJJUEgoUEVSSVBIKSAoKChQRVJJUEgpID09IFRJTTEpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBFUklQSCkgPT0gVElNMikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUEVSSVBIKSA9PSBUSU0zKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQRVJJUEgpID09IFRJTTQpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBFUklQSCkgPT0gVElNNSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUEVSSVBIKSA9PSBUSU04KSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQRVJJUEgpID09IFRJTTE1KXx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBFUklQSCkgPT0gVElNMTYpfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUEVSSVBIKSA9PSBUSU0xNykpCisKKy8qIExJU1Q1OiBUSU0gMSwgMiwgMywgNCwgNSwgOCBhbmQgMTUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorI2RlZmluZSBJU19USU1fTElTVDVfUEVSSVBIKFBFUklQSCkgKCgoUEVSSVBIKSA9PSBUSU0xKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQRVJJUEgpID09IFRJTTIpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBFUklQSCkgPT0gVElNMykgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUEVSSVBIKSA9PSBUSU00KSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQRVJJUEgpID09IFRJTTUpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBFUklQSCkgPT0gVElNOCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUEVSSVBIKSA9PSBUSU0xNSkpIAorCisvKiBMSVNUNjogVElNIDEsIDIsIDMsIDQsIDUsIDgsIDksIDEyIGFuZCAxNSAqLworI2RlZmluZSBJU19USU1fTElTVDZfUEVSSVBIKFBFUklQSCkgICgoKFBFUklQSCkgPT0gVElNMSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBFUklQSCkgPT0gVElNMikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBFUklQSCkgPT0gVElNMykgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBFUklQSCkgPT0gVElNNCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBFUklQSCkgPT0gVElNNSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBFUklQSCkgPT0gVElNOCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBFUklQSCkgPT0gVElNOSkgfHwgXAorCQkJCQkJCQkJICAoKFBFUklQSCkgPT0gVElNMTIpfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBFUklQSCkgPT0gVElNMTUpKQorCisvKiBMSVNUNzogVElNIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEyIGFuZCAxNSAqLworI2RlZmluZSBJU19USU1fTElTVDdfUEVSSVBIKFBFUklQSCkgICgoKFBFUklQSCkgPT0gVElNMSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBFUklQSCkgPT0gVElNMikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBFUklQSCkgPT0gVElNMykgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBFUklQSCkgPT0gVElNNCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBFUklQSCkgPT0gVElNNSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBFUklQSCkgPT0gVElNNikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBFUklQSCkgPT0gVElNNykgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBFUklQSCkgPT0gVElNOCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBFUklQSCkgPT0gVElNOSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBFUklQSCkgPT0gVElNMTIpfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBFUklQSCkgPT0gVElNMTUpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisvKiBMSVNUODogVElNIDEsIDIsIDMsIDQsIDUsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2IGFuZCAxNyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyNkZWZpbmUgSVNfVElNX0xJU1Q4X1BFUklQSChQRVJJUEgpICAoKChQRVJJUEgpID09IFRJTTEpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQRVJJUEgpID09IFRJTTIpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQRVJJUEgpID09IFRJTTMpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQRVJJUEgpID09IFRJTTQpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQRVJJUEgpID09IFRJTTUpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQRVJJUEgpID09IFRJTTgpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQRVJJUEgpID09IFRJTTkpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQRVJJUEgpID09IFRJTTEwKXx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQRVJJUEgpID09IFRJTTExKXx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQRVJJUEgpID09IFRJTTEyKXx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQRVJJUEgpID09IFRJTTEzKXx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQRVJJUEgpID09IFRJTTE0KXx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQRVJJUEgpID09IFRJTTE1KXx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQRVJJUEgpID09IFRJTTE2KXx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQRVJJUEgpID09IFRJTTE3KSkKKworLyogTElTVDk6IFRJTSAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCAxNSwgMTYsIGFuZCAxNyAqLworI2RlZmluZSBJU19USU1fTElTVDlfUEVSSVBIKFBFUklQSCkgICgoKFBFUklQSCkgPT0gVElNMSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBFUklQSCkgPT0gVElNMikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBFUklQSCkgPT0gVElNMykgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBFUklQSCkgPT0gVElNNCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBFUklQSCkgPT0gVElNNSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBFUklQSCkgPT0gVElNNikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBFUklQSCkgPT0gVElNNykgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBFUklQSCkgPT0gVElNOCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBFUklQSCkgPT0gVElNMTUpfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBFUklQSCkgPT0gVElNMTYpfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBFUklQSCkgPT0gVElNMTcpKSAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLyoqCisgICogQH0KKyAgKi8gCisKKy8qKiBAZGVmZ3JvdXAgVElNX091dHB1dF9Db21wYXJlX2FuZF9QV01fbW9kZXMgCisgICogQHsKKyAgKi8KKworI2RlZmluZSBUSU1fT0NNb2RlX1RpbWluZyAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAwKQorI2RlZmluZSBUSU1fT0NNb2RlX0FjdGl2ZSAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDEwKQorI2RlZmluZSBUSU1fT0NNb2RlX0luYWN0aXZlICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDIwKQorI2RlZmluZSBUSU1fT0NNb2RlX1RvZ2dsZSAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDMwKQorI2RlZmluZSBUSU1fT0NNb2RlX1BXTTEgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDYwKQorI2RlZmluZSBUSU1fT0NNb2RlX1BXTTIgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDcwKQorI2RlZmluZSBJU19USU1fT0NfTU9ERShNT0RFKSAoKChNT0RFKSA9PSBUSU1fT0NNb2RlX1RpbWluZykgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChNT0RFKSA9PSBUSU1fT0NNb2RlX0FjdGl2ZSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChNT0RFKSA9PSBUSU1fT0NNb2RlX0luYWN0aXZlKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE1PREUpID09IFRJTV9PQ01vZGVfVG9nZ2xlKXx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTU9ERSkgPT0gVElNX09DTW9kZV9QV00xKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE1PREUpID09IFRJTV9PQ01vZGVfUFdNMikpCisjZGVmaW5lIElTX1RJTV9PQ00oTU9ERSkgKCgoTU9ERSkgPT0gVElNX09DTW9kZV9UaW1pbmcpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKChNT0RFKSA9PSBUSU1fT0NNb2RlX0FjdGl2ZSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAoKE1PREUpID09IFRJTV9PQ01vZGVfSW5hY3RpdmUpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKChNT0RFKSA9PSBUSU1fT0NNb2RlX1RvZ2dsZSl8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICgoTU9ERSkgPT0gVElNX09DTW9kZV9QV00xKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICgoTU9ERSkgPT0gVElNX09DTW9kZV9QV00yKSB8fAlcCisgICAgICAgICAgICAgICAgICAgICAgICAgICgoTU9ERSkgPT0gVElNX0ZvcmNlZEFjdGlvbl9BY3RpdmUpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKChNT0RFKSA9PSBUSU1fRm9yY2VkQWN0aW9uX0luQWN0aXZlKSkKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgVElNX09uZV9QdWxzZV9Nb2RlIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgVElNX09QTW9kZV9TaW5nbGUgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwOCkKKyNkZWZpbmUgVElNX09QTW9kZV9SZXBldGl0aXZlICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMCkKKyNkZWZpbmUgSVNfVElNX09QTV9NT0RFKE1PREUpICgoKE1PREUpID09IFRJTV9PUE1vZGVfU2luZ2xlKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChNT0RFKSA9PSBUSU1fT1BNb2RlX1JlcGV0aXRpdmUpKQorLyoqCisgICogQH0KKyAgKi8gCisKKy8qKiBAZGVmZ3JvdXAgVElNX0NoYW5uZWwgCisgICogQHsKKyAgKi8KKworI2RlZmluZSBUSU1fQ2hhbm5lbF8xICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAwKQorI2RlZmluZSBUSU1fQ2hhbm5lbF8yICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA0KQorI2RlZmluZSBUSU1fQ2hhbm5lbF8zICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA4KQorI2RlZmluZSBUSU1fQ2hhbm5lbF80ICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDBDKQorI2RlZmluZSBJU19USU1fQ0hBTk5FTChDSEFOTkVMKSAoKChDSEFOTkVMKSA9PSBUSU1fQ2hhbm5lbF8xKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKENIQU5ORUwpID09IFRJTV9DaGFubmVsXzIpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoQ0hBTk5FTCkgPT0gVElNX0NoYW5uZWxfMykgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChDSEFOTkVMKSA9PSBUSU1fQ2hhbm5lbF80KSkKKyNkZWZpbmUgSVNfVElNX1BXTUlfQ0hBTk5FTChDSEFOTkVMKSAoKChDSEFOTkVMKSA9PSBUSU1fQ2hhbm5lbF8xKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoQ0hBTk5FTCkgPT0gVElNX0NoYW5uZWxfMikpCisjZGVmaW5lIElTX1RJTV9DT01QTEVNRU5UQVJZX0NIQU5ORUwoQ0hBTk5FTCkgKCgoQ0hBTk5FTCkgPT0gVElNX0NoYW5uZWxfMSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKENIQU5ORUwpID09IFRJTV9DaGFubmVsXzIpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChDSEFOTkVMKSA9PSBUSU1fQ2hhbm5lbF8zKSkKKy8qKgorICAqIEB9CisgICovIAorCisvKiogQGRlZmdyb3VwIFRJTV9DbG9ja19EaXZpc2lvbl9DS0QgCisgICogQHsKKyAgKi8KKworI2RlZmluZSBUSU1fQ0tEX0RJVjEgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAwKQorI2RlZmluZSBUSU1fQ0tEX0RJVjIgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMTAwKQorI2RlZmluZSBUSU1fQ0tEX0RJVjQgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMjAwKQorI2RlZmluZSBJU19USU1fQ0tEX0RJVihESVYpICgoKERJVikgPT0gVElNX0NLRF9ESVYxKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRElWKSA9PSBUSU1fQ0tEX0RJVjIpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChESVYpID09IFRJTV9DS0RfRElWNCkpCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIFRJTV9Db3VudGVyX01vZGUgCisgICogQHsKKyAgKi8KKworI2RlZmluZSBUSU1fQ291bnRlck1vZGVfVXAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAwKQorI2RlZmluZSBUSU1fQ291bnRlck1vZGVfRG93biAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDEwKQorI2RlZmluZSBUSU1fQ291bnRlck1vZGVfQ2VudGVyQWxpZ25lZDEgICAgICgodWludDE2X3QpMHgwMDIwKQorI2RlZmluZSBUSU1fQ291bnRlck1vZGVfQ2VudGVyQWxpZ25lZDIgICAgICgodWludDE2X3QpMHgwMDQwKQorI2RlZmluZSBUSU1fQ291bnRlck1vZGVfQ2VudGVyQWxpZ25lZDMgICAgICgodWludDE2X3QpMHgwMDYwKQorI2RlZmluZSBJU19USU1fQ09VTlRFUl9NT0RFKE1PREUpICgoKE1PREUpID09IFRJTV9Db3VudGVyTW9kZV9VcCkgfHwgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChNT0RFKSA9PSBUSU1fQ291bnRlck1vZGVfRG93bikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE1PREUpID09IFRJTV9Db3VudGVyTW9kZV9DZW50ZXJBbGlnbmVkMSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE1PREUpID09IFRJTV9Db3VudGVyTW9kZV9DZW50ZXJBbGlnbmVkMikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE1PREUpID09IFRJTV9Db3VudGVyTW9kZV9DZW50ZXJBbGlnbmVkMykpCisvKioKKyAgKiBAfQorICAqLyAKKworLyoqIEBkZWZncm91cCBUSU1fT3V0cHV0X0NvbXBhcmVfUG9sYXJpdHkgCisgICogQHsKKyAgKi8KKworI2RlZmluZSBUSU1fT0NQb2xhcml0eV9IaWdoICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAwKQorI2RlZmluZSBUSU1fT0NQb2xhcml0eV9Mb3cgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAyKQorI2RlZmluZSBJU19USU1fT0NfUE9MQVJJVFkoUE9MQVJJVFkpICgoKFBPTEFSSVRZKSA9PSBUSU1fT0NQb2xhcml0eV9IaWdoKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUE9MQVJJVFkpID09IFRJTV9PQ1BvbGFyaXR5X0xvdykpCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIFRJTV9PdXRwdXRfQ29tcGFyZV9OX1BvbGFyaXR5IAorICAqIEB7CisgICovCisgIAorI2RlZmluZSBUSU1fT0NOUG9sYXJpdHlfSGlnaCAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAwKQorI2RlZmluZSBUSU1fT0NOUG9sYXJpdHlfTG93ICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA4KQorI2RlZmluZSBJU19USU1fT0NOX1BPTEFSSVRZKFBPTEFSSVRZKSAoKChQT0xBUklUWSkgPT0gVElNX09DTlBvbGFyaXR5X0hpZ2gpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUE9MQVJJVFkpID09IFRJTV9PQ05Qb2xhcml0eV9Mb3cpKQorLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBUSU1fT3V0cHV0X0NvbXBhcmVfc3RhdGUgCisgICogQHsKKyAgKi8KKworI2RlZmluZSBUSU1fT3V0cHV0U3RhdGVfRGlzYWJsZSAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAwKQorI2RlZmluZSBUSU1fT3V0cHV0U3RhdGVfRW5hYmxlICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAxKQorI2RlZmluZSBJU19USU1fT1VUUFVUX1NUQVRFKFNUQVRFKSAoKChTVEFURSkgPT0gVElNX091dHB1dFN0YXRlX0Rpc2FibGUpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoU1RBVEUpID09IFRJTV9PdXRwdXRTdGF0ZV9FbmFibGUpKQorLyoqCisgICogQH0KKyAgKi8gCisKKy8qKiBAZGVmZ3JvdXAgVElNX091dHB1dF9Db21wYXJlX05fc3RhdGUgCisgICogQHsKKyAgKi8KKworI2RlZmluZSBUSU1fT3V0cHV0TlN0YXRlX0Rpc2FibGUgICAgICAgICAgICgodWludDE2X3QpMHgwMDAwKQorI2RlZmluZSBUSU1fT3V0cHV0TlN0YXRlX0VuYWJsZSAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA0KQorI2RlZmluZSBJU19USU1fT1VUUFVUTl9TVEFURShTVEFURSkgKCgoU1RBVEUpID09IFRJTV9PdXRwdXROU3RhdGVfRGlzYWJsZSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoU1RBVEUpID09IFRJTV9PdXRwdXROU3RhdGVfRW5hYmxlKSkKKy8qKgorICAqIEB9CisgICovIAorCisvKiogQGRlZmdyb3VwIFRJTV9DYXB0dXJlX0NvbXBhcmVfc3RhdGUgCisgICogQHsKKyAgKi8KKworI2RlZmluZSBUSU1fQ0N4X0VuYWJsZSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMSkKKyNkZWZpbmUgVElNX0NDeF9EaXNhYmxlICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDApCisjZGVmaW5lIElTX1RJTV9DQ1goQ0NYKSAoKChDQ1gpID09IFRJTV9DQ3hfRW5hYmxlKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgKChDQ1gpID09IFRJTV9DQ3hfRGlzYWJsZSkpCisvKioKKyAgKiBAfQorICAqLyAKKworLyoqIEBkZWZncm91cCBUSU1fQ2FwdHVyZV9Db21wYXJlX05fc3RhdGUgCisgICogQHsKKyAgKi8KKworI2RlZmluZSBUSU1fQ0N4Tl9FbmFibGUgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwNCkKKyNkZWZpbmUgVElNX0NDeE5fRGlzYWJsZSAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDApCisjZGVmaW5lIElTX1RJTV9DQ1hOKENDWE4pICgoKENDWE4pID09IFRJTV9DQ3hOX0VuYWJsZSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKChDQ1hOKSA9PSBUSU1fQ0N4Tl9EaXNhYmxlKSkKKy8qKgorICAqIEB9CisgICovIAorCisvKiogQGRlZmdyb3VwIEJyZWFrX0lucHV0X2VuYWJsZV9kaXNhYmxlIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgVElNX0JyZWFrX0VuYWJsZSAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MTAwMCkKKyNkZWZpbmUgVElNX0JyZWFrX0Rpc2FibGUgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMCkKKyNkZWZpbmUgSVNfVElNX0JSRUFLX1NUQVRFKFNUQVRFKSAoKChTVEFURSkgPT0gVElNX0JyZWFrX0VuYWJsZSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFNUQVRFKSA9PSBUSU1fQnJlYWtfRGlzYWJsZSkpCisvKioKKyAgKiBAfQorICAqLyAKKworLyoqIEBkZWZncm91cCBCcmVha19Qb2xhcml0eSAKKyAgKiBAeworICAqLworCisjZGVmaW5lIFRJTV9CcmVha1BvbGFyaXR5X0xvdyAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDApCisjZGVmaW5lIFRJTV9CcmVha1BvbGFyaXR5X0hpZ2ggICAgICAgICAgICAgKCh1aW50MTZfdCkweDIwMDApCisjZGVmaW5lIElTX1RJTV9CUkVBS19QT0xBUklUWShQT0xBUklUWSkgKCgoUE9MQVJJVFkpID09IFRJTV9CcmVha1BvbGFyaXR5X0xvdykgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBPTEFSSVRZKSA9PSBUSU1fQnJlYWtQb2xhcml0eV9IaWdoKSkKKy8qKgorICAqIEB9CisgICovIAorCisvKiogQGRlZmdyb3VwIFRJTV9BT0VfQml0X1NldF9SZXNldCAKKyAgKiBAeworICAqLworCisjZGVmaW5lIFRJTV9BdXRvbWF0aWNPdXRwdXRfRW5hYmxlICAgICAgICAgKCh1aW50MTZfdCkweDQwMDApCisjZGVmaW5lIFRJTV9BdXRvbWF0aWNPdXRwdXRfRGlzYWJsZSAgICAgICAgKCh1aW50MTZfdCkweDAwMDApCisjZGVmaW5lIElTX1RJTV9BVVRPTUFUSUNfT1VUUFVUX1NUQVRFKFNUQVRFKSAoKChTVEFURSkgPT0gVElNX0F1dG9tYXRpY091dHB1dF9FbmFibGUpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFNUQVRFKSA9PSBUSU1fQXV0b21hdGljT3V0cHV0X0Rpc2FibGUpKQorLyoqCisgICogQH0KKyAgKi8gCisKKy8qKiBAZGVmZ3JvdXAgTG9ja19sZXZlbCAKKyAgKiBAeworICAqLworCisjZGVmaW5lIFRJTV9MT0NLTGV2ZWxfT0ZGICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDApCisjZGVmaW5lIFRJTV9MT0NLTGV2ZWxfMSAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAxMDApCisjZGVmaW5lIFRJTV9MT0NLTGV2ZWxfMiAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAyMDApCisjZGVmaW5lIFRJTV9MT0NLTGV2ZWxfMyAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAzMDApCisjZGVmaW5lIElTX1RJTV9MT0NLX0xFVkVMKExFVkVMKSAoKChMRVZFTCkgPT0gVElNX0xPQ0tMZXZlbF9PRkYpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKExFVkVMKSA9PSBUSU1fTE9DS0xldmVsXzEpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKExFVkVMKSA9PSBUSU1fTE9DS0xldmVsXzIpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKExFVkVMKSA9PSBUSU1fTE9DS0xldmVsXzMpKQorLyoqCisgICogQH0KKyAgKi8gCisKKy8qKiBAZGVmZ3JvdXAgT1NTSV9PZmZfU3RhdGVfU2VsZWN0aW9uX2Zvcl9JZGxlX21vZGVfc3RhdGUgCisgICogQHsKKyAgKi8KKworI2RlZmluZSBUSU1fT1NTSVN0YXRlX0VuYWJsZSAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwNDAwKQorI2RlZmluZSBUSU1fT1NTSVN0YXRlX0Rpc2FibGUgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAwKQorI2RlZmluZSBJU19USU1fT1NTSV9TVEFURShTVEFURSkgKCgoU1RBVEUpID09IFRJTV9PU1NJU3RhdGVfRW5hYmxlKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChTVEFURSkgPT0gVElNX09TU0lTdGF0ZV9EaXNhYmxlKSkKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgT1NTUl9PZmZfU3RhdGVfU2VsZWN0aW9uX2Zvcl9SdW5fbW9kZV9zdGF0ZSAKKyAgKiBAeworICAqLworCisjZGVmaW5lIFRJTV9PU1NSU3RhdGVfRW5hYmxlICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDA4MDApCisjZGVmaW5lIFRJTV9PU1NSU3RhdGVfRGlzYWJsZSAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDApCisjZGVmaW5lIElTX1RJTV9PU1NSX1NUQVRFKFNUQVRFKSAoKChTVEFURSkgPT0gVElNX09TU1JTdGF0ZV9FbmFibGUpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFNUQVRFKSA9PSBUSU1fT1NTUlN0YXRlX0Rpc2FibGUpKQorLyoqCisgICogQH0KKyAgKi8gCisKKy8qKiBAZGVmZ3JvdXAgVElNX091dHB1dF9Db21wYXJlX0lkbGVfU3RhdGUgCisgICogQHsKKyAgKi8KKworI2RlZmluZSBUSU1fT0NJZGxlU3RhdGVfU2V0ICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMTAwKQorI2RlZmluZSBUSU1fT0NJZGxlU3RhdGVfUmVzZXQgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAwKQorI2RlZmluZSBJU19USU1fT0NJRExFX1NUQVRFKFNUQVRFKSAoKChTVEFURSkgPT0gVElNX09DSWRsZVN0YXRlX1NldCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChTVEFURSkgPT0gVElNX09DSWRsZVN0YXRlX1Jlc2V0KSkKKy8qKgorICAqIEB9CisgICovIAorCisvKiogQGRlZmdyb3VwIFRJTV9PdXRwdXRfQ29tcGFyZV9OX0lkbGVfU3RhdGUgCisgICogQHsKKyAgKi8KKworI2RlZmluZSBUSU1fT0NOSWRsZVN0YXRlX1NldCAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMjAwKQorI2RlZmluZSBUSU1fT0NOSWRsZVN0YXRlX1Jlc2V0ICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAwKQorI2RlZmluZSBJU19USU1fT0NOSURMRV9TVEFURShTVEFURSkgKCgoU1RBVEUpID09IFRJTV9PQ05JZGxlU3RhdGVfU2V0KSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChTVEFURSkgPT0gVElNX09DTklkbGVTdGF0ZV9SZXNldCkpCisvKioKKyAgKiBAfQorICAqLyAKKworLyoqIEBkZWZncm91cCBUSU1fSW5wdXRfQ2FwdHVyZV9Qb2xhcml0eSAKKyAgKiBAeworICAqLworCisjZGVmaW5lICBUSU1fSUNQb2xhcml0eV9SaXNpbmcgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDApCisjZGVmaW5lICBUSU1fSUNQb2xhcml0eV9GYWxsaW5nICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDIpCisjZGVmaW5lICBUSU1fSUNQb2xhcml0eV9Cb3RoRWRnZSAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMEEpCisjZGVmaW5lIElTX1RJTV9JQ19QT0xBUklUWShQT0xBUklUWSkgKCgoUE9MQVJJVFkpID09IFRJTV9JQ1BvbGFyaXR5X1Jpc2luZykgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBPTEFSSVRZKSA9PSBUSU1fSUNQb2xhcml0eV9GYWxsaW5nKSkKKyNkZWZpbmUgSVNfVElNX0lDX1BPTEFSSVRZX0xJVEUoUE9MQVJJVFkpICgoKFBPTEFSSVRZKSA9PSBUSU1fSUNQb2xhcml0eV9SaXNpbmcpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBPTEFSSVRZKSA9PSBUSU1fSUNQb2xhcml0eV9GYWxsaW5nKXx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBPTEFSSVRZKSA9PSBUSU1fSUNQb2xhcml0eV9Cb3RoRWRnZSkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy8qKgorICAqIEB9CisgICovIAorCisvKiogQGRlZmdyb3VwIFRJTV9JbnB1dF9DYXB0dXJlX1NlbGVjdGlvbiAKKyAgKiBAeworICAqLworCisjZGVmaW5lIFRJTV9JQ1NlbGVjdGlvbl9EaXJlY3RUSSAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDEpIC8qITwgVElNIElucHV0IDEsIDIsIDMgb3IgNCBpcyBzZWxlY3RlZCB0byBiZSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0ZWQgdG8gSUMxLCBJQzIsIElDMyBvciBJQzQsIHJlc3BlY3RpdmVseSAqLworI2RlZmluZSBUSU1fSUNTZWxlY3Rpb25fSW5kaXJlY3RUSSAgICAgICAgICgodWludDE2X3QpMHgwMDAyKSAvKiE8IFRJTSBJbnB1dCAxLCAyLCAzIG9yIDQgaXMgc2VsZWN0ZWQgdG8gYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0ZWQgdG8gSUMyLCBJQzEsIElDNCBvciBJQzMsIHJlc3BlY3RpdmVseS4gKi8KKyNkZWZpbmUgVElNX0lDU2VsZWN0aW9uX1RSQyAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMykgLyohPCBUSU0gSW5wdXQgMSwgMiwgMyBvciA0IGlzIHNlbGVjdGVkIHRvIGJlIGNvbm5lY3RlZCB0byBUUkMuICovCisjZGVmaW5lIElTX1RJTV9JQ19TRUxFQ1RJT04oU0VMRUNUSU9OKSAoKChTRUxFQ1RJT04pID09IFRJTV9JQ1NlbGVjdGlvbl9EaXJlY3RUSSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoU0VMRUNUSU9OKSA9PSBUSU1fSUNTZWxlY3Rpb25fSW5kaXJlY3RUSSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoU0VMRUNUSU9OKSA9PSBUSU1fSUNTZWxlY3Rpb25fVFJDKSkKKy8qKgorICAqIEB9CisgICovIAorCisvKiogQGRlZmdyb3VwIFRJTV9JbnB1dF9DYXB0dXJlX1ByZXNjYWxlciAKKyAgKiBAeworICAqLworCisjZGVmaW5lIFRJTV9JQ1BTQ19ESVYxICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDApIC8qITwgQ2FwdHVyZSBwZXJmb3JtZWQgZWFjaCB0aW1lIGFuIGVkZ2UgaXMgZGV0ZWN0ZWQgb24gdGhlIGNhcHR1cmUgaW5wdXQuICovCisjZGVmaW5lIFRJTV9JQ1BTQ19ESVYyICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDQpIC8qITwgQ2FwdHVyZSBwZXJmb3JtZWQgb25jZSBldmVyeSAyIGV2ZW50cy4gKi8KKyNkZWZpbmUgVElNX0lDUFNDX0RJVjQgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwOCkgLyohPCBDYXB0dXJlIHBlcmZvcm1lZCBvbmNlIGV2ZXJ5IDQgZXZlbnRzLiAqLworI2RlZmluZSBUSU1fSUNQU0NfRElWOCAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDBDKSAvKiE8IENhcHR1cmUgcGVyZm9ybWVkIG9uY2UgZXZlcnkgOCBldmVudHMuICovCisjZGVmaW5lIElTX1RJTV9JQ19QUkVTQ0FMRVIoUFJFU0NBTEVSKSAoKChQUkVTQ0FMRVIpID09IFRJTV9JQ1BTQ19ESVYxKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQUkVTQ0FMRVIpID09IFRJTV9JQ1BTQ19ESVYyKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQUkVTQ0FMRVIpID09IFRJTV9JQ1BTQ19ESVY0KSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQUkVTQ0FMRVIpID09IFRJTV9JQ1BTQ19ESVY4KSkKKy8qKgorICAqIEB9CisgICovIAorCisvKiogQGRlZmdyb3VwIFRJTV9pbnRlcnJ1cHRfc291cmNlcyAKKyAgKiBAeworICAqLworCisjZGVmaW5lIFRJTV9JVF9VcGRhdGUgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDEpCisjZGVmaW5lIFRJTV9JVF9DQzEgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDIpCisjZGVmaW5lIFRJTV9JVF9DQzIgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDQpCisjZGVmaW5lIFRJTV9JVF9DQzMgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDgpCisjZGVmaW5lIFRJTV9JVF9DQzQgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMTApCisjZGVmaW5lIFRJTV9JVF9DT00gICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMjApCisjZGVmaW5lIFRJTV9JVF9UcmlnZ2VyICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwNDApCisjZGVmaW5lIFRJTV9JVF9CcmVhayAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwODApCisjZGVmaW5lIElTX1RJTV9JVChJVCkgKCgoKElUKSAmICh1aW50MTZfdCkweEZGMDApID09IDB4MDAwMCkgJiYgKChJVCkgIT0gMHgwMDAwKSkKKworI2RlZmluZSBJU19USU1fR0VUX0lUKElUKSAoKChJVCkgPT0gVElNX0lUX1VwZGF0ZSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJVCkgPT0gVElNX0lUX0NDMSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJVCkgPT0gVElNX0lUX0NDMikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJVCkgPT0gVElNX0lUX0NDMykgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJVCkgPT0gVElNX0lUX0NDNCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJVCkgPT0gVElNX0lUX0NPTSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJVCkgPT0gVElNX0lUX1RyaWdnZXIpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgoSVQpID09IFRJTV9JVF9CcmVhaykpCisvKioKKyAgKiBAfQorICAqLyAKKworLyoqIEBkZWZncm91cCBUSU1fRE1BX0Jhc2VfYWRkcmVzcyAKKyAgKiBAeworICAqLworCisjZGVmaW5lIFRJTV9ETUFCYXNlX0NSMSAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDApCisjZGVmaW5lIFRJTV9ETUFCYXNlX0NSMiAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDEpCisjZGVmaW5lIFRJTV9ETUFCYXNlX1NNQ1IgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDIpCisjZGVmaW5lIFRJTV9ETUFCYXNlX0RJRVIgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDMpCisjZGVmaW5lIFRJTV9ETUFCYXNlX1NSICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDQpCisjZGVmaW5lIFRJTV9ETUFCYXNlX0VHUiAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDUpCisjZGVmaW5lIFRJTV9ETUFCYXNlX0NDTVIxICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDYpCisjZGVmaW5lIFRJTV9ETUFCYXNlX0NDTVIyICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDcpCisjZGVmaW5lIFRJTV9ETUFCYXNlX0NDRVIgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDgpCisjZGVmaW5lIFRJTV9ETUFCYXNlX0NOVCAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDkpCisjZGVmaW5lIFRJTV9ETUFCYXNlX1BTQyAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMEEpCisjZGVmaW5lIFRJTV9ETUFCYXNlX0FSUiAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMEIpCisjZGVmaW5lIFRJTV9ETUFCYXNlX1JDUiAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMEMpCisjZGVmaW5lIFRJTV9ETUFCYXNlX0NDUjEgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMEQpCisjZGVmaW5lIFRJTV9ETUFCYXNlX0NDUjIgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMEUpCisjZGVmaW5lIFRJTV9ETUFCYXNlX0NDUjMgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMEYpCisjZGVmaW5lIFRJTV9ETUFCYXNlX0NDUjQgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMTApCisjZGVmaW5lIFRJTV9ETUFCYXNlX0JEVFIgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMTEpCisjZGVmaW5lIFRJTV9ETUFCYXNlX0RDUiAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMTIpCisjZGVmaW5lIElTX1RJTV9ETUFfQkFTRShCQVNFKSAoKChCQVNFKSA9PSBUSU1fRE1BQmFzZV9DUjEpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEJBU0UpID09IFRJTV9ETUFCYXNlX0NSMikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoQkFTRSkgPT0gVElNX0RNQUJhc2VfU01DUikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoQkFTRSkgPT0gVElNX0RNQUJhc2VfRElFUikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoQkFTRSkgPT0gVElNX0RNQUJhc2VfU1IpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEJBU0UpID09IFRJTV9ETUFCYXNlX0VHUikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoQkFTRSkgPT0gVElNX0RNQUJhc2VfQ0NNUjEpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEJBU0UpID09IFRJTV9ETUFCYXNlX0NDTVIyKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChCQVNFKSA9PSBUSU1fRE1BQmFzZV9DQ0VSKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChCQVNFKSA9PSBUSU1fRE1BQmFzZV9DTlQpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEJBU0UpID09IFRJTV9ETUFCYXNlX1BTQykgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoQkFTRSkgPT0gVElNX0RNQUJhc2VfQVJSKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChCQVNFKSA9PSBUSU1fRE1BQmFzZV9SQ1IpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEJBU0UpID09IFRJTV9ETUFCYXNlX0NDUjEpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEJBU0UpID09IFRJTV9ETUFCYXNlX0NDUjIpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEJBU0UpID09IFRJTV9ETUFCYXNlX0NDUjMpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEJBU0UpID09IFRJTV9ETUFCYXNlX0NDUjQpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEJBU0UpID09IFRJTV9ETUFCYXNlX0JEVFIpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEJBU0UpID09IFRJTV9ETUFCYXNlX0RDUikpCisvKioKKyAgKiBAfQorICAqLyAKKworLyoqIEBkZWZncm91cCBUSU1fRE1BX0J1cnN0X0xlbmd0aCAKKyAgKiBAeworICAqLworCisjZGVmaW5lIFRJTV9ETUFCdXJzdExlbmd0aF8xVHJhbnNmZXIgICAgICAgICAgICgodWludDE2X3QpMHgwMDAwKQorI2RlZmluZSBUSU1fRE1BQnVyc3RMZW5ndGhfMlRyYW5zZmVycyAgICAgICAgICAoKHVpbnQxNl90KTB4MDEwMCkKKyNkZWZpbmUgVElNX0RNQUJ1cnN0TGVuZ3RoXzNUcmFuc2ZlcnMgICAgICAgICAgKCh1aW50MTZfdCkweDAyMDApCisjZGVmaW5lIFRJTV9ETUFCdXJzdExlbmd0aF80VHJhbnNmZXJzICAgICAgICAgICgodWludDE2X3QpMHgwMzAwKQorI2RlZmluZSBUSU1fRE1BQnVyc3RMZW5ndGhfNVRyYW5zZmVycyAgICAgICAgICAoKHVpbnQxNl90KTB4MDQwMCkKKyNkZWZpbmUgVElNX0RNQUJ1cnN0TGVuZ3RoXzZUcmFuc2ZlcnMgICAgICAgICAgKCh1aW50MTZfdCkweDA1MDApCisjZGVmaW5lIFRJTV9ETUFCdXJzdExlbmd0aF83VHJhbnNmZXJzICAgICAgICAgICgodWludDE2X3QpMHgwNjAwKQorI2RlZmluZSBUSU1fRE1BQnVyc3RMZW5ndGhfOFRyYW5zZmVycyAgICAgICAgICAoKHVpbnQxNl90KTB4MDcwMCkKKyNkZWZpbmUgVElNX0RNQUJ1cnN0TGVuZ3RoXzlUcmFuc2ZlcnMgICAgICAgICAgKCh1aW50MTZfdCkweDA4MDApCisjZGVmaW5lIFRJTV9ETUFCdXJzdExlbmd0aF8xMFRyYW5zZmVycyAgICAgICAgICgodWludDE2X3QpMHgwOTAwKQorI2RlZmluZSBUSU1fRE1BQnVyc3RMZW5ndGhfMTFUcmFuc2ZlcnMgICAgICAgICAoKHVpbnQxNl90KTB4MEEwMCkKKyNkZWZpbmUgVElNX0RNQUJ1cnN0TGVuZ3RoXzEyVHJhbnNmZXJzICAgICAgICAgKCh1aW50MTZfdCkweDBCMDApCisjZGVmaW5lIFRJTV9ETUFCdXJzdExlbmd0aF8xM1RyYW5zZmVycyAgICAgICAgICgodWludDE2X3QpMHgwQzAwKQorI2RlZmluZSBUSU1fRE1BQnVyc3RMZW5ndGhfMTRUcmFuc2ZlcnMgICAgICAgICAoKHVpbnQxNl90KTB4MEQwMCkKKyNkZWZpbmUgVElNX0RNQUJ1cnN0TGVuZ3RoXzE1VHJhbnNmZXJzICAgICAgICAgKCh1aW50MTZfdCkweDBFMDApCisjZGVmaW5lIFRJTV9ETUFCdXJzdExlbmd0aF8xNlRyYW5zZmVycyAgICAgICAgICgodWludDE2X3QpMHgwRjAwKQorI2RlZmluZSBUSU1fRE1BQnVyc3RMZW5ndGhfMTdUcmFuc2ZlcnMgICAgICAgICAoKHVpbnQxNl90KTB4MTAwMCkKKyNkZWZpbmUgVElNX0RNQUJ1cnN0TGVuZ3RoXzE4VHJhbnNmZXJzICAgICAgICAgKCh1aW50MTZfdCkweDExMDApCisjZGVmaW5lIElTX1RJTV9ETUFfTEVOR1RIKExFTkdUSCkgKCgoTEVOR1RIKSA9PSBUSU1fRE1BQnVyc3RMZW5ndGhfMVRyYW5zZmVyKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTEVOR1RIKSA9PSBUSU1fRE1BQnVyc3RMZW5ndGhfMlRyYW5zZmVycykgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKExFTkdUSCkgPT0gVElNX0RNQUJ1cnN0TGVuZ3RoXzNUcmFuc2ZlcnMpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChMRU5HVEgpID09IFRJTV9ETUFCdXJzdExlbmd0aF80VHJhbnNmZXJzKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTEVOR1RIKSA9PSBUSU1fRE1BQnVyc3RMZW5ndGhfNVRyYW5zZmVycykgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKExFTkdUSCkgPT0gVElNX0RNQUJ1cnN0TGVuZ3RoXzZUcmFuc2ZlcnMpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChMRU5HVEgpID09IFRJTV9ETUFCdXJzdExlbmd0aF83VHJhbnNmZXJzKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTEVOR1RIKSA9PSBUSU1fRE1BQnVyc3RMZW5ndGhfOFRyYW5zZmVycykgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKExFTkdUSCkgPT0gVElNX0RNQUJ1cnN0TGVuZ3RoXzlUcmFuc2ZlcnMpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChMRU5HVEgpID09IFRJTV9ETUFCdXJzdExlbmd0aF8xMFRyYW5zZmVycykgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKExFTkdUSCkgPT0gVElNX0RNQUJ1cnN0TGVuZ3RoXzExVHJhbnNmZXJzKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTEVOR1RIKSA9PSBUSU1fRE1BQnVyc3RMZW5ndGhfMTJUcmFuc2ZlcnMpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChMRU5HVEgpID09IFRJTV9ETUFCdXJzdExlbmd0aF8xM1RyYW5zZmVycykgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKExFTkdUSCkgPT0gVElNX0RNQUJ1cnN0TGVuZ3RoXzE0VHJhbnNmZXJzKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTEVOR1RIKSA9PSBUSU1fRE1BQnVyc3RMZW5ndGhfMTVUcmFuc2ZlcnMpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChMRU5HVEgpID09IFRJTV9ETUFCdXJzdExlbmd0aF8xNlRyYW5zZmVycykgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKExFTkdUSCkgPT0gVElNX0RNQUJ1cnN0TGVuZ3RoXzE3VHJhbnNmZXJzKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTEVOR1RIKSA9PSBUSU1fRE1BQnVyc3RMZW5ndGhfMThUcmFuc2ZlcnMpKQorLyoqCisgICogQH0KKyAgKi8gCisKKy8qKiBAZGVmZ3JvdXAgVElNX0RNQV9zb3VyY2VzIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgVElNX0RNQV9VcGRhdGUgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDEwMCkKKyNkZWZpbmUgVElNX0RNQV9DQzEgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDIwMCkKKyNkZWZpbmUgVElNX0RNQV9DQzIgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDQwMCkKKyNkZWZpbmUgVElNX0RNQV9DQzMgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDgwMCkKKyNkZWZpbmUgVElNX0RNQV9DQzQgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MTAwMCkKKyNkZWZpbmUgVElNX0RNQV9DT00gICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MjAwMCkKKyNkZWZpbmUgVElNX0RNQV9UcmlnZ2VyICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4NDAwMCkKKyNkZWZpbmUgSVNfVElNX0RNQV9TT1VSQ0UoU09VUkNFKSAoKCgoU09VUkNFKSAmICh1aW50MTZfdCkweDgwRkYpID09IDB4MDAwMCkgJiYgKChTT1VSQ0UpICE9IDB4MDAwMCkpCisKKy8qKgorICAqIEB9CisgICovIAorCisvKiogQGRlZmdyb3VwIFRJTV9FeHRlcm5hbF9UcmlnZ2VyX1ByZXNjYWxlciAKKyAgKiBAeworICAqLworCisjZGVmaW5lIFRJTV9FeHRUUkdQU0NfT0ZGICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDApCisjZGVmaW5lIFRJTV9FeHRUUkdQU0NfRElWMiAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDEwMDApCisjZGVmaW5lIFRJTV9FeHRUUkdQU0NfRElWNCAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDIwMDApCisjZGVmaW5lIFRJTV9FeHRUUkdQU0NfRElWOCAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDMwMDApCisjZGVmaW5lIElTX1RJTV9FWFRfUFJFU0NBTEVSKFBSRVNDQUxFUikgKCgoUFJFU0NBTEVSKSA9PSBUSU1fRXh0VFJHUFNDX09GRikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBSRVNDQUxFUikgPT0gVElNX0V4dFRSR1BTQ19ESVYyKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUFJFU0NBTEVSKSA9PSBUSU1fRXh0VFJHUFNDX0RJVjQpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQUkVTQ0FMRVIpID09IFRJTV9FeHRUUkdQU0NfRElWOCkpCisvKioKKyAgKiBAfQorICAqLyAKKworLyoqIEBkZWZncm91cCBUSU1fSW50ZXJuYWxfVHJpZ2dlcl9TZWxlY3Rpb24gCisgICogQHsKKyAgKi8KKworI2RlZmluZSBUSU1fVFNfSVRSMCAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAwKQorI2RlZmluZSBUSU1fVFNfSVRSMSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDEwKQorI2RlZmluZSBUSU1fVFNfSVRSMiAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDIwKQorI2RlZmluZSBUSU1fVFNfSVRSMyAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDMwKQorI2RlZmluZSBUSU1fVFNfVEkxRl9FRCAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDQwKQorI2RlZmluZSBUSU1fVFNfVEkxRlAxICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDUwKQorI2RlZmluZSBUSU1fVFNfVEkyRlAyICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDYwKQorI2RlZmluZSBUSU1fVFNfRVRSRiAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDcwKQorI2RlZmluZSBJU19USU1fVFJJR0dFUl9TRUxFQ1RJT04oU0VMRUNUSU9OKSAoKChTRUxFQ1RJT04pID09IFRJTV9UU19JVFIwKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFNFTEVDVElPTikgPT0gVElNX1RTX0lUUjEpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoU0VMRUNUSU9OKSA9PSBUSU1fVFNfSVRSMikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChTRUxFQ1RJT04pID09IFRJTV9UU19JVFIzKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFNFTEVDVElPTikgPT0gVElNX1RTX1RJMUZfRUQpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoU0VMRUNUSU9OKSA9PSBUSU1fVFNfVEkxRlAxKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFNFTEVDVElPTikgPT0gVElNX1RTX1RJMkZQMikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChTRUxFQ1RJT04pID09IFRJTV9UU19FVFJGKSkKKyNkZWZpbmUgSVNfVElNX0lOVEVSTkFMX1RSSUdHRVJfU0VMRUNUSU9OKFNFTEVDVElPTikgKCgoU0VMRUNUSU9OKSA9PSBUSU1fVFNfSVRSMCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChTRUxFQ1RJT04pID09IFRJTV9UU19JVFIxKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFNFTEVDVElPTikgPT0gVElNX1RTX0lUUjIpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoU0VMRUNUSU9OKSA9PSBUSU1fVFNfSVRSMykpCisvKioKKyAgKiBAfQorICAqLyAKKworLyoqIEBkZWZncm91cCBUSU1fVEl4X0V4dGVybmFsX0Nsb2NrX1NvdXJjZSAKKyAgKiBAeworICAqLworCisjZGVmaW5lIFRJTV9USXhFeHRlcm5hbENMSzFTb3VyY2VfVEkxICAgICAgKCh1aW50MTZfdCkweDAwNTApCisjZGVmaW5lIFRJTV9USXhFeHRlcm5hbENMSzFTb3VyY2VfVEkyICAgICAgKCh1aW50MTZfdCkweDAwNjApCisjZGVmaW5lIFRJTV9USXhFeHRlcm5hbENMSzFTb3VyY2VfVEkxRUQgICAgKCh1aW50MTZfdCkweDAwNDApCisjZGVmaW5lIElTX1RJTV9USVhDTEtfU09VUkNFKFNPVVJDRSkgKCgoU09VUkNFKSA9PSBUSU1fVEl4RXh0ZXJuYWxDTEsxU291cmNlX1RJMSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFNPVVJDRSkgPT0gVElNX1RJeEV4dGVybmFsQ0xLMVNvdXJjZV9USTIpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChTT1VSQ0UpID09IFRJTV9USXhFeHRlcm5hbENMSzFTb3VyY2VfVEkxRUQpKQorLyoqCisgICogQH0KKyAgKi8gCisKKy8qKiBAZGVmZ3JvdXAgVElNX0V4dGVybmFsX1RyaWdnZXJfUG9sYXJpdHkgCisgICogQHsKKyAgKi8gCisjZGVmaW5lIFRJTV9FeHRUUkdQb2xhcml0eV9JbnZlcnRlZCAgICAgICAgKCh1aW50MTZfdCkweDgwMDApCisjZGVmaW5lIFRJTV9FeHRUUkdQb2xhcml0eV9Ob25JbnZlcnRlZCAgICAgKCh1aW50MTZfdCkweDAwMDApCisjZGVmaW5lIElTX1RJTV9FWFRfUE9MQVJJVFkoUE9MQVJJVFkpICgoKFBPTEFSSVRZKSA9PSBUSU1fRXh0VFJHUG9sYXJpdHlfSW52ZXJ0ZWQpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUE9MQVJJVFkpID09IFRJTV9FeHRUUkdQb2xhcml0eV9Ob25JbnZlcnRlZCkpCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIFRJTV9QcmVzY2FsZXJfUmVsb2FkX01vZGUgCisgICogQHsKKyAgKi8KKworI2RlZmluZSBUSU1fUFNDUmVsb2FkTW9kZV9VcGRhdGUgICAgICAgICAgICgodWludDE2X3QpMHgwMDAwKQorI2RlZmluZSBUSU1fUFNDUmVsb2FkTW9kZV9JbW1lZGlhdGUgICAgICAgICgodWludDE2X3QpMHgwMDAxKQorI2RlZmluZSBJU19USU1fUFJFU0NBTEVSX1JFTE9BRChSRUxPQUQpICgoKFJFTE9BRCkgPT0gVElNX1BTQ1JlbG9hZE1vZGVfVXBkYXRlKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUkVMT0FEKSA9PSBUSU1fUFNDUmVsb2FkTW9kZV9JbW1lZGlhdGUpKQorLyoqCisgICogQH0KKyAgKi8gCisKKy8qKiBAZGVmZ3JvdXAgVElNX0ZvcmNlZF9BY3Rpb24gCisgICogQHsKKyAgKi8KKworI2RlZmluZSBUSU1fRm9yY2VkQWN0aW9uX0FjdGl2ZSAgICAgICAgICAgICgodWludDE2X3QpMHgwMDUwKQorI2RlZmluZSBUSU1fRm9yY2VkQWN0aW9uX0luQWN0aXZlICAgICAgICAgICgodWludDE2X3QpMHgwMDQwKQorI2RlZmluZSBJU19USU1fRk9SQ0VEX0FDVElPTihBQ1RJT04pICgoKEFDVElPTikgPT0gVElNX0ZvcmNlZEFjdGlvbl9BY3RpdmUpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChBQ1RJT04pID09IFRJTV9Gb3JjZWRBY3Rpb25fSW5BY3RpdmUpKQorLyoqCisgICogQH0KKyAgKi8gCisKKy8qKiBAZGVmZ3JvdXAgVElNX0VuY29kZXJfTW9kZSAKKyAgKiBAeworICAqLworCisjZGVmaW5lIFRJTV9FbmNvZGVyTW9kZV9USTEgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDEpCisjZGVmaW5lIFRJTV9FbmNvZGVyTW9kZV9USTIgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDIpCisjZGVmaW5lIFRJTV9FbmNvZGVyTW9kZV9USTEyICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDMpCisjZGVmaW5lIElTX1RJTV9FTkNPREVSX01PREUoTU9ERSkgKCgoTU9ERSkgPT0gVElNX0VuY29kZXJNb2RlX1RJMSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE1PREUpID09IFRJTV9FbmNvZGVyTW9kZV9USTIpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChNT0RFKSA9PSBUSU1fRW5jb2Rlck1vZGVfVEkxMikpCisvKioKKyAgKiBAfQorICAqLyAKKworCisvKiogQGRlZmdyb3VwIFRJTV9FdmVudF9Tb3VyY2UgCisgICogQHsKKyAgKi8KKworI2RlZmluZSBUSU1fRXZlbnRTb3VyY2VfVXBkYXRlICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAxKQorI2RlZmluZSBUSU1fRXZlbnRTb3VyY2VfQ0MxICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAyKQorI2RlZmluZSBUSU1fRXZlbnRTb3VyY2VfQ0MyICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA0KQorI2RlZmluZSBUSU1fRXZlbnRTb3VyY2VfQ0MzICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA4KQorI2RlZmluZSBUSU1fRXZlbnRTb3VyY2VfQ0M0ICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDEwKQorI2RlZmluZSBUSU1fRXZlbnRTb3VyY2VfQ09NICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDIwKQorI2RlZmluZSBUSU1fRXZlbnRTb3VyY2VfVHJpZ2dlciAgICAgICAgICAgICgodWludDE2X3QpMHgwMDQwKQorI2RlZmluZSBUSU1fRXZlbnRTb3VyY2VfQnJlYWsgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDgwKQorI2RlZmluZSBJU19USU1fRVZFTlRfU09VUkNFKFNPVVJDRSkgKCgoKFNPVVJDRSkgJiAodWludDE2X3QpMHhGRjAwKSA9PSAweDAwMDApICYmICgoU09VUkNFKSAhPSAweDAwMDApKQorCisvKioKKyAgKiBAfQorICAqLyAKKworLyoqIEBkZWZncm91cCBUSU1fVXBkYXRlX1NvdXJjZSAKKyAgKiBAeworICAqLworCisjZGVmaW5lIFRJTV9VcGRhdGVTb3VyY2VfR2xvYmFsICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDApIC8qITwgU291cmNlIG9mIHVwZGF0ZSBpcyB0aGUgY291bnRlciBvdmVyZmxvdy91bmRlcmZsb3cKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciB0aGUgc2V0dGluZyBvZiBVRyBiaXQsIG9yIGFuIHVwZGF0ZSBnZW5lcmF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3VnaCB0aGUgc2xhdmUgbW9kZSBjb250cm9sbGVyLiAqLworI2RlZmluZSBUSU1fVXBkYXRlU291cmNlX1JlZ3VsYXIgICAgICAgICAgICgodWludDE2X3QpMHgwMDAxKSAvKiE8IFNvdXJjZSBvZiB1cGRhdGUgaXMgY291bnRlciBvdmVyZmxvdy91bmRlcmZsb3cuICovCisjZGVmaW5lIElTX1RJTV9VUERBVEVfU09VUkNFKFNPVVJDRSkgKCgoU09VUkNFKSA9PSBUSU1fVXBkYXRlU291cmNlX0dsb2JhbCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFNPVVJDRSkgPT0gVElNX1VwZGF0ZVNvdXJjZV9SZWd1bGFyKSkKKy8qKgorICAqIEB9CisgICovIAorCisvKiogQGRlZmdyb3VwIFRJTV9PdXRwdXRfQ29tcGFyZV9QcmVsb2FkX1N0YXRlIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgVElNX09DUHJlbG9hZF9FbmFibGUgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwOCkKKyNkZWZpbmUgVElNX09DUHJlbG9hZF9EaXNhYmxlICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMCkKKyNkZWZpbmUgSVNfVElNX09DUFJFTE9BRF9TVEFURShTVEFURSkgKCgoU1RBVEUpID09IFRJTV9PQ1ByZWxvYWRfRW5hYmxlKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFNUQVRFKSA9PSBUSU1fT0NQcmVsb2FkX0Rpc2FibGUpKQorLyoqCisgICogQH0KKyAgKi8gCisKKy8qKiBAZGVmZ3JvdXAgVElNX091dHB1dF9Db21wYXJlX0Zhc3RfU3RhdGUgCisgICogQHsKKyAgKi8KKworI2RlZmluZSBUSU1fT0NGYXN0X0VuYWJsZSAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA0KQorI2RlZmluZSBUSU1fT0NGYXN0X0Rpc2FibGUgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAwKQorI2RlZmluZSBJU19USU1fT0NGQVNUX1NUQVRFKFNUQVRFKSAoKChTVEFURSkgPT0gVElNX09DRmFzdF9FbmFibGUpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoU1RBVEUpID09IFRJTV9PQ0Zhc3RfRGlzYWJsZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisvKioKKyAgKiBAfQorICAqLyAKKworLyoqIEBkZWZncm91cCBUSU1fT3V0cHV0X0NvbXBhcmVfQ2xlYXJfU3RhdGUgCisgICogQHsKKyAgKi8KKworI2RlZmluZSBUSU1fT0NDbGVhcl9FbmFibGUgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDgwKQorI2RlZmluZSBUSU1fT0NDbGVhcl9EaXNhYmxlICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAwKQorI2RlZmluZSBJU19USU1fT0NDTEVBUl9TVEFURShTVEFURSkgKCgoU1RBVEUpID09IFRJTV9PQ0NsZWFyX0VuYWJsZSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoU1RBVEUpID09IFRJTV9PQ0NsZWFyX0Rpc2FibGUpKQorLyoqCisgICogQH0KKyAgKi8gCisKKy8qKiBAZGVmZ3JvdXAgVElNX1RyaWdnZXJfT3V0cHV0X1NvdXJjZSAKKyAgKiBAeworICAqLworCisjZGVmaW5lIFRJTV9UUkdPU291cmNlX1Jlc2V0ICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDApCisjZGVmaW5lIFRJTV9UUkdPU291cmNlX0VuYWJsZSAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMTApCisjZGVmaW5lIFRJTV9UUkdPU291cmNlX1VwZGF0ZSAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMjApCisjZGVmaW5lIFRJTV9UUkdPU291cmNlX09DMSAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMzApCisjZGVmaW5lIFRJTV9UUkdPU291cmNlX09DMVJlZiAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwNDApCisjZGVmaW5lIFRJTV9UUkdPU291cmNlX09DMlJlZiAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwNTApCisjZGVmaW5lIFRJTV9UUkdPU291cmNlX09DM1JlZiAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwNjApCisjZGVmaW5lIFRJTV9UUkdPU291cmNlX09DNFJlZiAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwNzApCisjZGVmaW5lIElTX1RJTV9UUkdPX1NPVVJDRShTT1VSQ0UpICgoKFNPVVJDRSkgPT0gVElNX1RSR09Tb3VyY2VfUmVzZXQpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoU09VUkNFKSA9PSBUSU1fVFJHT1NvdXJjZV9FbmFibGUpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoU09VUkNFKSA9PSBUSU1fVFJHT1NvdXJjZV9VcGRhdGUpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoU09VUkNFKSA9PSBUSU1fVFJHT1NvdXJjZV9PQzEpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoU09VUkNFKSA9PSBUSU1fVFJHT1NvdXJjZV9PQzFSZWYpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoU09VUkNFKSA9PSBUSU1fVFJHT1NvdXJjZV9PQzJSZWYpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoU09VUkNFKSA9PSBUSU1fVFJHT1NvdXJjZV9PQzNSZWYpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoU09VUkNFKSA9PSBUSU1fVFJHT1NvdXJjZV9PQzRSZWYpKQorLyoqCisgICogQH0KKyAgKi8gCisKKy8qKiBAZGVmZ3JvdXAgVElNX1NsYXZlX01vZGUgCisgICogQHsKKyAgKi8KKworI2RlZmluZSBUSU1fU2xhdmVNb2RlX1Jlc2V0ICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA0KQorI2RlZmluZSBUSU1fU2xhdmVNb2RlX0dhdGVkICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA1KQorI2RlZmluZSBUSU1fU2xhdmVNb2RlX1RyaWdnZXIgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA2KQorI2RlZmluZSBUSU1fU2xhdmVNb2RlX0V4dGVybmFsMSAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA3KQorI2RlZmluZSBJU19USU1fU0xBVkVfTU9ERShNT0RFKSAoKChNT0RFKSA9PSBUSU1fU2xhdmVNb2RlX1Jlc2V0KSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE1PREUpID09IFRJTV9TbGF2ZU1vZGVfR2F0ZWQpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTU9ERSkgPT0gVElNX1NsYXZlTW9kZV9UcmlnZ2VyKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE1PREUpID09IFRJTV9TbGF2ZU1vZGVfRXh0ZXJuYWwxKSkKKy8qKgorICAqIEB9CisgICovIAorCisvKiogQGRlZmdyb3VwIFRJTV9NYXN0ZXJfU2xhdmVfTW9kZSAKKyAgKiBAeworICAqLworCisjZGVmaW5lIFRJTV9NYXN0ZXJTbGF2ZU1vZGVfRW5hYmxlICAgICAgICAgKCh1aW50MTZfdCkweDAwODApCisjZGVmaW5lIFRJTV9NYXN0ZXJTbGF2ZU1vZGVfRGlzYWJsZSAgICAgICAgKCh1aW50MTZfdCkweDAwMDApCisjZGVmaW5lIElTX1RJTV9NU01fU1RBVEUoU1RBVEUpICgoKFNUQVRFKSA9PSBUSU1fTWFzdGVyU2xhdmVNb2RlX0VuYWJsZSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChTVEFURSkgPT0gVElNX01hc3RlclNsYXZlTW9kZV9EaXNhYmxlKSkKKy8qKgorICAqIEB9CisgICovIAorCisvKiogQGRlZmdyb3VwIFRJTV9GbGFncyAKKyAgKiBAeworICAqLworCisjZGVmaW5lIFRJTV9GTEFHX1VwZGF0ZSAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDEpCisjZGVmaW5lIFRJTV9GTEFHX0NDMSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDIpCisjZGVmaW5lIFRJTV9GTEFHX0NDMiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDQpCisjZGVmaW5lIFRJTV9GTEFHX0NDMyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDgpCisjZGVmaW5lIFRJTV9GTEFHX0NDNCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMTApCisjZGVmaW5lIFRJTV9GTEFHX0NPTSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMjApCisjZGVmaW5lIFRJTV9GTEFHX1RyaWdnZXIgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwNDApCisjZGVmaW5lIFRJTV9GTEFHX0JyZWFrICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwODApCisjZGVmaW5lIFRJTV9GTEFHX0NDMU9GICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAyMDApCisjZGVmaW5lIFRJTV9GTEFHX0NDMk9GICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDA0MDApCisjZGVmaW5lIFRJTV9GTEFHX0NDM09GICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDA4MDApCisjZGVmaW5lIFRJTV9GTEFHX0NDNE9GICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDEwMDApCisjZGVmaW5lIElTX1RJTV9HRVRfRkxBRyhGTEFHKSAoKChGTEFHKSA9PSBUSU1fRkxBR19VcGRhdGUpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEZMQUcpID09IFRJTV9GTEFHX0NDMSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRkxBRykgPT0gVElNX0ZMQUdfQ0MyKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChGTEFHKSA9PSBUSU1fRkxBR19DQzMpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEZMQUcpID09IFRJTV9GTEFHX0NDNCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRkxBRykgPT0gVElNX0ZMQUdfQ09NKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChGTEFHKSA9PSBUSU1fRkxBR19UcmlnZ2VyKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChGTEFHKSA9PSBUSU1fRkxBR19CcmVhaykgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRkxBRykgPT0gVElNX0ZMQUdfQ0MxT0YpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEZMQUcpID09IFRJTV9GTEFHX0NDMk9GKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChGTEFHKSA9PSBUSU1fRkxBR19DQzNPRikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRkxBRykgPT0gVElNX0ZMQUdfQ0M0T0YpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorI2RlZmluZSBJU19USU1fQ0xFQVJfRkxBRyhUSU1fRkxBRykgKCgoKFRJTV9GTEFHKSAmICh1aW50MTZfdCkweEUxMDApID09IDB4MDAwMCkgJiYgKChUSU1fRkxBRykgIT0gMHgwMDAwKSkKKy8qKgorICAqIEB9CisgICovIAorCisvKiogQGRlZmdyb3VwIFRJTV9JbnB1dF9DYXB0dXJlX0ZpbGVyX1ZhbHVlIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgSVNfVElNX0lDX0ZJTFRFUihJQ0ZJTFRFUikgKChJQ0ZJTFRFUikgPD0gMHhGKSAKKy8qKgorICAqIEB9CisgICovIAorCisvKiogQGRlZmdyb3VwIFRJTV9FeHRlcm5hbF9UcmlnZ2VyX0ZpbHRlciAKKyAgKiBAeworICAqLworCisjZGVmaW5lIElTX1RJTV9FWFRfRklMVEVSKEVYVEZJTFRFUikgKChFWFRGSUxURVIpIDw9IDB4RikKKy8qKgorICAqIEB9CisgICovIAorCisvKiogQGRlZmdyb3VwIFRJTV9MZWdhY3kgCisgICogQHsKKyAgKi8KKworI2RlZmluZSBUSU1fRE1BQnVyc3RMZW5ndGhfMUJ5dGUgICAgICAgICAgIFRJTV9ETUFCdXJzdExlbmd0aF8xVHJhbnNmZXIKKyNkZWZpbmUgVElNX0RNQUJ1cnN0TGVuZ3RoXzJCeXRlcyAgICAgICAgICBUSU1fRE1BQnVyc3RMZW5ndGhfMlRyYW5zZmVycworI2RlZmluZSBUSU1fRE1BQnVyc3RMZW5ndGhfM0J5dGVzICAgICAgICAgIFRJTV9ETUFCdXJzdExlbmd0aF8zVHJhbnNmZXJzCisjZGVmaW5lIFRJTV9ETUFCdXJzdExlbmd0aF80Qnl0ZXMgICAgICAgICAgVElNX0RNQUJ1cnN0TGVuZ3RoXzRUcmFuc2ZlcnMKKyNkZWZpbmUgVElNX0RNQUJ1cnN0TGVuZ3RoXzVCeXRlcyAgICAgICAgICBUSU1fRE1BQnVyc3RMZW5ndGhfNVRyYW5zZmVycworI2RlZmluZSBUSU1fRE1BQnVyc3RMZW5ndGhfNkJ5dGVzICAgICAgICAgIFRJTV9ETUFCdXJzdExlbmd0aF82VHJhbnNmZXJzCisjZGVmaW5lIFRJTV9ETUFCdXJzdExlbmd0aF83Qnl0ZXMgICAgICAgICAgVElNX0RNQUJ1cnN0TGVuZ3RoXzdUcmFuc2ZlcnMKKyNkZWZpbmUgVElNX0RNQUJ1cnN0TGVuZ3RoXzhCeXRlcyAgICAgICAgICBUSU1fRE1BQnVyc3RMZW5ndGhfOFRyYW5zZmVycworI2RlZmluZSBUSU1fRE1BQnVyc3RMZW5ndGhfOUJ5dGVzICAgICAgICAgIFRJTV9ETUFCdXJzdExlbmd0aF85VHJhbnNmZXJzCisjZGVmaW5lIFRJTV9ETUFCdXJzdExlbmd0aF8xMEJ5dGVzICAgICAgICAgVElNX0RNQUJ1cnN0TGVuZ3RoXzEwVHJhbnNmZXJzCisjZGVmaW5lIFRJTV9ETUFCdXJzdExlbmd0aF8xMUJ5dGVzICAgICAgICAgVElNX0RNQUJ1cnN0TGVuZ3RoXzExVHJhbnNmZXJzCisjZGVmaW5lIFRJTV9ETUFCdXJzdExlbmd0aF8xMkJ5dGVzICAgICAgICAgVElNX0RNQUJ1cnN0TGVuZ3RoXzEyVHJhbnNmZXJzCisjZGVmaW5lIFRJTV9ETUFCdXJzdExlbmd0aF8xM0J5dGVzICAgICAgICAgVElNX0RNQUJ1cnN0TGVuZ3RoXzEzVHJhbnNmZXJzCisjZGVmaW5lIFRJTV9ETUFCdXJzdExlbmd0aF8xNEJ5dGVzICAgICAgICAgVElNX0RNQUJ1cnN0TGVuZ3RoXzE0VHJhbnNmZXJzCisjZGVmaW5lIFRJTV9ETUFCdXJzdExlbmd0aF8xNUJ5dGVzICAgICAgICAgVElNX0RNQUJ1cnN0TGVuZ3RoXzE1VHJhbnNmZXJzCisjZGVmaW5lIFRJTV9ETUFCdXJzdExlbmd0aF8xNkJ5dGVzICAgICAgICAgVElNX0RNQUJ1cnN0TGVuZ3RoXzE2VHJhbnNmZXJzCisjZGVmaW5lIFRJTV9ETUFCdXJzdExlbmd0aF8xN0J5dGVzICAgICAgICAgVElNX0RNQUJ1cnN0TGVuZ3RoXzE3VHJhbnNmZXJzCisjZGVmaW5lIFRJTV9ETUFCdXJzdExlbmd0aF8xOEJ5dGVzICAgICAgICAgVElNX0RNQUJ1cnN0TGVuZ3RoXzE4VHJhbnNmZXJzCisvKioKKyAgKiBAfQorICAqLworCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIFRJTV9FeHBvcnRlZF9NYWNyb3MKKyAgKiBAeworICAqLworCisvKioKKyAgKiBAfQorICAqLyAKKworLyoqIEBkZWZncm91cCBUSU1fRXhwb3J0ZWRfRnVuY3Rpb25zCisgICogQHsKKyAgKi8KKwordm9pZCBUSU1fRGVJbml0KFRJTV9UeXBlRGVmKiBUSU14KTsKK3ZvaWQgVElNX1RpbWVCYXNlSW5pdChUSU1fVHlwZURlZiogVElNeCwgVElNX1RpbWVCYXNlSW5pdFR5cGVEZWYqIFRJTV9UaW1lQmFzZUluaXRTdHJ1Y3QpOwordm9pZCBUSU1fT0MxSW5pdChUSU1fVHlwZURlZiogVElNeCwgVElNX09DSW5pdFR5cGVEZWYqIFRJTV9PQ0luaXRTdHJ1Y3QpOwordm9pZCBUSU1fT0MySW5pdChUSU1fVHlwZURlZiogVElNeCwgVElNX09DSW5pdFR5cGVEZWYqIFRJTV9PQ0luaXRTdHJ1Y3QpOwordm9pZCBUSU1fT0MzSW5pdChUSU1fVHlwZURlZiogVElNeCwgVElNX09DSW5pdFR5cGVEZWYqIFRJTV9PQ0luaXRTdHJ1Y3QpOwordm9pZCBUSU1fT0M0SW5pdChUSU1fVHlwZURlZiogVElNeCwgVElNX09DSW5pdFR5cGVEZWYqIFRJTV9PQ0luaXRTdHJ1Y3QpOwordm9pZCBUSU1fSUNJbml0KFRJTV9UeXBlRGVmKiBUSU14LCBUSU1fSUNJbml0VHlwZURlZiogVElNX0lDSW5pdFN0cnVjdCk7Cit2b2lkIFRJTV9QV01JQ29uZmlnKFRJTV9UeXBlRGVmKiBUSU14LCBUSU1fSUNJbml0VHlwZURlZiogVElNX0lDSW5pdFN0cnVjdCk7Cit2b2lkIFRJTV9CRFRSQ29uZmlnKFRJTV9UeXBlRGVmKiBUSU14LCBUSU1fQkRUUkluaXRUeXBlRGVmICpUSU1fQkRUUkluaXRTdHJ1Y3QpOwordm9pZCBUSU1fVGltZUJhc2VTdHJ1Y3RJbml0KFRJTV9UaW1lQmFzZUluaXRUeXBlRGVmKiBUSU1fVGltZUJhc2VJbml0U3RydWN0KTsKK3ZvaWQgVElNX09DU3RydWN0SW5pdChUSU1fT0NJbml0VHlwZURlZiogVElNX09DSW5pdFN0cnVjdCk7Cit2b2lkIFRJTV9JQ1N0cnVjdEluaXQoVElNX0lDSW5pdFR5cGVEZWYqIFRJTV9JQ0luaXRTdHJ1Y3QpOwordm9pZCBUSU1fQkRUUlN0cnVjdEluaXQoVElNX0JEVFJJbml0VHlwZURlZiogVElNX0JEVFJJbml0U3RydWN0KTsKK3ZvaWQgVElNX0NtZChUSU1fVHlwZURlZiogVElNeCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKTsKK3ZvaWQgVElNX0N0cmxQV01PdXRwdXRzKFRJTV9UeXBlRGVmKiBUSU14LCBGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpOwordm9pZCBUSU1fSVRDb25maWcoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9JVCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKTsKK3ZvaWQgVElNX0dlbmVyYXRlRXZlbnQoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9FdmVudFNvdXJjZSk7Cit2b2lkIFRJTV9ETUFDb25maWcoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9ETUFCYXNlLCB1aW50MTZfdCBUSU1fRE1BQnVyc3RMZW5ndGgpOwordm9pZCBUSU1fRE1BQ21kKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fRE1BU291cmNlLCBGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpOwordm9pZCBUSU1fSW50ZXJuYWxDbG9ja0NvbmZpZyhUSU1fVHlwZURlZiogVElNeCk7Cit2b2lkIFRJTV9JVFJ4RXh0ZXJuYWxDbG9ja0NvbmZpZyhUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgVElNX0lucHV0VHJpZ2dlclNvdXJjZSk7Cit2b2lkIFRJTV9USXhFeHRlcm5hbENsb2NrQ29uZmlnKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fVEl4RXh0ZXJuYWxDTEtTb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IFRJTV9JQ1BvbGFyaXR5LCB1aW50MTZfdCBJQ0ZpbHRlcik7Cit2b2lkIFRJTV9FVFJDbG9ja01vZGUxQ29uZmlnKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fRXh0VFJHUHJlc2NhbGVyLCB1aW50MTZfdCBUSU1fRXh0VFJHUG9sYXJpdHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IEV4dFRSR0ZpbHRlcik7Cit2b2lkIFRJTV9FVFJDbG9ja01vZGUyQ29uZmlnKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fRXh0VFJHUHJlc2NhbGVyLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgVElNX0V4dFRSR1BvbGFyaXR5LCB1aW50MTZfdCBFeHRUUkdGaWx0ZXIpOwordm9pZCBUSU1fRVRSQ29uZmlnKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fRXh0VFJHUHJlc2NhbGVyLCB1aW50MTZfdCBUSU1fRXh0VFJHUG9sYXJpdHksCisgICAgICAgICAgICAgICAgICAgdWludDE2X3QgRXh0VFJHRmlsdGVyKTsKK3ZvaWQgVElNX1ByZXNjYWxlckNvbmZpZyhUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgUHJlc2NhbGVyLCB1aW50MTZfdCBUSU1fUFNDUmVsb2FkTW9kZSk7Cit2b2lkIFRJTV9Db3VudGVyTW9kZUNvbmZpZyhUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgVElNX0NvdW50ZXJNb2RlKTsKK3ZvaWQgVElNX1NlbGVjdElucHV0VHJpZ2dlcihUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgVElNX0lucHV0VHJpZ2dlclNvdXJjZSk7Cit2b2lkIFRJTV9FbmNvZGVySW50ZXJmYWNlQ29uZmlnKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fRW5jb2Rlck1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IFRJTV9JQzFQb2xhcml0eSwgdWludDE2X3QgVElNX0lDMlBvbGFyaXR5KTsKK3ZvaWQgVElNX0ZvcmNlZE9DMUNvbmZpZyhUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgVElNX0ZvcmNlZEFjdGlvbik7Cit2b2lkIFRJTV9Gb3JjZWRPQzJDb25maWcoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9Gb3JjZWRBY3Rpb24pOwordm9pZCBUSU1fRm9yY2VkT0MzQ29uZmlnKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fRm9yY2VkQWN0aW9uKTsKK3ZvaWQgVElNX0ZvcmNlZE9DNENvbmZpZyhUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgVElNX0ZvcmNlZEFjdGlvbik7Cit2b2lkIFRJTV9BUlJQcmVsb2FkQ29uZmlnKFRJTV9UeXBlRGVmKiBUSU14LCBGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpOwordm9pZCBUSU1fU2VsZWN0Q09NKFRJTV9UeXBlRGVmKiBUSU14LCBGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpOwordm9pZCBUSU1fU2VsZWN0Q0NETUEoVElNX1R5cGVEZWYqIFRJTXgsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSk7Cit2b2lkIFRJTV9DQ1ByZWxvYWRDb250cm9sKFRJTV9UeXBlRGVmKiBUSU14LCBGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpOwordm9pZCBUSU1fT0MxUHJlbG9hZENvbmZpZyhUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgVElNX09DUHJlbG9hZCk7Cit2b2lkIFRJTV9PQzJQcmVsb2FkQ29uZmlnKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fT0NQcmVsb2FkKTsKK3ZvaWQgVElNX09DM1ByZWxvYWRDb25maWcoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9PQ1ByZWxvYWQpOwordm9pZCBUSU1fT0M0UHJlbG9hZENvbmZpZyhUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgVElNX09DUHJlbG9hZCk7Cit2b2lkIFRJTV9PQzFGYXN0Q29uZmlnKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fT0NGYXN0KTsKK3ZvaWQgVElNX09DMkZhc3RDb25maWcoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9PQ0Zhc3QpOwordm9pZCBUSU1fT0MzRmFzdENvbmZpZyhUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgVElNX09DRmFzdCk7Cit2b2lkIFRJTV9PQzRGYXN0Q29uZmlnKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fT0NGYXN0KTsKK3ZvaWQgVElNX0NsZWFyT0MxUmVmKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fT0NDbGVhcik7Cit2b2lkIFRJTV9DbGVhck9DMlJlZihUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgVElNX09DQ2xlYXIpOwordm9pZCBUSU1fQ2xlYXJPQzNSZWYoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9PQ0NsZWFyKTsKK3ZvaWQgVElNX0NsZWFyT0M0UmVmKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fT0NDbGVhcik7Cit2b2lkIFRJTV9PQzFQb2xhcml0eUNvbmZpZyhUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgVElNX09DUG9sYXJpdHkpOwordm9pZCBUSU1fT0MxTlBvbGFyaXR5Q29uZmlnKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fT0NOUG9sYXJpdHkpOwordm9pZCBUSU1fT0MyUG9sYXJpdHlDb25maWcoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9PQ1BvbGFyaXR5KTsKK3ZvaWQgVElNX09DMk5Qb2xhcml0eUNvbmZpZyhUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgVElNX09DTlBvbGFyaXR5KTsKK3ZvaWQgVElNX09DM1BvbGFyaXR5Q29uZmlnKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fT0NQb2xhcml0eSk7Cit2b2lkIFRJTV9PQzNOUG9sYXJpdHlDb25maWcoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9PQ05Qb2xhcml0eSk7Cit2b2lkIFRJTV9PQzRQb2xhcml0eUNvbmZpZyhUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgVElNX09DUG9sYXJpdHkpOwordm9pZCBUSU1fQ0N4Q21kKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fQ2hhbm5lbCwgdWludDE2X3QgVElNX0NDeCk7Cit2b2lkIFRJTV9DQ3hOQ21kKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fQ2hhbm5lbCwgdWludDE2X3QgVElNX0NDeE4pOwordm9pZCBUSU1fU2VsZWN0T0N4TShUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgVElNX0NoYW5uZWwsIHVpbnQxNl90IFRJTV9PQ01vZGUpOwordm9pZCBUSU1fVXBkYXRlRGlzYWJsZUNvbmZpZyhUSU1fVHlwZURlZiogVElNeCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKTsKK3ZvaWQgVElNX1VwZGF0ZVJlcXVlc3RDb25maWcoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9VcGRhdGVTb3VyY2UpOwordm9pZCBUSU1fU2VsZWN0SGFsbFNlbnNvcihUSU1fVHlwZURlZiogVElNeCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKTsKK3ZvaWQgVElNX1NlbGVjdE9uZVB1bHNlTW9kZShUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgVElNX09QTW9kZSk7Cit2b2lkIFRJTV9TZWxlY3RPdXRwdXRUcmlnZ2VyKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fVFJHT1NvdXJjZSk7Cit2b2lkIFRJTV9TZWxlY3RTbGF2ZU1vZGUoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9TbGF2ZU1vZGUpOwordm9pZCBUSU1fU2VsZWN0TWFzdGVyU2xhdmVNb2RlKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fTWFzdGVyU2xhdmVNb2RlKTsKK3ZvaWQgVElNX1NldENvdW50ZXIoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IENvdW50ZXIpOwordm9pZCBUSU1fU2V0QXV0b3JlbG9hZChUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgQXV0b3JlbG9hZCk7Cit2b2lkIFRJTV9TZXRDb21wYXJlMShUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgQ29tcGFyZTEpOwordm9pZCBUSU1fU2V0Q29tcGFyZTIoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IENvbXBhcmUyKTsKK3ZvaWQgVElNX1NldENvbXBhcmUzKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBDb21wYXJlMyk7Cit2b2lkIFRJTV9TZXRDb21wYXJlNChUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgQ29tcGFyZTQpOwordm9pZCBUSU1fU2V0SUMxUHJlc2NhbGVyKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fSUNQU0MpOwordm9pZCBUSU1fU2V0SUMyUHJlc2NhbGVyKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fSUNQU0MpOwordm9pZCBUSU1fU2V0SUMzUHJlc2NhbGVyKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fSUNQU0MpOwordm9pZCBUSU1fU2V0SUM0UHJlc2NhbGVyKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fSUNQU0MpOwordm9pZCBUSU1fU2V0Q2xvY2tEaXZpc2lvbihUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgVElNX0NLRCk7Cit1aW50MTZfdCBUSU1fR2V0Q2FwdHVyZTEoVElNX1R5cGVEZWYqIFRJTXgpOwordWludDE2X3QgVElNX0dldENhcHR1cmUyKFRJTV9UeXBlRGVmKiBUSU14KTsKK3VpbnQxNl90IFRJTV9HZXRDYXB0dXJlMyhUSU1fVHlwZURlZiogVElNeCk7Cit1aW50MTZfdCBUSU1fR2V0Q2FwdHVyZTQoVElNX1R5cGVEZWYqIFRJTXgpOwordWludDE2X3QgVElNX0dldENvdW50ZXIoVElNX1R5cGVEZWYqIFRJTXgpOwordWludDE2X3QgVElNX0dldFByZXNjYWxlcihUSU1fVHlwZURlZiogVElNeCk7CitGbGFnU3RhdHVzIFRJTV9HZXRGbGFnU3RhdHVzKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fRkxBRyk7Cit2b2lkIFRJTV9DbGVhckZsYWcoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9GTEFHKTsKK0lUU3RhdHVzIFRJTV9HZXRJVFN0YXR1cyhUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgVElNX0lUKTsKK3ZvaWQgVElNX0NsZWFySVRQZW5kaW5nQml0KFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fSVQpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLypfX1NUTTMyRjEweF9USU1fSCAqLworLyoqCisgICogQH0KKyAgKi8gCisKKy8qKgorICAqIEB9CisgICovIAorCisvKioKKyAgKiBAfQorICAqLworCisvKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIDIwMTEgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvc3RfZndfbGliL2luYy9zdG0zMmYxMHhfdXNhcnQuaCBiL3N0X2Z3X2xpYi9pbmMvc3RtMzJmMTB4X3VzYXJ0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTYyZmE4NwotLS0gL2Rldi9udWxsCisrKyBiL3N0X2Z3X2xpYi9pbmMvc3RtMzJmMTB4X3VzYXJ0LmgKQEAgLTAsMCArMSw0MTIgQEAKKy8qKgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKiBAZmlsZSAgICBzdG0zMmYxMHhfdXNhcnQuaAorICAqIEBhdXRob3IgIE1DRCBBcHBsaWNhdGlvbiBUZWFtCisgICogQHZlcnNpb24gVjMuNS4wCisgICogQGRhdGUgICAgMTEtTWFyY2gtMjAxMQorICAqIEBicmllZiAgIFRoaXMgZmlsZSBjb250YWlucyBhbGwgdGhlIGZ1bmN0aW9ucyBwcm90b3R5cGVzIGZvciB0aGUgVVNBUlQgCisgICogICAgICAgICAgZmlybXdhcmUgbGlicmFyeS4KKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICogQGF0dGVudGlvbgorICAqCisgICogVEhFIFBSRVNFTlQgRklSTVdBUkUgV0hJQ0ggSVMgRk9SIEdVSURBTkNFIE9OTFkgQUlNUyBBVCBQUk9WSURJTkcgQ1VTVE9NRVJTCisgICogV0lUSCBDT0RJTkcgSU5GT1JNQVRJT04gUkVHQVJESU5HIFRIRUlSIFBST0RVQ1RTIElOIE9SREVSIEZPUiBUSEVNIFRPIFNBVkUKKyAgKiBUSU1FLiBBUyBBIFJFU1VMVCwgU1RNSUNST0VMRUNUUk9OSUNTIFNIQUxMIE5PVCBCRSBIRUxEIExJQUJMRSBGT1IgQU5ZCisgICogRElSRUNULCBJTkRJUkVDVCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgV0lUSCBSRVNQRUNUIFRPIEFOWSBDTEFJTVMgQVJJU0lORworICAqIEZST00gVEhFIENPTlRFTlQgT0YgU1VDSCBGSVJNV0FSRSBBTkQvT1IgVEhFIFVTRSBNQURFIEJZIENVU1RPTUVSUyBPRiBUSEUKKyAgKiBDT0RJTkcgSU5GT1JNQVRJT04gQ09OVEFJTkVEIEhFUkVJTiBJTiBDT05ORUNUSU9OIFdJVEggVEhFSVIgUFJPRFVDVFMuCisgICoKKyAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ09QWVJJR0hUIDIwMTEgU1RNaWNyb2VsZWN0cm9uaWNzPC9jZW50ZXI+PC9oMj4KKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICovCisKKy8qIERlZmluZSB0byBwcmV2ZW50IHJlY3Vyc2l2ZSBpbmNsdXNpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisjaWZuZGVmIF9fU1RNMzJGMTB4X1VTQVJUX0gKKyNkZWZpbmUgX19TVE0zMkYxMHhfVVNBUlRfSAorCisjaWZkZWYgX19jcGx1c3BsdXMKKyBleHRlcm4gIkMiIHsKKyNlbmRpZgorCisvKiBJbmNsdWRlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworI2luY2x1ZGUgInN0bTMyZjEweC5oIgorCisvKiogQGFkZHRvZ3JvdXAgU1RNMzJGMTB4X1N0ZFBlcmlwaF9Ecml2ZXIKKyAgKiBAeworICAqLworCisvKiogQGFkZHRvZ3JvdXAgVVNBUlQKKyAgKiBAeworICAqLyAKKworLyoqIEBkZWZncm91cCBVU0FSVF9FeHBvcnRlZF9UeXBlcworICAqIEB7CisgICovIAorCisvKiogCisgICogQGJyaWVmICBVU0FSVCBJbml0IFN0cnVjdHVyZSBkZWZpbml0aW9uICAKKyAgKi8gCisgIAordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgdWludDMyX3QgVVNBUlRfQmF1ZFJhdGU7ICAgICAgICAgICAgLyohPCBUaGlzIG1lbWJlciBjb25maWd1cmVzIHRoZSBVU0FSVCBjb21tdW5pY2F0aW9uIGJhdWQgcmF0ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgYmF1ZCByYXRlIGlzIGNvbXB1dGVkIHVzaW5nIHRoZSBmb2xsb3dpbmcgZm9ybXVsYToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBJbnRlZ2VyRGl2aWRlciA9ICgoUENMS3gpIC8gKDE2ICogKFVTQVJUX0luaXRTdHJ1Y3QtPlVTQVJUX0JhdWRSYXRlKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gRnJhY3Rpb25hbERpdmlkZXIgPSAoKEludGVnZXJEaXZpZGVyIC0gKCh1MzIpIEludGVnZXJEaXZpZGVyKSkgKiAxNikgKyAwLjUgKi8KKworICB1aW50MTZfdCBVU0FSVF9Xb3JkTGVuZ3RoOyAgICAgICAgICAvKiE8IFNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGRhdGEgYml0cyB0cmFuc21pdHRlZCBvciByZWNlaXZlZCBpbiBhIGZyYW1lLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgVVNBUlRfV29yZF9MZW5ndGggKi8KKworICB1aW50MTZfdCBVU0FSVF9TdG9wQml0czsgICAgICAgICAgICAvKiE8IFNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIHN0b3AgYml0cyB0cmFuc21pdHRlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIFVTQVJUX1N0b3BfQml0cyAqLworCisgIHVpbnQxNl90IFVTQVJUX1Bhcml0eTsgICAgICAgICAgICAgIC8qITwgU3BlY2lmaWVzIHRoZSBwYXJpdHkgbW9kZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIFVTQVJUX1Bhcml0eQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBub3RlIFdoZW4gcGFyaXR5IGlzIGVuYWJsZWQsIHRoZSBjb21wdXRlZCBwYXJpdHkgaXMgaW5zZXJ0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdCB0aGUgTVNCIHBvc2l0aW9uIG9mIHRoZSB0cmFuc21pdHRlZCBkYXRhICg5dGggYml0IHdoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgd29yZCBsZW5ndGggaXMgc2V0IHRvIDkgZGF0YSBiaXRzOyA4dGggYml0IHdoZW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29yZCBsZW5ndGggaXMgc2V0IHRvIDggZGF0YSBiaXRzKS4gKi8KKyAKKyAgdWludDE2X3QgVVNBUlRfTW9kZTsgICAgICAgICAgICAgICAgLyohPCBTcGVjaWZpZXMgd2V0aGVyIHRoZSBSZWNlaXZlIG9yIFRyYW5zbWl0IG1vZGUgaXMgZW5hYmxlZCBvciBkaXNhYmxlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIFVTQVJUX01vZGUgKi8KKworICB1aW50MTZfdCBVU0FSVF9IYXJkd2FyZUZsb3dDb250cm9sOyAvKiE8IFNwZWNpZmllcyB3ZXRoZXIgdGhlIGhhcmR3YXJlIGZsb3cgY29udHJvbCBtb2RlIGlzIGVuYWJsZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciBkaXNhYmxlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIFVTQVJUX0hhcmR3YXJlX0Zsb3dfQ29udHJvbCAqLworfSBVU0FSVF9Jbml0VHlwZURlZjsKKworLyoqIAorICAqIEBicmllZiAgVVNBUlQgQ2xvY2sgSW5pdCBTdHJ1Y3R1cmUgZGVmaW5pdGlvbiAgCisgICovIAorICAKK3R5cGVkZWYgc3RydWN0Cit7CisKKyAgdWludDE2X3QgVVNBUlRfQ2xvY2s7ICAgLyohPCBTcGVjaWZpZXMgd2hldGhlciB0aGUgVVNBUlQgY2xvY2sgaXMgZW5hYmxlZCBvciBkaXNhYmxlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIFVTQVJUX0Nsb2NrICovCisKKyAgdWludDE2X3QgVVNBUlRfQ1BPTDsgICAgLyohPCBTcGVjaWZpZXMgdGhlIHN0ZWFkeSBzdGF0ZSB2YWx1ZSBvZiB0aGUgc2VyaWFsIGNsb2NrLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgVVNBUlRfQ2xvY2tfUG9sYXJpdHkgKi8KKworICB1aW50MTZfdCBVU0FSVF9DUEhBOyAgICAvKiE8IFNwZWNpZmllcyB0aGUgY2xvY2sgdHJhbnNpdGlvbiBvbiB3aGljaCB0aGUgYml0IGNhcHR1cmUgaXMgbWFkZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIFVTQVJUX0Nsb2NrX1BoYXNlICovCisKKyAgdWludDE2X3QgVVNBUlRfTGFzdEJpdDsgLyohPCBTcGVjaWZpZXMgd2hldGhlciB0aGUgY2xvY2sgcHVsc2UgY29ycmVzcG9uZGluZyB0byB0aGUgbGFzdCB0cmFuc21pdHRlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgYml0IChNU0IpIGhhcyB0byBiZSBvdXRwdXQgb24gdGhlIFNDTEsgcGluIGluIHN5bmNocm9ub3VzIG1vZGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBVU0FSVF9MYXN0X0JpdCAqLworfSBVU0FSVF9DbG9ja0luaXRUeXBlRGVmOworCisvKioKKyAgKiBAfQorICAqLyAKKworLyoqIEBkZWZncm91cCBVU0FSVF9FeHBvcnRlZF9Db25zdGFudHMKKyAgKiBAeworICAqLyAKKyAgCisjZGVmaW5lIElTX1VTQVJUX0FMTF9QRVJJUEgoUEVSSVBIKSAoKChQRVJJUEgpID09IFVTQVJUMSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUEVSSVBIKSA9PSBVU0FSVDIpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBFUklQSCkgPT0gVVNBUlQzKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQRVJJUEgpID09IFVBUlQ0KSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQRVJJUEgpID09IFVBUlQ1KSkKKworI2RlZmluZSBJU19VU0FSVF8xMjNfUEVSSVBIKFBFUklQSCkgKCgoUEVSSVBIKSA9PSBVU0FSVDEpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBFUklQSCkgPT0gVVNBUlQyKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQRVJJUEgpID09IFVTQVJUMykpCisKKyNkZWZpbmUgSVNfVVNBUlRfMTIzNF9QRVJJUEgoUEVSSVBIKSAoKChQRVJJUEgpID09IFVTQVJUMSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBFUklQSCkgPT0gVVNBUlQyKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUEVSSVBIKSA9PSBVU0FSVDMpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQRVJJUEgpID09IFVBUlQ0KSkKKy8qKiBAZGVmZ3JvdXAgVVNBUlRfV29yZF9MZW5ndGggCisgICogQHsKKyAgKi8gCisgIAorI2RlZmluZSBVU0FSVF9Xb3JkTGVuZ3RoXzhiICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDApCisjZGVmaW5lIFVTQVJUX1dvcmRMZW5ndGhfOWIgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MTAwMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorI2RlZmluZSBJU19VU0FSVF9XT1JEX0xFTkdUSChMRU5HVEgpICgoKExFTkdUSCkgPT0gVVNBUlRfV29yZExlbmd0aF84YikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKExFTkdUSCkgPT0gVVNBUlRfV29yZExlbmd0aF85YikpCisvKioKKyAgKiBAfQorICAqLyAKKworLyoqIEBkZWZncm91cCBVU0FSVF9TdG9wX0JpdHMgCisgICogQHsKKyAgKi8gCisgIAorI2RlZmluZSBVU0FSVF9TdG9wQml0c18xICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDApCisjZGVmaW5lIFVTQVJUX1N0b3BCaXRzXzBfNSAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MTAwMCkKKyNkZWZpbmUgVVNBUlRfU3RvcEJpdHNfMiAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgyMDAwKQorI2RlZmluZSBVU0FSVF9TdG9wQml0c18xXzUgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDMwMDApCisjZGVmaW5lIElTX1VTQVJUX1NUT1BCSVRTKFNUT1BCSVRTKSAoKChTVE9QQklUUykgPT0gVVNBUlRfU3RvcEJpdHNfMSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoU1RPUEJJVFMpID09IFVTQVJUX1N0b3BCaXRzXzBfNSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoU1RPUEJJVFMpID09IFVTQVJUX1N0b3BCaXRzXzIpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFNUT1BCSVRTKSA9PSBVU0FSVF9TdG9wQml0c18xXzUpKQorLyoqCisgICogQH0KKyAgKi8gCisKKy8qKiBAZGVmZ3JvdXAgVVNBUlRfUGFyaXR5IAorICAqIEB7CisgICovIAorICAKKyNkZWZpbmUgVVNBUlRfUGFyaXR5X05vICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAwKQorI2RlZmluZSBVU0FSVF9QYXJpdHlfRXZlbiAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDA0MDApCisjZGVmaW5lIFVTQVJUX1Bhcml0eV9PZGQgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDYwMCkgCisjZGVmaW5lIElTX1VTQVJUX1BBUklUWShQQVJJVFkpICgoKFBBUklUWSkgPT0gVVNBUlRfUGFyaXR5X05vKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBBUklUWSkgPT0gVVNBUlRfUGFyaXR5X0V2ZW4pIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUEFSSVRZKSA9PSBVU0FSVF9QYXJpdHlfT2RkKSkKKy8qKgorICAqIEB9CisgICovIAorCisvKiogQGRlZmdyb3VwIFVTQVJUX01vZGUgCisgICogQHsKKyAgKi8gCisgIAorI2RlZmluZSBVU0FSVF9Nb2RlX1J4ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDQpCisjZGVmaW5lIFVTQVJUX01vZGVfVHggICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwOCkKKyNkZWZpbmUgSVNfVVNBUlRfTU9ERShNT0RFKSAoKCgoTU9ERSkgJiAodWludDE2X3QpMHhGRkYzKSA9PSAweDAwKSAmJiAoKE1PREUpICE9ICh1aW50MTZfdCkweDAwKSkKKy8qKgorICAqIEB9CisgICovIAorCisvKiogQGRlZmdyb3VwIFVTQVJUX0hhcmR3YXJlX0Zsb3dfQ29udHJvbCAKKyAgKiBAeworICAqLyAKKyNkZWZpbmUgVVNBUlRfSGFyZHdhcmVGbG93Q29udHJvbF9Ob25lICAgICAgICgodWludDE2X3QpMHgwMDAwKQorI2RlZmluZSBVU0FSVF9IYXJkd2FyZUZsb3dDb250cm9sX1JUUyAgICAgICAgKCh1aW50MTZfdCkweDAxMDApCisjZGVmaW5lIFVTQVJUX0hhcmR3YXJlRmxvd0NvbnRyb2xfQ1RTICAgICAgICAoKHVpbnQxNl90KTB4MDIwMCkKKyNkZWZpbmUgVVNBUlRfSGFyZHdhcmVGbG93Q29udHJvbF9SVFNfQ1RTICAgICgodWludDE2X3QpMHgwMzAwKQorI2RlZmluZSBJU19VU0FSVF9IQVJEV0FSRV9GTE9XX0NPTlRST0woQ09OVFJPTClcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKChDT05UUk9MKSA9PSBVU0FSVF9IYXJkd2FyZUZsb3dDb250cm9sX05vbmUpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKENPTlRST0wpID09IFVTQVJUX0hhcmR3YXJlRmxvd0NvbnRyb2xfUlRTKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChDT05UUk9MKSA9PSBVU0FSVF9IYXJkd2FyZUZsb3dDb250cm9sX0NUUykgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoQ09OVFJPTCkgPT0gVVNBUlRfSGFyZHdhcmVGbG93Q29udHJvbF9SVFNfQ1RTKSkKKy8qKgorICAqIEB9CisgICovIAorCisvKiogQGRlZmdyb3VwIFVTQVJUX0Nsb2NrIAorICAqIEB7CisgICovIAorI2RlZmluZSBVU0FSVF9DbG9ja19EaXNhYmxlICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDApCisjZGVmaW5lIFVTQVJUX0Nsb2NrX0VuYWJsZSAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDgwMCkKKyNkZWZpbmUgSVNfVVNBUlRfQ0xPQ0soQ0xPQ0spICgoKENMT0NLKSA9PSBVU0FSVF9DbG9ja19EaXNhYmxlKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChDTE9DSykgPT0gVVNBUlRfQ2xvY2tfRW5hYmxlKSkKKy8qKgorICAqIEB9CisgICovIAorCisvKiogQGRlZmdyb3VwIFVTQVJUX0Nsb2NrX1BvbGFyaXR5IAorICAqIEB7CisgICovCisgIAorI2RlZmluZSBVU0FSVF9DUE9MX0xvdyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDApCisjZGVmaW5lIFVTQVJUX0NQT0xfSGlnaCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDQwMCkKKyNkZWZpbmUgSVNfVVNBUlRfQ1BPTChDUE9MKSAoKChDUE9MKSA9PSBVU0FSVF9DUE9MX0xvdykgfHwgKChDUE9MKSA9PSBVU0FSVF9DUE9MX0hpZ2gpKQorCisvKioKKyAgKiBAfQorICAqLyAKKworLyoqIEBkZWZncm91cCBVU0FSVF9DbG9ja19QaGFzZQorICAqIEB7CisgICovCisKKyNkZWZpbmUgVVNBUlRfQ1BIQV8xRWRnZSAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAwKQorI2RlZmluZSBVU0FSVF9DUEhBXzJFZGdlICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAyMDApCisjZGVmaW5lIElTX1VTQVJUX0NQSEEoQ1BIQSkgKCgoQ1BIQSkgPT0gVVNBUlRfQ1BIQV8xRWRnZSkgfHwgKChDUEhBKSA9PSBVU0FSVF9DUEhBXzJFZGdlKSkKKworLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBVU0FSVF9MYXN0X0JpdAorICAqIEB7CisgICovCisKKyNkZWZpbmUgVVNBUlRfTGFzdEJpdF9EaXNhYmxlICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAwKQorI2RlZmluZSBVU0FSVF9MYXN0Qml0X0VuYWJsZSAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAxMDApCisjZGVmaW5lIElTX1VTQVJUX0xBU1RCSVQoTEFTVEJJVCkgKCgoTEFTVEJJVCkgPT0gVVNBUlRfTGFzdEJpdF9EaXNhYmxlKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTEFTVEJJVCkgPT0gVVNBUlRfTGFzdEJpdF9FbmFibGUpKQorLyoqCisgICogQH0KKyAgKi8gCisKKy8qKiBAZGVmZ3JvdXAgVVNBUlRfSW50ZXJydXB0X2RlZmluaXRpb24gCisgICogQHsKKyAgKi8KKyAgCisjZGVmaW5lIFVTQVJUX0lUX1BFICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAyOCkKKyNkZWZpbmUgVVNBUlRfSVRfVFhFICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwNzI3KQorI2RlZmluZSBVU0FSVF9JVF9UQyAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDA2MjYpCisjZGVmaW5lIFVTQVJUX0lUX1JYTkUgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDUyNSkKKyNkZWZpbmUgVVNBUlRfSVRfSURMRSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwNDI0KQorI2RlZmluZSBVU0FSVF9JVF9MQkQgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDA4NDYpCisjZGVmaW5lIFVTQVJUX0lUX0NUUyAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDk2QSkKKyNkZWZpbmUgVVNBUlRfSVRfRVJSICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDYwKQorI2RlZmluZSBVU0FSVF9JVF9PUkUgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAzNjApCisjZGVmaW5lIFVTQVJUX0lUX05FICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDI2MCkKKyNkZWZpbmUgVVNBUlRfSVRfRkUgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMTYwKQorI2RlZmluZSBJU19VU0FSVF9DT05GSUdfSVQoSVQpICgoKElUKSA9PSBVU0FSVF9JVF9QRSkgfHwgKChJVCkgPT0gVVNBUlRfSVRfVFhFKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJVCkgPT0gVVNBUlRfSVRfVEMpIHx8ICgoSVQpID09IFVTQVJUX0lUX1JYTkUpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKElUKSA9PSBVU0FSVF9JVF9JRExFKSB8fCAoKElUKSA9PSBVU0FSVF9JVF9MQkQpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKElUKSA9PSBVU0FSVF9JVF9DVFMpIHx8ICgoSVQpID09IFVTQVJUX0lUX0VSUikpCisjZGVmaW5lIElTX1VTQVJUX0dFVF9JVChJVCkgKCgoSVQpID09IFVTQVJUX0lUX1BFKSB8fCAoKElUKSA9PSBVU0FSVF9JVF9UWEUpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKElUKSA9PSBVU0FSVF9JVF9UQykgfHwgKChJVCkgPT0gVVNBUlRfSVRfUlhORSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoSVQpID09IFVTQVJUX0lUX0lETEUpIHx8ICgoSVQpID09IFVTQVJUX0lUX0xCRCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoSVQpID09IFVTQVJUX0lUX0NUUykgfHwgKChJVCkgPT0gVVNBUlRfSVRfT1JFKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJVCkgPT0gVVNBUlRfSVRfTkUpIHx8ICgoSVQpID09IFVTQVJUX0lUX0ZFKSkKKyNkZWZpbmUgSVNfVVNBUlRfQ0xFQVJfSVQoSVQpICgoKElUKSA9PSBVU0FSVF9JVF9UQykgfHwgKChJVCkgPT0gVVNBUlRfSVRfUlhORSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoSVQpID09IFVTQVJUX0lUX0xCRCkgfHwgKChJVCkgPT0gVVNBUlRfSVRfQ1RTKSkKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgVVNBUlRfRE1BX1JlcXVlc3RzIAorICAqIEB7CisgICovCisKKyNkZWZpbmUgVVNBUlRfRE1BUmVxX1R4ICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDgwKQorI2RlZmluZSBVU0FSVF9ETUFSZXFfUnggICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwNDApCisjZGVmaW5lIElTX1VTQVJUX0RNQVJFUShETUFSRVEpICgoKChETUFSRVEpICYgKHVpbnQxNl90KTB4RkYzRikgPT0gMHgwMCkgJiYgKChETUFSRVEpICE9ICh1aW50MTZfdCkweDAwKSkKKworLyoqCisgICogQH0KKyAgKi8gCisKKy8qKiBAZGVmZ3JvdXAgVVNBUlRfV2FrZVVwX21ldGhvZHMKKyAgKiBAeworICAqLworCisjZGVmaW5lIFVTQVJUX1dha2VVcF9JZGxlTGluZSAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMCkKKyNkZWZpbmUgVVNBUlRfV2FrZVVwX0FkZHJlc3NNYXJrICAgICAgICAgICAgICgodWludDE2X3QpMHgwODAwKQorI2RlZmluZSBJU19VU0FSVF9XQUtFVVAoV0FLRVVQKSAoKChXQUtFVVApID09IFVTQVJUX1dha2VVcF9JZGxlTGluZSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChXQUtFVVApID09IFVTQVJUX1dha2VVcF9BZGRyZXNzTWFyaykpCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIFVTQVJUX0xJTl9CcmVha19EZXRlY3Rpb25fTGVuZ3RoIAorICAqIEB7CisgICovCisgIAorI2RlZmluZSBVU0FSVF9MSU5CcmVha0RldGVjdExlbmd0aF8xMGIgICAgICAoKHVpbnQxNl90KTB4MDAwMCkKKyNkZWZpbmUgVVNBUlRfTElOQnJlYWtEZXRlY3RMZW5ndGhfMTFiICAgICAgKCh1aW50MTZfdCkweDAwMjApCisjZGVmaW5lIElTX1VTQVJUX0xJTl9CUkVBS19ERVRFQ1RfTEVOR1RIKExFTkdUSCkgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKExFTkdUSCkgPT0gVVNBUlRfTElOQnJlYWtEZXRlY3RMZW5ndGhfMTBiKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTEVOR1RIKSA9PSBVU0FSVF9MSU5CcmVha0RldGVjdExlbmd0aF8xMWIpKQorLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBVU0FSVF9JckRBX0xvd19Qb3dlciAKKyAgKiBAeworICAqLworCisjZGVmaW5lIFVTQVJUX0lyREFNb2RlX0xvd1Bvd2VyICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwNCkKKyNkZWZpbmUgVVNBUlRfSXJEQU1vZGVfTm9ybWFsICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAwKQorI2RlZmluZSBJU19VU0FSVF9JUkRBX01PREUoTU9ERSkgKCgoTU9ERSkgPT0gVVNBUlRfSXJEQU1vZGVfTG93UG93ZXIpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE1PREUpID09IFVTQVJUX0lyREFNb2RlX05vcm1hbCkpCisvKioKKyAgKiBAfQorICAqLyAKKworLyoqIEBkZWZncm91cCBVU0FSVF9GbGFncyAKKyAgKiBAeworICAqLworCisjZGVmaW5lIFVTQVJUX0ZMQUdfQ1RTICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDIwMCkKKyNkZWZpbmUgVVNBUlRfRkxBR19MQkQgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMTAwKQorI2RlZmluZSBVU0FSVF9GTEFHX1RYRSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwODApCisjZGVmaW5lIFVTQVJUX0ZMQUdfVEMgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA0MCkKKyNkZWZpbmUgVVNBUlRfRkxBR19SWE5FICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDIwKQorI2RlZmluZSBVU0FSVF9GTEFHX0lETEUgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMTApCisjZGVmaW5lIFVTQVJUX0ZMQUdfT1JFICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwOCkKKyNkZWZpbmUgVVNBUlRfRkxBR19ORSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA0KQorI2RlZmluZSBVU0FSVF9GTEFHX0ZFICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDIpCisjZGVmaW5lIFVTQVJUX0ZMQUdfUEUgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMSkKKyNkZWZpbmUgSVNfVVNBUlRfRkxBRyhGTEFHKSAoKChGTEFHKSA9PSBVU0FSVF9GTEFHX1BFKSB8fCAoKEZMQUcpID09IFVTQVJUX0ZMQUdfVFhFKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRkxBRykgPT0gVVNBUlRfRkxBR19UQykgfHwgKChGTEFHKSA9PSBVU0FSVF9GTEFHX1JYTkUpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChGTEFHKSA9PSBVU0FSVF9GTEFHX0lETEUpIHx8ICgoRkxBRykgPT0gVVNBUlRfRkxBR19MQkQpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChGTEFHKSA9PSBVU0FSVF9GTEFHX0NUUykgfHwgKChGTEFHKSA9PSBVU0FSVF9GTEFHX09SRSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEZMQUcpID09IFVTQVJUX0ZMQUdfTkUpIHx8ICgoRkxBRykgPT0gVVNBUlRfRkxBR19GRSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyNkZWZpbmUgSVNfVVNBUlRfQ0xFQVJfRkxBRyhGTEFHKSAoKCgoRkxBRykgJiAodWludDE2X3QpMHhGQzlGKSA9PSAweDAwKSAmJiAoKEZMQUcpICE9ICh1aW50MTZfdCkweDAwKSkKKyNkZWZpbmUgSVNfVVNBUlRfUEVSSVBIX0ZMQUcoUEVSSVBILCBVU0FSVF9GTEFHKSAoKCgoKih1aW50MzJfdCopJihQRVJJUEgpKSAhPSBVQVJUNF9CQVNFKSAmJlwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgqKHVpbnQzMl90KikmKFBFUklQSCkpICE9IFVBUlQ1X0JBU0UpKSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgoVVNBUlRfRkxBRykgIT0gVVNBUlRfRkxBR19DVFMpKSAKKyNkZWZpbmUgSVNfVVNBUlRfQkFVRFJBVEUoQkFVRFJBVEUpICgoKEJBVURSQVRFKSA+IDApICYmICgoQkFVRFJBVEUpIDwgMHgwMDQ0QUEyMSkpCisjZGVmaW5lIElTX1VTQVJUX0FERFJFU1MoQUREUkVTUykgKChBRERSRVNTKSA8PSAweEYpCisjZGVmaW5lIElTX1VTQVJUX0RBVEEoREFUQSkgKChEQVRBKSA8PSAweDFGRikKKworLyoqCisgICogQH0KKyAgKi8gCisKKy8qKgorICAqIEB9CisgICovIAorCisvKiogQGRlZmdyb3VwIFVTQVJUX0V4cG9ydGVkX01hY3JvcworICAqIEB7CisgICovIAorCisvKioKKyAgKiBAfQorICAqLyAKKworLyoqIEBkZWZncm91cCBVU0FSVF9FeHBvcnRlZF9GdW5jdGlvbnMKKyAgKiBAeworICAqLworCit2b2lkIFVTQVJUX0RlSW5pdChVU0FSVF9UeXBlRGVmKiBVU0FSVHgpOwordm9pZCBVU0FSVF9Jbml0KFVTQVJUX1R5cGVEZWYqIFVTQVJUeCwgVVNBUlRfSW5pdFR5cGVEZWYqIFVTQVJUX0luaXRTdHJ1Y3QpOwordm9pZCBVU0FSVF9TdHJ1Y3RJbml0KFVTQVJUX0luaXRUeXBlRGVmKiBVU0FSVF9Jbml0U3RydWN0KTsKK3ZvaWQgVVNBUlRfQ2xvY2tJbml0KFVTQVJUX1R5cGVEZWYqIFVTQVJUeCwgVVNBUlRfQ2xvY2tJbml0VHlwZURlZiogVVNBUlRfQ2xvY2tJbml0U3RydWN0KTsKK3ZvaWQgVVNBUlRfQ2xvY2tTdHJ1Y3RJbml0KFVTQVJUX0Nsb2NrSW5pdFR5cGVEZWYqIFVTQVJUX0Nsb2NrSW5pdFN0cnVjdCk7Cit2b2lkIFVTQVJUX0NtZChVU0FSVF9UeXBlRGVmKiBVU0FSVHgsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSk7Cit2b2lkIFVTQVJUX0lUQ29uZmlnKFVTQVJUX1R5cGVEZWYqIFVTQVJUeCwgdWludDE2X3QgVVNBUlRfSVQsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSk7Cit2b2lkIFVTQVJUX0RNQUNtZChVU0FSVF9UeXBlRGVmKiBVU0FSVHgsIHVpbnQxNl90IFVTQVJUX0RNQVJlcSwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKTsKK3ZvaWQgVVNBUlRfU2V0QWRkcmVzcyhVU0FSVF9UeXBlRGVmKiBVU0FSVHgsIHVpbnQ4X3QgVVNBUlRfQWRkcmVzcyk7Cit2b2lkIFVTQVJUX1dha2VVcENvbmZpZyhVU0FSVF9UeXBlRGVmKiBVU0FSVHgsIHVpbnQxNl90IFVTQVJUX1dha2VVcCk7Cit2b2lkIFVTQVJUX1JlY2VpdmVyV2FrZVVwQ21kKFVTQVJUX1R5cGVEZWYqIFVTQVJUeCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKTsKK3ZvaWQgVVNBUlRfTElOQnJlYWtEZXRlY3RMZW5ndGhDb25maWcoVVNBUlRfVHlwZURlZiogVVNBUlR4LCB1aW50MTZfdCBVU0FSVF9MSU5CcmVha0RldGVjdExlbmd0aCk7Cit2b2lkIFVTQVJUX0xJTkNtZChVU0FSVF9UeXBlRGVmKiBVU0FSVHgsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSk7Cit2b2lkIFVTQVJUX1NlbmREYXRhKFVTQVJUX1R5cGVEZWYqIFVTQVJUeCwgdWludDE2X3QgRGF0YSk7Cit1aW50MTZfdCBVU0FSVF9SZWNlaXZlRGF0YShVU0FSVF9UeXBlRGVmKiBVU0FSVHgpOwordm9pZCBVU0FSVF9TZW5kQnJlYWsoVVNBUlRfVHlwZURlZiogVVNBUlR4KTsKK3ZvaWQgVVNBUlRfU2V0R3VhcmRUaW1lKFVTQVJUX1R5cGVEZWYqIFVTQVJUeCwgdWludDhfdCBVU0FSVF9HdWFyZFRpbWUpOwordm9pZCBVU0FSVF9TZXRQcmVzY2FsZXIoVVNBUlRfVHlwZURlZiogVVNBUlR4LCB1aW50OF90IFVTQVJUX1ByZXNjYWxlcik7Cit2b2lkIFVTQVJUX1NtYXJ0Q2FyZENtZChVU0FSVF9UeXBlRGVmKiBVU0FSVHgsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSk7Cit2b2lkIFVTQVJUX1NtYXJ0Q2FyZE5BQ0tDbWQoVVNBUlRfVHlwZURlZiogVVNBUlR4LCBGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpOwordm9pZCBVU0FSVF9IYWxmRHVwbGV4Q21kKFVTQVJUX1R5cGVEZWYqIFVTQVJUeCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKTsKK3ZvaWQgVVNBUlRfT3ZlclNhbXBsaW5nOENtZChVU0FSVF9UeXBlRGVmKiBVU0FSVHgsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSk7Cit2b2lkIFVTQVJUX09uZUJpdE1ldGhvZENtZChVU0FSVF9UeXBlRGVmKiBVU0FSVHgsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSk7Cit2b2lkIFVTQVJUX0lyREFDb25maWcoVVNBUlRfVHlwZURlZiogVVNBUlR4LCB1aW50MTZfdCBVU0FSVF9JckRBTW9kZSk7Cit2b2lkIFVTQVJUX0lyREFDbWQoVVNBUlRfVHlwZURlZiogVVNBUlR4LCBGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpOworRmxhZ1N0YXR1cyBVU0FSVF9HZXRGbGFnU3RhdHVzKFVTQVJUX1R5cGVEZWYqIFVTQVJUeCwgdWludDE2X3QgVVNBUlRfRkxBRyk7Cit2b2lkIFVTQVJUX0NsZWFyRmxhZyhVU0FSVF9UeXBlRGVmKiBVU0FSVHgsIHVpbnQxNl90IFVTQVJUX0ZMQUcpOworSVRTdGF0dXMgVVNBUlRfR2V0SVRTdGF0dXMoVVNBUlRfVHlwZURlZiogVVNBUlR4LCB1aW50MTZfdCBVU0FSVF9JVCk7Cit2b2lkIFVTQVJUX0NsZWFySVRQZW5kaW5nQml0KFVTQVJUX1R5cGVEZWYqIFVTQVJUeCwgdWludDE2X3QgVVNBUlRfSVQpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyogX19TVE0zMkYxMHhfVVNBUlRfSCAqLworLyoqCisgICogQH0KKyAgKi8gCisKKy8qKgorICAqIEB9CisgICovIAorCisvKioKKyAgKiBAfQorICAqLyAKKworLyoqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCAyMDExIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL3N0X2Z3X2xpYi9pbmMvc3RtMzJmMTB4X3d3ZGcuaCBiL3N0X2Z3X2xpYi9pbmMvc3RtMzJmMTB4X3d3ZGcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZGZhMTc3Ci0tLSAvZGV2L251bGwKKysrIGIvc3RfZndfbGliL2luYy9zdG0zMmYxMHhfd3dkZy5oCkBAIC0wLDAgKzEsMTE1IEBACisvKioKKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICogQGZpbGUgICAgc3RtMzJmMTB4X3d3ZGcuaAorICAqIEBhdXRob3IgIE1DRCBBcHBsaWNhdGlvbiBUZWFtCisgICogQHZlcnNpb24gVjMuNS4wCisgICogQGRhdGUgICAgMTEtTWFyY2gtMjAxMQorICAqIEBicmllZiAgIFRoaXMgZmlsZSBjb250YWlucyBhbGwgdGhlIGZ1bmN0aW9ucyBwcm90b3R5cGVzIGZvciB0aGUgV1dERyBmaXJtd2FyZQorICAqICAgICAgICAgIGxpYnJhcnkuCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqIEBhdHRlbnRpb24KKyAgKgorICAqIFRIRSBQUkVTRU5UIEZJUk1XQVJFIFdISUNIIElTIEZPUiBHVUlEQU5DRSBPTkxZIEFJTVMgQVQgUFJPVklESU5HIENVU1RPTUVSUworICAqIFdJVEggQ09ESU5HIElORk9STUFUSU9OIFJFR0FSRElORyBUSEVJUiBQUk9EVUNUUyBJTiBPUkRFUiBGT1IgVEhFTSBUTyBTQVZFCisgICogVElNRS4gQVMgQSBSRVNVTFQsIFNUTUlDUk9FTEVDVFJPTklDUyBTSEFMTCBOT1QgQkUgSEVMRCBMSUFCTEUgRk9SIEFOWQorICAqIERJUkVDVCwgSU5ESVJFQ1QgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIFdJVEggUkVTUEVDVCBUTyBBTlkgQ0xBSU1TIEFSSVNJTkcKKyAgKiBGUk9NIFRIRSBDT05URU5UIE9GIFNVQ0ggRklSTVdBUkUgQU5EL09SIFRIRSBVU0UgTUFERSBCWSBDVVNUT01FUlMgT0YgVEhFCisgICogQ09ESU5HIElORk9STUFUSU9OIENPTlRBSU5FRCBIRVJFSU4gSU4gQ09OTkVDVElPTiBXSVRIIFRIRUlSIFBST0RVQ1RTLgorICAqCisgICogPGgyPjxjZW50ZXI+JmNvcHk7IENPUFlSSUdIVCAyMDExIFNUTWljcm9lbGVjdHJvbmljczwvY2VudGVyPjwvaDI+CisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqLworCisvKiBEZWZpbmUgdG8gcHJldmVudCByZWN1cnNpdmUgaW5jbHVzaW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworI2lmbmRlZiBfX1NUTTMyRjEweF9XV0RHX0gKKyNkZWZpbmUgX19TVE0zMkYxMHhfV1dER19ICisKKyNpZmRlZiBfX2NwbHVzcGx1cworIGV4dGVybiAiQyIgeworI2VuZGlmCisKKy8qIEluY2x1ZGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisjaW5jbHVkZSAic3RtMzJmMTB4LmgiCisKKy8qKiBAYWRkdG9ncm91cCBTVE0zMkYxMHhfU3RkUGVyaXBoX0RyaXZlcgorICAqIEB7CisgICovCisKKy8qKiBAYWRkdG9ncm91cCBXV0RHCisgICogQHsKKyAgKi8gCisKKy8qKiBAZGVmZ3JvdXAgV1dER19FeHBvcnRlZF9UeXBlcworICAqIEB7CisgICovIAorICAKKy8qKgorICAqIEB9CisgICovIAorCisvKiogQGRlZmdyb3VwIFdXREdfRXhwb3J0ZWRfQ29uc3RhbnRzCisgICogQHsKKyAgKi8gCisgIAorLyoqIEBkZWZncm91cCBXV0RHX1ByZXNjYWxlciAKKyAgKiBAeworICAqLyAKKyAgCisjZGVmaW5lIFdXREdfUHJlc2NhbGVyXzEgICAgKCh1aW50MzJfdCkweDAwMDAwMDAwKQorI2RlZmluZSBXV0RHX1ByZXNjYWxlcl8yICAgICgodWludDMyX3QpMHgwMDAwMDA4MCkKKyNkZWZpbmUgV1dER19QcmVzY2FsZXJfNCAgICAoKHVpbnQzMl90KTB4MDAwMDAxMDApCisjZGVmaW5lIFdXREdfUHJlc2NhbGVyXzggICAgKCh1aW50MzJfdCkweDAwMDAwMTgwKQorI2RlZmluZSBJU19XV0RHX1BSRVNDQUxFUihQUkVTQ0FMRVIpICgoKFBSRVNDQUxFUikgPT0gV1dER19QcmVzY2FsZXJfMSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBSRVNDQUxFUikgPT0gV1dER19QcmVzY2FsZXJfMikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBSRVNDQUxFUikgPT0gV1dER19QcmVzY2FsZXJfNCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBSRVNDQUxFUikgPT0gV1dER19QcmVzY2FsZXJfOCkpCisjZGVmaW5lIElTX1dXREdfV0lORE9XX1ZBTFVFKFZBTFVFKSAoKFZBTFVFKSA8PSAweDdGKQorI2RlZmluZSBJU19XV0RHX0NPVU5URVIoQ09VTlRFUikgKCgoQ09VTlRFUikgPj0gMHg0MCkgJiYgKChDT1VOVEVSKSA8PSAweDdGKSkKKworLyoqCisgICogQH0KKyAgKi8gCisKKy8qKgorICAqIEB9CisgICovIAorCisvKiogQGRlZmdyb3VwIFdXREdfRXhwb3J0ZWRfTWFjcm9zCisgICogQHsKKyAgKi8gCisvKioKKyAgKiBAfQorICAqLyAKKworLyoqIEBkZWZncm91cCBXV0RHX0V4cG9ydGVkX0Z1bmN0aW9ucworICAqIEB7CisgICovIAorICAKK3ZvaWQgV1dER19EZUluaXQodm9pZCk7Cit2b2lkIFdXREdfU2V0UHJlc2NhbGVyKHVpbnQzMl90IFdXREdfUHJlc2NhbGVyKTsKK3ZvaWQgV1dER19TZXRXaW5kb3dWYWx1ZSh1aW50OF90IFdpbmRvd1ZhbHVlKTsKK3ZvaWQgV1dER19FbmFibGVJVCh2b2lkKTsKK3ZvaWQgV1dER19TZXRDb3VudGVyKHVpbnQ4X3QgQ291bnRlcik7Cit2b2lkIFdXREdfRW5hYmxlKHVpbnQ4X3QgQ291bnRlcik7CitGbGFnU3RhdHVzIFdXREdfR2V0RmxhZ1N0YXR1cyh2b2lkKTsKK3ZvaWQgV1dER19DbGVhckZsYWcodm9pZCk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvKiBfX1NUTTMyRjEweF9XV0RHX0ggKi8KKworLyoqCisgICogQH0KKyAgKi8gCisKKy8qKgorICAqIEB9CisgICovIAorCisvKioKKyAgKiBAfQorICAqLyAKKworLyoqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCAyMDExIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL3N0X2Z3X2xpYi9zcmMvY29yZV9jbTMuYyBiL3N0X2Z3X2xpYi9zcmMvY29yZV9jbTMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mY2ZmMGQxCi0tLSAvZGV2L251bGwKKysrIGIvc3RfZndfbGliL3NyYy9jb3JlX2NtMy5jCkBAIC0wLDAgKzEsNzg0IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCisgKiBAZmlsZSAgICAgY29yZV9jbTMuYworICogQGJyaWVmICAgIENNU0lTIENvcnRleC1NMyBDb3JlIFBlcmlwaGVyYWwgQWNjZXNzIExheWVyIFNvdXJjZSBGaWxlCisgKiBAdmVyc2lvbiAgVjEuMzAKKyAqIEBkYXRlICAgICAzMC4gT2N0b2JlciAyMDA5CisgKgorICogQG5vdGUKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBAcGFyCisgKiBBUk0gTGltaXRlZCAoQVJNKSBpcyBzdXBwbHlpbmcgdGhpcyBzb2Z0d2FyZSBmb3IgdXNlIHdpdGggQ29ydGV4LU0gCisgKiBwcm9jZXNzb3IgYmFzZWQgbWljcm9jb250cm9sbGVycy4gIFRoaXMgZmlsZSBjYW4gYmUgZnJlZWx5IGRpc3RyaWJ1dGVkIAorICogd2l0aGluIGRldmVsb3BtZW50IHRvb2xzIHRoYXQgYXJlIHN1cHBvcnRpbmcgc3VjaCBBUk0gYmFzZWQgcHJvY2Vzc29ycy4gCisgKgorICogQHBhcgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLiAgTk8gV0FSUkFOVElFUywgV0hFVEhFUiBFWFBSRVNTLCBJTVBMSUVECisgKiBPUiBTVEFUVVRPUlksIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKKyAqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVBQTFkgVE8gVEhJUyBTT0ZUV0FSRS4KKyAqIEFSTSBTSEFMTCBOT1QsIElOIEFOWSBDSVJDVU1TVEFOQ0VTLCBCRSBMSUFCTEUgRk9SIFNQRUNJQUwsIElOQ0lERU5UQUwsIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMsIEZPUiBBTlkgUkVBU09OIFdIQVRTT0VWRVIuCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2luY2x1ZGUgPHN0ZGludC5oPgorCisvKiBkZWZpbmUgY29tcGlsZXIgc3BlY2lmaWMgc3ltYm9scyAqLworI2lmIGRlZmluZWQgKCBfX0NDX0FSTSAgICkKKyAgI2RlZmluZSBfX0FTTSAgICAgICAgICAgIF9fYXNtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IGFzbSBrZXl3b3JkIGZvciBBUk0gQ29tcGlsZXIgICAgICAgICAgKi8KKyAgI2RlZmluZSBfX0lOTElORSAgICAgICAgIF9faW5saW5lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IGlubGluZSBrZXl3b3JkIGZvciBBUk0gQ29tcGlsZXIgICAgICAgKi8KKworI2VsaWYgZGVmaW5lZCAoIF9fSUNDQVJNX18gKQorICAjZGVmaW5lIF9fQVNNICAgICAgICAgICBfX2FzbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgYXNtIGtleXdvcmQgZm9yIElBUiBDb21waWxlciAgICAgICAgICAqLworICAjZGVmaW5lIF9fSU5MSU5FICAgICAgICBpbmxpbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgaW5saW5lIGtleXdvcmQgZm9yIElBUiBDb21waWxlci4gT25seSBhdmFpYWJsZSBpbiBIaWdoIG9wdGltaXphdGlvbiBtb2RlISAqLworCisjZWxpZiBkZWZpbmVkICAgKCAgX19HTlVDX18gICkKKyAgI2RlZmluZSBfX0FTTSAgICAgICAgICAgIF9fYXNtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IGFzbSBrZXl3b3JkIGZvciBHTlUgQ29tcGlsZXIgICAgICAgICAgKi8KKyAgI2RlZmluZSBfX0lOTElORSAgICAgICAgIGlubGluZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IGlubGluZSBrZXl3b3JkIGZvciBHTlUgQ29tcGlsZXIgICAgICAgKi8KKworI2VsaWYgZGVmaW5lZCAgICggIF9fVEFTS0lOR19fICApCisgICNkZWZpbmUgX19BU00gICAgICAgICAgICBfX2FzbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBhc20ga2V5d29yZCBmb3IgVEFTS0lORyBDb21waWxlciAgICAgICovCisgICNkZWZpbmUgX19JTkxJTkUgICAgICAgICBpbmxpbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBpbmxpbmUga2V5d29yZCBmb3IgVEFTS0lORyBDb21waWxlciAgICovCisKKyNlbmRpZgorCisKKy8qICMjIyMjIyMjIyMjIyMjIyMjIyMgIENvbXBpbGVyIHNwZWNpZmljIEludHJpbnNpY3MgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAqLworCisjaWYgZGVmaW5lZCAoIF9fQ0NfQVJNICAgKSAvKi0tLS0tLS0tLS0tLS0tLS0tLVJlYWxWaWV3IENvbXBpbGVyIC0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qIEFSTSBhcm1jYyBzcGVjaWZpYyBmdW5jdGlvbnMgKi8KKworLyoqCisgKiBAYnJpZWYgIFJldHVybiB0aGUgUHJvY2VzcyBTdGFjayBQb2ludGVyCisgKgorICogQHJldHVybiBQcm9jZXNzU3RhY2tQb2ludGVyCisgKgorICogUmV0dXJuIHRoZSBhY3R1YWwgcHJvY2VzcyBzdGFjayBwb2ludGVyCisgKi8KK19fQVNNIHVpbnQzMl90IF9fZ2V0X1BTUCh2b2lkKQoreworICBtcnMgcjAsIHBzcAorICBieCBscgorfQorCisvKioKKyAqIEBicmllZiAgU2V0IHRoZSBQcm9jZXNzIFN0YWNrIFBvaW50ZXIKKyAqCisgKiBAcGFyYW0gIHRvcE9mUHJvY1N0YWNrICBQcm9jZXNzIFN0YWNrIFBvaW50ZXIKKyAqCisgKiBBc3NpZ24gdGhlIHZhbHVlIFByb2Nlc3NTdGFja1BvaW50ZXIgdG8gdGhlIE1TUCAKKyAqIChwcm9jZXNzIHN0YWNrIHBvaW50ZXIpIENvcnRleCBwcm9jZXNzb3IgcmVnaXN0ZXIKKyAqLworX19BU00gdm9pZCBfX3NldF9QU1AodWludDMyX3QgdG9wT2ZQcm9jU3RhY2spCit7CisgIG1zciBwc3AsIHIwCisgIGJ4IGxyCit9CisKKy8qKgorICogQGJyaWVmICBSZXR1cm4gdGhlIE1haW4gU3RhY2sgUG9pbnRlcgorICoKKyAqIEByZXR1cm4gTWFpbiBTdGFjayBQb2ludGVyCisgKgorICogUmV0dXJuIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBNU1AgKG1haW4gc3RhY2sgcG9pbnRlcikKKyAqIENvcnRleCBwcm9jZXNzb3IgcmVnaXN0ZXIKKyAqLworX19BU00gdWludDMyX3QgX19nZXRfTVNQKHZvaWQpCit7CisgIG1ycyByMCwgbXNwCisgIGJ4IGxyCit9CisKKy8qKgorICogQGJyaWVmICBTZXQgdGhlIE1haW4gU3RhY2sgUG9pbnRlcgorICoKKyAqIEBwYXJhbSAgdG9wT2ZNYWluU3RhY2sgIE1haW4gU3RhY2sgUG9pbnRlcgorICoKKyAqIEFzc2lnbiB0aGUgdmFsdWUgbWFpblN0YWNrUG9pbnRlciB0byB0aGUgTVNQIAorICogKG1haW4gc3RhY2sgcG9pbnRlcikgQ29ydGV4IHByb2Nlc3NvciByZWdpc3RlcgorICovCitfX0FTTSB2b2lkIF9fc2V0X01TUCh1aW50MzJfdCBtYWluU3RhY2tQb2ludGVyKQoreworICBtc3IgbXNwLCByMAorICBieCBscgorfQorCisvKioKKyAqIEBicmllZiAgUmV2ZXJzZSBieXRlIG9yZGVyIGluIHVuc2lnbmVkIHNob3J0IHZhbHVlCisgKgorICogQHBhcmFtICAgdmFsdWUgIHZhbHVlIHRvIHJldmVyc2UKKyAqIEByZXR1cm4gICAgICAgICByZXZlcnNlZCB2YWx1ZQorICoKKyAqIFJldmVyc2UgYnl0ZSBvcmRlciBpbiB1bnNpZ25lZCBzaG9ydCB2YWx1ZQorICovCitfX0FTTSB1aW50MzJfdCBfX1JFVjE2KHVpbnQxNl90IHZhbHVlKQoreworICByZXYxNiByMCwgcjAKKyAgYnggbHIKK30KKworLyoqCisgKiBAYnJpZWYgIFJldmVyc2UgYnl0ZSBvcmRlciBpbiBzaWduZWQgc2hvcnQgdmFsdWUgd2l0aCBzaWduIGV4dGVuc2lvbiB0byBpbnRlZ2VyCisgKgorICogQHBhcmFtICAgdmFsdWUgIHZhbHVlIHRvIHJldmVyc2UKKyAqIEByZXR1cm4gICAgICAgICByZXZlcnNlZCB2YWx1ZQorICoKKyAqIFJldmVyc2UgYnl0ZSBvcmRlciBpbiBzaWduZWQgc2hvcnQgdmFsdWUgd2l0aCBzaWduIGV4dGVuc2lvbiB0byBpbnRlZ2VyCisgKi8KK19fQVNNIGludDMyX3QgX19SRVZTSChpbnQxNl90IHZhbHVlKQoreworICByZXZzaCByMCwgcjAKKyAgYnggbHIKK30KKworCisjaWYgKF9fQVJNQ0NfVkVSU0lPTiA8IDQwMDAwMCkKKworLyoqCisgKiBAYnJpZWYgIFJlbW92ZSB0aGUgZXhjbHVzaXZlIGxvY2sgY3JlYXRlZCBieSBsZHJleAorICoKKyAqIFJlbW92ZXMgdGhlIGV4Y2x1c2l2ZSBsb2NrIHdoaWNoIGlzIGNyZWF0ZWQgYnkgbGRyZXguCisgKi8KK19fQVNNIHZvaWQgX19DTFJFWCh2b2lkKQoreworICBjbHJleAorfQorCisvKioKKyAqIEBicmllZiAgUmV0dXJuIHRoZSBCYXNlIFByaW9yaXR5IHZhbHVlCisgKgorICogQHJldHVybiBCYXNlUHJpb3JpdHkKKyAqCisgKiBSZXR1cm4gdGhlIGNvbnRlbnQgb2YgdGhlIGJhc2UgcHJpb3JpdHkgcmVnaXN0ZXIKKyAqLworX19BU00gdWludDMyX3QgIF9fZ2V0X0JBU0VQUkkodm9pZCkKK3sKKyAgbXJzIHIwLCBiYXNlcHJpCisgIGJ4IGxyCit9CisKKy8qKgorICogQGJyaWVmICBTZXQgdGhlIEJhc2UgUHJpb3JpdHkgdmFsdWUKKyAqCisgKiBAcGFyYW0gIGJhc2VQcmkgIEJhc2VQcmlvcml0eQorICoKKyAqIFNldCB0aGUgYmFzZSBwcmlvcml0eSByZWdpc3RlcgorICovCitfX0FTTSB2b2lkIF9fc2V0X0JBU0VQUkkodWludDMyX3QgYmFzZVByaSkKK3sKKyAgbXNyIGJhc2VwcmksIHIwCisgIGJ4IGxyCit9CisKKy8qKgorICogQGJyaWVmICBSZXR1cm4gdGhlIFByaW9yaXR5IE1hc2sgdmFsdWUKKyAqCisgKiBAcmV0dXJuIFByaU1hc2sKKyAqCisgKiBSZXR1cm4gc3RhdGUgb2YgdGhlIHByaW9yaXR5IG1hc2sgYml0IGZyb20gdGhlIHByaW9yaXR5IG1hc2sgcmVnaXN0ZXIKKyAqLworX19BU00gdWludDMyX3QgX19nZXRfUFJJTUFTSyh2b2lkKQoreworICBtcnMgcjAsIHByaW1hc2sKKyAgYnggbHIKK30KKworLyoqCisgKiBAYnJpZWYgIFNldCB0aGUgUHJpb3JpdHkgTWFzayB2YWx1ZQorICoKKyAqIEBwYXJhbSAgcHJpTWFzayAgUHJpTWFzaworICoKKyAqIFNldCB0aGUgcHJpb3JpdHkgbWFzayBiaXQgaW4gdGhlIHByaW9yaXR5IG1hc2sgcmVnaXN0ZXIKKyAqLworX19BU00gdm9pZCBfX3NldF9QUklNQVNLKHVpbnQzMl90IHByaU1hc2spCit7CisgIG1zciBwcmltYXNrLCByMAorICBieCBscgorfQorCisvKioKKyAqIEBicmllZiAgUmV0dXJuIHRoZSBGYXVsdCBNYXNrIHZhbHVlCisgKgorICogQHJldHVybiBGYXVsdE1hc2sKKyAqCisgKiBSZXR1cm4gdGhlIGNvbnRlbnQgb2YgdGhlIGZhdWx0IG1hc2sgcmVnaXN0ZXIKKyAqLworX19BU00gdWludDMyX3QgIF9fZ2V0X0ZBVUxUTUFTSyh2b2lkKQoreworICBtcnMgcjAsIGZhdWx0bWFzaworICBieCBscgorfQorCisvKioKKyAqIEBicmllZiAgU2V0IHRoZSBGYXVsdCBNYXNrIHZhbHVlCisgKgorICogQHBhcmFtICBmYXVsdE1hc2sgIGZhdWx0TWFzayB2YWx1ZQorICoKKyAqIFNldCB0aGUgZmF1bHQgbWFzayByZWdpc3RlcgorICovCitfX0FTTSB2b2lkIF9fc2V0X0ZBVUxUTUFTSyh1aW50MzJfdCBmYXVsdE1hc2spCit7CisgIG1zciBmYXVsdG1hc2ssIHIwCisgIGJ4IGxyCit9CisKKy8qKgorICogQGJyaWVmICBSZXR1cm4gdGhlIENvbnRyb2wgUmVnaXN0ZXIgdmFsdWUKKyAqIAorICogQHJldHVybiBDb250cm9sIHZhbHVlCisgKgorICogUmV0dXJuIHRoZSBjb250ZW50IG9mIHRoZSBjb250cm9sIHJlZ2lzdGVyCisgKi8KK19fQVNNIHVpbnQzMl90IF9fZ2V0X0NPTlRST0wodm9pZCkKK3sKKyAgbXJzIHIwLCBjb250cm9sCisgIGJ4IGxyCit9CisKKy8qKgorICogQGJyaWVmICBTZXQgdGhlIENvbnRyb2wgUmVnaXN0ZXIgdmFsdWUKKyAqCisgKiBAcGFyYW0gIGNvbnRyb2wgIENvbnRyb2wgdmFsdWUKKyAqCisgKiBTZXQgdGhlIGNvbnRyb2wgcmVnaXN0ZXIKKyAqLworX19BU00gdm9pZCBfX3NldF9DT05UUk9MKHVpbnQzMl90IGNvbnRyb2wpCit7CisgIG1zciBjb250cm9sLCByMAorICBieCBscgorfQorCisjZW5kaWYgLyogX19BUk1DQ19WRVJTSU9OICAqLyAKKworCisKKyNlbGlmIChkZWZpbmVkIChfX0lDQ0FSTV9fKSkgLyotLS0tLS0tLS0tLS0tLS0tLS0gSUNDIENvbXBpbGVyIC0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyogSUFSIGljY2FybSBzcGVjaWZpYyBmdW5jdGlvbnMgKi8KKyNwcmFnbWEgZGlhZ19zdXBwcmVzcz1QZTk0MAorCisvKioKKyAqIEBicmllZiAgUmV0dXJuIHRoZSBQcm9jZXNzIFN0YWNrIFBvaW50ZXIKKyAqCisgKiBAcmV0dXJuIFByb2Nlc3NTdGFja1BvaW50ZXIKKyAqCisgKiBSZXR1cm4gdGhlIGFjdHVhbCBwcm9jZXNzIHN0YWNrIHBvaW50ZXIKKyAqLwordWludDMyX3QgX19nZXRfUFNQKHZvaWQpCit7CisgIF9fQVNNKCJtcnMgcjAsIHBzcCIpOworICBfX0FTTSgiYnggbHIiKTsKK30KKworLyoqCisgKiBAYnJpZWYgIFNldCB0aGUgUHJvY2VzcyBTdGFjayBQb2ludGVyCisgKgorICogQHBhcmFtICB0b3BPZlByb2NTdGFjayAgUHJvY2VzcyBTdGFjayBQb2ludGVyCisgKgorICogQXNzaWduIHRoZSB2YWx1ZSBQcm9jZXNzU3RhY2tQb2ludGVyIHRvIHRoZSBNU1AgCisgKiAocHJvY2VzcyBzdGFjayBwb2ludGVyKSBDb3J0ZXggcHJvY2Vzc29yIHJlZ2lzdGVyCisgKi8KK3ZvaWQgX19zZXRfUFNQKHVpbnQzMl90IHRvcE9mUHJvY1N0YWNrKQoreworICBfX0FTTSgibXNyIHBzcCwgcjAiKTsKKyAgX19BU00oImJ4IGxyIik7Cit9CisKKy8qKgorICogQGJyaWVmICBSZXR1cm4gdGhlIE1haW4gU3RhY2sgUG9pbnRlcgorICoKKyAqIEByZXR1cm4gTWFpbiBTdGFjayBQb2ludGVyCisgKgorICogUmV0dXJuIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBNU1AgKG1haW4gc3RhY2sgcG9pbnRlcikKKyAqIENvcnRleCBwcm9jZXNzb3IgcmVnaXN0ZXIKKyAqLwordWludDMyX3QgX19nZXRfTVNQKHZvaWQpCit7CisgIF9fQVNNKCJtcnMgcjAsIG1zcCIpOworICBfX0FTTSgiYnggbHIiKTsKK30KKworLyoqCisgKiBAYnJpZWYgIFNldCB0aGUgTWFpbiBTdGFjayBQb2ludGVyCisgKgorICogQHBhcmFtICB0b3BPZk1haW5TdGFjayAgTWFpbiBTdGFjayBQb2ludGVyCisgKgorICogQXNzaWduIHRoZSB2YWx1ZSBtYWluU3RhY2tQb2ludGVyIHRvIHRoZSBNU1AgCisgKiAobWFpbiBzdGFjayBwb2ludGVyKSBDb3J0ZXggcHJvY2Vzc29yIHJlZ2lzdGVyCisgKi8KK3ZvaWQgX19zZXRfTVNQKHVpbnQzMl90IHRvcE9mTWFpblN0YWNrKQoreworICBfX0FTTSgibXNyIG1zcCwgcjAiKTsKKyAgX19BU00oImJ4IGxyIik7Cit9CisKKy8qKgorICogQGJyaWVmICBSZXZlcnNlIGJ5dGUgb3JkZXIgaW4gdW5zaWduZWQgc2hvcnQgdmFsdWUKKyAqCisgKiBAcGFyYW0gIHZhbHVlICB2YWx1ZSB0byByZXZlcnNlCisgKiBAcmV0dXJuICAgICAgICByZXZlcnNlZCB2YWx1ZQorICoKKyAqIFJldmVyc2UgYnl0ZSBvcmRlciBpbiB1bnNpZ25lZCBzaG9ydCB2YWx1ZQorICovCit1aW50MzJfdCBfX1JFVjE2KHVpbnQxNl90IHZhbHVlKQoreworICBfX0FTTSgicmV2MTYgcjAsIHIwIik7CisgIF9fQVNNKCJieCBsciIpOworfQorCisvKioKKyAqIEBicmllZiAgUmV2ZXJzZSBiaXQgb3JkZXIgb2YgdmFsdWUKKyAqCisgKiBAcGFyYW0gIHZhbHVlICB2YWx1ZSB0byByZXZlcnNlCisgKiBAcmV0dXJuICAgICAgICByZXZlcnNlZCB2YWx1ZQorICoKKyAqIFJldmVyc2UgYml0IG9yZGVyIG9mIHZhbHVlCisgKi8KK3VpbnQzMl90IF9fUkJJVCh1aW50MzJfdCB2YWx1ZSkKK3sKKyAgX19BU00oInJiaXQgcjAsIHIwIik7CisgIF9fQVNNKCJieCBsciIpOworfQorCisvKioKKyAqIEBicmllZiAgTERSIEV4Y2x1c2l2ZSAoOCBiaXQpCisgKgorICogQHBhcmFtICAqYWRkciAgYWRkcmVzcyBwb2ludGVyCisgKiBAcmV0dXJuICAgICAgICB2YWx1ZSBvZiAoKmFkZHJlc3MpCisgKgorICogRXhjbHVzaXZlIExEUiBjb21tYW5kIGZvciA4IGJpdCB2YWx1ZXMpCisgKi8KK3VpbnQ4X3QgX19MRFJFWEIodWludDhfdCAqYWRkcikKK3sKKyAgX19BU00oImxkcmV4YiByMCwgW3IwXSIpOworICBfX0FTTSgiYnggbHIiKTsgCit9CisKKy8qKgorICogQGJyaWVmICBMRFIgRXhjbHVzaXZlICgxNiBiaXQpCisgKgorICogQHBhcmFtICAqYWRkciAgYWRkcmVzcyBwb2ludGVyCisgKiBAcmV0dXJuICAgICAgICB2YWx1ZSBvZiAoKmFkZHJlc3MpCisgKgorICogRXhjbHVzaXZlIExEUiBjb21tYW5kIGZvciAxNiBiaXQgdmFsdWVzCisgKi8KK3VpbnQxNl90IF9fTERSRVhIKHVpbnQxNl90ICphZGRyKQoreworICBfX0FTTSgibGRyZXhoIHIwLCBbcjBdIik7CisgIF9fQVNNKCJieCBsciIpOworfQorCisvKioKKyAqIEBicmllZiAgTERSIEV4Y2x1c2l2ZSAoMzIgYml0KQorICoKKyAqIEBwYXJhbSAgKmFkZHIgIGFkZHJlc3MgcG9pbnRlcgorICogQHJldHVybiAgICAgICAgdmFsdWUgb2YgKCphZGRyZXNzKQorICoKKyAqIEV4Y2x1c2l2ZSBMRFIgY29tbWFuZCBmb3IgMzIgYml0IHZhbHVlcworICovCit1aW50MzJfdCBfX0xEUkVYVyh1aW50MzJfdCAqYWRkcikKK3sKKyAgX19BU00oImxkcmV4IHIwLCBbcjBdIik7CisgIF9fQVNNKCJieCBsciIpOworfQorCisvKioKKyAqIEBicmllZiAgU1RSIEV4Y2x1c2l2ZSAoOCBiaXQpCisgKgorICogQHBhcmFtICB2YWx1ZSAgdmFsdWUgdG8gc3RvcmUKKyAqIEBwYXJhbSAgKmFkZHIgIGFkZHJlc3MgcG9pbnRlcgorICogQHJldHVybiAgICAgICAgc3VjY2Vzc2Z1bCAvIGZhaWxlZAorICoKKyAqIEV4Y2x1c2l2ZSBTVFIgY29tbWFuZCBmb3IgOCBiaXQgdmFsdWVzCisgKi8KK3VpbnQzMl90IF9fU1RSRVhCKHVpbnQ4X3QgdmFsdWUsIHVpbnQ4X3QgKmFkZHIpCit7CisgIF9fQVNNKCJzdHJleGIgcjAsIHIwLCBbcjFdIik7CisgIF9fQVNNKCJieCBsciIpOworfQorCisvKioKKyAqIEBicmllZiAgU1RSIEV4Y2x1c2l2ZSAoMTYgYml0KQorICoKKyAqIEBwYXJhbSAgdmFsdWUgIHZhbHVlIHRvIHN0b3JlCisgKiBAcGFyYW0gICphZGRyICBhZGRyZXNzIHBvaW50ZXIKKyAqIEByZXR1cm4gICAgICAgIHN1Y2Nlc3NmdWwgLyBmYWlsZWQKKyAqCisgKiBFeGNsdXNpdmUgU1RSIGNvbW1hbmQgZm9yIDE2IGJpdCB2YWx1ZXMKKyAqLwordWludDMyX3QgX19TVFJFWEgodWludDE2X3QgdmFsdWUsIHVpbnQxNl90ICphZGRyKQoreworICBfX0FTTSgic3RyZXhoIHIwLCByMCwgW3IxXSIpOworICBfX0FTTSgiYnggbHIiKTsKK30KKworLyoqCisgKiBAYnJpZWYgIFNUUiBFeGNsdXNpdmUgKDMyIGJpdCkKKyAqCisgKiBAcGFyYW0gIHZhbHVlICB2YWx1ZSB0byBzdG9yZQorICogQHBhcmFtICAqYWRkciAgYWRkcmVzcyBwb2ludGVyCisgKiBAcmV0dXJuICAgICAgICBzdWNjZXNzZnVsIC8gZmFpbGVkCisgKgorICogRXhjbHVzaXZlIFNUUiBjb21tYW5kIGZvciAzMiBiaXQgdmFsdWVzCisgKi8KK3VpbnQzMl90IF9fU1RSRVhXKHVpbnQzMl90IHZhbHVlLCB1aW50MzJfdCAqYWRkcikKK3sKKyAgX19BU00oInN0cmV4IHIwLCByMCwgW3IxXSIpOworICBfX0FTTSgiYnggbHIiKTsKK30KKworI3ByYWdtYSBkaWFnX2RlZmF1bHQ9UGU5NDAKKworCisjZWxpZiAoZGVmaW5lZCAoX19HTlVDX18pKSAvKi0tLS0tLS0tLS0tLS0tLS0tLSBHTlUgQ29tcGlsZXIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qIEdOVSBnY2Mgc3BlY2lmaWMgZnVuY3Rpb25zICovCisKKy8qKgorICogQGJyaWVmICBSZXR1cm4gdGhlIFByb2Nlc3MgU3RhY2sgUG9pbnRlcgorICoKKyAqIEByZXR1cm4gUHJvY2Vzc1N0YWNrUG9pbnRlcgorICoKKyAqIFJldHVybiB0aGUgYWN0dWFsIHByb2Nlc3Mgc3RhY2sgcG9pbnRlcgorICovCit1aW50MzJfdCBfX2dldF9QU1Aodm9pZCkgX19hdHRyaWJ1dGVfXyggKCBuYWtlZCApICk7Cit1aW50MzJfdCBfX2dldF9QU1Aodm9pZCkKK3sKKyAgdWludDMyX3QgcmVzdWx0PTA7CisKKyAgX19BU00gdm9sYXRpbGUgKCJNUlMgJTAsIHBzcFxuXHQiIAorICAgICAgICAgICAgICAgICAgIk1PViByMCwgJTAgXG5cdCIKKyAgICAgICAgICAgICAgICAgICJCWCAgbHIgICAgIFxuXHQiICA6ICI9ciIgKHJlc3VsdCkgKTsKKyAgcmV0dXJuKHJlc3VsdCk7Cit9CisKKy8qKgorICogQGJyaWVmICBTZXQgdGhlIFByb2Nlc3MgU3RhY2sgUG9pbnRlcgorICoKKyAqIEBwYXJhbSAgdG9wT2ZQcm9jU3RhY2sgIFByb2Nlc3MgU3RhY2sgUG9pbnRlcgorICoKKyAqIEFzc2lnbiB0aGUgdmFsdWUgUHJvY2Vzc1N0YWNrUG9pbnRlciB0byB0aGUgTVNQIAorICogKHByb2Nlc3Mgc3RhY2sgcG9pbnRlcikgQ29ydGV4IHByb2Nlc3NvciByZWdpc3RlcgorICovCit2b2lkIF9fc2V0X1BTUCh1aW50MzJfdCB0b3BPZlByb2NTdGFjaykgX19hdHRyaWJ1dGVfXyggKCBuYWtlZCApICk7Cit2b2lkIF9fc2V0X1BTUCh1aW50MzJfdCB0b3BPZlByb2NTdGFjaykKK3sKKyAgX19BU00gdm9sYXRpbGUgKCJNU1IgcHNwLCAlMFxuXHQiCisgICAgICAgICAgICAgICAgICAiQlggIGxyICAgICBcblx0IiA6IDogInIiICh0b3BPZlByb2NTdGFjaykgKTsKK30KKworLyoqCisgKiBAYnJpZWYgIFJldHVybiB0aGUgTWFpbiBTdGFjayBQb2ludGVyCisgKgorICogQHJldHVybiBNYWluIFN0YWNrIFBvaW50ZXIKKyAqCisgKiBSZXR1cm4gdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIE1TUCAobWFpbiBzdGFjayBwb2ludGVyKQorICogQ29ydGV4IHByb2Nlc3NvciByZWdpc3RlcgorICovCit1aW50MzJfdCBfX2dldF9NU1Aodm9pZCkgX19hdHRyaWJ1dGVfXyggKCBuYWtlZCApICk7Cit1aW50MzJfdCBfX2dldF9NU1Aodm9pZCkKK3sKKyAgdWludDMyX3QgcmVzdWx0PTA7CisKKyAgX19BU00gdm9sYXRpbGUgKCJNUlMgJTAsIG1zcFxuXHQiIAorICAgICAgICAgICAgICAgICAgIk1PViByMCwgJTAgXG5cdCIKKyAgICAgICAgICAgICAgICAgICJCWCAgbHIgICAgIFxuXHQiICA6ICI9ciIgKHJlc3VsdCkgKTsKKyAgcmV0dXJuKHJlc3VsdCk7Cit9CisKKy8qKgorICogQGJyaWVmICBTZXQgdGhlIE1haW4gU3RhY2sgUG9pbnRlcgorICoKKyAqIEBwYXJhbSAgdG9wT2ZNYWluU3RhY2sgIE1haW4gU3RhY2sgUG9pbnRlcgorICoKKyAqIEFzc2lnbiB0aGUgdmFsdWUgbWFpblN0YWNrUG9pbnRlciB0byB0aGUgTVNQIAorICogKG1haW4gc3RhY2sgcG9pbnRlcikgQ29ydGV4IHByb2Nlc3NvciByZWdpc3RlcgorICovCit2b2lkIF9fc2V0X01TUCh1aW50MzJfdCB0b3BPZk1haW5TdGFjaykgX19hdHRyaWJ1dGVfXyggKCBuYWtlZCApICk7Cit2b2lkIF9fc2V0X01TUCh1aW50MzJfdCB0b3BPZk1haW5TdGFjaykKK3sKKyAgX19BU00gdm9sYXRpbGUgKCJNU1IgbXNwLCAlMFxuXHQiCisgICAgICAgICAgICAgICAgICAiQlggIGxyICAgICBcblx0IiA6IDogInIiICh0b3BPZk1haW5TdGFjaykgKTsKK30KKworLyoqCisgKiBAYnJpZWYgIFJldHVybiB0aGUgQmFzZSBQcmlvcml0eSB2YWx1ZQorICoKKyAqIEByZXR1cm4gQmFzZVByaW9yaXR5CisgKgorICogUmV0dXJuIHRoZSBjb250ZW50IG9mIHRoZSBiYXNlIHByaW9yaXR5IHJlZ2lzdGVyCisgKi8KK3VpbnQzMl90IF9fZ2V0X0JBU0VQUkkodm9pZCkKK3sKKyAgdWludDMyX3QgcmVzdWx0PTA7CisgIAorICBfX0FTTSB2b2xhdGlsZSAoIk1SUyAlMCwgYmFzZXByaV9tYXgiIDogIj1yIiAocmVzdWx0KSApOworICByZXR1cm4ocmVzdWx0KTsKK30KKworLyoqCisgKiBAYnJpZWYgIFNldCB0aGUgQmFzZSBQcmlvcml0eSB2YWx1ZQorICoKKyAqIEBwYXJhbSAgYmFzZVByaSAgQmFzZVByaW9yaXR5CisgKgorICogU2V0IHRoZSBiYXNlIHByaW9yaXR5IHJlZ2lzdGVyCisgKi8KK3ZvaWQgX19zZXRfQkFTRVBSSSh1aW50MzJfdCB2YWx1ZSkKK3sKKyAgX19BU00gdm9sYXRpbGUgKCJNU1IgYmFzZXByaSwgJTAiIDogOiAiciIgKHZhbHVlKSApOworfQorCisvKioKKyAqIEBicmllZiAgUmV0dXJuIHRoZSBQcmlvcml0eSBNYXNrIHZhbHVlCisgKgorICogQHJldHVybiBQcmlNYXNrCisgKgorICogUmV0dXJuIHN0YXRlIG9mIHRoZSBwcmlvcml0eSBtYXNrIGJpdCBmcm9tIHRoZSBwcmlvcml0eSBtYXNrIHJlZ2lzdGVyCisgKi8KK3VpbnQzMl90IF9fZ2V0X1BSSU1BU0sodm9pZCkKK3sKKyAgdWludDMyX3QgcmVzdWx0PTA7CisKKyAgX19BU00gdm9sYXRpbGUgKCJNUlMgJTAsIHByaW1hc2siIDogIj1yIiAocmVzdWx0KSApOworICByZXR1cm4ocmVzdWx0KTsKK30KKworLyoqCisgKiBAYnJpZWYgIFNldCB0aGUgUHJpb3JpdHkgTWFzayB2YWx1ZQorICoKKyAqIEBwYXJhbSAgcHJpTWFzayAgUHJpTWFzaworICoKKyAqIFNldCB0aGUgcHJpb3JpdHkgbWFzayBiaXQgaW4gdGhlIHByaW9yaXR5IG1hc2sgcmVnaXN0ZXIKKyAqLwordm9pZCBfX3NldF9QUklNQVNLKHVpbnQzMl90IHByaU1hc2spCit7CisgIF9fQVNNIHZvbGF0aWxlICgiTVNSIHByaW1hc2ssICUwIiA6IDogInIiIChwcmlNYXNrKSApOworfQorCisvKioKKyAqIEBicmllZiAgUmV0dXJuIHRoZSBGYXVsdCBNYXNrIHZhbHVlCisgKgorICogQHJldHVybiBGYXVsdE1hc2sKKyAqCisgKiBSZXR1cm4gdGhlIGNvbnRlbnQgb2YgdGhlIGZhdWx0IG1hc2sgcmVnaXN0ZXIKKyAqLwordWludDMyX3QgX19nZXRfRkFVTFRNQVNLKHZvaWQpCit7CisgIHVpbnQzMl90IHJlc3VsdD0wOworICAKKyAgX19BU00gdm9sYXRpbGUgKCJNUlMgJTAsIGZhdWx0bWFzayIgOiAiPXIiIChyZXN1bHQpICk7CisgIHJldHVybihyZXN1bHQpOworfQorCisvKioKKyAqIEBicmllZiAgU2V0IHRoZSBGYXVsdCBNYXNrIHZhbHVlCisgKgorICogQHBhcmFtICBmYXVsdE1hc2sgIGZhdWx0TWFzayB2YWx1ZQorICoKKyAqIFNldCB0aGUgZmF1bHQgbWFzayByZWdpc3RlcgorICovCit2b2lkIF9fc2V0X0ZBVUxUTUFTSyh1aW50MzJfdCBmYXVsdE1hc2spCit7CisgIF9fQVNNIHZvbGF0aWxlICgiTVNSIGZhdWx0bWFzaywgJTAiIDogOiAiciIgKGZhdWx0TWFzaykgKTsKK30KKworLyoqCisgKiBAYnJpZWYgIFJldHVybiB0aGUgQ29udHJvbCBSZWdpc3RlciB2YWx1ZQorKiAKKyogIEByZXR1cm4gQ29udHJvbCB2YWx1ZQorICoKKyAqIFJldHVybiB0aGUgY29udGVudCBvZiB0aGUgY29udHJvbCByZWdpc3RlcgorICovCit1aW50MzJfdCBfX2dldF9DT05UUk9MKHZvaWQpCit7CisgIHVpbnQzMl90IHJlc3VsdD0wOworCisgIF9fQVNNIHZvbGF0aWxlICgiTVJTICUwLCBjb250cm9sIiA6ICI9ciIgKHJlc3VsdCkgKTsKKyAgcmV0dXJuKHJlc3VsdCk7Cit9CisKKy8qKgorICogQGJyaWVmICBTZXQgdGhlIENvbnRyb2wgUmVnaXN0ZXIgdmFsdWUKKyAqCisgKiBAcGFyYW0gIGNvbnRyb2wgIENvbnRyb2wgdmFsdWUKKyAqCisgKiBTZXQgdGhlIGNvbnRyb2wgcmVnaXN0ZXIKKyAqLwordm9pZCBfX3NldF9DT05UUk9MKHVpbnQzMl90IGNvbnRyb2wpCit7CisgIF9fQVNNIHZvbGF0aWxlICgiTVNSIGNvbnRyb2wsICUwIiA6IDogInIiIChjb250cm9sKSApOworfQorCisKKy8qKgorICogQGJyaWVmICBSZXZlcnNlIGJ5dGUgb3JkZXIgaW4gaW50ZWdlciB2YWx1ZQorICoKKyAqIEBwYXJhbSAgdmFsdWUgIHZhbHVlIHRvIHJldmVyc2UKKyAqIEByZXR1cm4gICAgICAgIHJldmVyc2VkIHZhbHVlCisgKgorICogUmV2ZXJzZSBieXRlIG9yZGVyIGluIGludGVnZXIgdmFsdWUKKyAqLwordWludDMyX3QgX19SRVYodWludDMyX3QgdmFsdWUpCit7CisgIHVpbnQzMl90IHJlc3VsdD0wOworICAKKyAgX19BU00gdm9sYXRpbGUgKCJyZXYgJTAsICUxIiA6ICI9ciIgKHJlc3VsdCkgOiAiciIgKHZhbHVlKSApOworICByZXR1cm4ocmVzdWx0KTsKK30KKworLyoqCisgKiBAYnJpZWYgIFJldmVyc2UgYnl0ZSBvcmRlciBpbiB1bnNpZ25lZCBzaG9ydCB2YWx1ZQorICoKKyAqIEBwYXJhbSAgdmFsdWUgIHZhbHVlIHRvIHJldmVyc2UKKyAqIEByZXR1cm4gICAgICAgIHJldmVyc2VkIHZhbHVlCisgKgorICogUmV2ZXJzZSBieXRlIG9yZGVyIGluIHVuc2lnbmVkIHNob3J0IHZhbHVlCisgKi8KK3VpbnQzMl90IF9fUkVWMTYodWludDE2X3QgdmFsdWUpCit7CisgIHVpbnQzMl90IHJlc3VsdD0wOworICAKKyAgX19BU00gdm9sYXRpbGUgKCJyZXYxNiAlMCwgJTEiIDogIj1yIiAocmVzdWx0KSA6ICJyIiAodmFsdWUpICk7CisgIHJldHVybihyZXN1bHQpOworfQorCisvKioKKyAqIEBicmllZiAgUmV2ZXJzZSBieXRlIG9yZGVyIGluIHNpZ25lZCBzaG9ydCB2YWx1ZSB3aXRoIHNpZ24gZXh0ZW5zaW9uIHRvIGludGVnZXIKKyAqCisgKiBAcGFyYW0gIHZhbHVlICB2YWx1ZSB0byByZXZlcnNlCisgKiBAcmV0dXJuICAgICAgICByZXZlcnNlZCB2YWx1ZQorICoKKyAqIFJldmVyc2UgYnl0ZSBvcmRlciBpbiBzaWduZWQgc2hvcnQgdmFsdWUgd2l0aCBzaWduIGV4dGVuc2lvbiB0byBpbnRlZ2VyCisgKi8KK2ludDMyX3QgX19SRVZTSChpbnQxNl90IHZhbHVlKQoreworICB1aW50MzJfdCByZXN1bHQ9MDsKKyAgCisgIF9fQVNNIHZvbGF0aWxlICgicmV2c2ggJTAsICUxIiA6ICI9ciIgKHJlc3VsdCkgOiAiciIgKHZhbHVlKSApOworICByZXR1cm4ocmVzdWx0KTsKK30KKworLyoqCisgKiBAYnJpZWYgIFJldmVyc2UgYml0IG9yZGVyIG9mIHZhbHVlCisgKgorICogQHBhcmFtICB2YWx1ZSAgdmFsdWUgdG8gcmV2ZXJzZQorICogQHJldHVybiAgICAgICAgcmV2ZXJzZWQgdmFsdWUKKyAqCisgKiBSZXZlcnNlIGJpdCBvcmRlciBvZiB2YWx1ZQorICovCit1aW50MzJfdCBfX1JCSVQodWludDMyX3QgdmFsdWUpCit7CisgIHVpbnQzMl90IHJlc3VsdD0wOworICAKKyAgIF9fQVNNIHZvbGF0aWxlICgicmJpdCAlMCwgJTEiIDogIj1yIiAocmVzdWx0KSA6ICJyIiAodmFsdWUpICk7CisgICByZXR1cm4ocmVzdWx0KTsKK30KKworLyoqCisgKiBAYnJpZWYgIExEUiBFeGNsdXNpdmUgKDggYml0KQorICoKKyAqIEBwYXJhbSAgKmFkZHIgIGFkZHJlc3MgcG9pbnRlcgorICogQHJldHVybiAgICAgICAgdmFsdWUgb2YgKCphZGRyZXNzKQorICoKKyAqIEV4Y2x1c2l2ZSBMRFIgY29tbWFuZCBmb3IgOCBiaXQgdmFsdWUKKyAqLwordWludDhfdCBfX0xEUkVYQih1aW50OF90ICphZGRyKQoreworICAgIHVpbnQ4X3QgcmVzdWx0PTA7CisgIAorICAgX19BU00gdm9sYXRpbGUgKCJsZHJleGIgJTAsIFslMV0iIDogIj1yIiAocmVzdWx0KSA6ICJyIiAoYWRkcikgKTsKKyAgIHJldHVybihyZXN1bHQpOworfQorCisvKioKKyAqIEBicmllZiAgTERSIEV4Y2x1c2l2ZSAoMTYgYml0KQorICoKKyAqIEBwYXJhbSAgKmFkZHIgIGFkZHJlc3MgcG9pbnRlcgorICogQHJldHVybiAgICAgICAgdmFsdWUgb2YgKCphZGRyZXNzKQorICoKKyAqIEV4Y2x1c2l2ZSBMRFIgY29tbWFuZCBmb3IgMTYgYml0IHZhbHVlcworICovCit1aW50MTZfdCBfX0xEUkVYSCh1aW50MTZfdCAqYWRkcikKK3sKKyAgICB1aW50MTZfdCByZXN1bHQ9MDsKKyAgCisgICBfX0FTTSB2b2xhdGlsZSAoImxkcmV4aCAlMCwgWyUxXSIgOiAiPXIiIChyZXN1bHQpIDogInIiIChhZGRyKSApOworICAgcmV0dXJuKHJlc3VsdCk7Cit9CisKKy8qKgorICogQGJyaWVmICBMRFIgRXhjbHVzaXZlICgzMiBiaXQpCisgKgorICogQHBhcmFtICAqYWRkciAgYWRkcmVzcyBwb2ludGVyCisgKiBAcmV0dXJuICAgICAgICB2YWx1ZSBvZiAoKmFkZHJlc3MpCisgKgorICogRXhjbHVzaXZlIExEUiBjb21tYW5kIGZvciAzMiBiaXQgdmFsdWVzCisgKi8KK3VpbnQzMl90IF9fTERSRVhXKHVpbnQzMl90ICphZGRyKQoreworICAgIHVpbnQzMl90IHJlc3VsdD0wOworICAKKyAgIF9fQVNNIHZvbGF0aWxlICgibGRyZXggJTAsIFslMV0iIDogIj1yIiAocmVzdWx0KSA6ICJyIiAoYWRkcikgKTsKKyAgIHJldHVybihyZXN1bHQpOworfQorCisvKioKKyAqIEBicmllZiAgU1RSIEV4Y2x1c2l2ZSAoOCBiaXQpCisgKgorICogQHBhcmFtICB2YWx1ZSAgdmFsdWUgdG8gc3RvcmUKKyAqIEBwYXJhbSAgKmFkZHIgIGFkZHJlc3MgcG9pbnRlcgorICogQHJldHVybiAgICAgICAgc3VjY2Vzc2Z1bCAvIGZhaWxlZAorICoKKyAqIEV4Y2x1c2l2ZSBTVFIgY29tbWFuZCBmb3IgOCBiaXQgdmFsdWVzCisgKi8KK3VpbnQzMl90IF9fU1RSRVhCKHVpbnQ4X3QgdmFsdWUsIHVpbnQ4X3QgKmFkZHIpCit7CisgICB1aW50MzJfdCByZXN1bHQ9MDsKKyAgCisgICBfX0FTTSB2b2xhdGlsZSAoInN0cmV4YiAlMCwgJTIsIFslMV0iIDogIj1yIiAocmVzdWx0KSA6ICJyIiAoYWRkciksICJyIiAodmFsdWUpICk7CisgICByZXR1cm4ocmVzdWx0KTsKK30KKworLyoqCisgKiBAYnJpZWYgIFNUUiBFeGNsdXNpdmUgKDE2IGJpdCkKKyAqCisgKiBAcGFyYW0gIHZhbHVlICB2YWx1ZSB0byBzdG9yZQorICogQHBhcmFtICAqYWRkciAgYWRkcmVzcyBwb2ludGVyCisgKiBAcmV0dXJuICAgICAgICBzdWNjZXNzZnVsIC8gZmFpbGVkCisgKgorICogRXhjbHVzaXZlIFNUUiBjb21tYW5kIGZvciAxNiBiaXQgdmFsdWVzCisgKi8KK3VpbnQzMl90IF9fU1RSRVhIKHVpbnQxNl90IHZhbHVlLCB1aW50MTZfdCAqYWRkcikKK3sKKyAgIHVpbnQzMl90IHJlc3VsdD0wOworICAKKyAgIF9fQVNNIHZvbGF0aWxlICgic3RyZXhoICUwLCAlMiwgWyUxXSIgOiAiPXIiIChyZXN1bHQpIDogInIiIChhZGRyKSwgInIiICh2YWx1ZSkgKTsKKyAgIHJldHVybihyZXN1bHQpOworfQorCisvKioKKyAqIEBicmllZiAgU1RSIEV4Y2x1c2l2ZSAoMzIgYml0KQorICoKKyAqIEBwYXJhbSAgdmFsdWUgIHZhbHVlIHRvIHN0b3JlCisgKiBAcGFyYW0gICphZGRyICBhZGRyZXNzIHBvaW50ZXIKKyAqIEByZXR1cm4gICAgICAgIHN1Y2Nlc3NmdWwgLyBmYWlsZWQKKyAqCisgKiBFeGNsdXNpdmUgU1RSIGNvbW1hbmQgZm9yIDMyIGJpdCB2YWx1ZXMKKyAqLwordWludDMyX3QgX19TVFJFWFcodWludDMyX3QgdmFsdWUsIHVpbnQzMl90ICphZGRyKQoreworICAgdWludDMyX3QgcmVzdWx0PTA7CisgIAorICAgX19BU00gdm9sYXRpbGUgKCJzdHJleCAlMCwgJTIsIFslMV0iIDogIj1yIiAocmVzdWx0KSA6ICJyIiAoYWRkciksICJyIiAodmFsdWUpICk7CisgICByZXR1cm4ocmVzdWx0KTsKK30KKworCisjZWxpZiAoZGVmaW5lZCAoX19UQVNLSU5HX18pKSAvKi0tLS0tLS0tLS0tLS0tLS0tLSBUQVNLSU5HIENvbXBpbGVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKiBUQVNLSU5HIGNhcm0gc3BlY2lmaWMgZnVuY3Rpb25zICovCisKKy8qCisgKiBUaGUgQ01TSVMgZnVuY3Rpb25zIGhhdmUgYmVlbiBpbXBsZW1lbnRlZCBhcyBpbnRyaW5zaWNzIGluIHRoZSBjb21waWxlci4KKyAqIFBsZWFzZSB1c2UgImNhcm0gLT9pIiB0byBnZXQgYW4gdXAgdG8gZGF0ZSBsaXN0IG9mIGFsbCBpbnN0cmluc2ljcywKKyAqIEluY2x1ZGluZyB0aGUgQ01TSVMgb25lcy4KKyAqLworCisjZW5kaWYKZGlmZiAtLWdpdCBhL3N0X2Z3X2xpYi9zcmMvbWlzYy5jIGIvc3RfZndfbGliL3NyYy9taXNjLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzBhNWUxMQotLS0gL2Rldi9udWxsCisrKyBiL3N0X2Z3X2xpYi9zcmMvbWlzYy5jCkBAIC0wLDAgKzEsMjI1IEBACisvKioKKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICogQGZpbGUgICAgbWlzYy5jCisgICogQGF1dGhvciAgTUNEIEFwcGxpY2F0aW9uIFRlYW0KKyAgKiBAdmVyc2lvbiBWMy41LjAKKyAgKiBAZGF0ZSAgICAxMS1NYXJjaC0yMDExCisgICogQGJyaWVmICAgVGhpcyBmaWxlIHByb3ZpZGVzIGFsbCB0aGUgbWlzY2VsbGFuZW91cyBmaXJtd2FyZSBmdW5jdGlvbnMgKGFkZC1vbgorICAqICAgICAgICAgIHRvIENNU0lTIGZ1bmN0aW9ucykuCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqIEBhdHRlbnRpb24KKyAgKgorICAqIFRIRSBQUkVTRU5UIEZJUk1XQVJFIFdISUNIIElTIEZPUiBHVUlEQU5DRSBPTkxZIEFJTVMgQVQgUFJPVklESU5HIENVU1RPTUVSUworICAqIFdJVEggQ09ESU5HIElORk9STUFUSU9OIFJFR0FSRElORyBUSEVJUiBQUk9EVUNUUyBJTiBPUkRFUiBGT1IgVEhFTSBUTyBTQVZFCisgICogVElNRS4gQVMgQSBSRVNVTFQsIFNUTUlDUk9FTEVDVFJPTklDUyBTSEFMTCBOT1QgQkUgSEVMRCBMSUFCTEUgRk9SIEFOWQorICAqIERJUkVDVCwgSU5ESVJFQ1QgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIFdJVEggUkVTUEVDVCBUTyBBTlkgQ0xBSU1TIEFSSVNJTkcKKyAgKiBGUk9NIFRIRSBDT05URU5UIE9GIFNVQ0ggRklSTVdBUkUgQU5EL09SIFRIRSBVU0UgTUFERSBCWSBDVVNUT01FUlMgT0YgVEhFCisgICogQ09ESU5HIElORk9STUFUSU9OIENPTlRBSU5FRCBIRVJFSU4gSU4gQ09OTkVDVElPTiBXSVRIIFRIRUlSIFBST0RVQ1RTLgorICAqCisgICogPGgyPjxjZW50ZXI+JmNvcHk7IENPUFlSSUdIVCAyMDExIFNUTWljcm9lbGVjdHJvbmljczwvY2VudGVyPjwvaDI+CisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqLworCisvKiBJbmNsdWRlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworI2luY2x1ZGUgIm1pc2MuaCIKKworLyoqIEBhZGR0b2dyb3VwIFNUTTMyRjEweF9TdGRQZXJpcGhfRHJpdmVyCisgICogQHsKKyAgKi8KKworLyoqIEBkZWZncm91cCBNSVNDIAorICAqIEBicmllZiBNSVNDIGRyaXZlciBtb2R1bGVzCisgICogQHsKKyAgKi8KKworLyoqIEBkZWZncm91cCBNSVNDX1ByaXZhdGVfVHlwZXNEZWZpbml0aW9ucworICAqIEB7CisgICovCisKKy8qKgorICAqIEB9CisgICovIAorCisvKiogQGRlZmdyb3VwIE1JU0NfUHJpdmF0ZV9EZWZpbmVzCisgICogQHsKKyAgKi8KKworI2RlZmluZSBBSVJDUl9WRUNUS0VZX01BU0sgICAgKCh1aW50MzJfdCkweDA1RkEwMDAwKQorLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBNSVNDX1ByaXZhdGVfTWFjcm9zCisgICogQHsKKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBNSVNDX1ByaXZhdGVfVmFyaWFibGVzCisgICogQHsKKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBNSVNDX1ByaXZhdGVfRnVuY3Rpb25Qcm90b3R5cGVzCisgICogQHsKKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBNSVNDX1ByaXZhdGVfRnVuY3Rpb25zCisgICogQHsKKyAgKi8KKworLyoqCisgICogQGJyaWVmICBDb25maWd1cmVzIHRoZSBwcmlvcml0eSBncm91cGluZzogcHJlLWVtcHRpb24gcHJpb3JpdHkgYW5kIHN1YnByaW9yaXR5LgorICAqIEBwYXJhbSAgTlZJQ19Qcmlvcml0eUdyb3VwOiBzcGVjaWZpZXMgdGhlIHByaW9yaXR5IGdyb3VwaW5nIGJpdHMgbGVuZ3RoLiAKKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICAgIEBhcmcgTlZJQ19Qcmlvcml0eUdyb3VwXzA6IDAgYml0cyBmb3IgcHJlLWVtcHRpb24gcHJpb3JpdHkKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNCBiaXRzIGZvciBzdWJwcmlvcml0eQorICAqICAgICBAYXJnIE5WSUNfUHJpb3JpdHlHcm91cF8xOiAxIGJpdHMgZm9yIHByZS1lbXB0aW9uIHByaW9yaXR5CisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMgYml0cyBmb3Igc3VicHJpb3JpdHkKKyAgKiAgICAgQGFyZyBOVklDX1ByaW9yaXR5R3JvdXBfMjogMiBiaXRzIGZvciBwcmUtZW1wdGlvbiBwcmlvcml0eQorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyIGJpdHMgZm9yIHN1YnByaW9yaXR5CisgICogICAgIEBhcmcgTlZJQ19Qcmlvcml0eUdyb3VwXzM6IDMgYml0cyBmb3IgcHJlLWVtcHRpb24gcHJpb3JpdHkKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSBiaXRzIGZvciBzdWJwcmlvcml0eQorICAqICAgICBAYXJnIE5WSUNfUHJpb3JpdHlHcm91cF80OiA0IGJpdHMgZm9yIHByZS1lbXB0aW9uIHByaW9yaXR5CisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgYml0cyBmb3Igc3VicHJpb3JpdHkKKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgTlZJQ19Qcmlvcml0eUdyb3VwQ29uZmlnKHVpbnQzMl90IE5WSUNfUHJpb3JpdHlHcm91cCkKK3sKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX05WSUNfUFJJT1JJVFlfR1JPVVAoTlZJQ19Qcmlvcml0eUdyb3VwKSk7CisgIAorICAvKiBTZXQgdGhlIFBSSUdST1VQWzEwOjhdIGJpdHMgYWNjb3JkaW5nIHRvIE5WSUNfUHJpb3JpdHlHcm91cCB2YWx1ZSAqLworICBTQ0ItPkFJUkNSID0gQUlSQ1JfVkVDVEtFWV9NQVNLIHwgTlZJQ19Qcmlvcml0eUdyb3VwOworfQorCisvKioKKyAgKiBAYnJpZWYgIEluaXRpYWxpemVzIHRoZSBOVklDIHBlcmlwaGVyYWwgYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQKKyAgKiAgICAgICAgIHBhcmFtZXRlcnMgaW4gdGhlIE5WSUNfSW5pdFN0cnVjdC4KKyAgKiBAcGFyYW0gIE5WSUNfSW5pdFN0cnVjdDogcG9pbnRlciB0byBhIE5WSUNfSW5pdFR5cGVEZWYgc3RydWN0dXJlIHRoYXQgY29udGFpbnMKKyAgKiAgICAgICAgIHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZvciB0aGUgc3BlY2lmaWVkIE5WSUMgcGVyaXBoZXJhbC4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgTlZJQ19Jbml0KE5WSUNfSW5pdFR5cGVEZWYqIE5WSUNfSW5pdFN0cnVjdCkKK3sKKyAgdWludDMyX3QgdG1wcHJpb3JpdHkgPSAweDAwLCB0bXBwcmUgPSAweDAwLCB0bXBzdWIgPSAweDBGOworICAKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX0ZVTkNUSU9OQUxfU1RBVEUoTlZJQ19Jbml0U3RydWN0LT5OVklDX0lSUUNoYW5uZWxDbWQpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX05WSUNfUFJFRU1QVElPTl9QUklPUklUWShOVklDX0luaXRTdHJ1Y3QtPk5WSUNfSVJRQ2hhbm5lbFByZWVtcHRpb25Qcmlvcml0eSkpOyAgCisgIGFzc2VydF9wYXJhbShJU19OVklDX1NVQl9QUklPUklUWShOVklDX0luaXRTdHJ1Y3QtPk5WSUNfSVJRQ2hhbm5lbFN1YlByaW9yaXR5KSk7CisgICAgCisgIGlmIChOVklDX0luaXRTdHJ1Y3QtPk5WSUNfSVJRQ2hhbm5lbENtZCAhPSBESVNBQkxFKQorICB7CisgICAgLyogQ29tcHV0ZSB0aGUgQ29ycmVzcG9uZGluZyBJUlEgUHJpb3JpdHkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyAgICAKKyAgICB0bXBwcmlvcml0eSA9ICgweDcwMCAtICgoU0NCLT5BSVJDUikgJiAodWludDMyX3QpMHg3MDApKT4+IDB4MDg7CisgICAgdG1wcHJlID0gKDB4NCAtIHRtcHByaW9yaXR5KTsKKyAgICB0bXBzdWIgPSB0bXBzdWIgPj4gdG1wcHJpb3JpdHk7CisKKyAgICB0bXBwcmlvcml0eSA9ICh1aW50MzJfdClOVklDX0luaXRTdHJ1Y3QtPk5WSUNfSVJRQ2hhbm5lbFByZWVtcHRpb25Qcmlvcml0eSA8PCB0bXBwcmU7CisgICAgdG1wcHJpb3JpdHkgfD0gIE5WSUNfSW5pdFN0cnVjdC0+TlZJQ19JUlFDaGFubmVsU3ViUHJpb3JpdHkgJiB0bXBzdWI7CisgICAgdG1wcHJpb3JpdHkgPSB0bXBwcmlvcml0eSA8PCAweDA0OworICAgICAgICAKKyAgICBOVklDLT5JUFtOVklDX0luaXRTdHJ1Y3QtPk5WSUNfSVJRQ2hhbm5lbF0gPSB0bXBwcmlvcml0eTsKKyAgICAKKyAgICAvKiBFbmFibGUgdGhlIFNlbGVjdGVkIElSUSBDaGFubmVscyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisgICAgTlZJQy0+SVNFUltOVklDX0luaXRTdHJ1Y3QtPk5WSUNfSVJRQ2hhbm5lbCA+PiAweDA1XSA9CisgICAgICAodWludDMyX3QpMHgwMSA8PCAoTlZJQ19Jbml0U3RydWN0LT5OVklDX0lSUUNoYW5uZWwgJiAodWludDhfdCkweDFGKTsKKyAgfQorICBlbHNlCisgIHsKKyAgICAvKiBEaXNhYmxlIHRoZSBTZWxlY3RlZCBJUlEgQ2hhbm5lbHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisgICAgTlZJQy0+SUNFUltOVklDX0luaXRTdHJ1Y3QtPk5WSUNfSVJRQ2hhbm5lbCA+PiAweDA1XSA9CisgICAgICAodWludDMyX3QpMHgwMSA8PCAoTlZJQ19Jbml0U3RydWN0LT5OVklDX0lSUUNoYW5uZWwgJiAodWludDhfdCkweDFGKTsKKyAgfQorfQorCisvKioKKyAgKiBAYnJpZWYgIFNldHMgdGhlIHZlY3RvciB0YWJsZSBsb2NhdGlvbiBhbmQgT2Zmc2V0LgorICAqIEBwYXJhbSAgTlZJQ19WZWN0VGFiOiBzcGVjaWZpZXMgaWYgdGhlIHZlY3RvciB0YWJsZSBpcyBpbiBSQU0gb3IgRkxBU0ggbWVtb3J5LgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBOVklDX1ZlY3RUYWJfUkFNCisgICogICAgIEBhcmcgTlZJQ19WZWN0VGFiX0ZMQVNICisgICogQHBhcmFtICBPZmZzZXQ6IFZlY3RvciBUYWJsZSBiYXNlIG9mZnNldCBmaWVsZC4gVGhpcyB2YWx1ZSBtdXN0IGJlIGEgbXVsdGlwbGUgCisgICogICAgICAgICBvZiAweDIwMC4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgTlZJQ19TZXRWZWN0b3JUYWJsZSh1aW50MzJfdCBOVklDX1ZlY3RUYWIsIHVpbnQzMl90IE9mZnNldCkKK3sgCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19OVklDX1ZFQ1RUQUIoTlZJQ19WZWN0VGFiKSk7CisgIGFzc2VydF9wYXJhbShJU19OVklDX09GRlNFVChPZmZzZXQpKTsgIAorICAgCisgIFNDQi0+VlRPUiA9IE5WSUNfVmVjdFRhYiB8IChPZmZzZXQgJiAodWludDMyX3QpMHgxRkZGRkY4MCk7Cit9CisKKy8qKgorICAqIEBicmllZiAgU2VsZWN0cyB0aGUgY29uZGl0aW9uIGZvciB0aGUgc3lzdGVtIHRvIGVudGVyIGxvdyBwb3dlciBtb2RlLgorICAqIEBwYXJhbSAgTG93UG93ZXJNb2RlOiBTcGVjaWZpZXMgdGhlIG5ldyBtb2RlIGZvciB0aGUgc3lzdGVtIHRvIGVudGVyIGxvdyBwb3dlciBtb2RlLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBOVklDX0xQX1NFVk9OUEVORAorICAqICAgICBAYXJnIE5WSUNfTFBfU0xFRVBERUVQCisgICogICAgIEBhcmcgTlZJQ19MUF9TTEVFUE9ORVhJVAorICAqIEBwYXJhbSAgTmV3U3RhdGU6IG5ldyBzdGF0ZSBvZiBMUCBjb25kaXRpb24uIFRoaXMgcGFyYW1ldGVyIGNhbiBiZTogRU5BQkxFIG9yIERJU0FCTEUuCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIE5WSUNfU3lzdGVtTFBDb25maWcodWludDhfdCBMb3dQb3dlck1vZGUsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSkKK3sKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX05WSUNfTFAoTG93UG93ZXJNb2RlKSk7CisgIGFzc2VydF9wYXJhbShJU19GVU5DVElPTkFMX1NUQVRFKE5ld1N0YXRlKSk7ICAKKyAgCisgIGlmIChOZXdTdGF0ZSAhPSBESVNBQkxFKQorICB7CisgICAgU0NCLT5TQ1IgfD0gTG93UG93ZXJNb2RlOworICB9CisgIGVsc2UKKyAgeworICAgIFNDQi0+U0NSICY9ICh1aW50MzJfdCkofih1aW50MzJfdClMb3dQb3dlck1vZGUpOworICB9Cit9CisKKy8qKgorICAqIEBicmllZiAgQ29uZmlndXJlcyB0aGUgU3lzVGljayBjbG9jayBzb3VyY2UuCisgICogQHBhcmFtICBTeXNUaWNrX0NMS1NvdXJjZTogc3BlY2lmaWVzIHRoZSBTeXNUaWNrIGNsb2NrIHNvdXJjZS4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICAgIEBhcmcgU3lzVGlja19DTEtTb3VyY2VfSENMS19EaXY4OiBBSEIgY2xvY2sgZGl2aWRlZCBieSA4IHNlbGVjdGVkIGFzIFN5c1RpY2sgY2xvY2sgc291cmNlLgorICAqICAgICBAYXJnIFN5c1RpY2tfQ0xLU291cmNlX0hDTEs6IEFIQiBjbG9jayBzZWxlY3RlZCBhcyBTeXNUaWNrIGNsb2NrIHNvdXJjZS4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgU3lzVGlja19DTEtTb3VyY2VDb25maWcodWludDMyX3QgU3lzVGlja19DTEtTb3VyY2UpCit7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19TWVNUSUNLX0NMS19TT1VSQ0UoU3lzVGlja19DTEtTb3VyY2UpKTsKKyAgaWYgKFN5c1RpY2tfQ0xLU291cmNlID09IFN5c1RpY2tfQ0xLU291cmNlX0hDTEspCisgIHsKKyAgICBTeXNUaWNrLT5DVFJMIHw9IFN5c1RpY2tfQ0xLU291cmNlX0hDTEs7CisgIH0KKyAgZWxzZQorICB7CisgICAgU3lzVGljay0+Q1RSTCAmPSBTeXNUaWNrX0NMS1NvdXJjZV9IQ0xLX0Rpdjg7CisgIH0KK30KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCAyMDExIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL3N0X2Z3X2xpYi9zcmMvc3RtMzJmMTB4X2FkYy5jIGIvc3RfZndfbGliL3NyYy9zdG0zMmYxMHhfYWRjLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODE1NWRjOQotLS0gL2Rldi9udWxsCisrKyBiL3N0X2Z3X2xpYi9zcmMvc3RtMzJmMTB4X2FkYy5jCkBAIC0wLDAgKzEsMTMwNyBAQAorLyoqCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqIEBmaWxlICAgIHN0bTMyZjEweF9hZGMuYworICAqIEBhdXRob3IgIE1DRCBBcHBsaWNhdGlvbiBUZWFtCisgICogQHZlcnNpb24gVjMuNS4wCisgICogQGRhdGUgICAgMTEtTWFyY2gtMjAxMQorICAqIEBicmllZiAgIFRoaXMgZmlsZSBwcm92aWRlcyBhbGwgdGhlIEFEQyBmaXJtd2FyZSBmdW5jdGlvbnMuCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqIEBhdHRlbnRpb24KKyAgKgorICAqIFRIRSBQUkVTRU5UIEZJUk1XQVJFIFdISUNIIElTIEZPUiBHVUlEQU5DRSBPTkxZIEFJTVMgQVQgUFJPVklESU5HIENVU1RPTUVSUworICAqIFdJVEggQ09ESU5HIElORk9STUFUSU9OIFJFR0FSRElORyBUSEVJUiBQUk9EVUNUUyBJTiBPUkRFUiBGT1IgVEhFTSBUTyBTQVZFCisgICogVElNRS4gQVMgQSBSRVNVTFQsIFNUTUlDUk9FTEVDVFJPTklDUyBTSEFMTCBOT1QgQkUgSEVMRCBMSUFCTEUgRk9SIEFOWQorICAqIERJUkVDVCwgSU5ESVJFQ1QgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIFdJVEggUkVTUEVDVCBUTyBBTlkgQ0xBSU1TIEFSSVNJTkcKKyAgKiBGUk9NIFRIRSBDT05URU5UIE9GIFNVQ0ggRklSTVdBUkUgQU5EL09SIFRIRSBVU0UgTUFERSBCWSBDVVNUT01FUlMgT0YgVEhFCisgICogQ09ESU5HIElORk9STUFUSU9OIENPTlRBSU5FRCBIRVJFSU4gSU4gQ09OTkVDVElPTiBXSVRIIFRIRUlSIFBST0RVQ1RTLgorICAqCisgICogPGgyPjxjZW50ZXI+JmNvcHk7IENPUFlSSUdIVCAyMDExIFNUTWljcm9lbGVjdHJvbmljczwvY2VudGVyPjwvaDI+CisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqLworCisvKiBJbmNsdWRlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworI2luY2x1ZGUgInN0bTMyZjEweF9hZGMuaCIKKyNpbmNsdWRlICJzdG0zMmYxMHhfcmNjLmgiCisKKy8qKiBAYWRkdG9ncm91cCBTVE0zMkYxMHhfU3RkUGVyaXBoX0RyaXZlcgorICAqIEB7CisgICovCisKKy8qKiBAZGVmZ3JvdXAgQURDIAorICAqIEBicmllZiBBREMgZHJpdmVyIG1vZHVsZXMKKyAgKiBAeworICAqLworCisvKiogQGRlZmdyb3VwIEFEQ19Qcml2YXRlX1R5cGVzRGVmaW5pdGlvbnMKKyAgKiBAeworICAqLworCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIEFEQ19Qcml2YXRlX0RlZmluZXMKKyAgKiBAeworICAqLworCisvKiBBREMgRElTQ05VTSBtYXNrICovCisjZGVmaW5lIENSMV9ESVNDTlVNX1Jlc2V0ICAgICAgICAgICAoKHVpbnQzMl90KTB4RkZGRjFGRkYpCisKKy8qIEFEQyBESVNDRU4gbWFzayAqLworI2RlZmluZSBDUjFfRElTQ0VOX1NldCAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwODAwKQorI2RlZmluZSBDUjFfRElTQ0VOX1Jlc2V0ICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGRkZGN0ZGKQorCisvKiBBREMgSkFVVE8gbWFzayAqLworI2RlZmluZSBDUjFfSkFVVE9fU2V0ICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwNDAwKQorI2RlZmluZSBDUjFfSkFVVE9fUmVzZXQgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGRkZGQkZGKQorCisvKiBBREMgSkRJU0NFTiBtYXNrICovCisjZGVmaW5lIENSMV9KRElTQ0VOX1NldCAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDEwMDApCisjZGVmaW5lIENSMV9KRElTQ0VOX1Jlc2V0ICAgICAgICAgICAoKHVpbnQzMl90KTB4RkZGRkVGRkYpCisKKy8qIEFEQyBBV0RDSCBtYXNrICovCisjZGVmaW5lIENSMV9BV0RDSF9SZXNldCAgICAgICAgICAgICAoKHVpbnQzMl90KTB4RkZGRkZGRTApCisKKy8qIEFEQyBBbmFsb2cgd2F0Y2hkb2cgZW5hYmxlIG1vZGUgbWFzayAqLworI2RlZmluZSBDUjFfQVdETW9kZV9SZXNldCAgICAgICAgICAgKCh1aW50MzJfdCkweEZGM0ZGREZGKQorCisvKiBDUjEgcmVnaXN0ZXIgTWFzayAqLworI2RlZmluZSBDUjFfQ0xFQVJfTWFzayAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGRjBGRUZGKQorCisvKiBBREMgQURPTiBtYXNrICovCisjZGVmaW5lIENSMl9BRE9OX1NldCAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDEpCisjZGVmaW5lIENSMl9BRE9OX1Jlc2V0ICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4RkZGRkZGRkUpCisKKy8qIEFEQyBETUEgbWFzayAqLworI2RlZmluZSBDUjJfRE1BX1NldCAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKQorI2RlZmluZSBDUjJfRE1BX1Jlc2V0ICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGRkZGRUZGKQorCisvKiBBREMgUlNUQ0FMIG1hc2sgKi8KKyNkZWZpbmUgQ1IyX1JTVENBTF9TZXQgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkKKworLyogQURDIENBTCBtYXNrICovCisjZGVmaW5lIENSMl9DQUxfU2V0ICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDQpCisKKy8qIEFEQyBTV1NUQVJUIG1hc2sgKi8KKyNkZWZpbmUgQ1IyX1NXU1RBUlRfU2V0ICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDQwMDAwMCkKKworLyogQURDIEVYVFRSSUcgbWFzayAqLworI2RlZmluZSBDUjJfRVhUVFJJR19TZXQgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMTAwMDAwKQorI2RlZmluZSBDUjJfRVhUVFJJR19SZXNldCAgICAgICAgICAgKCh1aW50MzJfdCkweEZGRUZGRkZGKQorCisvKiBBREMgU29mdHdhcmUgc3RhcnQgbWFzayAqLworI2RlZmluZSBDUjJfRVhUVFJJR19TV1NUQVJUX1NldCAgICAgKCh1aW50MzJfdCkweDAwNTAwMDAwKQorI2RlZmluZSBDUjJfRVhUVFJJR19TV1NUQVJUX1Jlc2V0ICAgKCh1aW50MzJfdCkweEZGQUZGRkZGKQorCisvKiBBREMgSkVYVFNFTCBtYXNrICovCisjZGVmaW5lIENSMl9KRVhUU0VMX1Jlc2V0ICAgICAgICAgICAoKHVpbnQzMl90KTB4RkZGRjhGRkYpCisKKy8qIEFEQyBKRVhUVFJJRyBtYXNrICovCisjZGVmaW5lIENSMl9KRVhUVFJJR19TZXQgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDgwMDApCisjZGVmaW5lIENSMl9KRVhUVFJJR19SZXNldCAgICAgICAgICAoKHVpbnQzMl90KTB4RkZGRjdGRkYpCisKKy8qIEFEQyBKU1dTVEFSVCBtYXNrICovCisjZGVmaW5lIENSMl9KU1dTVEFSVF9TZXQgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAyMDAwMDApCisKKy8qIEFEQyBpbmplY3RlZCBzb2Z0d2FyZSBzdGFydCBtYXNrICovCisjZGVmaW5lIENSMl9KRVhUVFJJR19KU1dTVEFSVF9TZXQgICAoKHVpbnQzMl90KTB4MDAyMDgwMDApCisjZGVmaW5lIENSMl9KRVhUVFJJR19KU1dTVEFSVF9SZXNldCAoKHVpbnQzMl90KTB4RkZERjdGRkYpCisKKy8qIEFEQyBUU1BEIG1hc2sgKi8KKyNkZWZpbmUgQ1IyX1RTVlJFRkVfU2V0ICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDgwMDAwMCkKKyNkZWZpbmUgQ1IyX1RTVlJFRkVfUmVzZXQgICAgICAgICAgICgodWludDMyX3QpMHhGRjdGRkZGRikKKworLyogQ1IyIHJlZ2lzdGVyIE1hc2sgKi8KKyNkZWZpbmUgQ1IyX0NMRUFSX01hc2sgICAgICAgICAgICAgICgodWludDMyX3QpMHhGRkYxRjdGRCkKKworLyogQURDIFNReCBtYXNrICovCisjZGVmaW5lIFNRUjNfU1FfU2V0ICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMUYpCisjZGVmaW5lIFNRUjJfU1FfU2V0ICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMUYpCisjZGVmaW5lIFNRUjFfU1FfU2V0ICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMUYpCisKKy8qIFNRUjEgcmVnaXN0ZXIgTWFzayAqLworI2RlZmluZSBTUVIxX0NMRUFSX01hc2sgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGMEZGRkZGKQorCisvKiBBREMgSlNReCBtYXNrICovCisjZGVmaW5lIEpTUVJfSlNRX1NldCAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMUYpCisKKy8qIEFEQyBKTCBtYXNrICovCisjZGVmaW5lIEpTUVJfSkxfU2V0ICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAzMDAwMDApCisjZGVmaW5lIEpTUVJfSkxfUmVzZXQgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4RkZDRkZGRkYpCisKKy8qIEFEQyBTTVB4IG1hc2sgKi8KKyNkZWZpbmUgU01QUjFfU01QX1NldCAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNykKKyNkZWZpbmUgU01QUjJfU01QX1NldCAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNykKKworLyogQURDIEpEUnggcmVnaXN0ZXJzIG9mZnNldCAqLworI2RlZmluZSBKRFJfT2Zmc2V0ICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MjgpCisKKy8qIEFEQzEgRFIgcmVnaXN0ZXIgYmFzZSBhZGRyZXNzICovCisjZGVmaW5lIERSX0FERFJFU1MgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4NDAwMTI0NEMpCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgQURDX1ByaXZhdGVfTWFjcm9zCisgICogQHsKKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBBRENfUHJpdmF0ZV9WYXJpYWJsZXMKKyAgKiBAeworICAqLworCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIEFEQ19Qcml2YXRlX0Z1bmN0aW9uUHJvdG90eXBlcworICAqIEB7CisgICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgQURDX1ByaXZhdGVfRnVuY3Rpb25zCisgICogQHsKKyAgKi8KKworLyoqCisgICogQGJyaWVmICBEZWluaXRpYWxpemVzIHRoZSBBREN4IHBlcmlwaGVyYWwgcmVnaXN0ZXJzIHRvIHRoZWlyIGRlZmF1bHQgcmVzZXQgdmFsdWVzLgorICAqIEBwYXJhbSAgQURDeDogd2hlcmUgeCBjYW4gYmUgMSwgMiBvciAzIHRvIHNlbGVjdCB0aGUgQURDIHBlcmlwaGVyYWwuCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIEFEQ19EZUluaXQoQURDX1R5cGVEZWYqIEFEQ3gpCit7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19BRENfQUxMX1BFUklQSChBREN4KSk7CisgIAorICBpZiAoQURDeCA9PSBBREMxKQorICB7CisgICAgLyogRW5hYmxlIEFEQzEgcmVzZXQgc3RhdGUgKi8KKyAgICBSQ0NfQVBCMlBlcmlwaFJlc2V0Q21kKFJDQ19BUEIyUGVyaXBoX0FEQzEsIEVOQUJMRSk7CisgICAgLyogUmVsZWFzZSBBREMxIGZyb20gcmVzZXQgc3RhdGUgKi8KKyAgICBSQ0NfQVBCMlBlcmlwaFJlc2V0Q21kKFJDQ19BUEIyUGVyaXBoX0FEQzEsIERJU0FCTEUpOworICB9CisgIGVsc2UgaWYgKEFEQ3ggPT0gQURDMikKKyAgeworICAgIC8qIEVuYWJsZSBBREMyIHJlc2V0IHN0YXRlICovCisgICAgUkNDX0FQQjJQZXJpcGhSZXNldENtZChSQ0NfQVBCMlBlcmlwaF9BREMyLCBFTkFCTEUpOworICAgIC8qIFJlbGVhc2UgQURDMiBmcm9tIHJlc2V0IHN0YXRlICovCisgICAgUkNDX0FQQjJQZXJpcGhSZXNldENtZChSQ0NfQVBCMlBlcmlwaF9BREMyLCBESVNBQkxFKTsKKyAgfQorICBlbHNlCisgIHsKKyAgICBpZiAoQURDeCA9PSBBREMzKQorICAgIHsKKyAgICAgIC8qIEVuYWJsZSBBREMzIHJlc2V0IHN0YXRlICovCisgICAgICBSQ0NfQVBCMlBlcmlwaFJlc2V0Q21kKFJDQ19BUEIyUGVyaXBoX0FEQzMsIEVOQUJMRSk7CisgICAgICAvKiBSZWxlYXNlIEFEQzMgZnJvbSByZXNldCBzdGF0ZSAqLworICAgICAgUkNDX0FQQjJQZXJpcGhSZXNldENtZChSQ0NfQVBCMlBlcmlwaF9BREMzLCBESVNBQkxFKTsKKyAgICB9CisgIH0KK30KKworLyoqCisgICogQGJyaWVmICBJbml0aWFsaXplcyB0aGUgQURDeCBwZXJpcGhlcmFsIGFjY29yZGluZyB0byB0aGUgc3BlY2lmaWVkIHBhcmFtZXRlcnMKKyAgKiAgICAgICAgIGluIHRoZSBBRENfSW5pdFN0cnVjdC4KKyAgKiBAcGFyYW0gIEFEQ3g6IHdoZXJlIHggY2FuIGJlIDEsIDIgb3IgMyB0byBzZWxlY3QgdGhlIEFEQyBwZXJpcGhlcmFsLgorICAqIEBwYXJhbSAgQURDX0luaXRTdHJ1Y3Q6IHBvaW50ZXIgdG8gYW4gQURDX0luaXRUeXBlRGVmIHN0cnVjdHVyZSB0aGF0IGNvbnRhaW5zCisgICogICAgICAgICB0aGUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBmb3IgdGhlIHNwZWNpZmllZCBBREMgcGVyaXBoZXJhbC4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgQURDX0luaXQoQURDX1R5cGVEZWYqIEFEQ3gsIEFEQ19Jbml0VHlwZURlZiogQURDX0luaXRTdHJ1Y3QpCit7CisgIHVpbnQzMl90IHRtcHJlZzEgPSAwOworICB1aW50OF90IHRtcHJlZzIgPSAwOworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfQURDX0FMTF9QRVJJUEgoQURDeCkpOworICBhc3NlcnRfcGFyYW0oSVNfQURDX01PREUoQURDX0luaXRTdHJ1Y3QtPkFEQ19Nb2RlKSk7CisgIGFzc2VydF9wYXJhbShJU19GVU5DVElPTkFMX1NUQVRFKEFEQ19Jbml0U3RydWN0LT5BRENfU2NhbkNvbnZNb2RlKSk7CisgIGFzc2VydF9wYXJhbShJU19GVU5DVElPTkFMX1NUQVRFKEFEQ19Jbml0U3RydWN0LT5BRENfQ29udGludW91c0NvbnZNb2RlKSk7CisgIGFzc2VydF9wYXJhbShJU19BRENfRVhUX1RSSUcoQURDX0luaXRTdHJ1Y3QtPkFEQ19FeHRlcm5hbFRyaWdDb252KSk7ICAgCisgIGFzc2VydF9wYXJhbShJU19BRENfREFUQV9BTElHTihBRENfSW5pdFN0cnVjdC0+QURDX0RhdGFBbGlnbikpOyAKKyAgYXNzZXJ0X3BhcmFtKElTX0FEQ19SRUdVTEFSX0xFTkdUSChBRENfSW5pdFN0cnVjdC0+QURDX05ick9mQ2hhbm5lbCkpOworCisgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBBREN4IENSMSBDb25maWd1cmF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tKi8KKyAgLyogR2V0IHRoZSBBREN4IENSMSB2YWx1ZSAqLworICB0bXByZWcxID0gQURDeC0+Q1IxOworICAvKiBDbGVhciBEVUFMTU9EIGFuZCBTQ0FOIGJpdHMgKi8KKyAgdG1wcmVnMSAmPSBDUjFfQ0xFQVJfTWFzazsKKyAgLyogQ29uZmlndXJlIEFEQ3g6IER1YWwgbW9kZSBhbmQgc2NhbiBjb252ZXJzaW9uIG1vZGUgKi8KKyAgLyogU2V0IERVQUxNT0QgYml0cyBhY2NvcmRpbmcgdG8gQURDX01vZGUgdmFsdWUgKi8KKyAgLyogU2V0IFNDQU4gYml0IGFjY29yZGluZyB0byBBRENfU2NhbkNvbnZNb2RlIHZhbHVlICovCisgIHRtcHJlZzEgfD0gKHVpbnQzMl90KShBRENfSW5pdFN0cnVjdC0+QURDX01vZGUgfCAoKHVpbnQzMl90KUFEQ19Jbml0U3RydWN0LT5BRENfU2NhbkNvbnZNb2RlIDw8IDgpKTsKKyAgLyogV3JpdGUgdG8gQURDeCBDUjEgKi8KKyAgQURDeC0+Q1IxID0gdG1wcmVnMTsKKworICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQURDeCBDUjIgQ29uZmlndXJhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLSovCisgIC8qIEdldCB0aGUgQURDeCBDUjIgdmFsdWUgKi8KKyAgdG1wcmVnMSA9IEFEQ3gtPkNSMjsKKyAgLyogQ2xlYXIgQ09OVCwgQUxJR04gYW5kIEVYVFNFTCBiaXRzICovCisgIHRtcHJlZzEgJj0gQ1IyX0NMRUFSX01hc2s7CisgIC8qIENvbmZpZ3VyZSBBREN4OiBleHRlcm5hbCB0cmlnZ2VyIGV2ZW50IGFuZCBjb250aW51b3VzIGNvbnZlcnNpb24gbW9kZSAqLworICAvKiBTZXQgQUxJR04gYml0IGFjY29yZGluZyB0byBBRENfRGF0YUFsaWduIHZhbHVlICovCisgIC8qIFNldCBFWFRTRUwgYml0cyBhY2NvcmRpbmcgdG8gQURDX0V4dGVybmFsVHJpZ0NvbnYgdmFsdWUgKi8KKyAgLyogU2V0IENPTlQgYml0IGFjY29yZGluZyB0byBBRENfQ29udGludW91c0NvbnZNb2RlIHZhbHVlICovCisgIHRtcHJlZzEgfD0gKHVpbnQzMl90KShBRENfSW5pdFN0cnVjdC0+QURDX0RhdGFBbGlnbiB8IEFEQ19Jbml0U3RydWN0LT5BRENfRXh0ZXJuYWxUcmlnQ29udiB8CisgICAgICAgICAgICAoKHVpbnQzMl90KUFEQ19Jbml0U3RydWN0LT5BRENfQ29udGludW91c0NvbnZNb2RlIDw8IDEpKTsKKyAgLyogV3JpdGUgdG8gQURDeCBDUjIgKi8KKyAgQURDeC0+Q1IyID0gdG1wcmVnMTsKKworICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQURDeCBTUVIxIENvbmZpZ3VyYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0qLworICAvKiBHZXQgdGhlIEFEQ3ggU1FSMSB2YWx1ZSAqLworICB0bXByZWcxID0gQURDeC0+U1FSMTsKKyAgLyogQ2xlYXIgTCBiaXRzICovCisgIHRtcHJlZzEgJj0gU1FSMV9DTEVBUl9NYXNrOworICAvKiBDb25maWd1cmUgQURDeDogcmVndWxhciBjaGFubmVsIHNlcXVlbmNlIGxlbmd0aCAqLworICAvKiBTZXQgTCBiaXRzIGFjY29yZGluZyB0byBBRENfTmJyT2ZDaGFubmVsIHZhbHVlICovCisgIHRtcHJlZzIgfD0gKHVpbnQ4X3QpIChBRENfSW5pdFN0cnVjdC0+QURDX05ick9mQ2hhbm5lbCAtICh1aW50OF90KTEpOworICB0bXByZWcxIHw9ICh1aW50MzJfdCl0bXByZWcyIDw8IDIwOworICAvKiBXcml0ZSB0byBBREN4IFNRUjEgKi8KKyAgQURDeC0+U1FSMSA9IHRtcHJlZzE7Cit9CisKKy8qKgorICAqIEBicmllZiAgRmlsbHMgZWFjaCBBRENfSW5pdFN0cnVjdCBtZW1iZXIgd2l0aCBpdHMgZGVmYXVsdCB2YWx1ZS4KKyAgKiBAcGFyYW0gIEFEQ19Jbml0U3RydWN0IDogcG9pbnRlciB0byBhbiBBRENfSW5pdFR5cGVEZWYgc3RydWN0dXJlIHdoaWNoIHdpbGwgYmUgaW5pdGlhbGl6ZWQuCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIEFEQ19TdHJ1Y3RJbml0KEFEQ19Jbml0VHlwZURlZiogQURDX0luaXRTdHJ1Y3QpCit7CisgIC8qIFJlc2V0IEFEQyBpbml0IHN0cnVjdHVyZSBwYXJhbWV0ZXJzIHZhbHVlcyAqLworICAvKiBJbml0aWFsaXplIHRoZSBBRENfTW9kZSBtZW1iZXIgKi8KKyAgQURDX0luaXRTdHJ1Y3QtPkFEQ19Nb2RlID0gQURDX01vZGVfSW5kZXBlbmRlbnQ7CisgIC8qIGluaXRpYWxpemUgdGhlIEFEQ19TY2FuQ29udk1vZGUgbWVtYmVyICovCisgIEFEQ19Jbml0U3RydWN0LT5BRENfU2NhbkNvbnZNb2RlID0gRElTQUJMRTsKKyAgLyogSW5pdGlhbGl6ZSB0aGUgQURDX0NvbnRpbnVvdXNDb252TW9kZSBtZW1iZXIgKi8KKyAgQURDX0luaXRTdHJ1Y3QtPkFEQ19Db250aW51b3VzQ29udk1vZGUgPSBESVNBQkxFOworICAvKiBJbml0aWFsaXplIHRoZSBBRENfRXh0ZXJuYWxUcmlnQ29udiBtZW1iZXIgKi8KKyAgQURDX0luaXRTdHJ1Y3QtPkFEQ19FeHRlcm5hbFRyaWdDb252ID0gQURDX0V4dGVybmFsVHJpZ0NvbnZfVDFfQ0MxOworICAvKiBJbml0aWFsaXplIHRoZSBBRENfRGF0YUFsaWduIG1lbWJlciAqLworICBBRENfSW5pdFN0cnVjdC0+QURDX0RhdGFBbGlnbiA9IEFEQ19EYXRhQWxpZ25fUmlnaHQ7CisgIC8qIEluaXRpYWxpemUgdGhlIEFEQ19OYnJPZkNoYW5uZWwgbWVtYmVyICovCisgIEFEQ19Jbml0U3RydWN0LT5BRENfTmJyT2ZDaGFubmVsID0gMTsKK30KKworLyoqCisgICogQGJyaWVmICBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBzcGVjaWZpZWQgQURDIHBlcmlwaGVyYWwuCisgICogQHBhcmFtICBBREN4OiB3aGVyZSB4IGNhbiBiZSAxLCAyIG9yIDMgdG8gc2VsZWN0IHRoZSBBREMgcGVyaXBoZXJhbC4KKyAgKiBAcGFyYW0gIE5ld1N0YXRlOiBuZXcgc3RhdGUgb2YgdGhlIEFEQ3ggcGVyaXBoZXJhbC4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZTogRU5BQkxFIG9yIERJU0FCTEUuCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIEFEQ19DbWQoQURDX1R5cGVEZWYqIEFEQ3gsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSkKK3sKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX0FEQ19BTExfUEVSSVBIKEFEQ3gpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0ZVTkNUSU9OQUxfU1RBVEUoTmV3U3RhdGUpKTsKKyAgaWYgKE5ld1N0YXRlICE9IERJU0FCTEUpCisgIHsKKyAgICAvKiBTZXQgdGhlIEFET04gYml0IHRvIHdha2UgdXAgdGhlIEFEQyBmcm9tIHBvd2VyIGRvd24gbW9kZSAqLworICAgIEFEQ3gtPkNSMiB8PSBDUjJfQURPTl9TZXQ7CisgIH0KKyAgZWxzZQorICB7CisgICAgLyogRGlzYWJsZSB0aGUgc2VsZWN0ZWQgQURDIHBlcmlwaGVyYWwgKi8KKyAgICBBREN4LT5DUjIgJj0gQ1IyX0FET05fUmVzZXQ7CisgIH0KK30KKworLyoqCisgICogQGJyaWVmICBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBzcGVjaWZpZWQgQURDIERNQSByZXF1ZXN0LgorICAqIEBwYXJhbSAgQURDeDogd2hlcmUgeCBjYW4gYmUgMSBvciAzIHRvIHNlbGVjdCB0aGUgQURDIHBlcmlwaGVyYWwuCisgICogICBOb3RlOiBBREMyIGhhc24ndCBhIERNQSBjYXBhYmlsaXR5LgorICAqIEBwYXJhbSAgTmV3U3RhdGU6IG5ldyBzdGF0ZSBvZiB0aGUgc2VsZWN0ZWQgQURDIERNQSB0cmFuc2Zlci4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZTogRU5BQkxFIG9yIERJU0FCTEUuCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIEFEQ19ETUFDbWQoQURDX1R5cGVEZWYqIEFEQ3gsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSkKK3sKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX0FEQ19ETUFfUEVSSVBIKEFEQ3gpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0ZVTkNUSU9OQUxfU1RBVEUoTmV3U3RhdGUpKTsKKyAgaWYgKE5ld1N0YXRlICE9IERJU0FCTEUpCisgIHsKKyAgICAvKiBFbmFibGUgdGhlIHNlbGVjdGVkIEFEQyBETUEgcmVxdWVzdCAqLworICAgIEFEQ3gtPkNSMiB8PSBDUjJfRE1BX1NldDsKKyAgfQorICBlbHNlCisgIHsKKyAgICAvKiBEaXNhYmxlIHRoZSBzZWxlY3RlZCBBREMgRE1BIHJlcXVlc3QgKi8KKyAgICBBREN4LT5DUjIgJj0gQ1IyX0RNQV9SZXNldDsKKyAgfQorfQorCisvKioKKyAgKiBAYnJpZWYgIEVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIHNwZWNpZmllZCBBREMgaW50ZXJydXB0cy4KKyAgKiBAcGFyYW0gIEFEQ3g6IHdoZXJlIHggY2FuIGJlIDEsIDIgb3IgMyB0byBzZWxlY3QgdGhlIEFEQyBwZXJpcGhlcmFsLgorICAqIEBwYXJhbSAgQURDX0lUOiBzcGVjaWZpZXMgdGhlIEFEQyBpbnRlcnJ1cHQgc291cmNlcyB0byBiZSBlbmFibGVkIG9yIGRpc2FibGVkLiAKKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhbnkgY29tYmluYXRpb24gb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICAgIEBhcmcgQURDX0lUX0VPQzogRW5kIG9mIGNvbnZlcnNpb24gaW50ZXJydXB0IG1hc2sKKyAgKiAgICAgQGFyZyBBRENfSVRfQVdEOiBBbmFsb2cgd2F0Y2hkb2cgaW50ZXJydXB0IG1hc2sKKyAgKiAgICAgQGFyZyBBRENfSVRfSkVPQzogRW5kIG9mIGluamVjdGVkIGNvbnZlcnNpb24gaW50ZXJydXB0IG1hc2sKKyAgKiBAcGFyYW0gIE5ld1N0YXRlOiBuZXcgc3RhdGUgb2YgdGhlIHNwZWNpZmllZCBBREMgaW50ZXJydXB0cy4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZTogRU5BQkxFIG9yIERJU0FCTEUuCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIEFEQ19JVENvbmZpZyhBRENfVHlwZURlZiogQURDeCwgdWludDE2X3QgQURDX0lULCBGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpCit7CisgIHVpbnQ4X3QgaXRtYXNrID0gMDsKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX0FEQ19BTExfUEVSSVBIKEFEQ3gpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0ZVTkNUSU9OQUxfU1RBVEUoTmV3U3RhdGUpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0FEQ19JVChBRENfSVQpKTsKKyAgLyogR2V0IHRoZSBBREMgSVQgaW5kZXggKi8KKyAgaXRtYXNrID0gKHVpbnQ4X3QpQURDX0lUOworICBpZiAoTmV3U3RhdGUgIT0gRElTQUJMRSkKKyAgeworICAgIC8qIEVuYWJsZSB0aGUgc2VsZWN0ZWQgQURDIGludGVycnVwdHMgKi8KKyAgICBBREN4LT5DUjEgfD0gaXRtYXNrOworICB9CisgIGVsc2UKKyAgeworICAgIC8qIERpc2FibGUgdGhlIHNlbGVjdGVkIEFEQyBpbnRlcnJ1cHRzICovCisgICAgQURDeC0+Q1IxICY9ICh+KHVpbnQzMl90KWl0bWFzayk7CisgIH0KK30KKworLyoqCisgICogQGJyaWVmICBSZXNldHMgdGhlIHNlbGVjdGVkIEFEQyBjYWxpYnJhdGlvbiByZWdpc3RlcnMuCisgICogQHBhcmFtICBBREN4OiB3aGVyZSB4IGNhbiBiZSAxLCAyIG9yIDMgdG8gc2VsZWN0IHRoZSBBREMgcGVyaXBoZXJhbC4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgQURDX1Jlc2V0Q2FsaWJyYXRpb24oQURDX1R5cGVEZWYqIEFEQ3gpCit7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19BRENfQUxMX1BFUklQSChBREN4KSk7CisgIC8qIFJlc2V0cyB0aGUgc2VsZWN0ZWQgQURDIGNhbGlicmF0aW9uIHJlZ2lzdGVycyAqLyAgCisgIEFEQ3gtPkNSMiB8PSBDUjJfUlNUQ0FMX1NldDsKK30KKworLyoqCisgICogQGJyaWVmICBHZXRzIHRoZSBzZWxlY3RlZCBBREMgcmVzZXQgY2FsaWJyYXRpb24gcmVnaXN0ZXJzIHN0YXR1cy4KKyAgKiBAcGFyYW0gIEFEQ3g6IHdoZXJlIHggY2FuIGJlIDEsIDIgb3IgMyB0byBzZWxlY3QgdGhlIEFEQyBwZXJpcGhlcmFsLgorICAqIEByZXR2YWwgVGhlIG5ldyBzdGF0ZSBvZiBBREMgcmVzZXQgY2FsaWJyYXRpb24gcmVnaXN0ZXJzIChTRVQgb3IgUkVTRVQpLgorICAqLworRmxhZ1N0YXR1cyBBRENfR2V0UmVzZXRDYWxpYnJhdGlvblN0YXR1cyhBRENfVHlwZURlZiogQURDeCkKK3sKKyAgRmxhZ1N0YXR1cyBiaXRzdGF0dXMgPSBSRVNFVDsKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX0FEQ19BTExfUEVSSVBIKEFEQ3gpKTsKKyAgLyogQ2hlY2sgdGhlIHN0YXR1cyBvZiBSU1RDQUwgYml0ICovCisgIGlmICgoQURDeC0+Q1IyICYgQ1IyX1JTVENBTF9TZXQpICE9ICh1aW50MzJfdClSRVNFVCkKKyAgeworICAgIC8qIFJTVENBTCBiaXQgaXMgc2V0ICovCisgICAgYml0c3RhdHVzID0gU0VUOworICB9CisgIGVsc2UKKyAgeworICAgIC8qIFJTVENBTCBiaXQgaXMgcmVzZXQgKi8KKyAgICBiaXRzdGF0dXMgPSBSRVNFVDsKKyAgfQorICAvKiBSZXR1cm4gdGhlIFJTVENBTCBiaXQgc3RhdHVzICovCisgIHJldHVybiAgYml0c3RhdHVzOworfQorCisvKioKKyAgKiBAYnJpZWYgIFN0YXJ0cyB0aGUgc2VsZWN0ZWQgQURDIGNhbGlicmF0aW9uIHByb2Nlc3MuCisgICogQHBhcmFtICBBREN4OiB3aGVyZSB4IGNhbiBiZSAxLCAyIG9yIDMgdG8gc2VsZWN0IHRoZSBBREMgcGVyaXBoZXJhbC4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgQURDX1N0YXJ0Q2FsaWJyYXRpb24oQURDX1R5cGVEZWYqIEFEQ3gpCit7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19BRENfQUxMX1BFUklQSChBREN4KSk7CisgIC8qIEVuYWJsZSB0aGUgc2VsZWN0ZWQgQURDIGNhbGlicmF0aW9uIHByb2Nlc3MgKi8gIAorICBBREN4LT5DUjIgfD0gQ1IyX0NBTF9TZXQ7Cit9CisKKy8qKgorICAqIEBicmllZiAgR2V0cyB0aGUgc2VsZWN0ZWQgQURDIGNhbGlicmF0aW9uIHN0YXR1cy4KKyAgKiBAcGFyYW0gIEFEQ3g6IHdoZXJlIHggY2FuIGJlIDEsIDIgb3IgMyB0byBzZWxlY3QgdGhlIEFEQyBwZXJpcGhlcmFsLgorICAqIEByZXR2YWwgVGhlIG5ldyBzdGF0ZSBvZiBBREMgY2FsaWJyYXRpb24gKFNFVCBvciBSRVNFVCkuCisgICovCitGbGFnU3RhdHVzIEFEQ19HZXRDYWxpYnJhdGlvblN0YXR1cyhBRENfVHlwZURlZiogQURDeCkKK3sKKyAgRmxhZ1N0YXR1cyBiaXRzdGF0dXMgPSBSRVNFVDsKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX0FEQ19BTExfUEVSSVBIKEFEQ3gpKTsKKyAgLyogQ2hlY2sgdGhlIHN0YXR1cyBvZiBDQUwgYml0ICovCisgIGlmICgoQURDeC0+Q1IyICYgQ1IyX0NBTF9TZXQpICE9ICh1aW50MzJfdClSRVNFVCkKKyAgeworICAgIC8qIENBTCBiaXQgaXMgc2V0OiBjYWxpYnJhdGlvbiBvbiBnb2luZyAqLworICAgIGJpdHN0YXR1cyA9IFNFVDsKKyAgfQorICBlbHNlCisgIHsKKyAgICAvKiBDQUwgYml0IGlzIHJlc2V0OiBlbmQgb2YgY2FsaWJyYXRpb24gKi8KKyAgICBiaXRzdGF0dXMgPSBSRVNFVDsKKyAgfQorICAvKiBSZXR1cm4gdGhlIENBTCBiaXQgc3RhdHVzICovCisgIHJldHVybiAgYml0c3RhdHVzOworfQorCisvKioKKyAgKiBAYnJpZWYgIEVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIHNlbGVjdGVkIEFEQyBzb2Z0d2FyZSBzdGFydCBjb252ZXJzaW9uIC4KKyAgKiBAcGFyYW0gIEFEQ3g6IHdoZXJlIHggY2FuIGJlIDEsIDIgb3IgMyB0byBzZWxlY3QgdGhlIEFEQyBwZXJpcGhlcmFsLgorICAqIEBwYXJhbSAgTmV3U3RhdGU6IG5ldyBzdGF0ZSBvZiB0aGUgc2VsZWN0ZWQgQURDIHNvZnR3YXJlIHN0YXJ0IGNvbnZlcnNpb24uCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmU6IEVOQUJMRSBvciBESVNBQkxFLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBBRENfU29mdHdhcmVTdGFydENvbnZDbWQoQURDX1R5cGVEZWYqIEFEQ3gsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSkKK3sKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX0FEQ19BTExfUEVSSVBIKEFEQ3gpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0ZVTkNUSU9OQUxfU1RBVEUoTmV3U3RhdGUpKTsKKyAgaWYgKE5ld1N0YXRlICE9IERJU0FCTEUpCisgIHsKKyAgICAvKiBFbmFibGUgdGhlIHNlbGVjdGVkIEFEQyBjb252ZXJzaW9uIG9uIGV4dGVybmFsIGV2ZW50IGFuZCBzdGFydCB0aGUgc2VsZWN0ZWQKKyAgICAgICBBREMgY29udmVyc2lvbiAqLworICAgIEFEQ3gtPkNSMiB8PSBDUjJfRVhUVFJJR19TV1NUQVJUX1NldDsKKyAgfQorICBlbHNlCisgIHsKKyAgICAvKiBEaXNhYmxlIHRoZSBzZWxlY3RlZCBBREMgY29udmVyc2lvbiBvbiBleHRlcm5hbCBldmVudCBhbmQgc3RvcCB0aGUgc2VsZWN0ZWQKKyAgICAgICBBREMgY29udmVyc2lvbiAqLworICAgIEFEQ3gtPkNSMiAmPSBDUjJfRVhUVFJJR19TV1NUQVJUX1Jlc2V0OworICB9Cit9CisKKy8qKgorICAqIEBicmllZiAgR2V0cyB0aGUgc2VsZWN0ZWQgQURDIFNvZnR3YXJlIHN0YXJ0IGNvbnZlcnNpb24gU3RhdHVzLgorICAqIEBwYXJhbSAgQURDeDogd2hlcmUgeCBjYW4gYmUgMSwgMiBvciAzIHRvIHNlbGVjdCB0aGUgQURDIHBlcmlwaGVyYWwuCisgICogQHJldHZhbCBUaGUgbmV3IHN0YXRlIG9mIEFEQyBzb2Z0d2FyZSBzdGFydCBjb252ZXJzaW9uIChTRVQgb3IgUkVTRVQpLgorICAqLworRmxhZ1N0YXR1cyBBRENfR2V0U29mdHdhcmVTdGFydENvbnZTdGF0dXMoQURDX1R5cGVEZWYqIEFEQ3gpCit7CisgIEZsYWdTdGF0dXMgYml0c3RhdHVzID0gUkVTRVQ7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19BRENfQUxMX1BFUklQSChBREN4KSk7CisgIC8qIENoZWNrIHRoZSBzdGF0dXMgb2YgU1dTVEFSVCBiaXQgKi8KKyAgaWYgKChBREN4LT5DUjIgJiBDUjJfU1dTVEFSVF9TZXQpICE9ICh1aW50MzJfdClSRVNFVCkKKyAgeworICAgIC8qIFNXU1RBUlQgYml0IGlzIHNldCAqLworICAgIGJpdHN0YXR1cyA9IFNFVDsKKyAgfQorICBlbHNlCisgIHsKKyAgICAvKiBTV1NUQVJUIGJpdCBpcyByZXNldCAqLworICAgIGJpdHN0YXR1cyA9IFJFU0VUOworICB9CisgIC8qIFJldHVybiB0aGUgU1dTVEFSVCBiaXQgc3RhdHVzICovCisgIHJldHVybiAgYml0c3RhdHVzOworfQorCisvKioKKyAgKiBAYnJpZWYgIENvbmZpZ3VyZXMgdGhlIGRpc2NvbnRpbnVvdXMgbW9kZSBmb3IgdGhlIHNlbGVjdGVkIEFEQyByZWd1bGFyCisgICogICAgICAgICBncm91cCBjaGFubmVsLgorICAqIEBwYXJhbSAgQURDeDogd2hlcmUgeCBjYW4gYmUgMSwgMiBvciAzIHRvIHNlbGVjdCB0aGUgQURDIHBlcmlwaGVyYWwuCisgICogQHBhcmFtICBOdW1iZXI6IHNwZWNpZmllcyB0aGUgZGlzY29udGludW91cyBtb2RlIHJlZ3VsYXIgY2hhbm5lbAorICAqICAgICAgICAgY291bnQgdmFsdWUuIFRoaXMgbnVtYmVyIG11c3QgYmUgYmV0d2VlbiAxIGFuZCA4LgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBBRENfRGlzY01vZGVDaGFubmVsQ291bnRDb25maWcoQURDX1R5cGVEZWYqIEFEQ3gsIHVpbnQ4X3QgTnVtYmVyKQoreworICB1aW50MzJfdCB0bXByZWcxID0gMDsKKyAgdWludDMyX3QgdG1wcmVnMiA9IDA7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19BRENfQUxMX1BFUklQSChBREN4KSk7CisgIGFzc2VydF9wYXJhbShJU19BRENfUkVHVUxBUl9ESVNDX05VTUJFUihOdW1iZXIpKTsKKyAgLyogR2V0IHRoZSBvbGQgcmVnaXN0ZXIgdmFsdWUgKi8KKyAgdG1wcmVnMSA9IEFEQ3gtPkNSMTsKKyAgLyogQ2xlYXIgdGhlIG9sZCBkaXNjb250aW51b3VzIG1vZGUgY2hhbm5lbCBjb3VudCAqLworICB0bXByZWcxICY9IENSMV9ESVNDTlVNX1Jlc2V0OworICAvKiBTZXQgdGhlIGRpc2NvbnRpbnVvdXMgbW9kZSBjaGFubmVsIGNvdW50ICovCisgIHRtcHJlZzIgPSBOdW1iZXIgLSAxOworICB0bXByZWcxIHw9IHRtcHJlZzIgPDwgMTM7CisgIC8qIFN0b3JlIHRoZSBuZXcgcmVnaXN0ZXIgdmFsdWUgKi8KKyAgQURDeC0+Q1IxID0gdG1wcmVnMTsKK30KKworLyoqCisgICogQGJyaWVmICBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBkaXNjb250aW51b3VzIG1vZGUgb24gcmVndWxhciBncm91cAorICAqICAgICAgICAgY2hhbm5lbCBmb3IgdGhlIHNwZWNpZmllZCBBREMKKyAgKiBAcGFyYW0gIEFEQ3g6IHdoZXJlIHggY2FuIGJlIDEsIDIgb3IgMyB0byBzZWxlY3QgdGhlIEFEQyBwZXJpcGhlcmFsLgorICAqIEBwYXJhbSAgTmV3U3RhdGU6IG5ldyBzdGF0ZSBvZiB0aGUgc2VsZWN0ZWQgQURDIGRpc2NvbnRpbnVvdXMgbW9kZQorICAqICAgICAgICAgb24gcmVndWxhciBncm91cCBjaGFubmVsLgorICAqICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlOiBFTkFCTEUgb3IgRElTQUJMRS4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgQURDX0Rpc2NNb2RlQ21kKEFEQ19UeXBlRGVmKiBBREN4LCBGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpCit7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19BRENfQUxMX1BFUklQSChBREN4KSk7CisgIGFzc2VydF9wYXJhbShJU19GVU5DVElPTkFMX1NUQVRFKE5ld1N0YXRlKSk7CisgIGlmIChOZXdTdGF0ZSAhPSBESVNBQkxFKQorICB7CisgICAgLyogRW5hYmxlIHRoZSBzZWxlY3RlZCBBREMgcmVndWxhciBkaXNjb250aW51b3VzIG1vZGUgKi8KKyAgICBBREN4LT5DUjEgfD0gQ1IxX0RJU0NFTl9TZXQ7CisgIH0KKyAgZWxzZQorICB7CisgICAgLyogRGlzYWJsZSB0aGUgc2VsZWN0ZWQgQURDIHJlZ3VsYXIgZGlzY29udGludW91cyBtb2RlICovCisgICAgQURDeC0+Q1IxICY9IENSMV9ESVNDRU5fUmVzZXQ7CisgIH0KK30KKworLyoqCisgICogQGJyaWVmICBDb25maWd1cmVzIGZvciB0aGUgc2VsZWN0ZWQgQURDIHJlZ3VsYXIgY2hhbm5lbCBpdHMgY29ycmVzcG9uZGluZworICAqICAgICAgICAgcmFuayBpbiB0aGUgc2VxdWVuY2VyIGFuZCBpdHMgc2FtcGxlIHRpbWUuCisgICogQHBhcmFtICBBREN4OiB3aGVyZSB4IGNhbiBiZSAxLCAyIG9yIDMgdG8gc2VsZWN0IHRoZSBBREMgcGVyaXBoZXJhbC4KKyAgKiBAcGFyYW0gIEFEQ19DaGFubmVsOiB0aGUgQURDIGNoYW5uZWwgdG8gY29uZmlndXJlLiAKKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICAgIEBhcmcgQURDX0NoYW5uZWxfMDogQURDIENoYW5uZWwwIHNlbGVjdGVkCisgICogICAgIEBhcmcgQURDX0NoYW5uZWxfMTogQURDIENoYW5uZWwxIHNlbGVjdGVkCisgICogICAgIEBhcmcgQURDX0NoYW5uZWxfMjogQURDIENoYW5uZWwyIHNlbGVjdGVkCisgICogICAgIEBhcmcgQURDX0NoYW5uZWxfMzogQURDIENoYW5uZWwzIHNlbGVjdGVkCisgICogICAgIEBhcmcgQURDX0NoYW5uZWxfNDogQURDIENoYW5uZWw0IHNlbGVjdGVkCisgICogICAgIEBhcmcgQURDX0NoYW5uZWxfNTogQURDIENoYW5uZWw1IHNlbGVjdGVkCisgICogICAgIEBhcmcgQURDX0NoYW5uZWxfNjogQURDIENoYW5uZWw2IHNlbGVjdGVkCisgICogICAgIEBhcmcgQURDX0NoYW5uZWxfNzogQURDIENoYW5uZWw3IHNlbGVjdGVkCisgICogICAgIEBhcmcgQURDX0NoYW5uZWxfODogQURDIENoYW5uZWw4IHNlbGVjdGVkCisgICogICAgIEBhcmcgQURDX0NoYW5uZWxfOTogQURDIENoYW5uZWw5IHNlbGVjdGVkCisgICogICAgIEBhcmcgQURDX0NoYW5uZWxfMTA6IEFEQyBDaGFubmVsMTAgc2VsZWN0ZWQKKyAgKiAgICAgQGFyZyBBRENfQ2hhbm5lbF8xMTogQURDIENoYW5uZWwxMSBzZWxlY3RlZAorICAqICAgICBAYXJnIEFEQ19DaGFubmVsXzEyOiBBREMgQ2hhbm5lbDEyIHNlbGVjdGVkCisgICogICAgIEBhcmcgQURDX0NoYW5uZWxfMTM6IEFEQyBDaGFubmVsMTMgc2VsZWN0ZWQKKyAgKiAgICAgQGFyZyBBRENfQ2hhbm5lbF8xNDogQURDIENoYW5uZWwxNCBzZWxlY3RlZAorICAqICAgICBAYXJnIEFEQ19DaGFubmVsXzE1OiBBREMgQ2hhbm5lbDE1IHNlbGVjdGVkCisgICogICAgIEBhcmcgQURDX0NoYW5uZWxfMTY6IEFEQyBDaGFubmVsMTYgc2VsZWN0ZWQKKyAgKiAgICAgQGFyZyBBRENfQ2hhbm5lbF8xNzogQURDIENoYW5uZWwxNyBzZWxlY3RlZAorICAqIEBwYXJhbSAgUmFuazogVGhlIHJhbmsgaW4gdGhlIHJlZ3VsYXIgZ3JvdXAgc2VxdWVuY2VyLiBUaGlzIHBhcmFtZXRlciBtdXN0IGJlIGJldHdlZW4gMSB0byAxNi4KKyAgKiBAcGFyYW0gIEFEQ19TYW1wbGVUaW1lOiBUaGUgc2FtcGxlIHRpbWUgdmFsdWUgdG8gYmUgc2V0IGZvciB0aGUgc2VsZWN0ZWQgY2hhbm5lbC4gCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIEFEQ19TYW1wbGVUaW1lXzFDeWNsZXM1OiBTYW1wbGUgdGltZSBlcXVhbCB0byAxLjUgY3ljbGVzCisgICogICAgIEBhcmcgQURDX1NhbXBsZVRpbWVfN0N5Y2xlczU6IFNhbXBsZSB0aW1lIGVxdWFsIHRvIDcuNSBjeWNsZXMKKyAgKiAgICAgQGFyZyBBRENfU2FtcGxlVGltZV8xM0N5Y2xlczU6IFNhbXBsZSB0aW1lIGVxdWFsIHRvIDEzLjUgY3ljbGVzCisgICogICAgIEBhcmcgQURDX1NhbXBsZVRpbWVfMjhDeWNsZXM1OiBTYW1wbGUgdGltZSBlcXVhbCB0byAyOC41IGN5Y2xlcwkKKyAgKiAgICAgQGFyZyBBRENfU2FtcGxlVGltZV80MUN5Y2xlczU6IFNhbXBsZSB0aW1lIGVxdWFsIHRvIDQxLjUgY3ljbGVzCQorICAqICAgICBAYXJnIEFEQ19TYW1wbGVUaW1lXzU1Q3ljbGVzNTogU2FtcGxlIHRpbWUgZXF1YWwgdG8gNTUuNSBjeWNsZXMJCisgICogICAgIEBhcmcgQURDX1NhbXBsZVRpbWVfNzFDeWNsZXM1OiBTYW1wbGUgdGltZSBlcXVhbCB0byA3MS41IGN5Y2xlcwkKKyAgKiAgICAgQGFyZyBBRENfU2FtcGxlVGltZV8yMzlDeWNsZXM1OiBTYW1wbGUgdGltZSBlcXVhbCB0byAyMzkuNSBjeWNsZXMJCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIEFEQ19SZWd1bGFyQ2hhbm5lbENvbmZpZyhBRENfVHlwZURlZiogQURDeCwgdWludDhfdCBBRENfQ2hhbm5lbCwgdWludDhfdCBSYW5rLCB1aW50OF90IEFEQ19TYW1wbGVUaW1lKQoreworICB1aW50MzJfdCB0bXByZWcxID0gMCwgdG1wcmVnMiA9IDA7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19BRENfQUxMX1BFUklQSChBREN4KSk7CisgIGFzc2VydF9wYXJhbShJU19BRENfQ0hBTk5FTChBRENfQ2hhbm5lbCkpOworICBhc3NlcnRfcGFyYW0oSVNfQURDX1JFR1VMQVJfUkFOSyhSYW5rKSk7CisgIGFzc2VydF9wYXJhbShJU19BRENfU0FNUExFX1RJTUUoQURDX1NhbXBsZVRpbWUpKTsKKyAgLyogaWYgQURDX0NoYW5uZWxfMTAgLi4uIEFEQ19DaGFubmVsXzE3IGlzIHNlbGVjdGVkICovCisgIGlmIChBRENfQ2hhbm5lbCA+IEFEQ19DaGFubmVsXzkpCisgIHsKKyAgICAvKiBHZXQgdGhlIG9sZCByZWdpc3RlciB2YWx1ZSAqLworICAgIHRtcHJlZzEgPSBBREN4LT5TTVBSMTsKKyAgICAvKiBDYWxjdWxhdGUgdGhlIG1hc2sgdG8gY2xlYXIgKi8KKyAgICB0bXByZWcyID0gU01QUjFfU01QX1NldCA8PCAoMyAqIChBRENfQ2hhbm5lbCAtIDEwKSk7CisgICAgLyogQ2xlYXIgdGhlIG9sZCBjaGFubmVsIHNhbXBsZSB0aW1lICovCisgICAgdG1wcmVnMSAmPSB+dG1wcmVnMjsKKyAgICAvKiBDYWxjdWxhdGUgdGhlIG1hc2sgdG8gc2V0ICovCisgICAgdG1wcmVnMiA9ICh1aW50MzJfdClBRENfU2FtcGxlVGltZSA8PCAoMyAqIChBRENfQ2hhbm5lbCAtIDEwKSk7CisgICAgLyogU2V0IHRoZSBuZXcgY2hhbm5lbCBzYW1wbGUgdGltZSAqLworICAgIHRtcHJlZzEgfD0gdG1wcmVnMjsKKyAgICAvKiBTdG9yZSB0aGUgbmV3IHJlZ2lzdGVyIHZhbHVlICovCisgICAgQURDeC0+U01QUjEgPSB0bXByZWcxOworICB9CisgIGVsc2UgLyogQURDX0NoYW5uZWwgaW5jbHVkZSBpbiBBRENfQ2hhbm5lbF9bMC4uOV0gKi8KKyAgeworICAgIC8qIEdldCB0aGUgb2xkIHJlZ2lzdGVyIHZhbHVlICovCisgICAgdG1wcmVnMSA9IEFEQ3gtPlNNUFIyOworICAgIC8qIENhbGN1bGF0ZSB0aGUgbWFzayB0byBjbGVhciAqLworICAgIHRtcHJlZzIgPSBTTVBSMl9TTVBfU2V0IDw8ICgzICogQURDX0NoYW5uZWwpOworICAgIC8qIENsZWFyIHRoZSBvbGQgY2hhbm5lbCBzYW1wbGUgdGltZSAqLworICAgIHRtcHJlZzEgJj0gfnRtcHJlZzI7CisgICAgLyogQ2FsY3VsYXRlIHRoZSBtYXNrIHRvIHNldCAqLworICAgIHRtcHJlZzIgPSAodWludDMyX3QpQURDX1NhbXBsZVRpbWUgPDwgKDMgKiBBRENfQ2hhbm5lbCk7CisgICAgLyogU2V0IHRoZSBuZXcgY2hhbm5lbCBzYW1wbGUgdGltZSAqLworICAgIHRtcHJlZzEgfD0gdG1wcmVnMjsKKyAgICAvKiBTdG9yZSB0aGUgbmV3IHJlZ2lzdGVyIHZhbHVlICovCisgICAgQURDeC0+U01QUjIgPSB0bXByZWcxOworICB9CisgIC8qIEZvciBSYW5rIDEgdG8gNiAqLworICBpZiAoUmFuayA8IDcpCisgIHsKKyAgICAvKiBHZXQgdGhlIG9sZCByZWdpc3RlciB2YWx1ZSAqLworICAgIHRtcHJlZzEgPSBBREN4LT5TUVIzOworICAgIC8qIENhbGN1bGF0ZSB0aGUgbWFzayB0byBjbGVhciAqLworICAgIHRtcHJlZzIgPSBTUVIzX1NRX1NldCA8PCAoNSAqIChSYW5rIC0gMSkpOworICAgIC8qIENsZWFyIHRoZSBvbGQgU1F4IGJpdHMgZm9yIHRoZSBzZWxlY3RlZCByYW5rICovCisgICAgdG1wcmVnMSAmPSB+dG1wcmVnMjsKKyAgICAvKiBDYWxjdWxhdGUgdGhlIG1hc2sgdG8gc2V0ICovCisgICAgdG1wcmVnMiA9ICh1aW50MzJfdClBRENfQ2hhbm5lbCA8PCAoNSAqIChSYW5rIC0gMSkpOworICAgIC8qIFNldCB0aGUgU1F4IGJpdHMgZm9yIHRoZSBzZWxlY3RlZCByYW5rICovCisgICAgdG1wcmVnMSB8PSB0bXByZWcyOworICAgIC8qIFN0b3JlIHRoZSBuZXcgcmVnaXN0ZXIgdmFsdWUgKi8KKyAgICBBREN4LT5TUVIzID0gdG1wcmVnMTsKKyAgfQorICAvKiBGb3IgUmFuayA3IHRvIDEyICovCisgIGVsc2UgaWYgKFJhbmsgPCAxMykKKyAgeworICAgIC8qIEdldCB0aGUgb2xkIHJlZ2lzdGVyIHZhbHVlICovCisgICAgdG1wcmVnMSA9IEFEQ3gtPlNRUjI7CisgICAgLyogQ2FsY3VsYXRlIHRoZSBtYXNrIHRvIGNsZWFyICovCisgICAgdG1wcmVnMiA9IFNRUjJfU1FfU2V0IDw8ICg1ICogKFJhbmsgLSA3KSk7CisgICAgLyogQ2xlYXIgdGhlIG9sZCBTUXggYml0cyBmb3IgdGhlIHNlbGVjdGVkIHJhbmsgKi8KKyAgICB0bXByZWcxICY9IH50bXByZWcyOworICAgIC8qIENhbGN1bGF0ZSB0aGUgbWFzayB0byBzZXQgKi8KKyAgICB0bXByZWcyID0gKHVpbnQzMl90KUFEQ19DaGFubmVsIDw8ICg1ICogKFJhbmsgLSA3KSk7CisgICAgLyogU2V0IHRoZSBTUXggYml0cyBmb3IgdGhlIHNlbGVjdGVkIHJhbmsgKi8KKyAgICB0bXByZWcxIHw9IHRtcHJlZzI7CisgICAgLyogU3RvcmUgdGhlIG5ldyByZWdpc3RlciB2YWx1ZSAqLworICAgIEFEQ3gtPlNRUjIgPSB0bXByZWcxOworICB9CisgIC8qIEZvciBSYW5rIDEzIHRvIDE2ICovCisgIGVsc2UKKyAgeworICAgIC8qIEdldCB0aGUgb2xkIHJlZ2lzdGVyIHZhbHVlICovCisgICAgdG1wcmVnMSA9IEFEQ3gtPlNRUjE7CisgICAgLyogQ2FsY3VsYXRlIHRoZSBtYXNrIHRvIGNsZWFyICovCisgICAgdG1wcmVnMiA9IFNRUjFfU1FfU2V0IDw8ICg1ICogKFJhbmsgLSAxMykpOworICAgIC8qIENsZWFyIHRoZSBvbGQgU1F4IGJpdHMgZm9yIHRoZSBzZWxlY3RlZCByYW5rICovCisgICAgdG1wcmVnMSAmPSB+dG1wcmVnMjsKKyAgICAvKiBDYWxjdWxhdGUgdGhlIG1hc2sgdG8gc2V0ICovCisgICAgdG1wcmVnMiA9ICh1aW50MzJfdClBRENfQ2hhbm5lbCA8PCAoNSAqIChSYW5rIC0gMTMpKTsKKyAgICAvKiBTZXQgdGhlIFNReCBiaXRzIGZvciB0aGUgc2VsZWN0ZWQgcmFuayAqLworICAgIHRtcHJlZzEgfD0gdG1wcmVnMjsKKyAgICAvKiBTdG9yZSB0aGUgbmV3IHJlZ2lzdGVyIHZhbHVlICovCisgICAgQURDeC0+U1FSMSA9IHRtcHJlZzE7CisgIH0KK30KKworLyoqCisgICogQGJyaWVmICBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBBREN4IGNvbnZlcnNpb24gdGhyb3VnaCBleHRlcm5hbCB0cmlnZ2VyLgorICAqIEBwYXJhbSAgQURDeDogd2hlcmUgeCBjYW4gYmUgMSwgMiBvciAzIHRvIHNlbGVjdCB0aGUgQURDIHBlcmlwaGVyYWwuCisgICogQHBhcmFtICBOZXdTdGF0ZTogbmV3IHN0YXRlIG9mIHRoZSBzZWxlY3RlZCBBREMgZXh0ZXJuYWwgdHJpZ2dlciBzdGFydCBvZiBjb252ZXJzaW9uLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlOiBFTkFCTEUgb3IgRElTQUJMRS4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgQURDX0V4dGVybmFsVHJpZ0NvbnZDbWQoQURDX1R5cGVEZWYqIEFEQ3gsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSkKK3sKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX0FEQ19BTExfUEVSSVBIKEFEQ3gpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0ZVTkNUSU9OQUxfU1RBVEUoTmV3U3RhdGUpKTsKKyAgaWYgKE5ld1N0YXRlICE9IERJU0FCTEUpCisgIHsKKyAgICAvKiBFbmFibGUgdGhlIHNlbGVjdGVkIEFEQyBjb252ZXJzaW9uIG9uIGV4dGVybmFsIGV2ZW50ICovCisgICAgQURDeC0+Q1IyIHw9IENSMl9FWFRUUklHX1NldDsKKyAgfQorICBlbHNlCisgIHsKKyAgICAvKiBEaXNhYmxlIHRoZSBzZWxlY3RlZCBBREMgY29udmVyc2lvbiBvbiBleHRlcm5hbCBldmVudCAqLworICAgIEFEQ3gtPkNSMiAmPSBDUjJfRVhUVFJJR19SZXNldDsKKyAgfQorfQorCisvKioKKyAgKiBAYnJpZWYgIFJldHVybnMgdGhlIGxhc3QgQURDeCBjb252ZXJzaW9uIHJlc3VsdCBkYXRhIGZvciByZWd1bGFyIGNoYW5uZWwuCisgICogQHBhcmFtICBBREN4OiB3aGVyZSB4IGNhbiBiZSAxLCAyIG9yIDMgdG8gc2VsZWN0IHRoZSBBREMgcGVyaXBoZXJhbC4KKyAgKiBAcmV0dmFsIFRoZSBEYXRhIGNvbnZlcnNpb24gdmFsdWUuCisgICovCit1aW50MTZfdCBBRENfR2V0Q29udmVyc2lvblZhbHVlKEFEQ19UeXBlRGVmKiBBREN4KQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfQURDX0FMTF9QRVJJUEgoQURDeCkpOworICAvKiBSZXR1cm4gdGhlIHNlbGVjdGVkIEFEQyBjb252ZXJzaW9uIHZhbHVlICovCisgIHJldHVybiAodWludDE2X3QpIEFEQ3gtPkRSOworfQorCisvKioKKyAgKiBAYnJpZWYgIFJldHVybnMgdGhlIGxhc3QgQURDMSBhbmQgQURDMiBjb252ZXJzaW9uIHJlc3VsdCBkYXRhIGluIGR1YWwgbW9kZS4KKyAgKiBAcmV0dmFsIFRoZSBEYXRhIGNvbnZlcnNpb24gdmFsdWUuCisgICovCit1aW50MzJfdCBBRENfR2V0RHVhbE1vZGVDb252ZXJzaW9uVmFsdWUodm9pZCkKK3sKKyAgLyogUmV0dXJuIHRoZSBkdWFsIG1vZGUgY29udmVyc2lvbiB2YWx1ZSAqLworICByZXR1cm4gKCooX19JTyB1aW50MzJfdCAqKSBEUl9BRERSRVNTKTsKK30KKworLyoqCisgICogQGJyaWVmICBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBzZWxlY3RlZCBBREMgYXV0b21hdGljIGluamVjdGVkIGdyb3VwCisgICogICAgICAgICBjb252ZXJzaW9uIGFmdGVyIHJlZ3VsYXIgb25lLgorICAqIEBwYXJhbSAgQURDeDogd2hlcmUgeCBjYW4gYmUgMSwgMiBvciAzIHRvIHNlbGVjdCB0aGUgQURDIHBlcmlwaGVyYWwuCisgICogQHBhcmFtICBOZXdTdGF0ZTogbmV3IHN0YXRlIG9mIHRoZSBzZWxlY3RlZCBBREMgYXV0byBpbmplY3RlZCBjb252ZXJzaW9uCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmU6IEVOQUJMRSBvciBESVNBQkxFLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBBRENfQXV0b0luamVjdGVkQ29udkNtZChBRENfVHlwZURlZiogQURDeCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfQURDX0FMTF9QRVJJUEgoQURDeCkpOworICBhc3NlcnRfcGFyYW0oSVNfRlVOQ1RJT05BTF9TVEFURShOZXdTdGF0ZSkpOworICBpZiAoTmV3U3RhdGUgIT0gRElTQUJMRSkKKyAgeworICAgIC8qIEVuYWJsZSB0aGUgc2VsZWN0ZWQgQURDIGF1dG9tYXRpYyBpbmplY3RlZCBncm91cCBjb252ZXJzaW9uICovCisgICAgQURDeC0+Q1IxIHw9IENSMV9KQVVUT19TZXQ7CisgIH0KKyAgZWxzZQorICB7CisgICAgLyogRGlzYWJsZSB0aGUgc2VsZWN0ZWQgQURDIGF1dG9tYXRpYyBpbmplY3RlZCBncm91cCBjb252ZXJzaW9uICovCisgICAgQURDeC0+Q1IxICY9IENSMV9KQVVUT19SZXNldDsKKyAgfQorfQorCisvKioKKyAgKiBAYnJpZWYgIEVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIGRpc2NvbnRpbnVvdXMgbW9kZSBmb3IgaW5qZWN0ZWQgZ3JvdXAKKyAgKiAgICAgICAgIGNoYW5uZWwgZm9yIHRoZSBzcGVjaWZpZWQgQURDCisgICogQHBhcmFtICBBREN4OiB3aGVyZSB4IGNhbiBiZSAxLCAyIG9yIDMgdG8gc2VsZWN0IHRoZSBBREMgcGVyaXBoZXJhbC4KKyAgKiBAcGFyYW0gIE5ld1N0YXRlOiBuZXcgc3RhdGUgb2YgdGhlIHNlbGVjdGVkIEFEQyBkaXNjb250aW51b3VzIG1vZGUKKyAgKiAgICAgICAgIG9uIGluamVjdGVkIGdyb3VwIGNoYW5uZWwuCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmU6IEVOQUJMRSBvciBESVNBQkxFLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBBRENfSW5qZWN0ZWREaXNjTW9kZUNtZChBRENfVHlwZURlZiogQURDeCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfQURDX0FMTF9QRVJJUEgoQURDeCkpOworICBhc3NlcnRfcGFyYW0oSVNfRlVOQ1RJT05BTF9TVEFURShOZXdTdGF0ZSkpOworICBpZiAoTmV3U3RhdGUgIT0gRElTQUJMRSkKKyAgeworICAgIC8qIEVuYWJsZSB0aGUgc2VsZWN0ZWQgQURDIGluamVjdGVkIGRpc2NvbnRpbnVvdXMgbW9kZSAqLworICAgIEFEQ3gtPkNSMSB8PSBDUjFfSkRJU0NFTl9TZXQ7CisgIH0KKyAgZWxzZQorICB7CisgICAgLyogRGlzYWJsZSB0aGUgc2VsZWN0ZWQgQURDIGluamVjdGVkIGRpc2NvbnRpbnVvdXMgbW9kZSAqLworICAgIEFEQ3gtPkNSMSAmPSBDUjFfSkRJU0NFTl9SZXNldDsKKyAgfQorfQorCisvKioKKyAgKiBAYnJpZWYgIENvbmZpZ3VyZXMgdGhlIEFEQ3ggZXh0ZXJuYWwgdHJpZ2dlciBmb3IgaW5qZWN0ZWQgY2hhbm5lbHMgY29udmVyc2lvbi4KKyAgKiBAcGFyYW0gIEFEQ3g6IHdoZXJlIHggY2FuIGJlIDEsIDIgb3IgMyB0byBzZWxlY3QgdGhlIEFEQyBwZXJpcGhlcmFsLgorICAqIEBwYXJhbSAgQURDX0V4dGVybmFsVHJpZ0luamVjQ29udjogc3BlY2lmaWVzIHRoZSBBREMgdHJpZ2dlciB0byBzdGFydCBpbmplY3RlZCBjb252ZXJzaW9uLiAKKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICAgIEBhcmcgQURDX0V4dGVybmFsVHJpZ0luamVjQ29udl9UMV9UUkdPOiBUaW1lcjEgVFJHTyBldmVudCBzZWxlY3RlZCAoZm9yIEFEQzEsIEFEQzIgYW5kIEFEQzMpCisgICogICAgIEBhcmcgQURDX0V4dGVybmFsVHJpZ0luamVjQ29udl9UMV9DQzQ6IFRpbWVyMSBjYXB0dXJlIGNvbXBhcmU0IHNlbGVjdGVkIChmb3IgQURDMSwgQURDMiBhbmQgQURDMykKKyAgKiAgICAgQGFyZyBBRENfRXh0ZXJuYWxUcmlnSW5qZWNDb252X1QyX1RSR086IFRpbWVyMiBUUkdPIGV2ZW50IHNlbGVjdGVkIChmb3IgQURDMSBhbmQgQURDMikKKyAgKiAgICAgQGFyZyBBRENfRXh0ZXJuYWxUcmlnSW5qZWNDb252X1QyX0NDMTogVGltZXIyIGNhcHR1cmUgY29tcGFyZTEgc2VsZWN0ZWQgKGZvciBBREMxIGFuZCBBREMyKQorICAqICAgICBAYXJnIEFEQ19FeHRlcm5hbFRyaWdJbmplY0NvbnZfVDNfQ0M0OiBUaW1lcjMgY2FwdHVyZSBjb21wYXJlNCBzZWxlY3RlZCAoZm9yIEFEQzEgYW5kIEFEQzIpCisgICogICAgIEBhcmcgQURDX0V4dGVybmFsVHJpZ0luamVjQ29udl9UNF9UUkdPOiBUaW1lcjQgVFJHTyBldmVudCBzZWxlY3RlZCAoZm9yIEFEQzEgYW5kIEFEQzIpCisgICogICAgIEBhcmcgQURDX0V4dGVybmFsVHJpZ0luamVjQ29udl9FeHRfSVQxNV9USU04X0NDNDogRXh0ZXJuYWwgaW50ZXJydXB0IGxpbmUgMTUgb3IgVGltZXI4CisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FwdHVyZSBjb21wYXJlNCBldmVudCBzZWxlY3RlZCAoZm9yIEFEQzEgYW5kIEFEQzIpICAgICAgICAgICAgICAgICAgICAgICAKKyAgKiAgICAgQGFyZyBBRENfRXh0ZXJuYWxUcmlnSW5qZWNDb252X1Q0X0NDMzogVGltZXI0IGNhcHR1cmUgY29tcGFyZTMgc2VsZWN0ZWQgKGZvciBBREMzIG9ubHkpCisgICogICAgIEBhcmcgQURDX0V4dGVybmFsVHJpZ0luamVjQ29udl9UOF9DQzI6IFRpbWVyOCBjYXB0dXJlIGNvbXBhcmUyIHNlbGVjdGVkIChmb3IgQURDMyBvbmx5KSAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgKiAgICAgQGFyZyBBRENfRXh0ZXJuYWxUcmlnSW5qZWNDb252X1Q4X0NDNDogVGltZXI4IGNhcHR1cmUgY29tcGFyZTQgc2VsZWN0ZWQgKGZvciBBREMzIG9ubHkpCisgICogICAgIEBhcmcgQURDX0V4dGVybmFsVHJpZ0luamVjQ29udl9UNV9UUkdPOiBUaW1lcjUgVFJHTyBldmVudCBzZWxlY3RlZCAoZm9yIEFEQzMgb25seSkgICAgICAgICAgICAgICAgICAgICAgICAgCisgICogICAgIEBhcmcgQURDX0V4dGVybmFsVHJpZ0luamVjQ29udl9UNV9DQzQ6IFRpbWVyNSBjYXB0dXJlIGNvbXBhcmU0IHNlbGVjdGVkIChmb3IgQURDMyBvbmx5KSAgICAgICAgICAgICAgICAgICAgICAgIAorICAqICAgICBAYXJnIEFEQ19FeHRlcm5hbFRyaWdJbmplY0NvbnZfTm9uZTogSW5qZWN0ZWQgY29udmVyc2lvbiBzdGFydGVkIGJ5IHNvZnR3YXJlIGFuZCBub3QKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5IGV4dGVybmFsIHRyaWdnZXIgKGZvciBBREMxLCBBREMyIGFuZCBBREMzKQorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBBRENfRXh0ZXJuYWxUcmlnSW5qZWN0ZWRDb252Q29uZmlnKEFEQ19UeXBlRGVmKiBBREN4LCB1aW50MzJfdCBBRENfRXh0ZXJuYWxUcmlnSW5qZWNDb252KQoreworICB1aW50MzJfdCB0bXByZWcgPSAwOworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfQURDX0FMTF9QRVJJUEgoQURDeCkpOworICBhc3NlcnRfcGFyYW0oSVNfQURDX0VYVF9JTkpFQ19UUklHKEFEQ19FeHRlcm5hbFRyaWdJbmplY0NvbnYpKTsKKyAgLyogR2V0IHRoZSBvbGQgcmVnaXN0ZXIgdmFsdWUgKi8KKyAgdG1wcmVnID0gQURDeC0+Q1IyOworICAvKiBDbGVhciB0aGUgb2xkIGV4dGVybmFsIGV2ZW50IHNlbGVjdGlvbiBmb3IgaW5qZWN0ZWQgZ3JvdXAgKi8KKyAgdG1wcmVnICY9IENSMl9KRVhUU0VMX1Jlc2V0OworICAvKiBTZXQgdGhlIGV4dGVybmFsIGV2ZW50IHNlbGVjdGlvbiBmb3IgaW5qZWN0ZWQgZ3JvdXAgKi8KKyAgdG1wcmVnIHw9IEFEQ19FeHRlcm5hbFRyaWdJbmplY0NvbnY7CisgIC8qIFN0b3JlIHRoZSBuZXcgcmVnaXN0ZXIgdmFsdWUgKi8KKyAgQURDeC0+Q1IyID0gdG1wcmVnOworfQorCisvKioKKyAgKiBAYnJpZWYgIEVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIEFEQ3ggaW5qZWN0ZWQgY2hhbm5lbHMgY29udmVyc2lvbiB0aHJvdWdoCisgICogICAgICAgICBleHRlcm5hbCB0cmlnZ2VyCisgICogQHBhcmFtICBBREN4OiB3aGVyZSB4IGNhbiBiZSAxLCAyIG9yIDMgdG8gc2VsZWN0IHRoZSBBREMgcGVyaXBoZXJhbC4KKyAgKiBAcGFyYW0gIE5ld1N0YXRlOiBuZXcgc3RhdGUgb2YgdGhlIHNlbGVjdGVkIEFEQyBleHRlcm5hbCB0cmlnZ2VyIHN0YXJ0IG9mCisgICogICAgICAgICBpbmplY3RlZCBjb252ZXJzaW9uLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlOiBFTkFCTEUgb3IgRElTQUJMRS4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgQURDX0V4dGVybmFsVHJpZ0luamVjdGVkQ29udkNtZChBRENfVHlwZURlZiogQURDeCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfQURDX0FMTF9QRVJJUEgoQURDeCkpOworICBhc3NlcnRfcGFyYW0oSVNfRlVOQ1RJT05BTF9TVEFURShOZXdTdGF0ZSkpOworICBpZiAoTmV3U3RhdGUgIT0gRElTQUJMRSkKKyAgeworICAgIC8qIEVuYWJsZSB0aGUgc2VsZWN0ZWQgQURDIGV4dGVybmFsIGV2ZW50IHNlbGVjdGlvbiBmb3IgaW5qZWN0ZWQgZ3JvdXAgKi8KKyAgICBBREN4LT5DUjIgfD0gQ1IyX0pFWFRUUklHX1NldDsKKyAgfQorICBlbHNlCisgIHsKKyAgICAvKiBEaXNhYmxlIHRoZSBzZWxlY3RlZCBBREMgZXh0ZXJuYWwgZXZlbnQgc2VsZWN0aW9uIGZvciBpbmplY3RlZCBncm91cCAqLworICAgIEFEQ3gtPkNSMiAmPSBDUjJfSkVYVFRSSUdfUmVzZXQ7CisgIH0KK30KKworLyoqCisgICogQGJyaWVmICBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBzZWxlY3RlZCBBREMgc3RhcnQgb2YgdGhlIGluamVjdGVkIAorICAqICAgICAgICAgY2hhbm5lbHMgY29udmVyc2lvbi4KKyAgKiBAcGFyYW0gIEFEQ3g6IHdoZXJlIHggY2FuIGJlIDEsIDIgb3IgMyB0byBzZWxlY3QgdGhlIEFEQyBwZXJpcGhlcmFsLgorICAqIEBwYXJhbSAgTmV3U3RhdGU6IG5ldyBzdGF0ZSBvZiB0aGUgc2VsZWN0ZWQgQURDIHNvZnR3YXJlIHN0YXJ0IGluamVjdGVkIGNvbnZlcnNpb24uCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmU6IEVOQUJMRSBvciBESVNBQkxFLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBBRENfU29mdHdhcmVTdGFydEluamVjdGVkQ29udkNtZChBRENfVHlwZURlZiogQURDeCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfQURDX0FMTF9QRVJJUEgoQURDeCkpOworICBhc3NlcnRfcGFyYW0oSVNfRlVOQ1RJT05BTF9TVEFURShOZXdTdGF0ZSkpOworICBpZiAoTmV3U3RhdGUgIT0gRElTQUJMRSkKKyAgeworICAgIC8qIEVuYWJsZSB0aGUgc2VsZWN0ZWQgQURDIGNvbnZlcnNpb24gZm9yIGluamVjdGVkIGdyb3VwIG9uIGV4dGVybmFsIGV2ZW50IGFuZCBzdGFydCB0aGUgc2VsZWN0ZWQKKyAgICAgICBBREMgaW5qZWN0ZWQgY29udmVyc2lvbiAqLworICAgIEFEQ3gtPkNSMiB8PSBDUjJfSkVYVFRSSUdfSlNXU1RBUlRfU2V0OworICB9CisgIGVsc2UKKyAgeworICAgIC8qIERpc2FibGUgdGhlIHNlbGVjdGVkIEFEQyBjb252ZXJzaW9uIG9uIGV4dGVybmFsIGV2ZW50IGZvciBpbmplY3RlZCBncm91cCBhbmQgc3RvcCB0aGUgc2VsZWN0ZWQKKyAgICAgICBBREMgaW5qZWN0ZWQgY29udmVyc2lvbiAqLworICAgIEFEQ3gtPkNSMiAmPSBDUjJfSkVYVFRSSUdfSlNXU1RBUlRfUmVzZXQ7CisgIH0KK30KKworLyoqCisgICogQGJyaWVmICBHZXRzIHRoZSBzZWxlY3RlZCBBREMgU29mdHdhcmUgc3RhcnQgaW5qZWN0ZWQgY29udmVyc2lvbiBTdGF0dXMuCisgICogQHBhcmFtICBBREN4OiB3aGVyZSB4IGNhbiBiZSAxLCAyIG9yIDMgdG8gc2VsZWN0IHRoZSBBREMgcGVyaXBoZXJhbC4KKyAgKiBAcmV0dmFsIFRoZSBuZXcgc3RhdGUgb2YgQURDIHNvZnR3YXJlIHN0YXJ0IGluamVjdGVkIGNvbnZlcnNpb24gKFNFVCBvciBSRVNFVCkuCisgICovCitGbGFnU3RhdHVzIEFEQ19HZXRTb2Z0d2FyZVN0YXJ0SW5qZWN0ZWRDb252Q21kU3RhdHVzKEFEQ19UeXBlRGVmKiBBREN4KQoreworICBGbGFnU3RhdHVzIGJpdHN0YXR1cyA9IFJFU0VUOworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfQURDX0FMTF9QRVJJUEgoQURDeCkpOworICAvKiBDaGVjayB0aGUgc3RhdHVzIG9mIEpTV1NUQVJUIGJpdCAqLworICBpZiAoKEFEQ3gtPkNSMiAmIENSMl9KU1dTVEFSVF9TZXQpICE9ICh1aW50MzJfdClSRVNFVCkKKyAgeworICAgIC8qIEpTV1NUQVJUIGJpdCBpcyBzZXQgKi8KKyAgICBiaXRzdGF0dXMgPSBTRVQ7CisgIH0KKyAgZWxzZQorICB7CisgICAgLyogSlNXU1RBUlQgYml0IGlzIHJlc2V0ICovCisgICAgYml0c3RhdHVzID0gUkVTRVQ7CisgIH0KKyAgLyogUmV0dXJuIHRoZSBKU1dTVEFSVCBiaXQgc3RhdHVzICovCisgIHJldHVybiAgYml0c3RhdHVzOworfQorCisvKioKKyAgKiBAYnJpZWYgIENvbmZpZ3VyZXMgZm9yIHRoZSBzZWxlY3RlZCBBREMgaW5qZWN0ZWQgY2hhbm5lbCBpdHMgY29ycmVzcG9uZGluZworICAqICAgICAgICAgcmFuayBpbiB0aGUgc2VxdWVuY2VyIGFuZCBpdHMgc2FtcGxlIHRpbWUuCisgICogQHBhcmFtICBBREN4OiB3aGVyZSB4IGNhbiBiZSAxLCAyIG9yIDMgdG8gc2VsZWN0IHRoZSBBREMgcGVyaXBoZXJhbC4KKyAgKiBAcGFyYW0gIEFEQ19DaGFubmVsOiB0aGUgQURDIGNoYW5uZWwgdG8gY29uZmlndXJlLiAKKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICAgIEBhcmcgQURDX0NoYW5uZWxfMDogQURDIENoYW5uZWwwIHNlbGVjdGVkCisgICogICAgIEBhcmcgQURDX0NoYW5uZWxfMTogQURDIENoYW5uZWwxIHNlbGVjdGVkCisgICogICAgIEBhcmcgQURDX0NoYW5uZWxfMjogQURDIENoYW5uZWwyIHNlbGVjdGVkCisgICogICAgIEBhcmcgQURDX0NoYW5uZWxfMzogQURDIENoYW5uZWwzIHNlbGVjdGVkCisgICogICAgIEBhcmcgQURDX0NoYW5uZWxfNDogQURDIENoYW5uZWw0IHNlbGVjdGVkCisgICogICAgIEBhcmcgQURDX0NoYW5uZWxfNTogQURDIENoYW5uZWw1IHNlbGVjdGVkCisgICogICAgIEBhcmcgQURDX0NoYW5uZWxfNjogQURDIENoYW5uZWw2IHNlbGVjdGVkCisgICogICAgIEBhcmcgQURDX0NoYW5uZWxfNzogQURDIENoYW5uZWw3IHNlbGVjdGVkCisgICogICAgIEBhcmcgQURDX0NoYW5uZWxfODogQURDIENoYW5uZWw4IHNlbGVjdGVkCisgICogICAgIEBhcmcgQURDX0NoYW5uZWxfOTogQURDIENoYW5uZWw5IHNlbGVjdGVkCisgICogICAgIEBhcmcgQURDX0NoYW5uZWxfMTA6IEFEQyBDaGFubmVsMTAgc2VsZWN0ZWQKKyAgKiAgICAgQGFyZyBBRENfQ2hhbm5lbF8xMTogQURDIENoYW5uZWwxMSBzZWxlY3RlZAorICAqICAgICBAYXJnIEFEQ19DaGFubmVsXzEyOiBBREMgQ2hhbm5lbDEyIHNlbGVjdGVkCisgICogICAgIEBhcmcgQURDX0NoYW5uZWxfMTM6IEFEQyBDaGFubmVsMTMgc2VsZWN0ZWQKKyAgKiAgICAgQGFyZyBBRENfQ2hhbm5lbF8xNDogQURDIENoYW5uZWwxNCBzZWxlY3RlZAorICAqICAgICBAYXJnIEFEQ19DaGFubmVsXzE1OiBBREMgQ2hhbm5lbDE1IHNlbGVjdGVkCisgICogICAgIEBhcmcgQURDX0NoYW5uZWxfMTY6IEFEQyBDaGFubmVsMTYgc2VsZWN0ZWQKKyAgKiAgICAgQGFyZyBBRENfQ2hhbm5lbF8xNzogQURDIENoYW5uZWwxNyBzZWxlY3RlZAorICAqIEBwYXJhbSAgUmFuazogVGhlIHJhbmsgaW4gdGhlIGluamVjdGVkIGdyb3VwIHNlcXVlbmNlci4gVGhpcyBwYXJhbWV0ZXIgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDQuCisgICogQHBhcmFtICBBRENfU2FtcGxlVGltZTogVGhlIHNhbXBsZSB0aW1lIHZhbHVlIHRvIGJlIHNldCBmb3IgdGhlIHNlbGVjdGVkIGNoYW5uZWwuIAorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBBRENfU2FtcGxlVGltZV8xQ3ljbGVzNTogU2FtcGxlIHRpbWUgZXF1YWwgdG8gMS41IGN5Y2xlcworICAqICAgICBAYXJnIEFEQ19TYW1wbGVUaW1lXzdDeWNsZXM1OiBTYW1wbGUgdGltZSBlcXVhbCB0byA3LjUgY3ljbGVzCisgICogICAgIEBhcmcgQURDX1NhbXBsZVRpbWVfMTNDeWNsZXM1OiBTYW1wbGUgdGltZSBlcXVhbCB0byAxMy41IGN5Y2xlcworICAqICAgICBAYXJnIEFEQ19TYW1wbGVUaW1lXzI4Q3ljbGVzNTogU2FtcGxlIHRpbWUgZXF1YWwgdG8gMjguNSBjeWNsZXMJCisgICogICAgIEBhcmcgQURDX1NhbXBsZVRpbWVfNDFDeWNsZXM1OiBTYW1wbGUgdGltZSBlcXVhbCB0byA0MS41IGN5Y2xlcwkKKyAgKiAgICAgQGFyZyBBRENfU2FtcGxlVGltZV81NUN5Y2xlczU6IFNhbXBsZSB0aW1lIGVxdWFsIHRvIDU1LjUgY3ljbGVzCQorICAqICAgICBAYXJnIEFEQ19TYW1wbGVUaW1lXzcxQ3ljbGVzNTogU2FtcGxlIHRpbWUgZXF1YWwgdG8gNzEuNSBjeWNsZXMJCisgICogICAgIEBhcmcgQURDX1NhbXBsZVRpbWVfMjM5Q3ljbGVzNTogU2FtcGxlIHRpbWUgZXF1YWwgdG8gMjM5LjUgY3ljbGVzCQorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBBRENfSW5qZWN0ZWRDaGFubmVsQ29uZmlnKEFEQ19UeXBlRGVmKiBBREN4LCB1aW50OF90IEFEQ19DaGFubmVsLCB1aW50OF90IFJhbmssIHVpbnQ4X3QgQURDX1NhbXBsZVRpbWUpCit7CisgIHVpbnQzMl90IHRtcHJlZzEgPSAwLCB0bXByZWcyID0gMCwgdG1wcmVnMyA9IDA7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19BRENfQUxMX1BFUklQSChBREN4KSk7CisgIGFzc2VydF9wYXJhbShJU19BRENfQ0hBTk5FTChBRENfQ2hhbm5lbCkpOworICBhc3NlcnRfcGFyYW0oSVNfQURDX0lOSkVDVEVEX1JBTksoUmFuaykpOworICBhc3NlcnRfcGFyYW0oSVNfQURDX1NBTVBMRV9USU1FKEFEQ19TYW1wbGVUaW1lKSk7CisgIC8qIGlmIEFEQ19DaGFubmVsXzEwIC4uLiBBRENfQ2hhbm5lbF8xNyBpcyBzZWxlY3RlZCAqLworICBpZiAoQURDX0NoYW5uZWwgPiBBRENfQ2hhbm5lbF85KQorICB7CisgICAgLyogR2V0IHRoZSBvbGQgcmVnaXN0ZXIgdmFsdWUgKi8KKyAgICB0bXByZWcxID0gQURDeC0+U01QUjE7CisgICAgLyogQ2FsY3VsYXRlIHRoZSBtYXNrIHRvIGNsZWFyICovCisgICAgdG1wcmVnMiA9IFNNUFIxX1NNUF9TZXQgPDwgKDMqKEFEQ19DaGFubmVsIC0gMTApKTsKKyAgICAvKiBDbGVhciB0aGUgb2xkIGNoYW5uZWwgc2FtcGxlIHRpbWUgKi8KKyAgICB0bXByZWcxICY9IH50bXByZWcyOworICAgIC8qIENhbGN1bGF0ZSB0aGUgbWFzayB0byBzZXQgKi8KKyAgICB0bXByZWcyID0gKHVpbnQzMl90KUFEQ19TYW1wbGVUaW1lIDw8ICgzKihBRENfQ2hhbm5lbCAtIDEwKSk7CisgICAgLyogU2V0IHRoZSBuZXcgY2hhbm5lbCBzYW1wbGUgdGltZSAqLworICAgIHRtcHJlZzEgfD0gdG1wcmVnMjsKKyAgICAvKiBTdG9yZSB0aGUgbmV3IHJlZ2lzdGVyIHZhbHVlICovCisgICAgQURDeC0+U01QUjEgPSB0bXByZWcxOworICB9CisgIGVsc2UgLyogQURDX0NoYW5uZWwgaW5jbHVkZSBpbiBBRENfQ2hhbm5lbF9bMC4uOV0gKi8KKyAgeworICAgIC8qIEdldCB0aGUgb2xkIHJlZ2lzdGVyIHZhbHVlICovCisgICAgdG1wcmVnMSA9IEFEQ3gtPlNNUFIyOworICAgIC8qIENhbGN1bGF0ZSB0aGUgbWFzayB0byBjbGVhciAqLworICAgIHRtcHJlZzIgPSBTTVBSMl9TTVBfU2V0IDw8ICgzICogQURDX0NoYW5uZWwpOworICAgIC8qIENsZWFyIHRoZSBvbGQgY2hhbm5lbCBzYW1wbGUgdGltZSAqLworICAgIHRtcHJlZzEgJj0gfnRtcHJlZzI7CisgICAgLyogQ2FsY3VsYXRlIHRoZSBtYXNrIHRvIHNldCAqLworICAgIHRtcHJlZzIgPSAodWludDMyX3QpQURDX1NhbXBsZVRpbWUgPDwgKDMgKiBBRENfQ2hhbm5lbCk7CisgICAgLyogU2V0IHRoZSBuZXcgY2hhbm5lbCBzYW1wbGUgdGltZSAqLworICAgIHRtcHJlZzEgfD0gdG1wcmVnMjsKKyAgICAvKiBTdG9yZSB0aGUgbmV3IHJlZ2lzdGVyIHZhbHVlICovCisgICAgQURDeC0+U01QUjIgPSB0bXByZWcxOworICB9CisgIC8qIFJhbmsgY29uZmlndXJhdGlvbiAqLworICAvKiBHZXQgdGhlIG9sZCByZWdpc3RlciB2YWx1ZSAqLworICB0bXByZWcxID0gQURDeC0+SlNRUjsKKyAgLyogR2V0IEpMIHZhbHVlOiBOdW1iZXIgPSBKTCsxICovCisgIHRtcHJlZzMgPSAgKHRtcHJlZzEgJiBKU1FSX0pMX1NldCk+PiAyMDsKKyAgLyogQ2FsY3VsYXRlIHRoZSBtYXNrIHRvIGNsZWFyOiAoKFJhbmstMSkrKDQtSkwtMSkpICovCisgIHRtcHJlZzIgPSBKU1FSX0pTUV9TZXQgPDwgKDUgKiAodWludDhfdCkoKFJhbmsgKyAzKSAtICh0bXByZWczICsgMSkpKTsKKyAgLyogQ2xlYXIgdGhlIG9sZCBKU1F4IGJpdHMgZm9yIHRoZSBzZWxlY3RlZCByYW5rICovCisgIHRtcHJlZzEgJj0gfnRtcHJlZzI7CisgIC8qIENhbGN1bGF0ZSB0aGUgbWFzayB0byBzZXQ6ICgoUmFuay0xKSsoNC1KTC0xKSkgKi8KKyAgdG1wcmVnMiA9ICh1aW50MzJfdClBRENfQ2hhbm5lbCA8PCAoNSAqICh1aW50OF90KSgoUmFuayArIDMpIC0gKHRtcHJlZzMgKyAxKSkpOworICAvKiBTZXQgdGhlIEpTUXggYml0cyBmb3IgdGhlIHNlbGVjdGVkIHJhbmsgKi8KKyAgdG1wcmVnMSB8PSB0bXByZWcyOworICAvKiBTdG9yZSB0aGUgbmV3IHJlZ2lzdGVyIHZhbHVlICovCisgIEFEQ3gtPkpTUVIgPSB0bXByZWcxOworfQorCisvKioKKyAgKiBAYnJpZWYgIENvbmZpZ3VyZXMgdGhlIHNlcXVlbmNlciBsZW5ndGggZm9yIGluamVjdGVkIGNoYW5uZWxzCisgICogQHBhcmFtICBBREN4OiB3aGVyZSB4IGNhbiBiZSAxLCAyIG9yIDMgdG8gc2VsZWN0IHRoZSBBREMgcGVyaXBoZXJhbC4KKyAgKiBAcGFyYW0gIExlbmd0aDogVGhlIHNlcXVlbmNlciBsZW5ndGguIAorICAqICAgVGhpcyBwYXJhbWV0ZXIgbXVzdCBiZSBhIG51bWJlciBiZXR3ZWVuIDEgdG8gNC4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgQURDX0luamVjdGVkU2VxdWVuY2VyTGVuZ3RoQ29uZmlnKEFEQ19UeXBlRGVmKiBBREN4LCB1aW50OF90IExlbmd0aCkKK3sKKyAgdWludDMyX3QgdG1wcmVnMSA9IDA7CisgIHVpbnQzMl90IHRtcHJlZzIgPSAwOworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfQURDX0FMTF9QRVJJUEgoQURDeCkpOworICBhc3NlcnRfcGFyYW0oSVNfQURDX0lOSkVDVEVEX0xFTkdUSChMZW5ndGgpKTsKKyAgCisgIC8qIEdldCB0aGUgb2xkIHJlZ2lzdGVyIHZhbHVlICovCisgIHRtcHJlZzEgPSBBREN4LT5KU1FSOworICAvKiBDbGVhciB0aGUgb2xkIGluamVjdGVkIHNlcXVuZW5jZSBsZW5naHQgSkwgYml0cyAqLworICB0bXByZWcxICY9IEpTUVJfSkxfUmVzZXQ7CisgIC8qIFNldCB0aGUgaW5qZWN0ZWQgc2VxdW5lbmNlIGxlbmdodCBKTCBiaXRzICovCisgIHRtcHJlZzIgPSBMZW5ndGggLSAxOyAKKyAgdG1wcmVnMSB8PSB0bXByZWcyIDw8IDIwOworICAvKiBTdG9yZSB0aGUgbmV3IHJlZ2lzdGVyIHZhbHVlICovCisgIEFEQ3gtPkpTUVIgPSB0bXByZWcxOworfQorCisvKioKKyAgKiBAYnJpZWYgIFNldCB0aGUgaW5qZWN0ZWQgY2hhbm5lbHMgY29udmVyc2lvbiB2YWx1ZSBvZmZzZXQKKyAgKiBAcGFyYW0gIEFEQ3g6IHdoZXJlIHggY2FuIGJlIDEsIDIgb3IgMyB0byBzZWxlY3QgdGhlIEFEQyBwZXJpcGhlcmFsLgorICAqIEBwYXJhbSAgQURDX0luamVjdGVkQ2hhbm5lbDogdGhlIEFEQyBpbmplY3RlZCBjaGFubmVsIHRvIHNldCBpdHMgb2Zmc2V0LiAKKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICAgIEBhcmcgQURDX0luamVjdGVkQ2hhbm5lbF8xOiBJbmplY3RlZCBDaGFubmVsMSBzZWxlY3RlZAorICAqICAgICBAYXJnIEFEQ19JbmplY3RlZENoYW5uZWxfMjogSW5qZWN0ZWQgQ2hhbm5lbDIgc2VsZWN0ZWQKKyAgKiAgICAgQGFyZyBBRENfSW5qZWN0ZWRDaGFubmVsXzM6IEluamVjdGVkIENoYW5uZWwzIHNlbGVjdGVkCisgICogICAgIEBhcmcgQURDX0luamVjdGVkQ2hhbm5lbF80OiBJbmplY3RlZCBDaGFubmVsNCBzZWxlY3RlZAorICAqIEBwYXJhbSAgT2Zmc2V0OiB0aGUgb2Zmc2V0IHZhbHVlIGZvciB0aGUgc2VsZWN0ZWQgQURDIGluamVjdGVkIGNoYW5uZWwKKyAgKiAgIFRoaXMgcGFyYW1ldGVyIG11c3QgYmUgYSAxMmJpdCB2YWx1ZS4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgQURDX1NldEluamVjdGVkT2Zmc2V0KEFEQ19UeXBlRGVmKiBBREN4LCB1aW50OF90IEFEQ19JbmplY3RlZENoYW5uZWwsIHVpbnQxNl90IE9mZnNldCkKK3sKKyAgX19JTyB1aW50MzJfdCB0bXAgPSAwOworICAKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX0FEQ19BTExfUEVSSVBIKEFEQ3gpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0FEQ19JTkpFQ1RFRF9DSEFOTkVMKEFEQ19JbmplY3RlZENoYW5uZWwpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0FEQ19PRkZTRVQoT2Zmc2V0KSk7ICAKKyAgCisgIHRtcCA9ICh1aW50MzJfdClBREN4OworICB0bXAgKz0gQURDX0luamVjdGVkQ2hhbm5lbDsKKyAgCisgIC8qIFNldCB0aGUgc2VsZWN0ZWQgaW5qZWN0ZWQgY2hhbm5lbCBkYXRhIG9mZnNldCAqLworICAqKF9fSU8gdWludDMyX3QgKikgdG1wID0gKHVpbnQzMl90KU9mZnNldDsKK30KKworLyoqCisgICogQGJyaWVmICBSZXR1cm5zIHRoZSBBREMgaW5qZWN0ZWQgY2hhbm5lbCBjb252ZXJzaW9uIHJlc3VsdAorICAqIEBwYXJhbSAgQURDeDogd2hlcmUgeCBjYW4gYmUgMSwgMiBvciAzIHRvIHNlbGVjdCB0aGUgQURDIHBlcmlwaGVyYWwuCisgICogQHBhcmFtICBBRENfSW5qZWN0ZWRDaGFubmVsOiB0aGUgY29udmVydGVkIEFEQyBpbmplY3RlZCBjaGFubmVsLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBBRENfSW5qZWN0ZWRDaGFubmVsXzE6IEluamVjdGVkIENoYW5uZWwxIHNlbGVjdGVkCisgICogICAgIEBhcmcgQURDX0luamVjdGVkQ2hhbm5lbF8yOiBJbmplY3RlZCBDaGFubmVsMiBzZWxlY3RlZAorICAqICAgICBAYXJnIEFEQ19JbmplY3RlZENoYW5uZWxfMzogSW5qZWN0ZWQgQ2hhbm5lbDMgc2VsZWN0ZWQKKyAgKiAgICAgQGFyZyBBRENfSW5qZWN0ZWRDaGFubmVsXzQ6IEluamVjdGVkIENoYW5uZWw0IHNlbGVjdGVkCisgICogQHJldHZhbCBUaGUgRGF0YSBjb252ZXJzaW9uIHZhbHVlLgorICAqLwordWludDE2X3QgQURDX0dldEluamVjdGVkQ29udmVyc2lvblZhbHVlKEFEQ19UeXBlRGVmKiBBREN4LCB1aW50OF90IEFEQ19JbmplY3RlZENoYW5uZWwpCit7CisgIF9fSU8gdWludDMyX3QgdG1wID0gMDsKKyAgCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19BRENfQUxMX1BFUklQSChBREN4KSk7CisgIGFzc2VydF9wYXJhbShJU19BRENfSU5KRUNURURfQ0hBTk5FTChBRENfSW5qZWN0ZWRDaGFubmVsKSk7CisKKyAgdG1wID0gKHVpbnQzMl90KUFEQ3g7CisgIHRtcCArPSBBRENfSW5qZWN0ZWRDaGFubmVsICsgSkRSX09mZnNldDsKKyAgCisgIC8qIFJldHVybnMgdGhlIHNlbGVjdGVkIGluamVjdGVkIGNoYW5uZWwgY29udmVyc2lvbiBkYXRhIHZhbHVlICovCisgIHJldHVybiAodWludDE2X3QpICgqKF9fSU8gdWludDMyX3QqKSAgdG1wKTsgICAKK30KKworLyoqCisgICogQGJyaWVmICBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBhbmFsb2cgd2F0Y2hkb2cgb24gc2luZ2xlL2FsbCByZWd1bGFyCisgICogICAgICAgICBvciBpbmplY3RlZCBjaGFubmVscworICAqIEBwYXJhbSAgQURDeDogd2hlcmUgeCBjYW4gYmUgMSwgMiBvciAzIHRvIHNlbGVjdCB0aGUgQURDIHBlcmlwaGVyYWwuCisgICogQHBhcmFtICBBRENfQW5hbG9nV2F0Y2hkb2c6IHRoZSBBREMgYW5hbG9nIHdhdGNoZG9nIGNvbmZpZ3VyYXRpb24uCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIEFEQ19BbmFsb2dXYXRjaGRvZ19TaW5nbGVSZWdFbmFibGU6IEFuYWxvZyB3YXRjaGRvZyBvbiBhIHNpbmdsZSByZWd1bGFyIGNoYW5uZWwKKyAgKiAgICAgQGFyZyBBRENfQW5hbG9nV2F0Y2hkb2dfU2luZ2xlSW5qZWNFbmFibGU6IEFuYWxvZyB3YXRjaGRvZyBvbiBhIHNpbmdsZSBpbmplY3RlZCBjaGFubmVsCisgICogICAgIEBhcmcgQURDX0FuYWxvZ1dhdGNoZG9nX1NpbmdsZVJlZ09ySW5qZWNFbmFibGU6IEFuYWxvZyB3YXRjaGRvZyBvbiBhIHNpbmdsZSByZWd1bGFyIG9yIGluamVjdGVkIGNoYW5uZWwKKyAgKiAgICAgQGFyZyBBRENfQW5hbG9nV2F0Y2hkb2dfQWxsUmVnRW5hYmxlOiBBbmFsb2cgd2F0Y2hkb2cgb24gIGFsbCByZWd1bGFyIGNoYW5uZWwKKyAgKiAgICAgQGFyZyBBRENfQW5hbG9nV2F0Y2hkb2dfQWxsSW5qZWNFbmFibGU6IEFuYWxvZyB3YXRjaGRvZyBvbiAgYWxsIGluamVjdGVkIGNoYW5uZWwKKyAgKiAgICAgQGFyZyBBRENfQW5hbG9nV2F0Y2hkb2dfQWxsUmVnQWxsSW5qZWNFbmFibGU6IEFuYWxvZyB3YXRjaGRvZyBvbiBhbGwgcmVndWxhciBhbmQgaW5qZWN0ZWQgY2hhbm5lbHMKKyAgKiAgICAgQGFyZyBBRENfQW5hbG9nV2F0Y2hkb2dfTm9uZTogTm8gY2hhbm5lbCBndWFyZGVkIGJ5IHRoZSBhbmFsb2cgd2F0Y2hkb2cKKyAgKiBAcmV0dmFsIE5vbmUJICAKKyAgKi8KK3ZvaWQgQURDX0FuYWxvZ1dhdGNoZG9nQ21kKEFEQ19UeXBlRGVmKiBBREN4LCB1aW50MzJfdCBBRENfQW5hbG9nV2F0Y2hkb2cpCit7CisgIHVpbnQzMl90IHRtcHJlZyA9IDA7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19BRENfQUxMX1BFUklQSChBREN4KSk7CisgIGFzc2VydF9wYXJhbShJU19BRENfQU5BTE9HX1dBVENIRE9HKEFEQ19BbmFsb2dXYXRjaGRvZykpOworICAvKiBHZXQgdGhlIG9sZCByZWdpc3RlciB2YWx1ZSAqLworICB0bXByZWcgPSBBREN4LT5DUjE7CisgIC8qIENsZWFyIEFXREVOLCBBV0RFTkogYW5kIEFXRFNHTCBiaXRzICovCisgIHRtcHJlZyAmPSBDUjFfQVdETW9kZV9SZXNldDsKKyAgLyogU2V0IHRoZSBhbmFsb2cgd2F0Y2hkb2cgZW5hYmxlIG1vZGUgKi8KKyAgdG1wcmVnIHw9IEFEQ19BbmFsb2dXYXRjaGRvZzsKKyAgLyogU3RvcmUgdGhlIG5ldyByZWdpc3RlciB2YWx1ZSAqLworICBBREN4LT5DUjEgPSB0bXByZWc7Cit9CisKKy8qKgorICAqIEBicmllZiAgQ29uZmlndXJlcyB0aGUgaGlnaCBhbmQgbG93IHRocmVzaG9sZHMgb2YgdGhlIGFuYWxvZyB3YXRjaGRvZy4KKyAgKiBAcGFyYW0gIEFEQ3g6IHdoZXJlIHggY2FuIGJlIDEsIDIgb3IgMyB0byBzZWxlY3QgdGhlIEFEQyBwZXJpcGhlcmFsLgorICAqIEBwYXJhbSAgSGlnaFRocmVzaG9sZDogdGhlIEFEQyBhbmFsb2cgd2F0Y2hkb2cgSGlnaCB0aHJlc2hvbGQgdmFsdWUuCisgICogICBUaGlzIHBhcmFtZXRlciBtdXN0IGJlIGEgMTJiaXQgdmFsdWUuCisgICogQHBhcmFtICBMb3dUaHJlc2hvbGQ6IHRoZSBBREMgYW5hbG9nIHdhdGNoZG9nIExvdyB0aHJlc2hvbGQgdmFsdWUuCisgICogICBUaGlzIHBhcmFtZXRlciBtdXN0IGJlIGEgMTJiaXQgdmFsdWUuCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIEFEQ19BbmFsb2dXYXRjaGRvZ1RocmVzaG9sZHNDb25maWcoQURDX1R5cGVEZWYqIEFEQ3gsIHVpbnQxNl90IEhpZ2hUaHJlc2hvbGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgTG93VGhyZXNob2xkKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfQURDX0FMTF9QRVJJUEgoQURDeCkpOworICBhc3NlcnRfcGFyYW0oSVNfQURDX1RIUkVTSE9MRChIaWdoVGhyZXNob2xkKSk7CisgIGFzc2VydF9wYXJhbShJU19BRENfVEhSRVNIT0xEKExvd1RocmVzaG9sZCkpOworICAvKiBTZXQgdGhlIEFEQ3ggaGlnaCB0aHJlc2hvbGQgKi8KKyAgQURDeC0+SFRSID0gSGlnaFRocmVzaG9sZDsKKyAgLyogU2V0IHRoZSBBREN4IGxvdyB0aHJlc2hvbGQgKi8KKyAgQURDeC0+TFRSID0gTG93VGhyZXNob2xkOworfQorCisvKioKKyAgKiBAYnJpZWYgIENvbmZpZ3VyZXMgdGhlIGFuYWxvZyB3YXRjaGRvZyBndWFyZGVkIHNpbmdsZSBjaGFubmVsCisgICogQHBhcmFtICBBREN4OiB3aGVyZSB4IGNhbiBiZSAxLCAyIG9yIDMgdG8gc2VsZWN0IHRoZSBBREMgcGVyaXBoZXJhbC4KKyAgKiBAcGFyYW0gIEFEQ19DaGFubmVsOiB0aGUgQURDIGNoYW5uZWwgdG8gY29uZmlndXJlIGZvciB0aGUgYW5hbG9nIHdhdGNoZG9nLiAKKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICAgIEBhcmcgQURDX0NoYW5uZWxfMDogQURDIENoYW5uZWwwIHNlbGVjdGVkCisgICogICAgIEBhcmcgQURDX0NoYW5uZWxfMTogQURDIENoYW5uZWwxIHNlbGVjdGVkCisgICogICAgIEBhcmcgQURDX0NoYW5uZWxfMjogQURDIENoYW5uZWwyIHNlbGVjdGVkCisgICogICAgIEBhcmcgQURDX0NoYW5uZWxfMzogQURDIENoYW5uZWwzIHNlbGVjdGVkCisgICogICAgIEBhcmcgQURDX0NoYW5uZWxfNDogQURDIENoYW5uZWw0IHNlbGVjdGVkCisgICogICAgIEBhcmcgQURDX0NoYW5uZWxfNTogQURDIENoYW5uZWw1IHNlbGVjdGVkCisgICogICAgIEBhcmcgQURDX0NoYW5uZWxfNjogQURDIENoYW5uZWw2IHNlbGVjdGVkCisgICogICAgIEBhcmcgQURDX0NoYW5uZWxfNzogQURDIENoYW5uZWw3IHNlbGVjdGVkCisgICogICAgIEBhcmcgQURDX0NoYW5uZWxfODogQURDIENoYW5uZWw4IHNlbGVjdGVkCisgICogICAgIEBhcmcgQURDX0NoYW5uZWxfOTogQURDIENoYW5uZWw5IHNlbGVjdGVkCisgICogICAgIEBhcmcgQURDX0NoYW5uZWxfMTA6IEFEQyBDaGFubmVsMTAgc2VsZWN0ZWQKKyAgKiAgICAgQGFyZyBBRENfQ2hhbm5lbF8xMTogQURDIENoYW5uZWwxMSBzZWxlY3RlZAorICAqICAgICBAYXJnIEFEQ19DaGFubmVsXzEyOiBBREMgQ2hhbm5lbDEyIHNlbGVjdGVkCisgICogICAgIEBhcmcgQURDX0NoYW5uZWxfMTM6IEFEQyBDaGFubmVsMTMgc2VsZWN0ZWQKKyAgKiAgICAgQGFyZyBBRENfQ2hhbm5lbF8xNDogQURDIENoYW5uZWwxNCBzZWxlY3RlZAorICAqICAgICBAYXJnIEFEQ19DaGFubmVsXzE1OiBBREMgQ2hhbm5lbDE1IHNlbGVjdGVkCisgICogICAgIEBhcmcgQURDX0NoYW5uZWxfMTY6IEFEQyBDaGFubmVsMTYgc2VsZWN0ZWQKKyAgKiAgICAgQGFyZyBBRENfQ2hhbm5lbF8xNzogQURDIENoYW5uZWwxNyBzZWxlY3RlZAorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBBRENfQW5hbG9nV2F0Y2hkb2dTaW5nbGVDaGFubmVsQ29uZmlnKEFEQ19UeXBlRGVmKiBBREN4LCB1aW50OF90IEFEQ19DaGFubmVsKQoreworICB1aW50MzJfdCB0bXByZWcgPSAwOworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfQURDX0FMTF9QRVJJUEgoQURDeCkpOworICBhc3NlcnRfcGFyYW0oSVNfQURDX0NIQU5ORUwoQURDX0NoYW5uZWwpKTsKKyAgLyogR2V0IHRoZSBvbGQgcmVnaXN0ZXIgdmFsdWUgKi8KKyAgdG1wcmVnID0gQURDeC0+Q1IxOworICAvKiBDbGVhciB0aGUgQW5hbG9nIHdhdGNoZG9nIGNoYW5uZWwgc2VsZWN0IGJpdHMgKi8KKyAgdG1wcmVnICY9IENSMV9BV0RDSF9SZXNldDsKKyAgLyogU2V0IHRoZSBBbmFsb2cgd2F0Y2hkb2cgY2hhbm5lbCAqLworICB0bXByZWcgfD0gQURDX0NoYW5uZWw7CisgIC8qIFN0b3JlIHRoZSBuZXcgcmVnaXN0ZXIgdmFsdWUgKi8KKyAgQURDeC0+Q1IxID0gdG1wcmVnOworfQorCisvKioKKyAgKiBAYnJpZWYgIEVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIHRlbXBlcmF0dXJlIHNlbnNvciBhbmQgVnJlZmludCBjaGFubmVsLgorICAqIEBwYXJhbSAgTmV3U3RhdGU6IG5ldyBzdGF0ZSBvZiB0aGUgdGVtcGVyYXR1cmUgc2Vuc29yLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlOiBFTkFCTEUgb3IgRElTQUJMRS4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgQURDX1RlbXBTZW5zb3JWcmVmaW50Q21kKEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSkKK3sKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX0ZVTkNUSU9OQUxfU1RBVEUoTmV3U3RhdGUpKTsKKyAgaWYgKE5ld1N0YXRlICE9IERJU0FCTEUpCisgIHsKKyAgICAvKiBFbmFibGUgdGhlIHRlbXBlcmF0dXJlIHNlbnNvciBhbmQgVnJlZmludCBjaGFubmVsKi8KKyAgICBBREMxLT5DUjIgfD0gQ1IyX1RTVlJFRkVfU2V0OworICB9CisgIGVsc2UKKyAgeworICAgIC8qIERpc2FibGUgdGhlIHRlbXBlcmF0dXJlIHNlbnNvciBhbmQgVnJlZmludCBjaGFubmVsKi8KKyAgICBBREMxLT5DUjIgJj0gQ1IyX1RTVlJFRkVfUmVzZXQ7CisgIH0KK30KKworLyoqCisgICogQGJyaWVmICBDaGVja3Mgd2hldGhlciB0aGUgc3BlY2lmaWVkIEFEQyBmbGFnIGlzIHNldCBvciBub3QuCisgICogQHBhcmFtICBBREN4OiB3aGVyZSB4IGNhbiBiZSAxLCAyIG9yIDMgdG8gc2VsZWN0IHRoZSBBREMgcGVyaXBoZXJhbC4KKyAgKiBAcGFyYW0gIEFEQ19GTEFHOiBzcGVjaWZpZXMgdGhlIGZsYWcgdG8gY2hlY2suIAorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBBRENfRkxBR19BV0Q6IEFuYWxvZyB3YXRjaGRvZyBmbGFnCisgICogICAgIEBhcmcgQURDX0ZMQUdfRU9DOiBFbmQgb2YgY29udmVyc2lvbiBmbGFnCisgICogICAgIEBhcmcgQURDX0ZMQUdfSkVPQzogRW5kIG9mIGluamVjdGVkIGdyb3VwIGNvbnZlcnNpb24gZmxhZworICAqICAgICBAYXJnIEFEQ19GTEFHX0pTVFJUOiBTdGFydCBvZiBpbmplY3RlZCBncm91cCBjb252ZXJzaW9uIGZsYWcKKyAgKiAgICAgQGFyZyBBRENfRkxBR19TVFJUOiBTdGFydCBvZiByZWd1bGFyIGdyb3VwIGNvbnZlcnNpb24gZmxhZworICAqIEByZXR2YWwgVGhlIG5ldyBzdGF0ZSBvZiBBRENfRkxBRyAoU0VUIG9yIFJFU0VUKS4KKyAgKi8KK0ZsYWdTdGF0dXMgQURDX0dldEZsYWdTdGF0dXMoQURDX1R5cGVEZWYqIEFEQ3gsIHVpbnQ4X3QgQURDX0ZMQUcpCit7CisgIEZsYWdTdGF0dXMgYml0c3RhdHVzID0gUkVTRVQ7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19BRENfQUxMX1BFUklQSChBREN4KSk7CisgIGFzc2VydF9wYXJhbShJU19BRENfR0VUX0ZMQUcoQURDX0ZMQUcpKTsKKyAgLyogQ2hlY2sgdGhlIHN0YXR1cyBvZiB0aGUgc3BlY2lmaWVkIEFEQyBmbGFnICovCisgIGlmICgoQURDeC0+U1IgJiBBRENfRkxBRykgIT0gKHVpbnQ4X3QpUkVTRVQpCisgIHsKKyAgICAvKiBBRENfRkxBRyBpcyBzZXQgKi8KKyAgICBiaXRzdGF0dXMgPSBTRVQ7CisgIH0KKyAgZWxzZQorICB7CisgICAgLyogQURDX0ZMQUcgaXMgcmVzZXQgKi8KKyAgICBiaXRzdGF0dXMgPSBSRVNFVDsKKyAgfQorICAvKiBSZXR1cm4gdGhlIEFEQ19GTEFHIHN0YXR1cyAqLworICByZXR1cm4gIGJpdHN0YXR1czsKK30KKworLyoqCisgICogQGJyaWVmICBDbGVhcnMgdGhlIEFEQ3gncyBwZW5kaW5nIGZsYWdzLgorICAqIEBwYXJhbSAgQURDeDogd2hlcmUgeCBjYW4gYmUgMSwgMiBvciAzIHRvIHNlbGVjdCB0aGUgQURDIHBlcmlwaGVyYWwuCisgICogQHBhcmFtICBBRENfRkxBRzogc3BlY2lmaWVzIHRoZSBmbGFnIHRvIGNsZWFyLiAKKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhbnkgY29tYmluYXRpb24gb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICAgIEBhcmcgQURDX0ZMQUdfQVdEOiBBbmFsb2cgd2F0Y2hkb2cgZmxhZworICAqICAgICBAYXJnIEFEQ19GTEFHX0VPQzogRW5kIG9mIGNvbnZlcnNpb24gZmxhZworICAqICAgICBAYXJnIEFEQ19GTEFHX0pFT0M6IEVuZCBvZiBpbmplY3RlZCBncm91cCBjb252ZXJzaW9uIGZsYWcKKyAgKiAgICAgQGFyZyBBRENfRkxBR19KU1RSVDogU3RhcnQgb2YgaW5qZWN0ZWQgZ3JvdXAgY29udmVyc2lvbiBmbGFnCisgICogICAgIEBhcmcgQURDX0ZMQUdfU1RSVDogU3RhcnQgb2YgcmVndWxhciBncm91cCBjb252ZXJzaW9uIGZsYWcKKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgQURDX0NsZWFyRmxhZyhBRENfVHlwZURlZiogQURDeCwgdWludDhfdCBBRENfRkxBRykKK3sKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX0FEQ19BTExfUEVSSVBIKEFEQ3gpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0FEQ19DTEVBUl9GTEFHKEFEQ19GTEFHKSk7CisgIC8qIENsZWFyIHRoZSBzZWxlY3RlZCBBREMgZmxhZ3MgKi8KKyAgQURDeC0+U1IgPSB+KHVpbnQzMl90KUFEQ19GTEFHOworfQorCisvKioKKyAgKiBAYnJpZWYgIENoZWNrcyB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgQURDIGludGVycnVwdCBoYXMgb2NjdXJyZWQgb3Igbm90LgorICAqIEBwYXJhbSAgQURDeDogd2hlcmUgeCBjYW4gYmUgMSwgMiBvciAzIHRvIHNlbGVjdCB0aGUgQURDIHBlcmlwaGVyYWwuCisgICogQHBhcmFtICBBRENfSVQ6IHNwZWNpZmllcyB0aGUgQURDIGludGVycnVwdCBzb3VyY2UgdG8gY2hlY2suIAorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBBRENfSVRfRU9DOiBFbmQgb2YgY29udmVyc2lvbiBpbnRlcnJ1cHQgbWFzaworICAqICAgICBAYXJnIEFEQ19JVF9BV0Q6IEFuYWxvZyB3YXRjaGRvZyBpbnRlcnJ1cHQgbWFzaworICAqICAgICBAYXJnIEFEQ19JVF9KRU9DOiBFbmQgb2YgaW5qZWN0ZWQgY29udmVyc2lvbiBpbnRlcnJ1cHQgbWFzaworICAqIEByZXR2YWwgVGhlIG5ldyBzdGF0ZSBvZiBBRENfSVQgKFNFVCBvciBSRVNFVCkuCisgICovCitJVFN0YXR1cyBBRENfR2V0SVRTdGF0dXMoQURDX1R5cGVEZWYqIEFEQ3gsIHVpbnQxNl90IEFEQ19JVCkKK3sKKyAgSVRTdGF0dXMgYml0c3RhdHVzID0gUkVTRVQ7CisgIHVpbnQzMl90IGl0bWFzayA9IDAsIGVuYWJsZXN0YXR1cyA9IDA7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19BRENfQUxMX1BFUklQSChBREN4KSk7CisgIGFzc2VydF9wYXJhbShJU19BRENfR0VUX0lUKEFEQ19JVCkpOworICAvKiBHZXQgdGhlIEFEQyBJVCBpbmRleCAqLworICBpdG1hc2sgPSBBRENfSVQgPj4gODsKKyAgLyogR2V0IHRoZSBBRENfSVQgZW5hYmxlIGJpdCBzdGF0dXMgKi8KKyAgZW5hYmxlc3RhdHVzID0gKEFEQ3gtPkNSMSAmICh1aW50OF90KUFEQ19JVCkgOworICAvKiBDaGVjayB0aGUgc3RhdHVzIG9mIHRoZSBzcGVjaWZpZWQgQURDIGludGVycnVwdCAqLworICBpZiAoKChBREN4LT5TUiAmIGl0bWFzaykgIT0gKHVpbnQzMl90KVJFU0VUKSAmJiBlbmFibGVzdGF0dXMpCisgIHsKKyAgICAvKiBBRENfSVQgaXMgc2V0ICovCisgICAgYml0c3RhdHVzID0gU0VUOworICB9CisgIGVsc2UKKyAgeworICAgIC8qIEFEQ19JVCBpcyByZXNldCAqLworICAgIGJpdHN0YXR1cyA9IFJFU0VUOworICB9CisgIC8qIFJldHVybiB0aGUgQURDX0lUIHN0YXR1cyAqLworICByZXR1cm4gIGJpdHN0YXR1czsKK30KKworLyoqCisgICogQGJyaWVmICBDbGVhcnMgdGhlIEFEQ3gncyBpbnRlcnJ1cHQgcGVuZGluZyBiaXRzLgorICAqIEBwYXJhbSAgQURDeDogd2hlcmUgeCBjYW4gYmUgMSwgMiBvciAzIHRvIHNlbGVjdCB0aGUgQURDIHBlcmlwaGVyYWwuCisgICogQHBhcmFtICBBRENfSVQ6IHNwZWNpZmllcyB0aGUgQURDIGludGVycnVwdCBwZW5kaW5nIGJpdCB0byBjbGVhci4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhbnkgY29tYmluYXRpb24gb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICAgIEBhcmcgQURDX0lUX0VPQzogRW5kIG9mIGNvbnZlcnNpb24gaW50ZXJydXB0IG1hc2sKKyAgKiAgICAgQGFyZyBBRENfSVRfQVdEOiBBbmFsb2cgd2F0Y2hkb2cgaW50ZXJydXB0IG1hc2sKKyAgKiAgICAgQGFyZyBBRENfSVRfSkVPQzogRW5kIG9mIGluamVjdGVkIGNvbnZlcnNpb24gaW50ZXJydXB0IG1hc2sKKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgQURDX0NsZWFySVRQZW5kaW5nQml0KEFEQ19UeXBlRGVmKiBBREN4LCB1aW50MTZfdCBBRENfSVQpCit7CisgIHVpbnQ4X3QgaXRtYXNrID0gMDsKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX0FEQ19BTExfUEVSSVBIKEFEQ3gpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0FEQ19JVChBRENfSVQpKTsKKyAgLyogR2V0IHRoZSBBREMgSVQgaW5kZXggKi8KKyAgaXRtYXNrID0gKHVpbnQ4X3QpKEFEQ19JVCA+PiA4KTsKKyAgLyogQ2xlYXIgdGhlIHNlbGVjdGVkIEFEQyBpbnRlcnJ1cHQgcGVuZGluZyBiaXRzICovCisgIEFEQ3gtPlNSID0gfih1aW50MzJfdClpdG1hc2s7Cit9CisKKy8qKgorICAqIEB9CisgICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgMjAxMSBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9zdF9md19saWIvc3JjL3N0bTMyZjEweF9ia3AuYyBiL3N0X2Z3X2xpYi9zcmMvc3RtMzJmMTB4X2JrcC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5N2VlY2MKLS0tIC9kZXYvbnVsbAorKysgYi9zdF9md19saWIvc3JjL3N0bTMyZjEweF9ia3AuYwpAQCAtMCwwICsxLDMwOCBAQAorLyoqCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqIEBmaWxlICAgIHN0bTMyZjEweF9ia3AuYworICAqIEBhdXRob3IgIE1DRCBBcHBsaWNhdGlvbiBUZWFtCisgICogQHZlcnNpb24gVjMuNS4wCisgICogQGRhdGUgICAgMTEtTWFyY2gtMjAxMQorICAqIEBicmllZiAgIFRoaXMgZmlsZSBwcm92aWRlcyBhbGwgdGhlIEJLUCBmaXJtd2FyZSBmdW5jdGlvbnMuCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqIEBhdHRlbnRpb24KKyAgKgorICAqIFRIRSBQUkVTRU5UIEZJUk1XQVJFIFdISUNIIElTIEZPUiBHVUlEQU5DRSBPTkxZIEFJTVMgQVQgUFJPVklESU5HIENVU1RPTUVSUworICAqIFdJVEggQ09ESU5HIElORk9STUFUSU9OIFJFR0FSRElORyBUSEVJUiBQUk9EVUNUUyBJTiBPUkRFUiBGT1IgVEhFTSBUTyBTQVZFCisgICogVElNRS4gQVMgQSBSRVNVTFQsIFNUTUlDUk9FTEVDVFJPTklDUyBTSEFMTCBOT1QgQkUgSEVMRCBMSUFCTEUgRk9SIEFOWQorICAqIERJUkVDVCwgSU5ESVJFQ1QgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIFdJVEggUkVTUEVDVCBUTyBBTlkgQ0xBSU1TIEFSSVNJTkcKKyAgKiBGUk9NIFRIRSBDT05URU5UIE9GIFNVQ0ggRklSTVdBUkUgQU5EL09SIFRIRSBVU0UgTUFERSBCWSBDVVNUT01FUlMgT0YgVEhFCisgICogQ09ESU5HIElORk9STUFUSU9OIENPTlRBSU5FRCBIRVJFSU4gSU4gQ09OTkVDVElPTiBXSVRIIFRIRUlSIFBST0RVQ1RTLgorICAqCisgICogPGgyPjxjZW50ZXI+JmNvcHk7IENPUFlSSUdIVCAyMDExIFNUTWljcm9lbGVjdHJvbmljczwvY2VudGVyPjwvaDI+CisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqLworCisvKiBJbmNsdWRlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworI2luY2x1ZGUgInN0bTMyZjEweF9ia3AuaCIKKyNpbmNsdWRlICJzdG0zMmYxMHhfcmNjLmgiCisKKy8qKiBAYWRkdG9ncm91cCBTVE0zMkYxMHhfU3RkUGVyaXBoX0RyaXZlcgorICAqIEB7CisgICovCisKKy8qKiBAZGVmZ3JvdXAgQktQIAorICAqIEBicmllZiBCS1AgZHJpdmVyIG1vZHVsZXMKKyAgKiBAeworICAqLworCisvKiogQGRlZmdyb3VwIEJLUF9Qcml2YXRlX1R5cGVzRGVmaW5pdGlvbnMKKyAgKiBAeworICAqLworCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIEJLUF9Qcml2YXRlX0RlZmluZXMKKyAgKiBAeworICAqLworCisvKiAtLS0tLS0tLS0tLS0gQktQIHJlZ2lzdGVycyBiaXQgYWRkcmVzcyBpbiB0aGUgYWxpYXMgcmVnaW9uIC0tLS0tLS0tLS0tLS0tLSAqLworI2RlZmluZSBCS1BfT0ZGU0VUICAgICAgICAoQktQX0JBU0UgLSBQRVJJUEhfQkFTRSkKKworLyogLS0tIENSIFJlZ2lzdGVyIC0tLS0qLworCisvKiBBbGlhcyB3b3JkIGFkZHJlc3Mgb2YgVFBBTCBiaXQgKi8KKyNkZWZpbmUgQ1JfT0ZGU0VUICAgICAgICAgKEJLUF9PRkZTRVQgKyAweDMwKQorI2RlZmluZSBUUEFMX0JpdE51bWJlciAgICAweDAxCisjZGVmaW5lIENSX1RQQUxfQkIgICAgICAgIChQRVJJUEhfQkJfQkFTRSArIChDUl9PRkZTRVQgKiAzMikgKyAoVFBBTF9CaXROdW1iZXIgKiA0KSkKKworLyogQWxpYXMgd29yZCBhZGRyZXNzIG9mIFRQRSBiaXQgKi8KKyNkZWZpbmUgVFBFX0JpdE51bWJlciAgICAgMHgwMAorI2RlZmluZSBDUl9UUEVfQkIgICAgICAgICAoUEVSSVBIX0JCX0JBU0UgKyAoQ1JfT0ZGU0VUICogMzIpICsgKFRQRV9CaXROdW1iZXIgKiA0KSkKKworLyogLS0tIENTUiBSZWdpc3RlciAtLS0qLworCisvKiBBbGlhcyB3b3JkIGFkZHJlc3Mgb2YgVFBJRSBiaXQgKi8KKyNkZWZpbmUgQ1NSX09GRlNFVCAgICAgICAgKEJLUF9PRkZTRVQgKyAweDM0KQorI2RlZmluZSBUUElFX0JpdE51bWJlciAgICAweDAyCisjZGVmaW5lIENTUl9UUElFX0JCICAgICAgIChQRVJJUEhfQkJfQkFTRSArIChDU1JfT0ZGU0VUICogMzIpICsgKFRQSUVfQml0TnVtYmVyICogNCkpCisKKy8qIEFsaWFzIHdvcmQgYWRkcmVzcyBvZiBUSUYgYml0ICovCisjZGVmaW5lIFRJRl9CaXROdW1iZXIgICAgIDB4MDkKKyNkZWZpbmUgQ1NSX1RJRl9CQiAgICAgICAgKFBFUklQSF9CQl9CQVNFICsgKENTUl9PRkZTRVQgKiAzMikgKyAoVElGX0JpdE51bWJlciAqIDQpKQorCisvKiBBbGlhcyB3b3JkIGFkZHJlc3Mgb2YgVEVGIGJpdCAqLworI2RlZmluZSBURUZfQml0TnVtYmVyICAgICAweDA4CisjZGVmaW5lIENTUl9URUZfQkIgICAgICAgIChQRVJJUEhfQkJfQkFTRSArIChDU1JfT0ZGU0VUICogMzIpICsgKFRFRl9CaXROdW1iZXIgKiA0KSkKKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBCS1AgcmVnaXN0ZXJzIGJpdCBtYXNrIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisvKiBSVENDUiByZWdpc3RlciBiaXQgbWFzayAqLworI2RlZmluZSBSVENDUl9DQUxfTUFTSyAgICAoKHVpbnQxNl90KTB4RkY4MCkKKyNkZWZpbmUgUlRDQ1JfTUFTSyAgICAgICAgKCh1aW50MTZfdCkweEZDN0YpCisKKy8qKgorICAqIEB9CisgICovIAorCisKKy8qKiBAZGVmZ3JvdXAgQktQX1ByaXZhdGVfTWFjcm9zCisgICogQHsKKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBCS1BfUHJpdmF0ZV9WYXJpYWJsZXMKKyAgKiBAeworICAqLworCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIEJLUF9Qcml2YXRlX0Z1bmN0aW9uUHJvdG90eXBlcworICAqIEB7CisgICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgQktQX1ByaXZhdGVfRnVuY3Rpb25zCisgICogQHsKKyAgKi8KKworLyoqCisgICogQGJyaWVmICBEZWluaXRpYWxpemVzIHRoZSBCS1AgcGVyaXBoZXJhbCByZWdpc3RlcnMgdG8gdGhlaXIgZGVmYXVsdCByZXNldCB2YWx1ZXMuCisgICogQHBhcmFtICBOb25lCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIEJLUF9EZUluaXQodm9pZCkKK3sKKyAgUkNDX0JhY2t1cFJlc2V0Q21kKEVOQUJMRSk7CisgIFJDQ19CYWNrdXBSZXNldENtZChESVNBQkxFKTsKK30KKworLyoqCisgICogQGJyaWVmICBDb25maWd1cmVzIHRoZSBUYW1wZXIgUGluIGFjdGl2ZSBsZXZlbC4KKyAgKiBAcGFyYW0gIEJLUF9UYW1wZXJQaW5MZXZlbDogc3BlY2lmaWVzIHRoZSBUYW1wZXIgUGluIGFjdGl2ZSBsZXZlbC4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICAgIEBhcmcgQktQX1RhbXBlclBpbkxldmVsX0hpZ2g6IFRhbXBlciBwaW4gYWN0aXZlIG9uIGhpZ2ggbGV2ZWwKKyAgKiAgICAgQGFyZyBCS1BfVGFtcGVyUGluTGV2ZWxfTG93OiBUYW1wZXIgcGluIGFjdGl2ZSBvbiBsb3cgbGV2ZWwKKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgQktQX1RhbXBlclBpbkxldmVsQ29uZmlnKHVpbnQxNl90IEJLUF9UYW1wZXJQaW5MZXZlbCkKK3sKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX0JLUF9UQU1QRVJfUElOX0xFVkVMKEJLUF9UYW1wZXJQaW5MZXZlbCkpOworICAqKF9fSU8gdWludDMyX3QgKikgQ1JfVFBBTF9CQiA9IEJLUF9UYW1wZXJQaW5MZXZlbDsKK30KKworLyoqCisgICogQGJyaWVmICBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBUYW1wZXIgUGluIGFjdGl2YXRpb24uCisgICogQHBhcmFtICBOZXdTdGF0ZTogbmV3IHN0YXRlIG9mIHRoZSBUYW1wZXIgUGluIGFjdGl2YXRpb24uCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmU6IEVOQUJMRSBvciBESVNBQkxFLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBCS1BfVGFtcGVyUGluQ21kKEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSkKK3sKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX0ZVTkNUSU9OQUxfU1RBVEUoTmV3U3RhdGUpKTsKKyAgKihfX0lPIHVpbnQzMl90ICopIENSX1RQRV9CQiA9ICh1aW50MzJfdClOZXdTdGF0ZTsKK30KKworLyoqCisgICogQGJyaWVmICBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBUYW1wZXIgUGluIEludGVycnVwdC4KKyAgKiBAcGFyYW0gIE5ld1N0YXRlOiBuZXcgc3RhdGUgb2YgdGhlIFRhbXBlciBQaW4gSW50ZXJydXB0LgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlOiBFTkFCTEUgb3IgRElTQUJMRS4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgQktQX0lUQ29uZmlnKEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSkKK3sKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX0ZVTkNUSU9OQUxfU1RBVEUoTmV3U3RhdGUpKTsKKyAgKihfX0lPIHVpbnQzMl90ICopIENTUl9UUElFX0JCID0gKHVpbnQzMl90KU5ld1N0YXRlOworfQorCisvKioKKyAgKiBAYnJpZWYgIFNlbGVjdCB0aGUgUlRDIG91dHB1dCBzb3VyY2UgdG8gb3V0cHV0IG9uIHRoZSBUYW1wZXIgcGluLgorICAqIEBwYXJhbSAgQktQX1JUQ091dHB1dFNvdXJjZTogc3BlY2lmaWVzIHRoZSBSVEMgb3V0cHV0IHNvdXJjZS4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICAgIEBhcmcgQktQX1JUQ091dHB1dFNvdXJjZV9Ob25lOiBubyBSVEMgb3V0cHV0IG9uIHRoZSBUYW1wZXIgcGluLgorICAqICAgICBAYXJnIEJLUF9SVENPdXRwdXRTb3VyY2VfQ2FsaWJDbG9jazogb3V0cHV0IHRoZSBSVEMgY2xvY2sgd2l0aCBmcmVxdWVuY3kKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpdmlkZWQgYnkgNjQgb24gdGhlIFRhbXBlciBwaW4uCisgICogICAgIEBhcmcgQktQX1JUQ091dHB1dFNvdXJjZV9BbGFybTogb3V0cHV0IHRoZSBSVEMgQWxhcm0gcHVsc2Ugc2lnbmFsIG9uCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIFRhbXBlciBwaW4uCisgICogICAgIEBhcmcgQktQX1JUQ091dHB1dFNvdXJjZV9TZWNvbmQ6IG91dHB1dCB0aGUgUlRDIFNlY29uZCBwdWxzZSBzaWduYWwgb24KKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIFRhbXBlciBwaW4uICAKKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgQktQX1JUQ091dHB1dENvbmZpZyh1aW50MTZfdCBCS1BfUlRDT3V0cHV0U291cmNlKQoreworICB1aW50MTZfdCB0bXByZWcgPSAwOworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfQktQX1JUQ19PVVRQVVRfU09VUkNFKEJLUF9SVENPdXRwdXRTb3VyY2UpKTsKKyAgdG1wcmVnID0gQktQLT5SVENDUjsKKyAgLyogQ2xlYXIgQ0NPLCBBU09FIGFuZCBBU09TIGJpdHMgKi8KKyAgdG1wcmVnICY9IFJUQ0NSX01BU0s7CisgIAorICAvKiBTZXQgQ0NPLCBBU09FIGFuZCBBU09TIGJpdHMgYWNjb3JkaW5nIHRvIEJLUF9SVENPdXRwdXRTb3VyY2UgdmFsdWUgKi8KKyAgdG1wcmVnIHw9IEJLUF9SVENPdXRwdXRTb3VyY2U7CisgIC8qIFN0b3JlIHRoZSBuZXcgdmFsdWUgKi8KKyAgQktQLT5SVENDUiA9IHRtcHJlZzsKK30KKworLyoqCisgICogQGJyaWVmICBTZXRzIFJUQyBDbG9jayBDYWxpYnJhdGlvbiB2YWx1ZS4KKyAgKiBAcGFyYW0gIENhbGlicmF0aW9uVmFsdWU6IHNwZWNpZmllcyB0aGUgUlRDIENsb2NrIENhbGlicmF0aW9uIHZhbHVlLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgbXVzdCBiZSBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDB4N0YuCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIEJLUF9TZXRSVENDYWxpYnJhdGlvblZhbHVlKHVpbnQ4X3QgQ2FsaWJyYXRpb25WYWx1ZSkKK3sKKyAgdWludDE2X3QgdG1wcmVnID0gMDsKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX0JLUF9DQUxJQlJBVElPTl9WQUxVRShDYWxpYnJhdGlvblZhbHVlKSk7CisgIHRtcHJlZyA9IEJLUC0+UlRDQ1I7CisgIC8qIENsZWFyIENBTFs2OjBdIGJpdHMgKi8KKyAgdG1wcmVnICY9IFJUQ0NSX0NBTF9NQVNLOworICAvKiBTZXQgQ0FMWzY6MF0gYml0cyBhY2NvcmRpbmcgdG8gQ2FsaWJyYXRpb25WYWx1ZSB2YWx1ZSAqLworICB0bXByZWcgfD0gQ2FsaWJyYXRpb25WYWx1ZTsKKyAgLyogU3RvcmUgdGhlIG5ldyB2YWx1ZSAqLworICBCS1AtPlJUQ0NSID0gdG1wcmVnOworfQorCisvKioKKyAgKiBAYnJpZWYgIFdyaXRlcyB1c2VyIGRhdGEgdG8gdGhlIHNwZWNpZmllZCBEYXRhIEJhY2t1cCBSZWdpc3Rlci4KKyAgKiBAcGFyYW0gIEJLUF9EUjogc3BlY2lmaWVzIHRoZSBEYXRhIEJhY2t1cCBSZWdpc3Rlci4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBCS1BfRFJ4IHdoZXJlIHg6WzEsIDQyXQorICAqIEBwYXJhbSAgRGF0YTogZGF0YSB0byB3cml0ZQorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBCS1BfV3JpdGVCYWNrdXBSZWdpc3Rlcih1aW50MTZfdCBCS1BfRFIsIHVpbnQxNl90IERhdGEpCit7CisgIF9fSU8gdWludDMyX3QgdG1wID0gMDsKKworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfQktQX0RSKEJLUF9EUikpOworCisgIHRtcCA9ICh1aW50MzJfdClCS1BfQkFTRTsgCisgIHRtcCArPSBCS1BfRFI7CisKKyAgKihfX0lPIHVpbnQzMl90ICopIHRtcCA9IERhdGE7Cit9CisKKy8qKgorICAqIEBicmllZiAgUmVhZHMgZGF0YSBmcm9tIHRoZSBzcGVjaWZpZWQgRGF0YSBCYWNrdXAgUmVnaXN0ZXIuCisgICogQHBhcmFtICBCS1BfRFI6IHNwZWNpZmllcyB0aGUgRGF0YSBCYWNrdXAgUmVnaXN0ZXIuCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgQktQX0RSeCB3aGVyZSB4OlsxLCA0Ml0KKyAgKiBAcmV0dmFsIFRoZSBjb250ZW50IG9mIHRoZSBzcGVjaWZpZWQgRGF0YSBCYWNrdXAgUmVnaXN0ZXIKKyAgKi8KK3VpbnQxNl90IEJLUF9SZWFkQmFja3VwUmVnaXN0ZXIodWludDE2X3QgQktQX0RSKQoreworICBfX0lPIHVpbnQzMl90IHRtcCA9IDA7CisKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX0JLUF9EUihCS1BfRFIpKTsKKworICB0bXAgPSAodWludDMyX3QpQktQX0JBU0U7IAorICB0bXAgKz0gQktQX0RSOworCisgIHJldHVybiAoKihfX0lPIHVpbnQxNl90ICopIHRtcCk7Cit9CisKKy8qKgorICAqIEBicmllZiAgQ2hlY2tzIHdoZXRoZXIgdGhlIFRhbXBlciBQaW4gRXZlbnQgZmxhZyBpcyBzZXQgb3Igbm90LgorICAqIEBwYXJhbSAgTm9uZQorICAqIEByZXR2YWwgVGhlIG5ldyBzdGF0ZSBvZiB0aGUgVGFtcGVyIFBpbiBFdmVudCBmbGFnIChTRVQgb3IgUkVTRVQpLgorICAqLworRmxhZ1N0YXR1cyBCS1BfR2V0RmxhZ1N0YXR1cyh2b2lkKQoreworICByZXR1cm4gKEZsYWdTdGF0dXMpKCooX19JTyB1aW50MzJfdCAqKSBDU1JfVEVGX0JCKTsKK30KKworLyoqCisgICogQGJyaWVmICBDbGVhcnMgVGFtcGVyIFBpbiBFdmVudCBwZW5kaW5nIGZsYWcuCisgICogQHBhcmFtICBOb25lCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIEJLUF9DbGVhckZsYWcodm9pZCkKK3sKKyAgLyogU2V0IENURSBiaXQgdG8gY2xlYXIgVGFtcGVyIFBpbiBFdmVudCBmbGFnICovCisgIEJLUC0+Q1NSIHw9IEJLUF9DU1JfQ1RFOworfQorCisvKioKKyAgKiBAYnJpZWYgIENoZWNrcyB3aGV0aGVyIHRoZSBUYW1wZXIgUGluIEludGVycnVwdCBoYXMgb2NjdXJyZWQgb3Igbm90LgorICAqIEBwYXJhbSAgTm9uZQorICAqIEByZXR2YWwgVGhlIG5ldyBzdGF0ZSBvZiB0aGUgVGFtcGVyIFBpbiBJbnRlcnJ1cHQgKFNFVCBvciBSRVNFVCkuCisgICovCitJVFN0YXR1cyBCS1BfR2V0SVRTdGF0dXModm9pZCkKK3sKKyAgcmV0dXJuIChJVFN0YXR1cykoKihfX0lPIHVpbnQzMl90ICopIENTUl9USUZfQkIpOworfQorCisvKioKKyAgKiBAYnJpZWYgIENsZWFycyBUYW1wZXIgUGluIEludGVycnVwdCBwZW5kaW5nIGJpdC4KKyAgKiBAcGFyYW0gIE5vbmUKKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgQktQX0NsZWFySVRQZW5kaW5nQml0KHZvaWQpCit7CisgIC8qIFNldCBDVEkgYml0IHRvIGNsZWFyIFRhbXBlciBQaW4gSW50ZXJydXB0IHBlbmRpbmcgYml0ICovCisgIEJLUC0+Q1NSIHw9IEJLUF9DU1JfQ1RJOworfQorCisvKioKKyAgKiBAfQorICAqLworCisvKioKKyAgKiBAfQorICAqLworCisvKioKKyAgKiBAfQorICAqLworCisvKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIDIwMTEgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvc3RfZndfbGliL3NyYy9zdG0zMmYxMHhfY2FuLmMgYi9zdF9md19saWIvc3JjL3N0bTMyZjEweF9jYW4uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYzhlMDQ5Ci0tLSAvZGV2L251bGwKKysrIGIvc3RfZndfbGliL3NyYy9zdG0zMmYxMHhfY2FuLmMKQEAgLTAsMCArMSwxNDE1IEBACisvKioKKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICogQGZpbGUgICAgc3RtMzJmMTB4X2Nhbi5jCisgICogQGF1dGhvciAgTUNEIEFwcGxpY2F0aW9uIFRlYW0KKyAgKiBAdmVyc2lvbiBWMy41LjAKKyAgKiBAZGF0ZSAgICAxMS1NYXJjaC0yMDExCisgICogQGJyaWVmICAgVGhpcyBmaWxlIHByb3ZpZGVzIGFsbCB0aGUgQ0FOIGZpcm13YXJlIGZ1bmN0aW9ucy4KKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICogQGF0dGVudGlvbgorICAqCisgICogVEhFIFBSRVNFTlQgRklSTVdBUkUgV0hJQ0ggSVMgRk9SIEdVSURBTkNFIE9OTFkgQUlNUyBBVCBQUk9WSURJTkcgQ1VTVE9NRVJTCisgICogV0lUSCBDT0RJTkcgSU5GT1JNQVRJT04gUkVHQVJESU5HIFRIRUlSIFBST0RVQ1RTIElOIE9SREVSIEZPUiBUSEVNIFRPIFNBVkUKKyAgKiBUSU1FLiBBUyBBIFJFU1VMVCwgU1RNSUNST0VMRUNUUk9OSUNTIFNIQUxMIE5PVCBCRSBIRUxEIExJQUJMRSBGT1IgQU5ZCisgICogRElSRUNULCBJTkRJUkVDVCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgV0lUSCBSRVNQRUNUIFRPIEFOWSBDTEFJTVMgQVJJU0lORworICAqIEZST00gVEhFIENPTlRFTlQgT0YgU1VDSCBGSVJNV0FSRSBBTkQvT1IgVEhFIFVTRSBNQURFIEJZIENVU1RPTUVSUyBPRiBUSEUKKyAgKiBDT0RJTkcgSU5GT1JNQVRJT04gQ09OVEFJTkVEIEhFUkVJTiBJTiBDT05ORUNUSU9OIFdJVEggVEhFSVIgUFJPRFVDVFMuCisgICoKKyAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ09QWVJJR0hUIDIwMTEgU1RNaWNyb2VsZWN0cm9uaWNzPC9jZW50ZXI+PC9oMj4KKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICovCisKKy8qIEluY2x1ZGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisjaW5jbHVkZSAic3RtMzJmMTB4X2Nhbi5oIgorI2luY2x1ZGUgInN0bTMyZjEweF9yY2MuaCIKKworLyoqIEBhZGR0b2dyb3VwIFNUTTMyRjEweF9TdGRQZXJpcGhfRHJpdmVyCisgICogQHsKKyAgKi8KKworLyoqIEBkZWZncm91cCBDQU4gCisgICogQGJyaWVmIENBTiBkcml2ZXIgbW9kdWxlcworICAqIEB7CisgICovIAorCisvKiogQGRlZmdyb3VwIENBTl9Qcml2YXRlX1R5cGVzRGVmaW5pdGlvbnMKKyAgKiBAeworICAqLworCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIENBTl9Qcml2YXRlX0RlZmluZXMKKyAgKiBAeworICAqLworCisvKiBDQU4gTWFzdGVyIENvbnRyb2wgUmVnaXN0ZXIgYml0cyAqLworCisjZGVmaW5lIE1DUl9EQkYgICAgICAoKHVpbnQzMl90KTB4MDAwMTAwMDApIC8qIHNvZnR3YXJlIG1hc3RlciByZXNldCAqLworCisvKiBDQU4gTWFpbGJveCBUcmFuc21pdCBSZXF1ZXN0ICovCisjZGVmaW5lIFRNSUR4Ul9UWFJRICAoKHVpbnQzMl90KTB4MDAwMDAwMDEpIC8qIFRyYW5zbWl0IG1haWxib3ggcmVxdWVzdCAqLworCisvKiBDQU4gRmlsdGVyIE1hc3RlciBSZWdpc3RlciBiaXRzICovCisjZGVmaW5lIEZNUl9GSU5JVCAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDEpIC8qIEZpbHRlciBpbml0IG1vZGUgKi8KKworLyogVGltZSBvdXQgZm9yIElOQUsgYml0ICovCisjZGVmaW5lIElOQUtfVElNRU9VVCAgICAgICAgKCh1aW50MzJfdCkweDAwMDBGRkZGKQorLyogVGltZSBvdXQgZm9yIFNMQUsgYml0ICovCisjZGVmaW5lIFNMQUtfVElNRU9VVCAgICAgICAgKCh1aW50MzJfdCkweDAwMDBGRkZGKQorCisKKworLyogRmxhZ3MgaW4gVFNSIHJlZ2lzdGVyICovCisjZGVmaW5lIENBTl9GTEFHU19UU1IgICAgICAgICAgICAgICgodWludDMyX3QpMHgwODAwMDAwMCkgCisvKiBGbGFncyBpbiBSRjFSIHJlZ2lzdGVyICovCisjZGVmaW5lIENBTl9GTEFHU19SRjFSICAgICAgICAgICAgICgodWludDMyX3QpMHgwNDAwMDAwMCkgCisvKiBGbGFncyBpbiBSRjBSIHJlZ2lzdGVyICovCisjZGVmaW5lIENBTl9GTEFHU19SRjBSICAgICAgICAgICAgICgodWludDMyX3QpMHgwMjAwMDAwMCkgCisvKiBGbGFncyBpbiBNU1IgcmVnaXN0ZXIgKi8KKyNkZWZpbmUgQ0FOX0ZMQUdTX01TUiAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAxMDAwMDAwKSAKKy8qIEZsYWdzIGluIEVTUiByZWdpc3RlciAqLworI2RlZmluZSBDQU5fRkxBR1NfRVNSICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDBGMDAwMDApIAorCisvKiBNYWlsYm94ZXMgZGVmaW5pdGlvbiAqLworI2RlZmluZSBDQU5fVFhNQUlMQk9YXzAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MDApCisjZGVmaW5lIENBTl9UWE1BSUxCT1hfMSAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwMSkKKyNkZWZpbmUgQ0FOX1RYTUFJTEJPWF8yICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDAyKSAKKworCisKKyNkZWZpbmUgQ0FOX01PREVfTUFTSyAgICAgICAgICAgICAgKCh1aW50MzJfdCkgMHgwMDAwMDAwMykKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgQ0FOX1ByaXZhdGVfTWFjcm9zCisgICogQHsKKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBDQU5fUHJpdmF0ZV9WYXJpYWJsZXMKKyAgKiBAeworICAqLworCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIENBTl9Qcml2YXRlX0Z1bmN0aW9uUHJvdG90eXBlcworICAqIEB7CisgICovCisKK3N0YXRpYyBJVFN0YXR1cyBDaGVja0lUU3RhdHVzKHVpbnQzMl90IENBTl9SZWcsIHVpbnQzMl90IEl0X0JpdCk7CisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgQ0FOX1ByaXZhdGVfRnVuY3Rpb25zCisgICogQHsKKyAgKi8KKworLyoqCisgICogQGJyaWVmICBEZWluaXRpYWxpemVzIHRoZSBDQU4gcGVyaXBoZXJhbCByZWdpc3RlcnMgdG8gdGhlaXIgZGVmYXVsdCByZXNldCB2YWx1ZXMuCisgICogQHBhcmFtICBDQU54OiB3aGVyZSB4IGNhbiBiZSAxIG9yIDIgdG8gc2VsZWN0IHRoZSBDQU4gcGVyaXBoZXJhbC4KKyAgKiBAcmV0dmFsIE5vbmUuCisgICovCit2b2lkIENBTl9EZUluaXQoQ0FOX1R5cGVEZWYqIENBTngpCit7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19DQU5fQUxMX1BFUklQSChDQU54KSk7CisgCisgIGlmIChDQU54ID09IENBTjEpCisgIHsKKyAgICAvKiBFbmFibGUgQ0FOMSByZXNldCBzdGF0ZSAqLworICAgIFJDQ19BUEIxUGVyaXBoUmVzZXRDbWQoUkNDX0FQQjFQZXJpcGhfQ0FOMSwgRU5BQkxFKTsKKyAgICAvKiBSZWxlYXNlIENBTjEgZnJvbSByZXNldCBzdGF0ZSAqLworICAgIFJDQ19BUEIxUGVyaXBoUmVzZXRDbWQoUkNDX0FQQjFQZXJpcGhfQ0FOMSwgRElTQUJMRSk7CisgIH0KKyAgZWxzZQorICB7ICAKKyAgICAvKiBFbmFibGUgQ0FOMiByZXNldCBzdGF0ZSAqLworICAgIFJDQ19BUEIxUGVyaXBoUmVzZXRDbWQoUkNDX0FQQjFQZXJpcGhfQ0FOMiwgRU5BQkxFKTsKKyAgICAvKiBSZWxlYXNlIENBTjIgZnJvbSByZXNldCBzdGF0ZSAqLworICAgIFJDQ19BUEIxUGVyaXBoUmVzZXRDbWQoUkNDX0FQQjFQZXJpcGhfQ0FOMiwgRElTQUJMRSk7CisgIH0KK30KKworLyoqCisgICogQGJyaWVmICBJbml0aWFsaXplcyB0aGUgQ0FOIHBlcmlwaGVyYWwgYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQKKyAgKiAgICAgICAgIHBhcmFtZXRlcnMgaW4gdGhlIENBTl9Jbml0U3RydWN0LgorICAqIEBwYXJhbSAgQ0FOeDogICAgICAgICAgIHdoZXJlIHggY2FuIGJlIDEgb3IgMiB0byB0byBzZWxlY3QgdGhlIENBTiAKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICBwZXJpcGhlcmFsLgorICAqIEBwYXJhbSAgQ0FOX0luaXRTdHJ1Y3Q6IHBvaW50ZXIgdG8gYSBDQU5fSW5pdFR5cGVEZWYgc3RydWN0dXJlIHRoYXQKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWlucyB0aGUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBmb3IgdGhlIAorICAqICAgICAgICAgICAgICAgICAgICAgICAgIENBTiBwZXJpcGhlcmFsLgorICAqIEByZXR2YWwgQ29uc3RhbnQgaW5kaWNhdGVzIGluaXRpYWxpemF0aW9uIHN1Y2NlZWQgd2hpY2ggd2lsbCBiZSAKKyAgKiAgICAgICAgIENBTl9Jbml0U3RhdHVzX0ZhaWxlZCBvciBDQU5fSW5pdFN0YXR1c19TdWNjZXNzLgorICAqLwordWludDhfdCBDQU5fSW5pdChDQU5fVHlwZURlZiogQ0FOeCwgQ0FOX0luaXRUeXBlRGVmKiBDQU5fSW5pdFN0cnVjdCkKK3sKKyAgdWludDhfdCBJbml0U3RhdHVzID0gQ0FOX0luaXRTdGF0dXNfRmFpbGVkOworICB1aW50MzJfdCB3YWl0X2FjayA9IDB4MDAwMDAwMDA7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19DQU5fQUxMX1BFUklQSChDQU54KSk7CisgIGFzc2VydF9wYXJhbShJU19GVU5DVElPTkFMX1NUQVRFKENBTl9Jbml0U3RydWN0LT5DQU5fVFRDTSkpOworICBhc3NlcnRfcGFyYW0oSVNfRlVOQ1RJT05BTF9TVEFURShDQU5fSW5pdFN0cnVjdC0+Q0FOX0FCT00pKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0ZVTkNUSU9OQUxfU1RBVEUoQ0FOX0luaXRTdHJ1Y3QtPkNBTl9BV1VNKSk7CisgIGFzc2VydF9wYXJhbShJU19GVU5DVElPTkFMX1NUQVRFKENBTl9Jbml0U3RydWN0LT5DQU5fTkFSVCkpOworICBhc3NlcnRfcGFyYW0oSVNfRlVOQ1RJT05BTF9TVEFURShDQU5fSW5pdFN0cnVjdC0+Q0FOX1JGTE0pKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0ZVTkNUSU9OQUxfU1RBVEUoQ0FOX0luaXRTdHJ1Y3QtPkNBTl9UWEZQKSk7CisgIGFzc2VydF9wYXJhbShJU19DQU5fTU9ERShDQU5fSW5pdFN0cnVjdC0+Q0FOX01vZGUpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0NBTl9TSlcoQ0FOX0luaXRTdHJ1Y3QtPkNBTl9TSlcpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0NBTl9CUzEoQ0FOX0luaXRTdHJ1Y3QtPkNBTl9CUzEpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0NBTl9CUzIoQ0FOX0luaXRTdHJ1Y3QtPkNBTl9CUzIpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0NBTl9QUkVTQ0FMRVIoQ0FOX0luaXRTdHJ1Y3QtPkNBTl9QcmVzY2FsZXIpKTsKKworICAvKiBFeGl0IGZyb20gc2xlZXAgbW9kZSAqLworICBDQU54LT5NQ1IgJj0gKH4odWludDMyX3QpQ0FOX01DUl9TTEVFUCk7CisKKyAgLyogUmVxdWVzdCBpbml0aWFsaXNhdGlvbiAqLworICBDQU54LT5NQ1IgfD0gQ0FOX01DUl9JTlJRIDsKKworICAvKiBXYWl0IHRoZSBhY2tub3dsZWRnZSAqLworICB3aGlsZSAoKChDQU54LT5NU1IgJiBDQU5fTVNSX0lOQUspICE9IENBTl9NU1JfSU5BSykgJiYgKHdhaXRfYWNrICE9IElOQUtfVElNRU9VVCkpCisgIHsKKyAgICB3YWl0X2FjaysrOworICB9CisKKyAgLyogQ2hlY2sgYWNrbm93bGVkZ2UgKi8KKyAgaWYgKChDQU54LT5NU1IgJiBDQU5fTVNSX0lOQUspICE9IENBTl9NU1JfSU5BSykKKyAgeworICAgIEluaXRTdGF0dXMgPSBDQU5fSW5pdFN0YXR1c19GYWlsZWQ7CisgIH0KKyAgZWxzZSAKKyAgeworICAgIC8qIFNldCB0aGUgdGltZSB0cmlnZ2VyZWQgY29tbXVuaWNhdGlvbiBtb2RlICovCisgICAgaWYgKENBTl9Jbml0U3RydWN0LT5DQU5fVFRDTSA9PSBFTkFCTEUpCisgICAgeworICAgICAgQ0FOeC0+TUNSIHw9IENBTl9NQ1JfVFRDTTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgIENBTngtPk1DUiAmPSB+KHVpbnQzMl90KUNBTl9NQ1JfVFRDTTsKKyAgICB9CisKKyAgICAvKiBTZXQgdGhlIGF1dG9tYXRpYyBidXMtb2ZmIG1hbmFnZW1lbnQgKi8KKyAgICBpZiAoQ0FOX0luaXRTdHJ1Y3QtPkNBTl9BQk9NID09IEVOQUJMRSkKKyAgICB7CisgICAgICBDQU54LT5NQ1IgfD0gQ0FOX01DUl9BQk9NOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgQ0FOeC0+TUNSICY9IH4odWludDMyX3QpQ0FOX01DUl9BQk9NOworICAgIH0KKworICAgIC8qIFNldCB0aGUgYXV0b21hdGljIHdha2UtdXAgbW9kZSAqLworICAgIGlmIChDQU5fSW5pdFN0cnVjdC0+Q0FOX0FXVU0gPT0gRU5BQkxFKQorICAgIHsKKyAgICAgIENBTngtPk1DUiB8PSBDQU5fTUNSX0FXVU07CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICBDQU54LT5NQ1IgJj0gfih1aW50MzJfdClDQU5fTUNSX0FXVU07CisgICAgfQorCisgICAgLyogU2V0IHRoZSBubyBhdXRvbWF0aWMgcmV0cmFuc21pc3Npb24gKi8KKyAgICBpZiAoQ0FOX0luaXRTdHJ1Y3QtPkNBTl9OQVJUID09IEVOQUJMRSkKKyAgICB7CisgICAgICBDQU54LT5NQ1IgfD0gQ0FOX01DUl9OQVJUOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgQ0FOeC0+TUNSICY9IH4odWludDMyX3QpQ0FOX01DUl9OQVJUOworICAgIH0KKworICAgIC8qIFNldCB0aGUgcmVjZWl2ZSBGSUZPIGxvY2tlZCBtb2RlICovCisgICAgaWYgKENBTl9Jbml0U3RydWN0LT5DQU5fUkZMTSA9PSBFTkFCTEUpCisgICAgeworICAgICAgQ0FOeC0+TUNSIHw9IENBTl9NQ1JfUkZMTTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgIENBTngtPk1DUiAmPSB+KHVpbnQzMl90KUNBTl9NQ1JfUkZMTTsKKyAgICB9CisKKyAgICAvKiBTZXQgdGhlIHRyYW5zbWl0IEZJRk8gcHJpb3JpdHkgKi8KKyAgICBpZiAoQ0FOX0luaXRTdHJ1Y3QtPkNBTl9UWEZQID09IEVOQUJMRSkKKyAgICB7CisgICAgICBDQU54LT5NQ1IgfD0gQ0FOX01DUl9UWEZQOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgQ0FOeC0+TUNSICY9IH4odWludDMyX3QpQ0FOX01DUl9UWEZQOworICAgIH0KKworICAgIC8qIFNldCB0aGUgYml0IHRpbWluZyByZWdpc3RlciAqLworICAgIENBTngtPkJUUiA9ICh1aW50MzJfdCkoKHVpbnQzMl90KUNBTl9Jbml0U3RydWN0LT5DQU5fTW9kZSA8PCAzMCkgfCBcCisgICAgICAgICAgICAgICAgKCh1aW50MzJfdClDQU5fSW5pdFN0cnVjdC0+Q0FOX1NKVyA8PCAyNCkgfCBcCisgICAgICAgICAgICAgICAgKCh1aW50MzJfdClDQU5fSW5pdFN0cnVjdC0+Q0FOX0JTMSA8PCAxNikgfCBcCisgICAgICAgICAgICAgICAgKCh1aW50MzJfdClDQU5fSW5pdFN0cnVjdC0+Q0FOX0JTMiA8PCAyMCkgfCBcCisgICAgICAgICAgICAgICAoKHVpbnQzMl90KUNBTl9Jbml0U3RydWN0LT5DQU5fUHJlc2NhbGVyIC0gMSk7CisKKyAgICAvKiBSZXF1ZXN0IGxlYXZlIGluaXRpYWxpc2F0aW9uICovCisgICAgQ0FOeC0+TUNSICY9IH4odWludDMyX3QpQ0FOX01DUl9JTlJROworCisgICAvKiBXYWl0IHRoZSBhY2tub3dsZWRnZSAqLworICAgd2FpdF9hY2sgPSAwOworCisgICB3aGlsZSAoKChDQU54LT5NU1IgJiBDQU5fTVNSX0lOQUspID09IENBTl9NU1JfSU5BSykgJiYgKHdhaXRfYWNrICE9IElOQUtfVElNRU9VVCkpCisgICB7CisgICAgIHdhaXRfYWNrKys7CisgICB9CisKKyAgICAvKiAuLi5hbmQgY2hlY2sgYWNrbm93bGVkZ2VkICovCisgICAgaWYgKChDQU54LT5NU1IgJiBDQU5fTVNSX0lOQUspID09IENBTl9NU1JfSU5BSykKKyAgICB7CisgICAgICBJbml0U3RhdHVzID0gQ0FOX0luaXRTdGF0dXNfRmFpbGVkOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgSW5pdFN0YXR1cyA9IENBTl9Jbml0U3RhdHVzX1N1Y2Nlc3MgOworICAgIH0KKyAgfQorCisgIC8qIEF0IHRoaXMgc3RlcCwgcmV0dXJuIHRoZSBzdGF0dXMgb2YgaW5pdGlhbGl6YXRpb24gKi8KKyAgcmV0dXJuIEluaXRTdGF0dXM7Cit9CisKKy8qKgorICAqIEBicmllZiAgSW5pdGlhbGl6ZXMgdGhlIENBTiBwZXJpcGhlcmFsIGFjY29yZGluZyB0byB0aGUgc3BlY2lmaWVkCisgICogICAgICAgICBwYXJhbWV0ZXJzIGluIHRoZSBDQU5fRmlsdGVySW5pdFN0cnVjdC4KKyAgKiBAcGFyYW0gIENBTl9GaWx0ZXJJbml0U3RydWN0OiBwb2ludGVyIHRvIGEgQ0FOX0ZpbHRlckluaXRUeXBlRGVmCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0dXJlIHRoYXQgY29udGFpbnMgdGhlIGNvbmZpZ3VyYXRpb24gCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24uCisgICogQHJldHZhbCBOb25lLgorICAqLwordm9pZCBDQU5fRmlsdGVySW5pdChDQU5fRmlsdGVySW5pdFR5cGVEZWYqIENBTl9GaWx0ZXJJbml0U3RydWN0KQoreworICB1aW50MzJfdCBmaWx0ZXJfbnVtYmVyX2JpdF9wb3MgPSAwOworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfQ0FOX0ZJTFRFUl9OVU1CRVIoQ0FOX0ZpbHRlckluaXRTdHJ1Y3QtPkNBTl9GaWx0ZXJOdW1iZXIpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0NBTl9GSUxURVJfTU9ERShDQU5fRmlsdGVySW5pdFN0cnVjdC0+Q0FOX0ZpbHRlck1vZGUpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0NBTl9GSUxURVJfU0NBTEUoQ0FOX0ZpbHRlckluaXRTdHJ1Y3QtPkNBTl9GaWx0ZXJTY2FsZSkpOworICBhc3NlcnRfcGFyYW0oSVNfQ0FOX0ZJTFRFUl9GSUZPKENBTl9GaWx0ZXJJbml0U3RydWN0LT5DQU5fRmlsdGVyRklGT0Fzc2lnbm1lbnQpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0ZVTkNUSU9OQUxfU1RBVEUoQ0FOX0ZpbHRlckluaXRTdHJ1Y3QtPkNBTl9GaWx0ZXJBY3RpdmF0aW9uKSk7CisKKyAgZmlsdGVyX251bWJlcl9iaXRfcG9zID0gKCh1aW50MzJfdCkxKSA8PCBDQU5fRmlsdGVySW5pdFN0cnVjdC0+Q0FOX0ZpbHRlck51bWJlcjsKKworICAvKiBJbml0aWFsaXNhdGlvbiBtb2RlIGZvciB0aGUgZmlsdGVyICovCisgIENBTjEtPkZNUiB8PSBGTVJfRklOSVQ7CisKKyAgLyogRmlsdGVyIERlYWN0aXZhdGlvbiAqLworICBDQU4xLT5GQTFSICY9IH4odWludDMyX3QpZmlsdGVyX251bWJlcl9iaXRfcG9zOworCisgIC8qIEZpbHRlciBTY2FsZSAqLworICBpZiAoQ0FOX0ZpbHRlckluaXRTdHJ1Y3QtPkNBTl9GaWx0ZXJTY2FsZSA9PSBDQU5fRmlsdGVyU2NhbGVfMTZiaXQpCisgIHsKKyAgICAvKiAxNi1iaXQgc2NhbGUgZm9yIHRoZSBmaWx0ZXIgKi8KKyAgICBDQU4xLT5GUzFSICY9IH4odWludDMyX3QpZmlsdGVyX251bWJlcl9iaXRfcG9zOworCisgICAgLyogRmlyc3QgMTYtYml0IGlkZW50aWZpZXIgYW5kIEZpcnN0IDE2LWJpdCBtYXNrICovCisgICAgLyogT3IgRmlyc3QgMTYtYml0IGlkZW50aWZpZXIgYW5kIFNlY29uZCAxNi1iaXQgaWRlbnRpZmllciAqLworICAgIENBTjEtPnNGaWx0ZXJSZWdpc3RlcltDQU5fRmlsdGVySW5pdFN0cnVjdC0+Q0FOX0ZpbHRlck51bWJlcl0uRlIxID0gCisgICAgKCgweDAwMDBGRkZGICYgKHVpbnQzMl90KUNBTl9GaWx0ZXJJbml0U3RydWN0LT5DQU5fRmlsdGVyTWFza0lkTG93KSA8PCAxNikgfAorICAgICAgICAoMHgwMDAwRkZGRiAmICh1aW50MzJfdClDQU5fRmlsdGVySW5pdFN0cnVjdC0+Q0FOX0ZpbHRlcklkTG93KTsKKworICAgIC8qIFNlY29uZCAxNi1iaXQgaWRlbnRpZmllciBhbmQgU2Vjb25kIDE2LWJpdCBtYXNrICovCisgICAgLyogT3IgVGhpcmQgMTYtYml0IGlkZW50aWZpZXIgYW5kIEZvdXJ0aCAxNi1iaXQgaWRlbnRpZmllciAqLworICAgIENBTjEtPnNGaWx0ZXJSZWdpc3RlcltDQU5fRmlsdGVySW5pdFN0cnVjdC0+Q0FOX0ZpbHRlck51bWJlcl0uRlIyID0gCisgICAgKCgweDAwMDBGRkZGICYgKHVpbnQzMl90KUNBTl9GaWx0ZXJJbml0U3RydWN0LT5DQU5fRmlsdGVyTWFza0lkSGlnaCkgPDwgMTYpIHwKKyAgICAgICAgKDB4MDAwMEZGRkYgJiAodWludDMyX3QpQ0FOX0ZpbHRlckluaXRTdHJ1Y3QtPkNBTl9GaWx0ZXJJZEhpZ2gpOworICB9CisKKyAgaWYgKENBTl9GaWx0ZXJJbml0U3RydWN0LT5DQU5fRmlsdGVyU2NhbGUgPT0gQ0FOX0ZpbHRlclNjYWxlXzMyYml0KQorICB7CisgICAgLyogMzItYml0IHNjYWxlIGZvciB0aGUgZmlsdGVyICovCisgICAgQ0FOMS0+RlMxUiB8PSBmaWx0ZXJfbnVtYmVyX2JpdF9wb3M7CisgICAgLyogMzItYml0IGlkZW50aWZpZXIgb3IgRmlyc3QgMzItYml0IGlkZW50aWZpZXIgKi8KKyAgICBDQU4xLT5zRmlsdGVyUmVnaXN0ZXJbQ0FOX0ZpbHRlckluaXRTdHJ1Y3QtPkNBTl9GaWx0ZXJOdW1iZXJdLkZSMSA9IAorICAgICgoMHgwMDAwRkZGRiAmICh1aW50MzJfdClDQU5fRmlsdGVySW5pdFN0cnVjdC0+Q0FOX0ZpbHRlcklkSGlnaCkgPDwgMTYpIHwKKyAgICAgICAgKDB4MDAwMEZGRkYgJiAodWludDMyX3QpQ0FOX0ZpbHRlckluaXRTdHJ1Y3QtPkNBTl9GaWx0ZXJJZExvdyk7CisgICAgLyogMzItYml0IG1hc2sgb3IgU2Vjb25kIDMyLWJpdCBpZGVudGlmaWVyICovCisgICAgQ0FOMS0+c0ZpbHRlclJlZ2lzdGVyW0NBTl9GaWx0ZXJJbml0U3RydWN0LT5DQU5fRmlsdGVyTnVtYmVyXS5GUjIgPSAKKyAgICAoKDB4MDAwMEZGRkYgJiAodWludDMyX3QpQ0FOX0ZpbHRlckluaXRTdHJ1Y3QtPkNBTl9GaWx0ZXJNYXNrSWRIaWdoKSA8PCAxNikgfAorICAgICAgICAoMHgwMDAwRkZGRiAmICh1aW50MzJfdClDQU5fRmlsdGVySW5pdFN0cnVjdC0+Q0FOX0ZpbHRlck1hc2tJZExvdyk7CisgIH0KKworICAvKiBGaWx0ZXIgTW9kZSAqLworICBpZiAoQ0FOX0ZpbHRlckluaXRTdHJ1Y3QtPkNBTl9GaWx0ZXJNb2RlID09IENBTl9GaWx0ZXJNb2RlX0lkTWFzaykKKyAgeworICAgIC8qSWQvTWFzayBtb2RlIGZvciB0aGUgZmlsdGVyKi8KKyAgICBDQU4xLT5GTTFSICY9IH4odWludDMyX3QpZmlsdGVyX251bWJlcl9iaXRfcG9zOworICB9CisgIGVsc2UgLyogQ0FOX0ZpbHRlckluaXRTdHJ1Y3QtPkNBTl9GaWx0ZXJNb2RlID09IENBTl9GaWx0ZXJNb2RlX0lkTGlzdCAqLworICB7CisgICAgLypJZGVudGlmaWVyIGxpc3QgbW9kZSBmb3IgdGhlIGZpbHRlciovCisgICAgQ0FOMS0+Rk0xUiB8PSAodWludDMyX3QpZmlsdGVyX251bWJlcl9iaXRfcG9zOworICB9CisKKyAgLyogRmlsdGVyIEZJRk8gYXNzaWdubWVudCAqLworICBpZiAoQ0FOX0ZpbHRlckluaXRTdHJ1Y3QtPkNBTl9GaWx0ZXJGSUZPQXNzaWdubWVudCA9PSBDQU5fRmlsdGVyX0ZJRk8wKQorICB7CisgICAgLyogRklGTyAwIGFzc2lnbmF0aW9uIGZvciB0aGUgZmlsdGVyICovCisgICAgQ0FOMS0+RkZBMVIgJj0gfih1aW50MzJfdClmaWx0ZXJfbnVtYmVyX2JpdF9wb3M7CisgIH0KKworICBpZiAoQ0FOX0ZpbHRlckluaXRTdHJ1Y3QtPkNBTl9GaWx0ZXJGSUZPQXNzaWdubWVudCA9PSBDQU5fRmlsdGVyX0ZJRk8xKQorICB7CisgICAgLyogRklGTyAxIGFzc2lnbmF0aW9uIGZvciB0aGUgZmlsdGVyICovCisgICAgQ0FOMS0+RkZBMVIgfD0gKHVpbnQzMl90KWZpbHRlcl9udW1iZXJfYml0X3BvczsKKyAgfQorICAKKyAgLyogRmlsdGVyIGFjdGl2YXRpb24gKi8KKyAgaWYgKENBTl9GaWx0ZXJJbml0U3RydWN0LT5DQU5fRmlsdGVyQWN0aXZhdGlvbiA9PSBFTkFCTEUpCisgIHsKKyAgICBDQU4xLT5GQTFSIHw9IGZpbHRlcl9udW1iZXJfYml0X3BvczsKKyAgfQorCisgIC8qIExlYXZlIHRoZSBpbml0aWFsaXNhdGlvbiBtb2RlIGZvciB0aGUgZmlsdGVyICovCisgIENBTjEtPkZNUiAmPSB+Rk1SX0ZJTklUOworfQorCisvKioKKyAgKiBAYnJpZWYgIEZpbGxzIGVhY2ggQ0FOX0luaXRTdHJ1Y3QgbWVtYmVyIHdpdGggaXRzIGRlZmF1bHQgdmFsdWUuCisgICogQHBhcmFtICBDQU5fSW5pdFN0cnVjdDogcG9pbnRlciB0byBhIENBTl9Jbml0VHlwZURlZiBzdHJ1Y3R1cmUgd2hpY2gKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICB3aWxsIGJlIGluaXRpYWxpemVkLgorICAqIEByZXR2YWwgTm9uZS4KKyAgKi8KK3ZvaWQgQ0FOX1N0cnVjdEluaXQoQ0FOX0luaXRUeXBlRGVmKiBDQU5fSW5pdFN0cnVjdCkKK3sKKyAgLyogUmVzZXQgQ0FOIGluaXQgc3RydWN0dXJlIHBhcmFtZXRlcnMgdmFsdWVzICovCisgIAorICAvKiBJbml0aWFsaXplIHRoZSB0aW1lIHRyaWdnZXJlZCBjb21tdW5pY2F0aW9uIG1vZGUgKi8KKyAgQ0FOX0luaXRTdHJ1Y3QtPkNBTl9UVENNID0gRElTQUJMRTsKKyAgCisgIC8qIEluaXRpYWxpemUgdGhlIGF1dG9tYXRpYyBidXMtb2ZmIG1hbmFnZW1lbnQgKi8KKyAgQ0FOX0luaXRTdHJ1Y3QtPkNBTl9BQk9NID0gRElTQUJMRTsKKyAgCisgIC8qIEluaXRpYWxpemUgdGhlIGF1dG9tYXRpYyB3YWtlLXVwIG1vZGUgKi8KKyAgQ0FOX0luaXRTdHJ1Y3QtPkNBTl9BV1VNID0gRElTQUJMRTsKKyAgCisgIC8qIEluaXRpYWxpemUgdGhlIG5vIGF1dG9tYXRpYyByZXRyYW5zbWlzc2lvbiAqLworICBDQU5fSW5pdFN0cnVjdC0+Q0FOX05BUlQgPSBESVNBQkxFOworICAKKyAgLyogSW5pdGlhbGl6ZSB0aGUgcmVjZWl2ZSBGSUZPIGxvY2tlZCBtb2RlICovCisgIENBTl9Jbml0U3RydWN0LT5DQU5fUkZMTSA9IERJU0FCTEU7CisgIAorICAvKiBJbml0aWFsaXplIHRoZSB0cmFuc21pdCBGSUZPIHByaW9yaXR5ICovCisgIENBTl9Jbml0U3RydWN0LT5DQU5fVFhGUCA9IERJU0FCTEU7CisgIAorICAvKiBJbml0aWFsaXplIHRoZSBDQU5fTW9kZSBtZW1iZXIgKi8KKyAgQ0FOX0luaXRTdHJ1Y3QtPkNBTl9Nb2RlID0gQ0FOX01vZGVfTm9ybWFsOworICAKKyAgLyogSW5pdGlhbGl6ZSB0aGUgQ0FOX1NKVyBtZW1iZXIgKi8KKyAgQ0FOX0luaXRTdHJ1Y3QtPkNBTl9TSlcgPSBDQU5fU0pXXzF0cTsKKyAgCisgIC8qIEluaXRpYWxpemUgdGhlIENBTl9CUzEgbWVtYmVyICovCisgIENBTl9Jbml0U3RydWN0LT5DQU5fQlMxID0gQ0FOX0JTMV80dHE7CisgIAorICAvKiBJbml0aWFsaXplIHRoZSBDQU5fQlMyIG1lbWJlciAqLworICBDQU5fSW5pdFN0cnVjdC0+Q0FOX0JTMiA9IENBTl9CUzJfM3RxOworICAKKyAgLyogSW5pdGlhbGl6ZSB0aGUgQ0FOX1ByZXNjYWxlciBtZW1iZXIgKi8KKyAgQ0FOX0luaXRTdHJ1Y3QtPkNBTl9QcmVzY2FsZXIgPSAxOworfQorCisvKioKKyAgKiBAYnJpZWYgIFNlbGVjdCB0aGUgc3RhcnQgYmFuayBmaWx0ZXIgZm9yIHNsYXZlIENBTi4KKyAgKiBAbm90ZSAgIFRoaXMgZnVuY3Rpb24gYXBwbGllcyBvbmx5IHRvIFNUTTMyIENvbm5lY3Rpdml0eSBsaW5lIGRldmljZXMuCisgICogQHBhcmFtICBDQU5fQmFua051bWJlcjogU2VsZWN0IHRoZSBzdGFydCBzbGF2ZSBiYW5rIGZpbHRlciBmcm9tIDEuLjI3LgorICAqIEByZXR2YWwgTm9uZS4KKyAgKi8KK3ZvaWQgQ0FOX1NsYXZlU3RhcnRCYW5rKHVpbnQ4X3QgQ0FOX0JhbmtOdW1iZXIpIAoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfQ0FOX0JBTktOVU1CRVIoQ0FOX0JhbmtOdW1iZXIpKTsKKyAgCisgIC8qIEVudGVyIEluaXRpYWxpc2F0aW9uIG1vZGUgZm9yIHRoZSBmaWx0ZXIgKi8KKyAgQ0FOMS0+Rk1SIHw9IEZNUl9GSU5JVDsKKyAgCisgIC8qIFNlbGVjdCB0aGUgc3RhcnQgc2xhdmUgYmFuayAqLworICBDQU4xLT5GTVIgJj0gKHVpbnQzMl90KTB4RkZGRkMwRjEgOworICBDQU4xLT5GTVIgfD0gKHVpbnQzMl90KShDQU5fQmFua051bWJlcik8PDg7CisgIAorICAvKiBMZWF2ZSBJbml0aWFsaXNhdGlvbiBtb2RlIGZvciB0aGUgZmlsdGVyICovCisgIENBTjEtPkZNUiAmPSB+Rk1SX0ZJTklUOworfQorCisvKioKKyAgKiBAYnJpZWYgIEVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIERCRyBGcmVlemUgZm9yIENBTi4KKyAgKiBAcGFyYW0gIENBTng6ICAgICB3aGVyZSB4IGNhbiBiZSAxIG9yIDIgdG8gdG8gc2VsZWN0IHRoZSBDQU4gcGVyaXBoZXJhbC4KKyAgKiBAcGFyYW0gIE5ld1N0YXRlOiBuZXcgc3RhdGUgb2YgdGhlIENBTiBwZXJpcGhlcmFsLiBUaGlzIHBhcmFtZXRlciBjYW4gCisgICogICAgICAgICAgICAgICAgICAgYmU6IEVOQUJMRSBvciBESVNBQkxFLgorICAqIEByZXR2YWwgTm9uZS4KKyAgKi8KK3ZvaWQgQ0FOX0RCR0ZyZWV6ZShDQU5fVHlwZURlZiogQ0FOeCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfQ0FOX0FMTF9QRVJJUEgoQ0FOeCkpOworICBhc3NlcnRfcGFyYW0oSVNfRlVOQ1RJT05BTF9TVEFURShOZXdTdGF0ZSkpOworICAKKyAgaWYgKE5ld1N0YXRlICE9IERJU0FCTEUpCisgIHsKKyAgICAvKiBFbmFibGUgRGVidWcgRnJlZXplICAqLworICAgIENBTngtPk1DUiB8PSBNQ1JfREJGOworICB9CisgIGVsc2UKKyAgeworICAgIC8qIERpc2FibGUgRGVidWcgRnJlZXplICovCisgICAgQ0FOeC0+TUNSICY9IH5NQ1JfREJGOworICB9Cit9CisKKworLyoqCisgICogQGJyaWVmICBFbmFibGVzIG9yIGRpc2FiZXMgdGhlIENBTiBUaW1lIFRyaWdnZXJPcGVyYXRpb24gY29tbXVuaWNhdGlvbiBtb2RlLgorICAqIEBwYXJhbSAgQ0FOeDogICAgICB3aGVyZSB4IGNhbiBiZSAxIG9yIDIgdG8gdG8gc2VsZWN0IHRoZSBDQU4gcGVyaXBoZXJhbC4KKyAgKiBAcGFyYW0gIE5ld1N0YXRlIDogTW9kZSBuZXcgc3RhdGUgLCBjYW4gYmUgb25lIG9mIEByZWYgRnVuY3Rpb25hbFN0YXRlLgorICAqIEBub3RlICAgd2hlbiBlbmFibGVkLCBUaW1lIHN0YW1wIChUSU1FWzE1OjBdKSB2YWx1ZSBpcyBzZW50IGluIHRoZSBsYXN0IAorICAqICAgICAgICAgdHdvIGRhdGEgYnl0ZXMgb2YgdGhlIDgtYnl0ZSBtZXNzYWdlOiBUSU1FWzc6MF0gaW4gZGF0YSBieXRlIDYgCisgICogICAgICAgICBhbmQgVElNRVsxNTo4XSBpbiBkYXRhIGJ5dGUgNyAKKyAgKiBAbm90ZSAgIERMQyBtdXN0IGJlIHByb2dyYW1tZWQgYXMgOCBpbiBvcmRlciBUaW1lIFN0YW1wICgyIGJ5dGVzKSB0byBiZSAKKyAgKiAgICAgICAgIHNlbnQgb3ZlciB0aGUgQ0FOIGJ1cy4gIAorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBDQU5fVFRDb21Nb2RlQ21kKENBTl9UeXBlRGVmKiBDQU54LCBGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpCit7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19DQU5fQUxMX1BFUklQSChDQU54KSk7CisgIGFzc2VydF9wYXJhbShJU19GVU5DVElPTkFMX1NUQVRFKE5ld1N0YXRlKSk7CisgIGlmIChOZXdTdGF0ZSAhPSBESVNBQkxFKQorICB7CisgICAgLyogRW5hYmxlIHRoZSBUVENNIG1vZGUgKi8KKyAgICBDQU54LT5NQ1IgfD0gQ0FOX01DUl9UVENNOworCisgICAgLyogU2V0IFRHVCBiaXRzICovCisgICAgQ0FOeC0+c1R4TWFpbEJveFswXS5URFRSIHw9ICgodWludDMyX3QpQ0FOX1REVDBSX1RHVCk7CisgICAgQ0FOeC0+c1R4TWFpbEJveFsxXS5URFRSIHw9ICgodWludDMyX3QpQ0FOX1REVDFSX1RHVCk7CisgICAgQ0FOeC0+c1R4TWFpbEJveFsyXS5URFRSIHw9ICgodWludDMyX3QpQ0FOX1REVDJSX1RHVCk7CisgIH0KKyAgZWxzZQorICB7CisgICAgLyogRGlzYWJsZSB0aGUgVFRDTSBtb2RlICovCisgICAgQ0FOeC0+TUNSICY9ICh1aW50MzJfdCkofih1aW50MzJfdClDQU5fTUNSX1RUQ00pOworCisgICAgLyogUmVzZXQgVEdUIGJpdHMgKi8KKyAgICBDQU54LT5zVHhNYWlsQm94WzBdLlREVFIgJj0gKCh1aW50MzJfdCl+Q0FOX1REVDBSX1RHVCk7CisgICAgQ0FOeC0+c1R4TWFpbEJveFsxXS5URFRSICY9ICgodWludDMyX3QpfkNBTl9URFQxUl9UR1QpOworICAgIENBTngtPnNUeE1haWxCb3hbMl0uVERUUiAmPSAoKHVpbnQzMl90KX5DQU5fVERUMlJfVEdUKTsKKyAgfQorfQorLyoqCisgICogQGJyaWVmICBJbml0aWF0ZXMgdGhlIHRyYW5zbWlzc2lvbiBvZiBhIG1lc3NhZ2UuCisgICogQHBhcmFtICBDQU54OiAgICAgIHdoZXJlIHggY2FuIGJlIDEgb3IgMiB0byB0byBzZWxlY3QgdGhlIENBTiBwZXJpcGhlcmFsLgorICAqIEBwYXJhbSAgVHhNZXNzYWdlOiBwb2ludGVyIHRvIGEgc3RydWN0dXJlIHdoaWNoIGNvbnRhaW5zIENBTiBJZCwgQ0FOCisgICogICAgICAgICAgICAgICAgICAgIERMQyBhbmQgQ0FOIGRhdGEuCisgICogQHJldHZhbCBUaGUgbnVtYmVyIG9mIHRoZSBtYWlsYm94IHRoYXQgaXMgdXNlZCBmb3IgdHJhbnNtaXNzaW9uCisgICogICAgICAgICAgICAgICAgICAgIG9yIENBTl9UeFN0YXR1c19Ob01haWxCb3ggaWYgdGhlcmUgaXMgbm8gZW1wdHkgbWFpbGJveC4KKyAgKi8KK3VpbnQ4X3QgQ0FOX1RyYW5zbWl0KENBTl9UeXBlRGVmKiBDQU54LCBDYW5UeE1zZyogVHhNZXNzYWdlKQoreworICB1aW50OF90IHRyYW5zbWl0X21haWxib3ggPSAwOworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfQ0FOX0FMTF9QRVJJUEgoQ0FOeCkpOworICBhc3NlcnRfcGFyYW0oSVNfQ0FOX0lEVFlQRShUeE1lc3NhZ2UtPklERSkpOworICBhc3NlcnRfcGFyYW0oSVNfQ0FOX1JUUihUeE1lc3NhZ2UtPlJUUikpOworICBhc3NlcnRfcGFyYW0oSVNfQ0FOX0RMQyhUeE1lc3NhZ2UtPkRMQykpOworCisgIC8qIFNlbGVjdCBvbmUgZW1wdHkgdHJhbnNtaXQgbWFpbGJveCAqLworICBpZiAoKENBTngtPlRTUiZDQU5fVFNSX1RNRTApID09IENBTl9UU1JfVE1FMCkKKyAgeworICAgIHRyYW5zbWl0X21haWxib3ggPSAwOworICB9CisgIGVsc2UgaWYgKChDQU54LT5UU1ImQ0FOX1RTUl9UTUUxKSA9PSBDQU5fVFNSX1RNRTEpCisgIHsKKyAgICB0cmFuc21pdF9tYWlsYm94ID0gMTsKKyAgfQorICBlbHNlIGlmICgoQ0FOeC0+VFNSJkNBTl9UU1JfVE1FMikgPT0gQ0FOX1RTUl9UTUUyKQorICB7CisgICAgdHJhbnNtaXRfbWFpbGJveCA9IDI7CisgIH0KKyAgZWxzZQorICB7CisgICAgdHJhbnNtaXRfbWFpbGJveCA9IENBTl9UeFN0YXR1c19Ob01haWxCb3g7CisgIH0KKworICBpZiAodHJhbnNtaXRfbWFpbGJveCAhPSBDQU5fVHhTdGF0dXNfTm9NYWlsQm94KQorICB7CisgICAgLyogU2V0IHVwIHRoZSBJZCAqLworICAgIENBTngtPnNUeE1haWxCb3hbdHJhbnNtaXRfbWFpbGJveF0uVElSICY9IFRNSUR4Ul9UWFJROworICAgIGlmIChUeE1lc3NhZ2UtPklERSA9PSBDQU5fSWRfU3RhbmRhcmQpCisgICAgeworICAgICAgYXNzZXJ0X3BhcmFtKElTX0NBTl9TVERJRChUeE1lc3NhZ2UtPlN0ZElkKSk7ICAKKyAgICAgIENBTngtPnNUeE1haWxCb3hbdHJhbnNtaXRfbWFpbGJveF0uVElSIHw9ICgoVHhNZXNzYWdlLT5TdGRJZCA8PCAyMSkgfCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR4TWVzc2FnZS0+UlRSKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgIGFzc2VydF9wYXJhbShJU19DQU5fRVhUSUQoVHhNZXNzYWdlLT5FeHRJZCkpOworICAgICAgQ0FOeC0+c1R4TWFpbEJveFt0cmFuc21pdF9tYWlsYm94XS5USVIgfD0gKChUeE1lc3NhZ2UtPkV4dElkIDw8IDMpIHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeE1lc3NhZ2UtPklERSB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHhNZXNzYWdlLT5SVFIpOworICAgIH0KKyAgICAKKyAgICAvKiBTZXQgdXAgdGhlIERMQyAqLworICAgIFR4TWVzc2FnZS0+RExDICY9ICh1aW50OF90KTB4MDAwMDAwMEY7CisgICAgQ0FOeC0+c1R4TWFpbEJveFt0cmFuc21pdF9tYWlsYm94XS5URFRSICY9ICh1aW50MzJfdCkweEZGRkZGRkYwOworICAgIENBTngtPnNUeE1haWxCb3hbdHJhbnNtaXRfbWFpbGJveF0uVERUUiB8PSBUeE1lc3NhZ2UtPkRMQzsKKworICAgIC8qIFNldCB1cCB0aGUgZGF0YSBmaWVsZCAqLworICAgIENBTngtPnNUeE1haWxCb3hbdHJhbnNtaXRfbWFpbGJveF0uVERMUiA9ICgoKHVpbnQzMl90KVR4TWVzc2FnZS0+RGF0YVszXSA8PCAyNCkgfCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpVHhNZXNzYWdlLT5EYXRhWzJdIDw8IDE2KSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KVR4TWVzc2FnZS0+RGF0YVsxXSA8PCA4KSB8IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdClUeE1lc3NhZ2UtPkRhdGFbMF0pKTsKKyAgICBDQU54LT5zVHhNYWlsQm94W3RyYW5zbWl0X21haWxib3hdLlRESFIgPSAoKCh1aW50MzJfdClUeE1lc3NhZ2UtPkRhdGFbN10gPDwgMjQpIHwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KVR4TWVzc2FnZS0+RGF0YVs2XSA8PCAxNikgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdClUeE1lc3NhZ2UtPkRhdGFbNV0gPDwgOCkgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdClUeE1lc3NhZ2UtPkRhdGFbNF0pKTsKKyAgICAvKiBSZXF1ZXN0IHRyYW5zbWlzc2lvbiAqLworICAgIENBTngtPnNUeE1haWxCb3hbdHJhbnNtaXRfbWFpbGJveF0uVElSIHw9IFRNSUR4Ul9UWFJROworICB9CisgIHJldHVybiB0cmFuc21pdF9tYWlsYm94OworfQorCisvKioKKyAgKiBAYnJpZWYgIENoZWNrcyB0aGUgdHJhbnNtaXNzaW9uIG9mIGEgbWVzc2FnZS4KKyAgKiBAcGFyYW0gIENBTng6ICAgICAgICAgICAgd2hlcmUgeCBjYW4gYmUgMSBvciAyIHRvIHRvIHNlbGVjdCB0aGUgCisgICogICAgICAgICAgICAgICAgICAgICAgICAgIENBTiBwZXJpcGhlcmFsLgorICAqIEBwYXJhbSAgVHJhbnNtaXRNYWlsYm94OiB0aGUgbnVtYmVyIG9mIHRoZSBtYWlsYm94IHRoYXQgaXMgdXNlZCBmb3IgCisgICogICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbWlzc2lvbi4KKyAgKiBAcmV0dmFsIENBTl9UeFN0YXR1c19PayBpZiB0aGUgQ0FOIGRyaXZlciB0cmFuc21pdHMgdGhlIG1lc3NhZ2UsIENBTl9UeFN0YXR1c19GYWlsZWQgCisgICogICAgICAgICBpbiBhbiBvdGhlciBjYXNlLgorICAqLwordWludDhfdCBDQU5fVHJhbnNtaXRTdGF0dXMoQ0FOX1R5cGVEZWYqIENBTngsIHVpbnQ4X3QgVHJhbnNtaXRNYWlsYm94KQoreworICB1aW50MzJfdCBzdGF0ZSA9IDA7CisKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX0NBTl9BTExfUEVSSVBIKENBTngpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0NBTl9UUkFOU01JVE1BSUxCT1goVHJhbnNtaXRNYWlsYm94KSk7CisgCisgIHN3aXRjaCAoVHJhbnNtaXRNYWlsYm94KQorICB7CisgICAgY2FzZSAoQ0FOX1RYTUFJTEJPWF8wKTogCisgICAgICBzdGF0ZSA9ICAgQ0FOeC0+VFNSICYgIChDQU5fVFNSX1JRQ1AwIHwgQ0FOX1RTUl9UWE9LMCB8IENBTl9UU1JfVE1FMCk7CisgICAgICBicmVhazsKKyAgICBjYXNlIChDQU5fVFhNQUlMQk9YXzEpOiAKKyAgICAgIHN0YXRlID0gICBDQU54LT5UU1IgJiAgKENBTl9UU1JfUlFDUDEgfCBDQU5fVFNSX1RYT0sxIHwgQ0FOX1RTUl9UTUUxKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgKENBTl9UWE1BSUxCT1hfMik6IAorICAgICAgc3RhdGUgPSAgIENBTngtPlRTUiAmICAoQ0FOX1RTUl9SUUNQMiB8IENBTl9UU1JfVFhPSzIgfCBDQU5fVFNSX1RNRTIpOworICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgIHN0YXRlID0gQ0FOX1R4U3RhdHVzX0ZhaWxlZDsKKyAgICAgIGJyZWFrOworICB9CisgIHN3aXRjaCAoc3RhdGUpCisgIHsKKyAgICAgIC8qIHRyYW5zbWl0IHBlbmRpbmcgICovCisgICAgY2FzZSAoMHgwKTogc3RhdGUgPSBDQU5fVHhTdGF0dXNfUGVuZGluZzsKKyAgICAgIGJyZWFrOworICAgICAgLyogdHJhbnNtaXQgZmFpbGVkICAqLworICAgICBjYXNlIChDQU5fVFNSX1JRQ1AwIHwgQ0FOX1RTUl9UTUUwKTogc3RhdGUgPSBDQU5fVHhTdGF0dXNfRmFpbGVkOworICAgICAgYnJlYWs7CisgICAgIGNhc2UgKENBTl9UU1JfUlFDUDEgfCBDQU5fVFNSX1RNRTEpOiBzdGF0ZSA9IENBTl9UeFN0YXR1c19GYWlsZWQ7CisgICAgICBicmVhazsKKyAgICAgY2FzZSAoQ0FOX1RTUl9SUUNQMiB8IENBTl9UU1JfVE1FMik6IHN0YXRlID0gQ0FOX1R4U3RhdHVzX0ZhaWxlZDsKKyAgICAgIGJyZWFrOworICAgICAgLyogdHJhbnNtaXQgc3VjY2VlZGVkICAqLworICAgIGNhc2UgKENBTl9UU1JfUlFDUDAgfCBDQU5fVFNSX1RYT0swIHwgQ0FOX1RTUl9UTUUwKTpzdGF0ZSA9IENBTl9UeFN0YXR1c19PazsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgKENBTl9UU1JfUlFDUDEgfCBDQU5fVFNSX1RYT0sxIHwgQ0FOX1RTUl9UTUUxKTpzdGF0ZSA9IENBTl9UeFN0YXR1c19PazsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgKENBTl9UU1JfUlFDUDIgfCBDQU5fVFNSX1RYT0syIHwgQ0FOX1RTUl9UTUUyKTpzdGF0ZSA9IENBTl9UeFN0YXR1c19PazsKKyAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6IHN0YXRlID0gQ0FOX1R4U3RhdHVzX0ZhaWxlZDsKKyAgICAgIGJyZWFrOworICB9CisgIHJldHVybiAodWludDhfdCkgc3RhdGU7Cit9CisKKy8qKgorICAqIEBicmllZiAgQ2FuY2VscyBhIHRyYW5zbWl0IHJlcXVlc3QuCisgICogQHBhcmFtICBDQU54OiAgICAgd2hlcmUgeCBjYW4gYmUgMSBvciAyIHRvIHRvIHNlbGVjdCB0aGUgQ0FOIHBlcmlwaGVyYWwuIAorICAqIEBwYXJhbSAgTWFpbGJveDogIE1haWxib3ggbnVtYmVyLgorICAqIEByZXR2YWwgTm9uZS4KKyAgKi8KK3ZvaWQgQ0FOX0NhbmNlbFRyYW5zbWl0KENBTl9UeXBlRGVmKiBDQU54LCB1aW50OF90IE1haWxib3gpCit7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19DQU5fQUxMX1BFUklQSChDQU54KSk7CisgIGFzc2VydF9wYXJhbShJU19DQU5fVFJBTlNNSVRNQUlMQk9YKE1haWxib3gpKTsKKyAgLyogYWJvcnQgdHJhbnNtaXNzaW9uICovCisgIHN3aXRjaCAoTWFpbGJveCkKKyAgeworICAgIGNhc2UgKENBTl9UWE1BSUxCT1hfMCk6IENBTngtPlRTUiB8PSBDQU5fVFNSX0FCUlEwOworICAgICAgYnJlYWs7CisgICAgY2FzZSAoQ0FOX1RYTUFJTEJPWF8xKTogQ0FOeC0+VFNSIHw9IENBTl9UU1JfQUJSUTE7CisgICAgICBicmVhazsKKyAgICBjYXNlIChDQU5fVFhNQUlMQk9YXzIpOiBDQU54LT5UU1IgfD0gQ0FOX1RTUl9BQlJRMjsKKyAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICBicmVhazsKKyAgfQorfQorCisKKy8qKgorICAqIEBicmllZiAgUmVjZWl2ZXMgYSBtZXNzYWdlLgorICAqIEBwYXJhbSAgQ0FOeDogICAgICAgd2hlcmUgeCBjYW4gYmUgMSBvciAyIHRvIHRvIHNlbGVjdCB0aGUgQ0FOIHBlcmlwaGVyYWwuCisgICogQHBhcmFtICBGSUZPTnVtYmVyOiBSZWNlaXZlIEZJRk8gbnVtYmVyLCBDQU5fRklGTzAgb3IgQ0FOX0ZJRk8xLgorICAqIEBwYXJhbSAgUnhNZXNzYWdlOiAgcG9pbnRlciB0byBhIHN0cnVjdHVyZSByZWNlaXZlIG1lc3NhZ2Ugd2hpY2ggY29udGFpbnMgCisgICogICAgICAgICAgICAgICAgICAgICBDQU4gSWQsIENBTiBETEMsIENBTiBkYXRhcyBhbmQgRk1JIG51bWJlci4KKyAgKiBAcmV0dmFsIE5vbmUuCisgICovCit2b2lkIENBTl9SZWNlaXZlKENBTl9UeXBlRGVmKiBDQU54LCB1aW50OF90IEZJRk9OdW1iZXIsIENhblJ4TXNnKiBSeE1lc3NhZ2UpCit7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19DQU5fQUxMX1BFUklQSChDQU54KSk7CisgIGFzc2VydF9wYXJhbShJU19DQU5fRklGTyhGSUZPTnVtYmVyKSk7CisgIC8qIEdldCB0aGUgSWQgKi8KKyAgUnhNZXNzYWdlLT5JREUgPSAodWludDhfdCkweDA0ICYgQ0FOeC0+c0ZJRk9NYWlsQm94W0ZJRk9OdW1iZXJdLlJJUjsKKyAgaWYgKFJ4TWVzc2FnZS0+SURFID09IENBTl9JZF9TdGFuZGFyZCkKKyAgeworICAgIFJ4TWVzc2FnZS0+U3RkSWQgPSAodWludDMyX3QpMHgwMDAwMDdGRiAmIChDQU54LT5zRklGT01haWxCb3hbRklGT051bWJlcl0uUklSID4+IDIxKTsKKyAgfQorICBlbHNlCisgIHsKKyAgICBSeE1lc3NhZ2UtPkV4dElkID0gKHVpbnQzMl90KTB4MUZGRkZGRkYgJiAoQ0FOeC0+c0ZJRk9NYWlsQm94W0ZJRk9OdW1iZXJdLlJJUiA+PiAzKTsKKyAgfQorICAKKyAgUnhNZXNzYWdlLT5SVFIgPSAodWludDhfdCkweDAyICYgQ0FOeC0+c0ZJRk9NYWlsQm94W0ZJRk9OdW1iZXJdLlJJUjsKKyAgLyogR2V0IHRoZSBETEMgKi8KKyAgUnhNZXNzYWdlLT5ETEMgPSAodWludDhfdCkweDBGICYgQ0FOeC0+c0ZJRk9NYWlsQm94W0ZJRk9OdW1iZXJdLlJEVFI7CisgIC8qIEdldCB0aGUgRk1JICovCisgIFJ4TWVzc2FnZS0+Rk1JID0gKHVpbnQ4X3QpMHhGRiAmIChDQU54LT5zRklGT01haWxCb3hbRklGT051bWJlcl0uUkRUUiA+PiA4KTsKKyAgLyogR2V0IHRoZSBkYXRhIGZpZWxkICovCisgIFJ4TWVzc2FnZS0+RGF0YVswXSA9ICh1aW50OF90KTB4RkYgJiBDQU54LT5zRklGT01haWxCb3hbRklGT051bWJlcl0uUkRMUjsKKyAgUnhNZXNzYWdlLT5EYXRhWzFdID0gKHVpbnQ4X3QpMHhGRiAmIChDQU54LT5zRklGT01haWxCb3hbRklGT051bWJlcl0uUkRMUiA+PiA4KTsKKyAgUnhNZXNzYWdlLT5EYXRhWzJdID0gKHVpbnQ4X3QpMHhGRiAmIChDQU54LT5zRklGT01haWxCb3hbRklGT051bWJlcl0uUkRMUiA+PiAxNik7CisgIFJ4TWVzc2FnZS0+RGF0YVszXSA9ICh1aW50OF90KTB4RkYgJiAoQ0FOeC0+c0ZJRk9NYWlsQm94W0ZJRk9OdW1iZXJdLlJETFIgPj4gMjQpOworICBSeE1lc3NhZ2UtPkRhdGFbNF0gPSAodWludDhfdCkweEZGICYgQ0FOeC0+c0ZJRk9NYWlsQm94W0ZJRk9OdW1iZXJdLlJESFI7CisgIFJ4TWVzc2FnZS0+RGF0YVs1XSA9ICh1aW50OF90KTB4RkYgJiAoQ0FOeC0+c0ZJRk9NYWlsQm94W0ZJRk9OdW1iZXJdLlJESFIgPj4gOCk7CisgIFJ4TWVzc2FnZS0+RGF0YVs2XSA9ICh1aW50OF90KTB4RkYgJiAoQ0FOeC0+c0ZJRk9NYWlsQm94W0ZJRk9OdW1iZXJdLlJESFIgPj4gMTYpOworICBSeE1lc3NhZ2UtPkRhdGFbN10gPSAodWludDhfdCkweEZGICYgKENBTngtPnNGSUZPTWFpbEJveFtGSUZPTnVtYmVyXS5SREhSID4+IDI0KTsKKyAgLyogUmVsZWFzZSB0aGUgRklGTyAqLworICAvKiBSZWxlYXNlIEZJRk8wICovCisgIGlmIChGSUZPTnVtYmVyID09IENBTl9GSUZPMCkKKyAgeworICAgIENBTngtPlJGMFIgfD0gQ0FOX1JGMFJfUkZPTTA7CisgIH0KKyAgLyogUmVsZWFzZSBGSUZPMSAqLworICBlbHNlIC8qIEZJRk9OdW1iZXIgPT0gQ0FOX0ZJRk8xICovCisgIHsKKyAgICBDQU54LT5SRjFSIHw9IENBTl9SRjFSX1JGT00xOworICB9Cit9CisKKy8qKgorICAqIEBicmllZiAgUmVsZWFzZXMgdGhlIHNwZWNpZmllZCBGSUZPLgorICAqIEBwYXJhbSAgQ0FOeDogICAgICAgd2hlcmUgeCBjYW4gYmUgMSBvciAyIHRvIHRvIHNlbGVjdCB0aGUgQ0FOIHBlcmlwaGVyYWwuIAorICAqIEBwYXJhbSAgRklGT051bWJlcjogRklGTyB0byByZWxlYXNlLCBDQU5fRklGTzAgb3IgQ0FOX0ZJRk8xLgorICAqIEByZXR2YWwgTm9uZS4KKyAgKi8KK3ZvaWQgQ0FOX0ZJRk9SZWxlYXNlKENBTl9UeXBlRGVmKiBDQU54LCB1aW50OF90IEZJRk9OdW1iZXIpCit7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19DQU5fQUxMX1BFUklQSChDQU54KSk7CisgIGFzc2VydF9wYXJhbShJU19DQU5fRklGTyhGSUZPTnVtYmVyKSk7CisgIC8qIFJlbGVhc2UgRklGTzAgKi8KKyAgaWYgKEZJRk9OdW1iZXIgPT0gQ0FOX0ZJRk8wKQorICB7CisgICAgQ0FOeC0+UkYwUiB8PSBDQU5fUkYwUl9SRk9NMDsKKyAgfQorICAvKiBSZWxlYXNlIEZJRk8xICovCisgIGVsc2UgLyogRklGT051bWJlciA9PSBDQU5fRklGTzEgKi8KKyAgeworICAgIENBTngtPlJGMVIgfD0gQ0FOX1JGMVJfUkZPTTE7CisgIH0KK30KKworLyoqCisgICogQGJyaWVmICBSZXR1cm5zIHRoZSBudW1iZXIgb2YgcGVuZGluZyBtZXNzYWdlcy4KKyAgKiBAcGFyYW0gIENBTng6ICAgICAgIHdoZXJlIHggY2FuIGJlIDEgb3IgMiB0byB0byBzZWxlY3QgdGhlIENBTiBwZXJpcGhlcmFsLgorICAqIEBwYXJhbSAgRklGT051bWJlcjogUmVjZWl2ZSBGSUZPIG51bWJlciwgQ0FOX0ZJRk8wIG9yIENBTl9GSUZPMS4KKyAgKiBAcmV0dmFsIE5iTWVzc2FnZSA6IHdoaWNoIGlzIHRoZSBudW1iZXIgb2YgcGVuZGluZyBtZXNzYWdlLgorICAqLwordWludDhfdCBDQU5fTWVzc2FnZVBlbmRpbmcoQ0FOX1R5cGVEZWYqIENBTngsIHVpbnQ4X3QgRklGT051bWJlcikKK3sKKyAgdWludDhfdCBtZXNzYWdlX3BlbmRpbmc9MDsKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX0NBTl9BTExfUEVSSVBIKENBTngpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0NBTl9GSUZPKEZJRk9OdW1iZXIpKTsKKyAgaWYgKEZJRk9OdW1iZXIgPT0gQ0FOX0ZJRk8wKQorICB7CisgICAgbWVzc2FnZV9wZW5kaW5nID0gKHVpbnQ4X3QpKENBTngtPlJGMFImKHVpbnQzMl90KTB4MDMpOworICB9CisgIGVsc2UgaWYgKEZJRk9OdW1iZXIgPT0gQ0FOX0ZJRk8xKQorICB7CisgICAgbWVzc2FnZV9wZW5kaW5nID0gKHVpbnQ4X3QpKENBTngtPlJGMVImKHVpbnQzMl90KTB4MDMpOworICB9CisgIGVsc2UKKyAgeworICAgIG1lc3NhZ2VfcGVuZGluZyA9IDA7CisgIH0KKyAgcmV0dXJuIG1lc3NhZ2VfcGVuZGluZzsKK30KKworCisvKioKKyAgKiBAYnJpZWYgICBTZWxlY3QgdGhlIENBTiBPcGVyYXRpb24gbW9kZS4KKyAgKiBAcGFyYW0gQ0FOX09wZXJhdGluZ01vZGUgOiBDQU4gT3BlcmF0aW5nIE1vZGUuIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgQHJlZiBDQU5fT3BlcmF0aW5nTW9kZV9UeXBlRGVmIGVudW1lcmF0aW9uLgorICAqIEByZXR2YWwgc3RhdHVzIG9mIHRoZSByZXF1ZXN0ZWQgbW9kZSB3aGljaCBjYW4gYmUgCisgICogICAgICAgICAtIENBTl9Nb2RlU3RhdHVzX0ZhaWxlZCAgICBDQU4gZmFpbGVkIGVudGVyaW5nIHRoZSBzcGVjaWZpYyBtb2RlIAorICAqICAgICAgICAgLSBDQU5fTW9kZVN0YXR1c19TdWNjZXNzICAgQ0FOIFN1Y2NlZWQgZW50ZXJpbmcgdGhlIHNwZWNpZmljIG1vZGUgCisKKyAgKi8KK3VpbnQ4X3QgQ0FOX09wZXJhdGluZ01vZGVSZXF1ZXN0KENBTl9UeXBlRGVmKiBDQU54LCB1aW50OF90IENBTl9PcGVyYXRpbmdNb2RlKQoreworICB1aW50OF90IHN0YXR1cyA9IENBTl9Nb2RlU3RhdHVzX0ZhaWxlZDsKKyAgCisgIC8qIFRpbWVvdXQgZm9yIElOQUsgb3IgYWxzbyBmb3IgU0xBSyBiaXRzKi8KKyAgdWludDMyX3QgdGltZW91dCA9IElOQUtfVElNRU9VVDsgCisKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX0NBTl9BTExfUEVSSVBIKENBTngpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0NBTl9PUEVSQVRJTkdfTU9ERShDQU5fT3BlcmF0aW5nTW9kZSkpOworCisgIGlmIChDQU5fT3BlcmF0aW5nTW9kZSA9PSBDQU5fT3BlcmF0aW5nTW9kZV9Jbml0aWFsaXphdGlvbikKKyAgeworICAgIC8qIFJlcXVlc3QgaW5pdGlhbGlzYXRpb24gKi8KKyAgICBDQU54LT5NQ1IgPSAodWludDMyX3QpKChDQU54LT5NQ1IgJiAodWludDMyX3QpKH4odWludDMyX3QpQ0FOX01DUl9TTEVFUCkpIHwgQ0FOX01DUl9JTlJRKTsKKworICAgIC8qIFdhaXQgdGhlIGFja25vd2xlZGdlICovCisgICAgd2hpbGUgKCgoQ0FOeC0+TVNSICYgQ0FOX01PREVfTUFTSykgIT0gQ0FOX01TUl9JTkFLKSAmJiAodGltZW91dCAhPSAwKSkKKyAgICB7CisgICAgICB0aW1lb3V0LS07CisgICAgfQorICAgIGlmICgoQ0FOeC0+TVNSICYgQ0FOX01PREVfTUFTSykgIT0gQ0FOX01TUl9JTkFLKQorICAgIHsKKyAgICAgIHN0YXR1cyA9IENBTl9Nb2RlU3RhdHVzX0ZhaWxlZDsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgIHN0YXR1cyA9IENBTl9Nb2RlU3RhdHVzX1N1Y2Nlc3M7CisgICAgfQorICB9CisgIGVsc2UgIGlmIChDQU5fT3BlcmF0aW5nTW9kZSA9PSBDQU5fT3BlcmF0aW5nTW9kZV9Ob3JtYWwpCisgIHsKKyAgICAvKiBSZXF1ZXN0IGxlYXZlIGluaXRpYWxpc2F0aW9uIGFuZCBzbGVlcCBtb2RlICBhbmQgZW50ZXIgTm9ybWFsIG1vZGUgKi8KKyAgICBDQU54LT5NQ1IgJj0gKHVpbnQzMl90KSh+KENBTl9NQ1JfU0xFRVB8Q0FOX01DUl9JTlJRKSk7CisKKyAgICAvKiBXYWl0IHRoZSBhY2tub3dsZWRnZSAqLworICAgIHdoaWxlICgoKENBTngtPk1TUiAmIENBTl9NT0RFX01BU0spICE9IDApICYmICh0aW1lb3V0IT0wKSkKKyAgICB7CisgICAgICB0aW1lb3V0LS07CisgICAgfQorICAgIGlmICgoQ0FOeC0+TVNSICYgQ0FOX01PREVfTUFTSykgIT0gMCkKKyAgICB7CisgICAgICBzdGF0dXMgPSBDQU5fTW9kZVN0YXR1c19GYWlsZWQ7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICBzdGF0dXMgPSBDQU5fTW9kZVN0YXR1c19TdWNjZXNzOworICAgIH0KKyAgfQorICBlbHNlICBpZiAoQ0FOX09wZXJhdGluZ01vZGUgPT0gQ0FOX09wZXJhdGluZ01vZGVfU2xlZXApCisgIHsKKyAgICAvKiBSZXF1ZXN0IFNsZWVwIG1vZGUgKi8KKyAgICBDQU54LT5NQ1IgPSAodWludDMyX3QpKChDQU54LT5NQ1IgJiAodWludDMyX3QpKH4odWludDMyX3QpQ0FOX01DUl9JTlJRKSkgfCBDQU5fTUNSX1NMRUVQKTsKKworICAgIC8qIFdhaXQgdGhlIGFja25vd2xlZGdlICovCisgICAgd2hpbGUgKCgoQ0FOeC0+TVNSICYgQ0FOX01PREVfTUFTSykgIT0gQ0FOX01TUl9TTEFLKSAmJiAodGltZW91dCE9MCkpCisgICAgeworICAgICAgdGltZW91dC0tOworICAgIH0KKyAgICBpZiAoKENBTngtPk1TUiAmIENBTl9NT0RFX01BU0spICE9IENBTl9NU1JfU0xBSykKKyAgICB7CisgICAgICBzdGF0dXMgPSBDQU5fTW9kZVN0YXR1c19GYWlsZWQ7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICBzdGF0dXMgPSBDQU5fTW9kZVN0YXR1c19TdWNjZXNzOworICAgIH0KKyAgfQorICBlbHNlCisgIHsKKyAgICBzdGF0dXMgPSBDQU5fTW9kZVN0YXR1c19GYWlsZWQ7CisgIH0KKworICByZXR1cm4gICh1aW50OF90KSBzdGF0dXM7Cit9CisKKy8qKgorICAqIEBicmllZiAgRW50ZXJzIHRoZSBsb3cgcG93ZXIgbW9kZS4KKyAgKiBAcGFyYW0gIENBTng6ICAgd2hlcmUgeCBjYW4gYmUgMSBvciAyIHRvIHRvIHNlbGVjdCB0aGUgQ0FOIHBlcmlwaGVyYWwuCisgICogQHJldHZhbCBzdGF0dXM6IENBTl9TbGVlcF9PayBpZiBzbGVlcCBlbnRlcmVkLCBDQU5fU2xlZXBfRmFpbGVkIGluIGFuIAorICAqICAgICAgICAgICAgICAgICBvdGhlciBjYXNlLgorICAqLwordWludDhfdCBDQU5fU2xlZXAoQ0FOX1R5cGVEZWYqIENBTngpCit7CisgIHVpbnQ4X3Qgc2xlZXBzdGF0dXMgPSBDQU5fU2xlZXBfRmFpbGVkOworICAKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX0NBTl9BTExfUEVSSVBIKENBTngpKTsKKyAgICAKKyAgLyogUmVxdWVzdCBTbGVlcCBtb2RlICovCisgICBDQU54LT5NQ1IgPSAoKChDQU54LT5NQ1IpICYgKHVpbnQzMl90KSh+KHVpbnQzMl90KUNBTl9NQ1JfSU5SUSkpIHwgQ0FOX01DUl9TTEVFUCk7CisgICAKKyAgLyogU2xlZXAgbW9kZSBzdGF0dXMgKi8KKyAgaWYgKChDQU54LT5NU1IgJiAoQ0FOX01TUl9TTEFLfENBTl9NU1JfSU5BSykpID09IENBTl9NU1JfU0xBSykKKyAgeworICAgIC8qIFNsZWVwIG1vZGUgbm90IGVudGVyZWQgKi8KKyAgICBzbGVlcHN0YXR1cyA9ICBDQU5fU2xlZXBfT2s7CisgIH0KKyAgLyogcmV0dXJuIHNsZWVwIG1vZGUgc3RhdHVzICovCisgICByZXR1cm4gKHVpbnQ4X3Qpc2xlZXBzdGF0dXM7Cit9CisKKy8qKgorICAqIEBicmllZiAgV2FrZXMgdGhlIENBTiB1cC4KKyAgKiBAcGFyYW0gIENBTng6ICAgIHdoZXJlIHggY2FuIGJlIDEgb3IgMiB0byB0byBzZWxlY3QgdGhlIENBTiBwZXJpcGhlcmFsLgorICAqIEByZXR2YWwgc3RhdHVzOiAgQ0FOX1dha2VVcF9PayBpZiBzbGVlcCBtb2RlIGxlZnQsIENBTl9XYWtlVXBfRmFpbGVkIGluIGFuIAorICAqICAgICAgICAgICAgICAgICAgb3RoZXIgY2FzZS4KKyAgKi8KK3VpbnQ4X3QgQ0FOX1dha2VVcChDQU5fVHlwZURlZiogQ0FOeCkKK3sKKyAgdWludDMyX3Qgd2FpdF9zbGFrID0gU0xBS19USU1FT1VUOworICB1aW50OF90IHdha2V1cHN0YXR1cyA9IENBTl9XYWtlVXBfRmFpbGVkOworICAKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX0NBTl9BTExfUEVSSVBIKENBTngpKTsKKyAgICAKKyAgLyogV2FrZSB1cCByZXF1ZXN0ICovCisgIENBTngtPk1DUiAmPSB+KHVpbnQzMl90KUNBTl9NQ1JfU0xFRVA7CisgICAgCisgIC8qIFNsZWVwIG1vZGUgc3RhdHVzICovCisgIHdoaWxlKCgoQ0FOeC0+TVNSICYgQ0FOX01TUl9TTEFLKSA9PSBDQU5fTVNSX1NMQUspJiYod2FpdF9zbGFrIT0weDAwKSkKKyAgeworICAgd2FpdF9zbGFrLS07CisgIH0KKyAgaWYoKENBTngtPk1TUiAmIENBTl9NU1JfU0xBSykgIT0gQ0FOX01TUl9TTEFLKQorICB7CisgICAvKiB3YWtlIHVwIGRvbmUgOiBTbGVlcCBtb2RlIGV4aXRlZCAqLworICAgIHdha2V1cHN0YXR1cyA9IENBTl9XYWtlVXBfT2s7CisgIH0KKyAgLyogcmV0dXJuIHdha2V1cCBzdGF0dXMgKi8KKyAgcmV0dXJuICh1aW50OF90KXdha2V1cHN0YXR1czsKK30KKworCisvKioKKyAgKiBAYnJpZWYgIFJldHVybnMgdGhlIENBTngncyBsYXN0IGVycm9yIGNvZGUgKExFQykuCisgICogQHBhcmFtICBDQU54OiAgICAgICAgICB3aGVyZSB4IGNhbiBiZSAxIG9yIDIgdG8gdG8gc2VsZWN0IHRoZSBDQU4gcGVyaXBoZXJhbC4gIAorICAqIEByZXR2YWwgQ0FOX0Vycm9yQ29kZTogc3BlY2lmaWVzIHRoZSBFcnJvciBjb2RlIDogCisgICogICAgICAgICAgICAgICAgICAgICAgICAtIENBTl9FUlJPUkNPREVfTm9FcnIgICAgICAgICAgICBObyBFcnJvciAgCisgICogICAgICAgICAgICAgICAgICAgICAgICAtIENBTl9FUlJPUkNPREVfU3R1ZmZFcnIgICAgICAgICBTdHVmZiBFcnJvcgorICAqICAgICAgICAgICAgICAgICAgICAgICAgLSBDQU5fRVJST1JDT0RFX0Zvcm1FcnIgICAgICAgICAgRm9ybSBFcnJvcgorICAqICAgICAgICAgICAgICAgICAgICAgICAgLSBDQU5fRVJST1JDT0RFX0FDS0VyciAgICAgICAgICAgQWNrbm93bGVkZ21lbnQgRXJyb3IKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgIC0gQ0FOX0VSUk9SQ09ERV9CaXRSZWNlc3NpdmVFcnIgIEJpdCBSZWNlc3NpdmUgRXJyb3IKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgIC0gQ0FOX0VSUk9SQ09ERV9CaXREb21pbmFudEVyciAgIEJpdCBEb21pbmFudCBFcnJvcgorICAqICAgICAgICAgICAgICAgICAgICAgICAgLSBDQU5fRVJST1JDT0RFX0NSQ0VyciAgICAgICAgICAgQ1JDIEVycm9yCisgICogICAgICAgICAgICAgICAgICAgICAgICAtIENBTl9FUlJPUkNPREVfU29mdHdhcmVTZXRFcnIgICBTb2Z0d2FyZSBTZXQgRXJyb3IgIAorICAqLworIAordWludDhfdCBDQU5fR2V0TGFzdEVycm9yQ29kZShDQU5fVHlwZURlZiogQ0FOeCkKK3sKKyAgdWludDhfdCBlcnJvcmNvZGU9MDsKKyAgCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19DQU5fQUxMX1BFUklQSChDQU54KSk7CisgIAorICAvKiBHZXQgdGhlIGVycm9yIGNvZGUqLworICBlcnJvcmNvZGUgPSAoKCh1aW50OF90KUNBTngtPkVTUikgJiAodWludDhfdClDQU5fRVNSX0xFQyk7CisgIAorICAvKiBSZXR1cm4gdGhlIGVycm9yIGNvZGUqLworICByZXR1cm4gZXJyb3Jjb2RlOworfQorLyoqCisgICogQGJyaWVmICBSZXR1cm5zIHRoZSBDQU54IFJlY2VpdmUgRXJyb3IgQ291bnRlciAoUkVDKS4KKyAgKiBAbm90ZSAgIEluIGNhc2Ugb2YgYW4gZXJyb3IgZHVyaW5nIHJlY2VwdGlvbiwgdGhpcyBjb3VudGVyIGlzIGluY3JlbWVudGVkIAorICAqICAgICAgICAgYnkgMSBvciBieSA4IGRlcGVuZGluZyBvbiB0aGUgZXJyb3IgY29uZGl0aW9uIGFzIGRlZmluZWQgYnkgdGhlIENBTiAKKyAgKiAgICAgICAgIHN0YW5kYXJkLiBBZnRlciBldmVyeSBzdWNjZXNzZnVsIHJlY2VwdGlvbiwgdGhlIGNvdW50ZXIgaXMgCisgICogICAgICAgICBkZWNyZW1lbnRlZCBieSAxIG9yIHJlc2V0IHRvIDEyMCBpZiBpdHMgdmFsdWUgd2FzIGhpZ2hlciB0aGFuIDEyOC4gCisgICogICAgICAgICBXaGVuIHRoZSBjb3VudGVyIHZhbHVlIGV4Y2VlZHMgMTI3LCB0aGUgQ0FOIGNvbnRyb2xsZXIgZW50ZXJzIHRoZSAKKyAgKiAgICAgICAgIGVycm9yIHBhc3NpdmUgc3RhdGUuICAKKyAgKiBAcGFyYW0gIENBTng6IHdoZXJlIHggY2FuIGJlIDEgb3IgMiB0byB0byBzZWxlY3QgdGhlIENBTiBwZXJpcGhlcmFsLiAgCisgICogQHJldHZhbCBDQU4gUmVjZWl2ZSBFcnJvciBDb3VudGVyLiAKKyAgKi8KK3VpbnQ4X3QgQ0FOX0dldFJlY2VpdmVFcnJvckNvdW50ZXIoQ0FOX1R5cGVEZWYqIENBTngpCit7CisgIHVpbnQ4X3QgY291bnRlcj0wOworICAKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX0NBTl9BTExfUEVSSVBIKENBTngpKTsKKyAgCisgIC8qIEdldCB0aGUgUmVjZWl2ZSBFcnJvciBDb3VudGVyKi8KKyAgY291bnRlciA9ICh1aW50OF90KSgoQ0FOeC0+RVNSICYgQ0FOX0VTUl9SRUMpPj4gMjQpOworICAKKyAgLyogUmV0dXJuIHRoZSBSZWNlaXZlIEVycm9yIENvdW50ZXIqLworICByZXR1cm4gY291bnRlcjsKK30KKworCisvKioKKyAgKiBAYnJpZWYgIFJldHVybnMgdGhlIExTQiBvZiB0aGUgOS1iaXQgQ0FOeCBUcmFuc21pdCBFcnJvciBDb3VudGVyKFRFQykuCisgICogQHBhcmFtICBDQU54OiAgIHdoZXJlIHggY2FuIGJlIDEgb3IgMiB0byB0byBzZWxlY3QgdGhlIENBTiBwZXJpcGhlcmFsLiAgCisgICogQHJldHZhbCBMU0Igb2YgdGhlIDktYml0IENBTiBUcmFuc21pdCBFcnJvciBDb3VudGVyLiAKKyAgKi8KK3VpbnQ4X3QgQ0FOX0dldExTQlRyYW5zbWl0RXJyb3JDb3VudGVyKENBTl9UeXBlRGVmKiBDQU54KQoreworICB1aW50OF90IGNvdW50ZXI9MDsKKyAgCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19DQU5fQUxMX1BFUklQSChDQU54KSk7CisgIAorICAvKiBHZXQgdGhlIExTQiBvZiB0aGUgOS1iaXQgQ0FOeCBUcmFuc21pdCBFcnJvciBDb3VudGVyKFRFQykgKi8KKyAgY291bnRlciA9ICh1aW50OF90KSgoQ0FOeC0+RVNSICYgQ0FOX0VTUl9URUMpPj4gMTYpOworICAKKyAgLyogUmV0dXJuIHRoZSBMU0Igb2YgdGhlIDktYml0IENBTnggVHJhbnNtaXQgRXJyb3IgQ291bnRlcihURUMpICovCisgIHJldHVybiBjb3VudGVyOworfQorCisKKy8qKgorICAqIEBicmllZiAgRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgc3BlY2lmaWVkIENBTnggaW50ZXJydXB0cy4KKyAgKiBAcGFyYW0gIENBTng6ICAgd2hlcmUgeCBjYW4gYmUgMSBvciAyIHRvIHRvIHNlbGVjdCB0aGUgQ0FOIHBlcmlwaGVyYWwuCisgICogQHBhcmFtICBDQU5fSVQ6IHNwZWNpZmllcyB0aGUgQ0FOIGludGVycnVwdCBzb3VyY2VzIHRvIGJlIGVuYWJsZWQgb3IgZGlzYWJsZWQuCisgICogICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZTogCisgICogICAgICAgICAgICAgICAgIC0gQ0FOX0lUX1RNRSwgCisgICogICAgICAgICAgICAgICAgIC0gQ0FOX0lUX0ZNUDAsIAorICAqICAgICAgICAgICAgICAgICAtIENBTl9JVF9GRjAsCisgICogICAgICAgICAgICAgICAgIC0gQ0FOX0lUX0ZPVjAsIAorICAqICAgICAgICAgICAgICAgICAtIENBTl9JVF9GTVAxLCAKKyAgKiAgICAgICAgICAgICAgICAgLSBDQU5fSVRfRkYxLAorICAqICAgICAgICAgICAgICAgICAtIENBTl9JVF9GT1YxLCAKKyAgKiAgICAgICAgICAgICAgICAgLSBDQU5fSVRfRVdHLCAKKyAgKiAgICAgICAgICAgICAgICAgLSBDQU5fSVRfRVBWLAorICAqICAgICAgICAgICAgICAgICAtIENBTl9JVF9MRUMsIAorICAqICAgICAgICAgICAgICAgICAtIENBTl9JVF9FUlIsIAorICAqICAgICAgICAgICAgICAgICAtIENBTl9JVF9XS1Ugb3IgCisgICogICAgICAgICAgICAgICAgIC0gQ0FOX0lUX1NMSy4KKyAgKiBAcGFyYW0gIE5ld1N0YXRlOiBuZXcgc3RhdGUgb2YgdGhlIENBTiBpbnRlcnJ1cHRzLgorICAqICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZTogRU5BQkxFIG9yIERJU0FCTEUuCisgICogQHJldHZhbCBOb25lLgorICAqLwordm9pZCBDQU5fSVRDb25maWcoQ0FOX1R5cGVEZWYqIENBTngsIHVpbnQzMl90IENBTl9JVCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfQ0FOX0FMTF9QRVJJUEgoQ0FOeCkpOworICBhc3NlcnRfcGFyYW0oSVNfQ0FOX0lUKENBTl9JVCkpOworICBhc3NlcnRfcGFyYW0oSVNfRlVOQ1RJT05BTF9TVEFURShOZXdTdGF0ZSkpOworCisgIGlmIChOZXdTdGF0ZSAhPSBESVNBQkxFKQorICB7CisgICAgLyogRW5hYmxlIHRoZSBzZWxlY3RlZCBDQU54IGludGVycnVwdCAqLworICAgIENBTngtPklFUiB8PSBDQU5fSVQ7CisgIH0KKyAgZWxzZQorICB7CisgICAgLyogRGlzYWJsZSB0aGUgc2VsZWN0ZWQgQ0FOeCBpbnRlcnJ1cHQgKi8KKyAgICBDQU54LT5JRVIgJj0gfkNBTl9JVDsKKyAgfQorfQorLyoqCisgICogQGJyaWVmICBDaGVja3Mgd2hldGhlciB0aGUgc3BlY2lmaWVkIENBTiBmbGFnIGlzIHNldCBvciBub3QuCisgICogQHBhcmFtICBDQU54OiAgICAgd2hlcmUgeCBjYW4gYmUgMSBvciAyIHRvIHRvIHNlbGVjdCB0aGUgQ0FOIHBlcmlwaGVyYWwuCisgICogQHBhcmFtICBDQU5fRkxBRzogc3BlY2lmaWVzIHRoZSBmbGFnIHRvIGNoZWNrLgorICAqICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyBmbGFnczogCisgICogICAgICAgICAgICAgICAgICAtIENBTl9GTEFHX0VXRworICAqICAgICAgICAgICAgICAgICAgLSBDQU5fRkxBR19FUFYgCisgICogICAgICAgICAgICAgICAgICAtIENBTl9GTEFHX0JPRgorICAqICAgICAgICAgICAgICAgICAgLSBDQU5fRkxBR19SUUNQMAorICAqICAgICAgICAgICAgICAgICAgLSBDQU5fRkxBR19SUUNQMQorICAqICAgICAgICAgICAgICAgICAgLSBDQU5fRkxBR19SUUNQMgorICAqICAgICAgICAgICAgICAgICAgLSBDQU5fRkxBR19GTVAxICAgCisgICogICAgICAgICAgICAgICAgICAtIENBTl9GTEFHX0ZGMSAgICAgICAKKyAgKiAgICAgICAgICAgICAgICAgIC0gQ0FOX0ZMQUdfRk9WMSAgIAorICAqICAgICAgICAgICAgICAgICAgLSBDQU5fRkxBR19GTVAwICAgCisgICogICAgICAgICAgICAgICAgICAtIENBTl9GTEFHX0ZGMCAgICAgICAKKyAgKiAgICAgICAgICAgICAgICAgIC0gQ0FOX0ZMQUdfRk9WMCAgIAorICAqICAgICAgICAgICAgICAgICAgLSBDQU5fRkxBR19XS1UgCisgICogICAgICAgICAgICAgICAgICAtIENBTl9GTEFHX1NMQUsgIAorICAqICAgICAgICAgICAgICAgICAgLSBDQU5fRkxBR19MRUMgICAgICAgCisgICogQHJldHZhbCBUaGUgbmV3IHN0YXRlIG9mIENBTl9GTEFHIChTRVQgb3IgUkVTRVQpLgorICAqLworRmxhZ1N0YXR1cyBDQU5fR2V0RmxhZ1N0YXR1cyhDQU5fVHlwZURlZiogQ0FOeCwgdWludDMyX3QgQ0FOX0ZMQUcpCit7CisgIEZsYWdTdGF0dXMgYml0c3RhdHVzID0gUkVTRVQ7CisgIAorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfQ0FOX0FMTF9QRVJJUEgoQ0FOeCkpOworICBhc3NlcnRfcGFyYW0oSVNfQ0FOX0dFVF9GTEFHKENBTl9GTEFHKSk7CisgIAorCisgIGlmKChDQU5fRkxBRyAmIENBTl9GTEFHU19FU1IpICE9ICh1aW50MzJfdClSRVNFVCkKKyAgeyAKKyAgICAvKiBDaGVjayB0aGUgc3RhdHVzIG9mIHRoZSBzcGVjaWZpZWQgQ0FOIGZsYWcgKi8KKyAgICBpZiAoKENBTngtPkVTUiAmIChDQU5fRkxBRyAmIDB4MDAwRkZGRkYpKSAhPSAodWludDMyX3QpUkVTRVQpCisgICAgeyAKKyAgICAgIC8qIENBTl9GTEFHIGlzIHNldCAqLworICAgICAgYml0c3RhdHVzID0gU0VUOworICAgIH0KKyAgICBlbHNlCisgICAgeyAKKyAgICAgIC8qIENBTl9GTEFHIGlzIHJlc2V0ICovCisgICAgICBiaXRzdGF0dXMgPSBSRVNFVDsKKyAgICB9CisgIH0KKyAgZWxzZSBpZigoQ0FOX0ZMQUcgJiBDQU5fRkxBR1NfTVNSKSAhPSAodWludDMyX3QpUkVTRVQpCisgIHsgCisgICAgLyogQ2hlY2sgdGhlIHN0YXR1cyBvZiB0aGUgc3BlY2lmaWVkIENBTiBmbGFnICovCisgICAgaWYgKChDQU54LT5NU1IgJiAoQ0FOX0ZMQUcgJiAweDAwMEZGRkZGKSkgIT0gKHVpbnQzMl90KVJFU0VUKQorICAgIHsgCisgICAgICAvKiBDQU5fRkxBRyBpcyBzZXQgKi8KKyAgICAgIGJpdHN0YXR1cyA9IFNFVDsKKyAgICB9CisgICAgZWxzZQorICAgIHsgCisgICAgICAvKiBDQU5fRkxBRyBpcyByZXNldCAqLworICAgICAgYml0c3RhdHVzID0gUkVTRVQ7CisgICAgfQorICB9CisgIGVsc2UgaWYoKENBTl9GTEFHICYgQ0FOX0ZMQUdTX1RTUikgIT0gKHVpbnQzMl90KVJFU0VUKQorICB7IAorICAgIC8qIENoZWNrIHRoZSBzdGF0dXMgb2YgdGhlIHNwZWNpZmllZCBDQU4gZmxhZyAqLworICAgIGlmICgoQ0FOeC0+VFNSICYgKENBTl9GTEFHICYgMHgwMDBGRkZGRikpICE9ICh1aW50MzJfdClSRVNFVCkKKyAgICB7IAorICAgICAgLyogQ0FOX0ZMQUcgaXMgc2V0ICovCisgICAgICBiaXRzdGF0dXMgPSBTRVQ7CisgICAgfQorICAgIGVsc2UKKyAgICB7IAorICAgICAgLyogQ0FOX0ZMQUcgaXMgcmVzZXQgKi8KKyAgICAgIGJpdHN0YXR1cyA9IFJFU0VUOworICAgIH0KKyAgfQorICBlbHNlIGlmKChDQU5fRkxBRyAmIENBTl9GTEFHU19SRjBSKSAhPSAodWludDMyX3QpUkVTRVQpCisgIHsgCisgICAgLyogQ2hlY2sgdGhlIHN0YXR1cyBvZiB0aGUgc3BlY2lmaWVkIENBTiBmbGFnICovCisgICAgaWYgKChDQU54LT5SRjBSICYgKENBTl9GTEFHICYgMHgwMDBGRkZGRikpICE9ICh1aW50MzJfdClSRVNFVCkKKyAgICB7IAorICAgICAgLyogQ0FOX0ZMQUcgaXMgc2V0ICovCisgICAgICBiaXRzdGF0dXMgPSBTRVQ7CisgICAgfQorICAgIGVsc2UKKyAgICB7IAorICAgICAgLyogQ0FOX0ZMQUcgaXMgcmVzZXQgKi8KKyAgICAgIGJpdHN0YXR1cyA9IFJFU0VUOworICAgIH0KKyAgfQorICBlbHNlIC8qIElmKENBTl9GTEFHICYgQ0FOX0ZMQUdTX1JGMVIgIT0gKHVpbnQzMl90KVJFU0VUKSAqLworICB7IAorICAgIC8qIENoZWNrIHRoZSBzdGF0dXMgb2YgdGhlIHNwZWNpZmllZCBDQU4gZmxhZyAqLworICAgIGlmICgodWludDMyX3QpKENBTngtPlJGMVIgJiAoQ0FOX0ZMQUcgJiAweDAwMEZGRkZGKSkgIT0gKHVpbnQzMl90KVJFU0VUKQorICAgIHsgCisgICAgICAvKiBDQU5fRkxBRyBpcyBzZXQgKi8KKyAgICAgIGJpdHN0YXR1cyA9IFNFVDsKKyAgICB9CisgICAgZWxzZQorICAgIHsgCisgICAgICAvKiBDQU5fRkxBRyBpcyByZXNldCAqLworICAgICAgYml0c3RhdHVzID0gUkVTRVQ7CisgICAgfQorICB9CisgIC8qIFJldHVybiB0aGUgQ0FOX0ZMQUcgc3RhdHVzICovCisgIHJldHVybiAgYml0c3RhdHVzOworfQorCisvKioKKyAgKiBAYnJpZWYgIENsZWFycyB0aGUgQ0FOJ3MgcGVuZGluZyBmbGFncy4KKyAgKiBAcGFyYW0gIENBTng6ICAgICB3aGVyZSB4IGNhbiBiZSAxIG9yIDIgdG8gdG8gc2VsZWN0IHRoZSBDQU4gcGVyaXBoZXJhbC4KKyAgKiBAcGFyYW0gIENBTl9GTEFHOiBzcGVjaWZpZXMgdGhlIGZsYWcgdG8gY2xlYXIuCisgICogICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIGZsYWdzOiAKKyAgKiAgICAgICAgICAgICAgICAgICAgLSBDQU5fRkxBR19SUUNQMAorICAqICAgICAgICAgICAgICAgICAgICAtIENBTl9GTEFHX1JRQ1AxCisgICogICAgICAgICAgICAgICAgICAgIC0gQ0FOX0ZMQUdfUlFDUDIKKyAgKiAgICAgICAgICAgICAgICAgICAgLSBDQU5fRkxBR19GRjEgICAgICAgCisgICogICAgICAgICAgICAgICAgICAgIC0gQ0FOX0ZMQUdfRk9WMSAgIAorICAqICAgICAgICAgICAgICAgICAgICAtIENBTl9GTEFHX0ZGMCAgICAgICAKKyAgKiAgICAgICAgICAgICAgICAgICAgLSBDQU5fRkxBR19GT1YwICAgCisgICogICAgICAgICAgICAgICAgICAgIC0gQ0FOX0ZMQUdfV0tVICAgCisgICogICAgICAgICAgICAgICAgICAgIC0gQ0FOX0ZMQUdfU0xBSyAgICAKKyAgKiAgICAgICAgICAgICAgICAgICAgLSBDQU5fRkxBR19MRUMgICAgICAgCisgICogQHJldHZhbCBOb25lLgorICAqLwordm9pZCBDQU5fQ2xlYXJGbGFnKENBTl9UeXBlRGVmKiBDQU54LCB1aW50MzJfdCBDQU5fRkxBRykKK3sKKyAgdWludDMyX3QgZmxhZ3RtcD0wOworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfQ0FOX0FMTF9QRVJJUEgoQ0FOeCkpOworICBhc3NlcnRfcGFyYW0oSVNfQ0FOX0NMRUFSX0ZMQUcoQ0FOX0ZMQUcpKTsKKyAgCisgIGlmIChDQU5fRkxBRyA9PSBDQU5fRkxBR19MRUMpIC8qIEVTUiByZWdpc3RlciAqLworICB7CisgICAgLyogQ2xlYXIgdGhlIHNlbGVjdGVkIENBTiBmbGFncyAqLworICAgIENBTngtPkVTUiA9ICh1aW50MzJfdClSRVNFVDsKKyAgfQorICBlbHNlIC8qIE1TUiBvciBUU1Igb3IgUkYwUiBvciBSRjFSICovCisgIHsKKyAgICBmbGFndG1wID0gQ0FOX0ZMQUcgJiAweDAwMEZGRkZGOworCisgICAgaWYgKChDQU5fRkxBRyAmIENBTl9GTEFHU19SRjBSKSE9KHVpbnQzMl90KVJFU0VUKQorICAgIHsKKyAgICAgIC8qIFJlY2VpdmUgRmxhZ3MgKi8KKyAgICAgIENBTngtPlJGMFIgPSAodWludDMyX3QpKGZsYWd0bXApOworICAgIH0KKyAgICBlbHNlIGlmICgoQ0FOX0ZMQUcgJiBDQU5fRkxBR1NfUkYxUikhPSh1aW50MzJfdClSRVNFVCkKKyAgICB7CisgICAgICAvKiBSZWNlaXZlIEZsYWdzICovCisgICAgICBDQU54LT5SRjFSID0gKHVpbnQzMl90KShmbGFndG1wKTsKKyAgICB9CisgICAgZWxzZSBpZiAoKENBTl9GTEFHICYgQ0FOX0ZMQUdTX1RTUikhPSh1aW50MzJfdClSRVNFVCkKKyAgICB7CisgICAgICAvKiBUcmFuc21pdCBGbGFncyAqLworICAgICAgQ0FOeC0+VFNSID0gKHVpbnQzMl90KShmbGFndG1wKTsKKyAgICB9CisgICAgZWxzZSAvKiBJZigoQ0FOX0ZMQUcgJiBDQU5fRkxBR1NfTVNSKSE9KHVpbnQzMl90KVJFU0VUKSAqLworICAgIHsKKyAgICAgIC8qIE9wZXJhdGluZyBtb2RlIEZsYWdzICovCisgICAgICBDQU54LT5NU1IgPSAodWludDMyX3QpKGZsYWd0bXApOworICAgIH0KKyAgfQorfQorCisvKioKKyAgKiBAYnJpZWYgIENoZWNrcyB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgQ0FOeCBpbnRlcnJ1cHQgaGFzIG9jY3VycmVkIG9yIG5vdC4KKyAgKiBAcGFyYW0gIENBTng6ICAgIHdoZXJlIHggY2FuIGJlIDEgb3IgMiB0byB0byBzZWxlY3QgdGhlIENBTiBwZXJpcGhlcmFsLgorICAqIEBwYXJhbSAgQ0FOX0lUOiAgc3BlY2lmaWVzIHRoZSBDQU4gaW50ZXJydXB0IHNvdXJjZSB0byBjaGVjay4KKyAgKiAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyBmbGFnczogCisgICogICAgICAgICAgICAgICAgIC0gIENBTl9JVF9UTUUgICAgICAgICAgICAgICAKKyAgKiAgICAgICAgICAgICAgICAgLSAgQ0FOX0lUX0ZNUDAgICAgICAgICAgICAgIAorICAqICAgICAgICAgICAgICAgICAtICBDQU5fSVRfRkYwICAgICAgICAgICAgICAgCisgICogICAgICAgICAgICAgICAgIC0gIENBTl9JVF9GT1YwICAgICAgICAgICAgICAKKyAgKiAgICAgICAgICAgICAgICAgLSAgQ0FOX0lUX0ZNUDEgICAgICAgICAgICAgIAorICAqICAgICAgICAgICAgICAgICAtICBDQU5fSVRfRkYxICAgICAgICAgICAgICAgCisgICogICAgICAgICAgICAgICAgIC0gIENBTl9JVF9GT1YxICAgICAgICAgICAgICAKKyAgKiAgICAgICAgICAgICAgICAgLSAgQ0FOX0lUX1dLVSAgCisgICogICAgICAgICAgICAgICAgIC0gIENBTl9JVF9TTEsgIAorICAqICAgICAgICAgICAgICAgICAtICBDQU5fSVRfRVdHICAgIAorICAqICAgICAgICAgICAgICAgICAtICBDQU5fSVRfRVBWICAgIAorICAqICAgICAgICAgICAgICAgICAtICBDQU5fSVRfQk9GICAgIAorICAqICAgICAgICAgICAgICAgICAtICBDQU5fSVRfTEVDICAgIAorICAqICAgICAgICAgICAgICAgICAtICBDQU5fSVRfRVJSIAorICAqIEByZXR2YWwgVGhlIGN1cnJlbnQgc3RhdGUgb2YgQ0FOX0lUIChTRVQgb3IgUkVTRVQpLgorICAqLworSVRTdGF0dXMgQ0FOX0dldElUU3RhdHVzKENBTl9UeXBlRGVmKiBDQU54LCB1aW50MzJfdCBDQU5fSVQpCit7CisgIElUU3RhdHVzIGl0c3RhdHVzID0gUkVTRVQ7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19DQU5fQUxMX1BFUklQSChDQU54KSk7CisgIGFzc2VydF9wYXJhbShJU19DQU5fSVQoQ0FOX0lUKSk7CisgIAorICAvKiBjaGVjayB0aGUgZW5hYmxlIGludGVycnVwdCBiaXQgKi8KKyBpZigoQ0FOeC0+SUVSICYgQ0FOX0lUKSAhPSBSRVNFVCkKKyB7CisgICAvKiBpbiBjYXNlIHRoZSBJbnRlcnJ1cHQgaXMgZW5hYmxlZCwgLi4uLiAqLworICAgIHN3aXRjaCAoQ0FOX0lUKQorICAgIHsKKyAgICAgIGNhc2UgQ0FOX0lUX1RNRToKKyAgICAgICAgICAgICAgIC8qIENoZWNrIENBTl9UU1JfUlFDUHggYml0cyAqLworCSAgICAgICAgICAgICBpdHN0YXR1cyA9IENoZWNrSVRTdGF0dXMoQ0FOeC0+VFNSLCBDQU5fVFNSX1JRQ1AwfENBTl9UU1JfUlFDUDF8Q0FOX1RTUl9SUUNQMik7ICAKKwkgICAgICBicmVhazsKKyAgICAgIGNhc2UgQ0FOX0lUX0ZNUDA6CisgICAgICAgICAgICAgICAvKiBDaGVjayBDQU5fUkYwUl9GTVAwIGJpdCAqLworCSAgICAgICAgICAgICBpdHN0YXR1cyA9IENoZWNrSVRTdGF0dXMoQ0FOeC0+UkYwUiwgQ0FOX1JGMFJfRk1QMCk7ICAKKwkgICAgICBicmVhazsKKyAgICAgIGNhc2UgQ0FOX0lUX0ZGMDoKKyAgICAgICAgICAgICAgIC8qIENoZWNrIENBTl9SRjBSX0ZVTEwwIGJpdCAqLworICAgICAgICAgICAgICAgaXRzdGF0dXMgPSBDaGVja0lUU3RhdHVzKENBTngtPlJGMFIsIENBTl9SRjBSX0ZVTEwwKTsgIAorCSAgICAgIGJyZWFrOworICAgICAgY2FzZSBDQU5fSVRfRk9WMDoKKyAgICAgICAgICAgICAgIC8qIENoZWNrIENBTl9SRjBSX0ZPVlIwIGJpdCAqLworICAgICAgICAgICAgICAgaXRzdGF0dXMgPSBDaGVja0lUU3RhdHVzKENBTngtPlJGMFIsIENBTl9SRjBSX0ZPVlIwKTsgIAorCSAgICAgIGJyZWFrOworICAgICAgY2FzZSBDQU5fSVRfRk1QMToKKyAgICAgICAgICAgICAgIC8qIENoZWNrIENBTl9SRjFSX0ZNUDEgYml0ICovCisgICAgICAgICAgICAgICBpdHN0YXR1cyA9IENoZWNrSVRTdGF0dXMoQ0FOeC0+UkYxUiwgQ0FOX1JGMVJfRk1QMSk7ICAKKwkgICAgICBicmVhazsKKyAgICAgIGNhc2UgQ0FOX0lUX0ZGMToKKyAgICAgICAgICAgICAgIC8qIENoZWNrIENBTl9SRjFSX0ZVTEwxIGJpdCAqLworCSAgICAgICAgICAgICBpdHN0YXR1cyA9IENoZWNrSVRTdGF0dXMoQ0FOeC0+UkYxUiwgQ0FOX1JGMVJfRlVMTDEpOyAgCisJICAgICAgYnJlYWs7CisgICAgICBjYXNlIENBTl9JVF9GT1YxOgorICAgICAgICAgICAgICAgLyogQ2hlY2sgQ0FOX1JGMVJfRk9WUjEgYml0ICovCisJICAgICAgICAgICAgIGl0c3RhdHVzID0gQ2hlY2tJVFN0YXR1cyhDQU54LT5SRjFSLCBDQU5fUkYxUl9GT1ZSMSk7ICAKKwkgICAgICBicmVhazsKKyAgICAgIGNhc2UgQ0FOX0lUX1dLVToKKyAgICAgICAgICAgICAgIC8qIENoZWNrIENBTl9NU1JfV0tVSSBiaXQgKi8KKyAgICAgICAgICAgICAgIGl0c3RhdHVzID0gQ2hlY2tJVFN0YXR1cyhDQU54LT5NU1IsIENBTl9NU1JfV0tVSSk7ICAKKwkgICAgICBicmVhazsKKyAgICAgIGNhc2UgQ0FOX0lUX1NMSzoKKyAgICAgICAgICAgICAgIC8qIENoZWNrIENBTl9NU1JfU0xBS0kgYml0ICovCisJICAgICAgICAgICAgIGl0c3RhdHVzID0gQ2hlY2tJVFN0YXR1cyhDQU54LT5NU1IsIENBTl9NU1JfU0xBS0kpOyAgCisJICAgICAgYnJlYWs7CisgICAgICBjYXNlIENBTl9JVF9FV0c6CisgICAgICAgICAgICAgICAvKiBDaGVjayBDQU5fRVNSX0VXR0YgYml0ICovCisJICAgICAgICAgICAgIGl0c3RhdHVzID0gQ2hlY2tJVFN0YXR1cyhDQU54LT5FU1IsIENBTl9FU1JfRVdHRik7ICAKKwkgICAgICBicmVhazsKKyAgICAgIGNhc2UgQ0FOX0lUX0VQVjoKKyAgICAgICAgICAgICAgIC8qIENoZWNrIENBTl9FU1JfRVBWRiBiaXQgKi8KKwkgICAgICAgICAgICAgaXRzdGF0dXMgPSBDaGVja0lUU3RhdHVzKENBTngtPkVTUiwgQ0FOX0VTUl9FUFZGKTsgIAorCSAgICAgIGJyZWFrOworICAgICAgY2FzZSBDQU5fSVRfQk9GOgorICAgICAgICAgICAgICAgLyogQ2hlY2sgQ0FOX0VTUl9CT0ZGIGJpdCAqLworCSAgICAgICAgICAgICBpdHN0YXR1cyA9IENoZWNrSVRTdGF0dXMoQ0FOeC0+RVNSLCBDQU5fRVNSX0JPRkYpOyAgCisJICAgICAgYnJlYWs7CisgICAgICBjYXNlIENBTl9JVF9MRUM6CisgICAgICAgICAgICAgICAvKiBDaGVjayBDQU5fRVNSX0xFQyBiaXQgKi8KKwkgICAgICAgICAgICAgaXRzdGF0dXMgPSBDaGVja0lUU3RhdHVzKENBTngtPkVTUiwgQ0FOX0VTUl9MRUMpOyAgCisJICAgICAgYnJlYWs7CisgICAgICBjYXNlIENBTl9JVF9FUlI6CisgICAgICAgICAgICAgICAvKiBDaGVjayBDQU5fTVNSX0VSUkkgYml0ICovIAorICAgICAgICAgICAgICAgaXRzdGF0dXMgPSBDaGVja0lUU3RhdHVzKENBTngtPk1TUiwgQ0FOX01TUl9FUlJJKTsgCisJICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0IDoKKyAgICAgICAgICAgICAgIC8qIGluIGNhc2Ugb2YgZXJyb3IsIHJldHVybiBSRVNFVCAqLworICAgICAgICAgICAgICBpdHN0YXR1cyA9IFJFU0VUOworICAgICAgICAgICAgICBicmVhazsKKyAgICB9CisgIH0KKyAgZWxzZQorICB7CisgICAvKiBpbiBjYXNlIHRoZSBJbnRlcnJ1cHQgaXMgbm90IGVuYWJsZWQsIHJldHVybiBSRVNFVCAqLworICAgIGl0c3RhdHVzICA9IFJFU0VUOworICB9CisgIAorICAvKiBSZXR1cm4gdGhlIENBTl9JVCBzdGF0dXMgKi8KKyAgcmV0dXJuICBpdHN0YXR1czsKK30KKworLyoqCisgICogQGJyaWVmICBDbGVhcnMgdGhlIENBTngncyBpbnRlcnJ1cHQgcGVuZGluZyBiaXRzLgorICAqIEBwYXJhbSAgQ0FOeDogICAgd2hlcmUgeCBjYW4gYmUgMSBvciAyIHRvIHRvIHNlbGVjdCB0aGUgQ0FOIHBlcmlwaGVyYWwuCisgICogQHBhcmFtICBDQU5fSVQ6IHNwZWNpZmllcyB0aGUgaW50ZXJydXB0IHBlbmRpbmcgYml0IHRvIGNsZWFyLgorICAqICAgICAgICAgICAgICAgICAgLSAgQ0FOX0lUX1RNRSAgICAgICAgICAgICAgICAgICAgIAorICAqICAgICAgICAgICAgICAgICAgLSAgQ0FOX0lUX0ZGMCAgICAgICAgICAgICAgIAorICAqICAgICAgICAgICAgICAgICAgLSAgQ0FOX0lUX0ZPVjAgICAgICAgICAgICAgICAgICAgICAKKyAgKiAgICAgICAgICAgICAgICAgIC0gIENBTl9JVF9GRjEgICAgICAgICAgICAgICAKKyAgKiAgICAgICAgICAgICAgICAgIC0gIENBTl9JVF9GT1YxICAgICAgICAgICAgICAKKyAgKiAgICAgICAgICAgICAgICAgIC0gIENBTl9JVF9XS1UgIAorICAqICAgICAgICAgICAgICAgICAgLSAgQ0FOX0lUX1NMSyAgCisgICogICAgICAgICAgICAgICAgICAtICBDQU5fSVRfRVdHICAgIAorICAqICAgICAgICAgICAgICAgICAgLSAgQ0FOX0lUX0VQViAgICAKKyAgKiAgICAgICAgICAgICAgICAgIC0gIENBTl9JVF9CT0YgICAgCisgICogICAgICAgICAgICAgICAgICAtICBDQU5fSVRfTEVDICAgIAorICAqICAgICAgICAgICAgICAgICAgLSAgQ0FOX0lUX0VSUiAKKyAgKiBAcmV0dmFsIE5vbmUuCisgICovCit2b2lkIENBTl9DbGVhcklUUGVuZGluZ0JpdChDQU5fVHlwZURlZiogQ0FOeCwgdWludDMyX3QgQ0FOX0lUKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfQ0FOX0FMTF9QRVJJUEgoQ0FOeCkpOworICBhc3NlcnRfcGFyYW0oSVNfQ0FOX0NMRUFSX0lUKENBTl9JVCkpOworCisgIHN3aXRjaCAoQ0FOX0lUKQorICB7CisgICAgICBjYXNlIENBTl9JVF9UTUU6CisgICAgICAgICAgICAgIC8qIENsZWFyIENBTl9UU1JfUlFDUHggKHJjX3cxKSovCisJICAgICAgQ0FOeC0+VFNSID0gQ0FOX1RTUl9SUUNQMHxDQU5fVFNSX1JRQ1AxfENBTl9UU1JfUlFDUDI7ICAKKwkgICAgICBicmVhazsKKyAgICAgIGNhc2UgQ0FOX0lUX0ZGMDoKKyAgICAgICAgICAgICAgLyogQ2xlYXIgQ0FOX1JGMFJfRlVMTDAgKHJjX3cxKSovCisJICAgICAgQ0FOeC0+UkYwUiA9IENBTl9SRjBSX0ZVTEwwOyAKKwkgICAgICBicmVhazsKKyAgICAgIGNhc2UgQ0FOX0lUX0ZPVjA6CisgICAgICAgICAgICAgIC8qIENsZWFyIENBTl9SRjBSX0ZPVlIwIChyY193MSkqLworCSAgICAgIENBTngtPlJGMFIgPSBDQU5fUkYwUl9GT1ZSMDsgCisJICAgICAgYnJlYWs7CisgICAgICBjYXNlIENBTl9JVF9GRjE6CisgICAgICAgICAgICAgIC8qIENsZWFyIENBTl9SRjFSX0ZVTEwxIChyY193MSkqLworCSAgICAgIENBTngtPlJGMVIgPSBDQU5fUkYxUl9GVUxMMTsgIAorCSAgICAgIGJyZWFrOworICAgICAgY2FzZSBDQU5fSVRfRk9WMToKKyAgICAgICAgICAgICAgLyogQ2xlYXIgQ0FOX1JGMVJfRk9WUjEgKHJjX3cxKSovCisJICAgICAgQ0FOeC0+UkYxUiA9IENBTl9SRjFSX0ZPVlIxOyAKKwkgICAgICBicmVhazsKKyAgICAgIGNhc2UgQ0FOX0lUX1dLVToKKyAgICAgICAgICAgICAgLyogQ2xlYXIgQ0FOX01TUl9XS1VJIChyY193MSkqLworCSAgICAgIENBTngtPk1TUiA9IENBTl9NU1JfV0tVSTsgIAorCSAgICAgIGJyZWFrOworICAgICAgY2FzZSBDQU5fSVRfU0xLOgorICAgICAgICAgICAgICAvKiBDbGVhciBDQU5fTVNSX1NMQUtJIChyY193MSkqLyAKKwkgICAgICBDQU54LT5NU1IgPSBDQU5fTVNSX1NMQUtJOyAgIAorCSAgICAgIGJyZWFrOworICAgICAgY2FzZSBDQU5fSVRfRVdHOgorICAgICAgICAgICAgICAvKiBDbGVhciBDQU5fTVNSX0VSUkkgKHJjX3cxKSAqLworCSAgICAgIENBTngtPk1TUiA9IENBTl9NU1JfRVJSSTsKKyAgICAgICAgICAgICAgLyogTm90ZSA6IHRoZSBjb3JyZXNwb25kaW5nIEZsYWcgaXMgY2xlYXJlZCBieSBoYXJkd2FyZSBkZXBlbmRpbmcgCisgICAgICAgICAgICAgICAgICAgICAgICBvZiB0aGUgQ0FOIEJ1cyBzdGF0dXMqLyAKKwkgICAgICBicmVhazsKKyAgICAgIGNhc2UgQ0FOX0lUX0VQVjoKKyAgICAgICAgICAgICAgLyogQ2xlYXIgQ0FOX01TUl9FUlJJIChyY193MSkgKi8KKwkgICAgICBDQU54LT5NU1IgPSBDQU5fTVNSX0VSUkk7IAorICAgICAgICAgICAgICAvKiBOb3RlIDogdGhlIGNvcnJlc3BvbmRpbmcgRmxhZyBpcyBjbGVhcmVkIGJ5IGhhcmR3YXJlIGRlcGVuZGluZyAKKyAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBDQU4gQnVzIHN0YXR1cyovCisJICAgICAgYnJlYWs7CisgICAgICBjYXNlIENBTl9JVF9CT0Y6CisgICAgICAgICAgICAgIC8qIENsZWFyIENBTl9NU1JfRVJSSSAocmNfdzEpICovIAorCSAgICAgIENBTngtPk1TUiA9IENBTl9NU1JfRVJSSTsgCisgICAgICAgICAgICAgIC8qIE5vdGUgOiB0aGUgY29ycmVzcG9uZGluZyBGbGFnIGlzIGNsZWFyZWQgYnkgaGFyZHdhcmUgZGVwZW5kaW5nIAorICAgICAgICAgICAgICAgICAgICAgICAgb2YgdGhlIENBTiBCdXMgc3RhdHVzKi8KKwkgICAgICBicmVhazsKKyAgICAgIGNhc2UgQ0FOX0lUX0xFQzoKKyAgICAgICAgICAgICAgLyogIENsZWFyIExFQyBiaXRzICovCisJICAgICAgQ0FOeC0+RVNSID0gUkVTRVQ7IAorICAgICAgICAgICAgICAvKiBDbGVhciBDQU5fTVNSX0VSUkkgKHJjX3cxKSAqLworCSAgICAgIENBTngtPk1TUiA9IENBTl9NU1JfRVJSSTsgCisJICAgICAgYnJlYWs7CisgICAgICBjYXNlIENBTl9JVF9FUlI6CisgICAgICAgICAgICAgIC8qQ2xlYXIgTEVDIGJpdHMgKi8KKwkgICAgICBDQU54LT5FU1IgPSBSRVNFVDsgCisgICAgICAgICAgICAgIC8qIENsZWFyIENBTl9NU1JfRVJSSSAocmNfdzEpICovCisJICAgICAgQ0FOeC0+TVNSID0gQ0FOX01TUl9FUlJJOyAKKwkgICAgICAvKiBOb3RlIDogQk9GRiwgRVBWRiBhbmQgRVdHRiBGbGFncyBhcmUgY2xlYXJlZCBieSBoYXJkd2FyZSBkZXBlbmRpbmcgCisgICAgICAgICAgICAgICAgICBvZiB0aGUgQ0FOIEJ1cyBzdGF0dXMqLworCSAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdCA6CisJICAgICAgYnJlYWs7CisgICB9Cit9CisKKy8qKgorICAqIEBicmllZiAgQ2hlY2tzIHdoZXRoZXIgdGhlIENBTiBpbnRlcnJ1cHQgaGFzIG9jY3VycmVkIG9yIG5vdC4KKyAgKiBAcGFyYW0gIENBTl9SZWc6IHNwZWNpZmllcyB0aGUgQ0FOIGludGVycnVwdCByZWdpc3RlciB0byBjaGVjay4KKyAgKiBAcGFyYW0gIEl0X0JpdDogIHNwZWNpZmllcyB0aGUgaW50ZXJydXB0IHNvdXJjZSBiaXQgdG8gY2hlY2suCisgICogQHJldHZhbCBUaGUgbmV3IHN0YXRlIG9mIHRoZSBDQU4gSW50ZXJydXB0IChTRVQgb3IgUkVTRVQpLgorICAqLworc3RhdGljIElUU3RhdHVzIENoZWNrSVRTdGF0dXModWludDMyX3QgQ0FOX1JlZywgdWludDMyX3QgSXRfQml0KQoreworICBJVFN0YXR1cyBwZW5kaW5nYml0c3RhdHVzID0gUkVTRVQ7CisgIAorICBpZiAoKENBTl9SZWcgJiBJdF9CaXQpICE9ICh1aW50MzJfdClSRVNFVCkKKyAgeworICAgIC8qIENBTl9JVCBpcyBzZXQgKi8KKyAgICBwZW5kaW5nYml0c3RhdHVzID0gU0VUOworICB9CisgIGVsc2UKKyAgeworICAgIC8qIENBTl9JVCBpcyByZXNldCAqLworICAgIHBlbmRpbmdiaXRzdGF0dXMgPSBSRVNFVDsKKyAgfQorICByZXR1cm4gcGVuZGluZ2JpdHN0YXR1czsKK30KKworCisvKioKKyAgKiBAfQorICAqLworCisvKioKKyAgKiBAfQorICAqLworCisvKioKKyAgKiBAfQorICAqLworCisvKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIDIwMTEgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvc3RfZndfbGliL3NyYy9zdG0zMmYxMHhfY2VjLmMgYi9zdF9md19saWIvc3JjL3N0bTMyZjEweF9jZWMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZGM2MTVmCi0tLSAvZGV2L251bGwKKysrIGIvc3RfZndfbGliL3NyYy9zdG0zMmYxMHhfY2VjLmMKQEAgLTAsMCArMSw0MzMgQEAKKy8qKgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKiBAZmlsZSAgICBzdG0zMmYxMHhfY2VjLmMKKyAgKiBAYXV0aG9yICBNQ0QgQXBwbGljYXRpb24gVGVhbQorICAqIEB2ZXJzaW9uIFYzLjUuMAorICAqIEBkYXRlICAgIDExLU1hcmNoLTIwMTEKKyAgKiBAYnJpZWYgICBUaGlzIGZpbGUgcHJvdmlkZXMgYWxsIHRoZSBDRUMgZmlybXdhcmUgZnVuY3Rpb25zLgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKiBAYXR0ZW50aW9uCisgICoKKyAgKiBUSEUgUFJFU0VOVCBGSVJNV0FSRSBXSElDSCBJUyBGT1IgR1VJREFOQ0UgT05MWSBBSU1TIEFUIFBST1ZJRElORyBDVVNUT01FUlMKKyAgKiBXSVRIIENPRElORyBJTkZPUk1BVElPTiBSRUdBUkRJTkcgVEhFSVIgUFJPRFVDVFMgSU4gT1JERVIgRk9SIFRIRU0gVE8gU0FWRQorICAqIFRJTUUuIEFTIEEgUkVTVUxULCBTVE1JQ1JPRUxFQ1RST05JQ1MgU0hBTEwgTk9UIEJFIEhFTEQgTElBQkxFIEZPUiBBTlkKKyAgKiBESVJFQ1QsIElORElSRUNUIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBXSVRIIFJFU1BFQ1QgVE8gQU5ZIENMQUlNUyBBUklTSU5HCisgICogRlJPTSBUSEUgQ09OVEVOVCBPRiBTVUNIIEZJUk1XQVJFIEFORC9PUiBUSEUgVVNFIE1BREUgQlkgQ1VTVE9NRVJTIE9GIFRIRQorICAqIENPRElORyBJTkZPUk1BVElPTiBDT05UQUlORUQgSEVSRUlOIElOIENPTk5FQ1RJT04gV0lUSCBUSEVJUiBQUk9EVUNUUy4KKyAgKgorICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDT1BZUklHSFQgMjAxMSBTVE1pY3JvZWxlY3Ryb25pY3M8L2NlbnRlcj48L2gyPgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKi8KKworLyogSW5jbHVkZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyNpbmNsdWRlICJzdG0zMmYxMHhfY2VjLmgiCisjaW5jbHVkZSAic3RtMzJmMTB4X3JjYy5oIgorCisvKiogQGFkZHRvZ3JvdXAgU1RNMzJGMTB4X1N0ZFBlcmlwaF9Ecml2ZXIKKyAgKiBAeworICAqLworCisvKiogQGRlZmdyb3VwIENFQyAKKyAgKiBAYnJpZWYgQ0VDIGRyaXZlciBtb2R1bGVzCisgICogQHsKKyAgKi8KKworLyoqIEBkZWZncm91cCBDRUNfUHJpdmF0ZV9UeXBlc0RlZmluaXRpb25zCisgICogQHsKKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworCisvKiogQGRlZmdyb3VwIENFQ19Qcml2YXRlX0RlZmluZXMKKyAgKiBAeworICAqLyAKKworLyogLS0tLS0tLS0tLS0tIENFQyByZWdpc3RlcnMgYml0IGFkZHJlc3MgaW4gdGhlIGFsaWFzIHJlZ2lvbiAtLS0tLS0tLS0tLSAqLworI2RlZmluZSBDRUNfT0ZGU0VUICAgICAgICAgICAgICAgIChDRUNfQkFTRSAtIFBFUklQSF9CQVNFKQorCisvKiAtLS0gQ0ZHUiBSZWdpc3RlciAtLS0qLworCisvKiBBbGlhcyB3b3JkIGFkZHJlc3Mgb2YgUEUgYml0ICovCisjZGVmaW5lIENGR1JfT0ZGU0VUICAgICAgICAgICAgICAgICAoQ0VDX09GRlNFVCArIDB4MDApCisjZGVmaW5lIFBFX0JpdE51bWJlciAgICAgICAgICAgICAgICAweDAwCisjZGVmaW5lIENGR1JfUEVfQkIgICAgICAgICAgICAgICAgICAoUEVSSVBIX0JCX0JBU0UgKyAoQ0ZHUl9PRkZTRVQgKiAzMikgKyAoUEVfQml0TnVtYmVyICogNCkpCisKKy8qIEFsaWFzIHdvcmQgYWRkcmVzcyBvZiBJRSBiaXQgKi8KKyNkZWZpbmUgSUVfQml0TnVtYmVyICAgICAgICAgICAgICAgIDB4MDEKKyNkZWZpbmUgQ0ZHUl9JRV9CQiAgICAgICAgICAgICAgICAgIChQRVJJUEhfQkJfQkFTRSArIChDRkdSX09GRlNFVCAqIDMyKSArIChJRV9CaXROdW1iZXIgKiA0KSkKKworLyogLS0tIENTUiBSZWdpc3RlciAtLS0qLworCisvKiBBbGlhcyB3b3JkIGFkZHJlc3Mgb2YgVFNPTSBiaXQgKi8KKyNkZWZpbmUgQ1NSX09GRlNFVCAgICAgICAgICAgICAgICAgIChDRUNfT0ZGU0VUICsgMHgxMCkKKyNkZWZpbmUgVFNPTV9CaXROdW1iZXIgICAgICAgICAgICAgIDB4MDAKKyNkZWZpbmUgQ1NSX1RTT01fQkIgICAgICAgICAgICAgICAgIChQRVJJUEhfQkJfQkFTRSArIChDU1JfT0ZGU0VUICogMzIpICsgKFRTT01fQml0TnVtYmVyICogNCkpCisKKy8qIEFsaWFzIHdvcmQgYWRkcmVzcyBvZiBURU9NIGJpdCAqLworI2RlZmluZSBURU9NX0JpdE51bWJlciAgICAgICAgICAgICAgMHgwMQorI2RlZmluZSBDU1JfVEVPTV9CQiAgICAgICAgICAgICAgICAgKFBFUklQSF9CQl9CQVNFICsgKENTUl9PRkZTRVQgKiAzMikgKyAoVEVPTV9CaXROdW1iZXIgKiA0KSkKKyAgCisjZGVmaW5lIENGR1JfQ0xFQVJfTWFzayAgICAgICAgICAgICh1aW50OF90KSgweEYzKSAgICAgICAgLyogQ0ZHUiByZWdpc3RlciBNYXNrICovCisjZGVmaW5lIEZMQUdfTWFzayAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMEZGRkZGRikgLyogQ0VDIEZMQUcgbWFzayAqLworIAorLyoqCisgICogQH0KKyAgKi8gCisKKworLyoqIEBkZWZncm91cCBDRUNfUHJpdmF0ZV9NYWNyb3MKKyAgKiBAeworICAqLyAKKworLyoqCisgICogQH0KKyAgKi8gCisKKworLyoqIEBkZWZncm91cCBDRUNfUHJpdmF0ZV9WYXJpYWJsZXMKKyAgKiBAeworICAqLyAKKworLyoqCisgICogQH0KKyAgKi8gCisKKworLyoqIEBkZWZncm91cCBDRUNfUHJpdmF0ZV9GdW5jdGlvblByb3RvdHlwZXMKKyAgKiBAeworICAqLworIAorLyoqCisgICogQH0KKyAgKi8gCisKKworLyoqIEBkZWZncm91cCBDRUNfUHJpdmF0ZV9GdW5jdGlvbnMKKyAgKiBAeworICAqLyAKKworLyoqCisgICogQGJyaWVmICBEZWluaXRpYWxpemVzIHRoZSBDRUMgcGVyaXBoZXJhbCByZWdpc3RlcnMgdG8gdGhlaXIgZGVmYXVsdCByZXNldCAKKyAgKiAgICAgICAgIHZhbHVlcy4KKyAgKiBAcGFyYW0gIE5vbmUKKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgQ0VDX0RlSW5pdCh2b2lkKQoreworICAvKiBFbmFibGUgQ0VDIHJlc2V0IHN0YXRlICovCisgIFJDQ19BUEIxUGVyaXBoUmVzZXRDbWQoUkNDX0FQQjFQZXJpcGhfQ0VDLCBFTkFCTEUpOyAgCisgIC8qIFJlbGVhc2UgQ0VDIGZyb20gcmVzZXQgc3RhdGUgKi8KKyAgUkNDX0FQQjFQZXJpcGhSZXNldENtZChSQ0NfQVBCMVBlcmlwaF9DRUMsIERJU0FCTEUpOyAKK30KKworCisvKioKKyAgKiBAYnJpZWYgIEluaXRpYWxpemVzIHRoZSBDRUMgcGVyaXBoZXJhbCBhY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmllZCAKKyAgKiAgICAgICAgIHBhcmFtZXRlcnMgaW4gdGhlIENFQ19Jbml0U3RydWN0LgorICAqIEBwYXJhbSAgQ0VDX0luaXRTdHJ1Y3Q6IHBvaW50ZXIgdG8gYW4gQ0VDX0luaXRUeXBlRGVmIHN0cnVjdHVyZSB0aGF0CisgICogICAgICAgICBjb250YWlucyB0aGUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBmb3IgdGhlIHNwZWNpZmllZAorICAqICAgICAgICAgQ0VDIHBlcmlwaGVyYWwuCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIENFQ19Jbml0KENFQ19Jbml0VHlwZURlZiogQ0VDX0luaXRTdHJ1Y3QpCit7CisgIHVpbnQxNl90IHRtcHJlZyA9IDA7CisgCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19DRUNfQklUX1RJTUlOR19FUlJPUl9NT0RFKENFQ19Jbml0U3RydWN0LT5DRUNfQml0VGltaW5nTW9kZSkpOyAKKyAgYXNzZXJ0X3BhcmFtKElTX0NFQ19CSVRfUEVSSU9EX0VSUk9SX01PREUoQ0VDX0luaXRTdHJ1Y3QtPkNFQ19CaXRQZXJpb2RNb2RlKSk7CisgICAgIAorICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ0VDIENGR1IgQ29uZmlndXJhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLSovCisgIC8qIEdldCB0aGUgQ0VDIENGR1IgdmFsdWUgKi8KKyAgdG1wcmVnID0gQ0VDLT5DRkdSOworICAKKyAgLyogQ2xlYXIgQlRFTSBhbmQgQlBFTSBiaXRzICovCisgIHRtcHJlZyAmPSBDRkdSX0NMRUFSX01hc2s7CisgIAorICAvKiBDb25maWd1cmUgQ0VDOiBCaXQgVGltaW5nIEVycm9yIGFuZCBCaXQgUGVyaW9kIEVycm9yICovCisgIHRtcHJlZyB8PSAodWludDE2X3QpKENFQ19Jbml0U3RydWN0LT5DRUNfQml0VGltaW5nTW9kZSB8IENFQ19Jbml0U3RydWN0LT5DRUNfQml0UGVyaW9kTW9kZSk7CisKKyAgLyogV3JpdGUgdG8gQ0VDIENGR1IgIHJlZ2lzdGVyKi8KKyAgQ0VDLT5DRkdSID0gdG1wcmVnOworICAKK30KKworLyoqCisgICogQGJyaWVmICBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBzcGVjaWZpZWQgQ0VDIHBlcmlwaGVyYWwuCisgICogQHBhcmFtICBOZXdTdGF0ZTogbmV3IHN0YXRlIG9mIHRoZSBDRUMgcGVyaXBoZXJhbC4gCisgICogICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZTogRU5BQkxFIG9yIERJU0FCTEUuCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIENFQ19DbWQoRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfRlVOQ1RJT05BTF9TVEFURShOZXdTdGF0ZSkpOworCisgICooX19JTyB1aW50MzJfdCAqKSBDRkdSX1BFX0JCID0gKHVpbnQzMl90KU5ld1N0YXRlOworCisgIGlmKE5ld1N0YXRlID09IERJU0FCTEUpCisgIHsKKyAgICAvKiBXYWl0IHVudGlsIHRoZSBQRSBiaXQgaXMgY2xlYXJlZCBieSBoYXJkd2FyZSAoSWRsZSBMaW5lIGRldGVjdGVkKSAqLworICAgIHdoaWxlKChDRUMtPkNGR1IgJiBDRUNfQ0ZHUl9QRSkgIT0gKHVpbnQzMl90KVJFU0VUKQorICAgIHsKKyAgICB9ICAKKyAgfSAgCit9CisKKy8qKgorICAqIEBicmllZiAgRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgQ0VDIGludGVycnVwdC4KKyAgKiBAcGFyYW0gIE5ld1N0YXRlOiBuZXcgc3RhdGUgb2YgdGhlIENFQyBpbnRlcnJ1cHQuCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmU6IEVOQUJMRSBvciBESVNBQkxFLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBDRUNfSVRDb25maWcoRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfRlVOQ1RJT05BTF9TVEFURShOZXdTdGF0ZSkpOworCisgICooX19JTyB1aW50MzJfdCAqKSBDRkdSX0lFX0JCID0gKHVpbnQzMl90KU5ld1N0YXRlOworfQorCisvKioKKyAgKiBAYnJpZWYgIERlZmluZXMgdGhlIE93biBBZGRyZXNzIG9mIHRoZSBDRUMgZGV2aWNlLgorICAqIEBwYXJhbSAgQ0VDX093bkFkZHJlc3M6IFRoZSBDRUMgb3duIGFkZHJlc3MKKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgQ0VDX093bkFkZHJlc3NDb25maWcodWludDhfdCBDRUNfT3duQWRkcmVzcykKK3sKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX0NFQ19BRERSRVNTKENFQ19Pd25BZGRyZXNzKSk7CisKKyAgLyogU2V0IHRoZSBDRUMgb3duIGFkZHJlc3MgKi8KKyAgQ0VDLT5PQVIgPSBDRUNfT3duQWRkcmVzczsKK30KKworLyoqCisgICogQGJyaWVmICBTZXRzIHRoZSBDRUMgcHJlc2NhbGVyIHZhbHVlLgorICAqIEBwYXJhbSAgQ0VDX1ByZXNjYWxlcjogQ0VDIHByZXNjYWxlciBuZXcgdmFsdWUKKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgQ0VDX1NldFByZXNjYWxlcih1aW50MTZfdCBDRUNfUHJlc2NhbGVyKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfQ0VDX1BSRVNDQUxFUihDRUNfUHJlc2NhbGVyKSk7CisKKyAgLyogU2V0IHRoZSAgUHJlc2NhbGVyIHZhbHVlKi8KKyAgQ0VDLT5QUkVTID0gQ0VDX1ByZXNjYWxlcjsKK30KKworLyoqCisgICogQGJyaWVmICBUcmFuc21pdHMgc2luZ2xlIGRhdGEgdGhyb3VnaCB0aGUgQ0VDIHBlcmlwaGVyYWwuCisgICogQHBhcmFtICBEYXRhOiB0aGUgZGF0YSB0byB0cmFuc21pdC4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgQ0VDX1NlbmREYXRhQnl0ZSh1aW50OF90IERhdGEpCit7ICAKKyAgLyogVHJhbnNtaXQgRGF0YSAqLworICBDRUMtPlRYRCA9IERhdGEgOworfQorCisKKy8qKgorICAqIEBicmllZiAgUmV0dXJucyB0aGUgbW9zdCByZWNlbnQgcmVjZWl2ZWQgZGF0YSBieSB0aGUgQ0VDIHBlcmlwaGVyYWwuCisgICogQHBhcmFtICBOb25lCisgICogQHJldHZhbCBUaGUgcmVjZWl2ZWQgZGF0YS4KKyAgKi8KK3VpbnQ4X3QgQ0VDX1JlY2VpdmVEYXRhQnl0ZSh2b2lkKQoreworICAvKiBSZWNlaXZlIERhdGEgKi8KKyAgcmV0dXJuICh1aW50OF90KShDRUMtPlJYRCk7Cit9CisKKy8qKgorICAqIEBicmllZiAgU3RhcnRzIGEgbmV3IG1lc3NhZ2UuCisgICogQHBhcmFtICBOb25lCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIENFQ19TdGFydE9mTWVzc2FnZSh2b2lkKQoreyAgCisgIC8qIFN0YXJ0cyBvZiBuZXcgbWVzc2FnZSAqLworICAqKF9fSU8gdWludDMyX3QgKikgQ1NSX1RTT01fQkIgPSAodWludDMyX3QpMHgxOworfQorCisvKioKKyAgKiBAYnJpZWYgIFRyYW5zbWl0cyBtZXNzYWdlIHdpdGggb3Igd2l0aG91dCBhbiBFT00gYml0LgorICAqIEBwYXJhbSAgTmV3U3RhdGU6IG5ldyBzdGF0ZSBvZiB0aGUgQ0VDIFR4IEVuZCBPZiBNZXNzYWdlLiAKKyAgKiAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlOiBFTkFCTEUgb3IgRElTQUJMRS4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgQ0VDX0VuZE9mTWVzc2FnZUNtZChGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpCit7ICAgCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19GVU5DVElPTkFMX1NUQVRFKE5ld1N0YXRlKSk7CisgIAorICAvKiBUaGUgZGF0YSBieXRlIHdpbGwgYmUgdHJhbnNtaXR0ZWQgd2l0aCBvciB3aXRob3V0IGFuIEVPTSBiaXQqLworICAqKF9fSU8gdWludDMyX3QgKikgQ1NSX1RFT01fQkIgPSAodWludDMyX3QpTmV3U3RhdGU7Cit9CisKKy8qKgorICAqIEBicmllZiAgR2V0cyB0aGUgQ0VDIGZsYWcgc3RhdHVzCisgICogQHBhcmFtICBDRUNfRkxBRzogc3BlY2lmaWVzIHRoZSBDRUMgZmxhZyB0byBjaGVjay4gCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIENFQ19GTEFHX0JURTogQml0IFRpbWluZyBFcnJvcgorICAqICAgICBAYXJnIENFQ19GTEFHX0JQRTogQml0IFBlcmlvZCBFcnJvcgorICAqICAgICBAYXJnIENFQ19GTEFHX1JCVEZFOiBSeCBCbG9jayBUcmFuc2ZlciBGaW5pc2hlZCBFcnJvcgorICAqICAgICBAYXJnIENFQ19GTEFHX1NCRTogU3RhcnQgQml0IEVycm9yCisgICogICAgIEBhcmcgQ0VDX0ZMQUdfQUNLRTogQmxvY2sgQWNrbm93bGVkZ2UgRXJyb3IKKyAgKiAgICAgQGFyZyBDRUNfRkxBR19MSU5FOiBMaW5lIEVycm9yCisgICogICAgIEBhcmcgQ0VDX0ZMQUdfVEJURkU6IFR4IEJsb2NrIFRyYW5zZmVyIEZpbmlzaGVkIEVycm9yCisgICogICAgIEBhcmcgQ0VDX0ZMQUdfVEVPTTogVHggRW5kIE9mIE1lc3NhZ2UgCisgICogICAgIEBhcmcgQ0VDX0ZMQUdfVEVSUjogVHggRXJyb3IKKyAgKiAgICAgQGFyZyBDRUNfRkxBR19UQlRSRjogVHggQnl0ZSBUcmFuc2ZlciBSZXF1ZXN0IG9yIEJsb2NrIFRyYW5zZmVyIEZpbmlzaGVkCisgICogICAgIEBhcmcgQ0VDX0ZMQUdfUlNPTTogUnggU3RhcnQgT2YgTWVzc2FnZQorICAqICAgICBAYXJnIENFQ19GTEFHX1JFT006IFJ4IEVuZCBPZiBNZXNzYWdlCisgICogICAgIEBhcmcgQ0VDX0ZMQUdfUkVSUjogUnggRXJyb3IKKyAgKiAgICAgQGFyZyBDRUNfRkxBR19SQlRGOiBSeCBCeXRlL0Jsb2NrIFRyYW5zZmVyIEZpbmlzaGVkCisgICogQHJldHZhbCBUaGUgbmV3IHN0YXRlIG9mIENFQ19GTEFHIChTRVQgb3IgUkVTRVQpCisgICovCitGbGFnU3RhdHVzIENFQ19HZXRGbGFnU3RhdHVzKHVpbnQzMl90IENFQ19GTEFHKSAKK3sKKyAgRmxhZ1N0YXR1cyBiaXRzdGF0dXMgPSBSRVNFVDsKKyAgdWludDMyX3QgY2VjcmVnID0gMCwgY2VjYmFzZSA9IDA7CisgIAorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfQ0VDX0dFVF9GTEFHKENFQ19GTEFHKSk7CisgCisgIC8qIEdldCB0aGUgQ0VDIHBlcmlwaGVyYWwgYmFzZSBhZGRyZXNzICovCisgIGNlY2Jhc2UgPSAodWludDMyX3QpKENFQ19CQVNFKTsKKyAgCisgIC8qIFJlYWQgZmxhZyByZWdpc3RlciBpbmRleCAqLworICBjZWNyZWcgPSBDRUNfRkxBRyA+PiAyODsKKyAgCisgIC8qIEdldCBiaXRbMjM6MF0gb2YgdGhlIGZsYWcgKi8KKyAgQ0VDX0ZMQUcgJj0gRkxBR19NYXNrOworICAKKyAgaWYoY2VjcmVnICE9IDApCisgIHsKKyAgICAvKiBGbGFnIGluIENFQyBFU1IgUmVnaXN0ZXIgKi8KKyAgICBDRUNfRkxBRyA9ICh1aW50MzJfdCkoQ0VDX0ZMQUcgPj4gMTYpOworICAgIAorICAgIC8qIEdldCB0aGUgQ0VDIEVTUiByZWdpc3RlciBhZGRyZXNzICovCisgICAgY2VjYmFzZSArPSAweEM7CisgIH0KKyAgZWxzZQorICB7CisgICAgLyogR2V0IHRoZSBDRUMgQ1NSIHJlZ2lzdGVyIGFkZHJlc3MgKi8KKyAgICBjZWNiYXNlICs9IDB4MTA7CisgIH0KKyAgCisgIGlmKCgoKihfX0lPIHVpbnQzMl90ICopY2VjYmFzZSkgJiBDRUNfRkxBRykgIT0gKHVpbnQzMl90KVJFU0VUKQorICB7CisgICAgLyogQ0VDX0ZMQUcgaXMgc2V0ICovCisgICAgYml0c3RhdHVzID0gU0VUOworICB9CisgIGVsc2UKKyAgeworICAgIC8qIENFQ19GTEFHIGlzIHJlc2V0ICovCisgICAgYml0c3RhdHVzID0gUkVTRVQ7CisgIH0KKyAgCisgIC8qIFJldHVybiB0aGUgQ0VDX0ZMQUcgc3RhdHVzICovCisgIHJldHVybiAgYml0c3RhdHVzOworfQorCisvKioKKyAgKiBAYnJpZWYgIENsZWFycyB0aGUgQ0VDJ3MgcGVuZGluZyBmbGFncy4KKyAgKiBAcGFyYW0gIENFQ19GTEFHOiBzcGVjaWZpZXMgdGhlIGZsYWcgdG8gY2xlYXIuIAorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGFueSBjb21iaW5hdGlvbiBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBDRUNfRkxBR19URVJSOiBUeCBFcnJvcgorICAqICAgICBAYXJnIENFQ19GTEFHX1RCVFJGOiBUeCBCeXRlIFRyYW5zZmVyIFJlcXVlc3Qgb3IgQmxvY2sgVHJhbnNmZXIgRmluaXNoZWQKKyAgKiAgICAgQGFyZyBDRUNfRkxBR19SU09NOiBSeCBTdGFydCBPZiBNZXNzYWdlCisgICogICAgIEBhcmcgQ0VDX0ZMQUdfUkVPTTogUnggRW5kIE9mIE1lc3NhZ2UKKyAgKiAgICAgQGFyZyBDRUNfRkxBR19SRVJSOiBSeCBFcnJvcgorICAqICAgICBAYXJnIENFQ19GTEFHX1JCVEY6IFJ4IEJ5dGUvQmxvY2sgVHJhbnNmZXIgRmluaXNoZWQKKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgQ0VDX0NsZWFyRmxhZyh1aW50MzJfdCBDRUNfRkxBRykKK3sgCisgIHVpbnQzMl90IHRtcCA9IDB4MDsKKyAgCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19DRUNfQ0xFQVJfRkxBRyhDRUNfRkxBRykpOworCisgIHRtcCA9IENFQy0+Q1NSICYgMHgyOworICAgICAgIAorICAvKiBDbGVhciB0aGUgc2VsZWN0ZWQgQ0VDIGZsYWdzICovCisgIENFQy0+Q1NSICY9ICh1aW50MzJfdCkoKCh+KHVpbnQzMl90KUNFQ19GTEFHKSAmIDB4RkZGRkZGRkMpIHwgdG1wKTsKK30KKworLyoqCisgICogQGJyaWVmICBDaGVja3Mgd2hldGhlciB0aGUgc3BlY2lmaWVkIENFQyBpbnRlcnJ1cHQgaGFzIG9jY3VycmVkIG9yIG5vdC4KKyAgKiBAcGFyYW0gIENFQ19JVDogc3BlY2lmaWVzIHRoZSBDRUMgaW50ZXJydXB0IHNvdXJjZSB0byBjaGVjay4gCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIENFQ19JVF9URVJSOiBUeCBFcnJvcgorICAqICAgICBAYXJnIENFQ19JVF9UQlRGOiBUeCBCbG9jayBUcmFuc2ZlciBGaW5pc2hlZAorICAqICAgICBAYXJnIENFQ19JVF9SRVJSOiBSeCBFcnJvcgorICAqICAgICBAYXJnIENFQ19JVF9SQlRGOiBSeCBCbG9jayBUcmFuc2ZlciBGaW5pc2hlZAorICAqIEByZXR2YWwgVGhlIG5ldyBzdGF0ZSBvZiBDRUNfSVQgKFNFVCBvciBSRVNFVCkuCisgICovCitJVFN0YXR1cyBDRUNfR2V0SVRTdGF0dXModWludDhfdCBDRUNfSVQpCit7CisgIElUU3RhdHVzIGJpdHN0YXR1cyA9IFJFU0VUOworICB1aW50MzJfdCBlbmFibGVzdGF0dXMgPSAwOworICAKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgIGFzc2VydF9wYXJhbShJU19DRUNfR0VUX0lUKENFQ19JVCkpOworICAgCisgIC8qIEdldCB0aGUgQ0VDIElUIGVuYWJsZSBiaXQgc3RhdHVzICovCisgIGVuYWJsZXN0YXR1cyA9IChDRUMtPkNGR1IgJiAodWludDhfdClDRUNfQ0ZHUl9JRSkgOworICAKKyAgLyogQ2hlY2sgdGhlIHN0YXR1cyBvZiB0aGUgc3BlY2lmaWVkIENFQyBpbnRlcnJ1cHQgKi8KKyAgaWYgKCgoQ0VDLT5DU1IgJiBDRUNfSVQpICE9ICh1aW50MzJfdClSRVNFVCkgJiYgZW5hYmxlc3RhdHVzKQorICB7CisgICAgLyogQ0VDX0lUIGlzIHNldCAqLworICAgIGJpdHN0YXR1cyA9IFNFVDsKKyAgfQorICBlbHNlCisgIHsKKyAgICAvKiBDRUNfSVQgaXMgcmVzZXQgKi8KKyAgICBiaXRzdGF0dXMgPSBSRVNFVDsKKyAgfQorICAvKiBSZXR1cm4gdGhlIENFQ19JVCBzdGF0dXMgKi8KKyAgcmV0dXJuICBiaXRzdGF0dXM7Cit9CisKKy8qKgorICAqIEBicmllZiAgQ2xlYXJzIHRoZSBDRUMncyBpbnRlcnJ1cHQgcGVuZGluZyBiaXRzLgorICAqIEBwYXJhbSAgQ0VDX0lUOiBzcGVjaWZpZXMgdGhlIENFQyBpbnRlcnJ1cHQgcGVuZGluZyBiaXQgdG8gY2xlYXIuCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYW55IGNvbWJpbmF0aW9uIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIENFQ19JVF9URVJSOiBUeCBFcnJvcgorICAqICAgICBAYXJnIENFQ19JVF9UQlRGOiBUeCBCbG9jayBUcmFuc2ZlciBGaW5pc2hlZAorICAqICAgICBAYXJnIENFQ19JVF9SRVJSOiBSeCBFcnJvcgorICAqICAgICBAYXJnIENFQ19JVF9SQlRGOiBSeCBCbG9jayBUcmFuc2ZlciBGaW5pc2hlZAorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBDRUNfQ2xlYXJJVFBlbmRpbmdCaXQodWludDE2X3QgQ0VDX0lUKQoreworICB1aW50MzJfdCB0bXAgPSAweDA7CisgIAorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfQ0VDX0dFVF9JVChDRUNfSVQpKTsKKyAgCisgIHRtcCA9IENFQy0+Q1NSICYgMHgyOworICAKKyAgLyogQ2xlYXIgdGhlIHNlbGVjdGVkIENFQyBpbnRlcnJ1cHQgcGVuZGluZyBiaXRzICovCisgIENFQy0+Q1NSICY9ICh1aW50MzJfdCkoKCh+KHVpbnQzMl90KUNFQ19JVCkgJiAweEZGRkZGRkZDKSB8IHRtcCk7Cit9CisKKy8qKgorICAqIEB9CisgICovIAorCisvKioKKyAgKiBAfQorICAqLyAKKworLyoqCisgICogQH0KKyAgKi8gCisKKy8qKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgMjAxMSBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9zdF9md19saWIvc3JjL3N0bTMyZjEweF9jcmMuYyBiL3N0X2Z3X2xpYi9zcmMvc3RtMzJmMTB4X2NyYy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1MDE3MjgKLS0tIC9kZXYvbnVsbAorKysgYi9zdF9md19saWIvc3JjL3N0bTMyZjEweF9jcmMuYwpAQCAtMCwwICsxLDE2MCBAQAorLyoqCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqIEBmaWxlICAgIHN0bTMyZjEweF9jcmMuYworICAqIEBhdXRob3IgIE1DRCBBcHBsaWNhdGlvbiBUZWFtCisgICogQHZlcnNpb24gVjMuNS4wCisgICogQGRhdGUgICAgMTEtTWFyY2gtMjAxMQorICAqIEBicmllZiAgIFRoaXMgZmlsZSBwcm92aWRlcyBhbGwgdGhlIENSQyBmaXJtd2FyZSBmdW5jdGlvbnMuCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqIEBhdHRlbnRpb24KKyAgKgorICAqIFRIRSBQUkVTRU5UIEZJUk1XQVJFIFdISUNIIElTIEZPUiBHVUlEQU5DRSBPTkxZIEFJTVMgQVQgUFJPVklESU5HIENVU1RPTUVSUworICAqIFdJVEggQ09ESU5HIElORk9STUFUSU9OIFJFR0FSRElORyBUSEVJUiBQUk9EVUNUUyBJTiBPUkRFUiBGT1IgVEhFTSBUTyBTQVZFCisgICogVElNRS4gQVMgQSBSRVNVTFQsIFNUTUlDUk9FTEVDVFJPTklDUyBTSEFMTCBOT1QgQkUgSEVMRCBMSUFCTEUgRk9SIEFOWQorICAqIERJUkVDVCwgSU5ESVJFQ1QgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIFdJVEggUkVTUEVDVCBUTyBBTlkgQ0xBSU1TIEFSSVNJTkcKKyAgKiBGUk9NIFRIRSBDT05URU5UIE9GIFNVQ0ggRklSTVdBUkUgQU5EL09SIFRIRSBVU0UgTUFERSBCWSBDVVNUT01FUlMgT0YgVEhFCisgICogQ09ESU5HIElORk9STUFUSU9OIENPTlRBSU5FRCBIRVJFSU4gSU4gQ09OTkVDVElPTiBXSVRIIFRIRUlSIFBST0RVQ1RTLgorICAqCisgICogPGgyPjxjZW50ZXI+JmNvcHk7IENPUFlSSUdIVCAyMDExIFNUTWljcm9lbGVjdHJvbmljczwvY2VudGVyPjwvaDI+CisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqLworCisvKiBJbmNsdWRlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworI2luY2x1ZGUgInN0bTMyZjEweF9jcmMuaCIKKworLyoqIEBhZGR0b2dyb3VwIFNUTTMyRjEweF9TdGRQZXJpcGhfRHJpdmVyCisgICogQHsKKyAgKi8KKworLyoqIEBkZWZncm91cCBDUkMgCisgICogQGJyaWVmIENSQyBkcml2ZXIgbW9kdWxlcworICAqIEB7CisgICovCisKKy8qKiBAZGVmZ3JvdXAgQ1JDX1ByaXZhdGVfVHlwZXNEZWZpbml0aW9ucworICAqIEB7CisgICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgQ1JDX1ByaXZhdGVfRGVmaW5lcworICAqIEB7CisgICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgQ1JDX1ByaXZhdGVfTWFjcm9zCisgICogQHsKKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBDUkNfUHJpdmF0ZV9WYXJpYWJsZXMKKyAgKiBAeworICAqLworCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIENSQ19Qcml2YXRlX0Z1bmN0aW9uUHJvdG90eXBlcworICAqIEB7CisgICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgQ1JDX1ByaXZhdGVfRnVuY3Rpb25zCisgICogQHsKKyAgKi8KKworLyoqCisgICogQGJyaWVmICBSZXNldHMgdGhlIENSQyBEYXRhIHJlZ2lzdGVyIChEUikuCisgICogQHBhcmFtICBOb25lCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIENSQ19SZXNldERSKHZvaWQpCit7CisgIC8qIFJlc2V0IENSQyBnZW5lcmF0b3IgKi8KKyAgQ1JDLT5DUiA9IENSQ19DUl9SRVNFVDsKK30KKworLyoqCisgICogQGJyaWVmICBDb21wdXRlcyB0aGUgMzItYml0IENSQyBvZiBhIGdpdmVuIGRhdGEgd29yZCgzMi1iaXQpLgorICAqIEBwYXJhbSAgRGF0YTogZGF0YSB3b3JkKDMyLWJpdCkgdG8gY29tcHV0ZSBpdHMgQ1JDCisgICogQHJldHZhbCAzMi1iaXQgQ1JDCisgICovCit1aW50MzJfdCBDUkNfQ2FsY0NSQyh1aW50MzJfdCBEYXRhKQoreworICBDUkMtPkRSID0gRGF0YTsKKyAgCisgIHJldHVybiAoQ1JDLT5EUik7Cit9CisKKy8qKgorICAqIEBicmllZiAgQ29tcHV0ZXMgdGhlIDMyLWJpdCBDUkMgb2YgYSBnaXZlbiBidWZmZXIgb2YgZGF0YSB3b3JkKDMyLWJpdCkuCisgICogQHBhcmFtICBwQnVmZmVyOiBwb2ludGVyIHRvIHRoZSBidWZmZXIgY29udGFpbmluZyB0aGUgZGF0YSB0byBiZSBjb21wdXRlZAorICAqIEBwYXJhbSAgQnVmZmVyTGVuZ3RoOiBsZW5ndGggb2YgdGhlIGJ1ZmZlciB0byBiZSBjb21wdXRlZAkJCQkJCisgICogQHJldHZhbCAzMi1iaXQgQ1JDCisgICovCit1aW50MzJfdCBDUkNfQ2FsY0Jsb2NrQ1JDKHVpbnQzMl90IHBCdWZmZXJbXSwgdWludDMyX3QgQnVmZmVyTGVuZ3RoKQoreworICB1aW50MzJfdCBpbmRleCA9IDA7CisgIAorICBmb3IoaW5kZXggPSAwOyBpbmRleCA8IEJ1ZmZlckxlbmd0aDsgaW5kZXgrKykKKyAgeworICAgIENSQy0+RFIgPSBwQnVmZmVyW2luZGV4XTsKKyAgfQorICByZXR1cm4gKENSQy0+RFIpOworfQorCisvKioKKyAgKiBAYnJpZWYgIFJldHVybnMgdGhlIGN1cnJlbnQgQ1JDIHZhbHVlLgorICAqIEBwYXJhbSAgTm9uZQorICAqIEByZXR2YWwgMzItYml0IENSQworICAqLwordWludDMyX3QgQ1JDX0dldENSQyh2b2lkKQoreworICByZXR1cm4gKENSQy0+RFIpOworfQorCisvKioKKyAgKiBAYnJpZWYgIFN0b3JlcyBhIDgtYml0IGRhdGEgaW4gdGhlIEluZGVwZW5kZW50IERhdGEoSUQpIHJlZ2lzdGVyLgorICAqIEBwYXJhbSAgSURWYWx1ZTogOC1iaXQgdmFsdWUgdG8gYmUgc3RvcmVkIGluIHRoZSBJRCByZWdpc3RlciAJCQkJCQorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBDUkNfU2V0SURSZWdpc3Rlcih1aW50OF90IElEVmFsdWUpCit7CisgIENSQy0+SURSID0gSURWYWx1ZTsKK30KKworLyoqCisgICogQGJyaWVmICBSZXR1cm5zIHRoZSA4LWJpdCBkYXRhIHN0b3JlZCBpbiB0aGUgSW5kZXBlbmRlbnQgRGF0YShJRCkgcmVnaXN0ZXIKKyAgKiBAcGFyYW0gIE5vbmUKKyAgKiBAcmV0dmFsIDgtYml0IHZhbHVlIG9mIHRoZSBJRCByZWdpc3RlciAKKyAgKi8KK3VpbnQ4X3QgQ1JDX0dldElEUmVnaXN0ZXIodm9pZCkKK3sKKyAgcmV0dXJuIChDUkMtPklEUik7Cit9CisKKy8qKgorICAqIEB9CisgICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgMjAxMSBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9zdF9md19saWIvc3JjL3N0bTMyZjEweF9kYWMuYyBiL3N0X2Z3X2xpYi9zcmMvc3RtMzJmMTB4X2RhYy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjZmM3MWQKLS0tIC9kZXYvbnVsbAorKysgYi9zdF9md19saWIvc3JjL3N0bTMyZjEweF9kYWMuYwpAQCAtMCwwICsxLDU3MSBAQAorLyoqCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqIEBmaWxlICAgIHN0bTMyZjEweF9kYWMuYworICAqIEBhdXRob3IgIE1DRCBBcHBsaWNhdGlvbiBUZWFtCisgICogQHZlcnNpb24gVjMuNS4wCisgICogQGRhdGUgICAgMTEtTWFyY2gtMjAxMQorICAqIEBicmllZiAgIFRoaXMgZmlsZSBwcm92aWRlcyBhbGwgdGhlIERBQyBmaXJtd2FyZSBmdW5jdGlvbnMuCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqIEBhdHRlbnRpb24KKyAgKgorICAqIFRIRSBQUkVTRU5UIEZJUk1XQVJFIFdISUNIIElTIEZPUiBHVUlEQU5DRSBPTkxZIEFJTVMgQVQgUFJPVklESU5HIENVU1RPTUVSUworICAqIFdJVEggQ09ESU5HIElORk9STUFUSU9OIFJFR0FSRElORyBUSEVJUiBQUk9EVUNUUyBJTiBPUkRFUiBGT1IgVEhFTSBUTyBTQVZFCisgICogVElNRS4gQVMgQSBSRVNVTFQsIFNUTUlDUk9FTEVDVFJPTklDUyBTSEFMTCBOT1QgQkUgSEVMRCBMSUFCTEUgRk9SIEFOWQorICAqIERJUkVDVCwgSU5ESVJFQ1QgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIFdJVEggUkVTUEVDVCBUTyBBTlkgQ0xBSU1TIEFSSVNJTkcKKyAgKiBGUk9NIFRIRSBDT05URU5UIE9GIFNVQ0ggRklSTVdBUkUgQU5EL09SIFRIRSBVU0UgTUFERSBCWSBDVVNUT01FUlMgT0YgVEhFCisgICogQ09ESU5HIElORk9STUFUSU9OIENPTlRBSU5FRCBIRVJFSU4gSU4gQ09OTkVDVElPTiBXSVRIIFRIRUlSIFBST0RVQ1RTLgorICAqCisgICogPGgyPjxjZW50ZXI+JmNvcHk7IENPUFlSSUdIVCAyMDExIFNUTWljcm9lbGVjdHJvbmljczwvY2VudGVyPjwvaDI+CisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqLworCisvKiBJbmNsdWRlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworI2luY2x1ZGUgInN0bTMyZjEweF9kYWMuaCIKKyNpbmNsdWRlICJzdG0zMmYxMHhfcmNjLmgiCisKKy8qKiBAYWRkdG9ncm91cCBTVE0zMkYxMHhfU3RkUGVyaXBoX0RyaXZlcgorICAqIEB7CisgICovCisKKy8qKiBAZGVmZ3JvdXAgREFDIAorICAqIEBicmllZiBEQUMgZHJpdmVyIG1vZHVsZXMKKyAgKiBAeworICAqLyAKKworLyoqIEBkZWZncm91cCBEQUNfUHJpdmF0ZV9UeXBlc0RlZmluaXRpb25zCisgICogQHsKKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBEQUNfUHJpdmF0ZV9EZWZpbmVzCisgICogQHsKKyAgKi8KKworLyogQ1IgcmVnaXN0ZXIgTWFzayAqLworI2RlZmluZSBDUl9DTEVBUl9NQVNLICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDBGRkUpCisKKy8qIERBQyBEdWFsIENoYW5uZWxzIFNXVFJJRyBtYXNrcyAqLworI2RlZmluZSBEVUFMX1NXVFJJR19TRVQgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDMpCisjZGVmaW5lIERVQUxfU1dUUklHX1JFU0VUICAgICAgICAgICgodWludDMyX3QpMHhGRkZGRkZGQykKKworLyogREhSIHJlZ2lzdGVycyBvZmZzZXRzICovCisjZGVmaW5lIERIUjEyUjFfT0ZGU0VUICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkKKyNkZWZpbmUgREhSMTJSMl9PRkZTRVQgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDE0KQorI2RlZmluZSBESFIxMlJEX09GRlNFVCAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMjApCisKKy8qIERPUiByZWdpc3RlciBvZmZzZXQgKi8KKyNkZWZpbmUgRE9SX09GRlNFVCAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDJDKQorLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBEQUNfUHJpdmF0ZV9NYWNyb3MKKyAgKiBAeworICAqLworCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIERBQ19Qcml2YXRlX1ZhcmlhYmxlcworICAqIEB7CisgICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgREFDX1ByaXZhdGVfRnVuY3Rpb25Qcm90b3R5cGVzCisgICogQHsKKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBEQUNfUHJpdmF0ZV9GdW5jdGlvbnMKKyAgKiBAeworICAqLworCisvKioKKyAgKiBAYnJpZWYgIERlaW5pdGlhbGl6ZXMgdGhlIERBQyBwZXJpcGhlcmFsIHJlZ2lzdGVycyB0byB0aGVpciBkZWZhdWx0IHJlc2V0IHZhbHVlcy4KKyAgKiBAcGFyYW0gIE5vbmUKKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgREFDX0RlSW5pdCh2b2lkKQoreworICAvKiBFbmFibGUgREFDIHJlc2V0IHN0YXRlICovCisgIFJDQ19BUEIxUGVyaXBoUmVzZXRDbWQoUkNDX0FQQjFQZXJpcGhfREFDLCBFTkFCTEUpOworICAvKiBSZWxlYXNlIERBQyBmcm9tIHJlc2V0IHN0YXRlICovCisgIFJDQ19BUEIxUGVyaXBoUmVzZXRDbWQoUkNDX0FQQjFQZXJpcGhfREFDLCBESVNBQkxFKTsKK30KKworLyoqCisgICogQGJyaWVmICBJbml0aWFsaXplcyB0aGUgREFDIHBlcmlwaGVyYWwgYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQgCisgICogICAgICAgICBwYXJhbWV0ZXJzIGluIHRoZSBEQUNfSW5pdFN0cnVjdC4KKyAgKiBAcGFyYW0gIERBQ19DaGFubmVsOiB0aGUgc2VsZWN0ZWQgREFDIGNoYW5uZWwuIAorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBEQUNfQ2hhbm5lbF8xOiBEQUMgQ2hhbm5lbDEgc2VsZWN0ZWQKKyAgKiAgICAgQGFyZyBEQUNfQ2hhbm5lbF8yOiBEQUMgQ2hhbm5lbDIgc2VsZWN0ZWQKKyAgKiBAcGFyYW0gIERBQ19Jbml0U3RydWN0OiBwb2ludGVyIHRvIGEgREFDX0luaXRUeXBlRGVmIHN0cnVjdHVyZSB0aGF0CisgICogICAgICAgIGNvbnRhaW5zIHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZvciB0aGUgc3BlY2lmaWVkIERBQyBjaGFubmVsLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBEQUNfSW5pdCh1aW50MzJfdCBEQUNfQ2hhbm5lbCwgREFDX0luaXRUeXBlRGVmKiBEQUNfSW5pdFN0cnVjdCkKK3sKKyAgdWludDMyX3QgdG1wcmVnMSA9IDAsIHRtcHJlZzIgPSAwOworICAvKiBDaGVjayB0aGUgREFDIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX0RBQ19UUklHR0VSKERBQ19Jbml0U3RydWN0LT5EQUNfVHJpZ2dlcikpOworICBhc3NlcnRfcGFyYW0oSVNfREFDX0dFTkVSQVRFX1dBVkUoREFDX0luaXRTdHJ1Y3QtPkRBQ19XYXZlR2VuZXJhdGlvbikpOworICBhc3NlcnRfcGFyYW0oSVNfREFDX0xGU1JfVU5NQVNLX1RSSUFOR0xFX0FNUExJVFVERShEQUNfSW5pdFN0cnVjdC0+REFDX0xGU1JVbm1hc2tfVHJpYW5nbGVBbXBsaXR1ZGUpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0RBQ19PVVRQVVRfQlVGRkVSX1NUQVRFKERBQ19Jbml0U3RydWN0LT5EQUNfT3V0cHV0QnVmZmVyKSk7CisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gREFDIENSIENvbmZpZ3VyYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworICAvKiBHZXQgdGhlIERBQyBDUiB2YWx1ZSAqLworICB0bXByZWcxID0gREFDLT5DUjsKKyAgLyogQ2xlYXIgQk9GRngsIFRFTngsIFRTRUx4LCBXQVZFeCBhbmQgTUFNUHggYml0cyAqLworICB0bXByZWcxICY9IH4oQ1JfQ0xFQVJfTUFTSyA8PCBEQUNfQ2hhbm5lbCk7CisgIC8qIENvbmZpZ3VyZSBmb3IgdGhlIHNlbGVjdGVkIERBQyBjaGFubmVsOiBidWZmZXIgb3V0cHV0LCB0cmlnZ2VyLCB3YXZlIGdlbmVyYXRpb24sCisgICAgIG1hc2svYW1wbGl0dWRlIGZvciB3YXZlIGdlbmVyYXRpb24gKi8KKyAgLyogU2V0IFRTRUx4IGFuZCBURU54IGJpdHMgYWNjb3JkaW5nIHRvIERBQ19UcmlnZ2VyIHZhbHVlICovCisgIC8qIFNldCBXQVZFeCBiaXRzIGFjY29yZGluZyB0byBEQUNfV2F2ZUdlbmVyYXRpb24gdmFsdWUgKi8KKyAgLyogU2V0IE1BTVB4IGJpdHMgYWNjb3JkaW5nIHRvIERBQ19MRlNSVW5tYXNrX1RyaWFuZ2xlQW1wbGl0dWRlIHZhbHVlICovIAorICAvKiBTZXQgQk9GRnggYml0IGFjY29yZGluZyB0byBEQUNfT3V0cHV0QnVmZmVyIHZhbHVlICovICAgCisgIHRtcHJlZzIgPSAoREFDX0luaXRTdHJ1Y3QtPkRBQ19UcmlnZ2VyIHwgREFDX0luaXRTdHJ1Y3QtPkRBQ19XYXZlR2VuZXJhdGlvbiB8CisgICAgICAgICAgICAgREFDX0luaXRTdHJ1Y3QtPkRBQ19MRlNSVW5tYXNrX1RyaWFuZ2xlQW1wbGl0dWRlIHwgREFDX0luaXRTdHJ1Y3QtPkRBQ19PdXRwdXRCdWZmZXIpOworICAvKiBDYWxjdWxhdGUgQ1IgcmVnaXN0ZXIgdmFsdWUgZGVwZW5kaW5nIG9uIERBQ19DaGFubmVsICovCisgIHRtcHJlZzEgfD0gdG1wcmVnMiA8PCBEQUNfQ2hhbm5lbDsKKyAgLyogV3JpdGUgdG8gREFDIENSICovCisgIERBQy0+Q1IgPSB0bXByZWcxOworfQorCisvKioKKyAgKiBAYnJpZWYgIEZpbGxzIGVhY2ggREFDX0luaXRTdHJ1Y3QgbWVtYmVyIHdpdGggaXRzIGRlZmF1bHQgdmFsdWUuCisgICogQHBhcmFtICBEQUNfSW5pdFN0cnVjdCA6IHBvaW50ZXIgdG8gYSBEQUNfSW5pdFR5cGVEZWYgc3RydWN0dXJlIHdoaWNoIHdpbGwKKyAgKiAgICAgICAgIGJlIGluaXRpYWxpemVkLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBEQUNfU3RydWN0SW5pdChEQUNfSW5pdFR5cGVEZWYqIERBQ19Jbml0U3RydWN0KQoreworLyotLS0tLS0tLS0tLS0tLS0gUmVzZXQgREFDIGluaXQgc3RydWN0dXJlIHBhcmFtZXRlcnMgdmFsdWVzIC0tLS0tLS0tLS0tLS0tLS0tKi8KKyAgLyogSW5pdGlhbGl6ZSB0aGUgREFDX1RyaWdnZXIgbWVtYmVyICovCisgIERBQ19Jbml0U3RydWN0LT5EQUNfVHJpZ2dlciA9IERBQ19UcmlnZ2VyX05vbmU7CisgIC8qIEluaXRpYWxpemUgdGhlIERBQ19XYXZlR2VuZXJhdGlvbiBtZW1iZXIgKi8KKyAgREFDX0luaXRTdHJ1Y3QtPkRBQ19XYXZlR2VuZXJhdGlvbiA9IERBQ19XYXZlR2VuZXJhdGlvbl9Ob25lOworICAvKiBJbml0aWFsaXplIHRoZSBEQUNfTEZTUlVubWFza19UcmlhbmdsZUFtcGxpdHVkZSBtZW1iZXIgKi8KKyAgREFDX0luaXRTdHJ1Y3QtPkRBQ19MRlNSVW5tYXNrX1RyaWFuZ2xlQW1wbGl0dWRlID0gREFDX0xGU1JVbm1hc2tfQml0MDsKKyAgLyogSW5pdGlhbGl6ZSB0aGUgREFDX091dHB1dEJ1ZmZlciBtZW1iZXIgKi8KKyAgREFDX0luaXRTdHJ1Y3QtPkRBQ19PdXRwdXRCdWZmZXIgPSBEQUNfT3V0cHV0QnVmZmVyX0VuYWJsZTsKK30KKworLyoqCisgICogQGJyaWVmICBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBzcGVjaWZpZWQgREFDIGNoYW5uZWwuCisgICogQHBhcmFtICBEQUNfQ2hhbm5lbDogdGhlIHNlbGVjdGVkIERBQyBjaGFubmVsLiAKKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICAgIEBhcmcgREFDX0NoYW5uZWxfMTogREFDIENoYW5uZWwxIHNlbGVjdGVkCisgICogICAgIEBhcmcgREFDX0NoYW5uZWxfMjogREFDIENoYW5uZWwyIHNlbGVjdGVkCisgICogQHBhcmFtICBOZXdTdGF0ZTogbmV3IHN0YXRlIG9mIHRoZSBEQUMgY2hhbm5lbC4gCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmU6IEVOQUJMRSBvciBESVNBQkxFLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBEQUNfQ21kKHVpbnQzMl90IERBQ19DaGFubmVsLCBGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpCit7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19EQUNfQ0hBTk5FTChEQUNfQ2hhbm5lbCkpOworICBhc3NlcnRfcGFyYW0oSVNfRlVOQ1RJT05BTF9TVEFURShOZXdTdGF0ZSkpOworICBpZiAoTmV3U3RhdGUgIT0gRElTQUJMRSkKKyAgeworICAgIC8qIEVuYWJsZSB0aGUgc2VsZWN0ZWQgREFDIGNoYW5uZWwgKi8KKyAgICBEQUMtPkNSIHw9IChEQUNfQ1JfRU4xIDw8IERBQ19DaGFubmVsKTsKKyAgfQorICBlbHNlCisgIHsKKyAgICAvKiBEaXNhYmxlIHRoZSBzZWxlY3RlZCBEQUMgY2hhbm5lbCAqLworICAgIERBQy0+Q1IgJj0gfihEQUNfQ1JfRU4xIDw8IERBQ19DaGFubmVsKTsKKyAgfQorfQorI2lmIGRlZmluZWQgKFNUTTMyRjEwWF9MRF9WTCkgfHwgZGVmaW5lZCAoU1RNMzJGMTBYX01EX1ZMKSB8fCBkZWZpbmVkIChTVE0zMkYxMFhfSERfVkwpCisvKioKKyAgKiBAYnJpZWYgIEVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIHNwZWNpZmllZCBEQUMgaW50ZXJydXB0cy4KKyAgKiBAcGFyYW0gIERBQ19DaGFubmVsOiB0aGUgc2VsZWN0ZWQgREFDIGNoYW5uZWwuIAorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBEQUNfQ2hhbm5lbF8xOiBEQUMgQ2hhbm5lbDEgc2VsZWN0ZWQKKyAgKiAgICAgQGFyZyBEQUNfQ2hhbm5lbF8yOiBEQUMgQ2hhbm5lbDIgc2VsZWN0ZWQKKyAgKiBAcGFyYW0gIERBQ19JVDogc3BlY2lmaWVzIHRoZSBEQUMgaW50ZXJydXB0IHNvdXJjZXMgdG8gYmUgZW5hYmxlZCBvciBkaXNhYmxlZC4gCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICAgIEBhcmcgREFDX0lUX0RNQVVEUjogRE1BIHVuZGVycnVuIGludGVycnVwdCBtYXNrICAgICAgICAgICAgICAgICAgICAgIAorICAqIEBwYXJhbSAgTmV3U3RhdGU6IG5ldyBzdGF0ZSBvZiB0aGUgc3BlY2lmaWVkIERBQyBpbnRlcnJ1cHRzLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlOiBFTkFCTEUgb3IgRElTQUJMRS4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8gCit2b2lkIERBQ19JVENvbmZpZyh1aW50MzJfdCBEQUNfQ2hhbm5lbCwgdWludDMyX3QgREFDX0lULCBGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpICAKK3sKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX0RBQ19DSEFOTkVMKERBQ19DaGFubmVsKSk7CisgIGFzc2VydF9wYXJhbShJU19GVU5DVElPTkFMX1NUQVRFKE5ld1N0YXRlKSk7CisgIGFzc2VydF9wYXJhbShJU19EQUNfSVQoREFDX0lUKSk7IAorCisgIGlmIChOZXdTdGF0ZSAhPSBESVNBQkxFKQorICB7CisgICAgLyogRW5hYmxlIHRoZSBzZWxlY3RlZCBEQUMgaW50ZXJydXB0cyAqLworICAgIERBQy0+Q1IgfD0gIChEQUNfSVQgPDwgREFDX0NoYW5uZWwpOworICB9CisgIGVsc2UKKyAgeworICAgIC8qIERpc2FibGUgdGhlIHNlbGVjdGVkIERBQyBpbnRlcnJ1cHRzICovCisgICAgREFDLT5DUiAmPSAofih1aW50MzJfdCkoREFDX0lUIDw8IERBQ19DaGFubmVsKSk7CisgIH0KK30KKyNlbmRpZgorCisvKioKKyAgKiBAYnJpZWYgIEVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIHNwZWNpZmllZCBEQUMgY2hhbm5lbCBETUEgcmVxdWVzdC4KKyAgKiBAcGFyYW0gIERBQ19DaGFubmVsOiB0aGUgc2VsZWN0ZWQgREFDIGNoYW5uZWwuIAorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBEQUNfQ2hhbm5lbF8xOiBEQUMgQ2hhbm5lbDEgc2VsZWN0ZWQKKyAgKiAgICAgQGFyZyBEQUNfQ2hhbm5lbF8yOiBEQUMgQ2hhbm5lbDIgc2VsZWN0ZWQKKyAgKiBAcGFyYW0gIE5ld1N0YXRlOiBuZXcgc3RhdGUgb2YgdGhlIHNlbGVjdGVkIERBQyBjaGFubmVsIERNQSByZXF1ZXN0LgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlOiBFTkFCTEUgb3IgRElTQUJMRS4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgREFDX0RNQUNtZCh1aW50MzJfdCBEQUNfQ2hhbm5lbCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfREFDX0NIQU5ORUwoREFDX0NoYW5uZWwpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0ZVTkNUSU9OQUxfU1RBVEUoTmV3U3RhdGUpKTsKKyAgaWYgKE5ld1N0YXRlICE9IERJU0FCTEUpCisgIHsKKyAgICAvKiBFbmFibGUgdGhlIHNlbGVjdGVkIERBQyBjaGFubmVsIERNQSByZXF1ZXN0ICovCisgICAgREFDLT5DUiB8PSAoREFDX0NSX0RNQUVOMSA8PCBEQUNfQ2hhbm5lbCk7CisgIH0KKyAgZWxzZQorICB7CisgICAgLyogRGlzYWJsZSB0aGUgc2VsZWN0ZWQgREFDIGNoYW5uZWwgRE1BIHJlcXVlc3QgKi8KKyAgICBEQUMtPkNSICY9IH4oREFDX0NSX0RNQUVOMSA8PCBEQUNfQ2hhbm5lbCk7CisgIH0KK30KKworLyoqCisgICogQGJyaWVmICBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBzZWxlY3RlZCBEQUMgY2hhbm5lbCBzb2Z0d2FyZSB0cmlnZ2VyLgorICAqIEBwYXJhbSAgREFDX0NoYW5uZWw6IHRoZSBzZWxlY3RlZCBEQUMgY2hhbm5lbC4gCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIERBQ19DaGFubmVsXzE6IERBQyBDaGFubmVsMSBzZWxlY3RlZAorICAqICAgICBAYXJnIERBQ19DaGFubmVsXzI6IERBQyBDaGFubmVsMiBzZWxlY3RlZAorICAqIEBwYXJhbSAgTmV3U3RhdGU6IG5ldyBzdGF0ZSBvZiB0aGUgc2VsZWN0ZWQgREFDIGNoYW5uZWwgc29mdHdhcmUgdHJpZ2dlci4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZTogRU5BQkxFIG9yIERJU0FCTEUuCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIERBQ19Tb2Z0d2FyZVRyaWdnZXJDbWQodWludDMyX3QgREFDX0NoYW5uZWwsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSkKK3sKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX0RBQ19DSEFOTkVMKERBQ19DaGFubmVsKSk7CisgIGFzc2VydF9wYXJhbShJU19GVU5DVElPTkFMX1NUQVRFKE5ld1N0YXRlKSk7CisgIGlmIChOZXdTdGF0ZSAhPSBESVNBQkxFKQorICB7CisgICAgLyogRW5hYmxlIHNvZnR3YXJlIHRyaWdnZXIgZm9yIHRoZSBzZWxlY3RlZCBEQUMgY2hhbm5lbCAqLworICAgIERBQy0+U1dUUklHUiB8PSAodWludDMyX3QpREFDX1NXVFJJR1JfU1dUUklHMSA8PCAoREFDX0NoYW5uZWwgPj4gNCk7CisgIH0KKyAgZWxzZQorICB7CisgICAgLyogRGlzYWJsZSBzb2Z0d2FyZSB0cmlnZ2VyIGZvciB0aGUgc2VsZWN0ZWQgREFDIGNoYW5uZWwgKi8KKyAgICBEQUMtPlNXVFJJR1IgJj0gfigodWludDMyX3QpREFDX1NXVFJJR1JfU1dUUklHMSA8PCAoREFDX0NoYW5uZWwgPj4gNCkpOworICB9Cit9CisKKy8qKgorICAqIEBicmllZiAgRW5hYmxlcyBvciBkaXNhYmxlcyBzaW11bHRhbmVvdXNseSB0aGUgdHdvIERBQyBjaGFubmVscyBzb2Z0d2FyZQorICAqICAgdHJpZ2dlcnMuCisgICogQHBhcmFtICBOZXdTdGF0ZTogbmV3IHN0YXRlIG9mIHRoZSBEQUMgY2hhbm5lbHMgc29mdHdhcmUgdHJpZ2dlcnMuCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmU6IEVOQUJMRSBvciBESVNBQkxFLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBEQUNfRHVhbFNvZnR3YXJlVHJpZ2dlckNtZChGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpCit7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19GVU5DVElPTkFMX1NUQVRFKE5ld1N0YXRlKSk7CisgIGlmIChOZXdTdGF0ZSAhPSBESVNBQkxFKQorICB7CisgICAgLyogRW5hYmxlIHNvZnR3YXJlIHRyaWdnZXIgZm9yIGJvdGggREFDIGNoYW5uZWxzICovCisgICAgREFDLT5TV1RSSUdSIHw9IERVQUxfU1dUUklHX1NFVCA7CisgIH0KKyAgZWxzZQorICB7CisgICAgLyogRGlzYWJsZSBzb2Z0d2FyZSB0cmlnZ2VyIGZvciBib3RoIERBQyBjaGFubmVscyAqLworICAgIERBQy0+U1dUUklHUiAmPSBEVUFMX1NXVFJJR19SRVNFVDsKKyAgfQorfQorCisvKioKKyAgKiBAYnJpZWYgIEVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIHNlbGVjdGVkIERBQyBjaGFubmVsIHdhdmUgZ2VuZXJhdGlvbi4KKyAgKiBAcGFyYW0gIERBQ19DaGFubmVsOiB0aGUgc2VsZWN0ZWQgREFDIGNoYW5uZWwuIAorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBEQUNfQ2hhbm5lbF8xOiBEQUMgQ2hhbm5lbDEgc2VsZWN0ZWQKKyAgKiAgICAgQGFyZyBEQUNfQ2hhbm5lbF8yOiBEQUMgQ2hhbm5lbDIgc2VsZWN0ZWQKKyAgKiBAcGFyYW0gIERBQ19XYXZlOiBTcGVjaWZpZXMgdGhlIHdhdmUgdHlwZSB0byBlbmFibGUgb3IgZGlzYWJsZS4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICAgIEBhcmcgREFDX1dhdmVfTm9pc2U6IG5vaXNlIHdhdmUgZ2VuZXJhdGlvbgorICAqICAgICBAYXJnIERBQ19XYXZlX1RyaWFuZ2xlOiB0cmlhbmdsZSB3YXZlIGdlbmVyYXRpb24KKyAgKiBAcGFyYW0gIE5ld1N0YXRlOiBuZXcgc3RhdGUgb2YgdGhlIHNlbGVjdGVkIERBQyBjaGFubmVsIHdhdmUgZ2VuZXJhdGlvbi4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZTogRU5BQkxFIG9yIERJU0FCTEUuCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIERBQ19XYXZlR2VuZXJhdGlvbkNtZCh1aW50MzJfdCBEQUNfQ2hhbm5lbCwgdWludDMyX3QgREFDX1dhdmUsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSkKK3sKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX0RBQ19DSEFOTkVMKERBQ19DaGFubmVsKSk7CisgIGFzc2VydF9wYXJhbShJU19EQUNfV0FWRShEQUNfV2F2ZSkpOyAKKyAgYXNzZXJ0X3BhcmFtKElTX0ZVTkNUSU9OQUxfU1RBVEUoTmV3U3RhdGUpKTsKKyAgaWYgKE5ld1N0YXRlICE9IERJU0FCTEUpCisgIHsKKyAgICAvKiBFbmFibGUgdGhlIHNlbGVjdGVkIHdhdmUgZ2VuZXJhdGlvbiBmb3IgdGhlIHNlbGVjdGVkIERBQyBjaGFubmVsICovCisgICAgREFDLT5DUiB8PSBEQUNfV2F2ZSA8PCBEQUNfQ2hhbm5lbDsKKyAgfQorICBlbHNlCisgIHsKKyAgICAvKiBEaXNhYmxlIHRoZSBzZWxlY3RlZCB3YXZlIGdlbmVyYXRpb24gZm9yIHRoZSBzZWxlY3RlZCBEQUMgY2hhbm5lbCAqLworICAgIERBQy0+Q1IgJj0gfihEQUNfV2F2ZSA8PCBEQUNfQ2hhbm5lbCk7CisgIH0KK30KKworLyoqCisgICogQGJyaWVmICBTZXQgdGhlIHNwZWNpZmllZCBkYXRhIGhvbGRpbmcgcmVnaXN0ZXIgdmFsdWUgZm9yIERBQyBjaGFubmVsMS4KKyAgKiBAcGFyYW0gIERBQ19BbGlnbjogU3BlY2lmaWVzIHRoZSBkYXRhIGFsaWdubWVudCBmb3IgREFDIGNoYW5uZWwxLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBEQUNfQWxpZ25fOGJfUjogOGJpdCByaWdodCBkYXRhIGFsaWdubWVudCBzZWxlY3RlZAorICAqICAgICBAYXJnIERBQ19BbGlnbl8xMmJfTDogMTJiaXQgbGVmdCBkYXRhIGFsaWdubWVudCBzZWxlY3RlZAorICAqICAgICBAYXJnIERBQ19BbGlnbl8xMmJfUjogMTJiaXQgcmlnaHQgZGF0YSBhbGlnbm1lbnQgc2VsZWN0ZWQKKyAgKiBAcGFyYW0gIERhdGEgOiBEYXRhIHRvIGJlIGxvYWRlZCBpbiB0aGUgc2VsZWN0ZWQgZGF0YSBob2xkaW5nIHJlZ2lzdGVyLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBEQUNfU2V0Q2hhbm5lbDFEYXRhKHVpbnQzMl90IERBQ19BbGlnbiwgdWludDE2X3QgRGF0YSkKK3sgIAorICBfX0lPIHVpbnQzMl90IHRtcCA9IDA7CisgIAorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfREFDX0FMSUdOKERBQ19BbGlnbikpOworICBhc3NlcnRfcGFyYW0oSVNfREFDX0RBVEEoRGF0YSkpOworICAKKyAgdG1wID0gKHVpbnQzMl90KURBQ19CQVNFOyAKKyAgdG1wICs9IERIUjEyUjFfT0ZGU0VUICsgREFDX0FsaWduOworCisgIC8qIFNldCB0aGUgREFDIGNoYW5uZWwxIHNlbGVjdGVkIGRhdGEgaG9sZGluZyByZWdpc3RlciAqLworICAqKF9fSU8gdWludDMyX3QgKikgdG1wID0gRGF0YTsKK30KKworLyoqCisgICogQGJyaWVmICBTZXQgdGhlIHNwZWNpZmllZCBkYXRhIGhvbGRpbmcgcmVnaXN0ZXIgdmFsdWUgZm9yIERBQyBjaGFubmVsMi4KKyAgKiBAcGFyYW0gIERBQ19BbGlnbjogU3BlY2lmaWVzIHRoZSBkYXRhIGFsaWdubWVudCBmb3IgREFDIGNoYW5uZWwyLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBEQUNfQWxpZ25fOGJfUjogOGJpdCByaWdodCBkYXRhIGFsaWdubWVudCBzZWxlY3RlZAorICAqICAgICBAYXJnIERBQ19BbGlnbl8xMmJfTDogMTJiaXQgbGVmdCBkYXRhIGFsaWdubWVudCBzZWxlY3RlZAorICAqICAgICBAYXJnIERBQ19BbGlnbl8xMmJfUjogMTJiaXQgcmlnaHQgZGF0YSBhbGlnbm1lbnQgc2VsZWN0ZWQKKyAgKiBAcGFyYW0gIERhdGEgOiBEYXRhIHRvIGJlIGxvYWRlZCBpbiB0aGUgc2VsZWN0ZWQgZGF0YSBob2xkaW5nIHJlZ2lzdGVyLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBEQUNfU2V0Q2hhbm5lbDJEYXRhKHVpbnQzMl90IERBQ19BbGlnbiwgdWludDE2X3QgRGF0YSkKK3sKKyAgX19JTyB1aW50MzJfdCB0bXAgPSAwOworCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19EQUNfQUxJR04oREFDX0FsaWduKSk7CisgIGFzc2VydF9wYXJhbShJU19EQUNfREFUQShEYXRhKSk7CisgIAorICB0bXAgPSAodWludDMyX3QpREFDX0JBU0U7CisgIHRtcCArPSBESFIxMlIyX09GRlNFVCArIERBQ19BbGlnbjsKKworICAvKiBTZXQgdGhlIERBQyBjaGFubmVsMiBzZWxlY3RlZCBkYXRhIGhvbGRpbmcgcmVnaXN0ZXIgKi8KKyAgKihfX0lPIHVpbnQzMl90ICopdG1wID0gRGF0YTsKK30KKworLyoqCisgICogQGJyaWVmICBTZXQgdGhlIHNwZWNpZmllZCBkYXRhIGhvbGRpbmcgcmVnaXN0ZXIgdmFsdWUgZm9yIGR1YWwgY2hhbm5lbAorICAqICAgREFDLgorICAqIEBwYXJhbSAgREFDX0FsaWduOiBTcGVjaWZpZXMgdGhlIGRhdGEgYWxpZ25tZW50IGZvciBkdWFsIGNoYW5uZWwgREFDLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBEQUNfQWxpZ25fOGJfUjogOGJpdCByaWdodCBkYXRhIGFsaWdubWVudCBzZWxlY3RlZAorICAqICAgICBAYXJnIERBQ19BbGlnbl8xMmJfTDogMTJiaXQgbGVmdCBkYXRhIGFsaWdubWVudCBzZWxlY3RlZAorICAqICAgICBAYXJnIERBQ19BbGlnbl8xMmJfUjogMTJiaXQgcmlnaHQgZGF0YSBhbGlnbm1lbnQgc2VsZWN0ZWQKKyAgKiBAcGFyYW0gIERhdGEyOiBEYXRhIGZvciBEQUMgQ2hhbm5lbDIgdG8gYmUgbG9hZGVkIGluIHRoZSBzZWxlY3RlZCBkYXRhIAorICAqICAgaG9sZGluZyByZWdpc3Rlci4KKyAgKiBAcGFyYW0gIERhdGExOiBEYXRhIGZvciBEQUMgQ2hhbm5lbDEgdG8gYmUgbG9hZGVkIGluIHRoZSBzZWxlY3RlZCBkYXRhIAorICAqICAgaG9sZGluZyByZWdpc3Rlci4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgREFDX1NldER1YWxDaGFubmVsRGF0YSh1aW50MzJfdCBEQUNfQWxpZ24sIHVpbnQxNl90IERhdGEyLCB1aW50MTZfdCBEYXRhMSkKK3sKKyAgdWludDMyX3QgZGF0YSA9IDAsIHRtcCA9IDA7CisgIAorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfREFDX0FMSUdOKERBQ19BbGlnbikpOworICBhc3NlcnRfcGFyYW0oSVNfREFDX0RBVEEoRGF0YTEpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0RBQ19EQVRBKERhdGEyKSk7CisgIAorICAvKiBDYWxjdWxhdGUgYW5kIHNldCBkdWFsIERBQyBkYXRhIGhvbGRpbmcgcmVnaXN0ZXIgdmFsdWUgKi8KKyAgaWYgKERBQ19BbGlnbiA9PSBEQUNfQWxpZ25fOGJfUikKKyAgeworICAgIGRhdGEgPSAoKHVpbnQzMl90KURhdGEyIDw8IDgpIHwgRGF0YTE7IAorICB9CisgIGVsc2UKKyAgeworICAgIGRhdGEgPSAoKHVpbnQzMl90KURhdGEyIDw8IDE2KSB8IERhdGExOworICB9CisgIAorICB0bXAgPSAodWludDMyX3QpREFDX0JBU0U7CisgIHRtcCArPSBESFIxMlJEX09GRlNFVCArIERBQ19BbGlnbjsKKworICAvKiBTZXQgdGhlIGR1YWwgREFDIHNlbGVjdGVkIGRhdGEgaG9sZGluZyByZWdpc3RlciAqLworICAqKF9fSU8gdWludDMyX3QgKil0bXAgPSBkYXRhOworfQorCisvKioKKyAgKiBAYnJpZWYgIFJldHVybnMgdGhlIGxhc3QgZGF0YSBvdXRwdXQgdmFsdWUgb2YgdGhlIHNlbGVjdGVkIERBQyBjaGFubmVsLgorICAqIEBwYXJhbSAgREFDX0NoYW5uZWw6IHRoZSBzZWxlY3RlZCBEQUMgY2hhbm5lbC4gCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIERBQ19DaGFubmVsXzE6IERBQyBDaGFubmVsMSBzZWxlY3RlZAorICAqICAgICBAYXJnIERBQ19DaGFubmVsXzI6IERBQyBDaGFubmVsMiBzZWxlY3RlZAorICAqIEByZXR2YWwgVGhlIHNlbGVjdGVkIERBQyBjaGFubmVsIGRhdGEgb3V0cHV0IHZhbHVlLgorICAqLwordWludDE2X3QgREFDX0dldERhdGFPdXRwdXRWYWx1ZSh1aW50MzJfdCBEQUNfQ2hhbm5lbCkKK3sKKyAgX19JTyB1aW50MzJfdCB0bXAgPSAwOworICAKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX0RBQ19DSEFOTkVMKERBQ19DaGFubmVsKSk7CisgIAorICB0bXAgPSAodWludDMyX3QpIERBQ19CQVNFIDsKKyAgdG1wICs9IERPUl9PRkZTRVQgKyAoKHVpbnQzMl90KURBQ19DaGFubmVsID4+IDIpOworICAKKyAgLyogUmV0dXJucyB0aGUgREFDIGNoYW5uZWwgZGF0YSBvdXRwdXQgcmVnaXN0ZXIgdmFsdWUgKi8KKyAgcmV0dXJuICh1aW50MTZfdCkgKCooX19JTyB1aW50MzJfdCopIHRtcCk7Cit9CisKKyNpZiBkZWZpbmVkIChTVE0zMkYxMFhfTERfVkwpIHx8IGRlZmluZWQgKFNUTTMyRjEwWF9NRF9WTCkgfHwgZGVmaW5lZCAoU1RNMzJGMTBYX0hEX1ZMKQorLyoqCisgICogQGJyaWVmICBDaGVja3Mgd2hldGhlciB0aGUgc3BlY2lmaWVkIERBQyBmbGFnIGlzIHNldCBvciBub3QuCisgICogQHBhcmFtICBEQUNfQ2hhbm5lbDogdGhlZSBzZWxlY3RlZCBEQUMgY2hhbm5lbC4gCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIERBQ19DaGFubmVsXzE6IERBQyBDaGFubmVsMSBzZWxlY3RlZAorICAqICAgICBAYXJnIERBQ19DaGFubmVsXzI6IERBQyBDaGFubmVsMiBzZWxlY3RlZAorICAqIEBwYXJhbSAgREFDX0ZMQUc6IHNwZWNpZmllcyB0aGUgZmxhZyB0byBjaGVjay4gCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25seSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlOgorICAqICAgICBAYXJnIERBQ19GTEFHX0RNQVVEUjogRE1BIHVuZGVycnVuIGZsYWcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICogQHJldHZhbCBUaGUgbmV3IHN0YXRlIG9mIERBQ19GTEFHIChTRVQgb3IgUkVTRVQpLgorICAqLworRmxhZ1N0YXR1cyBEQUNfR2V0RmxhZ1N0YXR1cyh1aW50MzJfdCBEQUNfQ2hhbm5lbCwgdWludDMyX3QgREFDX0ZMQUcpCit7CisgIEZsYWdTdGF0dXMgYml0c3RhdHVzID0gUkVTRVQ7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19EQUNfQ0hBTk5FTChEQUNfQ2hhbm5lbCkpOworICBhc3NlcnRfcGFyYW0oSVNfREFDX0ZMQUcoREFDX0ZMQUcpKTsKKworICAvKiBDaGVjayB0aGUgc3RhdHVzIG9mIHRoZSBzcGVjaWZpZWQgREFDIGZsYWcgKi8KKyAgaWYgKChEQUMtPlNSICYgKERBQ19GTEFHIDw8IERBQ19DaGFubmVsKSkgIT0gKHVpbnQ4X3QpUkVTRVQpCisgIHsKKyAgICAvKiBEQUNfRkxBRyBpcyBzZXQgKi8KKyAgICBiaXRzdGF0dXMgPSBTRVQ7CisgIH0KKyAgZWxzZQorICB7CisgICAgLyogREFDX0ZMQUcgaXMgcmVzZXQgKi8KKyAgICBiaXRzdGF0dXMgPSBSRVNFVDsKKyAgfQorICAvKiBSZXR1cm4gdGhlIERBQ19GTEFHIHN0YXR1cyAqLworICByZXR1cm4gIGJpdHN0YXR1czsKK30KKworLyoqCisgICogQGJyaWVmICBDbGVhcnMgdGhlIERBQyBjaGFubmVseCdzIHBlbmRpbmcgZmxhZ3MuCisgICogQHBhcmFtICBEQUNfQ2hhbm5lbDogdGhlIHNlbGVjdGVkIERBQyBjaGFubmVsLiAKKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICAgIEBhcmcgREFDX0NoYW5uZWxfMTogREFDIENoYW5uZWwxIHNlbGVjdGVkCisgICogICAgIEBhcmcgREFDX0NoYW5uZWxfMjogREFDIENoYW5uZWwyIHNlbGVjdGVkCisgICogQHBhcmFtICBEQUNfRkxBRzogc3BlY2lmaWVzIHRoZSBmbGFnIHRvIGNsZWFyLiAKKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlOgorICAqICAgICBAYXJnIERBQ19GTEFHX0RNQVVEUjogRE1BIHVuZGVycnVuIGZsYWcgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgREFDX0NsZWFyRmxhZyh1aW50MzJfdCBEQUNfQ2hhbm5lbCwgdWludDMyX3QgREFDX0ZMQUcpCit7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19EQUNfQ0hBTk5FTChEQUNfQ2hhbm5lbCkpOworICBhc3NlcnRfcGFyYW0oSVNfREFDX0ZMQUcoREFDX0ZMQUcpKTsKKworICAvKiBDbGVhciB0aGUgc2VsZWN0ZWQgREFDIGZsYWdzICovCisgIERBQy0+U1IgPSAoREFDX0ZMQUcgPDwgREFDX0NoYW5uZWwpOworfQorCisvKioKKyAgKiBAYnJpZWYgIENoZWNrcyB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgREFDIGludGVycnVwdCBoYXMgb2NjdXJyZWQgb3Igbm90LgorICAqIEBwYXJhbSAgREFDX0NoYW5uZWw6IHRoZSBzZWxlY3RlZCBEQUMgY2hhbm5lbC4gCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIERBQ19DaGFubmVsXzE6IERBQyBDaGFubmVsMSBzZWxlY3RlZAorICAqICAgICBAYXJnIERBQ19DaGFubmVsXzI6IERBQyBDaGFubmVsMiBzZWxlY3RlZAorICAqIEBwYXJhbSAgREFDX0lUOiBzcGVjaWZpZXMgdGhlIERBQyBpbnRlcnJ1cHQgc291cmNlIHRvIGNoZWNrLiAKKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBEQUNfSVRfRE1BVURSOiBETUEgdW5kZXJydW4gaW50ZXJydXB0IG1hc2sgICAgICAgICAgICAgICAgICAgICAgIAorICAqIEByZXR2YWwgVGhlIG5ldyBzdGF0ZSBvZiBEQUNfSVQgKFNFVCBvciBSRVNFVCkuCisgICovCitJVFN0YXR1cyBEQUNfR2V0SVRTdGF0dXModWludDMyX3QgREFDX0NoYW5uZWwsIHVpbnQzMl90IERBQ19JVCkKK3sKKyAgSVRTdGF0dXMgYml0c3RhdHVzID0gUkVTRVQ7CisgIHVpbnQzMl90IGVuYWJsZXN0YXR1cyA9IDA7CisgIAorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfREFDX0NIQU5ORUwoREFDX0NoYW5uZWwpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0RBQ19JVChEQUNfSVQpKTsKKworICAvKiBHZXQgdGhlIERBQ19JVCBlbmFibGUgYml0IHN0YXR1cyAqLworICBlbmFibGVzdGF0dXMgPSAoREFDLT5DUiAmIChEQUNfSVQgPDwgREFDX0NoYW5uZWwpKSA7CisgIAorICAvKiBDaGVjayB0aGUgc3RhdHVzIG9mIHRoZSBzcGVjaWZpZWQgREFDIGludGVycnVwdCAqLworICBpZiAoKChEQUMtPlNSICYgKERBQ19JVCA8PCBEQUNfQ2hhbm5lbCkpICE9ICh1aW50MzJfdClSRVNFVCkgJiYgZW5hYmxlc3RhdHVzKQorICB7CisgICAgLyogREFDX0lUIGlzIHNldCAqLworICAgIGJpdHN0YXR1cyA9IFNFVDsKKyAgfQorICBlbHNlCisgIHsKKyAgICAvKiBEQUNfSVQgaXMgcmVzZXQgKi8KKyAgICBiaXRzdGF0dXMgPSBSRVNFVDsKKyAgfQorICAvKiBSZXR1cm4gdGhlIERBQ19JVCBzdGF0dXMgKi8KKyAgcmV0dXJuICBiaXRzdGF0dXM7Cit9CisKKy8qKgorICAqIEBicmllZiAgQ2xlYXJzIHRoZSBEQUMgY2hhbm5lbHgncyBpbnRlcnJ1cHQgcGVuZGluZyBiaXRzLgorICAqIEBwYXJhbSAgREFDX0NoYW5uZWw6IHRoZSBzZWxlY3RlZCBEQUMgY2hhbm5lbC4gCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIERBQ19DaGFubmVsXzE6IERBQyBDaGFubmVsMSBzZWxlY3RlZAorICAqICAgICBAYXJnIERBQ19DaGFubmVsXzI6IERBQyBDaGFubmVsMiBzZWxlY3RlZAorICAqIEBwYXJhbSAgREFDX0lUOiBzcGVjaWZpZXMgdGhlIERBQyBpbnRlcnJ1cHQgcGVuZGluZyBiaXQgdG8gY2xlYXIuCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICAgIEBhcmcgREFDX0lUX0RNQVVEUjogRE1BIHVuZGVycnVuIGludGVycnVwdCBtYXNrICAgICAgICAgICAgICAgICAgICAgICAgIAorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBEQUNfQ2xlYXJJVFBlbmRpbmdCaXQodWludDMyX3QgREFDX0NoYW5uZWwsIHVpbnQzMl90IERBQ19JVCkKK3sKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX0RBQ19DSEFOTkVMKERBQ19DaGFubmVsKSk7CisgIGFzc2VydF9wYXJhbShJU19EQUNfSVQoREFDX0lUKSk7IAorCisgIC8qIENsZWFyIHRoZSBzZWxlY3RlZCBEQUMgaW50ZXJydXB0IHBlbmRpbmcgYml0cyAqLworICBEQUMtPlNSID0gKERBQ19JVCA8PCBEQUNfQ2hhbm5lbCk7Cit9CisjZW5kaWYKKworLyoqCisgICogQH0KKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCAyMDExIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL3N0X2Z3X2xpYi9zcmMvc3RtMzJmMTB4X2RiZ21jdS5jIGIvc3RfZndfbGliL3NyYy9zdG0zMmYxMHhfZGJnbWN1LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTZhOGZkZQotLS0gL2Rldi9udWxsCisrKyBiL3N0X2Z3X2xpYi9zcmMvc3RtMzJmMTB4X2RiZ21jdS5jCkBAIC0wLDAgKzEsMTYyIEBACisvKioKKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICogQGZpbGUgICAgc3RtMzJmMTB4X2RiZ21jdS5jCisgICogQGF1dGhvciAgTUNEIEFwcGxpY2F0aW9uIFRlYW0KKyAgKiBAdmVyc2lvbiBWMy41LjAKKyAgKiBAZGF0ZSAgICAxMS1NYXJjaC0yMDExCisgICogQGJyaWVmICAgVGhpcyBmaWxlIHByb3ZpZGVzIGFsbCB0aGUgREJHTUNVIGZpcm13YXJlIGZ1bmN0aW9ucy4KKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICogQGF0dGVudGlvbgorICAqCisgICogVEhFIFBSRVNFTlQgRklSTVdBUkUgV0hJQ0ggSVMgRk9SIEdVSURBTkNFIE9OTFkgQUlNUyBBVCBQUk9WSURJTkcgQ1VTVE9NRVJTCisgICogV0lUSCBDT0RJTkcgSU5GT1JNQVRJT04gUkVHQVJESU5HIFRIRUlSIFBST0RVQ1RTIElOIE9SREVSIEZPUiBUSEVNIFRPIFNBVkUKKyAgKiBUSU1FLiBBUyBBIFJFU1VMVCwgU1RNSUNST0VMRUNUUk9OSUNTIFNIQUxMIE5PVCBCRSBIRUxEIExJQUJMRSBGT1IgQU5ZCisgICogRElSRUNULCBJTkRJUkVDVCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgV0lUSCBSRVNQRUNUIFRPIEFOWSBDTEFJTVMgQVJJU0lORworICAqIEZST00gVEhFIENPTlRFTlQgT0YgU1VDSCBGSVJNV0FSRSBBTkQvT1IgVEhFIFVTRSBNQURFIEJZIENVU1RPTUVSUyBPRiBUSEUKKyAgKiBDT0RJTkcgSU5GT1JNQVRJT04gQ09OVEFJTkVEIEhFUkVJTiBJTiBDT05ORUNUSU9OIFdJVEggVEhFSVIgUFJPRFVDVFMuCisgICoKKyAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ09QWVJJR0hUIDIwMTEgU1RNaWNyb2VsZWN0cm9uaWNzPC9jZW50ZXI+PC9oMj4KKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICovCisKKy8qIEluY2x1ZGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisjaW5jbHVkZSAic3RtMzJmMTB4X2RiZ21jdS5oIgorCisvKiogQGFkZHRvZ3JvdXAgU1RNMzJGMTB4X1N0ZFBlcmlwaF9Ecml2ZXIKKyAgKiBAeworICAqLworCisvKiogQGRlZmdyb3VwIERCR01DVSAKKyAgKiBAYnJpZWYgREJHTUNVIGRyaXZlciBtb2R1bGVzCisgICogQHsKKyAgKi8gCisKKy8qKiBAZGVmZ3JvdXAgREJHTUNVX1ByaXZhdGVfVHlwZXNEZWZpbml0aW9ucworICAqIEB7CisgICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgREJHTUNVX1ByaXZhdGVfRGVmaW5lcworICAqIEB7CisgICovCisKKyNkZWZpbmUgSURDT0RFX0RFVklEX01BU0sgICAgKCh1aW50MzJfdCkweDAwMDAwRkZGKQorLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBEQkdNQ1VfUHJpdmF0ZV9NYWNyb3MKKyAgKiBAeworICAqLworCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIERCR01DVV9Qcml2YXRlX1ZhcmlhYmxlcworICAqIEB7CisgICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgREJHTUNVX1ByaXZhdGVfRnVuY3Rpb25Qcm90b3R5cGVzCisgICogQHsKKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBEQkdNQ1VfUHJpdmF0ZV9GdW5jdGlvbnMKKyAgKiBAeworICAqLworCisvKioKKyAgKiBAYnJpZWYgIFJldHVybnMgdGhlIGRldmljZSByZXZpc2lvbiBpZGVudGlmaWVyLgorICAqIEBwYXJhbSAgTm9uZQorICAqIEByZXR2YWwgRGV2aWNlIHJldmlzaW9uIGlkZW50aWZpZXIKKyAgKi8KK3VpbnQzMl90IERCR01DVV9HZXRSRVZJRCh2b2lkKQoreworICAgcmV0dXJuKERCR01DVS0+SURDT0RFID4+IDE2KTsKK30KKworLyoqCisgICogQGJyaWVmICBSZXR1cm5zIHRoZSBkZXZpY2UgaWRlbnRpZmllci4KKyAgKiBAcGFyYW0gIE5vbmUKKyAgKiBAcmV0dmFsIERldmljZSBpZGVudGlmaWVyCisgICovCit1aW50MzJfdCBEQkdNQ1VfR2V0REVWSUQodm9pZCkKK3sKKyAgIHJldHVybihEQkdNQ1UtPklEQ09ERSAmIElEQ09ERV9ERVZJRF9NQVNLKTsKK30KKworLyoqCisgICogQGJyaWVmICBDb25maWd1cmVzIHRoZSBzcGVjaWZpZWQgcGVyaXBoZXJhbCBhbmQgbG93IHBvd2VyIG1vZGUgYmVoYXZpb3IKKyAgKiAgIHdoZW4gdGhlIE1DVSB1bmRlciBEZWJ1ZyBtb2RlLgorICAqIEBwYXJhbSAgREJHTUNVX1BlcmlwaDogc3BlY2lmaWVzIHRoZSBwZXJpcGhlcmFsIGFuZCBsb3cgcG93ZXIgbW9kZS4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhbnkgY29tYmluYXRpb24gb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICAgIEBhcmcgREJHTUNVX1NMRUVQOiBLZWVwIGRlYnVnZ2VyIGNvbm5lY3Rpb24gZHVyaW5nIFNMRUVQIG1vZGUgICAgICAgICAgICAgIAorICAqICAgICBAYXJnIERCR01DVV9TVE9QOiBLZWVwIGRlYnVnZ2VyIGNvbm5lY3Rpb24gZHVyaW5nIFNUT1AgbW9kZSAgICAgICAgICAgICAgIAorICAqICAgICBAYXJnIERCR01DVV9TVEFOREJZOiBLZWVwIGRlYnVnZ2VyIGNvbm5lY3Rpb24gZHVyaW5nIFNUQU5EQlkgbW9kZSAgICAgICAgICAgIAorICAqICAgICBAYXJnIERCR01DVV9JV0RHX1NUT1A6IERlYnVnIElXREcgc3RvcHBlZCB3aGVuIENvcmUgaXMgaGFsdGVkICAgICAgICAgIAorICAqICAgICBAYXJnIERCR01DVV9XV0RHX1NUT1A6IERlYnVnIFdXREcgc3RvcHBlZCB3aGVuIENvcmUgaXMgaGFsdGVkICAgICAgICAgIAorICAqICAgICBAYXJnIERCR01DVV9USU0xX1NUT1A6IFRJTTEgY291bnRlciBzdG9wcGVkIHdoZW4gQ29yZSBpcyBoYWx0ZWQgICAgICAgICAgCisgICogICAgIEBhcmcgREJHTUNVX1RJTTJfU1RPUDogVElNMiBjb3VudGVyIHN0b3BwZWQgd2hlbiBDb3JlIGlzIGhhbHRlZCAgICAgICAgICAKKyAgKiAgICAgQGFyZyBEQkdNQ1VfVElNM19TVE9QOiBUSU0zIGNvdW50ZXIgc3RvcHBlZCB3aGVuIENvcmUgaXMgaGFsdGVkICAgICAgICAgIAorICAqICAgICBAYXJnIERCR01DVV9USU00X1NUT1A6IFRJTTQgY291bnRlciBzdG9wcGVkIHdoZW4gQ29yZSBpcyBoYWx0ZWQgICAgICAgICAgCisgICogICAgIEBhcmcgREJHTUNVX0NBTjFfU1RPUDogRGVidWcgQ0FOMiBzdG9wcGVkIHdoZW4gQ29yZSBpcyBoYWx0ZWQgICAgICAgICAgIAorICAqICAgICBAYXJnIERCR01DVV9JMkMxX1NNQlVTX1RJTUVPVVQ6IEkyQzEgU01CVVMgdGltZW91dCBtb2RlIHN0b3BwZWQgd2hlbiBDb3JlIGlzIGhhbHRlZAorICAqICAgICBAYXJnIERCR01DVV9JMkMyX1NNQlVTX1RJTUVPVVQ6IEkyQzIgU01CVVMgdGltZW91dCBtb2RlIHN0b3BwZWQgd2hlbiBDb3JlIGlzIGhhbHRlZAorICAqICAgICBAYXJnIERCR01DVV9USU01X1NUT1A6IFRJTTUgY291bnRlciBzdG9wcGVkIHdoZW4gQ29yZSBpcyBoYWx0ZWQgICAgICAgICAgCisgICogICAgIEBhcmcgREJHTUNVX1RJTTZfU1RPUDogVElNNiBjb3VudGVyIHN0b3BwZWQgd2hlbiBDb3JlIGlzIGhhbHRlZCAgICAgICAgICAKKyAgKiAgICAgQGFyZyBEQkdNQ1VfVElNN19TVE9QOiBUSU03IGNvdW50ZXIgc3RvcHBlZCB3aGVuIENvcmUgaXMgaGFsdGVkICAgICAgICAgIAorICAqICAgICBAYXJnIERCR01DVV9USU04X1NUT1A6IFRJTTggY291bnRlciBzdG9wcGVkIHdoZW4gQ29yZSBpcyBoYWx0ZWQKKyAgKiAgICAgQGFyZyBEQkdNQ1VfQ0FOMl9TVE9QOiBEZWJ1ZyBDQU4yIHN0b3BwZWQgd2hlbiBDb3JlIGlzIGhhbHRlZCAKKyAgKiAgICAgQGFyZyBEQkdNQ1VfVElNMTVfU1RPUDogVElNMTUgY291bnRlciBzdG9wcGVkIHdoZW4gQ29yZSBpcyBoYWx0ZWQKKyAgKiAgICAgQGFyZyBEQkdNQ1VfVElNMTZfU1RPUDogVElNMTYgY291bnRlciBzdG9wcGVkIHdoZW4gQ29yZSBpcyBoYWx0ZWQKKyAgKiAgICAgQGFyZyBEQkdNQ1VfVElNMTdfU1RPUDogVElNMTcgY291bnRlciBzdG9wcGVkIHdoZW4gQ29yZSBpcyBoYWx0ZWQgICAgICAgICAgICAgICAgCisgICogICAgIEBhcmcgREJHTUNVX1RJTTlfU1RPUDogVElNOSBjb3VudGVyIHN0b3BwZWQgd2hlbiBDb3JlIGlzIGhhbHRlZAorICAqICAgICBAYXJnIERCR01DVV9USU0xMF9TVE9QOiBUSU0xMCBjb3VudGVyIHN0b3BwZWQgd2hlbiBDb3JlIGlzIGhhbHRlZAorICAqICAgICBAYXJnIERCR01DVV9USU0xMV9TVE9QOiBUSU0xMSBjb3VudGVyIHN0b3BwZWQgd2hlbiBDb3JlIGlzIGhhbHRlZAorICAqICAgICBAYXJnIERCR01DVV9USU0xMl9TVE9QOiBUSU0xMiBjb3VudGVyIHN0b3BwZWQgd2hlbiBDb3JlIGlzIGhhbHRlZAorICAqICAgICBAYXJnIERCR01DVV9USU0xM19TVE9QOiBUSU0xMyBjb3VudGVyIHN0b3BwZWQgd2hlbiBDb3JlIGlzIGhhbHRlZAorICAqICAgICBAYXJnIERCR01DVV9USU0xNF9TVE9QOiBUSU0xNCBjb3VudGVyIHN0b3BwZWQgd2hlbiBDb3JlIGlzIGhhbHRlZAorICAqIEBwYXJhbSAgTmV3U3RhdGU6IG5ldyBzdGF0ZSBvZiB0aGUgc3BlY2lmaWVkIHBlcmlwaGVyYWwgaW4gRGVidWcgbW9kZS4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZTogRU5BQkxFIG9yIERJU0FCTEUuCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIERCR01DVV9Db25maWcodWludDMyX3QgREJHTUNVX1BlcmlwaCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfREJHTUNVX1BFUklQSChEQkdNQ1VfUGVyaXBoKSk7CisgIGFzc2VydF9wYXJhbShJU19GVU5DVElPTkFMX1NUQVRFKE5ld1N0YXRlKSk7CisKKyAgaWYgKE5ld1N0YXRlICE9IERJU0FCTEUpCisgIHsKKyAgICBEQkdNQ1UtPkNSIHw9IERCR01DVV9QZXJpcGg7CisgIH0KKyAgZWxzZQorICB7CisgICAgREJHTUNVLT5DUiAmPSB+REJHTUNVX1BlcmlwaDsKKyAgfQorfQorCisvKioKKyAgKiBAfQorICAqLworCisvKioKKyAgKiBAfQorICAqLworCisvKioKKyAgKiBAfQorICAqLworCisvKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIDIwMTEgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvc3RfZndfbGliL3NyYy9zdG0zMmYxMHhfZG1hLmMgYi9zdF9md19saWIvc3JjL3N0bTMyZjEweF9kbWEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZjA3MmRmCi0tLSAvZGV2L251bGwKKysrIGIvc3RfZndfbGliL3NyYy9zdG0zMmYxMHhfZG1hLmMKQEAgLTAsMCArMSw3MTQgQEAKKy8qKgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKiBAZmlsZSAgICBzdG0zMmYxMHhfZG1hLmMKKyAgKiBAYXV0aG9yICBNQ0QgQXBwbGljYXRpb24gVGVhbQorICAqIEB2ZXJzaW9uIFYzLjUuMAorICAqIEBkYXRlICAgIDExLU1hcmNoLTIwMTEKKyAgKiBAYnJpZWYgICBUaGlzIGZpbGUgcHJvdmlkZXMgYWxsIHRoZSBETUEgZmlybXdhcmUgZnVuY3Rpb25zLgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKiBAYXR0ZW50aW9uCisgICoKKyAgKiBUSEUgUFJFU0VOVCBGSVJNV0FSRSBXSElDSCBJUyBGT1IgR1VJREFOQ0UgT05MWSBBSU1TIEFUIFBST1ZJRElORyBDVVNUT01FUlMKKyAgKiBXSVRIIENPRElORyBJTkZPUk1BVElPTiBSRUdBUkRJTkcgVEhFSVIgUFJPRFVDVFMgSU4gT1JERVIgRk9SIFRIRU0gVE8gU0FWRQorICAqIFRJTUUuIEFTIEEgUkVTVUxULCBTVE1JQ1JPRUxFQ1RST05JQ1MgU0hBTEwgTk9UIEJFIEhFTEQgTElBQkxFIEZPUiBBTlkKKyAgKiBESVJFQ1QsIElORElSRUNUIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBXSVRIIFJFU1BFQ1QgVE8gQU5ZIENMQUlNUyBBUklTSU5HCisgICogRlJPTSBUSEUgQ09OVEVOVCBPRiBTVUNIIEZJUk1XQVJFIEFORC9PUiBUSEUgVVNFIE1BREUgQlkgQ1VTVE9NRVJTIE9GIFRIRQorICAqIENPRElORyBJTkZPUk1BVElPTiBDT05UQUlORUQgSEVSRUlOIElOIENPTk5FQ1RJT04gV0lUSCBUSEVJUiBQUk9EVUNUUy4KKyAgKgorICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDT1BZUklHSFQgMjAxMSBTVE1pY3JvZWxlY3Ryb25pY3M8L2NlbnRlcj48L2gyPgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKi8KKworLyogSW5jbHVkZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyNpbmNsdWRlICJzdG0zMmYxMHhfZG1hLmgiCisjaW5jbHVkZSAic3RtMzJmMTB4X3JjYy5oIgorCisvKiogQGFkZHRvZ3JvdXAgU1RNMzJGMTB4X1N0ZFBlcmlwaF9Ecml2ZXIKKyAgKiBAeworICAqLworCisvKiogQGRlZmdyb3VwIERNQSAKKyAgKiBAYnJpZWYgRE1BIGRyaXZlciBtb2R1bGVzCisgICogQHsKKyAgKi8gCisKKy8qKiBAZGVmZ3JvdXAgRE1BX1ByaXZhdGVfVHlwZXNEZWZpbml0aW9ucworICAqIEB7CisgICovIAorLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBETUFfUHJpdmF0ZV9EZWZpbmVzCisgICogQHsKKyAgKi8KKworCisvKiBETUExIENoYW5uZWx4IGludGVycnVwdCBwZW5kaW5nIGJpdCBtYXNrcyAqLworI2RlZmluZSBETUExX0NoYW5uZWwxX0lUX01hc2sgICAgKCh1aW50MzJfdCkoRE1BX0lTUl9HSUYxIHwgRE1BX0lTUl9UQ0lGMSB8IERNQV9JU1JfSFRJRjEgfCBETUFfSVNSX1RFSUYxKSkKKyNkZWZpbmUgRE1BMV9DaGFubmVsMl9JVF9NYXNrICAgICgodWludDMyX3QpKERNQV9JU1JfR0lGMiB8IERNQV9JU1JfVENJRjIgfCBETUFfSVNSX0hUSUYyIHwgRE1BX0lTUl9URUlGMikpCisjZGVmaW5lIERNQTFfQ2hhbm5lbDNfSVRfTWFzayAgICAoKHVpbnQzMl90KShETUFfSVNSX0dJRjMgfCBETUFfSVNSX1RDSUYzIHwgRE1BX0lTUl9IVElGMyB8IERNQV9JU1JfVEVJRjMpKQorI2RlZmluZSBETUExX0NoYW5uZWw0X0lUX01hc2sgICAgKCh1aW50MzJfdCkoRE1BX0lTUl9HSUY0IHwgRE1BX0lTUl9UQ0lGNCB8IERNQV9JU1JfSFRJRjQgfCBETUFfSVNSX1RFSUY0KSkKKyNkZWZpbmUgRE1BMV9DaGFubmVsNV9JVF9NYXNrICAgICgodWludDMyX3QpKERNQV9JU1JfR0lGNSB8IERNQV9JU1JfVENJRjUgfCBETUFfSVNSX0hUSUY1IHwgRE1BX0lTUl9URUlGNSkpCisjZGVmaW5lIERNQTFfQ2hhbm5lbDZfSVRfTWFzayAgICAoKHVpbnQzMl90KShETUFfSVNSX0dJRjYgfCBETUFfSVNSX1RDSUY2IHwgRE1BX0lTUl9IVElGNiB8IERNQV9JU1JfVEVJRjYpKQorI2RlZmluZSBETUExX0NoYW5uZWw3X0lUX01hc2sgICAgKCh1aW50MzJfdCkoRE1BX0lTUl9HSUY3IHwgRE1BX0lTUl9UQ0lGNyB8IERNQV9JU1JfSFRJRjcgfCBETUFfSVNSX1RFSUY3KSkKKworLyogRE1BMiBDaGFubmVseCBpbnRlcnJ1cHQgcGVuZGluZyBiaXQgbWFza3MgKi8KKyNkZWZpbmUgRE1BMl9DaGFubmVsMV9JVF9NYXNrICAgICgodWludDMyX3QpKERNQV9JU1JfR0lGMSB8IERNQV9JU1JfVENJRjEgfCBETUFfSVNSX0hUSUYxIHwgRE1BX0lTUl9URUlGMSkpCisjZGVmaW5lIERNQTJfQ2hhbm5lbDJfSVRfTWFzayAgICAoKHVpbnQzMl90KShETUFfSVNSX0dJRjIgfCBETUFfSVNSX1RDSUYyIHwgRE1BX0lTUl9IVElGMiB8IERNQV9JU1JfVEVJRjIpKQorI2RlZmluZSBETUEyX0NoYW5uZWwzX0lUX01hc2sgICAgKCh1aW50MzJfdCkoRE1BX0lTUl9HSUYzIHwgRE1BX0lTUl9UQ0lGMyB8IERNQV9JU1JfSFRJRjMgfCBETUFfSVNSX1RFSUYzKSkKKyNkZWZpbmUgRE1BMl9DaGFubmVsNF9JVF9NYXNrICAgICgodWludDMyX3QpKERNQV9JU1JfR0lGNCB8IERNQV9JU1JfVENJRjQgfCBETUFfSVNSX0hUSUY0IHwgRE1BX0lTUl9URUlGNCkpCisjZGVmaW5lIERNQTJfQ2hhbm5lbDVfSVRfTWFzayAgICAoKHVpbnQzMl90KShETUFfSVNSX0dJRjUgfCBETUFfSVNSX1RDSUY1IHwgRE1BX0lTUl9IVElGNSB8IERNQV9JU1JfVEVJRjUpKQorCisvKiBETUEyIEZMQUcgbWFzayAqLworI2RlZmluZSBGTEFHX01hc2sgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDEwMDAwMDAwKQorCisvKiBETUEgcmVnaXN0ZXJzIE1hc2tzICovCisjZGVmaW5lIENDUl9DTEVBUl9NYXNrICAgICAgICAgICAoKHVpbnQzMl90KTB4RkZGRjgwMEYpCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgRE1BX1ByaXZhdGVfTWFjcm9zCisgICogQHsKKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBETUFfUHJpdmF0ZV9WYXJpYWJsZXMKKyAgKiBAeworICAqLworCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIERNQV9Qcml2YXRlX0Z1bmN0aW9uUHJvdG90eXBlcworICAqIEB7CisgICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgRE1BX1ByaXZhdGVfRnVuY3Rpb25zCisgICogQHsKKyAgKi8KKworLyoqCisgICogQGJyaWVmICBEZWluaXRpYWxpemVzIHRoZSBETUF5IENoYW5uZWx4IHJlZ2lzdGVycyB0byB0aGVpciBkZWZhdWx0IHJlc2V0CisgICogICAgICAgICB2YWx1ZXMuCisgICogQHBhcmFtICBETUF5X0NoYW5uZWx4OiB3aGVyZSB5IGNhbiBiZSAxIG9yIDIgdG8gc2VsZWN0IHRoZSBETUEgYW5kCisgICogICB4IGNhbiBiZSAxIHRvIDcgZm9yIERNQTEgYW5kIDEgdG8gNSBmb3IgRE1BMiB0byBzZWxlY3QgdGhlIERNQSBDaGFubmVsLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBETUFfRGVJbml0KERNQV9DaGFubmVsX1R5cGVEZWYqIERNQXlfQ2hhbm5lbHgpCit7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19ETUFfQUxMX1BFUklQSChETUF5X0NoYW5uZWx4KSk7CisgIAorICAvKiBEaXNhYmxlIHRoZSBzZWxlY3RlZCBETUF5IENoYW5uZWx4ICovCisgIERNQXlfQ2hhbm5lbHgtPkNDUiAmPSAodWludDE2X3QpKH5ETUFfQ0NSMV9FTik7CisgIAorICAvKiBSZXNldCBETUF5IENoYW5uZWx4IGNvbnRyb2wgcmVnaXN0ZXIgKi8KKyAgRE1BeV9DaGFubmVseC0+Q0NSICA9IDA7CisgIAorICAvKiBSZXNldCBETUF5IENoYW5uZWx4IHJlbWFpbmluZyBieXRlcyByZWdpc3RlciAqLworICBETUF5X0NoYW5uZWx4LT5DTkRUUiA9IDA7CisgIAorICAvKiBSZXNldCBETUF5IENoYW5uZWx4IHBlcmlwaGVyYWwgYWRkcmVzcyByZWdpc3RlciAqLworICBETUF5X0NoYW5uZWx4LT5DUEFSICA9IDA7CisgIAorICAvKiBSZXNldCBETUF5IENoYW5uZWx4IG1lbW9yeSBhZGRyZXNzIHJlZ2lzdGVyICovCisgIERNQXlfQ2hhbm5lbHgtPkNNQVIgPSAwOworICAKKyAgaWYgKERNQXlfQ2hhbm5lbHggPT0gRE1BMV9DaGFubmVsMSkKKyAgeworICAgIC8qIFJlc2V0IGludGVycnVwdCBwZW5kaW5nIGJpdHMgZm9yIERNQTEgQ2hhbm5lbDEgKi8KKyAgICBETUExLT5JRkNSIHw9IERNQTFfQ2hhbm5lbDFfSVRfTWFzazsKKyAgfQorICBlbHNlIGlmIChETUF5X0NoYW5uZWx4ID09IERNQTFfQ2hhbm5lbDIpCisgIHsKKyAgICAvKiBSZXNldCBpbnRlcnJ1cHQgcGVuZGluZyBiaXRzIGZvciBETUExIENoYW5uZWwyICovCisgICAgRE1BMS0+SUZDUiB8PSBETUExX0NoYW5uZWwyX0lUX01hc2s7CisgIH0KKyAgZWxzZSBpZiAoRE1BeV9DaGFubmVseCA9PSBETUExX0NoYW5uZWwzKQorICB7CisgICAgLyogUmVzZXQgaW50ZXJydXB0IHBlbmRpbmcgYml0cyBmb3IgRE1BMSBDaGFubmVsMyAqLworICAgIERNQTEtPklGQ1IgfD0gRE1BMV9DaGFubmVsM19JVF9NYXNrOworICB9CisgIGVsc2UgaWYgKERNQXlfQ2hhbm5lbHggPT0gRE1BMV9DaGFubmVsNCkKKyAgeworICAgIC8qIFJlc2V0IGludGVycnVwdCBwZW5kaW5nIGJpdHMgZm9yIERNQTEgQ2hhbm5lbDQgKi8KKyAgICBETUExLT5JRkNSIHw9IERNQTFfQ2hhbm5lbDRfSVRfTWFzazsKKyAgfQorICBlbHNlIGlmIChETUF5X0NoYW5uZWx4ID09IERNQTFfQ2hhbm5lbDUpCisgIHsKKyAgICAvKiBSZXNldCBpbnRlcnJ1cHQgcGVuZGluZyBiaXRzIGZvciBETUExIENoYW5uZWw1ICovCisgICAgRE1BMS0+SUZDUiB8PSBETUExX0NoYW5uZWw1X0lUX01hc2s7CisgIH0KKyAgZWxzZSBpZiAoRE1BeV9DaGFubmVseCA9PSBETUExX0NoYW5uZWw2KQorICB7CisgICAgLyogUmVzZXQgaW50ZXJydXB0IHBlbmRpbmcgYml0cyBmb3IgRE1BMSBDaGFubmVsNiAqLworICAgIERNQTEtPklGQ1IgfD0gRE1BMV9DaGFubmVsNl9JVF9NYXNrOworICB9CisgIGVsc2UgaWYgKERNQXlfQ2hhbm5lbHggPT0gRE1BMV9DaGFubmVsNykKKyAgeworICAgIC8qIFJlc2V0IGludGVycnVwdCBwZW5kaW5nIGJpdHMgZm9yIERNQTEgQ2hhbm5lbDcgKi8KKyAgICBETUExLT5JRkNSIHw9IERNQTFfQ2hhbm5lbDdfSVRfTWFzazsKKyAgfQorICBlbHNlIGlmIChETUF5X0NoYW5uZWx4ID09IERNQTJfQ2hhbm5lbDEpCisgIHsKKyAgICAvKiBSZXNldCBpbnRlcnJ1cHQgcGVuZGluZyBiaXRzIGZvciBETUEyIENoYW5uZWwxICovCisgICAgRE1BMi0+SUZDUiB8PSBETUEyX0NoYW5uZWwxX0lUX01hc2s7CisgIH0KKyAgZWxzZSBpZiAoRE1BeV9DaGFubmVseCA9PSBETUEyX0NoYW5uZWwyKQorICB7CisgICAgLyogUmVzZXQgaW50ZXJydXB0IHBlbmRpbmcgYml0cyBmb3IgRE1BMiBDaGFubmVsMiAqLworICAgIERNQTItPklGQ1IgfD0gRE1BMl9DaGFubmVsMl9JVF9NYXNrOworICB9CisgIGVsc2UgaWYgKERNQXlfQ2hhbm5lbHggPT0gRE1BMl9DaGFubmVsMykKKyAgeworICAgIC8qIFJlc2V0IGludGVycnVwdCBwZW5kaW5nIGJpdHMgZm9yIERNQTIgQ2hhbm5lbDMgKi8KKyAgICBETUEyLT5JRkNSIHw9IERNQTJfQ2hhbm5lbDNfSVRfTWFzazsKKyAgfQorICBlbHNlIGlmIChETUF5X0NoYW5uZWx4ID09IERNQTJfQ2hhbm5lbDQpCisgIHsKKyAgICAvKiBSZXNldCBpbnRlcnJ1cHQgcGVuZGluZyBiaXRzIGZvciBETUEyIENoYW5uZWw0ICovCisgICAgRE1BMi0+SUZDUiB8PSBETUEyX0NoYW5uZWw0X0lUX01hc2s7CisgIH0KKyAgZWxzZQorICB7IAorICAgIGlmIChETUF5X0NoYW5uZWx4ID09IERNQTJfQ2hhbm5lbDUpCisgICAgeworICAgICAgLyogUmVzZXQgaW50ZXJydXB0IHBlbmRpbmcgYml0cyBmb3IgRE1BMiBDaGFubmVsNSAqLworICAgICAgRE1BMi0+SUZDUiB8PSBETUEyX0NoYW5uZWw1X0lUX01hc2s7CisgICAgfQorICB9Cit9CisKKy8qKgorICAqIEBicmllZiAgSW5pdGlhbGl6ZXMgdGhlIERNQXkgQ2hhbm5lbHggYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQKKyAgKiAgICAgICAgIHBhcmFtZXRlcnMgaW4gdGhlIERNQV9Jbml0U3RydWN0LgorICAqIEBwYXJhbSAgRE1BeV9DaGFubmVseDogd2hlcmUgeSBjYW4gYmUgMSBvciAyIHRvIHNlbGVjdCB0aGUgRE1BIGFuZCAKKyAgKiAgIHggY2FuIGJlIDEgdG8gNyBmb3IgRE1BMSBhbmQgMSB0byA1IGZvciBETUEyIHRvIHNlbGVjdCB0aGUgRE1BIENoYW5uZWwuCisgICogQHBhcmFtICBETUFfSW5pdFN0cnVjdDogcG9pbnRlciB0byBhIERNQV9Jbml0VHlwZURlZiBzdHJ1Y3R1cmUgdGhhdAorICAqICAgICAgICAgY29udGFpbnMgdGhlIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gZm9yIHRoZSBzcGVjaWZpZWQgRE1BIENoYW5uZWwuCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIERNQV9Jbml0KERNQV9DaGFubmVsX1R5cGVEZWYqIERNQXlfQ2hhbm5lbHgsIERNQV9Jbml0VHlwZURlZiogRE1BX0luaXRTdHJ1Y3QpCit7CisgIHVpbnQzMl90IHRtcHJlZyA9IDA7CisKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX0RNQV9BTExfUEVSSVBIKERNQXlfQ2hhbm5lbHgpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0RNQV9ESVIoRE1BX0luaXRTdHJ1Y3QtPkRNQV9ESVIpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0RNQV9CVUZGRVJfU0laRShETUFfSW5pdFN0cnVjdC0+RE1BX0J1ZmZlclNpemUpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0RNQV9QRVJJUEhFUkFMX0lOQ19TVEFURShETUFfSW5pdFN0cnVjdC0+RE1BX1BlcmlwaGVyYWxJbmMpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0RNQV9NRU1PUllfSU5DX1NUQVRFKERNQV9Jbml0U3RydWN0LT5ETUFfTWVtb3J5SW5jKSk7ICAgCisgIGFzc2VydF9wYXJhbShJU19ETUFfUEVSSVBIRVJBTF9EQVRBX1NJWkUoRE1BX0luaXRTdHJ1Y3QtPkRNQV9QZXJpcGhlcmFsRGF0YVNpemUpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0RNQV9NRU1PUllfREFUQV9TSVpFKERNQV9Jbml0U3RydWN0LT5ETUFfTWVtb3J5RGF0YVNpemUpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0RNQV9NT0RFKERNQV9Jbml0U3RydWN0LT5ETUFfTW9kZSkpOworICBhc3NlcnRfcGFyYW0oSVNfRE1BX1BSSU9SSVRZKERNQV9Jbml0U3RydWN0LT5ETUFfUHJpb3JpdHkpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0RNQV9NMk1fU1RBVEUoRE1BX0luaXRTdHJ1Y3QtPkRNQV9NMk0pKTsKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRE1BeSBDaGFubmVseCBDQ1IgQ29uZmlndXJhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLSovCisgIC8qIEdldCB0aGUgRE1BeV9DaGFubmVseCBDQ1IgdmFsdWUgKi8KKyAgdG1wcmVnID0gRE1BeV9DaGFubmVseC0+Q0NSOworICAvKiBDbGVhciBNRU0yTUVNLCBQTCwgTVNJWkUsIFBTSVpFLCBNSU5DLCBQSU5DLCBDSVJDIGFuZCBESVIgYml0cyAqLworICB0bXByZWcgJj0gQ0NSX0NMRUFSX01hc2s7CisgIC8qIENvbmZpZ3VyZSBETUF5IENoYW5uZWx4OiBkYXRhIHRyYW5zZmVyLCBkYXRhIHNpemUsIHByaW9yaXR5IGxldmVsIGFuZCBtb2RlICovCisgIC8qIFNldCBESVIgYml0IGFjY29yZGluZyB0byBETUFfRElSIHZhbHVlICovCisgIC8qIFNldCBDSVJDIGJpdCBhY2NvcmRpbmcgdG8gRE1BX01vZGUgdmFsdWUgKi8KKyAgLyogU2V0IFBJTkMgYml0IGFjY29yZGluZyB0byBETUFfUGVyaXBoZXJhbEluYyB2YWx1ZSAqLworICAvKiBTZXQgTUlOQyBiaXQgYWNjb3JkaW5nIHRvIERNQV9NZW1vcnlJbmMgdmFsdWUgKi8KKyAgLyogU2V0IFBTSVpFIGJpdHMgYWNjb3JkaW5nIHRvIERNQV9QZXJpcGhlcmFsRGF0YVNpemUgdmFsdWUgKi8KKyAgLyogU2V0IE1TSVpFIGJpdHMgYWNjb3JkaW5nIHRvIERNQV9NZW1vcnlEYXRhU2l6ZSB2YWx1ZSAqLworICAvKiBTZXQgUEwgYml0cyBhY2NvcmRpbmcgdG8gRE1BX1ByaW9yaXR5IHZhbHVlICovCisgIC8qIFNldCB0aGUgTUVNMk1FTSBiaXQgYWNjb3JkaW5nIHRvIERNQV9NMk0gdmFsdWUgKi8KKyAgdG1wcmVnIHw9IERNQV9Jbml0U3RydWN0LT5ETUFfRElSIHwgRE1BX0luaXRTdHJ1Y3QtPkRNQV9Nb2RlIHwKKyAgICAgICAgICAgIERNQV9Jbml0U3RydWN0LT5ETUFfUGVyaXBoZXJhbEluYyB8IERNQV9Jbml0U3RydWN0LT5ETUFfTWVtb3J5SW5jIHwKKyAgICAgICAgICAgIERNQV9Jbml0U3RydWN0LT5ETUFfUGVyaXBoZXJhbERhdGFTaXplIHwgRE1BX0luaXRTdHJ1Y3QtPkRNQV9NZW1vcnlEYXRhU2l6ZSB8CisgICAgICAgICAgICBETUFfSW5pdFN0cnVjdC0+RE1BX1ByaW9yaXR5IHwgRE1BX0luaXRTdHJ1Y3QtPkRNQV9NMk07CisKKyAgLyogV3JpdGUgdG8gRE1BeSBDaGFubmVseCBDQ1IgKi8KKyAgRE1BeV9DaGFubmVseC0+Q0NSID0gdG1wcmVnOworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBETUF5IENoYW5uZWx4IENORFRSIENvbmZpZ3VyYXRpb24gLS0tLS0tLS0tLS0tLS0tKi8KKyAgLyogV3JpdGUgdG8gRE1BeSBDaGFubmVseCBDTkRUUiAqLworICBETUF5X0NoYW5uZWx4LT5DTkRUUiA9IERNQV9Jbml0U3RydWN0LT5ETUFfQnVmZmVyU2l6ZTsKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRE1BeSBDaGFubmVseCBDUEFSIENvbmZpZ3VyYXRpb24gLS0tLS0tLS0tLS0tLS0tLSovCisgIC8qIFdyaXRlIHRvIERNQXkgQ2hhbm5lbHggQ1BBUiAqLworICBETUF5X0NoYW5uZWx4LT5DUEFSID0gRE1BX0luaXRTdHJ1Y3QtPkRNQV9QZXJpcGhlcmFsQmFzZUFkZHI7CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIERNQXkgQ2hhbm5lbHggQ01BUiBDb25maWd1cmF0aW9uIC0tLS0tLS0tLS0tLS0tLS0qLworICAvKiBXcml0ZSB0byBETUF5IENoYW5uZWx4IENNQVIgKi8KKyAgRE1BeV9DaGFubmVseC0+Q01BUiA9IERNQV9Jbml0U3RydWN0LT5ETUFfTWVtb3J5QmFzZUFkZHI7Cit9CisKKy8qKgorICAqIEBicmllZiAgRmlsbHMgZWFjaCBETUFfSW5pdFN0cnVjdCBtZW1iZXIgd2l0aCBpdHMgZGVmYXVsdCB2YWx1ZS4KKyAgKiBAcGFyYW0gIERNQV9Jbml0U3RydWN0IDogcG9pbnRlciB0byBhIERNQV9Jbml0VHlwZURlZiBzdHJ1Y3R1cmUgd2hpY2ggd2lsbAorICAqICAgICAgICAgYmUgaW5pdGlhbGl6ZWQuCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIERNQV9TdHJ1Y3RJbml0KERNQV9Jbml0VHlwZURlZiogRE1BX0luaXRTdHJ1Y3QpCit7CisvKi0tLS0tLS0tLS0tLS0tIFJlc2V0IERNQSBpbml0IHN0cnVjdHVyZSBwYXJhbWV0ZXJzIHZhbHVlcyAtLS0tLS0tLS0tLS0tLS0tLS0qLworICAvKiBJbml0aWFsaXplIHRoZSBETUFfUGVyaXBoZXJhbEJhc2VBZGRyIG1lbWJlciAqLworICBETUFfSW5pdFN0cnVjdC0+RE1BX1BlcmlwaGVyYWxCYXNlQWRkciA9IDA7CisgIC8qIEluaXRpYWxpemUgdGhlIERNQV9NZW1vcnlCYXNlQWRkciBtZW1iZXIgKi8KKyAgRE1BX0luaXRTdHJ1Y3QtPkRNQV9NZW1vcnlCYXNlQWRkciA9IDA7CisgIC8qIEluaXRpYWxpemUgdGhlIERNQV9ESVIgbWVtYmVyICovCisgIERNQV9Jbml0U3RydWN0LT5ETUFfRElSID0gRE1BX0RJUl9QZXJpcGhlcmFsU1JDOworICAvKiBJbml0aWFsaXplIHRoZSBETUFfQnVmZmVyU2l6ZSBtZW1iZXIgKi8KKyAgRE1BX0luaXRTdHJ1Y3QtPkRNQV9CdWZmZXJTaXplID0gMDsKKyAgLyogSW5pdGlhbGl6ZSB0aGUgRE1BX1BlcmlwaGVyYWxJbmMgbWVtYmVyICovCisgIERNQV9Jbml0U3RydWN0LT5ETUFfUGVyaXBoZXJhbEluYyA9IERNQV9QZXJpcGhlcmFsSW5jX0Rpc2FibGU7CisgIC8qIEluaXRpYWxpemUgdGhlIERNQV9NZW1vcnlJbmMgbWVtYmVyICovCisgIERNQV9Jbml0U3RydWN0LT5ETUFfTWVtb3J5SW5jID0gRE1BX01lbW9yeUluY19EaXNhYmxlOworICAvKiBJbml0aWFsaXplIHRoZSBETUFfUGVyaXBoZXJhbERhdGFTaXplIG1lbWJlciAqLworICBETUFfSW5pdFN0cnVjdC0+RE1BX1BlcmlwaGVyYWxEYXRhU2l6ZSA9IERNQV9QZXJpcGhlcmFsRGF0YVNpemVfQnl0ZTsKKyAgLyogSW5pdGlhbGl6ZSB0aGUgRE1BX01lbW9yeURhdGFTaXplIG1lbWJlciAqLworICBETUFfSW5pdFN0cnVjdC0+RE1BX01lbW9yeURhdGFTaXplID0gRE1BX01lbW9yeURhdGFTaXplX0J5dGU7CisgIC8qIEluaXRpYWxpemUgdGhlIERNQV9Nb2RlIG1lbWJlciAqLworICBETUFfSW5pdFN0cnVjdC0+RE1BX01vZGUgPSBETUFfTW9kZV9Ob3JtYWw7CisgIC8qIEluaXRpYWxpemUgdGhlIERNQV9Qcmlvcml0eSBtZW1iZXIgKi8KKyAgRE1BX0luaXRTdHJ1Y3QtPkRNQV9Qcmlvcml0eSA9IERNQV9Qcmlvcml0eV9Mb3c7CisgIC8qIEluaXRpYWxpemUgdGhlIERNQV9NMk0gbWVtYmVyICovCisgIERNQV9Jbml0U3RydWN0LT5ETUFfTTJNID0gRE1BX00yTV9EaXNhYmxlOworfQorCisvKioKKyAgKiBAYnJpZWYgIEVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIHNwZWNpZmllZCBETUF5IENoYW5uZWx4LgorICAqIEBwYXJhbSAgRE1BeV9DaGFubmVseDogd2hlcmUgeSBjYW4gYmUgMSBvciAyIHRvIHNlbGVjdCB0aGUgRE1BIGFuZCAKKyAgKiAgIHggY2FuIGJlIDEgdG8gNyBmb3IgRE1BMSBhbmQgMSB0byA1IGZvciBETUEyIHRvIHNlbGVjdCB0aGUgRE1BIENoYW5uZWwuCisgICogQHBhcmFtICBOZXdTdGF0ZTogbmV3IHN0YXRlIG9mIHRoZSBETUF5IENoYW5uZWx4LiAKKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZTogRU5BQkxFIG9yIERJU0FCTEUuCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIERNQV9DbWQoRE1BX0NoYW5uZWxfVHlwZURlZiogRE1BeV9DaGFubmVseCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfRE1BX0FMTF9QRVJJUEgoRE1BeV9DaGFubmVseCkpOworICBhc3NlcnRfcGFyYW0oSVNfRlVOQ1RJT05BTF9TVEFURShOZXdTdGF0ZSkpOworCisgIGlmIChOZXdTdGF0ZSAhPSBESVNBQkxFKQorICB7CisgICAgLyogRW5hYmxlIHRoZSBzZWxlY3RlZCBETUF5IENoYW5uZWx4ICovCisgICAgRE1BeV9DaGFubmVseC0+Q0NSIHw9IERNQV9DQ1IxX0VOOworICB9CisgIGVsc2UKKyAgeworICAgIC8qIERpc2FibGUgdGhlIHNlbGVjdGVkIERNQXkgQ2hhbm5lbHggKi8KKyAgICBETUF5X0NoYW5uZWx4LT5DQ1IgJj0gKHVpbnQxNl90KSh+RE1BX0NDUjFfRU4pOworICB9Cit9CisKKy8qKgorICAqIEBicmllZiAgRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgc3BlY2lmaWVkIERNQXkgQ2hhbm5lbHggaW50ZXJydXB0cy4KKyAgKiBAcGFyYW0gIERNQXlfQ2hhbm5lbHg6IHdoZXJlIHkgY2FuIGJlIDEgb3IgMiB0byBzZWxlY3QgdGhlIERNQSBhbmQgCisgICogICB4IGNhbiBiZSAxIHRvIDcgZm9yIERNQTEgYW5kIDEgdG8gNSBmb3IgRE1BMiB0byBzZWxlY3QgdGhlIERNQSBDaGFubmVsLgorICAqIEBwYXJhbSAgRE1BX0lUOiBzcGVjaWZpZXMgdGhlIERNQSBpbnRlcnJ1cHRzIHNvdXJjZXMgdG8gYmUgZW5hYmxlZAorICAqICAgb3IgZGlzYWJsZWQuIAorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGFueSBjb21iaW5hdGlvbiBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBETUFfSVRfVEM6ICBUcmFuc2ZlciBjb21wbGV0ZSBpbnRlcnJ1cHQgbWFzaworICAqICAgICBAYXJnIERNQV9JVF9IVDogIEhhbGYgdHJhbnNmZXIgaW50ZXJydXB0IG1hc2sKKyAgKiAgICAgQGFyZyBETUFfSVRfVEU6ICBUcmFuc2ZlciBlcnJvciBpbnRlcnJ1cHQgbWFzaworICAqIEBwYXJhbSAgTmV3U3RhdGU6IG5ldyBzdGF0ZSBvZiB0aGUgc3BlY2lmaWVkIERNQSBpbnRlcnJ1cHRzLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlOiBFTkFCTEUgb3IgRElTQUJMRS4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgRE1BX0lUQ29uZmlnKERNQV9DaGFubmVsX1R5cGVEZWYqIERNQXlfQ2hhbm5lbHgsIHVpbnQzMl90IERNQV9JVCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfRE1BX0FMTF9QRVJJUEgoRE1BeV9DaGFubmVseCkpOworICBhc3NlcnRfcGFyYW0oSVNfRE1BX0NPTkZJR19JVChETUFfSVQpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0ZVTkNUSU9OQUxfU1RBVEUoTmV3U3RhdGUpKTsKKyAgaWYgKE5ld1N0YXRlICE9IERJU0FCTEUpCisgIHsKKyAgICAvKiBFbmFibGUgdGhlIHNlbGVjdGVkIERNQSBpbnRlcnJ1cHRzICovCisgICAgRE1BeV9DaGFubmVseC0+Q0NSIHw9IERNQV9JVDsKKyAgfQorICBlbHNlCisgIHsKKyAgICAvKiBEaXNhYmxlIHRoZSBzZWxlY3RlZCBETUEgaW50ZXJydXB0cyAqLworICAgIERNQXlfQ2hhbm5lbHgtPkNDUiAmPSB+RE1BX0lUOworICB9Cit9CisKKy8qKgorICAqIEBicmllZiAgU2V0cyB0aGUgbnVtYmVyIG9mIGRhdGEgdW5pdHMgaW4gdGhlIGN1cnJlbnQgRE1BeSBDaGFubmVseCB0cmFuc2Zlci4KKyAgKiBAcGFyYW0gIERNQXlfQ2hhbm5lbHg6IHdoZXJlIHkgY2FuIGJlIDEgb3IgMiB0byBzZWxlY3QgdGhlIERNQSBhbmQgCisgICogICAgICAgICB4IGNhbiBiZSAxIHRvIDcgZm9yIERNQTEgYW5kIDEgdG8gNSBmb3IgRE1BMiB0byBzZWxlY3QgdGhlIERNQSBDaGFubmVsLgorICAqIEBwYXJhbSAgRGF0YU51bWJlcjogVGhlIG51bWJlciBvZiBkYXRhIHVuaXRzIGluIHRoZSBjdXJyZW50IERNQXkgQ2hhbm5lbHgKKyAgKiAgICAgICAgIHRyYW5zZmVyLiAgIAorICAqIEBub3RlICAgVGhpcyBmdW5jdGlvbiBjYW4gb25seSBiZSB1c2VkIHdoZW4gdGhlIERNQXlfQ2hhbm5lbHggaXMgZGlzYWJsZWQuICAgICAgICAgICAgICAgICAKKyAgKiBAcmV0dmFsIE5vbmUuCisgICovCit2b2lkIERNQV9TZXRDdXJyRGF0YUNvdW50ZXIoRE1BX0NoYW5uZWxfVHlwZURlZiogRE1BeV9DaGFubmVseCwgdWludDE2X3QgRGF0YU51bWJlcikKK3sKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX0RNQV9BTExfUEVSSVBIKERNQXlfQ2hhbm5lbHgpKTsKKyAgCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBETUF5IENoYW5uZWx4IENORFRSIENvbmZpZ3VyYXRpb24gLS0tLS0tLS0tLS0tLS0tKi8KKyAgLyogV3JpdGUgdG8gRE1BeSBDaGFubmVseCBDTkRUUiAqLworICBETUF5X0NoYW5uZWx4LT5DTkRUUiA9IERhdGFOdW1iZXI7ICAKK30KKworLyoqCisgICogQGJyaWVmICBSZXR1cm5zIHRoZSBudW1iZXIgb2YgcmVtYWluaW5nIGRhdGEgdW5pdHMgaW4gdGhlIGN1cnJlbnQKKyAgKiAgICAgICAgIERNQXkgQ2hhbm5lbHggdHJhbnNmZXIuCisgICogQHBhcmFtICBETUF5X0NoYW5uZWx4OiB3aGVyZSB5IGNhbiBiZSAxIG9yIDIgdG8gc2VsZWN0IHRoZSBETUEgYW5kIAorICAqICAgeCBjYW4gYmUgMSB0byA3IGZvciBETUExIGFuZCAxIHRvIDUgZm9yIERNQTIgdG8gc2VsZWN0IHRoZSBETUEgQ2hhbm5lbC4KKyAgKiBAcmV0dmFsIFRoZSBudW1iZXIgb2YgcmVtYWluaW5nIGRhdGEgdW5pdHMgaW4gdGhlIGN1cnJlbnQgRE1BeSBDaGFubmVseAorICAqICAgICAgICAgdHJhbnNmZXIuCisgICovCit1aW50MTZfdCBETUFfR2V0Q3VyckRhdGFDb3VudGVyKERNQV9DaGFubmVsX1R5cGVEZWYqIERNQXlfQ2hhbm5lbHgpCit7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19ETUFfQUxMX1BFUklQSChETUF5X0NoYW5uZWx4KSk7CisgIC8qIFJldHVybiB0aGUgbnVtYmVyIG9mIHJlbWFpbmluZyBkYXRhIHVuaXRzIGZvciBETUF5IENoYW5uZWx4ICovCisgIHJldHVybiAoKHVpbnQxNl90KShETUF5X0NoYW5uZWx4LT5DTkRUUikpOworfQorCisvKioKKyAgKiBAYnJpZWYgIENoZWNrcyB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgRE1BeSBDaGFubmVseCBmbGFnIGlzIHNldCBvciBub3QuCisgICogQHBhcmFtICBETUF5X0ZMQUc6IHNwZWNpZmllcyB0aGUgZmxhZyB0byBjaGVjay4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICAgIEBhcmcgRE1BMV9GTEFHX0dMMTogRE1BMSBDaGFubmVsMSBnbG9iYWwgZmxhZy4KKyAgKiAgICAgQGFyZyBETUExX0ZMQUdfVEMxOiBETUExIENoYW5uZWwxIHRyYW5zZmVyIGNvbXBsZXRlIGZsYWcuCisgICogICAgIEBhcmcgRE1BMV9GTEFHX0hUMTogRE1BMSBDaGFubmVsMSBoYWxmIHRyYW5zZmVyIGZsYWcuCisgICogICAgIEBhcmcgRE1BMV9GTEFHX1RFMTogRE1BMSBDaGFubmVsMSB0cmFuc2ZlciBlcnJvciBmbGFnLgorICAqICAgICBAYXJnIERNQTFfRkxBR19HTDI6IERNQTEgQ2hhbm5lbDIgZ2xvYmFsIGZsYWcuCisgICogICAgIEBhcmcgRE1BMV9GTEFHX1RDMjogRE1BMSBDaGFubmVsMiB0cmFuc2ZlciBjb21wbGV0ZSBmbGFnLgorICAqICAgICBAYXJnIERNQTFfRkxBR19IVDI6IERNQTEgQ2hhbm5lbDIgaGFsZiB0cmFuc2ZlciBmbGFnLgorICAqICAgICBAYXJnIERNQTFfRkxBR19URTI6IERNQTEgQ2hhbm5lbDIgdHJhbnNmZXIgZXJyb3IgZmxhZy4KKyAgKiAgICAgQGFyZyBETUExX0ZMQUdfR0wzOiBETUExIENoYW5uZWwzIGdsb2JhbCBmbGFnLgorICAqICAgICBAYXJnIERNQTFfRkxBR19UQzM6IERNQTEgQ2hhbm5lbDMgdHJhbnNmZXIgY29tcGxldGUgZmxhZy4KKyAgKiAgICAgQGFyZyBETUExX0ZMQUdfSFQzOiBETUExIENoYW5uZWwzIGhhbGYgdHJhbnNmZXIgZmxhZy4KKyAgKiAgICAgQGFyZyBETUExX0ZMQUdfVEUzOiBETUExIENoYW5uZWwzIHRyYW5zZmVyIGVycm9yIGZsYWcuCisgICogICAgIEBhcmcgRE1BMV9GTEFHX0dMNDogRE1BMSBDaGFubmVsNCBnbG9iYWwgZmxhZy4KKyAgKiAgICAgQGFyZyBETUExX0ZMQUdfVEM0OiBETUExIENoYW5uZWw0IHRyYW5zZmVyIGNvbXBsZXRlIGZsYWcuCisgICogICAgIEBhcmcgRE1BMV9GTEFHX0hUNDogRE1BMSBDaGFubmVsNCBoYWxmIHRyYW5zZmVyIGZsYWcuCisgICogICAgIEBhcmcgRE1BMV9GTEFHX1RFNDogRE1BMSBDaGFubmVsNCB0cmFuc2ZlciBlcnJvciBmbGFnLgorICAqICAgICBAYXJnIERNQTFfRkxBR19HTDU6IERNQTEgQ2hhbm5lbDUgZ2xvYmFsIGZsYWcuCisgICogICAgIEBhcmcgRE1BMV9GTEFHX1RDNTogRE1BMSBDaGFubmVsNSB0cmFuc2ZlciBjb21wbGV0ZSBmbGFnLgorICAqICAgICBAYXJnIERNQTFfRkxBR19IVDU6IERNQTEgQ2hhbm5lbDUgaGFsZiB0cmFuc2ZlciBmbGFnLgorICAqICAgICBAYXJnIERNQTFfRkxBR19URTU6IERNQTEgQ2hhbm5lbDUgdHJhbnNmZXIgZXJyb3IgZmxhZy4KKyAgKiAgICAgQGFyZyBETUExX0ZMQUdfR0w2OiBETUExIENoYW5uZWw2IGdsb2JhbCBmbGFnLgorICAqICAgICBAYXJnIERNQTFfRkxBR19UQzY6IERNQTEgQ2hhbm5lbDYgdHJhbnNmZXIgY29tcGxldGUgZmxhZy4KKyAgKiAgICAgQGFyZyBETUExX0ZMQUdfSFQ2OiBETUExIENoYW5uZWw2IGhhbGYgdHJhbnNmZXIgZmxhZy4KKyAgKiAgICAgQGFyZyBETUExX0ZMQUdfVEU2OiBETUExIENoYW5uZWw2IHRyYW5zZmVyIGVycm9yIGZsYWcuCisgICogICAgIEBhcmcgRE1BMV9GTEFHX0dMNzogRE1BMSBDaGFubmVsNyBnbG9iYWwgZmxhZy4KKyAgKiAgICAgQGFyZyBETUExX0ZMQUdfVEM3OiBETUExIENoYW5uZWw3IHRyYW5zZmVyIGNvbXBsZXRlIGZsYWcuCisgICogICAgIEBhcmcgRE1BMV9GTEFHX0hUNzogRE1BMSBDaGFubmVsNyBoYWxmIHRyYW5zZmVyIGZsYWcuCisgICogICAgIEBhcmcgRE1BMV9GTEFHX1RFNzogRE1BMSBDaGFubmVsNyB0cmFuc2ZlciBlcnJvciBmbGFnLgorICAqICAgICBAYXJnIERNQTJfRkxBR19HTDE6IERNQTIgQ2hhbm5lbDEgZ2xvYmFsIGZsYWcuCisgICogICAgIEBhcmcgRE1BMl9GTEFHX1RDMTogRE1BMiBDaGFubmVsMSB0cmFuc2ZlciBjb21wbGV0ZSBmbGFnLgorICAqICAgICBAYXJnIERNQTJfRkxBR19IVDE6IERNQTIgQ2hhbm5lbDEgaGFsZiB0cmFuc2ZlciBmbGFnLgorICAqICAgICBAYXJnIERNQTJfRkxBR19URTE6IERNQTIgQ2hhbm5lbDEgdHJhbnNmZXIgZXJyb3IgZmxhZy4KKyAgKiAgICAgQGFyZyBETUEyX0ZMQUdfR0wyOiBETUEyIENoYW5uZWwyIGdsb2JhbCBmbGFnLgorICAqICAgICBAYXJnIERNQTJfRkxBR19UQzI6IERNQTIgQ2hhbm5lbDIgdHJhbnNmZXIgY29tcGxldGUgZmxhZy4KKyAgKiAgICAgQGFyZyBETUEyX0ZMQUdfSFQyOiBETUEyIENoYW5uZWwyIGhhbGYgdHJhbnNmZXIgZmxhZy4KKyAgKiAgICAgQGFyZyBETUEyX0ZMQUdfVEUyOiBETUEyIENoYW5uZWwyIHRyYW5zZmVyIGVycm9yIGZsYWcuCisgICogICAgIEBhcmcgRE1BMl9GTEFHX0dMMzogRE1BMiBDaGFubmVsMyBnbG9iYWwgZmxhZy4KKyAgKiAgICAgQGFyZyBETUEyX0ZMQUdfVEMzOiBETUEyIENoYW5uZWwzIHRyYW5zZmVyIGNvbXBsZXRlIGZsYWcuCisgICogICAgIEBhcmcgRE1BMl9GTEFHX0hUMzogRE1BMiBDaGFubmVsMyBoYWxmIHRyYW5zZmVyIGZsYWcuCisgICogICAgIEBhcmcgRE1BMl9GTEFHX1RFMzogRE1BMiBDaGFubmVsMyB0cmFuc2ZlciBlcnJvciBmbGFnLgorICAqICAgICBAYXJnIERNQTJfRkxBR19HTDQ6IERNQTIgQ2hhbm5lbDQgZ2xvYmFsIGZsYWcuCisgICogICAgIEBhcmcgRE1BMl9GTEFHX1RDNDogRE1BMiBDaGFubmVsNCB0cmFuc2ZlciBjb21wbGV0ZSBmbGFnLgorICAqICAgICBAYXJnIERNQTJfRkxBR19IVDQ6IERNQTIgQ2hhbm5lbDQgaGFsZiB0cmFuc2ZlciBmbGFnLgorICAqICAgICBAYXJnIERNQTJfRkxBR19URTQ6IERNQTIgQ2hhbm5lbDQgdHJhbnNmZXIgZXJyb3IgZmxhZy4KKyAgKiAgICAgQGFyZyBETUEyX0ZMQUdfR0w1OiBETUEyIENoYW5uZWw1IGdsb2JhbCBmbGFnLgorICAqICAgICBAYXJnIERNQTJfRkxBR19UQzU6IERNQTIgQ2hhbm5lbDUgdHJhbnNmZXIgY29tcGxldGUgZmxhZy4KKyAgKiAgICAgQGFyZyBETUEyX0ZMQUdfSFQ1OiBETUEyIENoYW5uZWw1IGhhbGYgdHJhbnNmZXIgZmxhZy4KKyAgKiAgICAgQGFyZyBETUEyX0ZMQUdfVEU1OiBETUEyIENoYW5uZWw1IHRyYW5zZmVyIGVycm9yIGZsYWcuCisgICogQHJldHZhbCBUaGUgbmV3IHN0YXRlIG9mIERNQXlfRkxBRyAoU0VUIG9yIFJFU0VUKS4KKyAgKi8KK0ZsYWdTdGF0dXMgRE1BX0dldEZsYWdTdGF0dXModWludDMyX3QgRE1BeV9GTEFHKQoreworICBGbGFnU3RhdHVzIGJpdHN0YXR1cyA9IFJFU0VUOworICB1aW50MzJfdCB0bXByZWcgPSAwOworICAKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX0RNQV9HRVRfRkxBRyhETUF5X0ZMQUcpKTsKKworICAvKiBDYWxjdWxhdGUgdGhlIHVzZWQgRE1BeSAqLworICBpZiAoKERNQXlfRkxBRyAmIEZMQUdfTWFzaykgIT0gKHVpbnQzMl90KVJFU0VUKQorICB7CisgICAgLyogR2V0IERNQTIgSVNSIHJlZ2lzdGVyIHZhbHVlICovCisgICAgdG1wcmVnID0gRE1BMi0+SVNSIDsKKyAgfQorICBlbHNlCisgIHsKKyAgICAvKiBHZXQgRE1BMSBJU1IgcmVnaXN0ZXIgdmFsdWUgKi8KKyAgICB0bXByZWcgPSBETUExLT5JU1IgOworICB9CisKKyAgLyogQ2hlY2sgdGhlIHN0YXR1cyBvZiB0aGUgc3BlY2lmaWVkIERNQXkgZmxhZyAqLworICBpZiAoKHRtcHJlZyAmIERNQXlfRkxBRykgIT0gKHVpbnQzMl90KVJFU0VUKQorICB7CisgICAgLyogRE1BeV9GTEFHIGlzIHNldCAqLworICAgIGJpdHN0YXR1cyA9IFNFVDsKKyAgfQorICBlbHNlCisgIHsKKyAgICAvKiBETUF5X0ZMQUcgaXMgcmVzZXQgKi8KKyAgICBiaXRzdGF0dXMgPSBSRVNFVDsKKyAgfQorICAKKyAgLyogUmV0dXJuIHRoZSBETUF5X0ZMQUcgc3RhdHVzICovCisgIHJldHVybiAgYml0c3RhdHVzOworfQorCisvKioKKyAgKiBAYnJpZWYgIENsZWFycyB0aGUgRE1BeSBDaGFubmVseCdzIHBlbmRpbmcgZmxhZ3MuCisgICogQHBhcmFtICBETUF5X0ZMQUc6IHNwZWNpZmllcyB0aGUgZmxhZyB0byBjbGVhci4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhbnkgY29tYmluYXRpb24gKGZvciB0aGUgc2FtZSBETUEpIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIERNQTFfRkxBR19HTDE6IERNQTEgQ2hhbm5lbDEgZ2xvYmFsIGZsYWcuCisgICogICAgIEBhcmcgRE1BMV9GTEFHX1RDMTogRE1BMSBDaGFubmVsMSB0cmFuc2ZlciBjb21wbGV0ZSBmbGFnLgorICAqICAgICBAYXJnIERNQTFfRkxBR19IVDE6IERNQTEgQ2hhbm5lbDEgaGFsZiB0cmFuc2ZlciBmbGFnLgorICAqICAgICBAYXJnIERNQTFfRkxBR19URTE6IERNQTEgQ2hhbm5lbDEgdHJhbnNmZXIgZXJyb3IgZmxhZy4KKyAgKiAgICAgQGFyZyBETUExX0ZMQUdfR0wyOiBETUExIENoYW5uZWwyIGdsb2JhbCBmbGFnLgorICAqICAgICBAYXJnIERNQTFfRkxBR19UQzI6IERNQTEgQ2hhbm5lbDIgdHJhbnNmZXIgY29tcGxldGUgZmxhZy4KKyAgKiAgICAgQGFyZyBETUExX0ZMQUdfSFQyOiBETUExIENoYW5uZWwyIGhhbGYgdHJhbnNmZXIgZmxhZy4KKyAgKiAgICAgQGFyZyBETUExX0ZMQUdfVEUyOiBETUExIENoYW5uZWwyIHRyYW5zZmVyIGVycm9yIGZsYWcuCisgICogICAgIEBhcmcgRE1BMV9GTEFHX0dMMzogRE1BMSBDaGFubmVsMyBnbG9iYWwgZmxhZy4KKyAgKiAgICAgQGFyZyBETUExX0ZMQUdfVEMzOiBETUExIENoYW5uZWwzIHRyYW5zZmVyIGNvbXBsZXRlIGZsYWcuCisgICogICAgIEBhcmcgRE1BMV9GTEFHX0hUMzogRE1BMSBDaGFubmVsMyBoYWxmIHRyYW5zZmVyIGZsYWcuCisgICogICAgIEBhcmcgRE1BMV9GTEFHX1RFMzogRE1BMSBDaGFubmVsMyB0cmFuc2ZlciBlcnJvciBmbGFnLgorICAqICAgICBAYXJnIERNQTFfRkxBR19HTDQ6IERNQTEgQ2hhbm5lbDQgZ2xvYmFsIGZsYWcuCisgICogICAgIEBhcmcgRE1BMV9GTEFHX1RDNDogRE1BMSBDaGFubmVsNCB0cmFuc2ZlciBjb21wbGV0ZSBmbGFnLgorICAqICAgICBAYXJnIERNQTFfRkxBR19IVDQ6IERNQTEgQ2hhbm5lbDQgaGFsZiB0cmFuc2ZlciBmbGFnLgorICAqICAgICBAYXJnIERNQTFfRkxBR19URTQ6IERNQTEgQ2hhbm5lbDQgdHJhbnNmZXIgZXJyb3IgZmxhZy4KKyAgKiAgICAgQGFyZyBETUExX0ZMQUdfR0w1OiBETUExIENoYW5uZWw1IGdsb2JhbCBmbGFnLgorICAqICAgICBAYXJnIERNQTFfRkxBR19UQzU6IERNQTEgQ2hhbm5lbDUgdHJhbnNmZXIgY29tcGxldGUgZmxhZy4KKyAgKiAgICAgQGFyZyBETUExX0ZMQUdfSFQ1OiBETUExIENoYW5uZWw1IGhhbGYgdHJhbnNmZXIgZmxhZy4KKyAgKiAgICAgQGFyZyBETUExX0ZMQUdfVEU1OiBETUExIENoYW5uZWw1IHRyYW5zZmVyIGVycm9yIGZsYWcuCisgICogICAgIEBhcmcgRE1BMV9GTEFHX0dMNjogRE1BMSBDaGFubmVsNiBnbG9iYWwgZmxhZy4KKyAgKiAgICAgQGFyZyBETUExX0ZMQUdfVEM2OiBETUExIENoYW5uZWw2IHRyYW5zZmVyIGNvbXBsZXRlIGZsYWcuCisgICogICAgIEBhcmcgRE1BMV9GTEFHX0hUNjogRE1BMSBDaGFubmVsNiBoYWxmIHRyYW5zZmVyIGZsYWcuCisgICogICAgIEBhcmcgRE1BMV9GTEFHX1RFNjogRE1BMSBDaGFubmVsNiB0cmFuc2ZlciBlcnJvciBmbGFnLgorICAqICAgICBAYXJnIERNQTFfRkxBR19HTDc6IERNQTEgQ2hhbm5lbDcgZ2xvYmFsIGZsYWcuCisgICogICAgIEBhcmcgRE1BMV9GTEFHX1RDNzogRE1BMSBDaGFubmVsNyB0cmFuc2ZlciBjb21wbGV0ZSBmbGFnLgorICAqICAgICBAYXJnIERNQTFfRkxBR19IVDc6IERNQTEgQ2hhbm5lbDcgaGFsZiB0cmFuc2ZlciBmbGFnLgorICAqICAgICBAYXJnIERNQTFfRkxBR19URTc6IERNQTEgQ2hhbm5lbDcgdHJhbnNmZXIgZXJyb3IgZmxhZy4KKyAgKiAgICAgQGFyZyBETUEyX0ZMQUdfR0wxOiBETUEyIENoYW5uZWwxIGdsb2JhbCBmbGFnLgorICAqICAgICBAYXJnIERNQTJfRkxBR19UQzE6IERNQTIgQ2hhbm5lbDEgdHJhbnNmZXIgY29tcGxldGUgZmxhZy4KKyAgKiAgICAgQGFyZyBETUEyX0ZMQUdfSFQxOiBETUEyIENoYW5uZWwxIGhhbGYgdHJhbnNmZXIgZmxhZy4KKyAgKiAgICAgQGFyZyBETUEyX0ZMQUdfVEUxOiBETUEyIENoYW5uZWwxIHRyYW5zZmVyIGVycm9yIGZsYWcuCisgICogICAgIEBhcmcgRE1BMl9GTEFHX0dMMjogRE1BMiBDaGFubmVsMiBnbG9iYWwgZmxhZy4KKyAgKiAgICAgQGFyZyBETUEyX0ZMQUdfVEMyOiBETUEyIENoYW5uZWwyIHRyYW5zZmVyIGNvbXBsZXRlIGZsYWcuCisgICogICAgIEBhcmcgRE1BMl9GTEFHX0hUMjogRE1BMiBDaGFubmVsMiBoYWxmIHRyYW5zZmVyIGZsYWcuCisgICogICAgIEBhcmcgRE1BMl9GTEFHX1RFMjogRE1BMiBDaGFubmVsMiB0cmFuc2ZlciBlcnJvciBmbGFnLgorICAqICAgICBAYXJnIERNQTJfRkxBR19HTDM6IERNQTIgQ2hhbm5lbDMgZ2xvYmFsIGZsYWcuCisgICogICAgIEBhcmcgRE1BMl9GTEFHX1RDMzogRE1BMiBDaGFubmVsMyB0cmFuc2ZlciBjb21wbGV0ZSBmbGFnLgorICAqICAgICBAYXJnIERNQTJfRkxBR19IVDM6IERNQTIgQ2hhbm5lbDMgaGFsZiB0cmFuc2ZlciBmbGFnLgorICAqICAgICBAYXJnIERNQTJfRkxBR19URTM6IERNQTIgQ2hhbm5lbDMgdHJhbnNmZXIgZXJyb3IgZmxhZy4KKyAgKiAgICAgQGFyZyBETUEyX0ZMQUdfR0w0OiBETUEyIENoYW5uZWw0IGdsb2JhbCBmbGFnLgorICAqICAgICBAYXJnIERNQTJfRkxBR19UQzQ6IERNQTIgQ2hhbm5lbDQgdHJhbnNmZXIgY29tcGxldGUgZmxhZy4KKyAgKiAgICAgQGFyZyBETUEyX0ZMQUdfSFQ0OiBETUEyIENoYW5uZWw0IGhhbGYgdHJhbnNmZXIgZmxhZy4KKyAgKiAgICAgQGFyZyBETUEyX0ZMQUdfVEU0OiBETUEyIENoYW5uZWw0IHRyYW5zZmVyIGVycm9yIGZsYWcuCisgICogICAgIEBhcmcgRE1BMl9GTEFHX0dMNTogRE1BMiBDaGFubmVsNSBnbG9iYWwgZmxhZy4KKyAgKiAgICAgQGFyZyBETUEyX0ZMQUdfVEM1OiBETUEyIENoYW5uZWw1IHRyYW5zZmVyIGNvbXBsZXRlIGZsYWcuCisgICogICAgIEBhcmcgRE1BMl9GTEFHX0hUNTogRE1BMiBDaGFubmVsNSBoYWxmIHRyYW5zZmVyIGZsYWcuCisgICogICAgIEBhcmcgRE1BMl9GTEFHX1RFNTogRE1BMiBDaGFubmVsNSB0cmFuc2ZlciBlcnJvciBmbGFnLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBETUFfQ2xlYXJGbGFnKHVpbnQzMl90IERNQXlfRkxBRykKK3sKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX0RNQV9DTEVBUl9GTEFHKERNQXlfRkxBRykpOworCisgIC8qIENhbGN1bGF0ZSB0aGUgdXNlZCBETUF5ICovCisgIGlmICgoRE1BeV9GTEFHICYgRkxBR19NYXNrKSAhPSAodWludDMyX3QpUkVTRVQpCisgIHsKKyAgICAvKiBDbGVhciB0aGUgc2VsZWN0ZWQgRE1BeSBmbGFncyAqLworICAgIERNQTItPklGQ1IgPSBETUF5X0ZMQUc7CisgIH0KKyAgZWxzZQorICB7CisgICAgLyogQ2xlYXIgdGhlIHNlbGVjdGVkIERNQXkgZmxhZ3MgKi8KKyAgICBETUExLT5JRkNSID0gRE1BeV9GTEFHOworICB9Cit9CisKKy8qKgorICAqIEBicmllZiAgQ2hlY2tzIHdoZXRoZXIgdGhlIHNwZWNpZmllZCBETUF5IENoYW5uZWx4IGludGVycnVwdCBoYXMgb2NjdXJyZWQgb3Igbm90LgorICAqIEBwYXJhbSAgRE1BeV9JVDogc3BlY2lmaWVzIHRoZSBETUF5IGludGVycnVwdCBzb3VyY2UgdG8gY2hlY2suIAorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBETUExX0lUX0dMMTogRE1BMSBDaGFubmVsMSBnbG9iYWwgaW50ZXJydXB0LgorICAqICAgICBAYXJnIERNQTFfSVRfVEMxOiBETUExIENoYW5uZWwxIHRyYW5zZmVyIGNvbXBsZXRlIGludGVycnVwdC4KKyAgKiAgICAgQGFyZyBETUExX0lUX0hUMTogRE1BMSBDaGFubmVsMSBoYWxmIHRyYW5zZmVyIGludGVycnVwdC4KKyAgKiAgICAgQGFyZyBETUExX0lUX1RFMTogRE1BMSBDaGFubmVsMSB0cmFuc2ZlciBlcnJvciBpbnRlcnJ1cHQuCisgICogICAgIEBhcmcgRE1BMV9JVF9HTDI6IERNQTEgQ2hhbm5lbDIgZ2xvYmFsIGludGVycnVwdC4KKyAgKiAgICAgQGFyZyBETUExX0lUX1RDMjogRE1BMSBDaGFubmVsMiB0cmFuc2ZlciBjb21wbGV0ZSBpbnRlcnJ1cHQuCisgICogICAgIEBhcmcgRE1BMV9JVF9IVDI6IERNQTEgQ2hhbm5lbDIgaGFsZiB0cmFuc2ZlciBpbnRlcnJ1cHQuCisgICogICAgIEBhcmcgRE1BMV9JVF9URTI6IERNQTEgQ2hhbm5lbDIgdHJhbnNmZXIgZXJyb3IgaW50ZXJydXB0LgorICAqICAgICBAYXJnIERNQTFfSVRfR0wzOiBETUExIENoYW5uZWwzIGdsb2JhbCBpbnRlcnJ1cHQuCisgICogICAgIEBhcmcgRE1BMV9JVF9UQzM6IERNQTEgQ2hhbm5lbDMgdHJhbnNmZXIgY29tcGxldGUgaW50ZXJydXB0LgorICAqICAgICBAYXJnIERNQTFfSVRfSFQzOiBETUExIENoYW5uZWwzIGhhbGYgdHJhbnNmZXIgaW50ZXJydXB0LgorICAqICAgICBAYXJnIERNQTFfSVRfVEUzOiBETUExIENoYW5uZWwzIHRyYW5zZmVyIGVycm9yIGludGVycnVwdC4KKyAgKiAgICAgQGFyZyBETUExX0lUX0dMNDogRE1BMSBDaGFubmVsNCBnbG9iYWwgaW50ZXJydXB0LgorICAqICAgICBAYXJnIERNQTFfSVRfVEM0OiBETUExIENoYW5uZWw0IHRyYW5zZmVyIGNvbXBsZXRlIGludGVycnVwdC4KKyAgKiAgICAgQGFyZyBETUExX0lUX0hUNDogRE1BMSBDaGFubmVsNCBoYWxmIHRyYW5zZmVyIGludGVycnVwdC4KKyAgKiAgICAgQGFyZyBETUExX0lUX1RFNDogRE1BMSBDaGFubmVsNCB0cmFuc2ZlciBlcnJvciBpbnRlcnJ1cHQuCisgICogICAgIEBhcmcgRE1BMV9JVF9HTDU6IERNQTEgQ2hhbm5lbDUgZ2xvYmFsIGludGVycnVwdC4KKyAgKiAgICAgQGFyZyBETUExX0lUX1RDNTogRE1BMSBDaGFubmVsNSB0cmFuc2ZlciBjb21wbGV0ZSBpbnRlcnJ1cHQuCisgICogICAgIEBhcmcgRE1BMV9JVF9IVDU6IERNQTEgQ2hhbm5lbDUgaGFsZiB0cmFuc2ZlciBpbnRlcnJ1cHQuCisgICogICAgIEBhcmcgRE1BMV9JVF9URTU6IERNQTEgQ2hhbm5lbDUgdHJhbnNmZXIgZXJyb3IgaW50ZXJydXB0LgorICAqICAgICBAYXJnIERNQTFfSVRfR0w2OiBETUExIENoYW5uZWw2IGdsb2JhbCBpbnRlcnJ1cHQuCisgICogICAgIEBhcmcgRE1BMV9JVF9UQzY6IERNQTEgQ2hhbm5lbDYgdHJhbnNmZXIgY29tcGxldGUgaW50ZXJydXB0LgorICAqICAgICBAYXJnIERNQTFfSVRfSFQ2OiBETUExIENoYW5uZWw2IGhhbGYgdHJhbnNmZXIgaW50ZXJydXB0LgorICAqICAgICBAYXJnIERNQTFfSVRfVEU2OiBETUExIENoYW5uZWw2IHRyYW5zZmVyIGVycm9yIGludGVycnVwdC4KKyAgKiAgICAgQGFyZyBETUExX0lUX0dMNzogRE1BMSBDaGFubmVsNyBnbG9iYWwgaW50ZXJydXB0LgorICAqICAgICBAYXJnIERNQTFfSVRfVEM3OiBETUExIENoYW5uZWw3IHRyYW5zZmVyIGNvbXBsZXRlIGludGVycnVwdC4KKyAgKiAgICAgQGFyZyBETUExX0lUX0hUNzogRE1BMSBDaGFubmVsNyBoYWxmIHRyYW5zZmVyIGludGVycnVwdC4KKyAgKiAgICAgQGFyZyBETUExX0lUX1RFNzogRE1BMSBDaGFubmVsNyB0cmFuc2ZlciBlcnJvciBpbnRlcnJ1cHQuCisgICogICAgIEBhcmcgRE1BMl9JVF9HTDE6IERNQTIgQ2hhbm5lbDEgZ2xvYmFsIGludGVycnVwdC4KKyAgKiAgICAgQGFyZyBETUEyX0lUX1RDMTogRE1BMiBDaGFubmVsMSB0cmFuc2ZlciBjb21wbGV0ZSBpbnRlcnJ1cHQuCisgICogICAgIEBhcmcgRE1BMl9JVF9IVDE6IERNQTIgQ2hhbm5lbDEgaGFsZiB0cmFuc2ZlciBpbnRlcnJ1cHQuCisgICogICAgIEBhcmcgRE1BMl9JVF9URTE6IERNQTIgQ2hhbm5lbDEgdHJhbnNmZXIgZXJyb3IgaW50ZXJydXB0LgorICAqICAgICBAYXJnIERNQTJfSVRfR0wyOiBETUEyIENoYW5uZWwyIGdsb2JhbCBpbnRlcnJ1cHQuCisgICogICAgIEBhcmcgRE1BMl9JVF9UQzI6IERNQTIgQ2hhbm5lbDIgdHJhbnNmZXIgY29tcGxldGUgaW50ZXJydXB0LgorICAqICAgICBAYXJnIERNQTJfSVRfSFQyOiBETUEyIENoYW5uZWwyIGhhbGYgdHJhbnNmZXIgaW50ZXJydXB0LgorICAqICAgICBAYXJnIERNQTJfSVRfVEUyOiBETUEyIENoYW5uZWwyIHRyYW5zZmVyIGVycm9yIGludGVycnVwdC4KKyAgKiAgICAgQGFyZyBETUEyX0lUX0dMMzogRE1BMiBDaGFubmVsMyBnbG9iYWwgaW50ZXJydXB0LgorICAqICAgICBAYXJnIERNQTJfSVRfVEMzOiBETUEyIENoYW5uZWwzIHRyYW5zZmVyIGNvbXBsZXRlIGludGVycnVwdC4KKyAgKiAgICAgQGFyZyBETUEyX0lUX0hUMzogRE1BMiBDaGFubmVsMyBoYWxmIHRyYW5zZmVyIGludGVycnVwdC4KKyAgKiAgICAgQGFyZyBETUEyX0lUX1RFMzogRE1BMiBDaGFubmVsMyB0cmFuc2ZlciBlcnJvciBpbnRlcnJ1cHQuCisgICogICAgIEBhcmcgRE1BMl9JVF9HTDQ6IERNQTIgQ2hhbm5lbDQgZ2xvYmFsIGludGVycnVwdC4KKyAgKiAgICAgQGFyZyBETUEyX0lUX1RDNDogRE1BMiBDaGFubmVsNCB0cmFuc2ZlciBjb21wbGV0ZSBpbnRlcnJ1cHQuCisgICogICAgIEBhcmcgRE1BMl9JVF9IVDQ6IERNQTIgQ2hhbm5lbDQgaGFsZiB0cmFuc2ZlciBpbnRlcnJ1cHQuCisgICogICAgIEBhcmcgRE1BMl9JVF9URTQ6IERNQTIgQ2hhbm5lbDQgdHJhbnNmZXIgZXJyb3IgaW50ZXJydXB0LgorICAqICAgICBAYXJnIERNQTJfSVRfR0w1OiBETUEyIENoYW5uZWw1IGdsb2JhbCBpbnRlcnJ1cHQuCisgICogICAgIEBhcmcgRE1BMl9JVF9UQzU6IERNQTIgQ2hhbm5lbDUgdHJhbnNmZXIgY29tcGxldGUgaW50ZXJydXB0LgorICAqICAgICBAYXJnIERNQTJfSVRfSFQ1OiBETUEyIENoYW5uZWw1IGhhbGYgdHJhbnNmZXIgaW50ZXJydXB0LgorICAqICAgICBAYXJnIERNQTJfSVRfVEU1OiBETUEyIENoYW5uZWw1IHRyYW5zZmVyIGVycm9yIGludGVycnVwdC4KKyAgKiBAcmV0dmFsIFRoZSBuZXcgc3RhdGUgb2YgRE1BeV9JVCAoU0VUIG9yIFJFU0VUKS4KKyAgKi8KK0lUU3RhdHVzIERNQV9HZXRJVFN0YXR1cyh1aW50MzJfdCBETUF5X0lUKQoreworICBJVFN0YXR1cyBiaXRzdGF0dXMgPSBSRVNFVDsKKyAgdWludDMyX3QgdG1wcmVnID0gMDsKKworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfRE1BX0dFVF9JVChETUF5X0lUKSk7CisKKyAgLyogQ2FsY3VsYXRlIHRoZSB1c2VkIERNQSAqLworICBpZiAoKERNQXlfSVQgJiBGTEFHX01hc2spICE9ICh1aW50MzJfdClSRVNFVCkKKyAgeworICAgIC8qIEdldCBETUEyIElTUiByZWdpc3RlciB2YWx1ZSAqLworICAgIHRtcHJlZyA9IERNQTItPklTUjsKKyAgfQorICBlbHNlCisgIHsKKyAgICAvKiBHZXQgRE1BMSBJU1IgcmVnaXN0ZXIgdmFsdWUgKi8KKyAgICB0bXByZWcgPSBETUExLT5JU1I7CisgIH0KKworICAvKiBDaGVjayB0aGUgc3RhdHVzIG9mIHRoZSBzcGVjaWZpZWQgRE1BeSBpbnRlcnJ1cHQgKi8KKyAgaWYgKCh0bXByZWcgJiBETUF5X0lUKSAhPSAodWludDMyX3QpUkVTRVQpCisgIHsKKyAgICAvKiBETUF5X0lUIGlzIHNldCAqLworICAgIGJpdHN0YXR1cyA9IFNFVDsKKyAgfQorICBlbHNlCisgIHsKKyAgICAvKiBETUF5X0lUIGlzIHJlc2V0ICovCisgICAgYml0c3RhdHVzID0gUkVTRVQ7CisgIH0KKyAgLyogUmV0dXJuIHRoZSBETUFfSVQgc3RhdHVzICovCisgIHJldHVybiAgYml0c3RhdHVzOworfQorCisvKioKKyAgKiBAYnJpZWYgIENsZWFycyB0aGUgRE1BeSBDaGFubmVseCdzIGludGVycnVwdCBwZW5kaW5nIGJpdHMuCisgICogQHBhcmFtICBETUF5X0lUOiBzcGVjaWZpZXMgdGhlIERNQXkgaW50ZXJydXB0IHBlbmRpbmcgYml0IHRvIGNsZWFyLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGFueSBjb21iaW5hdGlvbiAoZm9yIHRoZSBzYW1lIERNQSkgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICAgIEBhcmcgRE1BMV9JVF9HTDE6IERNQTEgQ2hhbm5lbDEgZ2xvYmFsIGludGVycnVwdC4KKyAgKiAgICAgQGFyZyBETUExX0lUX1RDMTogRE1BMSBDaGFubmVsMSB0cmFuc2ZlciBjb21wbGV0ZSBpbnRlcnJ1cHQuCisgICogICAgIEBhcmcgRE1BMV9JVF9IVDE6IERNQTEgQ2hhbm5lbDEgaGFsZiB0cmFuc2ZlciBpbnRlcnJ1cHQuCisgICogICAgIEBhcmcgRE1BMV9JVF9URTE6IERNQTEgQ2hhbm5lbDEgdHJhbnNmZXIgZXJyb3IgaW50ZXJydXB0LgorICAqICAgICBAYXJnIERNQTFfSVRfR0wyOiBETUExIENoYW5uZWwyIGdsb2JhbCBpbnRlcnJ1cHQuCisgICogICAgIEBhcmcgRE1BMV9JVF9UQzI6IERNQTEgQ2hhbm5lbDIgdHJhbnNmZXIgY29tcGxldGUgaW50ZXJydXB0LgorICAqICAgICBAYXJnIERNQTFfSVRfSFQyOiBETUExIENoYW5uZWwyIGhhbGYgdHJhbnNmZXIgaW50ZXJydXB0LgorICAqICAgICBAYXJnIERNQTFfSVRfVEUyOiBETUExIENoYW5uZWwyIHRyYW5zZmVyIGVycm9yIGludGVycnVwdC4KKyAgKiAgICAgQGFyZyBETUExX0lUX0dMMzogRE1BMSBDaGFubmVsMyBnbG9iYWwgaW50ZXJydXB0LgorICAqICAgICBAYXJnIERNQTFfSVRfVEMzOiBETUExIENoYW5uZWwzIHRyYW5zZmVyIGNvbXBsZXRlIGludGVycnVwdC4KKyAgKiAgICAgQGFyZyBETUExX0lUX0hUMzogRE1BMSBDaGFubmVsMyBoYWxmIHRyYW5zZmVyIGludGVycnVwdC4KKyAgKiAgICAgQGFyZyBETUExX0lUX1RFMzogRE1BMSBDaGFubmVsMyB0cmFuc2ZlciBlcnJvciBpbnRlcnJ1cHQuCisgICogICAgIEBhcmcgRE1BMV9JVF9HTDQ6IERNQTEgQ2hhbm5lbDQgZ2xvYmFsIGludGVycnVwdC4KKyAgKiAgICAgQGFyZyBETUExX0lUX1RDNDogRE1BMSBDaGFubmVsNCB0cmFuc2ZlciBjb21wbGV0ZSBpbnRlcnJ1cHQuCisgICogICAgIEBhcmcgRE1BMV9JVF9IVDQ6IERNQTEgQ2hhbm5lbDQgaGFsZiB0cmFuc2ZlciBpbnRlcnJ1cHQuCisgICogICAgIEBhcmcgRE1BMV9JVF9URTQ6IERNQTEgQ2hhbm5lbDQgdHJhbnNmZXIgZXJyb3IgaW50ZXJydXB0LgorICAqICAgICBAYXJnIERNQTFfSVRfR0w1OiBETUExIENoYW5uZWw1IGdsb2JhbCBpbnRlcnJ1cHQuCisgICogICAgIEBhcmcgRE1BMV9JVF9UQzU6IERNQTEgQ2hhbm5lbDUgdHJhbnNmZXIgY29tcGxldGUgaW50ZXJydXB0LgorICAqICAgICBAYXJnIERNQTFfSVRfSFQ1OiBETUExIENoYW5uZWw1IGhhbGYgdHJhbnNmZXIgaW50ZXJydXB0LgorICAqICAgICBAYXJnIERNQTFfSVRfVEU1OiBETUExIENoYW5uZWw1IHRyYW5zZmVyIGVycm9yIGludGVycnVwdC4KKyAgKiAgICAgQGFyZyBETUExX0lUX0dMNjogRE1BMSBDaGFubmVsNiBnbG9iYWwgaW50ZXJydXB0LgorICAqICAgICBAYXJnIERNQTFfSVRfVEM2OiBETUExIENoYW5uZWw2IHRyYW5zZmVyIGNvbXBsZXRlIGludGVycnVwdC4KKyAgKiAgICAgQGFyZyBETUExX0lUX0hUNjogRE1BMSBDaGFubmVsNiBoYWxmIHRyYW5zZmVyIGludGVycnVwdC4KKyAgKiAgICAgQGFyZyBETUExX0lUX1RFNjogRE1BMSBDaGFubmVsNiB0cmFuc2ZlciBlcnJvciBpbnRlcnJ1cHQuCisgICogICAgIEBhcmcgRE1BMV9JVF9HTDc6IERNQTEgQ2hhbm5lbDcgZ2xvYmFsIGludGVycnVwdC4KKyAgKiAgICAgQGFyZyBETUExX0lUX1RDNzogRE1BMSBDaGFubmVsNyB0cmFuc2ZlciBjb21wbGV0ZSBpbnRlcnJ1cHQuCisgICogICAgIEBhcmcgRE1BMV9JVF9IVDc6IERNQTEgQ2hhbm5lbDcgaGFsZiB0cmFuc2ZlciBpbnRlcnJ1cHQuCisgICogICAgIEBhcmcgRE1BMV9JVF9URTc6IERNQTEgQ2hhbm5lbDcgdHJhbnNmZXIgZXJyb3IgaW50ZXJydXB0LgorICAqICAgICBAYXJnIERNQTJfSVRfR0wxOiBETUEyIENoYW5uZWwxIGdsb2JhbCBpbnRlcnJ1cHQuCisgICogICAgIEBhcmcgRE1BMl9JVF9UQzE6IERNQTIgQ2hhbm5lbDEgdHJhbnNmZXIgY29tcGxldGUgaW50ZXJydXB0LgorICAqICAgICBAYXJnIERNQTJfSVRfSFQxOiBETUEyIENoYW5uZWwxIGhhbGYgdHJhbnNmZXIgaW50ZXJydXB0LgorICAqICAgICBAYXJnIERNQTJfSVRfVEUxOiBETUEyIENoYW5uZWwxIHRyYW5zZmVyIGVycm9yIGludGVycnVwdC4KKyAgKiAgICAgQGFyZyBETUEyX0lUX0dMMjogRE1BMiBDaGFubmVsMiBnbG9iYWwgaW50ZXJydXB0LgorICAqICAgICBAYXJnIERNQTJfSVRfVEMyOiBETUEyIENoYW5uZWwyIHRyYW5zZmVyIGNvbXBsZXRlIGludGVycnVwdC4KKyAgKiAgICAgQGFyZyBETUEyX0lUX0hUMjogRE1BMiBDaGFubmVsMiBoYWxmIHRyYW5zZmVyIGludGVycnVwdC4KKyAgKiAgICAgQGFyZyBETUEyX0lUX1RFMjogRE1BMiBDaGFubmVsMiB0cmFuc2ZlciBlcnJvciBpbnRlcnJ1cHQuCisgICogICAgIEBhcmcgRE1BMl9JVF9HTDM6IERNQTIgQ2hhbm5lbDMgZ2xvYmFsIGludGVycnVwdC4KKyAgKiAgICAgQGFyZyBETUEyX0lUX1RDMzogRE1BMiBDaGFubmVsMyB0cmFuc2ZlciBjb21wbGV0ZSBpbnRlcnJ1cHQuCisgICogICAgIEBhcmcgRE1BMl9JVF9IVDM6IERNQTIgQ2hhbm5lbDMgaGFsZiB0cmFuc2ZlciBpbnRlcnJ1cHQuCisgICogICAgIEBhcmcgRE1BMl9JVF9URTM6IERNQTIgQ2hhbm5lbDMgdHJhbnNmZXIgZXJyb3IgaW50ZXJydXB0LgorICAqICAgICBAYXJnIERNQTJfSVRfR0w0OiBETUEyIENoYW5uZWw0IGdsb2JhbCBpbnRlcnJ1cHQuCisgICogICAgIEBhcmcgRE1BMl9JVF9UQzQ6IERNQTIgQ2hhbm5lbDQgdHJhbnNmZXIgY29tcGxldGUgaW50ZXJydXB0LgorICAqICAgICBAYXJnIERNQTJfSVRfSFQ0OiBETUEyIENoYW5uZWw0IGhhbGYgdHJhbnNmZXIgaW50ZXJydXB0LgorICAqICAgICBAYXJnIERNQTJfSVRfVEU0OiBETUEyIENoYW5uZWw0IHRyYW5zZmVyIGVycm9yIGludGVycnVwdC4KKyAgKiAgICAgQGFyZyBETUEyX0lUX0dMNTogRE1BMiBDaGFubmVsNSBnbG9iYWwgaW50ZXJydXB0LgorICAqICAgICBAYXJnIERNQTJfSVRfVEM1OiBETUEyIENoYW5uZWw1IHRyYW5zZmVyIGNvbXBsZXRlIGludGVycnVwdC4KKyAgKiAgICAgQGFyZyBETUEyX0lUX0hUNTogRE1BMiBDaGFubmVsNSBoYWxmIHRyYW5zZmVyIGludGVycnVwdC4KKyAgKiAgICAgQGFyZyBETUEyX0lUX1RFNTogRE1BMiBDaGFubmVsNSB0cmFuc2ZlciBlcnJvciBpbnRlcnJ1cHQuCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIERNQV9DbGVhcklUUGVuZGluZ0JpdCh1aW50MzJfdCBETUF5X0lUKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfRE1BX0NMRUFSX0lUKERNQXlfSVQpKTsKKworICAvKiBDYWxjdWxhdGUgdGhlIHVzZWQgRE1BeSAqLworICBpZiAoKERNQXlfSVQgJiBGTEFHX01hc2spICE9ICh1aW50MzJfdClSRVNFVCkKKyAgeworICAgIC8qIENsZWFyIHRoZSBzZWxlY3RlZCBETUF5IGludGVycnVwdCBwZW5kaW5nIGJpdHMgKi8KKyAgICBETUEyLT5JRkNSID0gRE1BeV9JVDsKKyAgfQorICBlbHNlCisgIHsKKyAgICAvKiBDbGVhciB0aGUgc2VsZWN0ZWQgRE1BeSBpbnRlcnJ1cHQgcGVuZGluZyBiaXRzICovCisgICAgRE1BMS0+SUZDUiA9IERNQXlfSVQ7CisgIH0KK30KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCAyMDExIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL3N0X2Z3X2xpYi9zcmMvc3RtMzJmMTB4X2V4dGkuYyBiL3N0X2Z3X2xpYi9zcmMvc3RtMzJmMTB4X2V4dGkuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNjI5MGQ1Ci0tLSAvZGV2L251bGwKKysrIGIvc3RfZndfbGliL3NyYy9zdG0zMmYxMHhfZXh0aS5jCkBAIC0wLDAgKzEsMjY5IEBACisvKioKKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICogQGZpbGUgICAgc3RtMzJmMTB4X2V4dGkuYworICAqIEBhdXRob3IgIE1DRCBBcHBsaWNhdGlvbiBUZWFtCisgICogQHZlcnNpb24gVjMuNS4wCisgICogQGRhdGUgICAgMTEtTWFyY2gtMjAxMQorICAqIEBicmllZiAgIFRoaXMgZmlsZSBwcm92aWRlcyBhbGwgdGhlIEVYVEkgZmlybXdhcmUgZnVuY3Rpb25zLgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKiBAYXR0ZW50aW9uCisgICoKKyAgKiBUSEUgUFJFU0VOVCBGSVJNV0FSRSBXSElDSCBJUyBGT1IgR1VJREFOQ0UgT05MWSBBSU1TIEFUIFBST1ZJRElORyBDVVNUT01FUlMKKyAgKiBXSVRIIENPRElORyBJTkZPUk1BVElPTiBSRUdBUkRJTkcgVEhFSVIgUFJPRFVDVFMgSU4gT1JERVIgRk9SIFRIRU0gVE8gU0FWRQorICAqIFRJTUUuIEFTIEEgUkVTVUxULCBTVE1JQ1JPRUxFQ1RST05JQ1MgU0hBTEwgTk9UIEJFIEhFTEQgTElBQkxFIEZPUiBBTlkKKyAgKiBESVJFQ1QsIElORElSRUNUIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBXSVRIIFJFU1BFQ1QgVE8gQU5ZIENMQUlNUyBBUklTSU5HCisgICogRlJPTSBUSEUgQ09OVEVOVCBPRiBTVUNIIEZJUk1XQVJFIEFORC9PUiBUSEUgVVNFIE1BREUgQlkgQ1VTVE9NRVJTIE9GIFRIRQorICAqIENPRElORyBJTkZPUk1BVElPTiBDT05UQUlORUQgSEVSRUlOIElOIENPTk5FQ1RJT04gV0lUSCBUSEVJUiBQUk9EVUNUUy4KKyAgKgorICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDT1BZUklHSFQgMjAxMSBTVE1pY3JvZWxlY3Ryb25pY3M8L2NlbnRlcj48L2gyPgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKi8KKworLyogSW5jbHVkZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyNpbmNsdWRlICJzdG0zMmYxMHhfZXh0aS5oIgorCisvKiogQGFkZHRvZ3JvdXAgU1RNMzJGMTB4X1N0ZFBlcmlwaF9Ecml2ZXIKKyAgKiBAeworICAqLworCisvKiogQGRlZmdyb3VwIEVYVEkgCisgICogQGJyaWVmIEVYVEkgZHJpdmVyIG1vZHVsZXMKKyAgKiBAeworICAqLworCisvKiogQGRlZmdyb3VwIEVYVElfUHJpdmF0ZV9UeXBlc0RlZmluaXRpb25zCisgICogQHsKKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBFWFRJX1ByaXZhdGVfRGVmaW5lcworICAqIEB7CisgICovCisKKyNkZWZpbmUgRVhUSV9MSU5FTk9ORSAgICAoKHVpbnQzMl90KTB4MDAwMDApICAvKiBObyBpbnRlcnJ1cHQgc2VsZWN0ZWQgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBFWFRJX1ByaXZhdGVfTWFjcm9zCisgICogQHsKKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBFWFRJX1ByaXZhdGVfVmFyaWFibGVzCisgICogQHsKKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBFWFRJX1ByaXZhdGVfRnVuY3Rpb25Qcm90b3R5cGVzCisgICogQHsKKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBFWFRJX1ByaXZhdGVfRnVuY3Rpb25zCisgICogQHsKKyAgKi8KKworLyoqCisgICogQGJyaWVmICBEZWluaXRpYWxpemVzIHRoZSBFWFRJIHBlcmlwaGVyYWwgcmVnaXN0ZXJzIHRvIHRoZWlyIGRlZmF1bHQgcmVzZXQgdmFsdWVzLgorICAqIEBwYXJhbSAgTm9uZQorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBFWFRJX0RlSW5pdCh2b2lkKQoreworICBFWFRJLT5JTVIgPSAweDAwMDAwMDAwOworICBFWFRJLT5FTVIgPSAweDAwMDAwMDAwOworICBFWFRJLT5SVFNSID0gMHgwMDAwMDAwMDsgCisgIEVYVEktPkZUU1IgPSAweDAwMDAwMDAwOyAKKyAgRVhUSS0+UFIgPSAweDAwMEZGRkZGOworfQorCisvKioKKyAgKiBAYnJpZWYgIEluaXRpYWxpemVzIHRoZSBFWFRJIHBlcmlwaGVyYWwgYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQKKyAgKiAgICAgICAgIHBhcmFtZXRlcnMgaW4gdGhlIEVYVElfSW5pdFN0cnVjdC4KKyAgKiBAcGFyYW0gIEVYVElfSW5pdFN0cnVjdDogcG9pbnRlciB0byBhIEVYVElfSW5pdFR5cGVEZWYgc3RydWN0dXJlCisgICogICAgICAgICB0aGF0IGNvbnRhaW5zIHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZvciB0aGUgRVhUSSBwZXJpcGhlcmFsLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBFWFRJX0luaXQoRVhUSV9Jbml0VHlwZURlZiogRVhUSV9Jbml0U3RydWN0KQoreworICB1aW50MzJfdCB0bXAgPSAwOworCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19FWFRJX01PREUoRVhUSV9Jbml0U3RydWN0LT5FWFRJX01vZGUpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0VYVElfVFJJR0dFUihFWFRJX0luaXRTdHJ1Y3QtPkVYVElfVHJpZ2dlcikpOworICBhc3NlcnRfcGFyYW0oSVNfRVhUSV9MSU5FKEVYVElfSW5pdFN0cnVjdC0+RVhUSV9MaW5lKSk7ICAKKyAgYXNzZXJ0X3BhcmFtKElTX0ZVTkNUSU9OQUxfU1RBVEUoRVhUSV9Jbml0U3RydWN0LT5FWFRJX0xpbmVDbWQpKTsKKworICB0bXAgPSAodWludDMyX3QpRVhUSV9CQVNFOworICAgICAKKyAgaWYgKEVYVElfSW5pdFN0cnVjdC0+RVhUSV9MaW5lQ21kICE9IERJU0FCTEUpCisgIHsKKyAgICAvKiBDbGVhciBFWFRJIGxpbmUgY29uZmlndXJhdGlvbiAqLworICAgIEVYVEktPklNUiAmPSB+RVhUSV9Jbml0U3RydWN0LT5FWFRJX0xpbmU7CisgICAgRVhUSS0+RU1SICY9IH5FWFRJX0luaXRTdHJ1Y3QtPkVYVElfTGluZTsKKyAgICAKKyAgICB0bXAgKz0gRVhUSV9Jbml0U3RydWN0LT5FWFRJX01vZGU7CisKKyAgICAqKF9fSU8gdWludDMyX3QgKikgdG1wIHw9IEVYVElfSW5pdFN0cnVjdC0+RVhUSV9MaW5lOworCisgICAgLyogQ2xlYXIgUmlzaW5nIEZhbGxpbmcgZWRnZSBjb25maWd1cmF0aW9uICovCisgICAgRVhUSS0+UlRTUiAmPSB+RVhUSV9Jbml0U3RydWN0LT5FWFRJX0xpbmU7CisgICAgRVhUSS0+RlRTUiAmPSB+RVhUSV9Jbml0U3RydWN0LT5FWFRJX0xpbmU7CisgICAgCisgICAgLyogU2VsZWN0IHRoZSB0cmlnZ2VyIGZvciB0aGUgc2VsZWN0ZWQgZXh0ZXJuYWwgaW50ZXJydXB0cyAqLworICAgIGlmIChFWFRJX0luaXRTdHJ1Y3QtPkVYVElfVHJpZ2dlciA9PSBFWFRJX1RyaWdnZXJfUmlzaW5nX0ZhbGxpbmcpCisgICAgeworICAgICAgLyogUmlzaW5nIEZhbGxpbmcgZWRnZSAqLworICAgICAgRVhUSS0+UlRTUiB8PSBFWFRJX0luaXRTdHJ1Y3QtPkVYVElfTGluZTsKKyAgICAgIEVYVEktPkZUU1IgfD0gRVhUSV9Jbml0U3RydWN0LT5FWFRJX0xpbmU7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICB0bXAgPSAodWludDMyX3QpRVhUSV9CQVNFOworICAgICAgdG1wICs9IEVYVElfSW5pdFN0cnVjdC0+RVhUSV9UcmlnZ2VyOworCisgICAgICAqKF9fSU8gdWludDMyX3QgKikgdG1wIHw9IEVYVElfSW5pdFN0cnVjdC0+RVhUSV9MaW5lOworICAgIH0KKyAgfQorICBlbHNlCisgIHsKKyAgICB0bXAgKz0gRVhUSV9Jbml0U3RydWN0LT5FWFRJX01vZGU7CisKKyAgICAvKiBEaXNhYmxlIHRoZSBzZWxlY3RlZCBleHRlcm5hbCBsaW5lcyAqLworICAgICooX19JTyB1aW50MzJfdCAqKSB0bXAgJj0gfkVYVElfSW5pdFN0cnVjdC0+RVhUSV9MaW5lOworICB9Cit9CisKKy8qKgorICAqIEBicmllZiAgRmlsbHMgZWFjaCBFWFRJX0luaXRTdHJ1Y3QgbWVtYmVyIHdpdGggaXRzIHJlc2V0IHZhbHVlLgorICAqIEBwYXJhbSAgRVhUSV9Jbml0U3RydWN0OiBwb2ludGVyIHRvIGEgRVhUSV9Jbml0VHlwZURlZiBzdHJ1Y3R1cmUgd2hpY2ggd2lsbAorICAqICAgICAgICAgYmUgaW5pdGlhbGl6ZWQuCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIEVYVElfU3RydWN0SW5pdChFWFRJX0luaXRUeXBlRGVmKiBFWFRJX0luaXRTdHJ1Y3QpCit7CisgIEVYVElfSW5pdFN0cnVjdC0+RVhUSV9MaW5lID0gRVhUSV9MSU5FTk9ORTsKKyAgRVhUSV9Jbml0U3RydWN0LT5FWFRJX01vZGUgPSBFWFRJX01vZGVfSW50ZXJydXB0OworICBFWFRJX0luaXRTdHJ1Y3QtPkVYVElfVHJpZ2dlciA9IEVYVElfVHJpZ2dlcl9GYWxsaW5nOworICBFWFRJX0luaXRTdHJ1Y3QtPkVYVElfTGluZUNtZCA9IERJU0FCTEU7Cit9CisKKy8qKgorICAqIEBicmllZiAgR2VuZXJhdGVzIGEgU29mdHdhcmUgaW50ZXJydXB0LgorICAqIEBwYXJhbSAgRVhUSV9MaW5lOiBzcGVjaWZpZXMgdGhlIEVYVEkgbGluZXMgdG8gYmUgZW5hYmxlZCBvciBkaXNhYmxlZC4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhbnkgY29tYmluYXRpb24gb2YgRVhUSV9MaW5leCB3aGVyZSB4IGNhbiBiZSAoMC4uMTkpLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBFWFRJX0dlbmVyYXRlU1dJbnRlcnJ1cHQodWludDMyX3QgRVhUSV9MaW5lKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfRVhUSV9MSU5FKEVYVElfTGluZSkpOworICAKKyAgRVhUSS0+U1dJRVIgfD0gRVhUSV9MaW5lOworfQorCisvKioKKyAgKiBAYnJpZWYgIENoZWNrcyB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgRVhUSSBsaW5lIGZsYWcgaXMgc2V0IG9yIG5vdC4KKyAgKiBAcGFyYW0gIEVYVElfTGluZTogc3BlY2lmaWVzIHRoZSBFWFRJIGxpbmUgZmxhZyB0byBjaGVjay4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZToKKyAgKiAgICAgQGFyZyBFWFRJX0xpbmV4OiBFeHRlcm5hbCBpbnRlcnJ1cHQgbGluZSB4IHdoZXJlIHgoMC4uMTkpCisgICogQHJldHZhbCBUaGUgbmV3IHN0YXRlIG9mIEVYVElfTGluZSAoU0VUIG9yIFJFU0VUKS4KKyAgKi8KK0ZsYWdTdGF0dXMgRVhUSV9HZXRGbGFnU3RhdHVzKHVpbnQzMl90IEVYVElfTGluZSkKK3sKKyAgRmxhZ1N0YXR1cyBiaXRzdGF0dXMgPSBSRVNFVDsKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX0dFVF9FWFRJX0xJTkUoRVhUSV9MaW5lKSk7CisgIAorICBpZiAoKEVYVEktPlBSICYgRVhUSV9MaW5lKSAhPSAodWludDMyX3QpUkVTRVQpCisgIHsKKyAgICBiaXRzdGF0dXMgPSBTRVQ7CisgIH0KKyAgZWxzZQorICB7CisgICAgYml0c3RhdHVzID0gUkVTRVQ7CisgIH0KKyAgcmV0dXJuIGJpdHN0YXR1czsKK30KKworLyoqCisgICogQGJyaWVmICBDbGVhcnMgdGhlIEVYVEkncyBsaW5lIHBlbmRpbmcgZmxhZ3MuCisgICogQHBhcmFtICBFWFRJX0xpbmU6IHNwZWNpZmllcyB0aGUgRVhUSSBsaW5lcyBmbGFncyB0byBjbGVhci4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhbnkgY29tYmluYXRpb24gb2YgRVhUSV9MaW5leCB3aGVyZSB4IGNhbiBiZSAoMC4uMTkpLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBFWFRJX0NsZWFyRmxhZyh1aW50MzJfdCBFWFRJX0xpbmUpCit7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19FWFRJX0xJTkUoRVhUSV9MaW5lKSk7CisgIAorICBFWFRJLT5QUiA9IEVYVElfTGluZTsKK30KKworLyoqCisgICogQGJyaWVmICBDaGVja3Mgd2hldGhlciB0aGUgc3BlY2lmaWVkIEVYVEkgbGluZSBpcyBhc3NlcnRlZCBvciBub3QuCisgICogQHBhcmFtICBFWFRJX0xpbmU6IHNwZWNpZmllcyB0aGUgRVhUSSBsaW5lIHRvIGNoZWNrLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlOgorICAqICAgICBAYXJnIEVYVElfTGluZXg6IEV4dGVybmFsIGludGVycnVwdCBsaW5lIHggd2hlcmUgeCgwLi4xOSkKKyAgKiBAcmV0dmFsIFRoZSBuZXcgc3RhdGUgb2YgRVhUSV9MaW5lIChTRVQgb3IgUkVTRVQpLgorICAqLworSVRTdGF0dXMgRVhUSV9HZXRJVFN0YXR1cyh1aW50MzJfdCBFWFRJX0xpbmUpCit7CisgIElUU3RhdHVzIGJpdHN0YXR1cyA9IFJFU0VUOworICB1aW50MzJfdCBlbmFibGVzdGF0dXMgPSAwOworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfR0VUX0VYVElfTElORShFWFRJX0xpbmUpKTsKKyAgCisgIGVuYWJsZXN0YXR1cyA9ICBFWFRJLT5JTVIgJiBFWFRJX0xpbmU7CisgIGlmICgoKEVYVEktPlBSICYgRVhUSV9MaW5lKSAhPSAodWludDMyX3QpUkVTRVQpICYmIChlbmFibGVzdGF0dXMgIT0gKHVpbnQzMl90KVJFU0VUKSkKKyAgeworICAgIGJpdHN0YXR1cyA9IFNFVDsKKyAgfQorICBlbHNlCisgIHsKKyAgICBiaXRzdGF0dXMgPSBSRVNFVDsKKyAgfQorICByZXR1cm4gYml0c3RhdHVzOworfQorCisvKioKKyAgKiBAYnJpZWYgIENsZWFycyB0aGUgRVhUSSdzIGxpbmUgcGVuZGluZyBiaXRzLgorICAqIEBwYXJhbSAgRVhUSV9MaW5lOiBzcGVjaWZpZXMgdGhlIEVYVEkgbGluZXMgdG8gY2xlYXIuCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYW55IGNvbWJpbmF0aW9uIG9mIEVYVElfTGluZXggd2hlcmUgeCBjYW4gYmUgKDAuLjE5KS4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgRVhUSV9DbGVhcklUUGVuZGluZ0JpdCh1aW50MzJfdCBFWFRJX0xpbmUpCit7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19FWFRJX0xJTkUoRVhUSV9MaW5lKSk7CisgIAorICBFWFRJLT5QUiA9IEVYVElfTGluZTsKK30KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCAyMDExIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL3N0X2Z3X2xpYi9zcmMvc3RtMzJmMTB4X2ZsYXNoLmMgYi9zdF9md19saWIvc3JjL3N0bTMyZjEweF9mbGFzaC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkZmY5ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9zdF9md19saWIvc3JjL3N0bTMyZjEweF9mbGFzaC5jCkBAIC0wLDAgKzEsMTY4NCBAQAorLyoqCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqIEBmaWxlICAgIHN0bTMyZjEweF9mbGFzaC5jCisgICogQGF1dGhvciAgTUNEIEFwcGxpY2F0aW9uIFRlYW0KKyAgKiBAdmVyc2lvbiBWMy41LjAKKyAgKiBAZGF0ZSAgICAxMS1NYXJjaC0yMDExCisgICogQGJyaWVmICAgVGhpcyBmaWxlIHByb3ZpZGVzIGFsbCB0aGUgRkxBU0ggZmlybXdhcmUgZnVuY3Rpb25zLgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKiBAYXR0ZW50aW9uCisgICoKKyAgKiBUSEUgUFJFU0VOVCBGSVJNV0FSRSBXSElDSCBJUyBGT1IgR1VJREFOQ0UgT05MWSBBSU1TIEFUIFBST1ZJRElORyBDVVNUT01FUlMKKyAgKiBXSVRIIENPRElORyBJTkZPUk1BVElPTiBSRUdBUkRJTkcgVEhFSVIgUFJPRFVDVFMgSU4gT1JERVIgRk9SIFRIRU0gVE8gU0FWRQorICAqIFRJTUUuIEFTIEEgUkVTVUxULCBTVE1JQ1JPRUxFQ1RST05JQ1MgU0hBTEwgTk9UIEJFIEhFTEQgTElBQkxFIEZPUiBBTlkKKyAgKiBESVJFQ1QsIElORElSRUNUIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBXSVRIIFJFU1BFQ1QgVE8gQU5ZIENMQUlNUyBBUklTSU5HCisgICogRlJPTSBUSEUgQ09OVEVOVCBPRiBTVUNIIEZJUk1XQVJFIEFORC9PUiBUSEUgVVNFIE1BREUgQlkgQ1VTVE9NRVJTIE9GIFRIRQorICAqIENPRElORyBJTkZPUk1BVElPTiBDT05UQUlORUQgSEVSRUlOIElOIENPTk5FQ1RJT04gV0lUSCBUSEVJUiBQUk9EVUNUUy4KKyAgKgorICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDT1BZUklHSFQgMjAxMSBTVE1pY3JvZWxlY3Ryb25pY3M8L2NlbnRlcj48L2gyPgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKi8KKworLyogSW5jbHVkZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyNpbmNsdWRlICJzdG0zMmYxMHhfZmxhc2guaCIKKworLyoqIEBhZGR0b2dyb3VwIFNUTTMyRjEweF9TdGRQZXJpcGhfRHJpdmVyCisgICogQHsKKyAgKi8KKworLyoqIEBkZWZncm91cCBGTEFTSCAKKyAgKiBAYnJpZWYgRkxBU0ggZHJpdmVyIG1vZHVsZXMKKyAgKiBAeworICAqLyAKKworLyoqIEBkZWZncm91cCBGTEFTSF9Qcml2YXRlX1R5cGVzRGVmaW5pdGlvbnMKKyAgKiBAeworICAqLworCisvKioKKyAgKiBAfQorICAqLyAKKworLyoqIEBkZWZncm91cCBGTEFTSF9Qcml2YXRlX0RlZmluZXMKKyAgKiBAeworICAqLyAKKworLyogRmxhc2ggQWNjZXNzIENvbnRyb2wgUmVnaXN0ZXIgYml0cyAqLworI2RlZmluZSBBQ1JfTEFURU5DWV9NYXNrICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDM4KQorI2RlZmluZSBBQ1JfSExGQ1lBX01hc2sgICAgICAgICAgKCh1aW50MzJfdCkweEZGRkZGRkY3KQorI2RlZmluZSBBQ1JfUFJGVEJFX01hc2sgICAgICAgICAgKCh1aW50MzJfdCkweEZGRkZGRkVGKQorCisvKiBGbGFzaCBBY2Nlc3MgQ29udHJvbCBSZWdpc3RlciBiaXRzICovCisjZGVmaW5lIEFDUl9QUkZUQlNfTWFzayAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMjApIAorCisvKiBGbGFzaCBDb250cm9sIFJlZ2lzdGVyIGJpdHMgKi8KKyNkZWZpbmUgQ1JfUEdfU2V0ICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkKKyNkZWZpbmUgQ1JfUEdfUmVzZXQgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMUZGRSkgCisjZGVmaW5lIENSX1BFUl9TZXQgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpCisjZGVmaW5lIENSX1BFUl9SZXNldCAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDFGRkQpCisjZGVmaW5lIENSX01FUl9TZXQgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDQpCisjZGVmaW5lIENSX01FUl9SZXNldCAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDFGRkIpCisjZGVmaW5lIENSX09QVFBHX1NldCAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApCisjZGVmaW5lIENSX09QVFBHX1Jlc2V0ICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDFGRUYpCisjZGVmaW5lIENSX09QVEVSX1NldCAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMjApCisjZGVmaW5lIENSX09QVEVSX1Jlc2V0ICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDFGREYpCisjZGVmaW5lIENSX1NUUlRfU2V0ICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwNDApCisjZGVmaW5lIENSX0xPQ0tfU2V0ICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApCisKKy8qIEZMQVNIIE1hc2sgKi8KKyNkZWZpbmUgUkRQUlRfTWFzayAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMikKKyNkZWZpbmUgV1JQMF9NYXNrICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDBGRikKKyNkZWZpbmUgV1JQMV9NYXNrICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwRkYwMCkKKyNkZWZpbmUgV1JQMl9NYXNrICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMEZGMDAwMCkKKyNkZWZpbmUgV1JQM19NYXNrICAgICAgICAgICAgICAgICgodWludDMyX3QpMHhGRjAwMDAwMCkKKyNkZWZpbmUgT0JfVVNFUl9CRkIyICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA4KQorCisvKiBGTEFTSCBLZXlzICovCisjZGVmaW5lIFJEUF9LZXkgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDBBNSkKKyNkZWZpbmUgRkxBU0hfS0VZMSAgICAgICAgICAgICAgICgodWludDMyX3QpMHg0NTY3MDEyMykKKyNkZWZpbmUgRkxBU0hfS0VZMiAgICAgICAgICAgICAgICgodWludDMyX3QpMHhDREVGODlBQikKKworLyogRkxBU0ggQkFOSyBhZGRyZXNzICovCisjZGVmaW5lIEZMQVNIX0JBTksxX0VORF9BRERSRVNTICAgKCh1aW50MzJfdCkweDgwN0ZGRkYpCisKKy8qIERlbGF5IGRlZmluaXRpb24gKi8gICAKKyNkZWZpbmUgRXJhc2VUaW1lb3V0ICAgICAgICAgICgodWludDMyX3QpMHgwMDBCMDAwMCkKKyNkZWZpbmUgUHJvZ3JhbVRpbWVvdXQgICAgICAgICgodWludDMyX3QpMHgwMDAwMjAwMCkKKy8qKgorICAqIEB9CisgICovIAorCisvKiogQGRlZmdyb3VwIEZMQVNIX1ByaXZhdGVfTWFjcm9zCisgICogQHsKKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8gCisKKy8qKiBAZGVmZ3JvdXAgRkxBU0hfUHJpdmF0ZV9WYXJpYWJsZXMKKyAgKiBAeworICAqLworCisvKioKKyAgKiBAfQorICAqLyAKKworLyoqIEBkZWZncm91cCBGTEFTSF9Qcml2YXRlX0Z1bmN0aW9uUHJvdG90eXBlcworICAqIEB7CisgICovCisgIAorLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBGTEFTSF9Qcml2YXRlX0Z1bmN0aW9ucworICAqIEB7CisgICovCisKKy8qKgorQGNvZGUgIAorIAorIFRoaXMgZHJpdmVyIHByb3ZpZGVzIGZ1bmN0aW9ucyB0byBjb25maWd1cmUgYW5kIHByb2dyYW0gdGhlIEZsYXNoIG1lbW9yeSBvZiBhbGwgU1RNMzJGMTB4IGRldmljZXMsCisgaW5jbHVkaW5nIHRoZSBsYXRlc3QgU1RNMzJGMTB4X1hMIGRlbnNpdHkgZGV2aWNlcy4gCisKKyBTVE0zMkYxMHhfWEwgZGV2aWNlcyBmZWF0dXJlIHVwIHRvIDEgTWJ5dGUgd2l0aCBkdWFsIGJhbmsgYXJjaGl0ZWN0dXJlIGZvciByZWFkLXdoaWxlLXdyaXRlIChSV1cpIGNhcGFiaWxpdHk6CisgICAgLSBiYW5rMTogZml4ZWQgc2l6ZSBvZiA1MTIgS2J5dGVzICgyNTYgcGFnZXMgb2YgMktieXRlcyBlYWNoKQorICAgIC0gYmFuazI6IHVwIHRvIDUxMiBLYnl0ZXMgKHVwIHRvIDI1NiBwYWdlcyBvZiAyS2J5dGVzIGVhY2gpCisgV2hpbGUgb3RoZXIgU1RNMzJGMTB4IGRldmljZXMgZmVhdHVyZXMgb25seSBvbmUgYmFuayB3aXRoIG1lbW9yeSB1cCB0byA1MTIgS2J5dGVzLgorCisgSW4gdmVyc2lvbiBWMy4zLjAsIHNvbWUgZnVuY3Rpb25zIHdlcmUgdXBkYXRlZCBhbmQgbmV3IG9uZXMgd2VyZSBhZGRlZCB0byBzdXBwb3J0CisgU1RNMzJGMTB4X1hMIGRldmljZXMuIFRodXMgc29tZSBmdW5jdGlvbnMgbWFuYWdlcyBhbGwgZGV2aWNlcywgd2hpbGUgb3RoZXIgYXJlIAorIGRlZGljYXRlZCBmb3IgWEwgZGV2aWNlcyBvbmx5LgorIAorIFRoZSB0YWJsZSBiZWxvdyBwcmVzZW50cyB0aGUgbGlzdCBvZiBhdmFpbGFibGUgZnVuY3Rpb25zIGRlcGVuZGluZyBvbiB0aGUgdXNlZCBTVE0zMkYxMHggZGV2aWNlcy4gIAorICAgICAgCisgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICogTGVnYWN5IGZ1bmN0aW9ucyB1c2VkIGZvciBhbGwgU1RNMzJGMTB4IGRldmljZXMgKgorICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgICAgICAgRnVuY3Rpb25zIHByb3RvdHlwZXMgICAgICAgICB8U1RNMzJGMTB4X1hMfE90aGVyIFNUTTMyRjEweHwgICAgQ29tbWVudHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICBkZXZpY2VzICB8ICBkZXZpY2VzICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKKyAgIHxGTEFTSF9TZXRMYXRlbmN5ICAgICAgICAgICAgICAgICAgICB8ICAgIFllcyAgICAgfCAgICAgIFllcyAgICAgIHwgTm8gY2hhbmdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CisgICB8RkxBU0hfSGFsZkN5Y2xlQWNjZXNzQ21kICAgICAgICAgICAgfCAgICBZZXMgICAgIHwgICAgICBZZXMgICAgICB8IE5vIGNoYW5nZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorICAgfEZMQVNIX1ByZWZldGNoQnVmZmVyQ21kICAgICAgICAgICAgIHwgICAgWWVzICAgICB8ICAgICAgWWVzICAgICAgfCBObyBjaGFuZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKKyAgIHxGTEFTSF9VbmxvY2sgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIFllcyAgICAgfCAgICAgIFllcyAgICAgIHwgLSBGb3IgU1RNMzJGMTBYX1hMIGRldmljZXM6IHVubG9jayBCYW5rMSBhbmQgQmFuazIuICAgICAgICAgICAgfAorICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCAtIEZvciBvdGhlciBkZXZpY2VzOiB1bmxvY2sgQmFuazEgYW5kIGl0IGlzIGVxdWl2YWxlbnQgICAgICAgICB8CisgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgICAgICAgICAgICB8ICAgdG8gRkxBU0hfVW5sb2NrQmFuazEgZnVuY3Rpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorICAgfEZMQVNIX0xvY2sgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgWWVzICAgICB8ICAgICAgWWVzICAgICAgfCAtIEZvciBTVE0zMkYxMFhfWEwgZGV2aWNlczogbG9jayBCYW5rMSBhbmQgQmFuazIuICAgICAgICAgICAgICB8CisgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgICAgICAgICAgICB8IC0gRm9yIG90aGVyIGRldmljZXM6IGxvY2sgQmFuazEgYW5kIGl0IGlzIGVxdWl2YWxlbnQgICAgICAgICAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgICB0byBGTEFTSF9Mb2NrQmFuazEgZnVuY3Rpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CisgICB8RkxBU0hfRXJhc2VQYWdlICAgICAgICAgICAgICAgICAgICAgfCAgICBZZXMgICAgIHwgICAgICBZZXMgICAgICB8IC0gRm9yIFNUTTMyRjEweF9YTCBkZXZpY2VzOiBlcmFzZSBhIHBhZ2UgaW4gQmFuazEgYW5kIEJhbmsyICAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgLSBGb3Igb3RoZXIgZGV2aWNlczogZXJhc2UgYSBwYWdlIGluIEJhbmsxICAgICAgICAgICAgICAgICAgICAgfAorICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CisgICB8RkxBU0hfRXJhc2VBbGxQYWdlcyAgICAgICAgICAgICAgICAgfCAgICBZZXMgICAgIHwgICAgICBZZXMgICAgICB8IC0gRm9yIFNUTTMyRjEweF9YTCBkZXZpY2VzOiBlcmFzZSBhbGwgcGFnZXMgaW4gQmFuazEgYW5kIEJhbmsyIHwKKyAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgLSBGb3Igb3RoZXIgZGV2aWNlczogZXJhc2UgYWxsIHBhZ2VzIGluIEJhbmsxICAgICAgICAgICAgICAgICAgfAorICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CisgICB8RkxBU0hfRXJhc2VPcHRpb25CeXRlcyAgICAgICAgICAgICAgfCAgICBZZXMgICAgIHwgICAgICBZZXMgICAgICB8IE5vIGNoYW5nZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorICAgfEZMQVNIX1Byb2dyYW1Xb3JkICAgICAgICAgICAgICAgICAgIHwgICAgWWVzICAgICB8ICAgICAgWWVzICAgICAgfCBVcGRhdGVkIHRvIHByb2dyYW0gdXAgdG8gMU1CeXRlIChkZXBlbmRpbmcgb24gdGhlIHVzZWQgZGV2aWNlKSB8CisgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKKyAgIHxGTEFTSF9Qcm9ncmFtSGFsZldvcmQgICAgICAgICAgICAgICB8ICAgIFllcyAgICAgfCAgICAgIFllcyAgICAgIHwgVXBkYXRlZCB0byBwcm9ncmFtIHVwIHRvIDFNQnl0ZSAoZGVwZW5kaW5nIG9uIHRoZSB1c2VkIGRldmljZSkgfAorICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CisgICB8RkxBU0hfUHJvZ3JhbU9wdGlvbkJ5dGVEYXRhICAgICAgICAgfCAgICBZZXMgICAgIHwgICAgICBZZXMgICAgICB8IE5vIGNoYW5nZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorICAgfEZMQVNIX0VuYWJsZVdyaXRlUHJvdGVjdGlvbiAgICAgICAgIHwgICAgWWVzICAgICB8ICAgICAgWWVzICAgICAgfCBObyBjaGFuZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKKyAgIHxGTEFTSF9SZWFkT3V0UHJvdGVjdGlvbiAgICAgICAgICAgICB8ICAgIFllcyAgICAgfCAgICAgIFllcyAgICAgIHwgTm8gY2hhbmdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CisgICB8RkxBU0hfVXNlck9wdGlvbkJ5dGVDb25maWcgICAgICAgICAgfCAgICBZZXMgICAgIHwgICAgICBZZXMgICAgICB8IE5vIGNoYW5nZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorICAgfEZMQVNIX0dldFVzZXJPcHRpb25CeXRlICAgICAgICAgICAgIHwgICAgWWVzICAgICB8ICAgICAgWWVzICAgICAgfCBObyBjaGFuZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKKyAgIHxGTEFTSF9HZXRXcml0ZVByb3RlY3Rpb25PcHRpb25CeXRlICB8ICAgIFllcyAgICAgfCAgICAgIFllcyAgICAgIHwgTm8gY2hhbmdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CisgICB8RkxBU0hfR2V0UmVhZE91dFByb3RlY3Rpb25TdGF0dXMgICAgfCAgICBZZXMgICAgIHwgICAgICBZZXMgICAgICB8IE5vIGNoYW5nZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorICAgfEZMQVNIX0dldFByZWZldGNoQnVmZmVyU3RhdHVzICAgICAgIHwgICAgWWVzICAgICB8ICAgICAgWWVzICAgICAgfCBObyBjaGFuZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKKyAgIHxGTEFTSF9JVENvbmZpZyAgICAgICAgICAgICAgICAgICAgICB8ICAgIFllcyAgICAgfCAgICAgIFllcyAgICAgIHwgLSBGb3IgU1RNMzJGMTB4X1hMIGRldmljZXM6IGVuYWJsZSBCYW5rMSBhbmQgQmFuazIncyBpbnRlcnJ1cHRzfAorICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCAtIEZvciBvdGhlciBkZXZpY2VzOiBlbmFibGUgQmFuazEncyBpbnRlcnJ1cHRzICAgICAgICAgICAgICAgICB8CisgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKKyAgIHxGTEFTSF9HZXRGbGFnU3RhdHVzICAgICAgICAgICAgICAgICB8ICAgIFllcyAgICAgfCAgICAgIFllcyAgICAgIHwgLSBGb3IgU1RNMzJGMTB4X1hMIGRldmljZXM6IHJldHVybiBCYW5rMSBhbmQgQmFuazIncyBmbGFnIHN0YXR1c3wKKyAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgLSBGb3Igb3RoZXIgZGV2aWNlczogcmV0dXJuIEJhbmsxJ3MgZmxhZyBzdGF0dXMgICAgICAgICAgICAgICAgfAorICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CisgICB8RkxBU0hfQ2xlYXJGbGFnICAgICAgICAgICAgICAgICAgICAgfCAgICBZZXMgICAgIHwgICAgICBZZXMgICAgICB8IC0gRm9yIFNUTTMyRjEweF9YTCBkZXZpY2VzOiBjbGVhciBCYW5rMSBhbmQgQmFuazIncyBmbGFnICAgICAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgLSBGb3Igb3RoZXIgZGV2aWNlczogY2xlYXIgQmFuazEncyBmbGFnICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CisgICB8RkxBU0hfR2V0U3RhdHVzICAgICAgICAgICAgICAgICAgICAgfCAgICBZZXMgICAgIHwgICAgICBZZXMgICAgICB8IC0gUmV0dXJuIHRoZSBzdGF0dXMgb2YgQmFuazEgKGZvciBhbGwgZGV2aWNlcykgICAgICAgICAgICAgICAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgICBlcXVpdmFsZW50IHRvIEZMQVNIX0dldEJhbmsxU3RhdHVzIGZ1bmN0aW9uICAgICAgICAgICAgICAgICAgfAorICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CisgICB8RkxBU0hfV2FpdEZvckxhc3RPcGVyYXRpb24gICAgICAgICAgfCAgICBZZXMgICAgIHwgICAgICBZZXMgICAgICB8IC0gV2FpdCBmb3IgQmFuazEgbGFzdCBvcGVyYXRpb24gKGZvciBhbGwgZGV2aWNlcykgICAgICAgICAgICAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgICBlcXVpdmFsZW50IHRvOiBGTEFTSF9XYWl0Rm9yTGFzdEJhbmsxT3BlcmF0aW9uIGZ1bmN0aW9uICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisKKyAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKiBOZXcgZnVuY3Rpb25zIHVzZWQgZm9yIGFsbCBTVE0zMkYxMHggZGV2aWNlcyB0byBtYW5hZ2UgQmFuazE6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgICAqICAgLSBUaGVzZSBmdW5jdGlvbnMgYXJlIG1haW5seSB1c2VmdWwgZm9yIFNUTTMyRjEweF9YTCBkZW5zaXR5IGRldmljZXMsIHRvIGhhdmUgc2VwYXJhdGUgY29udHJvbCBmb3IgQmFuazEgYW5kIGJhbmsyICoKKyAgICogICAtIEZvciBvdGhlciBkZXZpY2VzLCB0aGVzZSBmdW5jdGlvbnMgYXJlIG9wdGlvbmFsIChjb3ZlcmVkIGJ5IGZ1bmN0aW9ucyBsaXN0ZWQgYWJvdmUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgICAgICAgRnVuY3Rpb25zIHByb3RvdHlwZXMgICAgICAgICB8U1RNMzJGMTB4X1hMfE90aGVyIFNUTTMyRjEweHwgICAgQ29tbWVudHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICBkZXZpY2VzICB8ICBkZXZpY2VzICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKKyAgIHwgRkxBU0hfVW5sb2NrQmFuazEgICAgICAgICAgICAgICAgICB8ICAgIFllcyAgICAgfCAgICAgIFllcyAgICAgIHwgLSBVbmxvY2sgQmFuazEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CisgICB8RkxBU0hfTG9ja0JhbmsxICAgICAgICAgICAgICAgICAgICAgfCAgICBZZXMgICAgIHwgICAgICBZZXMgICAgICB8IC0gTG9jayBCYW5rMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorICAgfCBGTEFTSF9FcmFzZUFsbEJhbmsxUGFnZXMgICAgICAgICAgIHwgICAgWWVzICAgICB8ICAgICAgWWVzICAgICAgfCAtIEVyYXNlIGFsbCBwYWdlcyBpbiBCYW5rMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKKyAgIHwgRkxBU0hfR2V0QmFuazFTdGF0dXMgICAgICAgICAgICAgICB8ICAgIFllcyAgICAgfCAgICAgIFllcyAgICAgIHwgLSBSZXR1cm4gdGhlIHN0YXR1cyBvZiBCYW5rMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CisgICB8IEZMQVNIX1dhaXRGb3JMYXN0QmFuazFPcGVyYXRpb24gICAgfCAgICBZZXMgICAgIHwgICAgICBZZXMgICAgICB8IC0gV2FpdCBmb3IgQmFuazEgbGFzdCBvcGVyYXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworCisgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgKiBOZXcgRnVuY3Rpb25zIHVzZWQgb25seSB3aXRoIFNUTTMyRjEweF9YTCBkZW5zaXR5IGRldmljZXMgdG8gbWFuYWdlIEJhbmsyICoKKyAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgICAgICAgRnVuY3Rpb25zIHByb3RvdHlwZXMgICAgICAgICB8U1RNMzJGMTB4X1hMfE90aGVyIFNUTTMyRjEweHwgICAgQ29tbWVudHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICBkZXZpY2VzICB8ICBkZXZpY2VzICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKKyAgIHwgRkxBU0hfVW5sb2NrQmFuazIgICAgICAgICAgICAgICAgICB8ICAgIFllcyAgICAgfCAgICAgIE5vICAgICAgIHwgLSBVbmxvY2sgQmFuazIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CisgICB8RkxBU0hfTG9ja0JhbmsyICAgICAgICAgICAgICAgICAgICAgfCAgICBZZXMgICAgIHwgICAgICBObyAgICAgICB8IC0gTG9jayBCYW5rMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorICAgfCBGTEFTSF9FcmFzZUFsbEJhbmsyUGFnZXMgICAgICAgICAgIHwgICAgWWVzICAgICB8ICAgICAgTm8gICAgICAgfCAtIEVyYXNlIGFsbCBwYWdlcyBpbiBCYW5rMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKKyAgIHwgRkxBU0hfR2V0QmFuazJTdGF0dXMgICAgICAgICAgICAgICB8ICAgIFllcyAgICAgfCAgICAgIE5vICAgICAgIHwgLSBSZXR1cm4gdGhlIHN0YXR1cyBvZiBCYW5rMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CisgICB8IEZMQVNIX1dhaXRGb3JMYXN0QmFuazJPcGVyYXRpb24gICAgfCAgICBZZXMgICAgIHwgICAgICBObyAgICAgICB8IC0gV2FpdCBmb3IgQmFuazIgbGFzdCBvcGVyYXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorICAgfCBGTEFTSF9Cb290Q29uZmlnICAgICAgICAgICAgICAgICAgIHwgICAgWWVzICAgICB8ICAgICAgTm8gICAgICAgfCAtIENvbmZpZ3VyZSB0byBib290IGZyb20gQmFuazEgb3IgQmFuazIgICAgICAgICAgICAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK0BlbmRjb2RlCisqLworCisKKy8qKgorICAqIEBicmllZiAgU2V0cyB0aGUgY29kZSBsYXRlbmN5IHZhbHVlLgorICAqIEBub3RlICAgVGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZCBmb3IgYWxsIFNUTTMyRjEweCBkZXZpY2VzLgorICAqIEBwYXJhbSAgRkxBU0hfTGF0ZW5jeTogc3BlY2lmaWVzIHRoZSBGTEFTSCBMYXRlbmN5IHZhbHVlLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBGTEFTSF9MYXRlbmN5XzA6IEZMQVNIIFplcm8gTGF0ZW5jeSBjeWNsZQorICAqICAgICBAYXJnIEZMQVNIX0xhdGVuY3lfMTogRkxBU0ggT25lIExhdGVuY3kgY3ljbGUKKyAgKiAgICAgQGFyZyBGTEFTSF9MYXRlbmN5XzI6IEZMQVNIIFR3byBMYXRlbmN5IGN5Y2xlcworICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBGTEFTSF9TZXRMYXRlbmN5KHVpbnQzMl90IEZMQVNIX0xhdGVuY3kpCit7CisgIHVpbnQzMl90IHRtcHJlZyA9IDA7CisgIAorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfRkxBU0hfTEFURU5DWShGTEFTSF9MYXRlbmN5KSk7CisgIAorICAvKiBSZWFkIHRoZSBBQ1IgcmVnaXN0ZXIgKi8KKyAgdG1wcmVnID0gRkxBU0gtPkFDUjsgIAorICAKKyAgLyogU2V0cyB0aGUgTGF0ZW5jeSB2YWx1ZSAqLworICB0bXByZWcgJj0gQUNSX0xBVEVOQ1lfTWFzazsKKyAgdG1wcmVnIHw9IEZMQVNIX0xhdGVuY3k7CisgIAorICAvKiBXcml0ZSB0aGUgQUNSIHJlZ2lzdGVyICovCisgIEZMQVNILT5BQ1IgPSB0bXByZWc7Cit9CisKKy8qKgorICAqIEBicmllZiAgRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgSGFsZiBjeWNsZSBmbGFzaCBhY2Nlc3MuCisgICogQG5vdGUgICBUaGlzIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIGZvciBhbGwgU1RNMzJGMTB4IGRldmljZXMuCisgICogQHBhcmFtICBGTEFTSF9IYWxmQ3ljbGVBY2Nlc3M6IHNwZWNpZmllcyB0aGUgRkxBU0ggSGFsZiBjeWNsZSBBY2Nlc3MgbW9kZS4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICAgIEBhcmcgRkxBU0hfSGFsZkN5Y2xlQWNjZXNzX0VuYWJsZTogRkxBU0ggSGFsZiBDeWNsZSBFbmFibGUKKyAgKiAgICAgQGFyZyBGTEFTSF9IYWxmQ3ljbGVBY2Nlc3NfRGlzYWJsZTogRkxBU0ggSGFsZiBDeWNsZSBEaXNhYmxlCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIEZMQVNIX0hhbGZDeWNsZUFjY2Vzc0NtZCh1aW50MzJfdCBGTEFTSF9IYWxmQ3ljbGVBY2Nlc3MpCit7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19GTEFTSF9IQUxGQ1lDTEVBQ0NFU1NfU1RBVEUoRkxBU0hfSGFsZkN5Y2xlQWNjZXNzKSk7CisgIAorICAvKiBFbmFibGUgb3IgZGlzYWJsZSB0aGUgSGFsZiBjeWNsZSBhY2Nlc3MgKi8KKyAgRkxBU0gtPkFDUiAmPSBBQ1JfSExGQ1lBX01hc2s7CisgIEZMQVNILT5BQ1IgfD0gRkxBU0hfSGFsZkN5Y2xlQWNjZXNzOworfQorCisvKioKKyAgKiBAYnJpZWYgIEVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIFByZWZldGNoIEJ1ZmZlci4KKyAgKiBAbm90ZSAgIFRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWQgZm9yIGFsbCBTVE0zMkYxMHggZGV2aWNlcy4KKyAgKiBAcGFyYW0gIEZMQVNIX1ByZWZldGNoQnVmZmVyOiBzcGVjaWZpZXMgdGhlIFByZWZldGNoIGJ1ZmZlciBzdGF0dXMuCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIEZMQVNIX1ByZWZldGNoQnVmZmVyX0VuYWJsZTogRkxBU0ggUHJlZmV0Y2ggQnVmZmVyIEVuYWJsZQorICAqICAgICBAYXJnIEZMQVNIX1ByZWZldGNoQnVmZmVyX0Rpc2FibGU6IEZMQVNIIFByZWZldGNoIEJ1ZmZlciBEaXNhYmxlCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIEZMQVNIX1ByZWZldGNoQnVmZmVyQ21kKHVpbnQzMl90IEZMQVNIX1ByZWZldGNoQnVmZmVyKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfRkxBU0hfUFJFRkVUQ0hCVUZGRVJfU1RBVEUoRkxBU0hfUHJlZmV0Y2hCdWZmZXIpKTsKKyAgCisgIC8qIEVuYWJsZSBvciBkaXNhYmxlIHRoZSBQcmVmZXRjaCBCdWZmZXIgKi8KKyAgRkxBU0gtPkFDUiAmPSBBQ1JfUFJGVEJFX01hc2s7CisgIEZMQVNILT5BQ1IgfD0gRkxBU0hfUHJlZmV0Y2hCdWZmZXI7Cit9CisKKy8qKgorICAqIEBicmllZiAgVW5sb2NrcyB0aGUgRkxBU0ggUHJvZ3JhbSBFcmFzZSBDb250cm9sbGVyLgorICAqIEBub3RlICAgVGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZCBmb3IgYWxsIFNUTTMyRjEweCBkZXZpY2VzLgorICAqICAgICAgICAgLSBGb3IgU1RNMzJGMTBYX1hMIGRldmljZXMgdGhpcyBmdW5jdGlvbiB1bmxvY2tzIEJhbmsxIGFuZCBCYW5rMi4KKyAgKiAgICAgICAgIC0gRm9yIGFsbCBvdGhlciBkZXZpY2VzIGl0IHVubG9ja3MgQmFuazEgYW5kIGl0IGlzIGVxdWl2YWxlbnQgCisgICogICAgICAgICAgIHRvIEZMQVNIX1VubG9ja0JhbmsxIGZ1bmN0aW9uLi4gCisgICogQHBhcmFtICBOb25lCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIEZMQVNIX1VubG9jayh2b2lkKQoreworICAvKiBBdXRob3JpemUgdGhlIEZQRUMgb2YgQmFuazEgQWNjZXNzICovCisgIEZMQVNILT5LRVlSID0gRkxBU0hfS0VZMTsKKyAgRkxBU0gtPktFWVIgPSBGTEFTSF9LRVkyOworCisjaWZkZWYgU1RNMzJGMTBYX1hMCisgIC8qIEF1dGhvcml6ZSB0aGUgRlBFQyBvZiBCYW5rMiBBY2Nlc3MgKi8KKyAgRkxBU0gtPktFWVIyID0gRkxBU0hfS0VZMTsKKyAgRkxBU0gtPktFWVIyID0gRkxBU0hfS0VZMjsKKyNlbmRpZiAvKiBTVE0zMkYxMFhfWEwgKi8KK30KKy8qKgorICAqIEBicmllZiAgVW5sb2NrcyB0aGUgRkxBU0ggQmFuazEgUHJvZ3JhbSBFcmFzZSBDb250cm9sbGVyLgorICAqIEBub3RlICAgVGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZCBmb3IgYWxsIFNUTTMyRjEweCBkZXZpY2VzLgorICAqICAgICAgICAgLSBGb3IgU1RNMzJGMTBYX1hMIGRldmljZXMgdGhpcyBmdW5jdGlvbiB1bmxvY2tzIEJhbmsxLgorICAqICAgICAgICAgLSBGb3IgYWxsIG90aGVyIGRldmljZXMgaXQgdW5sb2NrcyBCYW5rMSBhbmQgaXQgaXMgCisgICogICAgICAgICAgIGVxdWl2YWxlbnQgdG8gRkxBU0hfVW5sb2NrIGZ1bmN0aW9uLgorICAqIEBwYXJhbSAgTm9uZQorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBGTEFTSF9VbmxvY2tCYW5rMSh2b2lkKQoreworICAvKiBBdXRob3JpemUgdGhlIEZQRUMgb2YgQmFuazEgQWNjZXNzICovCisgIEZMQVNILT5LRVlSID0gRkxBU0hfS0VZMTsKKyAgRkxBU0gtPktFWVIgPSBGTEFTSF9LRVkyOworfQorCisjaWZkZWYgU1RNMzJGMTBYX1hMCisvKioKKyAgKiBAYnJpZWYgIFVubG9ja3MgdGhlIEZMQVNIIEJhbmsyIFByb2dyYW0gRXJhc2UgQ29udHJvbGxlci4KKyAgKiBAbm90ZSAgIFRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWQgb25seSBmb3IgU1RNMzJGMTBYX1hMIGRlbnNpdHkgZGV2aWNlcy4KKyAgKiBAcGFyYW0gIE5vbmUKKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgRkxBU0hfVW5sb2NrQmFuazIodm9pZCkKK3sKKyAgLyogQXV0aG9yaXplIHRoZSBGUEVDIG9mIEJhbmsyIEFjY2VzcyAqLworICBGTEFTSC0+S0VZUjIgPSBGTEFTSF9LRVkxOworICBGTEFTSC0+S0VZUjIgPSBGTEFTSF9LRVkyOworCit9CisjZW5kaWYgLyogU1RNMzJGMTBYX1hMICovCisKKy8qKgorICAqIEBicmllZiAgTG9ja3MgdGhlIEZMQVNIIFByb2dyYW0gRXJhc2UgQ29udHJvbGxlci4KKyAgKiBAbm90ZSAgIFRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWQgZm9yIGFsbCBTVE0zMkYxMHggZGV2aWNlcy4KKyAgKiAgICAgICAgIC0gRm9yIFNUTTMyRjEwWF9YTCBkZXZpY2VzIHRoaXMgZnVuY3Rpb24gTG9ja3MgQmFuazEgYW5kIEJhbmsyLgorICAqICAgICAgICAgLSBGb3IgYWxsIG90aGVyIGRldmljZXMgaXQgTG9ja3MgQmFuazEgYW5kIGl0IGlzIGVxdWl2YWxlbnQgCisgICogICAgICAgICAgIHRvIEZMQVNIX0xvY2tCYW5rMSBmdW5jdGlvbi4KKyAgKiBAcGFyYW0gIE5vbmUKKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgRkxBU0hfTG9jayh2b2lkKQoreworICAvKiBTZXQgdGhlIExvY2sgQml0IHRvIGxvY2sgdGhlIEZQRUMgYW5kIHRoZSBDUiBvZiAgQmFuazEgKi8KKyAgRkxBU0gtPkNSIHw9IENSX0xPQ0tfU2V0OworCisjaWZkZWYgU1RNMzJGMTBYX1hMCisgIC8qIFNldCB0aGUgTG9jayBCaXQgdG8gbG9jayB0aGUgRlBFQyBhbmQgdGhlIENSIG9mICBCYW5rMiAqLworICBGTEFTSC0+Q1IyIHw9IENSX0xPQ0tfU2V0OworI2VuZGlmIC8qIFNUTTMyRjEwWF9YTCAqLworfQorCisvKioKKyAgKiBAYnJpZWYgIExvY2tzIHRoZSBGTEFTSCBCYW5rMSBQcm9ncmFtIEVyYXNlIENvbnRyb2xsZXIuCisgICogQG5vdGUgICB0aGlzIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIGZvciBhbGwgU1RNMzJGMTB4IGRldmljZXMuCisgICogICAgICAgICAtIEZvciBTVE0zMkYxMFhfWEwgZGV2aWNlcyB0aGlzIGZ1bmN0aW9uIExvY2tzIEJhbmsxLgorICAqICAgICAgICAgLSBGb3IgYWxsIG90aGVyIGRldmljZXMgaXQgTG9ja3MgQmFuazEgYW5kIGl0IGlzIGVxdWl2YWxlbnQgCisgICogICAgICAgICAgIHRvIEZMQVNIX0xvY2sgZnVuY3Rpb24uCisgICogQHBhcmFtICBOb25lCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIEZMQVNIX0xvY2tCYW5rMSh2b2lkKQoreworICAvKiBTZXQgdGhlIExvY2sgQml0IHRvIGxvY2sgdGhlIEZQRUMgYW5kIHRoZSBDUiBvZiAgQmFuazEgKi8KKyAgRkxBU0gtPkNSIHw9IENSX0xPQ0tfU2V0OworfQorCisjaWZkZWYgU1RNMzJGMTBYX1hMCisvKioKKyAgKiBAYnJpZWYgIExvY2tzIHRoZSBGTEFTSCBCYW5rMiBQcm9ncmFtIEVyYXNlIENvbnRyb2xsZXIuCisgICogQG5vdGUgICBUaGlzIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIG9ubHkgZm9yIFNUTTMyRjEwWF9YTCBkZW5zaXR5IGRldmljZXMuCisgICogQHBhcmFtICBOb25lCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIEZMQVNIX0xvY2tCYW5rMih2b2lkKQoreworICAvKiBTZXQgdGhlIExvY2sgQml0IHRvIGxvY2sgdGhlIEZQRUMgYW5kIHRoZSBDUiBvZiAgQmFuazIgKi8KKyAgRkxBU0gtPkNSMiB8PSBDUl9MT0NLX1NldDsKK30KKyNlbmRpZiAvKiBTVE0zMkYxMFhfWEwgKi8KKworLyoqCisgICogQGJyaWVmICBFcmFzZXMgYSBzcGVjaWZpZWQgRkxBU0ggcGFnZS4KKyAgKiBAbm90ZSAgIFRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWQgZm9yIGFsbCBTVE0zMkYxMHggZGV2aWNlcy4KKyAgKiBAcGFyYW0gIFBhZ2VfQWRkcmVzczogVGhlIHBhZ2UgYWRkcmVzcyB0byBiZSBlcmFzZWQuCisgICogQHJldHZhbCBGTEFTSCBTdGF0dXM6IFRoZSByZXR1cm5lZCB2YWx1ZSBjYW4gYmU6IEZMQVNIX0JVU1ksIEZMQVNIX0VSUk9SX1BHLAorICAqICAgICAgICAgRkxBU0hfRVJST1JfV1JQLCBGTEFTSF9DT01QTEVURSBvciBGTEFTSF9USU1FT1VULgorICAqLworRkxBU0hfU3RhdHVzIEZMQVNIX0VyYXNlUGFnZSh1aW50MzJfdCBQYWdlX0FkZHJlc3MpCit7CisgIEZMQVNIX1N0YXR1cyBzdGF0dXMgPSBGTEFTSF9DT01QTEVURTsKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX0ZMQVNIX0FERFJFU1MoUGFnZV9BZGRyZXNzKSk7CisKKyNpZmRlZiBTVE0zMkYxMFhfWEwKKyAgaWYoUGFnZV9BZGRyZXNzIDwgRkxBU0hfQkFOSzFfRU5EX0FERFJFU1MpICAKKyAgeworICAgIC8qIFdhaXQgZm9yIGxhc3Qgb3BlcmF0aW9uIHRvIGJlIGNvbXBsZXRlZCAqLworICAgIHN0YXR1cyA9IEZMQVNIX1dhaXRGb3JMYXN0QmFuazFPcGVyYXRpb24oRXJhc2VUaW1lb3V0KTsKKyAgICBpZihzdGF0dXMgPT0gRkxBU0hfQ09NUExFVEUpCisgICAgeyAKKyAgICAgIC8qIGlmIHRoZSBwcmV2aW91cyBvcGVyYXRpb24gaXMgY29tcGxldGVkLCBwcm9jZWVkIHRvIGVyYXNlIHRoZSBwYWdlICovCisgICAgICBGTEFTSC0+Q1J8PSBDUl9QRVJfU2V0OworICAgICAgRkxBU0gtPkFSID0gUGFnZV9BZGRyZXNzOyAKKyAgICAgIEZMQVNILT5DUnw9IENSX1NUUlRfU2V0OworICAgIAorICAgICAgLyogV2FpdCBmb3IgbGFzdCBvcGVyYXRpb24gdG8gYmUgY29tcGxldGVkICovCisgICAgICBzdGF0dXMgPSBGTEFTSF9XYWl0Rm9yTGFzdEJhbmsxT3BlcmF0aW9uKEVyYXNlVGltZW91dCk7CisKKyAgICAgIC8qIERpc2FibGUgdGhlIFBFUiBCaXQgKi8KKyAgICAgIEZMQVNILT5DUiAmPSBDUl9QRVJfUmVzZXQ7CisgICAgfQorICB9CisgIGVsc2UKKyAgeworICAgIC8qIFdhaXQgZm9yIGxhc3Qgb3BlcmF0aW9uIHRvIGJlIGNvbXBsZXRlZCAqLworICAgIHN0YXR1cyA9IEZMQVNIX1dhaXRGb3JMYXN0QmFuazJPcGVyYXRpb24oRXJhc2VUaW1lb3V0KTsKKyAgICBpZihzdGF0dXMgPT0gRkxBU0hfQ09NUExFVEUpCisgICAgeyAKKyAgICAgIC8qIGlmIHRoZSBwcmV2aW91cyBvcGVyYXRpb24gaXMgY29tcGxldGVkLCBwcm9jZWVkIHRvIGVyYXNlIHRoZSBwYWdlICovCisgICAgICBGTEFTSC0+Q1IyfD0gQ1JfUEVSX1NldDsKKyAgICAgIEZMQVNILT5BUjIgPSBQYWdlX0FkZHJlc3M7IAorICAgICAgRkxBU0gtPkNSMnw9IENSX1NUUlRfU2V0OworICAgIAorICAgICAgLyogV2FpdCBmb3IgbGFzdCBvcGVyYXRpb24gdG8gYmUgY29tcGxldGVkICovCisgICAgICBzdGF0dXMgPSBGTEFTSF9XYWl0Rm9yTGFzdEJhbmsyT3BlcmF0aW9uKEVyYXNlVGltZW91dCk7CisgICAgICAKKyAgICAgIC8qIERpc2FibGUgdGhlIFBFUiBCaXQgKi8KKyAgICAgIEZMQVNILT5DUjIgJj0gQ1JfUEVSX1Jlc2V0OworICAgIH0KKyAgfQorI2Vsc2UKKyAgLyogV2FpdCBmb3IgbGFzdCBvcGVyYXRpb24gdG8gYmUgY29tcGxldGVkICovCisgIHN0YXR1cyA9IEZMQVNIX1dhaXRGb3JMYXN0T3BlcmF0aW9uKEVyYXNlVGltZW91dCk7CisgIAorICBpZihzdGF0dXMgPT0gRkxBU0hfQ09NUExFVEUpCisgIHsgCisgICAgLyogaWYgdGhlIHByZXZpb3VzIG9wZXJhdGlvbiBpcyBjb21wbGV0ZWQsIHByb2NlZWQgdG8gZXJhc2UgdGhlIHBhZ2UgKi8KKyAgICBGTEFTSC0+Q1J8PSBDUl9QRVJfU2V0OworICAgIEZMQVNILT5BUiA9IFBhZ2VfQWRkcmVzczsgCisgICAgRkxBU0gtPkNSfD0gQ1JfU1RSVF9TZXQ7CisgICAgCisgICAgLyogV2FpdCBmb3IgbGFzdCBvcGVyYXRpb24gdG8gYmUgY29tcGxldGVkICovCisgICAgc3RhdHVzID0gRkxBU0hfV2FpdEZvckxhc3RPcGVyYXRpb24oRXJhc2VUaW1lb3V0KTsKKyAgICAKKyAgICAvKiBEaXNhYmxlIHRoZSBQRVIgQml0ICovCisgICAgRkxBU0gtPkNSICY9IENSX1BFUl9SZXNldDsKKyAgfQorI2VuZGlmIC8qIFNUTTMyRjEwWF9YTCAqLworCisgIC8qIFJldHVybiB0aGUgRXJhc2UgU3RhdHVzICovCisgIHJldHVybiBzdGF0dXM7Cit9CisKKy8qKgorICAqIEBicmllZiAgRXJhc2VzIGFsbCBGTEFTSCBwYWdlcy4KKyAgKiBAbm90ZSAgIFRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWQgZm9yIGFsbCBTVE0zMkYxMHggZGV2aWNlcy4KKyAgKiBAcGFyYW0gIE5vbmUKKyAgKiBAcmV0dmFsIEZMQVNIIFN0YXR1czogVGhlIHJldHVybmVkIHZhbHVlIGNhbiBiZTogRkxBU0hfRVJST1JfUEcsCisgICogICAgICAgICBGTEFTSF9FUlJPUl9XUlAsIEZMQVNIX0NPTVBMRVRFIG9yIEZMQVNIX1RJTUVPVVQuCisgICovCitGTEFTSF9TdGF0dXMgRkxBU0hfRXJhc2VBbGxQYWdlcyh2b2lkKQoreworICBGTEFTSF9TdGF0dXMgc3RhdHVzID0gRkxBU0hfQ09NUExFVEU7CisKKyNpZmRlZiBTVE0zMkYxMFhfWEwKKyAgLyogV2FpdCBmb3IgbGFzdCBvcGVyYXRpb24gdG8gYmUgY29tcGxldGVkICovCisgIHN0YXR1cyA9IEZMQVNIX1dhaXRGb3JMYXN0QmFuazFPcGVyYXRpb24oRXJhc2VUaW1lb3V0KTsKKyAgCisgIGlmKHN0YXR1cyA9PSBGTEFTSF9DT01QTEVURSkKKyAgeworICAgIC8qIGlmIHRoZSBwcmV2aW91cyBvcGVyYXRpb24gaXMgY29tcGxldGVkLCBwcm9jZWVkIHRvIGVyYXNlIGFsbCBwYWdlcyAqLworICAgICBGTEFTSC0+Q1IgfD0gQ1JfTUVSX1NldDsKKyAgICAgRkxBU0gtPkNSIHw9IENSX1NUUlRfU2V0OworICAgIAorICAgIC8qIFdhaXQgZm9yIGxhc3Qgb3BlcmF0aW9uIHRvIGJlIGNvbXBsZXRlZCAqLworICAgIHN0YXR1cyA9IEZMQVNIX1dhaXRGb3JMYXN0QmFuazFPcGVyYXRpb24oRXJhc2VUaW1lb3V0KTsKKyAgICAKKyAgICAvKiBEaXNhYmxlIHRoZSBNRVIgQml0ICovCisgICAgRkxBU0gtPkNSICY9IENSX01FUl9SZXNldDsKKyAgfSAgICAKKyAgaWYoc3RhdHVzID09IEZMQVNIX0NPTVBMRVRFKQorICB7CisgICAgLyogaWYgdGhlIHByZXZpb3VzIG9wZXJhdGlvbiBpcyBjb21wbGV0ZWQsIHByb2NlZWQgdG8gZXJhc2UgYWxsIHBhZ2VzICovCisgICAgIEZMQVNILT5DUjIgfD0gQ1JfTUVSX1NldDsKKyAgICAgRkxBU0gtPkNSMiB8PSBDUl9TVFJUX1NldDsKKyAgICAKKyAgICAvKiBXYWl0IGZvciBsYXN0IG9wZXJhdGlvbiB0byBiZSBjb21wbGV0ZWQgKi8KKyAgICBzdGF0dXMgPSBGTEFTSF9XYWl0Rm9yTGFzdEJhbmsyT3BlcmF0aW9uKEVyYXNlVGltZW91dCk7CisgICAgCisgICAgLyogRGlzYWJsZSB0aGUgTUVSIEJpdCAqLworICAgIEZMQVNILT5DUjIgJj0gQ1JfTUVSX1Jlc2V0OworICB9CisjZWxzZQorICAvKiBXYWl0IGZvciBsYXN0IG9wZXJhdGlvbiB0byBiZSBjb21wbGV0ZWQgKi8KKyAgc3RhdHVzID0gRkxBU0hfV2FpdEZvckxhc3RPcGVyYXRpb24oRXJhc2VUaW1lb3V0KTsKKyAgaWYoc3RhdHVzID09IEZMQVNIX0NPTVBMRVRFKQorICB7CisgICAgLyogaWYgdGhlIHByZXZpb3VzIG9wZXJhdGlvbiBpcyBjb21wbGV0ZWQsIHByb2NlZWQgdG8gZXJhc2UgYWxsIHBhZ2VzICovCisgICAgIEZMQVNILT5DUiB8PSBDUl9NRVJfU2V0OworICAgICBGTEFTSC0+Q1IgfD0gQ1JfU1RSVF9TZXQ7CisgICAgCisgICAgLyogV2FpdCBmb3IgbGFzdCBvcGVyYXRpb24gdG8gYmUgY29tcGxldGVkICovCisgICAgc3RhdHVzID0gRkxBU0hfV2FpdEZvckxhc3RPcGVyYXRpb24oRXJhc2VUaW1lb3V0KTsKKworICAgIC8qIERpc2FibGUgdGhlIE1FUiBCaXQgKi8KKyAgICBGTEFTSC0+Q1IgJj0gQ1JfTUVSX1Jlc2V0OworICB9CisjZW5kaWYgLyogU1RNMzJGMTBYX1hMICovCisKKyAgLyogUmV0dXJuIHRoZSBFcmFzZSBTdGF0dXMgKi8KKyAgcmV0dXJuIHN0YXR1czsKK30KKworLyoqCisgICogQGJyaWVmICBFcmFzZXMgYWxsIEJhbmsxIEZMQVNIIHBhZ2VzLgorICAqIEBub3RlICAgVGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZCBmb3IgYWxsIFNUTTMyRjEweCBkZXZpY2VzLgorICAqICAgICAgICAgLSBGb3IgU1RNMzJGMTBYX1hMIGRldmljZXMgdGhpcyBmdW5jdGlvbiBlcmFzZXMgYWxsIEJhbmsxIHBhZ2VzLgorICAqICAgICAgICAgLSBGb3IgYWxsIG90aGVyIGRldmljZXMgaXQgZXJhc2VzIGFsbCBCYW5rMSBwYWdlcyBhbmQgaXQgaXMgZXF1aXZhbGVudCAKKyAgKiAgICAgICAgICAgdG8gRkxBU0hfRXJhc2VBbGxQYWdlcyBmdW5jdGlvbi4KKyAgKiBAcGFyYW0gIE5vbmUKKyAgKiBAcmV0dmFsIEZMQVNIIFN0YXR1czogVGhlIHJldHVybmVkIHZhbHVlIGNhbiBiZTogRkxBU0hfRVJST1JfUEcsCisgICogICAgICAgICBGTEFTSF9FUlJPUl9XUlAsIEZMQVNIX0NPTVBMRVRFIG9yIEZMQVNIX1RJTUVPVVQuCisgICovCitGTEFTSF9TdGF0dXMgRkxBU0hfRXJhc2VBbGxCYW5rMVBhZ2VzKHZvaWQpCit7CisgIEZMQVNIX1N0YXR1cyBzdGF0dXMgPSBGTEFTSF9DT01QTEVURTsKKyAgLyogV2FpdCBmb3IgbGFzdCBvcGVyYXRpb24gdG8gYmUgY29tcGxldGVkICovCisgIHN0YXR1cyA9IEZMQVNIX1dhaXRGb3JMYXN0QmFuazFPcGVyYXRpb24oRXJhc2VUaW1lb3V0KTsKKyAgCisgIGlmKHN0YXR1cyA9PSBGTEFTSF9DT01QTEVURSkKKyAgeworICAgIC8qIGlmIHRoZSBwcmV2aW91cyBvcGVyYXRpb24gaXMgY29tcGxldGVkLCBwcm9jZWVkIHRvIGVyYXNlIGFsbCBwYWdlcyAqLworICAgICBGTEFTSC0+Q1IgfD0gQ1JfTUVSX1NldDsKKyAgICAgRkxBU0gtPkNSIHw9IENSX1NUUlRfU2V0OworICAgIAorICAgIC8qIFdhaXQgZm9yIGxhc3Qgb3BlcmF0aW9uIHRvIGJlIGNvbXBsZXRlZCAqLworICAgIHN0YXR1cyA9IEZMQVNIX1dhaXRGb3JMYXN0QmFuazFPcGVyYXRpb24oRXJhc2VUaW1lb3V0KTsKKyAgICAKKyAgICAvKiBEaXNhYmxlIHRoZSBNRVIgQml0ICovCisgICAgRkxBU0gtPkNSICY9IENSX01FUl9SZXNldDsKKyAgfSAgICAKKyAgLyogUmV0dXJuIHRoZSBFcmFzZSBTdGF0dXMgKi8KKyAgcmV0dXJuIHN0YXR1czsKK30KKworI2lmZGVmIFNUTTMyRjEwWF9YTAorLyoqCisgICogQGJyaWVmICBFcmFzZXMgYWxsIEJhbmsyIEZMQVNIIHBhZ2VzLgorICAqIEBub3RlICAgVGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZCBvbmx5IGZvciBTVE0zMkYxMHhfWEwgZGVuc2l0eSBkZXZpY2VzLgorICAqIEBwYXJhbSAgTm9uZQorICAqIEByZXR2YWwgRkxBU0ggU3RhdHVzOiBUaGUgcmV0dXJuZWQgdmFsdWUgY2FuIGJlOiBGTEFTSF9FUlJPUl9QRywKKyAgKiAgICAgICAgIEZMQVNIX0VSUk9SX1dSUCwgRkxBU0hfQ09NUExFVEUgb3IgRkxBU0hfVElNRU9VVC4KKyAgKi8KK0ZMQVNIX1N0YXR1cyBGTEFTSF9FcmFzZUFsbEJhbmsyUGFnZXModm9pZCkKK3sKKyAgRkxBU0hfU3RhdHVzIHN0YXR1cyA9IEZMQVNIX0NPTVBMRVRFOworICAvKiBXYWl0IGZvciBsYXN0IG9wZXJhdGlvbiB0byBiZSBjb21wbGV0ZWQgKi8KKyAgc3RhdHVzID0gRkxBU0hfV2FpdEZvckxhc3RCYW5rMk9wZXJhdGlvbihFcmFzZVRpbWVvdXQpOworICAKKyAgaWYoc3RhdHVzID09IEZMQVNIX0NPTVBMRVRFKQorICB7CisgICAgLyogaWYgdGhlIHByZXZpb3VzIG9wZXJhdGlvbiBpcyBjb21wbGV0ZWQsIHByb2NlZWQgdG8gZXJhc2UgYWxsIHBhZ2VzICovCisgICAgIEZMQVNILT5DUjIgfD0gQ1JfTUVSX1NldDsKKyAgICAgRkxBU0gtPkNSMiB8PSBDUl9TVFJUX1NldDsKKyAgICAKKyAgICAvKiBXYWl0IGZvciBsYXN0IG9wZXJhdGlvbiB0byBiZSBjb21wbGV0ZWQgKi8KKyAgICBzdGF0dXMgPSBGTEFTSF9XYWl0Rm9yTGFzdEJhbmsyT3BlcmF0aW9uKEVyYXNlVGltZW91dCk7CisKKyAgICAvKiBEaXNhYmxlIHRoZSBNRVIgQml0ICovCisgICAgRkxBU0gtPkNSMiAmPSBDUl9NRVJfUmVzZXQ7CisgIH0gICAgCisgIC8qIFJldHVybiB0aGUgRXJhc2UgU3RhdHVzICovCisgIHJldHVybiBzdGF0dXM7Cit9CisjZW5kaWYgLyogU1RNMzJGMTBYX1hMICovCisKKy8qKgorICAqIEBicmllZiAgRXJhc2VzIHRoZSBGTEFTSCBvcHRpb24gYnl0ZXMuCisgICogQG5vdGUgICBUaGlzIGZ1bmN0aW9ucyBlcmFzZXMgYWxsIG9wdGlvbiBieXRlcyBleGNlcHQgdGhlIFJlYWQgcHJvdGVjdGlvbiAoUkRQKS4gCisgICogQG5vdGUgICBUaGlzIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIGZvciBhbGwgU1RNMzJGMTB4IGRldmljZXMuCisgICogQHBhcmFtICBOb25lCisgICogQHJldHZhbCBGTEFTSCBTdGF0dXM6IFRoZSByZXR1cm5lZCB2YWx1ZSBjYW4gYmU6IEZMQVNIX0VSUk9SX1BHLAorICAqICAgICAgICAgRkxBU0hfRVJST1JfV1JQLCBGTEFTSF9DT01QTEVURSBvciBGTEFTSF9USU1FT1VULgorICAqLworRkxBU0hfU3RhdHVzIEZMQVNIX0VyYXNlT3B0aW9uQnl0ZXModm9pZCkKK3sKKyAgdWludDE2X3QgcmRwdG1wID0gUkRQX0tleTsKKworICBGTEFTSF9TdGF0dXMgc3RhdHVzID0gRkxBU0hfQ09NUExFVEU7CisKKyAgLyogR2V0IHRoZSBhY3R1YWwgcmVhZCBwcm90ZWN0aW9uIE9wdGlvbiBCeXRlIHZhbHVlICovIAorICBpZihGTEFTSF9HZXRSZWFkT3V0UHJvdGVjdGlvblN0YXR1cygpICE9IFJFU0VUKQorICB7CisgICAgcmRwdG1wID0gMHgwMDsgIAorICB9CisKKyAgLyogV2FpdCBmb3IgbGFzdCBvcGVyYXRpb24gdG8gYmUgY29tcGxldGVkICovCisgIHN0YXR1cyA9IEZMQVNIX1dhaXRGb3JMYXN0T3BlcmF0aW9uKEVyYXNlVGltZW91dCk7CisgIGlmKHN0YXR1cyA9PSBGTEFTSF9DT01QTEVURSkKKyAgeworICAgIC8qIEF1dGhvcml6ZSB0aGUgc21hbGwgaW5mb3JtYXRpb24gYmxvY2sgcHJvZ3JhbW1pbmcgKi8KKyAgICBGTEFTSC0+T1BUS0VZUiA9IEZMQVNIX0tFWTE7CisgICAgRkxBU0gtPk9QVEtFWVIgPSBGTEFTSF9LRVkyOworICAgIAorICAgIC8qIGlmIHRoZSBwcmV2aW91cyBvcGVyYXRpb24gaXMgY29tcGxldGVkLCBwcm9jZWVkIHRvIGVyYXNlIHRoZSBvcHRpb24gYnl0ZXMgKi8KKyAgICBGTEFTSC0+Q1IgfD0gQ1JfT1BURVJfU2V0OworICAgIEZMQVNILT5DUiB8PSBDUl9TVFJUX1NldDsKKyAgICAvKiBXYWl0IGZvciBsYXN0IG9wZXJhdGlvbiB0byBiZSBjb21wbGV0ZWQgKi8KKyAgICBzdGF0dXMgPSBGTEFTSF9XYWl0Rm9yTGFzdE9wZXJhdGlvbihFcmFzZVRpbWVvdXQpOworICAgIAorICAgIGlmKHN0YXR1cyA9PSBGTEFTSF9DT01QTEVURSkKKyAgICB7CisgICAgICAvKiBpZiB0aGUgZXJhc2Ugb3BlcmF0aW9uIGlzIGNvbXBsZXRlZCwgZGlzYWJsZSB0aGUgT1BURVIgQml0ICovCisgICAgICBGTEFTSC0+Q1IgJj0gQ1JfT1BURVJfUmVzZXQ7CisgICAgICAgCisgICAgICAvKiBFbmFibGUgdGhlIE9wdGlvbiBCeXRlcyBQcm9ncmFtbWluZyBvcGVyYXRpb24gKi8KKyAgICAgIEZMQVNILT5DUiB8PSBDUl9PUFRQR19TZXQ7CisgICAgICAvKiBSZXN0b3JlIHRoZSBsYXN0IHJlYWQgcHJvdGVjdGlvbiBPcHRpb24gQnl0ZSB2YWx1ZSAqLworICAgICAgT0ItPlJEUCA9ICh1aW50MTZfdClyZHB0bXA7IAorICAgICAgLyogV2FpdCBmb3IgbGFzdCBvcGVyYXRpb24gdG8gYmUgY29tcGxldGVkICovCisgICAgICBzdGF0dXMgPSBGTEFTSF9XYWl0Rm9yTGFzdE9wZXJhdGlvbihQcm9ncmFtVGltZW91dCk7CisgCisgICAgICBpZihzdGF0dXMgIT0gRkxBU0hfVElNRU9VVCkKKyAgICAgIHsKKyAgICAgICAgLyogaWYgdGhlIHByb2dyYW0gb3BlcmF0aW9uIGlzIGNvbXBsZXRlZCwgZGlzYWJsZSB0aGUgT1BUUEcgQml0ICovCisgICAgICAgIEZMQVNILT5DUiAmPSBDUl9PUFRQR19SZXNldDsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgIGlmIChzdGF0dXMgIT0gRkxBU0hfVElNRU9VVCkKKyAgICAgIHsKKyAgICAgICAgLyogRGlzYWJsZSB0aGUgT1BUUEcgQml0ICovCisgICAgICAgIEZMQVNILT5DUiAmPSBDUl9PUFRQR19SZXNldDsKKyAgICAgIH0KKyAgICB9ICAKKyAgfQorICAvKiBSZXR1cm4gdGhlIGVyYXNlIHN0YXR1cyAqLworICByZXR1cm4gc3RhdHVzOworfQorCisvKioKKyAgKiBAYnJpZWYgIFByb2dyYW1zIGEgd29yZCBhdCBhIHNwZWNpZmllZCBhZGRyZXNzLgorICAqIEBub3RlICAgVGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZCBmb3IgYWxsIFNUTTMyRjEweCBkZXZpY2VzLgorICAqIEBwYXJhbSAgQWRkcmVzczogc3BlY2lmaWVzIHRoZSBhZGRyZXNzIHRvIGJlIHByb2dyYW1tZWQuCisgICogQHBhcmFtICBEYXRhOiBzcGVjaWZpZXMgdGhlIGRhdGEgdG8gYmUgcHJvZ3JhbW1lZC4KKyAgKiBAcmV0dmFsIEZMQVNIIFN0YXR1czogVGhlIHJldHVybmVkIHZhbHVlIGNhbiBiZTogRkxBU0hfRVJST1JfUEcsCisgICogICAgICAgICBGTEFTSF9FUlJPUl9XUlAsIEZMQVNIX0NPTVBMRVRFIG9yIEZMQVNIX1RJTUVPVVQuIAorICAqLworRkxBU0hfU3RhdHVzIEZMQVNIX1Byb2dyYW1Xb3JkKHVpbnQzMl90IEFkZHJlc3MsIHVpbnQzMl90IERhdGEpCit7CisgIEZMQVNIX1N0YXR1cyBzdGF0dXMgPSBGTEFTSF9DT01QTEVURTsKKyAgX19JTyB1aW50MzJfdCB0bXAgPSAwOworCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19GTEFTSF9BRERSRVNTKEFkZHJlc3MpKTsKKworI2lmZGVmIFNUTTMyRjEwWF9YTAorICBpZihBZGRyZXNzIDwgRkxBU0hfQkFOSzFfRU5EX0FERFJFU1MgLSAyKQorICB7IAorICAgIC8qIFdhaXQgZm9yIGxhc3Qgb3BlcmF0aW9uIHRvIGJlIGNvbXBsZXRlZCAqLworICAgIHN0YXR1cyA9IEZMQVNIX1dhaXRGb3JMYXN0QmFuazFPcGVyYXRpb24oUHJvZ3JhbVRpbWVvdXQpOyAKKyAgICBpZihzdGF0dXMgPT0gRkxBU0hfQ09NUExFVEUpCisgICAgeworICAgICAgLyogaWYgdGhlIHByZXZpb3VzIG9wZXJhdGlvbiBpcyBjb21wbGV0ZWQsIHByb2NlZWQgdG8gcHJvZ3JhbSB0aGUgbmV3IGZpcnN0IAorICAgICAgICBoYWxmIHdvcmQgKi8KKyAgICAgIEZMQVNILT5DUiB8PSBDUl9QR19TZXQ7CisgIAorICAgICAgKihfX0lPIHVpbnQxNl90KilBZGRyZXNzID0gKHVpbnQxNl90KURhdGE7CisgICAgICAvKiBXYWl0IGZvciBsYXN0IG9wZXJhdGlvbiB0byBiZSBjb21wbGV0ZWQgKi8KKyAgICAgIHN0YXR1cyA9IEZMQVNIX1dhaXRGb3JMYXN0T3BlcmF0aW9uKFByb2dyYW1UaW1lb3V0KTsKKyAKKyAgICAgIGlmKHN0YXR1cyA9PSBGTEFTSF9DT01QTEVURSkKKyAgICAgIHsKKyAgICAgICAgLyogaWYgdGhlIHByZXZpb3VzIG9wZXJhdGlvbiBpcyBjb21wbGV0ZWQsIHByb2NlZWQgdG8gcHJvZ3JhbSB0aGUgbmV3IHNlY29uZCAKKyAgICAgICAgaGFsZiB3b3JkICovCisgICAgICAgIHRtcCA9IEFkZHJlc3MgKyAyOworCisgICAgICAgICooX19JTyB1aW50MTZfdCopIHRtcCA9IERhdGEgPj4gMTY7CisgICAgCisgICAgICAgIC8qIFdhaXQgZm9yIGxhc3Qgb3BlcmF0aW9uIHRvIGJlIGNvbXBsZXRlZCAqLworICAgICAgICBzdGF0dXMgPSBGTEFTSF9XYWl0Rm9yTGFzdE9wZXJhdGlvbihQcm9ncmFtVGltZW91dCk7CisgICAgICAgIAorICAgICAgICAvKiBEaXNhYmxlIHRoZSBQRyBCaXQgKi8KKyAgICAgICAgRkxBU0gtPkNSICY9IENSX1BHX1Jlc2V0OworICAgICAgfQorICAgICAgZWxzZQorICAgICAgeworICAgICAgICAvKiBEaXNhYmxlIHRoZSBQRyBCaXQgKi8KKyAgICAgICAgRkxBU0gtPkNSICY9IENSX1BHX1Jlc2V0OworICAgICAgIH0KKyAgICB9CisgIH0KKyAgZWxzZSBpZihBZGRyZXNzID09IChGTEFTSF9CQU5LMV9FTkRfQUREUkVTUyAtIDEpKQorICB7CisgICAgLyogV2FpdCBmb3IgbGFzdCBvcGVyYXRpb24gdG8gYmUgY29tcGxldGVkICovCisgICAgc3RhdHVzID0gRkxBU0hfV2FpdEZvckxhc3RCYW5rMU9wZXJhdGlvbihQcm9ncmFtVGltZW91dCk7CisKKyAgICBpZihzdGF0dXMgPT0gRkxBU0hfQ09NUExFVEUpCisgICAgeworICAgICAgLyogaWYgdGhlIHByZXZpb3VzIG9wZXJhdGlvbiBpcyBjb21wbGV0ZWQsIHByb2NlZWQgdG8gcHJvZ3JhbSB0aGUgbmV3IGZpcnN0IAorICAgICAgICBoYWxmIHdvcmQgKi8KKyAgICAgIEZMQVNILT5DUiB8PSBDUl9QR19TZXQ7CisgIAorICAgICAgKihfX0lPIHVpbnQxNl90KilBZGRyZXNzID0gKHVpbnQxNl90KURhdGE7CisKKyAgICAgIC8qIFdhaXQgZm9yIGxhc3Qgb3BlcmF0aW9uIHRvIGJlIGNvbXBsZXRlZCAqLworICAgICAgc3RhdHVzID0gRkxBU0hfV2FpdEZvckxhc3RCYW5rMU9wZXJhdGlvbihQcm9ncmFtVGltZW91dCk7CisgICAgICAKKwkgIC8qIERpc2FibGUgdGhlIFBHIEJpdCAqLworICAgICAgRkxBU0gtPkNSICY9IENSX1BHX1Jlc2V0OworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgLyogRGlzYWJsZSB0aGUgUEcgQml0ICovCisgICAgICBGTEFTSC0+Q1IgJj0gQ1JfUEdfUmVzZXQ7CisgICAgfQorCisgICAgLyogV2FpdCBmb3IgbGFzdCBvcGVyYXRpb24gdG8gYmUgY29tcGxldGVkICovCisgICAgc3RhdHVzID0gRkxBU0hfV2FpdEZvckxhc3RCYW5rMk9wZXJhdGlvbihQcm9ncmFtVGltZW91dCk7CisKKyAgICBpZihzdGF0dXMgPT0gRkxBU0hfQ09NUExFVEUpCisgICAgeworICAgICAgLyogaWYgdGhlIHByZXZpb3VzIG9wZXJhdGlvbiBpcyBjb21wbGV0ZWQsIHByb2NlZWQgdG8gcHJvZ3JhbSB0aGUgbmV3IHNlY29uZCAKKyAgICAgIGhhbGYgd29yZCAqLworICAgICAgRkxBU0gtPkNSMiB8PSBDUl9QR19TZXQ7CisgICAgICB0bXAgPSBBZGRyZXNzICsgMjsKKworICAgICAgKihfX0lPIHVpbnQxNl90KikgdG1wID0gRGF0YSA+PiAxNjsKKyAgICAKKyAgICAgIC8qIFdhaXQgZm9yIGxhc3Qgb3BlcmF0aW9uIHRvIGJlIGNvbXBsZXRlZCAqLworICAgICAgc3RhdHVzID0gRkxBU0hfV2FpdEZvckxhc3RCYW5rMk9wZXJhdGlvbihQcm9ncmFtVGltZW91dCk7CisgICAgICAgIAorICAgICAgLyogRGlzYWJsZSB0aGUgUEcgQml0ICovCisgICAgICBGTEFTSC0+Q1IyICY9IENSX1BHX1Jlc2V0OworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgLyogRGlzYWJsZSB0aGUgUEcgQml0ICovCisgICAgICBGTEFTSC0+Q1IyICY9IENSX1BHX1Jlc2V0OworICAgIH0KKyAgfQorICBlbHNlCisgIHsKKyAgICAvKiBXYWl0IGZvciBsYXN0IG9wZXJhdGlvbiB0byBiZSBjb21wbGV0ZWQgKi8KKyAgICBzdGF0dXMgPSBGTEFTSF9XYWl0Rm9yTGFzdEJhbmsyT3BlcmF0aW9uKFByb2dyYW1UaW1lb3V0KTsKKworICAgIGlmKHN0YXR1cyA9PSBGTEFTSF9DT01QTEVURSkKKyAgICB7CisgICAgICAvKiBpZiB0aGUgcHJldmlvdXMgb3BlcmF0aW9uIGlzIGNvbXBsZXRlZCwgcHJvY2VlZCB0byBwcm9ncmFtIHRoZSBuZXcgZmlyc3QgCisgICAgICAgIGhhbGYgd29yZCAqLworICAgICAgRkxBU0gtPkNSMiB8PSBDUl9QR19TZXQ7CisgIAorICAgICAgKihfX0lPIHVpbnQxNl90KilBZGRyZXNzID0gKHVpbnQxNl90KURhdGE7CisgICAgICAvKiBXYWl0IGZvciBsYXN0IG9wZXJhdGlvbiB0byBiZSBjb21wbGV0ZWQgKi8KKyAgICAgIHN0YXR1cyA9IEZMQVNIX1dhaXRGb3JMYXN0QmFuazJPcGVyYXRpb24oUHJvZ3JhbVRpbWVvdXQpOworIAorICAgICAgaWYoc3RhdHVzID09IEZMQVNIX0NPTVBMRVRFKQorICAgICAgeworICAgICAgICAvKiBpZiB0aGUgcHJldmlvdXMgb3BlcmF0aW9uIGlzIGNvbXBsZXRlZCwgcHJvY2VlZCB0byBwcm9ncmFtIHRoZSBuZXcgc2Vjb25kIAorICAgICAgICBoYWxmIHdvcmQgKi8KKyAgICAgICAgdG1wID0gQWRkcmVzcyArIDI7CisKKyAgICAgICAgKihfX0lPIHVpbnQxNl90KikgdG1wID0gRGF0YSA+PiAxNjsKKyAgICAKKyAgICAgICAgLyogV2FpdCBmb3IgbGFzdCBvcGVyYXRpb24gdG8gYmUgY29tcGxldGVkICovCisgICAgICAgIHN0YXR1cyA9IEZMQVNIX1dhaXRGb3JMYXN0QmFuazJPcGVyYXRpb24oUHJvZ3JhbVRpbWVvdXQpOworICAgICAgICAKKyAgICAgICAgLyogRGlzYWJsZSB0aGUgUEcgQml0ICovCisgICAgICAgIEZMQVNILT5DUjIgJj0gQ1JfUEdfUmVzZXQ7CisgICAgICB9CisgICAgICBlbHNlCisgICAgICB7CisgICAgICAgIC8qIERpc2FibGUgdGhlIFBHIEJpdCAqLworICAgICAgICBGTEFTSC0+Q1IyICY9IENSX1BHX1Jlc2V0OworICAgICAgfQorICAgIH0KKyAgfQorI2Vsc2UKKyAgLyogV2FpdCBmb3IgbGFzdCBvcGVyYXRpb24gdG8gYmUgY29tcGxldGVkICovCisgIHN0YXR1cyA9IEZMQVNIX1dhaXRGb3JMYXN0T3BlcmF0aW9uKFByb2dyYW1UaW1lb3V0KTsKKyAgCisgIGlmKHN0YXR1cyA9PSBGTEFTSF9DT01QTEVURSkKKyAgeworICAgIC8qIGlmIHRoZSBwcmV2aW91cyBvcGVyYXRpb24gaXMgY29tcGxldGVkLCBwcm9jZWVkIHRvIHByb2dyYW0gdGhlIG5ldyBmaXJzdCAKKyAgICBoYWxmIHdvcmQgKi8KKyAgICBGTEFTSC0+Q1IgfD0gQ1JfUEdfU2V0OworICAKKyAgICAqKF9fSU8gdWludDE2X3QqKUFkZHJlc3MgPSAodWludDE2X3QpRGF0YTsKKyAgICAvKiBXYWl0IGZvciBsYXN0IG9wZXJhdGlvbiB0byBiZSBjb21wbGV0ZWQgKi8KKyAgICBzdGF0dXMgPSBGTEFTSF9XYWl0Rm9yTGFzdE9wZXJhdGlvbihQcm9ncmFtVGltZW91dCk7CisgCisgICAgaWYoc3RhdHVzID09IEZMQVNIX0NPTVBMRVRFKQorICAgIHsKKyAgICAgIC8qIGlmIHRoZSBwcmV2aW91cyBvcGVyYXRpb24gaXMgY29tcGxldGVkLCBwcm9jZWVkIHRvIHByb2dyYW0gdGhlIG5ldyBzZWNvbmQgCisgICAgICBoYWxmIHdvcmQgKi8KKyAgICAgIHRtcCA9IEFkZHJlc3MgKyAyOworCisgICAgICAqKF9fSU8gdWludDE2X3QqKSB0bXAgPSBEYXRhID4+IDE2OworICAgIAorICAgICAgLyogV2FpdCBmb3IgbGFzdCBvcGVyYXRpb24gdG8gYmUgY29tcGxldGVkICovCisgICAgICBzdGF0dXMgPSBGTEFTSF9XYWl0Rm9yTGFzdE9wZXJhdGlvbihQcm9ncmFtVGltZW91dCk7CisgICAgICAgIAorICAgICAgLyogRGlzYWJsZSB0aGUgUEcgQml0ICovCisgICAgICBGTEFTSC0+Q1IgJj0gQ1JfUEdfUmVzZXQ7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAvKiBEaXNhYmxlIHRoZSBQRyBCaXQgKi8KKyAgICAgIEZMQVNILT5DUiAmPSBDUl9QR19SZXNldDsKKyAgICB9CisgIH0gICAgICAgICAKKyNlbmRpZiAvKiBTVE0zMkYxMFhfWEwgKi8KKyAgIAorICAvKiBSZXR1cm4gdGhlIFByb2dyYW0gU3RhdHVzICovCisgIHJldHVybiBzdGF0dXM7Cit9CisKKy8qKgorICAqIEBicmllZiAgUHJvZ3JhbXMgYSBoYWxmIHdvcmQgYXQgYSBzcGVjaWZpZWQgYWRkcmVzcy4KKyAgKiBAbm90ZSAgIFRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWQgZm9yIGFsbCBTVE0zMkYxMHggZGV2aWNlcy4KKyAgKiBAcGFyYW0gIEFkZHJlc3M6IHNwZWNpZmllcyB0aGUgYWRkcmVzcyB0byBiZSBwcm9ncmFtbWVkLgorICAqIEBwYXJhbSAgRGF0YTogc3BlY2lmaWVzIHRoZSBkYXRhIHRvIGJlIHByb2dyYW1tZWQuCisgICogQHJldHZhbCBGTEFTSCBTdGF0dXM6IFRoZSByZXR1cm5lZCB2YWx1ZSBjYW4gYmU6IEZMQVNIX0VSUk9SX1BHLAorICAqICAgICAgICAgRkxBU0hfRVJST1JfV1JQLCBGTEFTSF9DT01QTEVURSBvciBGTEFTSF9USU1FT1VULiAKKyAgKi8KK0ZMQVNIX1N0YXR1cyBGTEFTSF9Qcm9ncmFtSGFsZldvcmQodWludDMyX3QgQWRkcmVzcywgdWludDE2X3QgRGF0YSkKK3sKKyAgRkxBU0hfU3RhdHVzIHN0YXR1cyA9IEZMQVNIX0NPTVBMRVRFOworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfRkxBU0hfQUREUkVTUyhBZGRyZXNzKSk7CisKKyNpZmRlZiBTVE0zMkYxMFhfWEwKKyAgLyogV2FpdCBmb3IgbGFzdCBvcGVyYXRpb24gdG8gYmUgY29tcGxldGVkICovCisgIHN0YXR1cyA9IEZMQVNIX1dhaXRGb3JMYXN0T3BlcmF0aW9uKFByb2dyYW1UaW1lb3V0KTsKKyAgCisgIGlmKEFkZHJlc3MgPCBGTEFTSF9CQU5LMV9FTkRfQUREUkVTUykKKyAgeworICAgIGlmKHN0YXR1cyA9PSBGTEFTSF9DT01QTEVURSkKKyAgICB7CisgICAgICAvKiBpZiB0aGUgcHJldmlvdXMgb3BlcmF0aW9uIGlzIGNvbXBsZXRlZCwgcHJvY2VlZCB0byBwcm9ncmFtIHRoZSBuZXcgZGF0YSAqLworICAgICAgRkxBU0gtPkNSIHw9IENSX1BHX1NldDsKKyAgCisgICAgICAqKF9fSU8gdWludDE2X3QqKUFkZHJlc3MgPSBEYXRhOworICAgICAgLyogV2FpdCBmb3IgbGFzdCBvcGVyYXRpb24gdG8gYmUgY29tcGxldGVkICovCisgICAgICBzdGF0dXMgPSBGTEFTSF9XYWl0Rm9yTGFzdEJhbmsxT3BlcmF0aW9uKFByb2dyYW1UaW1lb3V0KTsKKworICAgICAgLyogRGlzYWJsZSB0aGUgUEcgQml0ICovCisgICAgICBGTEFTSC0+Q1IgJj0gQ1JfUEdfUmVzZXQ7CisgICAgfQorICB9CisgIGVsc2UKKyAgeworICAgIGlmKHN0YXR1cyA9PSBGTEFTSF9DT01QTEVURSkKKyAgICB7CisgICAgICAvKiBpZiB0aGUgcHJldmlvdXMgb3BlcmF0aW9uIGlzIGNvbXBsZXRlZCwgcHJvY2VlZCB0byBwcm9ncmFtIHRoZSBuZXcgZGF0YSAqLworICAgICAgRkxBU0gtPkNSMiB8PSBDUl9QR19TZXQ7CisgIAorICAgICAgKihfX0lPIHVpbnQxNl90KilBZGRyZXNzID0gRGF0YTsKKyAgICAgIC8qIFdhaXQgZm9yIGxhc3Qgb3BlcmF0aW9uIHRvIGJlIGNvbXBsZXRlZCAqLworICAgICAgc3RhdHVzID0gRkxBU0hfV2FpdEZvckxhc3RCYW5rMk9wZXJhdGlvbihQcm9ncmFtVGltZW91dCk7CisKKyAgICAgIC8qIERpc2FibGUgdGhlIFBHIEJpdCAqLworICAgICAgRkxBU0gtPkNSMiAmPSBDUl9QR19SZXNldDsKKyAgICB9CisgIH0KKyNlbHNlCisgIC8qIFdhaXQgZm9yIGxhc3Qgb3BlcmF0aW9uIHRvIGJlIGNvbXBsZXRlZCAqLworICBzdGF0dXMgPSBGTEFTSF9XYWl0Rm9yTGFzdE9wZXJhdGlvbihQcm9ncmFtVGltZW91dCk7CisgIAorICBpZihzdGF0dXMgPT0gRkxBU0hfQ09NUExFVEUpCisgIHsKKyAgICAvKiBpZiB0aGUgcHJldmlvdXMgb3BlcmF0aW9uIGlzIGNvbXBsZXRlZCwgcHJvY2VlZCB0byBwcm9ncmFtIHRoZSBuZXcgZGF0YSAqLworICAgIEZMQVNILT5DUiB8PSBDUl9QR19TZXQ7CisgIAorICAgICooX19JTyB1aW50MTZfdCopQWRkcmVzcyA9IERhdGE7CisgICAgLyogV2FpdCBmb3IgbGFzdCBvcGVyYXRpb24gdG8gYmUgY29tcGxldGVkICovCisgICAgc3RhdHVzID0gRkxBU0hfV2FpdEZvckxhc3RPcGVyYXRpb24oUHJvZ3JhbVRpbWVvdXQpOworICAgIAorICAgIC8qIERpc2FibGUgdGhlIFBHIEJpdCAqLworICAgIEZMQVNILT5DUiAmPSBDUl9QR19SZXNldDsKKyAgfSAKKyNlbmRpZiAgLyogU1RNMzJGMTBYX1hMICovCisgIAorICAvKiBSZXR1cm4gdGhlIFByb2dyYW0gU3RhdHVzICovCisgIHJldHVybiBzdGF0dXM7Cit9CisKKy8qKgorICAqIEBicmllZiAgUHJvZ3JhbXMgYSBoYWxmIHdvcmQgYXQgYSBzcGVjaWZpZWQgT3B0aW9uIEJ5dGUgRGF0YSBhZGRyZXNzLgorICAqIEBub3RlICAgVGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZCBmb3IgYWxsIFNUTTMyRjEweCBkZXZpY2VzLgorICAqIEBwYXJhbSAgQWRkcmVzczogc3BlY2lmaWVzIHRoZSBhZGRyZXNzIHRvIGJlIHByb2dyYW1tZWQuCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgMHgxRkZGRjgwNCBvciAweDFGRkZGODA2LiAKKyAgKiBAcGFyYW0gIERhdGE6IHNwZWNpZmllcyB0aGUgZGF0YSB0byBiZSBwcm9ncmFtbWVkLgorICAqIEByZXR2YWwgRkxBU0ggU3RhdHVzOiBUaGUgcmV0dXJuZWQgdmFsdWUgY2FuIGJlOiBGTEFTSF9FUlJPUl9QRywKKyAgKiAgICAgICAgIEZMQVNIX0VSUk9SX1dSUCwgRkxBU0hfQ09NUExFVEUgb3IgRkxBU0hfVElNRU9VVC4gCisgICovCitGTEFTSF9TdGF0dXMgRkxBU0hfUHJvZ3JhbU9wdGlvbkJ5dGVEYXRhKHVpbnQzMl90IEFkZHJlc3MsIHVpbnQ4X3QgRGF0YSkKK3sKKyAgRkxBU0hfU3RhdHVzIHN0YXR1cyA9IEZMQVNIX0NPTVBMRVRFOworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfT0JfREFUQV9BRERSRVNTKEFkZHJlc3MpKTsKKyAgc3RhdHVzID0gRkxBU0hfV2FpdEZvckxhc3RPcGVyYXRpb24oUHJvZ3JhbVRpbWVvdXQpOworCisgIGlmKHN0YXR1cyA9PSBGTEFTSF9DT01QTEVURSkKKyAgeworICAgIC8qIEF1dGhvcml6ZSB0aGUgc21hbGwgaW5mb3JtYXRpb24gYmxvY2sgcHJvZ3JhbW1pbmcgKi8KKyAgICBGTEFTSC0+T1BUS0VZUiA9IEZMQVNIX0tFWTE7CisgICAgRkxBU0gtPk9QVEtFWVIgPSBGTEFTSF9LRVkyOworICAgIC8qIEVuYWJsZXMgdGhlIE9wdGlvbiBCeXRlcyBQcm9ncmFtbWluZyBvcGVyYXRpb24gKi8KKyAgICBGTEFTSC0+Q1IgfD0gQ1JfT1BUUEdfU2V0OyAKKyAgICAqKF9fSU8gdWludDE2X3QqKUFkZHJlc3MgPSBEYXRhOworICAgIAorICAgIC8qIFdhaXQgZm9yIGxhc3Qgb3BlcmF0aW9uIHRvIGJlIGNvbXBsZXRlZCAqLworICAgIHN0YXR1cyA9IEZMQVNIX1dhaXRGb3JMYXN0T3BlcmF0aW9uKFByb2dyYW1UaW1lb3V0KTsKKyAgICBpZihzdGF0dXMgIT0gRkxBU0hfVElNRU9VVCkKKyAgICB7CisgICAgICAvKiBpZiB0aGUgcHJvZ3JhbSBvcGVyYXRpb24gaXMgY29tcGxldGVkLCBkaXNhYmxlIHRoZSBPUFRQRyBCaXQgKi8KKyAgICAgIEZMQVNILT5DUiAmPSBDUl9PUFRQR19SZXNldDsKKyAgICB9CisgIH0KKyAgLyogUmV0dXJuIHRoZSBPcHRpb24gQnl0ZSBEYXRhIFByb2dyYW0gU3RhdHVzICovCisgIHJldHVybiBzdGF0dXM7Cit9CisKKy8qKgorICAqIEBicmllZiAgV3JpdGUgcHJvdGVjdHMgdGhlIGRlc2lyZWQgcGFnZXMKKyAgKiBAbm90ZSAgIFRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWQgZm9yIGFsbCBTVE0zMkYxMHggZGV2aWNlcy4KKyAgKiBAcGFyYW0gIEZMQVNIX1BhZ2VzOiBzcGVjaWZpZXMgdGhlIGFkZHJlc3Mgb2YgdGhlIHBhZ2VzIHRvIGJlIHdyaXRlIHByb3RlY3RlZC4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZToKKyAgKiAgICAgQGFyZyBGb3IgQGIgU1RNMzJfTG93LWRlbnNpdHlfZGV2aWNlczogdmFsdWUgYmV0d2VlbiBGTEFTSF9XUlByb3RfUGFnZXMwdG8zIGFuZCBGTEFTSF9XUlByb3RfUGFnZXMyOHRvMzEgIAorICAqICAgICBAYXJnIEZvciBAYiBTVE0zMl9NZWRpdW0tZGVuc2l0eV9kZXZpY2VzOiB2YWx1ZSBiZXR3ZWVuIEZMQVNIX1dSUHJvdF9QYWdlczB0bzMKKyAgKiAgICAgICBhbmQgRkxBU0hfV1JQcm90X1BhZ2VzMTI0dG8xMjcKKyAgKiAgICAgQGFyZyBGb3IgQGIgU1RNMzJfSGlnaC1kZW5zaXR5X2RldmljZXM6IHZhbHVlIGJldHdlZW4gRkxBU0hfV1JQcm90X1BhZ2VzMHRvMSBhbmQKKyAgKiAgICAgICBGTEFTSF9XUlByb3RfUGFnZXM2MHRvNjEgb3IgRkxBU0hfV1JQcm90X1BhZ2VzNjJ0bzI1NQorICAqICAgICBAYXJnIEZvciBAYiBTVE0zMl9Db25uZWN0aXZpdHlfbGluZV9kZXZpY2VzOiB2YWx1ZSBiZXR3ZWVuIEZMQVNIX1dSUHJvdF9QYWdlczB0bzEgYW5kCisgICogICAgICAgRkxBU0hfV1JQcm90X1BhZ2VzNjB0bzYxIG9yIEZMQVNIX1dSUHJvdF9QYWdlczYydG8xMjcgICAgCisgICogICAgIEBhcmcgRm9yIEBiIFNUTTMyX1hMLWRlbnNpdHlfZGV2aWNlczogdmFsdWUgYmV0d2VlbiBGTEFTSF9XUlByb3RfUGFnZXMwdG8xIGFuZAorICAqICAgICAgIEZMQVNIX1dSUHJvdF9QYWdlczYwdG82MSBvciBGTEFTSF9XUlByb3RfUGFnZXM2MnRvNTExCisgICogICAgIEBhcmcgRkxBU0hfV1JQcm90X0FsbFBhZ2VzCisgICogQHJldHZhbCBGTEFTSCBTdGF0dXM6IFRoZSByZXR1cm5lZCB2YWx1ZSBjYW4gYmU6IEZMQVNIX0VSUk9SX1BHLAorICAqICAgICAgICAgRkxBU0hfRVJST1JfV1JQLCBGTEFTSF9DT01QTEVURSBvciBGTEFTSF9USU1FT1VULgorICAqLworRkxBU0hfU3RhdHVzIEZMQVNIX0VuYWJsZVdyaXRlUHJvdGVjdGlvbih1aW50MzJfdCBGTEFTSF9QYWdlcykKK3sKKyAgdWludDE2X3QgV1JQMF9EYXRhID0gMHhGRkZGLCBXUlAxX0RhdGEgPSAweEZGRkYsIFdSUDJfRGF0YSA9IDB4RkZGRiwgV1JQM19EYXRhID0gMHhGRkZGOworICAKKyAgRkxBU0hfU3RhdHVzIHN0YXR1cyA9IEZMQVNIX0NPTVBMRVRFOworICAKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX0ZMQVNIX1dSUFJPVF9QQUdFKEZMQVNIX1BhZ2VzKSk7CisgIAorICBGTEFTSF9QYWdlcyA9ICh1aW50MzJfdCkofkZMQVNIX1BhZ2VzKTsKKyAgV1JQMF9EYXRhID0gKHVpbnQxNl90KShGTEFTSF9QYWdlcyAmIFdSUDBfTWFzayk7CisgIFdSUDFfRGF0YSA9ICh1aW50MTZfdCkoKEZMQVNIX1BhZ2VzICYgV1JQMV9NYXNrKSA+PiA4KTsKKyAgV1JQMl9EYXRhID0gKHVpbnQxNl90KSgoRkxBU0hfUGFnZXMgJiBXUlAyX01hc2spID4+IDE2KTsKKyAgV1JQM19EYXRhID0gKHVpbnQxNl90KSgoRkxBU0hfUGFnZXMgJiBXUlAzX01hc2spID4+IDI0KTsKKyAgCisgIC8qIFdhaXQgZm9yIGxhc3Qgb3BlcmF0aW9uIHRvIGJlIGNvbXBsZXRlZCAqLworICBzdGF0dXMgPSBGTEFTSF9XYWl0Rm9yTGFzdE9wZXJhdGlvbihQcm9ncmFtVGltZW91dCk7CisgIAorICBpZihzdGF0dXMgPT0gRkxBU0hfQ09NUExFVEUpCisgIHsKKyAgICAvKiBBdXRob3JpemVzIHRoZSBzbWFsbCBpbmZvcm1hdGlvbiBibG9jayBwcm9ncmFtbWluZyAqLworICAgIEZMQVNILT5PUFRLRVlSID0gRkxBU0hfS0VZMTsKKyAgICBGTEFTSC0+T1BUS0VZUiA9IEZMQVNIX0tFWTI7CisgICAgRkxBU0gtPkNSIHw9IENSX09QVFBHX1NldDsKKyAgICBpZihXUlAwX0RhdGEgIT0gMHhGRikKKyAgICB7CisgICAgICBPQi0+V1JQMCA9IFdSUDBfRGF0YTsKKyAgICAgIAorICAgICAgLyogV2FpdCBmb3IgbGFzdCBvcGVyYXRpb24gdG8gYmUgY29tcGxldGVkICovCisgICAgICBzdGF0dXMgPSBGTEFTSF9XYWl0Rm9yTGFzdE9wZXJhdGlvbihQcm9ncmFtVGltZW91dCk7CisgICAgfQorICAgIGlmKChzdGF0dXMgPT0gRkxBU0hfQ09NUExFVEUpICYmIChXUlAxX0RhdGEgIT0gMHhGRikpCisgICAgeworICAgICAgT0ItPldSUDEgPSBXUlAxX0RhdGE7CisgICAgICAKKyAgICAgIC8qIFdhaXQgZm9yIGxhc3Qgb3BlcmF0aW9uIHRvIGJlIGNvbXBsZXRlZCAqLworICAgICAgc3RhdHVzID0gRkxBU0hfV2FpdEZvckxhc3RPcGVyYXRpb24oUHJvZ3JhbVRpbWVvdXQpOworICAgIH0KKyAgICBpZigoc3RhdHVzID09IEZMQVNIX0NPTVBMRVRFKSAmJiAoV1JQMl9EYXRhICE9IDB4RkYpKQorICAgIHsKKyAgICAgIE9CLT5XUlAyID0gV1JQMl9EYXRhOworICAgICAgCisgICAgICAvKiBXYWl0IGZvciBsYXN0IG9wZXJhdGlvbiB0byBiZSBjb21wbGV0ZWQgKi8KKyAgICAgIHN0YXR1cyA9IEZMQVNIX1dhaXRGb3JMYXN0T3BlcmF0aW9uKFByb2dyYW1UaW1lb3V0KTsKKyAgICB9CisgICAgCisgICAgaWYoKHN0YXR1cyA9PSBGTEFTSF9DT01QTEVURSkmJiAoV1JQM19EYXRhICE9IDB4RkYpKQorICAgIHsKKyAgICAgIE9CLT5XUlAzID0gV1JQM19EYXRhOworICAgICAKKyAgICAgIC8qIFdhaXQgZm9yIGxhc3Qgb3BlcmF0aW9uIHRvIGJlIGNvbXBsZXRlZCAqLworICAgICAgc3RhdHVzID0gRkxBU0hfV2FpdEZvckxhc3RPcGVyYXRpb24oUHJvZ3JhbVRpbWVvdXQpOworICAgIH0KKyAgICAgICAgICAKKyAgICBpZihzdGF0dXMgIT0gRkxBU0hfVElNRU9VVCkKKyAgICB7CisgICAgICAvKiBpZiB0aGUgcHJvZ3JhbSBvcGVyYXRpb24gaXMgY29tcGxldGVkLCBkaXNhYmxlIHRoZSBPUFRQRyBCaXQgKi8KKyAgICAgIEZMQVNILT5DUiAmPSBDUl9PUFRQR19SZXNldDsKKyAgICB9CisgIH0gCisgIC8qIFJldHVybiB0aGUgd3JpdGUgcHJvdGVjdGlvbiBvcGVyYXRpb24gU3RhdHVzICovCisgIHJldHVybiBzdGF0dXM7ICAgICAgIAorfQorCisvKioKKyAgKiBAYnJpZWYgIEVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIHJlYWQgb3V0IHByb3RlY3Rpb24uCisgICogQG5vdGUgICBJZiB0aGUgdXNlciBoYXMgYWxyZWFkeSBwcm9ncmFtbWVkIHRoZSBvdGhlciBvcHRpb24gYnl0ZXMgYmVmb3JlIGNhbGxpbmcgCisgICogICB0aGlzIGZ1bmN0aW9uLCBoZSBtdXN0IHJlLXByb2dyYW0gdGhlbSBzaW5jZSB0aGlzIGZ1bmN0aW9uIGVyYXNlcyBhbGwgb3B0aW9uIGJ5dGVzLgorICAqIEBub3RlICAgVGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZCBmb3IgYWxsIFNUTTMyRjEweCBkZXZpY2VzLgorICAqIEBwYXJhbSAgTmV3c3RhdGU6IG5ldyBzdGF0ZSBvZiB0aGUgUmVhZE91dCBQcm90ZWN0aW9uLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlOiBFTkFCTEUgb3IgRElTQUJMRS4KKyAgKiBAcmV0dmFsIEZMQVNIIFN0YXR1czogVGhlIHJldHVybmVkIHZhbHVlIGNhbiBiZTogRkxBU0hfRVJST1JfUEcsCisgICogICAgICAgICBGTEFTSF9FUlJPUl9XUlAsIEZMQVNIX0NPTVBMRVRFIG9yIEZMQVNIX1RJTUVPVVQuCisgICovCitGTEFTSF9TdGF0dXMgRkxBU0hfUmVhZE91dFByb3RlY3Rpb24oRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKQoreworICBGTEFTSF9TdGF0dXMgc3RhdHVzID0gRkxBU0hfQ09NUExFVEU7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19GVU5DVElPTkFMX1NUQVRFKE5ld1N0YXRlKSk7CisgIHN0YXR1cyA9IEZMQVNIX1dhaXRGb3JMYXN0T3BlcmF0aW9uKEVyYXNlVGltZW91dCk7CisgIGlmKHN0YXR1cyA9PSBGTEFTSF9DT01QTEVURSkKKyAgeworICAgIC8qIEF1dGhvcml6ZXMgdGhlIHNtYWxsIGluZm9ybWF0aW9uIGJsb2NrIHByb2dyYW1taW5nICovCisgICAgRkxBU0gtPk9QVEtFWVIgPSBGTEFTSF9LRVkxOworICAgIEZMQVNILT5PUFRLRVlSID0gRkxBU0hfS0VZMjsKKyAgICBGTEFTSC0+Q1IgfD0gQ1JfT1BURVJfU2V0OworICAgIEZMQVNILT5DUiB8PSBDUl9TVFJUX1NldDsKKyAgICAvKiBXYWl0IGZvciBsYXN0IG9wZXJhdGlvbiB0byBiZSBjb21wbGV0ZWQgKi8KKyAgICBzdGF0dXMgPSBGTEFTSF9XYWl0Rm9yTGFzdE9wZXJhdGlvbihFcmFzZVRpbWVvdXQpOworICAgIGlmKHN0YXR1cyA9PSBGTEFTSF9DT01QTEVURSkKKyAgICB7CisgICAgICAvKiBpZiB0aGUgZXJhc2Ugb3BlcmF0aW9uIGlzIGNvbXBsZXRlZCwgZGlzYWJsZSB0aGUgT1BURVIgQml0ICovCisgICAgICBGTEFTSC0+Q1IgJj0gQ1JfT1BURVJfUmVzZXQ7CisgICAgICAvKiBFbmFibGUgdGhlIE9wdGlvbiBCeXRlcyBQcm9ncmFtbWluZyBvcGVyYXRpb24gKi8KKyAgICAgIEZMQVNILT5DUiB8PSBDUl9PUFRQR19TZXQ7IAorICAgICAgaWYoTmV3U3RhdGUgIT0gRElTQUJMRSkKKyAgICAgIHsKKyAgICAgICAgT0ItPlJEUCA9IDB4MDA7CisgICAgICB9CisgICAgICBlbHNlCisgICAgICB7CisgICAgICAgIE9CLT5SRFAgPSBSRFBfS2V5OyAgCisgICAgICB9CisgICAgICAvKiBXYWl0IGZvciBsYXN0IG9wZXJhdGlvbiB0byBiZSBjb21wbGV0ZWQgKi8KKyAgICAgIHN0YXR1cyA9IEZMQVNIX1dhaXRGb3JMYXN0T3BlcmF0aW9uKEVyYXNlVGltZW91dCk7IAorICAgIAorICAgICAgaWYoc3RhdHVzICE9IEZMQVNIX1RJTUVPVVQpCisgICAgICB7CisgICAgICAgIC8qIGlmIHRoZSBwcm9ncmFtIG9wZXJhdGlvbiBpcyBjb21wbGV0ZWQsIGRpc2FibGUgdGhlIE9QVFBHIEJpdCAqLworICAgICAgICBGTEFTSC0+Q1IgJj0gQ1JfT1BUUEdfUmVzZXQ7CisgICAgICB9CisgICAgfQorICAgIGVsc2UgCisgICAgeworICAgICAgaWYoc3RhdHVzICE9IEZMQVNIX1RJTUVPVVQpCisgICAgICB7CisgICAgICAgIC8qIERpc2FibGUgdGhlIE9QVEVSIEJpdCAqLworICAgICAgICBGTEFTSC0+Q1IgJj0gQ1JfT1BURVJfUmVzZXQ7CisgICAgICB9CisgICAgfQorICB9CisgIC8qIFJldHVybiB0aGUgcHJvdGVjdGlvbiBvcGVyYXRpb24gU3RhdHVzICovCisgIHJldHVybiBzdGF0dXM7ICAgICAgIAorfQorCisvKioKKyAgKiBAYnJpZWYgIFByb2dyYW1zIHRoZSBGTEFTSCBVc2VyIE9wdGlvbiBCeXRlOiBJV0RHX1NXIC8gUlNUX1NUT1AgLyBSU1RfU1REQlkuCisgICogQG5vdGUgICBUaGlzIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIGZvciBhbGwgU1RNMzJGMTB4IGRldmljZXMuCisgICogQHBhcmFtICBPQl9JV0RHOiBTZWxlY3RzIHRoZSBJV0RHIG1vZGUKKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICAgIEBhcmcgT0JfSVdER19TVzogU29mdHdhcmUgSVdERyBzZWxlY3RlZAorICAqICAgICBAYXJnIE9CX0lXREdfSFc6IEhhcmR3YXJlIElXREcgc2VsZWN0ZWQKKyAgKiBAcGFyYW0gIE9CX1NUT1A6IFJlc2V0IGV2ZW50IHdoZW4gZW50ZXJpbmcgU1RPUCBtb2RlLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBPQl9TVE9QX05vUlNUOiBObyByZXNldCBnZW5lcmF0ZWQgd2hlbiBlbnRlcmluZyBpbiBTVE9QCisgICogICAgIEBhcmcgT0JfU1RPUF9SU1Q6IFJlc2V0IGdlbmVyYXRlZCB3aGVuIGVudGVyaW5nIGluIFNUT1AKKyAgKiBAcGFyYW0gIE9CX1NUREJZOiBSZXNldCBldmVudCB3aGVuIGVudGVyaW5nIFN0YW5kYnkgbW9kZS4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICAgIEBhcmcgT0JfU1REQllfTm9SU1Q6IE5vIHJlc2V0IGdlbmVyYXRlZCB3aGVuIGVudGVyaW5nIGluIFNUQU5EQlkKKyAgKiAgICAgQGFyZyBPQl9TVERCWV9SU1Q6IFJlc2V0IGdlbmVyYXRlZCB3aGVuIGVudGVyaW5nIGluIFNUQU5EQlkKKyAgKiBAcmV0dmFsIEZMQVNIIFN0YXR1czogVGhlIHJldHVybmVkIHZhbHVlIGNhbiBiZTogRkxBU0hfRVJST1JfUEcsIAorICAqICAgICAgICAgRkxBU0hfRVJST1JfV1JQLCBGTEFTSF9DT01QTEVURSBvciBGTEFTSF9USU1FT1VULgorICAqLworRkxBU0hfU3RhdHVzIEZMQVNIX1VzZXJPcHRpb25CeXRlQ29uZmlnKHVpbnQxNl90IE9CX0lXREcsIHVpbnQxNl90IE9CX1NUT1AsIHVpbnQxNl90IE9CX1NUREJZKQoreworICBGTEFTSF9TdGF0dXMgc3RhdHVzID0gRkxBU0hfQ09NUExFVEU7IAorCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19PQl9JV0RHX1NPVVJDRShPQl9JV0RHKSk7CisgIGFzc2VydF9wYXJhbShJU19PQl9TVE9QX1NPVVJDRShPQl9TVE9QKSk7CisgIGFzc2VydF9wYXJhbShJU19PQl9TVERCWV9TT1VSQ0UoT0JfU1REQlkpKTsKKworICAvKiBBdXRob3JpemUgdGhlIHNtYWxsIGluZm9ybWF0aW9uIGJsb2NrIHByb2dyYW1taW5nICovCisgIEZMQVNILT5PUFRLRVlSID0gRkxBU0hfS0VZMTsKKyAgRkxBU0gtPk9QVEtFWVIgPSBGTEFTSF9LRVkyOworICAKKyAgLyogV2FpdCBmb3IgbGFzdCBvcGVyYXRpb24gdG8gYmUgY29tcGxldGVkICovCisgIHN0YXR1cyA9IEZMQVNIX1dhaXRGb3JMYXN0T3BlcmF0aW9uKFByb2dyYW1UaW1lb3V0KTsKKyAgCisgIGlmKHN0YXR1cyA9PSBGTEFTSF9DT01QTEVURSkKKyAgeyAgCisgICAgLyogRW5hYmxlIHRoZSBPcHRpb24gQnl0ZXMgUHJvZ3JhbW1pbmcgb3BlcmF0aW9uICovCisgICAgRkxBU0gtPkNSIHw9IENSX09QVFBHX1NldDsgCisgICAgICAgICAgIAorICAgIE9CLT5VU0VSID0gT0JfSVdERyB8ICh1aW50MTZfdCkoT0JfU1RPUCB8ICh1aW50MTZfdCkoT0JfU1REQlkgfCAoKHVpbnQxNl90KTB4RjgpKSk7IAorICAKKyAgICAvKiBXYWl0IGZvciBsYXN0IG9wZXJhdGlvbiB0byBiZSBjb21wbGV0ZWQgKi8KKyAgICBzdGF0dXMgPSBGTEFTSF9XYWl0Rm9yTGFzdE9wZXJhdGlvbihQcm9ncmFtVGltZW91dCk7CisgICAgaWYoc3RhdHVzICE9IEZMQVNIX1RJTUVPVVQpCisgICAgeworICAgICAgLyogaWYgdGhlIHByb2dyYW0gb3BlcmF0aW9uIGlzIGNvbXBsZXRlZCwgZGlzYWJsZSB0aGUgT1BUUEcgQml0ICovCisgICAgICBGTEFTSC0+Q1IgJj0gQ1JfT1BUUEdfUmVzZXQ7CisgICAgfQorICB9ICAgIAorICAvKiBSZXR1cm4gdGhlIE9wdGlvbiBCeXRlIHByb2dyYW0gU3RhdHVzICovCisgIHJldHVybiBzdGF0dXM7Cit9CisKKyNpZmRlZiBTVE0zMkYxMFhfWEwKKy8qKgorICAqIEBicmllZiAgQ29uZmlndXJlcyB0byBib290IGZyb20gQmFuazEgb3IgQmFuazIuICAKKyAgKiBAbm90ZSAgIFRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWQgb25seSBmb3IgU1RNMzJGMTB4X1hMIGRlbnNpdHkgZGV2aWNlcy4KKyAgKiBAcGFyYW0gIEZMQVNIX0JPT1Q6IHNlbGVjdCB0aGUgRkxBU0ggQmFuayB0byBib290IGZyb20uCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIEZMQVNIX0JPT1RfQmFuazE6IEF0IHN0YXJ0dXAsIGlmIGJvb3QgcGlucyBhcmUgc2V0IGluIGJvb3QgZnJvbSB1c2VyIEZsYXNoCisgICogICAgICAgIHBvc2l0aW9uIGFuZCB0aGlzIHBhcmFtZXRlciBpcyBzZWxlY3RlZCB0aGUgZGV2aWNlIHdpbGwgYm9vdCBmcm9tIEJhbmsxKERlZmF1bHQpLgorICAqICAgICBAYXJnIEZMQVNIX0JPT1RfQmFuazI6IEF0IHN0YXJ0dXAsIGlmIGJvb3QgcGlucyBhcmUgc2V0IGluIGJvb3QgZnJvbSB1c2VyIEZsYXNoCisgICogICAgICAgIHBvc2l0aW9uIGFuZCB0aGlzIHBhcmFtZXRlciBpcyBzZWxlY3RlZCB0aGUgZGV2aWNlIHdpbGwgYm9vdCBmcm9tIEJhbmsyIG9yIEJhbmsxLAorICAqICAgICAgICBkZXBlbmRpbmcgb24gdGhlIGFjdGl2YXRpb24gb2YgdGhlIGJhbmsuIFRoZSBhY3RpdmUgYmFua3MgYXJlIGNoZWNrZWQgaW4KKyAgKiAgICAgICAgdGhlIGZvbGxvd2luZyBvcmRlcjogQmFuazIsIGZvbGxvd2VkIGJ5IEJhbmsxLgorICAqICAgICAgICBUaGUgYWN0aXZlIGJhbmsgaXMgcmVjb2duaXplZCBieSB0aGUgdmFsdWUgcHJvZ3JhbW1lZCBhdCB0aGUgYmFzZSBhZGRyZXNzCisgICogICAgICAgIG9mIHRoZSByZXNwZWN0aXZlIGJhbmsgKGNvcnJlc3BvbmRpbmcgdG8gdGhlIGluaXRpYWwgc3RhY2sgcG9pbnRlciB2YWx1ZQorICAqICAgICAgICBpbiB0aGUgaW50ZXJydXB0IHZlY3RvciB0YWJsZSkuCisgICogICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBwbGVhc2UgcmVmZXIgdG8gQU4yNjA2IGZyb20gd3d3LnN0LmNvbS4gICAgCisgICogQHJldHZhbCBGTEFTSCBTdGF0dXM6IFRoZSByZXR1cm5lZCB2YWx1ZSBjYW4gYmU6IEZMQVNIX0VSUk9SX1BHLCAKKyAgKiAgICAgICAgIEZMQVNIX0VSUk9SX1dSUCwgRkxBU0hfQ09NUExFVEUgb3IgRkxBU0hfVElNRU9VVC4KKyAgKi8KK0ZMQVNIX1N0YXR1cyBGTEFTSF9Cb290Q29uZmlnKHVpbnQxNl90IEZMQVNIX0JPT1QpCit7IAorICBGTEFTSF9TdGF0dXMgc3RhdHVzID0gRkxBU0hfQ09NUExFVEU7IAorICBhc3NlcnRfcGFyYW0oSVNfRkxBU0hfQk9PVChGTEFTSF9CT09UKSk7CisgIC8qIEF1dGhvcml6ZSB0aGUgc21hbGwgaW5mb3JtYXRpb24gYmxvY2sgcHJvZ3JhbW1pbmcgKi8KKyAgRkxBU0gtPk9QVEtFWVIgPSBGTEFTSF9LRVkxOworICBGTEFTSC0+T1BUS0VZUiA9IEZMQVNIX0tFWTI7CisgIAorICAvKiBXYWl0IGZvciBsYXN0IG9wZXJhdGlvbiB0byBiZSBjb21wbGV0ZWQgKi8KKyAgc3RhdHVzID0gRkxBU0hfV2FpdEZvckxhc3RPcGVyYXRpb24oUHJvZ3JhbVRpbWVvdXQpOworICAKKyAgaWYoc3RhdHVzID09IEZMQVNIX0NPTVBMRVRFKQorICB7ICAKKyAgICAvKiBFbmFibGUgdGhlIE9wdGlvbiBCeXRlcyBQcm9ncmFtbWluZyBvcGVyYXRpb24gKi8KKyAgICBGTEFTSC0+Q1IgfD0gQ1JfT1BUUEdfU2V0OyAKKworICAgIGlmKEZMQVNIX0JPT1QgPT0gRkxBU0hfQk9PVF9CYW5rMSkKKyAgICB7CisgICAgICBPQi0+VVNFUiB8PSBPQl9VU0VSX0JGQjI7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICBPQi0+VVNFUiAmPSAodWludDE2X3QpKH4odWludDE2X3QpKE9CX1VTRVJfQkZCMikpOworICAgIH0KKyAgICAvKiBXYWl0IGZvciBsYXN0IG9wZXJhdGlvbiB0byBiZSBjb21wbGV0ZWQgKi8KKyAgICBzdGF0dXMgPSBGTEFTSF9XYWl0Rm9yTGFzdE9wZXJhdGlvbihQcm9ncmFtVGltZW91dCk7CisgICAgaWYoc3RhdHVzICE9IEZMQVNIX1RJTUVPVVQpCisgICAgeworICAgICAgLyogaWYgdGhlIHByb2dyYW0gb3BlcmF0aW9uIGlzIGNvbXBsZXRlZCwgZGlzYWJsZSB0aGUgT1BUUEcgQml0ICovCisgICAgICBGTEFTSC0+Q1IgJj0gQ1JfT1BUUEdfUmVzZXQ7CisgICAgfQorICB9ICAgIAorICAvKiBSZXR1cm4gdGhlIE9wdGlvbiBCeXRlIHByb2dyYW0gU3RhdHVzICovCisgIHJldHVybiBzdGF0dXM7Cit9CisjZW5kaWYgLyogU1RNMzJGMTBYX1hMICovCisKKy8qKgorICAqIEBicmllZiAgUmV0dXJucyB0aGUgRkxBU0ggVXNlciBPcHRpb24gQnl0ZXMgdmFsdWVzLgorICAqIEBub3RlICAgVGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZCBmb3IgYWxsIFNUTTMyRjEweCBkZXZpY2VzLgorICAqIEBwYXJhbSAgTm9uZQorICAqIEByZXR2YWwgVGhlIEZMQVNIIFVzZXIgT3B0aW9uIEJ5dGVzIHZhbHVlczpJV0RHX1NXKEJpdDApLCBSU1RfU1RPUChCaXQxKQorICAqICAgICAgICAgYW5kIFJTVF9TVERCWShCaXQyKS4KKyAgKi8KK3VpbnQzMl90IEZMQVNIX0dldFVzZXJPcHRpb25CeXRlKHZvaWQpCit7CisgIC8qIFJldHVybiB0aGUgVXNlciBPcHRpb24gQnl0ZSAqLworICByZXR1cm4gKHVpbnQzMl90KShGTEFTSC0+T0JSID4+IDIpOworfQorCisvKioKKyAgKiBAYnJpZWYgIFJldHVybnMgdGhlIEZMQVNIIFdyaXRlIFByb3RlY3Rpb24gT3B0aW9uIEJ5dGVzIFJlZ2lzdGVyIHZhbHVlLgorICAqIEBub3RlICAgVGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZCBmb3IgYWxsIFNUTTMyRjEweCBkZXZpY2VzLgorICAqIEBwYXJhbSAgTm9uZQorICAqIEByZXR2YWwgVGhlIEZMQVNIIFdyaXRlIFByb3RlY3Rpb24gIE9wdGlvbiBCeXRlcyBSZWdpc3RlciB2YWx1ZQorICAqLwordWludDMyX3QgRkxBU0hfR2V0V3JpdGVQcm90ZWN0aW9uT3B0aW9uQnl0ZSh2b2lkKQoreworICAvKiBSZXR1cm4gdGhlIEZsYXNoIHdyaXRlIHByb3RlY3Rpb24gUmVnaXN0ZXIgdmFsdWUgKi8KKyAgcmV0dXJuICh1aW50MzJfdCkoRkxBU0gtPldSUFIpOworfQorCisvKioKKyAgKiBAYnJpZWYgIENoZWNrcyB3aGV0aGVyIHRoZSBGTEFTSCBSZWFkIE91dCBQcm90ZWN0aW9uIFN0YXR1cyBpcyBzZXQgb3Igbm90LgorICAqIEBub3RlICAgVGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZCBmb3IgYWxsIFNUTTMyRjEweCBkZXZpY2VzLgorICAqIEBwYXJhbSAgTm9uZQorICAqIEByZXR2YWwgRkxBU0ggUmVhZE91dCBQcm90ZWN0aW9uIFN0YXR1cyhTRVQgb3IgUkVTRVQpCisgICovCitGbGFnU3RhdHVzIEZMQVNIX0dldFJlYWRPdXRQcm90ZWN0aW9uU3RhdHVzKHZvaWQpCit7CisgIEZsYWdTdGF0dXMgcmVhZG91dHN0YXR1cyA9IFJFU0VUOworICBpZiAoKEZMQVNILT5PQlIgJiBSRFBSVF9NYXNrKSAhPSAodWludDMyX3QpUkVTRVQpCisgIHsKKyAgICByZWFkb3V0c3RhdHVzID0gU0VUOworICB9CisgIGVsc2UKKyAgeworICAgIHJlYWRvdXRzdGF0dXMgPSBSRVNFVDsKKyAgfQorICByZXR1cm4gcmVhZG91dHN0YXR1czsKK30KKworLyoqCisgICogQGJyaWVmICBDaGVja3Mgd2hldGhlciB0aGUgRkxBU0ggUHJlZmV0Y2ggQnVmZmVyIHN0YXR1cyBpcyBzZXQgb3Igbm90LgorICAqIEBub3RlICAgVGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZCBmb3IgYWxsIFNUTTMyRjEweCBkZXZpY2VzLgorICAqIEBwYXJhbSAgTm9uZQorICAqIEByZXR2YWwgRkxBU0ggUHJlZmV0Y2ggQnVmZmVyIFN0YXR1cyAoU0VUIG9yIFJFU0VUKS4KKyAgKi8KK0ZsYWdTdGF0dXMgRkxBU0hfR2V0UHJlZmV0Y2hCdWZmZXJTdGF0dXModm9pZCkKK3sKKyAgRmxhZ1N0YXR1cyBiaXRzdGF0dXMgPSBSRVNFVDsKKyAgCisgIGlmICgoRkxBU0gtPkFDUiAmIEFDUl9QUkZUQlNfTWFzaykgIT0gKHVpbnQzMl90KVJFU0VUKQorICB7CisgICAgYml0c3RhdHVzID0gU0VUOworICB9CisgIGVsc2UKKyAgeworICAgIGJpdHN0YXR1cyA9IFJFU0VUOworICB9CisgIC8qIFJldHVybiB0aGUgbmV3IHN0YXRlIG9mIEZMQVNIIFByZWZldGNoIEJ1ZmZlciBTdGF0dXMgKFNFVCBvciBSRVNFVCkgKi8KKyAgcmV0dXJuIGJpdHN0YXR1czsgCit9CisKKy8qKgorICAqIEBicmllZiAgRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgc3BlY2lmaWVkIEZMQVNIIGludGVycnVwdHMuCisgICogQG5vdGUgICBUaGlzIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIGZvciBhbGwgU1RNMzJGMTB4IGRldmljZXMuCisgICogICAgICAgICAtIEZvciBTVE0zMkYxMFhfWEwgZGV2aWNlcywgZW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgc3BlY2lmaWVkIEZMQVNIIGludGVycnVwdHMKKyAgICAgICAgICAgICAgZm9yIEJhbmsxIGFuZCBCYW5rMi4KKyAgKiAgICAgICAgIC0gRm9yIG90aGVyIGRldmljZXMgaXQgZW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgc3BlY2lmaWVkIEZMQVNIIGludGVycnVwdHMgZm9yIEJhbmsxLgorICAqIEBwYXJhbSAgRkxBU0hfSVQ6IHNwZWNpZmllcyB0aGUgRkxBU0ggaW50ZXJydXB0IHNvdXJjZXMgdG8gYmUgZW5hYmxlZCBvciBkaXNhYmxlZC4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhbnkgY29tYmluYXRpb24gb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICAgIEBhcmcgRkxBU0hfSVRfRVJST1I6IEZMQVNIIEVycm9yIEludGVycnVwdAorICAqICAgICBAYXJnIEZMQVNIX0lUX0VPUDogRkxBU0ggZW5kIG9mIG9wZXJhdGlvbiBJbnRlcnJ1cHQKKyAgKiBAcGFyYW0gIE5ld1N0YXRlOiBuZXcgc3RhdGUgb2YgdGhlIHNwZWNpZmllZCBGbGFzaCBpbnRlcnJ1cHRzLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlOiBFTkFCTEUgb3IgRElTQUJMRS4gICAgICAKKyAgKiBAcmV0dmFsIE5vbmUgCisgICovCit2b2lkIEZMQVNIX0lUQ29uZmlnKHVpbnQzMl90IEZMQVNIX0lULCBGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpCit7CisjaWZkZWYgU1RNMzJGMTBYX1hMCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19GTEFTSF9JVChGTEFTSF9JVCkpOyAKKyAgYXNzZXJ0X3BhcmFtKElTX0ZVTkNUSU9OQUxfU1RBVEUoTmV3U3RhdGUpKTsKKworICBpZigoRkxBU0hfSVQgJiAweDgwMDAwMDAwKSAhPSAweDApCisgIHsKKyAgICBpZihOZXdTdGF0ZSAhPSBESVNBQkxFKQorICAgIHsKKyAgICAgIC8qIEVuYWJsZSB0aGUgaW50ZXJydXB0IHNvdXJjZXMgKi8KKyAgICAgIEZMQVNILT5DUjIgfD0gKEZMQVNIX0lUICYgMHg3RkZGRkZGRik7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAvKiBEaXNhYmxlIHRoZSBpbnRlcnJ1cHQgc291cmNlcyAqLworICAgICAgRkxBU0gtPkNSMiAmPSB+KHVpbnQzMl90KShGTEFTSF9JVCAmIDB4N0ZGRkZGRkYpOworICAgIH0KKyAgfQorICBlbHNlCisgIHsKKyAgICBpZihOZXdTdGF0ZSAhPSBESVNBQkxFKQorICAgIHsKKyAgICAgIC8qIEVuYWJsZSB0aGUgaW50ZXJydXB0IHNvdXJjZXMgKi8KKyAgICAgIEZMQVNILT5DUiB8PSBGTEFTSF9JVDsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgIC8qIERpc2FibGUgdGhlIGludGVycnVwdCBzb3VyY2VzICovCisgICAgICBGTEFTSC0+Q1IgJj0gfih1aW50MzJfdClGTEFTSF9JVDsKKyAgICB9CisgIH0KKyNlbHNlCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19GTEFTSF9JVChGTEFTSF9JVCkpOyAKKyAgYXNzZXJ0X3BhcmFtKElTX0ZVTkNUSU9OQUxfU1RBVEUoTmV3U3RhdGUpKTsKKworICBpZihOZXdTdGF0ZSAhPSBESVNBQkxFKQorICB7CisgICAgLyogRW5hYmxlIHRoZSBpbnRlcnJ1cHQgc291cmNlcyAqLworICAgIEZMQVNILT5DUiB8PSBGTEFTSF9JVDsKKyAgfQorICBlbHNlCisgIHsKKyAgICAvKiBEaXNhYmxlIHRoZSBpbnRlcnJ1cHQgc291cmNlcyAqLworICAgIEZMQVNILT5DUiAmPSB+KHVpbnQzMl90KUZMQVNIX0lUOworICB9CisjZW5kaWYgLyogU1RNMzJGMTBYX1hMICovCit9CisKKy8qKgorICAqIEBicmllZiAgQ2hlY2tzIHdoZXRoZXIgdGhlIHNwZWNpZmllZCBGTEFTSCBmbGFnIGlzIHNldCBvciBub3QuCisgICogQG5vdGUgICBUaGlzIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIGZvciBhbGwgU1RNMzJGMTB4IGRldmljZXMuCisgICogICAgICAgICAtIEZvciBTVE0zMkYxMFhfWEwgZGV2aWNlcywgdGhpcyBmdW5jdGlvbiBjaGVja3Mgd2hldGhlciB0aGUgc3BlY2lmaWVkIAorICAqICAgICAgICAgICBCYW5rMSBvciBCYW5rMiBmbGFnIGlzIHNldCBvciBub3QuCisgICogICAgICAgICAtIEZvciBvdGhlciBkZXZpY2VzLCBpdCBjaGVja3Mgd2hldGhlciB0aGUgc3BlY2lmaWVkIEJhbmsxIGZsYWcgaXMgCisgICogICAgICAgICAgIHNldCBvciBub3QuCisgICogQHBhcmFtICBGTEFTSF9GTEFHOiBzcGVjaWZpZXMgdGhlIEZMQVNIIGZsYWcgdG8gY2hlY2suCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIEZMQVNIX0ZMQUdfQlNZOiBGTEFTSCBCdXN5IGZsYWcgICAgICAgICAgIAorICAqICAgICBAYXJnIEZMQVNIX0ZMQUdfUEdFUlI6IEZMQVNIIFByb2dyYW0gZXJyb3IgZmxhZyAgICAgICAKKyAgKiAgICAgQGFyZyBGTEFTSF9GTEFHX1dSUFJURVJSOiBGTEFTSCBXcml0ZSBwcm90ZWN0ZWQgZXJyb3IgZmxhZyAgICAgIAorICAqICAgICBAYXJnIEZMQVNIX0ZMQUdfRU9QOiBGTEFTSCBFbmQgb2YgT3BlcmF0aW9uIGZsYWcgICAgICAgICAgIAorICAqICAgICBAYXJnIEZMQVNIX0ZMQUdfT1BURVJSOiAgRkxBU0ggT3B0aW9uIEJ5dGUgZXJyb3IgZmxhZyAgICAgCisgICogQHJldHZhbCBUaGUgbmV3IHN0YXRlIG9mIEZMQVNIX0ZMQUcgKFNFVCBvciBSRVNFVCkuCisgICovCitGbGFnU3RhdHVzIEZMQVNIX0dldEZsYWdTdGF0dXModWludDMyX3QgRkxBU0hfRkxBRykKK3sKKyAgRmxhZ1N0YXR1cyBiaXRzdGF0dXMgPSBSRVNFVDsKKworI2lmZGVmIFNUTTMyRjEwWF9YTAorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfRkxBU0hfR0VUX0ZMQUcoRkxBU0hfRkxBRykpIDsKKyAgaWYoRkxBU0hfRkxBRyA9PSBGTEFTSF9GTEFHX09QVEVSUikgCisgIHsKKyAgICBpZigoRkxBU0gtPk9CUiAmIEZMQVNIX0ZMQUdfT1BURVJSKSAhPSAodWludDMyX3QpUkVTRVQpCisgICAgeworICAgICAgYml0c3RhdHVzID0gU0VUOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgYml0c3RhdHVzID0gUkVTRVQ7CisgICAgfQorICB9CisgIGVsc2UKKyAgeworICAgIGlmKChGTEFTSF9GTEFHICYgMHg4MDAwMDAwMCkgIT0gMHgwKQorICAgIHsKKyAgICAgIGlmKChGTEFTSC0+U1IyICYgRkxBU0hfRkxBRykgIT0gKHVpbnQzMl90KVJFU0VUKQorICAgICAgeworICAgICAgICBiaXRzdGF0dXMgPSBTRVQ7CisgICAgICB9CisgICAgICBlbHNlCisgICAgICB7CisgICAgICAgIGJpdHN0YXR1cyA9IFJFU0VUOworICAgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgaWYoKEZMQVNILT5TUiAmIEZMQVNIX0ZMQUcpICE9ICh1aW50MzJfdClSRVNFVCkKKyAgICAgIHsKKyAgICAgICAgYml0c3RhdHVzID0gU0VUOworICAgICAgfQorICAgICAgZWxzZQorICAgICAgeworICAgICAgICBiaXRzdGF0dXMgPSBSRVNFVDsKKyAgICAgIH0KKyAgICB9CisgIH0KKyNlbHNlCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19GTEFTSF9HRVRfRkxBRyhGTEFTSF9GTEFHKSkgOworICBpZihGTEFTSF9GTEFHID09IEZMQVNIX0ZMQUdfT1BURVJSKSAKKyAgeworICAgIGlmKChGTEFTSC0+T0JSICYgRkxBU0hfRkxBR19PUFRFUlIpICE9ICh1aW50MzJfdClSRVNFVCkKKyAgICB7CisgICAgICBiaXRzdGF0dXMgPSBTRVQ7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICBiaXRzdGF0dXMgPSBSRVNFVDsKKyAgICB9CisgIH0KKyAgZWxzZQorICB7CisgICBpZigoRkxBU0gtPlNSICYgRkxBU0hfRkxBRykgIT0gKHVpbnQzMl90KVJFU0VUKQorICAgIHsKKyAgICAgIGJpdHN0YXR1cyA9IFNFVDsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgIGJpdHN0YXR1cyA9IFJFU0VUOworICAgIH0KKyAgfQorI2VuZGlmIC8qIFNUTTMyRjEwWF9YTCAqLworCisgIC8qIFJldHVybiB0aGUgbmV3IHN0YXRlIG9mIEZMQVNIX0ZMQUcgKFNFVCBvciBSRVNFVCkgKi8KKyAgcmV0dXJuIGJpdHN0YXR1czsKK30KKworLyoqCisgICogQGJyaWVmICBDbGVhcnMgdGhlIEZMQVNIJ3MgcGVuZGluZyBmbGFncy4KKyAgKiBAbm90ZSAgIFRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWQgZm9yIGFsbCBTVE0zMkYxMHggZGV2aWNlcy4KKyAgKiAgICAgICAgIC0gRm9yIFNUTTMyRjEwWF9YTCBkZXZpY2VzLCB0aGlzIGZ1bmN0aW9uIGNsZWFycyBCYW5rMSBvciBCYW5rMpJzIHBlbmRpbmcgZmxhZ3MKKyAgKiAgICAgICAgIC0gRm9yIG90aGVyIGRldmljZXMsIGl0IGNsZWFycyBCYW5rMZJzIHBlbmRpbmcgZmxhZ3MuCisgICogQHBhcmFtICBGTEFTSF9GTEFHOiBzcGVjaWZpZXMgdGhlIEZMQVNIIGZsYWdzIHRvIGNsZWFyLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGFueSBjb21iaW5hdGlvbiBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczogICAgICAgICAKKyAgKiAgICAgQGFyZyBGTEFTSF9GTEFHX1BHRVJSOiBGTEFTSCBQcm9ncmFtIGVycm9yIGZsYWcgICAgICAgCisgICogICAgIEBhcmcgRkxBU0hfRkxBR19XUlBSVEVSUjogRkxBU0ggV3JpdGUgcHJvdGVjdGVkIGVycm9yIGZsYWcgICAgICAKKyAgKiAgICAgQGFyZyBGTEFTSF9GTEFHX0VPUDogRkxBU0ggRW5kIG9mIE9wZXJhdGlvbiBmbGFnICAgICAgICAgICAKKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgRkxBU0hfQ2xlYXJGbGFnKHVpbnQzMl90IEZMQVNIX0ZMQUcpCit7CisjaWZkZWYgU1RNMzJGMTBYX1hMCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19GTEFTSF9DTEVBUl9GTEFHKEZMQVNIX0ZMQUcpKSA7CisKKyAgaWYoKEZMQVNIX0ZMQUcgJiAweDgwMDAwMDAwKSAhPSAweDApCisgIHsKKyAgICAvKiBDbGVhciB0aGUgZmxhZ3MgKi8KKyAgICBGTEFTSC0+U1IyID0gRkxBU0hfRkxBRzsKKyAgfQorICBlbHNlCisgIHsKKyAgICAvKiBDbGVhciB0aGUgZmxhZ3MgKi8KKyAgICBGTEFTSC0+U1IgPSBGTEFTSF9GTEFHOworICB9ICAKKworI2Vsc2UKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX0ZMQVNIX0NMRUFSX0ZMQUcoRkxBU0hfRkxBRykpIDsKKyAgCisgIC8qIENsZWFyIHRoZSBmbGFncyAqLworICBGTEFTSC0+U1IgPSBGTEFTSF9GTEFHOworI2VuZGlmIC8qIFNUTTMyRjEwWF9YTCAqLworfQorCisvKioKKyAgKiBAYnJpZWYgIFJldHVybnMgdGhlIEZMQVNIIFN0YXR1cy4KKyAgKiBAbm90ZSAgIFRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWQgZm9yIGFsbCBTVE0zMkYxMHggZGV2aWNlcywgaXQgaXMgZXF1aXZhbGVudAorICAqICAgICAgICAgdG8gRkxBU0hfR2V0QmFuazFTdGF0dXMgZnVuY3Rpb24uCisgICogQHBhcmFtICBOb25lCisgICogQHJldHZhbCBGTEFTSCBTdGF0dXM6IFRoZSByZXR1cm5lZCB2YWx1ZSBjYW4gYmU6IEZMQVNIX0JVU1ksIEZMQVNIX0VSUk9SX1BHLAorICAqICAgICAgICAgRkxBU0hfRVJST1JfV1JQIG9yIEZMQVNIX0NPTVBMRVRFCisgICovCitGTEFTSF9TdGF0dXMgRkxBU0hfR2V0U3RhdHVzKHZvaWQpCit7CisgIEZMQVNIX1N0YXR1cyBmbGFzaHN0YXR1cyA9IEZMQVNIX0NPTVBMRVRFOworICAKKyAgaWYoKEZMQVNILT5TUiAmIEZMQVNIX0ZMQUdfQlNZKSA9PSBGTEFTSF9GTEFHX0JTWSkgCisgIHsKKyAgICBmbGFzaHN0YXR1cyA9IEZMQVNIX0JVU1k7CisgIH0KKyAgZWxzZSAKKyAgeyAgCisgICAgaWYoKEZMQVNILT5TUiAmIEZMQVNIX0ZMQUdfUEdFUlIpICE9IDApCisgICAgeyAKKyAgICAgIGZsYXNoc3RhdHVzID0gRkxBU0hfRVJST1JfUEc7CisgICAgfQorICAgIGVsc2UgCisgICAgeworICAgICAgaWYoKEZMQVNILT5TUiAmIEZMQVNIX0ZMQUdfV1JQUlRFUlIpICE9IDAgKQorICAgICAgeworICAgICAgICBmbGFzaHN0YXR1cyA9IEZMQVNIX0VSUk9SX1dSUDsKKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgIHsKKyAgICAgICAgZmxhc2hzdGF0dXMgPSBGTEFTSF9DT01QTEVURTsKKyAgICAgIH0KKyAgICB9CisgIH0KKyAgLyogUmV0dXJuIHRoZSBGbGFzaCBTdGF0dXMgKi8KKyAgcmV0dXJuIGZsYXNoc3RhdHVzOworfQorCisvKioKKyAgKiBAYnJpZWYgIFJldHVybnMgdGhlIEZMQVNIIEJhbmsxIFN0YXR1cy4KKyAgKiBAbm90ZSAgIFRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWQgZm9yIGFsbCBTVE0zMkYxMHggZGV2aWNlcywgaXQgaXMgZXF1aXZhbGVudAorICAqICAgICAgICAgdG8gRkxBU0hfR2V0U3RhdHVzIGZ1bmN0aW9uLgorICAqIEBwYXJhbSAgTm9uZQorICAqIEByZXR2YWwgRkxBU0ggU3RhdHVzOiBUaGUgcmV0dXJuZWQgdmFsdWUgY2FuIGJlOiBGTEFTSF9CVVNZLCBGTEFTSF9FUlJPUl9QRywKKyAgKiAgICAgICAgIEZMQVNIX0VSUk9SX1dSUCBvciBGTEFTSF9DT01QTEVURQorICAqLworRkxBU0hfU3RhdHVzIEZMQVNIX0dldEJhbmsxU3RhdHVzKHZvaWQpCit7CisgIEZMQVNIX1N0YXR1cyBmbGFzaHN0YXR1cyA9IEZMQVNIX0NPTVBMRVRFOworICAKKyAgaWYoKEZMQVNILT5TUiAmIEZMQVNIX0ZMQUdfQkFOSzFfQlNZKSA9PSBGTEFTSF9GTEFHX0JTWSkgCisgIHsKKyAgICBmbGFzaHN0YXR1cyA9IEZMQVNIX0JVU1k7CisgIH0KKyAgZWxzZSAKKyAgeyAgCisgICAgaWYoKEZMQVNILT5TUiAmIEZMQVNIX0ZMQUdfQkFOSzFfUEdFUlIpICE9IDApCisgICAgeyAKKyAgICAgIGZsYXNoc3RhdHVzID0gRkxBU0hfRVJST1JfUEc7CisgICAgfQorICAgIGVsc2UgCisgICAgeworICAgICAgaWYoKEZMQVNILT5TUiAmIEZMQVNIX0ZMQUdfQkFOSzFfV1JQUlRFUlIpICE9IDAgKQorICAgICAgeworICAgICAgICBmbGFzaHN0YXR1cyA9IEZMQVNIX0VSUk9SX1dSUDsKKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgIHsKKyAgICAgICAgZmxhc2hzdGF0dXMgPSBGTEFTSF9DT01QTEVURTsKKyAgICAgIH0KKyAgICB9CisgIH0KKyAgLyogUmV0dXJuIHRoZSBGbGFzaCBTdGF0dXMgKi8KKyAgcmV0dXJuIGZsYXNoc3RhdHVzOworfQorCisjaWZkZWYgU1RNMzJGMTBYX1hMCisvKioKKyAgKiBAYnJpZWYgIFJldHVybnMgdGhlIEZMQVNIIEJhbmsyIFN0YXR1cy4KKyAgKiBAbm90ZSAgIFRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWQgZm9yIFNUTTMyRjEweF9YTCBkZW5zaXR5IGRldmljZXMuCisgICogQHBhcmFtICBOb25lCisgICogQHJldHZhbCBGTEFTSCBTdGF0dXM6IFRoZSByZXR1cm5lZCB2YWx1ZSBjYW4gYmU6IEZMQVNIX0JVU1ksIEZMQVNIX0VSUk9SX1BHLAorICAqICAgICAgICBGTEFTSF9FUlJPUl9XUlAgb3IgRkxBU0hfQ09NUExFVEUKKyAgKi8KK0ZMQVNIX1N0YXR1cyBGTEFTSF9HZXRCYW5rMlN0YXR1cyh2b2lkKQoreworICBGTEFTSF9TdGF0dXMgZmxhc2hzdGF0dXMgPSBGTEFTSF9DT01QTEVURTsKKyAgCisgIGlmKChGTEFTSC0+U1IyICYgKEZMQVNIX0ZMQUdfQkFOSzJfQlNZICYgMHg3RkZGRkZGRikpID09IChGTEFTSF9GTEFHX0JBTksyX0JTWSAmIDB4N0ZGRkZGRkYpKSAKKyAgeworICAgIGZsYXNoc3RhdHVzID0gRkxBU0hfQlVTWTsKKyAgfQorICBlbHNlIAorICB7ICAKKyAgICBpZigoRkxBU0gtPlNSMiAmIChGTEFTSF9GTEFHX0JBTksyX1BHRVJSICYgMHg3RkZGRkZGRikpICE9IDApCisgICAgeyAKKyAgICAgIGZsYXNoc3RhdHVzID0gRkxBU0hfRVJST1JfUEc7CisgICAgfQorICAgIGVsc2UgCisgICAgeworICAgICAgaWYoKEZMQVNILT5TUjIgJiAoRkxBU0hfRkxBR19CQU5LMl9XUlBSVEVSUiAmIDB4N0ZGRkZGRkYpKSAhPSAwICkKKyAgICAgIHsKKyAgICAgICAgZmxhc2hzdGF0dXMgPSBGTEFTSF9FUlJPUl9XUlA7CisgICAgICB9CisgICAgICBlbHNlCisgICAgICB7CisgICAgICAgIGZsYXNoc3RhdHVzID0gRkxBU0hfQ09NUExFVEU7CisgICAgICB9CisgICAgfQorICB9CisgIC8qIFJldHVybiB0aGUgRmxhc2ggU3RhdHVzICovCisgIHJldHVybiBmbGFzaHN0YXR1czsKK30KKyNlbmRpZiAvKiBTVE0zMkYxMFhfWEwgKi8KKy8qKgorICAqIEBicmllZiAgV2FpdHMgZm9yIGEgRmxhc2ggb3BlcmF0aW9uIHRvIGNvbXBsZXRlIG9yIGEgVElNRU9VVCB0byBvY2N1ci4KKyAgKiBAbm90ZSAgIFRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWQgZm9yIGFsbCBTVE0zMkYxMHggZGV2aWNlcywgCisgICogICAgICAgICBpdCBpcyBlcXVpdmFsZW50IHRvIEZMQVNIX1dhaXRGb3JMYXN0QmFuazFPcGVyYXRpb24uCisgICogICAgICAgICAtIEZvciBTVE0zMkYxMFhfWEwgZGV2aWNlcyB0aGlzIGZ1bmN0aW9uIHdhaXRzIGZvciBhIEJhbmsxIEZsYXNoIG9wZXJhdGlvbgorICAqICAgICAgICAgICB0byBjb21wbGV0ZSBvciBhIFRJTUVPVVQgdG8gb2NjdXIuCisgICogICAgICAgICAtIEZvciBhbGwgb3RoZXIgZGV2aWNlcyBpdCB3YWl0cyBmb3IgYSBGbGFzaCBvcGVyYXRpb24gdG8gY29tcGxldGUgCisgICogICAgICAgICAgIG9yIGEgVElNRU9VVCB0byBvY2N1ci4KKyAgKiBAcGFyYW0gIFRpbWVvdXQ6IEZMQVNIIHByb2dyYW1taW5nIFRpbWVvdXQKKyAgKiBAcmV0dmFsIEZMQVNIIFN0YXR1czogVGhlIHJldHVybmVkIHZhbHVlIGNhbiBiZTogRkxBU0hfRVJST1JfUEcsCisgICogICAgICAgICBGTEFTSF9FUlJPUl9XUlAsIEZMQVNIX0NPTVBMRVRFIG9yIEZMQVNIX1RJTUVPVVQuCisgICovCitGTEFTSF9TdGF0dXMgRkxBU0hfV2FpdEZvckxhc3RPcGVyYXRpb24odWludDMyX3QgVGltZW91dCkKK3sgCisgIEZMQVNIX1N0YXR1cyBzdGF0dXMgPSBGTEFTSF9DT01QTEVURTsKKyAgIAorICAvKiBDaGVjayBmb3IgdGhlIEZsYXNoIFN0YXR1cyAqLworICBzdGF0dXMgPSBGTEFTSF9HZXRCYW5rMVN0YXR1cygpOworICAvKiBXYWl0IGZvciBhIEZsYXNoIG9wZXJhdGlvbiB0byBjb21wbGV0ZSBvciBhIFRJTUVPVVQgdG8gb2NjdXIgKi8KKyAgd2hpbGUoKHN0YXR1cyA9PSBGTEFTSF9CVVNZKSAmJiAoVGltZW91dCAhPSAweDAwKSkKKyAgeworICAgIHN0YXR1cyA9IEZMQVNIX0dldEJhbmsxU3RhdHVzKCk7CisgICAgVGltZW91dC0tOworICB9CisgIGlmKFRpbWVvdXQgPT0gMHgwMCApCisgIHsKKyAgICBzdGF0dXMgPSBGTEFTSF9USU1FT1VUOworICB9CisgIC8qIFJldHVybiB0aGUgb3BlcmF0aW9uIHN0YXR1cyAqLworICByZXR1cm4gc3RhdHVzOworfQorCisvKioKKyAgKiBAYnJpZWYgIFdhaXRzIGZvciBhIEZsYXNoIG9wZXJhdGlvbiBvbiBCYW5rMSB0byBjb21wbGV0ZSBvciBhIFRJTUVPVVQgdG8gb2NjdXIuCisgICogQG5vdGUgICBUaGlzIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIGZvciBhbGwgU1RNMzJGMTB4IGRldmljZXMsIAorICAqICAgICAgICAgaXQgaXMgZXF1aXZhbGVudCB0byBGTEFTSF9XYWl0Rm9yTGFzdE9wZXJhdGlvbi4KKyAgKiBAcGFyYW0gIFRpbWVvdXQ6IEZMQVNIIHByb2dyYW1taW5nIFRpbWVvdXQKKyAgKiBAcmV0dmFsIEZMQVNIIFN0YXR1czogVGhlIHJldHVybmVkIHZhbHVlIGNhbiBiZTogRkxBU0hfRVJST1JfUEcsCisgICogICAgICAgICBGTEFTSF9FUlJPUl9XUlAsIEZMQVNIX0NPTVBMRVRFIG9yIEZMQVNIX1RJTUVPVVQuCisgICovCitGTEFTSF9TdGF0dXMgRkxBU0hfV2FpdEZvckxhc3RCYW5rMU9wZXJhdGlvbih1aW50MzJfdCBUaW1lb3V0KQoreyAKKyAgRkxBU0hfU3RhdHVzIHN0YXR1cyA9IEZMQVNIX0NPTVBMRVRFOworICAgCisgIC8qIENoZWNrIGZvciB0aGUgRmxhc2ggU3RhdHVzICovCisgIHN0YXR1cyA9IEZMQVNIX0dldEJhbmsxU3RhdHVzKCk7CisgIC8qIFdhaXQgZm9yIGEgRmxhc2ggb3BlcmF0aW9uIHRvIGNvbXBsZXRlIG9yIGEgVElNRU9VVCB0byBvY2N1ciAqLworICB3aGlsZSgoc3RhdHVzID09IEZMQVNIX0ZMQUdfQkFOSzFfQlNZKSAmJiAoVGltZW91dCAhPSAweDAwKSkKKyAgeworICAgIHN0YXR1cyA9IEZMQVNIX0dldEJhbmsxU3RhdHVzKCk7CisgICAgVGltZW91dC0tOworICB9CisgIGlmKFRpbWVvdXQgPT0gMHgwMCApCisgIHsKKyAgICBzdGF0dXMgPSBGTEFTSF9USU1FT1VUOworICB9CisgIC8qIFJldHVybiB0aGUgb3BlcmF0aW9uIHN0YXR1cyAqLworICByZXR1cm4gc3RhdHVzOworfQorCisjaWZkZWYgU1RNMzJGMTBYX1hMCisvKioKKyAgKiBAYnJpZWYgIFdhaXRzIGZvciBhIEZsYXNoIG9wZXJhdGlvbiBvbiBCYW5rMiB0byBjb21wbGV0ZSBvciBhIFRJTUVPVVQgdG8gb2NjdXIuCisgICogQG5vdGUgICBUaGlzIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIG9ubHkgZm9yIFNUTTMyRjEweF9YTCBkZW5zaXR5IGRldmljZXMuCisgICogQHBhcmFtICBUaW1lb3V0OiBGTEFTSCBwcm9ncmFtbWluZyBUaW1lb3V0CisgICogQHJldHZhbCBGTEFTSCBTdGF0dXM6IFRoZSByZXR1cm5lZCB2YWx1ZSBjYW4gYmU6IEZMQVNIX0VSUk9SX1BHLAorICAqICAgICAgICAgRkxBU0hfRVJST1JfV1JQLCBGTEFTSF9DT01QTEVURSBvciBGTEFTSF9USU1FT1VULgorICAqLworRkxBU0hfU3RhdHVzIEZMQVNIX1dhaXRGb3JMYXN0QmFuazJPcGVyYXRpb24odWludDMyX3QgVGltZW91dCkKK3sgCisgIEZMQVNIX1N0YXR1cyBzdGF0dXMgPSBGTEFTSF9DT01QTEVURTsKKyAgIAorICAvKiBDaGVjayBmb3IgdGhlIEZsYXNoIFN0YXR1cyAqLworICBzdGF0dXMgPSBGTEFTSF9HZXRCYW5rMlN0YXR1cygpOworICAvKiBXYWl0IGZvciBhIEZsYXNoIG9wZXJhdGlvbiB0byBjb21wbGV0ZSBvciBhIFRJTUVPVVQgdG8gb2NjdXIgKi8KKyAgd2hpbGUoKHN0YXR1cyA9PSAoRkxBU0hfRkxBR19CQU5LMl9CU1kgJiAweDdGRkZGRkZGKSkgJiYgKFRpbWVvdXQgIT0gMHgwMCkpCisgIHsKKyAgICBzdGF0dXMgPSBGTEFTSF9HZXRCYW5rMlN0YXR1cygpOworICAgIFRpbWVvdXQtLTsKKyAgfQorICBpZihUaW1lb3V0ID09IDB4MDAgKQorICB7CisgICAgc3RhdHVzID0gRkxBU0hfVElNRU9VVDsKKyAgfQorICAvKiBSZXR1cm4gdGhlIG9wZXJhdGlvbiBzdGF0dXMgKi8KKyAgcmV0dXJuIHN0YXR1czsKK30KKyNlbmRpZiAvKiBTVE0zMkYxMFhfWEwgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCAyMDExIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL3N0X2Z3X2xpYi9zcmMvc3RtMzJmMTB4X2ZzbWMuYyBiL3N0X2Z3X2xpYi9zcmMvc3RtMzJmMTB4X2ZzbWMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MTY2OWVlCi0tLSAvZGV2L251bGwKKysrIGIvc3RfZndfbGliL3NyYy9zdG0zMmYxMHhfZnNtYy5jCkBAIC0wLDAgKzEsODY2IEBACisvKioKKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICogQGZpbGUgICAgc3RtMzJmMTB4X2ZzbWMuYworICAqIEBhdXRob3IgIE1DRCBBcHBsaWNhdGlvbiBUZWFtCisgICogQHZlcnNpb24gVjMuNS4wCisgICogQGRhdGUgICAgMTEtTWFyY2gtMjAxMQorICAqIEBicmllZiAgIFRoaXMgZmlsZSBwcm92aWRlcyBhbGwgdGhlIEZTTUMgZmlybXdhcmUgZnVuY3Rpb25zLgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKiBAYXR0ZW50aW9uCisgICoKKyAgKiBUSEUgUFJFU0VOVCBGSVJNV0FSRSBXSElDSCBJUyBGT1IgR1VJREFOQ0UgT05MWSBBSU1TIEFUIFBST1ZJRElORyBDVVNUT01FUlMKKyAgKiBXSVRIIENPRElORyBJTkZPUk1BVElPTiBSRUdBUkRJTkcgVEhFSVIgUFJPRFVDVFMgSU4gT1JERVIgRk9SIFRIRU0gVE8gU0FWRQorICAqIFRJTUUuIEFTIEEgUkVTVUxULCBTVE1JQ1JPRUxFQ1RST05JQ1MgU0hBTEwgTk9UIEJFIEhFTEQgTElBQkxFIEZPUiBBTlkKKyAgKiBESVJFQ1QsIElORElSRUNUIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBXSVRIIFJFU1BFQ1QgVE8gQU5ZIENMQUlNUyBBUklTSU5HCisgICogRlJPTSBUSEUgQ09OVEVOVCBPRiBTVUNIIEZJUk1XQVJFIEFORC9PUiBUSEUgVVNFIE1BREUgQlkgQ1VTVE9NRVJTIE9GIFRIRQorICAqIENPRElORyBJTkZPUk1BVElPTiBDT05UQUlORUQgSEVSRUlOIElOIENPTk5FQ1RJT04gV0lUSCBUSEVJUiBQUk9EVUNUUy4KKyAgKgorICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDT1BZUklHSFQgMjAxMSBTVE1pY3JvZWxlY3Ryb25pY3M8L2NlbnRlcj48L2gyPgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKi8KKworLyogSW5jbHVkZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyNpbmNsdWRlICJzdG0zMmYxMHhfZnNtYy5oIgorI2luY2x1ZGUgInN0bTMyZjEweF9yY2MuaCIKKworLyoqIEBhZGR0b2dyb3VwIFNUTTMyRjEweF9TdGRQZXJpcGhfRHJpdmVyCisgICogQHsKKyAgKi8KKworLyoqIEBkZWZncm91cCBGU01DIAorICAqIEBicmllZiBGU01DIGRyaXZlciBtb2R1bGVzCisgICogQHsKKyAgKi8gCisKKy8qKiBAZGVmZ3JvdXAgRlNNQ19Qcml2YXRlX1R5cGVzRGVmaW5pdGlvbnMKKyAgKiBAeworICAqLyAKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgRlNNQ19Qcml2YXRlX0RlZmluZXMKKyAgKiBAeworICAqLworCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0gRlNNQyByZWdpc3RlcnMgYml0IG1hc2sgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisvKiBGU01DIEJDUnggTWFzayAqLworI2RlZmluZSBCQ1JfTUJLRU5fU2V0ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDEpCisjZGVmaW5lIEJDUl9NQktFTl9SZXNldCAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDBGRkZGRSkKKyNkZWZpbmUgQkNSX0ZBQ0NFTl9TZXQgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDQwKQorCisvKiBGU01DIFBDUnggTWFzayAqLworI2RlZmluZSBQQ1JfUEJLRU5fU2V0ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDQpCisjZGVmaW5lIFBDUl9QQktFTl9SZXNldCAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDBGRkZGQikKKyNkZWZpbmUgUENSX0VDQ0VOX1NldCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDQwKQorI2RlZmluZSBQQ1JfRUNDRU5fUmVzZXQgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwRkZGQkYpCisjZGVmaW5lIFBDUl9NZW1vcnlUeXBlX05BTkQgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgRlNNQ19Qcml2YXRlX01hY3JvcworICAqIEB7CisgICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgRlNNQ19Qcml2YXRlX1ZhcmlhYmxlcworICAqIEB7CisgICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgRlNNQ19Qcml2YXRlX0Z1bmN0aW9uUHJvdG90eXBlcworICAqIEB7CisgICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgRlNNQ19Qcml2YXRlX0Z1bmN0aW9ucworICAqIEB7CisgICovCisKKy8qKgorICAqIEBicmllZiAgRGVpbml0aWFsaXplcyB0aGUgRlNNQyBOT1IvU1JBTSBCYW5rcyByZWdpc3RlcnMgdG8gdGhlaXIgZGVmYXVsdCAKKyAgKiAgICAgICAgIHJlc2V0IHZhbHVlcy4KKyAgKiBAcGFyYW0gIEZTTUNfQmFuazogc3BlY2lmaWVzIHRoZSBGU01DIEJhbmsgdG8gYmUgdXNlZAorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBGU01DX0JhbmsxX05PUlNSQU0xOiBGU01DIEJhbmsxIE5PUi9TUkFNMSAgCisgICogICAgIEBhcmcgRlNNQ19CYW5rMV9OT1JTUkFNMjogRlNNQyBCYW5rMSBOT1IvU1JBTTIgCisgICogICAgIEBhcmcgRlNNQ19CYW5rMV9OT1JTUkFNMzogRlNNQyBCYW5rMSBOT1IvU1JBTTMgCisgICogICAgIEBhcmcgRlNNQ19CYW5rMV9OT1JTUkFNNDogRlNNQyBCYW5rMSBOT1IvU1JBTTQgCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIEZTTUNfTk9SU1JBTURlSW5pdCh1aW50MzJfdCBGU01DX0JhbmspCit7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXIgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX0ZTTUNfTk9SU1JBTV9CQU5LKEZTTUNfQmFuaykpOworICAKKyAgLyogRlNNQ19CYW5rMV9OT1JTUkFNMSAqLworICBpZihGU01DX0JhbmsgPT0gRlNNQ19CYW5rMV9OT1JTUkFNMSkKKyAgeworICAgIEZTTUNfQmFuazEtPkJUQ1JbRlNNQ19CYW5rXSA9IDB4MDAwMDMwREI7ICAgIAorICB9CisgIC8qIEZTTUNfQmFuazFfTk9SU1JBTTIsICBGU01DX0JhbmsxX05PUlNSQU0zIG9yIEZTTUNfQmFuazFfTk9SU1JBTTQgKi8KKyAgZWxzZQorICB7ICAgCisgICAgRlNNQ19CYW5rMS0+QlRDUltGU01DX0JhbmtdID0gMHgwMDAwMzBEMjsgCisgIH0KKyAgRlNNQ19CYW5rMS0+QlRDUltGU01DX0JhbmsgKyAxXSA9IDB4MEZGRkZGRkY7CisgIEZTTUNfQmFuazFFLT5CV1RSW0ZTTUNfQmFua10gPSAweDBGRkZGRkZGOyAgCit9CisKKy8qKgorICAqIEBicmllZiAgRGVpbml0aWFsaXplcyB0aGUgRlNNQyBOQU5EIEJhbmtzIHJlZ2lzdGVycyB0byB0aGVpciBkZWZhdWx0IHJlc2V0IHZhbHVlcy4KKyAgKiBAcGFyYW0gIEZTTUNfQmFuazogc3BlY2lmaWVzIHRoZSBGU01DIEJhbmsgdG8gYmUgdXNlZAorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBGU01DX0JhbmsyX05BTkQ6IEZTTUMgQmFuazIgTkFORCAKKyAgKiAgICAgQGFyZyBGU01DX0JhbmszX05BTkQ6IEZTTUMgQmFuazMgTkFORCAKKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgRlNNQ19OQU5ERGVJbml0KHVpbnQzMl90IEZTTUNfQmFuaykKK3sKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlciAqLworICBhc3NlcnRfcGFyYW0oSVNfRlNNQ19OQU5EX0JBTksoRlNNQ19CYW5rKSk7CisgIAorICBpZihGU01DX0JhbmsgPT0gRlNNQ19CYW5rMl9OQU5EKQorICB7CisgICAgLyogU2V0IHRoZSBGU01DX0JhbmsyIHJlZ2lzdGVycyB0byB0aGVpciByZXNldCB2YWx1ZXMgKi8KKyAgICBGU01DX0JhbmsyLT5QQ1IyID0gMHgwMDAwMDAxODsKKyAgICBGU01DX0JhbmsyLT5TUjIgPSAweDAwMDAwMDQwOworICAgIEZTTUNfQmFuazItPlBNRU0yID0gMHhGQ0ZDRkNGQzsKKyAgICBGU01DX0JhbmsyLT5QQVRUMiA9IDB4RkNGQ0ZDRkM7ICAKKyAgfQorICAvKiBGU01DX0JhbmszX05BTkQgKi8gIAorICBlbHNlCisgIHsKKyAgICAvKiBTZXQgdGhlIEZTTUNfQmFuazMgcmVnaXN0ZXJzIHRvIHRoZWlyIHJlc2V0IHZhbHVlcyAqLworICAgIEZTTUNfQmFuazMtPlBDUjMgPSAweDAwMDAwMDE4OworICAgIEZTTUNfQmFuazMtPlNSMyA9IDB4MDAwMDAwNDA7CisgICAgRlNNQ19CYW5rMy0+UE1FTTMgPSAweEZDRkNGQ0ZDOworICAgIEZTTUNfQmFuazMtPlBBVFQzID0gMHhGQ0ZDRkNGQzsgCisgIH0gIAorfQorCisvKioKKyAgKiBAYnJpZWYgIERlaW5pdGlhbGl6ZXMgdGhlIEZTTUMgUENDQVJEIEJhbmsgcmVnaXN0ZXJzIHRvIHRoZWlyIGRlZmF1bHQgcmVzZXQgdmFsdWVzLgorICAqIEBwYXJhbSAgTm9uZSAgICAgICAgICAgICAgICAgICAgICAgCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIEZTTUNfUENDQVJERGVJbml0KHZvaWQpCit7CisgIC8qIFNldCB0aGUgRlNNQ19CYW5rNCByZWdpc3RlcnMgdG8gdGhlaXIgcmVzZXQgdmFsdWVzICovCisgIEZTTUNfQmFuazQtPlBDUjQgPSAweDAwMDAwMDE4OyAKKyAgRlNNQ19CYW5rNC0+U1I0ID0gMHgwMDAwMDAwMDsJCisgIEZTTUNfQmFuazQtPlBNRU00ID0gMHhGQ0ZDRkNGQzsKKyAgRlNNQ19CYW5rNC0+UEFUVDQgPSAweEZDRkNGQ0ZDOworICBGU01DX0Jhbms0LT5QSU80ID0gMHhGQ0ZDRkNGQzsKK30KKworLyoqCisgICogQGJyaWVmICBJbml0aWFsaXplcyB0aGUgRlNNQyBOT1IvU1JBTSBCYW5rcyBhY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmllZAorICAqICAgICAgICAgcGFyYW1ldGVycyBpbiB0aGUgRlNNQ19OT1JTUkFNSW5pdFN0cnVjdC4KKyAgKiBAcGFyYW0gIEZTTUNfTk9SU1JBTUluaXRTdHJ1Y3QgOiBwb2ludGVyIHRvIGEgRlNNQ19OT1JTUkFNSW5pdFR5cGVEZWYKKyAgKiAgICAgICAgIHN0cnVjdHVyZSB0aGF0IGNvbnRhaW5zIHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZvciAKKyAgKiAgICAgICAgdGhlIEZTTUMgTk9SL1NSQU0gc3BlY2lmaWVkIEJhbmtzLiAgICAgICAgICAgICAgICAgICAgICAgCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIEZTTUNfTk9SU1JBTUluaXQoRlNNQ19OT1JTUkFNSW5pdFR5cGVEZWYqIEZTTUNfTk9SU1JBTUluaXRTdHJ1Y3QpCit7IAorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfRlNNQ19OT1JTUkFNX0JBTksoRlNNQ19OT1JTUkFNSW5pdFN0cnVjdC0+RlNNQ19CYW5rKSk7CisgIGFzc2VydF9wYXJhbShJU19GU01DX01VWChGU01DX05PUlNSQU1Jbml0U3RydWN0LT5GU01DX0RhdGFBZGRyZXNzTXV4KSk7CisgIGFzc2VydF9wYXJhbShJU19GU01DX01FTU9SWShGU01DX05PUlNSQU1Jbml0U3RydWN0LT5GU01DX01lbW9yeVR5cGUpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0ZTTUNfTUVNT1JZX1dJRFRIKEZTTUNfTk9SU1JBTUluaXRTdHJ1Y3QtPkZTTUNfTWVtb3J5RGF0YVdpZHRoKSk7CisgIGFzc2VydF9wYXJhbShJU19GU01DX0JVUlNUTU9ERShGU01DX05PUlNSQU1Jbml0U3RydWN0LT5GU01DX0J1cnN0QWNjZXNzTW9kZSkpOworICBhc3NlcnRfcGFyYW0oSVNfRlNNQ19BU1lOV0FJVChGU01DX05PUlNSQU1Jbml0U3RydWN0LT5GU01DX0FzeW5jaHJvbm91c1dhaXQpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0ZTTUNfV0FJVF9QT0xBUklUWShGU01DX05PUlNSQU1Jbml0U3RydWN0LT5GU01DX1dhaXRTaWduYWxQb2xhcml0eSkpOworICBhc3NlcnRfcGFyYW0oSVNfRlNNQ19XUkFQX01PREUoRlNNQ19OT1JTUkFNSW5pdFN0cnVjdC0+RlNNQ19XcmFwTW9kZSkpOworICBhc3NlcnRfcGFyYW0oSVNfRlNNQ19XQUlUX1NJR05BTF9BQ1RJVkUoRlNNQ19OT1JTUkFNSW5pdFN0cnVjdC0+RlNNQ19XYWl0U2lnbmFsQWN0aXZlKSk7CisgIGFzc2VydF9wYXJhbShJU19GU01DX1dSSVRFX09QRVJBVElPTihGU01DX05PUlNSQU1Jbml0U3RydWN0LT5GU01DX1dyaXRlT3BlcmF0aW9uKSk7CisgIGFzc2VydF9wYXJhbShJU19GU01DX1dBSVRFX1NJR05BTChGU01DX05PUlNSQU1Jbml0U3RydWN0LT5GU01DX1dhaXRTaWduYWwpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0ZTTUNfRVhURU5ERURfTU9ERShGU01DX05PUlNSQU1Jbml0U3RydWN0LT5GU01DX0V4dGVuZGVkTW9kZSkpOworICBhc3NlcnRfcGFyYW0oSVNfRlNNQ19XUklURV9CVVJTVChGU01DX05PUlNSQU1Jbml0U3RydWN0LT5GU01DX1dyaXRlQnVyc3QpKTsgIAorICBhc3NlcnRfcGFyYW0oSVNfRlNNQ19BRERSRVNTX1NFVFVQX1RJTUUoRlNNQ19OT1JTUkFNSW5pdFN0cnVjdC0+RlNNQ19SZWFkV3JpdGVUaW1pbmdTdHJ1Y3QtPkZTTUNfQWRkcmVzc1NldHVwVGltZSkpOworICBhc3NlcnRfcGFyYW0oSVNfRlNNQ19BRERSRVNTX0hPTERfVElNRShGU01DX05PUlNSQU1Jbml0U3RydWN0LT5GU01DX1JlYWRXcml0ZVRpbWluZ1N0cnVjdC0+RlNNQ19BZGRyZXNzSG9sZFRpbWUpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0ZTTUNfREFUQVNFVFVQX1RJTUUoRlNNQ19OT1JTUkFNSW5pdFN0cnVjdC0+RlNNQ19SZWFkV3JpdGVUaW1pbmdTdHJ1Y3QtPkZTTUNfRGF0YVNldHVwVGltZSkpOworICBhc3NlcnRfcGFyYW0oSVNfRlNNQ19UVVJOQVJPVU5EX1RJTUUoRlNNQ19OT1JTUkFNSW5pdFN0cnVjdC0+RlNNQ19SZWFkV3JpdGVUaW1pbmdTdHJ1Y3QtPkZTTUNfQnVzVHVybkFyb3VuZER1cmF0aW9uKSk7CisgIGFzc2VydF9wYXJhbShJU19GU01DX0NMS19ESVYoRlNNQ19OT1JTUkFNSW5pdFN0cnVjdC0+RlNNQ19SZWFkV3JpdGVUaW1pbmdTdHJ1Y3QtPkZTTUNfQ0xLRGl2aXNpb24pKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0ZTTUNfREFUQV9MQVRFTkNZKEZTTUNfTk9SU1JBTUluaXRTdHJ1Y3QtPkZTTUNfUmVhZFdyaXRlVGltaW5nU3RydWN0LT5GU01DX0RhdGFMYXRlbmN5KSk7CisgIGFzc2VydF9wYXJhbShJU19GU01DX0FDQ0VTU19NT0RFKEZTTUNfTk9SU1JBTUluaXRTdHJ1Y3QtPkZTTUNfUmVhZFdyaXRlVGltaW5nU3RydWN0LT5GU01DX0FjY2Vzc01vZGUpKTsgCisgIAorICAvKiBCYW5rMSBOT1IvU1JBTSBjb250cm9sIHJlZ2lzdGVyIGNvbmZpZ3VyYXRpb24gKi8gCisgIEZTTUNfQmFuazEtPkJUQ1JbRlNNQ19OT1JTUkFNSW5pdFN0cnVjdC0+RlNNQ19CYW5rXSA9IAorICAgICAgICAgICAgKHVpbnQzMl90KUZTTUNfTk9SU1JBTUluaXRTdHJ1Y3QtPkZTTUNfRGF0YUFkZHJlc3NNdXggfAorICAgICAgICAgICAgRlNNQ19OT1JTUkFNSW5pdFN0cnVjdC0+RlNNQ19NZW1vcnlUeXBlIHwKKyAgICAgICAgICAgIEZTTUNfTk9SU1JBTUluaXRTdHJ1Y3QtPkZTTUNfTWVtb3J5RGF0YVdpZHRoIHwKKyAgICAgICAgICAgIEZTTUNfTk9SU1JBTUluaXRTdHJ1Y3QtPkZTTUNfQnVyc3RBY2Nlc3NNb2RlIHwKKyAgICAgICAgICAgIEZTTUNfTk9SU1JBTUluaXRTdHJ1Y3QtPkZTTUNfQXN5bmNocm9ub3VzV2FpdCB8CisgICAgICAgICAgICBGU01DX05PUlNSQU1Jbml0U3RydWN0LT5GU01DX1dhaXRTaWduYWxQb2xhcml0eSB8CisgICAgICAgICAgICBGU01DX05PUlNSQU1Jbml0U3RydWN0LT5GU01DX1dyYXBNb2RlIHwKKyAgICAgICAgICAgIEZTTUNfTk9SU1JBTUluaXRTdHJ1Y3QtPkZTTUNfV2FpdFNpZ25hbEFjdGl2ZSB8CisgICAgICAgICAgICBGU01DX05PUlNSQU1Jbml0U3RydWN0LT5GU01DX1dyaXRlT3BlcmF0aW9uIHwKKyAgICAgICAgICAgIEZTTUNfTk9SU1JBTUluaXRTdHJ1Y3QtPkZTTUNfV2FpdFNpZ25hbCB8CisgICAgICAgICAgICBGU01DX05PUlNSQU1Jbml0U3RydWN0LT5GU01DX0V4dGVuZGVkTW9kZSB8CisgICAgICAgICAgICBGU01DX05PUlNSQU1Jbml0U3RydWN0LT5GU01DX1dyaXRlQnVyc3Q7CisKKyAgaWYoRlNNQ19OT1JTUkFNSW5pdFN0cnVjdC0+RlNNQ19NZW1vcnlUeXBlID09IEZTTUNfTWVtb3J5VHlwZV9OT1IpCisgIHsKKyAgICBGU01DX0JhbmsxLT5CVENSW0ZTTUNfTk9SU1JBTUluaXRTdHJ1Y3QtPkZTTUNfQmFua10gfD0gKHVpbnQzMl90KUJDUl9GQUNDRU5fU2V0OworICB9CisgIAorICAvKiBCYW5rMSBOT1IvU1JBTSB0aW1pbmcgcmVnaXN0ZXIgY29uZmlndXJhdGlvbiAqLworICBGU01DX0JhbmsxLT5CVENSW0ZTTUNfTk9SU1JBTUluaXRTdHJ1Y3QtPkZTTUNfQmFuaysxXSA9IAorICAgICAgICAgICAgKHVpbnQzMl90KUZTTUNfTk9SU1JBTUluaXRTdHJ1Y3QtPkZTTUNfUmVhZFdyaXRlVGltaW5nU3RydWN0LT5GU01DX0FkZHJlc3NTZXR1cFRpbWUgfAorICAgICAgICAgICAgKEZTTUNfTk9SU1JBTUluaXRTdHJ1Y3QtPkZTTUNfUmVhZFdyaXRlVGltaW5nU3RydWN0LT5GU01DX0FkZHJlc3NIb2xkVGltZSA8PCA0KSB8CisgICAgICAgICAgICAoRlNNQ19OT1JTUkFNSW5pdFN0cnVjdC0+RlNNQ19SZWFkV3JpdGVUaW1pbmdTdHJ1Y3QtPkZTTUNfRGF0YVNldHVwVGltZSA8PCA4KSB8CisgICAgICAgICAgICAoRlNNQ19OT1JTUkFNSW5pdFN0cnVjdC0+RlNNQ19SZWFkV3JpdGVUaW1pbmdTdHJ1Y3QtPkZTTUNfQnVzVHVybkFyb3VuZER1cmF0aW9uIDw8IDE2KSB8CisgICAgICAgICAgICAoRlNNQ19OT1JTUkFNSW5pdFN0cnVjdC0+RlNNQ19SZWFkV3JpdGVUaW1pbmdTdHJ1Y3QtPkZTTUNfQ0xLRGl2aXNpb24gPDwgMjApIHwKKyAgICAgICAgICAgIChGU01DX05PUlNSQU1Jbml0U3RydWN0LT5GU01DX1JlYWRXcml0ZVRpbWluZ1N0cnVjdC0+RlNNQ19EYXRhTGF0ZW5jeSA8PCAyNCkgfAorICAgICAgICAgICAgIEZTTUNfTk9SU1JBTUluaXRTdHJ1Y3QtPkZTTUNfUmVhZFdyaXRlVGltaW5nU3RydWN0LT5GU01DX0FjY2Vzc01vZGU7CisgICAgICAgICAgICAKKyAgICAKKyAgLyogQmFuazEgTk9SL1NSQU0gdGltaW5nIHJlZ2lzdGVyIGZvciB3cml0ZSBjb25maWd1cmF0aW9uLCBpZiBleHRlbmRlZCBtb2RlIGlzIHVzZWQgKi8KKyAgaWYoRlNNQ19OT1JTUkFNSW5pdFN0cnVjdC0+RlNNQ19FeHRlbmRlZE1vZGUgPT0gRlNNQ19FeHRlbmRlZE1vZGVfRW5hYmxlKQorICB7CisgICAgYXNzZXJ0X3BhcmFtKElTX0ZTTUNfQUREUkVTU19TRVRVUF9USU1FKEZTTUNfTk9SU1JBTUluaXRTdHJ1Y3QtPkZTTUNfV3JpdGVUaW1pbmdTdHJ1Y3QtPkZTTUNfQWRkcmVzc1NldHVwVGltZSkpOworICAgIGFzc2VydF9wYXJhbShJU19GU01DX0FERFJFU1NfSE9MRF9USU1FKEZTTUNfTk9SU1JBTUluaXRTdHJ1Y3QtPkZTTUNfV3JpdGVUaW1pbmdTdHJ1Y3QtPkZTTUNfQWRkcmVzc0hvbGRUaW1lKSk7CisgICAgYXNzZXJ0X3BhcmFtKElTX0ZTTUNfREFUQVNFVFVQX1RJTUUoRlNNQ19OT1JTUkFNSW5pdFN0cnVjdC0+RlNNQ19Xcml0ZVRpbWluZ1N0cnVjdC0+RlNNQ19EYXRhU2V0dXBUaW1lKSk7CisgICAgYXNzZXJ0X3BhcmFtKElTX0ZTTUNfQ0xLX0RJVihGU01DX05PUlNSQU1Jbml0U3RydWN0LT5GU01DX1dyaXRlVGltaW5nU3RydWN0LT5GU01DX0NMS0RpdmlzaW9uKSk7CisgICAgYXNzZXJ0X3BhcmFtKElTX0ZTTUNfREFUQV9MQVRFTkNZKEZTTUNfTk9SU1JBTUluaXRTdHJ1Y3QtPkZTTUNfV3JpdGVUaW1pbmdTdHJ1Y3QtPkZTTUNfRGF0YUxhdGVuY3kpKTsKKyAgICBhc3NlcnRfcGFyYW0oSVNfRlNNQ19BQ0NFU1NfTU9ERShGU01DX05PUlNSQU1Jbml0U3RydWN0LT5GU01DX1dyaXRlVGltaW5nU3RydWN0LT5GU01DX0FjY2Vzc01vZGUpKTsKKyAgICBGU01DX0JhbmsxRS0+QldUUltGU01DX05PUlNSQU1Jbml0U3RydWN0LT5GU01DX0JhbmtdID0gCisgICAgICAgICAgICAgICh1aW50MzJfdClGU01DX05PUlNSQU1Jbml0U3RydWN0LT5GU01DX1dyaXRlVGltaW5nU3RydWN0LT5GU01DX0FkZHJlc3NTZXR1cFRpbWUgfAorICAgICAgICAgICAgICAoRlNNQ19OT1JTUkFNSW5pdFN0cnVjdC0+RlNNQ19Xcml0ZVRpbWluZ1N0cnVjdC0+RlNNQ19BZGRyZXNzSG9sZFRpbWUgPDwgNCApfAorICAgICAgICAgICAgICAoRlNNQ19OT1JTUkFNSW5pdFN0cnVjdC0+RlNNQ19Xcml0ZVRpbWluZ1N0cnVjdC0+RlNNQ19EYXRhU2V0dXBUaW1lIDw8IDgpIHwKKyAgICAgICAgICAgICAgKEZTTUNfTk9SU1JBTUluaXRTdHJ1Y3QtPkZTTUNfV3JpdGVUaW1pbmdTdHJ1Y3QtPkZTTUNfQ0xLRGl2aXNpb24gPDwgMjApIHwKKyAgICAgICAgICAgICAgKEZTTUNfTk9SU1JBTUluaXRTdHJ1Y3QtPkZTTUNfV3JpdGVUaW1pbmdTdHJ1Y3QtPkZTTUNfRGF0YUxhdGVuY3kgPDwgMjQpIHwKKyAgICAgICAgICAgICAgIEZTTUNfTk9SU1JBTUluaXRTdHJ1Y3QtPkZTTUNfV3JpdGVUaW1pbmdTdHJ1Y3QtPkZTTUNfQWNjZXNzTW9kZTsKKyAgfQorICBlbHNlCisgIHsKKyAgICBGU01DX0JhbmsxRS0+QldUUltGU01DX05PUlNSQU1Jbml0U3RydWN0LT5GU01DX0JhbmtdID0gMHgwRkZGRkZGRjsKKyAgfQorfQorCisvKioKKyAgKiBAYnJpZWYgIEluaXRpYWxpemVzIHRoZSBGU01DIE5BTkQgQmFua3MgYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQgCisgICogICAgICAgICBwYXJhbWV0ZXJzIGluIHRoZSBGU01DX05BTkRJbml0U3RydWN0LgorICAqIEBwYXJhbSAgRlNNQ19OQU5ESW5pdFN0cnVjdCA6IHBvaW50ZXIgdG8gYSBGU01DX05BTkRJbml0VHlwZURlZiAKKyAgKiAgICAgICAgIHN0cnVjdHVyZSB0aGF0IGNvbnRhaW5zIHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZvciB0aGUgRlNNQyAKKyAgKiAgICAgICAgIE5BTkQgc3BlY2lmaWVkIEJhbmtzLiAgICAgICAgICAgICAgICAgICAgICAgCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIEZTTUNfTkFOREluaXQoRlNNQ19OQU5ESW5pdFR5cGVEZWYqIEZTTUNfTkFOREluaXRTdHJ1Y3QpCit7CisgIHVpbnQzMl90IHRtcHBjciA9IDB4MDAwMDAwMDAsIHRtcHBtZW0gPSAweDAwMDAwMDAwLCB0bXBwYXR0ID0gMHgwMDAwMDAwMDsgCisgICAgCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbSggSVNfRlNNQ19OQU5EX0JBTksoRlNNQ19OQU5ESW5pdFN0cnVjdC0+RlNNQ19CYW5rKSk7CisgIGFzc2VydF9wYXJhbSggSVNfRlNNQ19XQUlUX0ZFQVRVUkUoRlNNQ19OQU5ESW5pdFN0cnVjdC0+RlNNQ19XYWl0ZmVhdHVyZSkpOworICBhc3NlcnRfcGFyYW0oIElTX0ZTTUNfTUVNT1JZX1dJRFRIKEZTTUNfTkFOREluaXRTdHJ1Y3QtPkZTTUNfTWVtb3J5RGF0YVdpZHRoKSk7CisgIGFzc2VydF9wYXJhbSggSVNfRlNNQ19FQ0NfU1RBVEUoRlNNQ19OQU5ESW5pdFN0cnVjdC0+RlNNQ19FQ0MpKTsKKyAgYXNzZXJ0X3BhcmFtKCBJU19GU01DX0VDQ1BBR0VfU0laRShGU01DX05BTkRJbml0U3RydWN0LT5GU01DX0VDQ1BhZ2VTaXplKSk7CisgIGFzc2VydF9wYXJhbSggSVNfRlNNQ19UQ0xSX1RJTUUoRlNNQ19OQU5ESW5pdFN0cnVjdC0+RlNNQ19UQ0xSU2V0dXBUaW1lKSk7CisgIGFzc2VydF9wYXJhbSggSVNfRlNNQ19UQVJfVElNRShGU01DX05BTkRJbml0U3RydWN0LT5GU01DX1RBUlNldHVwVGltZSkpOworICBhc3NlcnRfcGFyYW0oSVNfRlNNQ19TRVRVUF9USU1FKEZTTUNfTkFOREluaXRTdHJ1Y3QtPkZTTUNfQ29tbW9uU3BhY2VUaW1pbmdTdHJ1Y3QtPkZTTUNfU2V0dXBUaW1lKSk7CisgIGFzc2VydF9wYXJhbShJU19GU01DX1dBSVRfVElNRShGU01DX05BTkRJbml0U3RydWN0LT5GU01DX0NvbW1vblNwYWNlVGltaW5nU3RydWN0LT5GU01DX1dhaXRTZXR1cFRpbWUpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0ZTTUNfSE9MRF9USU1FKEZTTUNfTkFOREluaXRTdHJ1Y3QtPkZTTUNfQ29tbW9uU3BhY2VUaW1pbmdTdHJ1Y3QtPkZTTUNfSG9sZFNldHVwVGltZSkpOworICBhc3NlcnRfcGFyYW0oSVNfRlNNQ19ISVpfVElNRShGU01DX05BTkRJbml0U3RydWN0LT5GU01DX0NvbW1vblNwYWNlVGltaW5nU3RydWN0LT5GU01DX0hpWlNldHVwVGltZSkpOworICBhc3NlcnRfcGFyYW0oSVNfRlNNQ19TRVRVUF9USU1FKEZTTUNfTkFOREluaXRTdHJ1Y3QtPkZTTUNfQXR0cmlidXRlU3BhY2VUaW1pbmdTdHJ1Y3QtPkZTTUNfU2V0dXBUaW1lKSk7CisgIGFzc2VydF9wYXJhbShJU19GU01DX1dBSVRfVElNRShGU01DX05BTkRJbml0U3RydWN0LT5GU01DX0F0dHJpYnV0ZVNwYWNlVGltaW5nU3RydWN0LT5GU01DX1dhaXRTZXR1cFRpbWUpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0ZTTUNfSE9MRF9USU1FKEZTTUNfTkFOREluaXRTdHJ1Y3QtPkZTTUNfQXR0cmlidXRlU3BhY2VUaW1pbmdTdHJ1Y3QtPkZTTUNfSG9sZFNldHVwVGltZSkpOworICBhc3NlcnRfcGFyYW0oSVNfRlNNQ19ISVpfVElNRShGU01DX05BTkRJbml0U3RydWN0LT5GU01DX0F0dHJpYnV0ZVNwYWNlVGltaW5nU3RydWN0LT5GU01DX0hpWlNldHVwVGltZSkpOworICAKKyAgLyogU2V0IHRoZSB0bXBwY3IgdmFsdWUgYWNjb3JkaW5nIHRvIEZTTUNfTkFOREluaXRTdHJ1Y3QgcGFyYW1ldGVycyAqLworICB0bXBwY3IgPSAodWludDMyX3QpRlNNQ19OQU5ESW5pdFN0cnVjdC0+RlNNQ19XYWl0ZmVhdHVyZSB8CisgICAgICAgICAgICBQQ1JfTWVtb3J5VHlwZV9OQU5EIHwKKyAgICAgICAgICAgIEZTTUNfTkFOREluaXRTdHJ1Y3QtPkZTTUNfTWVtb3J5RGF0YVdpZHRoIHwKKyAgICAgICAgICAgIEZTTUNfTkFOREluaXRTdHJ1Y3QtPkZTTUNfRUNDIHwKKyAgICAgICAgICAgIEZTTUNfTkFOREluaXRTdHJ1Y3QtPkZTTUNfRUNDUGFnZVNpemUgfAorICAgICAgICAgICAgKEZTTUNfTkFOREluaXRTdHJ1Y3QtPkZTTUNfVENMUlNldHVwVGltZSA8PCA5ICl8CisgICAgICAgICAgICAoRlNNQ19OQU5ESW5pdFN0cnVjdC0+RlNNQ19UQVJTZXR1cFRpbWUgPDwgMTMpOworICAgICAgICAgICAgCisgIC8qIFNldCB0bXBwbWVtIHZhbHVlIGFjY29yZGluZyB0byBGU01DX0NvbW1vblNwYWNlVGltaW5nU3RydWN0dXJlIHBhcmFtZXRlcnMgKi8KKyAgdG1wcG1lbSA9ICh1aW50MzJfdClGU01DX05BTkRJbml0U3RydWN0LT5GU01DX0NvbW1vblNwYWNlVGltaW5nU3RydWN0LT5GU01DX1NldHVwVGltZSB8CisgICAgICAgICAgICAoRlNNQ19OQU5ESW5pdFN0cnVjdC0+RlNNQ19Db21tb25TcGFjZVRpbWluZ1N0cnVjdC0+RlNNQ19XYWl0U2V0dXBUaW1lIDw8IDgpIHwKKyAgICAgICAgICAgIChGU01DX05BTkRJbml0U3RydWN0LT5GU01DX0NvbW1vblNwYWNlVGltaW5nU3RydWN0LT5GU01DX0hvbGRTZXR1cFRpbWUgPDwgMTYpfAorICAgICAgICAgICAgKEZTTUNfTkFOREluaXRTdHJ1Y3QtPkZTTUNfQ29tbW9uU3BhY2VUaW1pbmdTdHJ1Y3QtPkZTTUNfSGlaU2V0dXBUaW1lIDw8IDI0KTsgCisgICAgICAgICAgICAKKyAgLyogU2V0IHRtcHBhdHQgdmFsdWUgYWNjb3JkaW5nIHRvIEZTTUNfQXR0cmlidXRlU3BhY2VUaW1pbmdTdHJ1Y3R1cmUgcGFyYW1ldGVycyAqLworICB0bXBwYXR0ID0gKHVpbnQzMl90KUZTTUNfTkFOREluaXRTdHJ1Y3QtPkZTTUNfQXR0cmlidXRlU3BhY2VUaW1pbmdTdHJ1Y3QtPkZTTUNfU2V0dXBUaW1lIHwKKyAgICAgICAgICAgIChGU01DX05BTkRJbml0U3RydWN0LT5GU01DX0F0dHJpYnV0ZVNwYWNlVGltaW5nU3RydWN0LT5GU01DX1dhaXRTZXR1cFRpbWUgPDwgOCkgfAorICAgICAgICAgICAgKEZTTUNfTkFOREluaXRTdHJ1Y3QtPkZTTUNfQXR0cmlidXRlU3BhY2VUaW1pbmdTdHJ1Y3QtPkZTTUNfSG9sZFNldHVwVGltZSA8PCAxNil8CisgICAgICAgICAgICAoRlNNQ19OQU5ESW5pdFN0cnVjdC0+RlNNQ19BdHRyaWJ1dGVTcGFjZVRpbWluZ1N0cnVjdC0+RlNNQ19IaVpTZXR1cFRpbWUgPDwgMjQpOworICAKKyAgaWYoRlNNQ19OQU5ESW5pdFN0cnVjdC0+RlNNQ19CYW5rID09IEZTTUNfQmFuazJfTkFORCkKKyAgeworICAgIC8qIEZTTUNfQmFuazJfTkFORCByZWdpc3RlcnMgY29uZmlndXJhdGlvbiAqLworICAgIEZTTUNfQmFuazItPlBDUjIgPSB0bXBwY3I7CisgICAgRlNNQ19CYW5rMi0+UE1FTTIgPSB0bXBwbWVtOworICAgIEZTTUNfQmFuazItPlBBVFQyID0gdG1wcGF0dDsKKyAgfQorICBlbHNlCisgIHsKKyAgICAvKiBGU01DX0JhbmszX05BTkQgcmVnaXN0ZXJzIGNvbmZpZ3VyYXRpb24gKi8KKyAgICBGU01DX0JhbmszLT5QQ1IzID0gdG1wcGNyOworICAgIEZTTUNfQmFuazMtPlBNRU0zID0gdG1wcG1lbTsKKyAgICBGU01DX0JhbmszLT5QQVRUMyA9IHRtcHBhdHQ7CisgIH0KK30KKworLyoqCisgICogQGJyaWVmICBJbml0aWFsaXplcyB0aGUgRlNNQyBQQ0NBUkQgQmFuayBhY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmllZCAKKyAgKiAgICAgICAgIHBhcmFtZXRlcnMgaW4gdGhlIEZTTUNfUENDQVJESW5pdFN0cnVjdC4KKyAgKiBAcGFyYW0gIEZTTUNfUENDQVJESW5pdFN0cnVjdCA6IHBvaW50ZXIgdG8gYSBGU01DX1BDQ0FSREluaXRUeXBlRGVmCisgICogICAgICAgICBzdHJ1Y3R1cmUgdGhhdCBjb250YWlucyB0aGUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBmb3IgdGhlIEZTTUMgCisgICogICAgICAgICBQQ0NBUkQgQmFuay4gICAgICAgICAgICAgICAgICAgICAgIAorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBGU01DX1BDQ0FSREluaXQoRlNNQ19QQ0NBUkRJbml0VHlwZURlZiogRlNNQ19QQ0NBUkRJbml0U3RydWN0KQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfRlNNQ19XQUlUX0ZFQVRVUkUoRlNNQ19QQ0NBUkRJbml0U3RydWN0LT5GU01DX1dhaXRmZWF0dXJlKSk7CisgIGFzc2VydF9wYXJhbShJU19GU01DX1RDTFJfVElNRShGU01DX1BDQ0FSREluaXRTdHJ1Y3QtPkZTTUNfVENMUlNldHVwVGltZSkpOworICBhc3NlcnRfcGFyYW0oSVNfRlNNQ19UQVJfVElNRShGU01DX1BDQ0FSREluaXRTdHJ1Y3QtPkZTTUNfVEFSU2V0dXBUaW1lKSk7CisgCisgIGFzc2VydF9wYXJhbShJU19GU01DX1NFVFVQX1RJTUUoRlNNQ19QQ0NBUkRJbml0U3RydWN0LT5GU01DX0NvbW1vblNwYWNlVGltaW5nU3RydWN0LT5GU01DX1NldHVwVGltZSkpOworICBhc3NlcnRfcGFyYW0oSVNfRlNNQ19XQUlUX1RJTUUoRlNNQ19QQ0NBUkRJbml0U3RydWN0LT5GU01DX0NvbW1vblNwYWNlVGltaW5nU3RydWN0LT5GU01DX1dhaXRTZXR1cFRpbWUpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0ZTTUNfSE9MRF9USU1FKEZTTUNfUENDQVJESW5pdFN0cnVjdC0+RlNNQ19Db21tb25TcGFjZVRpbWluZ1N0cnVjdC0+RlNNQ19Ib2xkU2V0dXBUaW1lKSk7CisgIGFzc2VydF9wYXJhbShJU19GU01DX0hJWl9USU1FKEZTTUNfUENDQVJESW5pdFN0cnVjdC0+RlNNQ19Db21tb25TcGFjZVRpbWluZ1N0cnVjdC0+RlNNQ19IaVpTZXR1cFRpbWUpKTsKKyAgCisgIGFzc2VydF9wYXJhbShJU19GU01DX1NFVFVQX1RJTUUoRlNNQ19QQ0NBUkRJbml0U3RydWN0LT5GU01DX0F0dHJpYnV0ZVNwYWNlVGltaW5nU3RydWN0LT5GU01DX1NldHVwVGltZSkpOworICBhc3NlcnRfcGFyYW0oSVNfRlNNQ19XQUlUX1RJTUUoRlNNQ19QQ0NBUkRJbml0U3RydWN0LT5GU01DX0F0dHJpYnV0ZVNwYWNlVGltaW5nU3RydWN0LT5GU01DX1dhaXRTZXR1cFRpbWUpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0ZTTUNfSE9MRF9USU1FKEZTTUNfUENDQVJESW5pdFN0cnVjdC0+RlNNQ19BdHRyaWJ1dGVTcGFjZVRpbWluZ1N0cnVjdC0+RlNNQ19Ib2xkU2V0dXBUaW1lKSk7CisgIGFzc2VydF9wYXJhbShJU19GU01DX0hJWl9USU1FKEZTTUNfUENDQVJESW5pdFN0cnVjdC0+RlNNQ19BdHRyaWJ1dGVTcGFjZVRpbWluZ1N0cnVjdC0+RlNNQ19IaVpTZXR1cFRpbWUpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0ZTTUNfU0VUVVBfVElNRShGU01DX1BDQ0FSREluaXRTdHJ1Y3QtPkZTTUNfSU9TcGFjZVRpbWluZ1N0cnVjdC0+RlNNQ19TZXR1cFRpbWUpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0ZTTUNfV0FJVF9USU1FKEZTTUNfUENDQVJESW5pdFN0cnVjdC0+RlNNQ19JT1NwYWNlVGltaW5nU3RydWN0LT5GU01DX1dhaXRTZXR1cFRpbWUpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0ZTTUNfSE9MRF9USU1FKEZTTUNfUENDQVJESW5pdFN0cnVjdC0+RlNNQ19JT1NwYWNlVGltaW5nU3RydWN0LT5GU01DX0hvbGRTZXR1cFRpbWUpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0ZTTUNfSElaX1RJTUUoRlNNQ19QQ0NBUkRJbml0U3RydWN0LT5GU01DX0lPU3BhY2VUaW1pbmdTdHJ1Y3QtPkZTTUNfSGlaU2V0dXBUaW1lKSk7CisgIAorICAvKiBTZXQgdGhlIFBDUjQgcmVnaXN0ZXIgdmFsdWUgYWNjb3JkaW5nIHRvIEZTTUNfUENDQVJESW5pdFN0cnVjdCBwYXJhbWV0ZXJzICovCisgIEZTTUNfQmFuazQtPlBDUjQgPSAodWludDMyX3QpRlNNQ19QQ0NBUkRJbml0U3RydWN0LT5GU01DX1dhaXRmZWF0dXJlIHwKKyAgICAgICAgICAgICAgICAgICAgIEZTTUNfTWVtb3J5RGF0YVdpZHRoXzE2YiB8ICAKKyAgICAgICAgICAgICAgICAgICAgIChGU01DX1BDQ0FSREluaXRTdHJ1Y3QtPkZTTUNfVENMUlNldHVwVGltZSA8PCA5KSB8CisgICAgICAgICAgICAgICAgICAgICAoRlNNQ19QQ0NBUkRJbml0U3RydWN0LT5GU01DX1RBUlNldHVwVGltZSA8PCAxMyk7CisgICAgICAgICAgICAKKyAgLyogU2V0IFBNRU00IHJlZ2lzdGVyIHZhbHVlIGFjY29yZGluZyB0byBGU01DX0NvbW1vblNwYWNlVGltaW5nU3RydWN0dXJlIHBhcmFtZXRlcnMgKi8KKyAgRlNNQ19CYW5rNC0+UE1FTTQgPSAodWludDMyX3QpRlNNQ19QQ0NBUkRJbml0U3RydWN0LT5GU01DX0NvbW1vblNwYWNlVGltaW5nU3RydWN0LT5GU01DX1NldHVwVGltZSB8CisgICAgICAgICAgICAgICAgICAgICAgKEZTTUNfUENDQVJESW5pdFN0cnVjdC0+RlNNQ19Db21tb25TcGFjZVRpbWluZ1N0cnVjdC0+RlNNQ19XYWl0U2V0dXBUaW1lIDw8IDgpIHwKKyAgICAgICAgICAgICAgICAgICAgICAoRlNNQ19QQ0NBUkRJbml0U3RydWN0LT5GU01DX0NvbW1vblNwYWNlVGltaW5nU3RydWN0LT5GU01DX0hvbGRTZXR1cFRpbWUgPDwgMTYpfAorICAgICAgICAgICAgICAgICAgICAgIChGU01DX1BDQ0FSREluaXRTdHJ1Y3QtPkZTTUNfQ29tbW9uU3BhY2VUaW1pbmdTdHJ1Y3QtPkZTTUNfSGlaU2V0dXBUaW1lIDw8IDI0KTsgCisgICAgICAgICAgICAKKyAgLyogU2V0IFBBVFQ0IHJlZ2lzdGVyIHZhbHVlIGFjY29yZGluZyB0byBGU01DX0F0dHJpYnV0ZVNwYWNlVGltaW5nU3RydWN0dXJlIHBhcmFtZXRlcnMgKi8KKyAgRlNNQ19CYW5rNC0+UEFUVDQgPSAodWludDMyX3QpRlNNQ19QQ0NBUkRJbml0U3RydWN0LT5GU01DX0F0dHJpYnV0ZVNwYWNlVGltaW5nU3RydWN0LT5GU01DX1NldHVwVGltZSB8CisgICAgICAgICAgICAgICAgICAgICAgKEZTTUNfUENDQVJESW5pdFN0cnVjdC0+RlNNQ19BdHRyaWJ1dGVTcGFjZVRpbWluZ1N0cnVjdC0+RlNNQ19XYWl0U2V0dXBUaW1lIDw8IDgpIHwKKyAgICAgICAgICAgICAgICAgICAgICAoRlNNQ19QQ0NBUkRJbml0U3RydWN0LT5GU01DX0F0dHJpYnV0ZVNwYWNlVGltaW5nU3RydWN0LT5GU01DX0hvbGRTZXR1cFRpbWUgPDwgMTYpfAorICAgICAgICAgICAgICAgICAgICAgIChGU01DX1BDQ0FSREluaXRTdHJ1Y3QtPkZTTUNfQXR0cmlidXRlU3BhY2VUaW1pbmdTdHJ1Y3QtPkZTTUNfSGlaU2V0dXBUaW1lIDw8IDI0KTsJCisgICAgICAgICAgICAKKyAgLyogU2V0IFBJTzQgcmVnaXN0ZXIgdmFsdWUgYWNjb3JkaW5nIHRvIEZTTUNfSU9TcGFjZVRpbWluZ1N0cnVjdHVyZSBwYXJhbWV0ZXJzICovCisgIEZTTUNfQmFuazQtPlBJTzQgPSAodWludDMyX3QpRlNNQ19QQ0NBUkRJbml0U3RydWN0LT5GU01DX0lPU3BhY2VUaW1pbmdTdHJ1Y3QtPkZTTUNfU2V0dXBUaW1lIHwKKyAgICAgICAgICAgICAgICAgICAgIChGU01DX1BDQ0FSREluaXRTdHJ1Y3QtPkZTTUNfSU9TcGFjZVRpbWluZ1N0cnVjdC0+RlNNQ19XYWl0U2V0dXBUaW1lIDw8IDgpIHwKKyAgICAgICAgICAgICAgICAgICAgIChGU01DX1BDQ0FSREluaXRTdHJ1Y3QtPkZTTUNfSU9TcGFjZVRpbWluZ1N0cnVjdC0+RlNNQ19Ib2xkU2V0dXBUaW1lIDw8IDE2KXwKKyAgICAgICAgICAgICAgICAgICAgIChGU01DX1BDQ0FSREluaXRTdHJ1Y3QtPkZTTUNfSU9TcGFjZVRpbWluZ1N0cnVjdC0+RlNNQ19IaVpTZXR1cFRpbWUgPDwgMjQpOyAgICAgICAgICAgICAKK30KKworLyoqCisgICogQGJyaWVmICBGaWxscyBlYWNoIEZTTUNfTk9SU1JBTUluaXRTdHJ1Y3QgbWVtYmVyIHdpdGggaXRzIGRlZmF1bHQgdmFsdWUuCisgICogQHBhcmFtICBGU01DX05PUlNSQU1Jbml0U3RydWN0OiBwb2ludGVyIHRvIGEgRlNNQ19OT1JTUkFNSW5pdFR5cGVEZWYgCisgICogICAgICAgICBzdHJ1Y3R1cmUgd2hpY2ggd2lsbCBiZSBpbml0aWFsaXplZC4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgRlNNQ19OT1JTUkFNU3RydWN0SW5pdChGU01DX05PUlNSQU1Jbml0VHlwZURlZiogRlNNQ19OT1JTUkFNSW5pdFN0cnVjdCkKK3sgIAorICAvKiBSZXNldCBOT1IvU1JBTSBJbml0IHN0cnVjdHVyZSBwYXJhbWV0ZXJzIHZhbHVlcyAqLworICBGU01DX05PUlNSQU1Jbml0U3RydWN0LT5GU01DX0JhbmsgPSBGU01DX0JhbmsxX05PUlNSQU0xOworICBGU01DX05PUlNSQU1Jbml0U3RydWN0LT5GU01DX0RhdGFBZGRyZXNzTXV4ID0gRlNNQ19EYXRhQWRkcmVzc011eF9FbmFibGU7CisgIEZTTUNfTk9SU1JBTUluaXRTdHJ1Y3QtPkZTTUNfTWVtb3J5VHlwZSA9IEZTTUNfTWVtb3J5VHlwZV9TUkFNOworICBGU01DX05PUlNSQU1Jbml0U3RydWN0LT5GU01DX01lbW9yeURhdGFXaWR0aCA9IEZTTUNfTWVtb3J5RGF0YVdpZHRoXzhiOworICBGU01DX05PUlNSQU1Jbml0U3RydWN0LT5GU01DX0J1cnN0QWNjZXNzTW9kZSA9IEZTTUNfQnVyc3RBY2Nlc3NNb2RlX0Rpc2FibGU7CisgIEZTTUNfTk9SU1JBTUluaXRTdHJ1Y3QtPkZTTUNfQXN5bmNocm9ub3VzV2FpdCA9IEZTTUNfQXN5bmNocm9ub3VzV2FpdF9EaXNhYmxlOworICBGU01DX05PUlNSQU1Jbml0U3RydWN0LT5GU01DX1dhaXRTaWduYWxQb2xhcml0eSA9IEZTTUNfV2FpdFNpZ25hbFBvbGFyaXR5X0xvdzsKKyAgRlNNQ19OT1JTUkFNSW5pdFN0cnVjdC0+RlNNQ19XcmFwTW9kZSA9IEZTTUNfV3JhcE1vZGVfRGlzYWJsZTsKKyAgRlNNQ19OT1JTUkFNSW5pdFN0cnVjdC0+RlNNQ19XYWl0U2lnbmFsQWN0aXZlID0gRlNNQ19XYWl0U2lnbmFsQWN0aXZlX0JlZm9yZVdhaXRTdGF0ZTsKKyAgRlNNQ19OT1JTUkFNSW5pdFN0cnVjdC0+RlNNQ19Xcml0ZU9wZXJhdGlvbiA9IEZTTUNfV3JpdGVPcGVyYXRpb25fRW5hYmxlOworICBGU01DX05PUlNSQU1Jbml0U3RydWN0LT5GU01DX1dhaXRTaWduYWwgPSBGU01DX1dhaXRTaWduYWxfRW5hYmxlOworICBGU01DX05PUlNSQU1Jbml0U3RydWN0LT5GU01DX0V4dGVuZGVkTW9kZSA9IEZTTUNfRXh0ZW5kZWRNb2RlX0Rpc2FibGU7CisgIEZTTUNfTk9SU1JBTUluaXRTdHJ1Y3QtPkZTTUNfV3JpdGVCdXJzdCA9IEZTTUNfV3JpdGVCdXJzdF9EaXNhYmxlOworICBGU01DX05PUlNSQU1Jbml0U3RydWN0LT5GU01DX1JlYWRXcml0ZVRpbWluZ1N0cnVjdC0+RlNNQ19BZGRyZXNzU2V0dXBUaW1lID0gMHhGOworICBGU01DX05PUlNSQU1Jbml0U3RydWN0LT5GU01DX1JlYWRXcml0ZVRpbWluZ1N0cnVjdC0+RlNNQ19BZGRyZXNzSG9sZFRpbWUgPSAweEY7CisgIEZTTUNfTk9SU1JBTUluaXRTdHJ1Y3QtPkZTTUNfUmVhZFdyaXRlVGltaW5nU3RydWN0LT5GU01DX0RhdGFTZXR1cFRpbWUgPSAweEZGOworICBGU01DX05PUlNSQU1Jbml0U3RydWN0LT5GU01DX1JlYWRXcml0ZVRpbWluZ1N0cnVjdC0+RlNNQ19CdXNUdXJuQXJvdW5kRHVyYXRpb24gPSAweEY7CisgIEZTTUNfTk9SU1JBTUluaXRTdHJ1Y3QtPkZTTUNfUmVhZFdyaXRlVGltaW5nU3RydWN0LT5GU01DX0NMS0RpdmlzaW9uID0gMHhGOworICBGU01DX05PUlNSQU1Jbml0U3RydWN0LT5GU01DX1JlYWRXcml0ZVRpbWluZ1N0cnVjdC0+RlNNQ19EYXRhTGF0ZW5jeSA9IDB4RjsKKyAgRlNNQ19OT1JTUkFNSW5pdFN0cnVjdC0+RlNNQ19SZWFkV3JpdGVUaW1pbmdTdHJ1Y3QtPkZTTUNfQWNjZXNzTW9kZSA9IEZTTUNfQWNjZXNzTW9kZV9BOyAKKyAgRlNNQ19OT1JTUkFNSW5pdFN0cnVjdC0+RlNNQ19Xcml0ZVRpbWluZ1N0cnVjdC0+RlNNQ19BZGRyZXNzU2V0dXBUaW1lID0gMHhGOworICBGU01DX05PUlNSQU1Jbml0U3RydWN0LT5GU01DX1dyaXRlVGltaW5nU3RydWN0LT5GU01DX0FkZHJlc3NIb2xkVGltZSA9IDB4RjsKKyAgRlNNQ19OT1JTUkFNSW5pdFN0cnVjdC0+RlNNQ19Xcml0ZVRpbWluZ1N0cnVjdC0+RlNNQ19EYXRhU2V0dXBUaW1lID0gMHhGRjsKKyAgRlNNQ19OT1JTUkFNSW5pdFN0cnVjdC0+RlNNQ19Xcml0ZVRpbWluZ1N0cnVjdC0+RlNNQ19CdXNUdXJuQXJvdW5kRHVyYXRpb24gPSAweEY7CisgIEZTTUNfTk9SU1JBTUluaXRTdHJ1Y3QtPkZTTUNfV3JpdGVUaW1pbmdTdHJ1Y3QtPkZTTUNfQ0xLRGl2aXNpb24gPSAweEY7CisgIEZTTUNfTk9SU1JBTUluaXRTdHJ1Y3QtPkZTTUNfV3JpdGVUaW1pbmdTdHJ1Y3QtPkZTTUNfRGF0YUxhdGVuY3kgPSAweEY7CisgIEZTTUNfTk9SU1JBTUluaXRTdHJ1Y3QtPkZTTUNfV3JpdGVUaW1pbmdTdHJ1Y3QtPkZTTUNfQWNjZXNzTW9kZSA9IEZTTUNfQWNjZXNzTW9kZV9BOworfQorCisvKioKKyAgKiBAYnJpZWYgIEZpbGxzIGVhY2ggRlNNQ19OQU5ESW5pdFN0cnVjdCBtZW1iZXIgd2l0aCBpdHMgZGVmYXVsdCB2YWx1ZS4KKyAgKiBAcGFyYW0gIEZTTUNfTkFOREluaXRTdHJ1Y3Q6IHBvaW50ZXIgdG8gYSBGU01DX05BTkRJbml0VHlwZURlZiAKKyAgKiAgICAgICAgIHN0cnVjdHVyZSB3aGljaCB3aWxsIGJlIGluaXRpYWxpemVkLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBGU01DX05BTkRTdHJ1Y3RJbml0KEZTTUNfTkFOREluaXRUeXBlRGVmKiBGU01DX05BTkRJbml0U3RydWN0KQoreyAKKyAgLyogUmVzZXQgTkFORCBJbml0IHN0cnVjdHVyZSBwYXJhbWV0ZXJzIHZhbHVlcyAqLworICBGU01DX05BTkRJbml0U3RydWN0LT5GU01DX0JhbmsgPSBGU01DX0JhbmsyX05BTkQ7CisgIEZTTUNfTkFOREluaXRTdHJ1Y3QtPkZTTUNfV2FpdGZlYXR1cmUgPSBGU01DX1dhaXRmZWF0dXJlX0Rpc2FibGU7CisgIEZTTUNfTkFOREluaXRTdHJ1Y3QtPkZTTUNfTWVtb3J5RGF0YVdpZHRoID0gRlNNQ19NZW1vcnlEYXRhV2lkdGhfOGI7CisgIEZTTUNfTkFOREluaXRTdHJ1Y3QtPkZTTUNfRUNDID0gRlNNQ19FQ0NfRGlzYWJsZTsKKyAgRlNNQ19OQU5ESW5pdFN0cnVjdC0+RlNNQ19FQ0NQYWdlU2l6ZSA9IEZTTUNfRUNDUGFnZVNpemVfMjU2Qnl0ZXM7CisgIEZTTUNfTkFOREluaXRTdHJ1Y3QtPkZTTUNfVENMUlNldHVwVGltZSA9IDB4MDsKKyAgRlNNQ19OQU5ESW5pdFN0cnVjdC0+RlNNQ19UQVJTZXR1cFRpbWUgPSAweDA7CisgIEZTTUNfTkFOREluaXRTdHJ1Y3QtPkZTTUNfQ29tbW9uU3BhY2VUaW1pbmdTdHJ1Y3QtPkZTTUNfU2V0dXBUaW1lID0gMHhGQzsKKyAgRlNNQ19OQU5ESW5pdFN0cnVjdC0+RlNNQ19Db21tb25TcGFjZVRpbWluZ1N0cnVjdC0+RlNNQ19XYWl0U2V0dXBUaW1lID0gMHhGQzsKKyAgRlNNQ19OQU5ESW5pdFN0cnVjdC0+RlNNQ19Db21tb25TcGFjZVRpbWluZ1N0cnVjdC0+RlNNQ19Ib2xkU2V0dXBUaW1lID0gMHhGQzsKKyAgRlNNQ19OQU5ESW5pdFN0cnVjdC0+RlNNQ19Db21tb25TcGFjZVRpbWluZ1N0cnVjdC0+RlNNQ19IaVpTZXR1cFRpbWUgPSAweEZDOworICBGU01DX05BTkRJbml0U3RydWN0LT5GU01DX0F0dHJpYnV0ZVNwYWNlVGltaW5nU3RydWN0LT5GU01DX1NldHVwVGltZSA9IDB4RkM7CisgIEZTTUNfTkFOREluaXRTdHJ1Y3QtPkZTTUNfQXR0cmlidXRlU3BhY2VUaW1pbmdTdHJ1Y3QtPkZTTUNfV2FpdFNldHVwVGltZSA9IDB4RkM7CisgIEZTTUNfTkFOREluaXRTdHJ1Y3QtPkZTTUNfQXR0cmlidXRlU3BhY2VUaW1pbmdTdHJ1Y3QtPkZTTUNfSG9sZFNldHVwVGltZSA9IDB4RkM7CisgIEZTTUNfTkFOREluaXRTdHJ1Y3QtPkZTTUNfQXR0cmlidXRlU3BhY2VUaW1pbmdTdHJ1Y3QtPkZTTUNfSGlaU2V0dXBUaW1lID0gMHhGQzsJICAKK30KKworLyoqCisgICogQGJyaWVmICBGaWxscyBlYWNoIEZTTUNfUENDQVJESW5pdFN0cnVjdCBtZW1iZXIgd2l0aCBpdHMgZGVmYXVsdCB2YWx1ZS4KKyAgKiBAcGFyYW0gIEZTTUNfUENDQVJESW5pdFN0cnVjdDogcG9pbnRlciB0byBhIEZTTUNfUENDQVJESW5pdFR5cGVEZWYgCisgICogICAgICAgICBzdHJ1Y3R1cmUgd2hpY2ggd2lsbCBiZSBpbml0aWFsaXplZC4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgRlNNQ19QQ0NBUkRTdHJ1Y3RJbml0KEZTTUNfUENDQVJESW5pdFR5cGVEZWYqIEZTTUNfUENDQVJESW5pdFN0cnVjdCkKK3sKKyAgLyogUmVzZXQgUENDQVJEIEluaXQgc3RydWN0dXJlIHBhcmFtZXRlcnMgdmFsdWVzICovCisgIEZTTUNfUENDQVJESW5pdFN0cnVjdC0+RlNNQ19XYWl0ZmVhdHVyZSA9IEZTTUNfV2FpdGZlYXR1cmVfRGlzYWJsZTsKKyAgRlNNQ19QQ0NBUkRJbml0U3RydWN0LT5GU01DX1RDTFJTZXR1cFRpbWUgPSAweDA7CisgIEZTTUNfUENDQVJESW5pdFN0cnVjdC0+RlNNQ19UQVJTZXR1cFRpbWUgPSAweDA7CisgIEZTTUNfUENDQVJESW5pdFN0cnVjdC0+RlNNQ19Db21tb25TcGFjZVRpbWluZ1N0cnVjdC0+RlNNQ19TZXR1cFRpbWUgPSAweEZDOworICBGU01DX1BDQ0FSREluaXRTdHJ1Y3QtPkZTTUNfQ29tbW9uU3BhY2VUaW1pbmdTdHJ1Y3QtPkZTTUNfV2FpdFNldHVwVGltZSA9IDB4RkM7CisgIEZTTUNfUENDQVJESW5pdFN0cnVjdC0+RlNNQ19Db21tb25TcGFjZVRpbWluZ1N0cnVjdC0+RlNNQ19Ib2xkU2V0dXBUaW1lID0gMHhGQzsKKyAgRlNNQ19QQ0NBUkRJbml0U3RydWN0LT5GU01DX0NvbW1vblNwYWNlVGltaW5nU3RydWN0LT5GU01DX0hpWlNldHVwVGltZSA9IDB4RkM7CisgIEZTTUNfUENDQVJESW5pdFN0cnVjdC0+RlNNQ19BdHRyaWJ1dGVTcGFjZVRpbWluZ1N0cnVjdC0+RlNNQ19TZXR1cFRpbWUgPSAweEZDOworICBGU01DX1BDQ0FSREluaXRTdHJ1Y3QtPkZTTUNfQXR0cmlidXRlU3BhY2VUaW1pbmdTdHJ1Y3QtPkZTTUNfV2FpdFNldHVwVGltZSA9IDB4RkM7CisgIEZTTUNfUENDQVJESW5pdFN0cnVjdC0+RlNNQ19BdHRyaWJ1dGVTcGFjZVRpbWluZ1N0cnVjdC0+RlNNQ19Ib2xkU2V0dXBUaW1lID0gMHhGQzsKKyAgRlNNQ19QQ0NBUkRJbml0U3RydWN0LT5GU01DX0F0dHJpYnV0ZVNwYWNlVGltaW5nU3RydWN0LT5GU01DX0hpWlNldHVwVGltZSA9IDB4RkM7CQorICBGU01DX1BDQ0FSREluaXRTdHJ1Y3QtPkZTTUNfSU9TcGFjZVRpbWluZ1N0cnVjdC0+RlNNQ19TZXR1cFRpbWUgPSAweEZDOworICBGU01DX1BDQ0FSREluaXRTdHJ1Y3QtPkZTTUNfSU9TcGFjZVRpbWluZ1N0cnVjdC0+RlNNQ19XYWl0U2V0dXBUaW1lID0gMHhGQzsKKyAgRlNNQ19QQ0NBUkRJbml0U3RydWN0LT5GU01DX0lPU3BhY2VUaW1pbmdTdHJ1Y3QtPkZTTUNfSG9sZFNldHVwVGltZSA9IDB4RkM7CisgIEZTTUNfUENDQVJESW5pdFN0cnVjdC0+RlNNQ19JT1NwYWNlVGltaW5nU3RydWN0LT5GU01DX0hpWlNldHVwVGltZSA9IDB4RkM7Cit9CisKKy8qKgorICAqIEBicmllZiAgRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgc3BlY2lmaWVkIE5PUi9TUkFNIE1lbW9yeSBCYW5rLgorICAqIEBwYXJhbSAgRlNNQ19CYW5rOiBzcGVjaWZpZXMgdGhlIEZTTUMgQmFuayB0byBiZSB1c2VkCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIEZTTUNfQmFuazFfTk9SU1JBTTE6IEZTTUMgQmFuazEgTk9SL1NSQU0xICAKKyAgKiAgICAgQGFyZyBGU01DX0JhbmsxX05PUlNSQU0yOiBGU01DIEJhbmsxIE5PUi9TUkFNMiAKKyAgKiAgICAgQGFyZyBGU01DX0JhbmsxX05PUlNSQU0zOiBGU01DIEJhbmsxIE5PUi9TUkFNMyAKKyAgKiAgICAgQGFyZyBGU01DX0JhbmsxX05PUlNSQU00OiBGU01DIEJhbmsxIE5PUi9TUkFNNCAKKyAgKiBAcGFyYW0gIE5ld1N0YXRlOiBuZXcgc3RhdGUgb2YgdGhlIEZTTUNfQmFuay4gVGhpcyBwYXJhbWV0ZXIgY2FuIGJlOiBFTkFCTEUgb3IgRElTQUJMRS4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgRlNNQ19OT1JTUkFNQ21kKHVpbnQzMl90IEZTTUNfQmFuaywgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKQoreworICBhc3NlcnRfcGFyYW0oSVNfRlNNQ19OT1JTUkFNX0JBTksoRlNNQ19CYW5rKSk7CisgIGFzc2VydF9wYXJhbShJU19GVU5DVElPTkFMX1NUQVRFKE5ld1N0YXRlKSk7CisgIAorICBpZiAoTmV3U3RhdGUgIT0gRElTQUJMRSkKKyAgeworICAgIC8qIEVuYWJsZSB0aGUgc2VsZWN0ZWQgTk9SL1NSQU0gQmFuayBieSBzZXR0aW5nIHRoZSBQQktFTiBiaXQgaW4gdGhlIEJDUnggcmVnaXN0ZXIgKi8KKyAgICBGU01DX0JhbmsxLT5CVENSW0ZTTUNfQmFua10gfD0gQkNSX01CS0VOX1NldDsKKyAgfQorICBlbHNlCisgIHsKKyAgICAvKiBEaXNhYmxlIHRoZSBzZWxlY3RlZCBOT1IvU1JBTSBCYW5rIGJ5IGNsZWFyaW5nIHRoZSBQQktFTiBiaXQgaW4gdGhlIEJDUnggcmVnaXN0ZXIgKi8KKyAgICBGU01DX0JhbmsxLT5CVENSW0ZTTUNfQmFua10gJj0gQkNSX01CS0VOX1Jlc2V0OworICB9Cit9CisKKy8qKgorICAqIEBicmllZiAgRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgc3BlY2lmaWVkIE5BTkQgTWVtb3J5IEJhbmsuCisgICogQHBhcmFtICBGU01DX0Jhbms6IHNwZWNpZmllcyB0aGUgRlNNQyBCYW5rIHRvIGJlIHVzZWQKKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICAgIEBhcmcgRlNNQ19CYW5rMl9OQU5EOiBGU01DIEJhbmsyIE5BTkQgCisgICogICAgIEBhcmcgRlNNQ19CYW5rM19OQU5EOiBGU01DIEJhbmszIE5BTkQKKyAgKiBAcGFyYW0gIE5ld1N0YXRlOiBuZXcgc3RhdGUgb2YgdGhlIEZTTUNfQmFuay4gVGhpcyBwYXJhbWV0ZXIgY2FuIGJlOiBFTkFCTEUgb3IgRElTQUJMRS4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgRlNNQ19OQU5EQ21kKHVpbnQzMl90IEZTTUNfQmFuaywgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKQoreworICBhc3NlcnRfcGFyYW0oSVNfRlNNQ19OQU5EX0JBTksoRlNNQ19CYW5rKSk7CisgIGFzc2VydF9wYXJhbShJU19GVU5DVElPTkFMX1NUQVRFKE5ld1N0YXRlKSk7CisgIAorICBpZiAoTmV3U3RhdGUgIT0gRElTQUJMRSkKKyAgeworICAgIC8qIEVuYWJsZSB0aGUgc2VsZWN0ZWQgTkFORCBCYW5rIGJ5IHNldHRpbmcgdGhlIFBCS0VOIGJpdCBpbiB0aGUgUENSeCByZWdpc3RlciAqLworICAgIGlmKEZTTUNfQmFuayA9PSBGU01DX0JhbmsyX05BTkQpCisgICAgeworICAgICAgRlNNQ19CYW5rMi0+UENSMiB8PSBQQ1JfUEJLRU5fU2V0OworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgRlNNQ19CYW5rMy0+UENSMyB8PSBQQ1JfUEJLRU5fU2V0OworICAgIH0KKyAgfQorICBlbHNlCisgIHsKKyAgICAvKiBEaXNhYmxlIHRoZSBzZWxlY3RlZCBOQU5EIEJhbmsgYnkgY2xlYXJpbmcgdGhlIFBCS0VOIGJpdCBpbiB0aGUgUENSeCByZWdpc3RlciAqLworICAgIGlmKEZTTUNfQmFuayA9PSBGU01DX0JhbmsyX05BTkQpCisgICAgeworICAgICAgRlNNQ19CYW5rMi0+UENSMiAmPSBQQ1JfUEJLRU5fUmVzZXQ7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICBGU01DX0JhbmszLT5QQ1IzICY9IFBDUl9QQktFTl9SZXNldDsKKyAgICB9CisgIH0KK30KKworLyoqCisgICogQGJyaWVmICBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBQQ0NBUkQgTWVtb3J5IEJhbmsuCisgICogQHBhcmFtICBOZXdTdGF0ZTogbmV3IHN0YXRlIG9mIHRoZSBQQ0NBUkQgTWVtb3J5IEJhbmsuICAKKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZTogRU5BQkxFIG9yIERJU0FCTEUuCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIEZTTUNfUENDQVJEQ21kKEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSkKK3sKKyAgYXNzZXJ0X3BhcmFtKElTX0ZVTkNUSU9OQUxfU1RBVEUoTmV3U3RhdGUpKTsKKyAgCisgIGlmIChOZXdTdGF0ZSAhPSBESVNBQkxFKQorICB7CisgICAgLyogRW5hYmxlIHRoZSBQQ0NBUkQgQmFuayBieSBzZXR0aW5nIHRoZSBQQktFTiBiaXQgaW4gdGhlIFBDUjQgcmVnaXN0ZXIgKi8KKyAgICBGU01DX0Jhbms0LT5QQ1I0IHw9IFBDUl9QQktFTl9TZXQ7CisgIH0KKyAgZWxzZQorICB7CisgICAgLyogRGlzYWJsZSB0aGUgUENDQVJEIEJhbmsgYnkgY2xlYXJpbmcgdGhlIFBCS0VOIGJpdCBpbiB0aGUgUENSNCByZWdpc3RlciAqLworICAgIEZTTUNfQmFuazQtPlBDUjQgJj0gUENSX1BCS0VOX1Jlc2V0OworICB9Cit9CisKKy8qKgorICAqIEBicmllZiAgRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgRlNNQyBOQU5EIEVDQyBmZWF0dXJlLgorICAqIEBwYXJhbSAgRlNNQ19CYW5rOiBzcGVjaWZpZXMgdGhlIEZTTUMgQmFuayB0byBiZSB1c2VkCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIEZTTUNfQmFuazJfTkFORDogRlNNQyBCYW5rMiBOQU5EIAorICAqICAgICBAYXJnIEZTTUNfQmFuazNfTkFORDogRlNNQyBCYW5rMyBOQU5ECisgICogQHBhcmFtICBOZXdTdGF0ZTogbmV3IHN0YXRlIG9mIHRoZSBGU01DIE5BTkQgRUNDIGZlYXR1cmUuICAKKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZTogRU5BQkxFIG9yIERJU0FCTEUuCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIEZTTUNfTkFOREVDQ0NtZCh1aW50MzJfdCBGU01DX0JhbmssIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSkKK3sKKyAgYXNzZXJ0X3BhcmFtKElTX0ZTTUNfTkFORF9CQU5LKEZTTUNfQmFuaykpOworICBhc3NlcnRfcGFyYW0oSVNfRlVOQ1RJT05BTF9TVEFURShOZXdTdGF0ZSkpOworICAKKyAgaWYgKE5ld1N0YXRlICE9IERJU0FCTEUpCisgIHsKKyAgICAvKiBFbmFibGUgdGhlIHNlbGVjdGVkIE5BTkQgQmFuayBFQ0MgZnVuY3Rpb24gYnkgc2V0dGluZyB0aGUgRUNDRU4gYml0IGluIHRoZSBQQ1J4IHJlZ2lzdGVyICovCisgICAgaWYoRlNNQ19CYW5rID09IEZTTUNfQmFuazJfTkFORCkKKyAgICB7CisgICAgICBGU01DX0JhbmsyLT5QQ1IyIHw9IFBDUl9FQ0NFTl9TZXQ7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICBGU01DX0JhbmszLT5QQ1IzIHw9IFBDUl9FQ0NFTl9TZXQ7CisgICAgfQorICB9CisgIGVsc2UKKyAgeworICAgIC8qIERpc2FibGUgdGhlIHNlbGVjdGVkIE5BTkQgQmFuayBFQ0MgZnVuY3Rpb24gYnkgY2xlYXJpbmcgdGhlIEVDQ0VOIGJpdCBpbiB0aGUgUENSeCByZWdpc3RlciAqLworICAgIGlmKEZTTUNfQmFuayA9PSBGU01DX0JhbmsyX05BTkQpCisgICAgeworICAgICAgRlNNQ19CYW5rMi0+UENSMiAmPSBQQ1JfRUNDRU5fUmVzZXQ7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICBGU01DX0JhbmszLT5QQ1IzICY9IFBDUl9FQ0NFTl9SZXNldDsKKyAgICB9CisgIH0KK30KKworLyoqCisgICogQGJyaWVmICBSZXR1cm5zIHRoZSBlcnJvciBjb3JyZWN0aW9uIGNvZGUgcmVnaXN0ZXIgdmFsdWUuCisgICogQHBhcmFtICBGU01DX0Jhbms6IHNwZWNpZmllcyB0aGUgRlNNQyBCYW5rIHRvIGJlIHVzZWQKKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICAgIEBhcmcgRlNNQ19CYW5rMl9OQU5EOiBGU01DIEJhbmsyIE5BTkQgCisgICogICAgIEBhcmcgRlNNQ19CYW5rM19OQU5EOiBGU01DIEJhbmszIE5BTkQKKyAgKiBAcmV0dmFsIFRoZSBFcnJvciBDb3JyZWN0aW9uIENvZGUgKEVDQykgdmFsdWUuCisgICovCit1aW50MzJfdCBGU01DX0dldEVDQyh1aW50MzJfdCBGU01DX0JhbmspCit7CisgIHVpbnQzMl90IGVjY3ZhbCA9IDB4MDAwMDAwMDA7CisgIAorICBpZihGU01DX0JhbmsgPT0gRlNNQ19CYW5rMl9OQU5EKQorICB7CisgICAgLyogR2V0IHRoZSBFQ0NSMiByZWdpc3RlciB2YWx1ZSAqLworICAgIGVjY3ZhbCA9IEZTTUNfQmFuazItPkVDQ1IyOworICB9CisgIGVsc2UKKyAgeworICAgIC8qIEdldCB0aGUgRUNDUjMgcmVnaXN0ZXIgdmFsdWUgKi8KKyAgICBlY2N2YWwgPSBGU01DX0JhbmszLT5FQ0NSMzsKKyAgfQorICAvKiBSZXR1cm4gdGhlIGVycm9yIGNvcnJlY3Rpb24gY29kZSB2YWx1ZSAqLworICByZXR1cm4oZWNjdmFsKTsKK30KKworLyoqCisgICogQGJyaWVmICBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBzcGVjaWZpZWQgRlNNQyBpbnRlcnJ1cHRzLgorICAqIEBwYXJhbSAgRlNNQ19CYW5rOiBzcGVjaWZpZXMgdGhlIEZTTUMgQmFuayB0byBiZSB1c2VkCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIEZTTUNfQmFuazJfTkFORDogRlNNQyBCYW5rMiBOQU5EIAorICAqICAgICBAYXJnIEZTTUNfQmFuazNfTkFORDogRlNNQyBCYW5rMyBOQU5ECisgICogICAgIEBhcmcgRlNNQ19CYW5rNF9QQ0NBUkQ6IEZTTUMgQmFuazQgUENDQVJECisgICogQHBhcmFtICBGU01DX0lUOiBzcGVjaWZpZXMgdGhlIEZTTUMgaW50ZXJydXB0IHNvdXJjZXMgdG8gYmUgZW5hYmxlZCBvciBkaXNhYmxlZC4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhbnkgY29tYmluYXRpb24gb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICAgIEBhcmcgRlNNQ19JVF9SaXNpbmdFZGdlOiBSaXNpbmcgZWRnZSBkZXRlY3Rpb24gaW50ZXJydXB0LiAKKyAgKiAgICAgQGFyZyBGU01DX0lUX0xldmVsOiBMZXZlbCBlZGdlIGRldGVjdGlvbiBpbnRlcnJ1cHQuCisgICogICAgIEBhcmcgRlNNQ19JVF9GYWxsaW5nRWRnZTogRmFsbGluZyBlZGdlIGRldGVjdGlvbiBpbnRlcnJ1cHQuCisgICogQHBhcmFtICBOZXdTdGF0ZTogbmV3IHN0YXRlIG9mIHRoZSBzcGVjaWZpZWQgRlNNQyBpbnRlcnJ1cHRzLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlOiBFTkFCTEUgb3IgRElTQUJMRS4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgRlNNQ19JVENvbmZpZyh1aW50MzJfdCBGU01DX0JhbmssIHVpbnQzMl90IEZTTUNfSVQsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSkKK3sKKyAgYXNzZXJ0X3BhcmFtKElTX0ZTTUNfSVRfQkFOSyhGU01DX0JhbmspKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0ZTTUNfSVQoRlNNQ19JVCkpOwkKKyAgYXNzZXJ0X3BhcmFtKElTX0ZVTkNUSU9OQUxfU1RBVEUoTmV3U3RhdGUpKTsKKyAgCisgIGlmIChOZXdTdGF0ZSAhPSBESVNBQkxFKQorICB7CisgICAgLyogRW5hYmxlIHRoZSBzZWxlY3RlZCBGU01DX0JhbmsyIGludGVycnVwdHMgKi8KKyAgICBpZihGU01DX0JhbmsgPT0gRlNNQ19CYW5rMl9OQU5EKQorICAgIHsKKyAgICAgIEZTTUNfQmFuazItPlNSMiB8PSBGU01DX0lUOworICAgIH0KKyAgICAvKiBFbmFibGUgdGhlIHNlbGVjdGVkIEZTTUNfQmFuazMgaW50ZXJydXB0cyAqLworICAgIGVsc2UgaWYgKEZTTUNfQmFuayA9PSBGU01DX0JhbmszX05BTkQpCisgICAgeworICAgICAgRlNNQ19CYW5rMy0+U1IzIHw9IEZTTUNfSVQ7CisgICAgfQorICAgIC8qIEVuYWJsZSB0aGUgc2VsZWN0ZWQgRlNNQ19CYW5rNCBpbnRlcnJ1cHRzICovCisgICAgZWxzZQorICAgIHsKKyAgICAgIEZTTUNfQmFuazQtPlNSNCB8PSBGU01DX0lUOyAgICAKKyAgICB9CisgIH0KKyAgZWxzZQorICB7CisgICAgLyogRGlzYWJsZSB0aGUgc2VsZWN0ZWQgRlNNQ19CYW5rMiBpbnRlcnJ1cHRzICovCisgICAgaWYoRlNNQ19CYW5rID09IEZTTUNfQmFuazJfTkFORCkKKyAgICB7CisgICAgICAKKyAgICAgIEZTTUNfQmFuazItPlNSMiAmPSAodWludDMyX3QpfkZTTUNfSVQ7CisgICAgfQorICAgIC8qIERpc2FibGUgdGhlIHNlbGVjdGVkIEZTTUNfQmFuazMgaW50ZXJydXB0cyAqLworICAgIGVsc2UgaWYgKEZTTUNfQmFuayA9PSBGU01DX0JhbmszX05BTkQpCisgICAgeworICAgICAgRlNNQ19CYW5rMy0+U1IzICY9ICh1aW50MzJfdCl+RlNNQ19JVDsKKyAgICB9CisgICAgLyogRGlzYWJsZSB0aGUgc2VsZWN0ZWQgRlNNQ19CYW5rNCBpbnRlcnJ1cHRzICovCisgICAgZWxzZQorICAgIHsKKyAgICAgIEZTTUNfQmFuazQtPlNSNCAmPSAodWludDMyX3QpfkZTTUNfSVQ7ICAgIAorICAgIH0KKyAgfQorfQorCisvKioKKyAgKiBAYnJpZWYgIENoZWNrcyB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgRlNNQyBmbGFnIGlzIHNldCBvciBub3QuCisgICogQHBhcmFtICBGU01DX0Jhbms6IHNwZWNpZmllcyB0aGUgRlNNQyBCYW5rIHRvIGJlIHVzZWQKKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICAgIEBhcmcgRlNNQ19CYW5rMl9OQU5EOiBGU01DIEJhbmsyIE5BTkQgCisgICogICAgIEBhcmcgRlNNQ19CYW5rM19OQU5EOiBGU01DIEJhbmszIE5BTkQKKyAgKiAgICAgQGFyZyBGU01DX0Jhbms0X1BDQ0FSRDogRlNNQyBCYW5rNCBQQ0NBUkQKKyAgKiBAcGFyYW0gIEZTTUNfRkxBRzogc3BlY2lmaWVzIHRoZSBmbGFnIHRvIGNoZWNrLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBGU01DX0ZMQUdfUmlzaW5nRWRnZTogUmlzaW5nIGVnZGUgZGV0ZWN0aW9uIEZsYWcuCisgICogICAgIEBhcmcgRlNNQ19GTEFHX0xldmVsOiBMZXZlbCBkZXRlY3Rpb24gRmxhZy4KKyAgKiAgICAgQGFyZyBGU01DX0ZMQUdfRmFsbGluZ0VkZ2U6IEZhbGxpbmcgZWdkZSBkZXRlY3Rpb24gRmxhZy4KKyAgKiAgICAgQGFyZyBGU01DX0ZMQUdfRkVNUFQ6IEZpZm8gZW1wdHkgRmxhZy4gCisgICogQHJldHZhbCBUaGUgbmV3IHN0YXRlIG9mIEZTTUNfRkxBRyAoU0VUIG9yIFJFU0VUKS4KKyAgKi8KK0ZsYWdTdGF0dXMgRlNNQ19HZXRGbGFnU3RhdHVzKHVpbnQzMl90IEZTTUNfQmFuaywgdWludDMyX3QgRlNNQ19GTEFHKQoreworICBGbGFnU3RhdHVzIGJpdHN0YXR1cyA9IFJFU0VUOworICB1aW50MzJfdCB0bXBzciA9IDB4MDAwMDAwMDA7CisgIAorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfRlNNQ19HRVRGTEFHX0JBTksoRlNNQ19CYW5rKSk7CisgIGFzc2VydF9wYXJhbShJU19GU01DX0dFVF9GTEFHKEZTTUNfRkxBRykpOworICAKKyAgaWYoRlNNQ19CYW5rID09IEZTTUNfQmFuazJfTkFORCkKKyAgeworICAgIHRtcHNyID0gRlNNQ19CYW5rMi0+U1IyOworICB9ICAKKyAgZWxzZSBpZihGU01DX0JhbmsgPT0gRlNNQ19CYW5rM19OQU5EKQorICB7CisgICAgdG1wc3IgPSBGU01DX0JhbmszLT5TUjM7CisgIH0KKyAgLyogRlNNQ19CYW5rNF9QQ0NBUkQqLworICBlbHNlCisgIHsKKyAgICB0bXBzciA9IEZTTUNfQmFuazQtPlNSNDsKKyAgfSAKKyAgCisgIC8qIEdldCB0aGUgZmxhZyBzdGF0dXMgKi8KKyAgaWYgKCh0bXBzciAmIEZTTUNfRkxBRykgIT0gKHVpbnQxNl90KVJFU0VUICkKKyAgeworICAgIGJpdHN0YXR1cyA9IFNFVDsKKyAgfQorICBlbHNlCisgIHsKKyAgICBiaXRzdGF0dXMgPSBSRVNFVDsKKyAgfQorICAvKiBSZXR1cm4gdGhlIGZsYWcgc3RhdHVzICovCisgIHJldHVybiBiaXRzdGF0dXM7Cit9CisKKy8qKgorICAqIEBicmllZiAgQ2xlYXJzIHRoZSBGU01DJ3MgcGVuZGluZyBmbGFncy4KKyAgKiBAcGFyYW0gIEZTTUNfQmFuazogc3BlY2lmaWVzIHRoZSBGU01DIEJhbmsgdG8gYmUgdXNlZAorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBGU01DX0JhbmsyX05BTkQ6IEZTTUMgQmFuazIgTkFORCAKKyAgKiAgICAgQGFyZyBGU01DX0JhbmszX05BTkQ6IEZTTUMgQmFuazMgTkFORAorICAqICAgICBAYXJnIEZTTUNfQmFuazRfUENDQVJEOiBGU01DIEJhbms0IFBDQ0FSRAorICAqIEBwYXJhbSAgRlNNQ19GTEFHOiBzcGVjaWZpZXMgdGhlIGZsYWcgdG8gY2xlYXIuCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYW55IGNvbWJpbmF0aW9uIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIEZTTUNfRkxBR19SaXNpbmdFZGdlOiBSaXNpbmcgZWdkZSBkZXRlY3Rpb24gRmxhZy4KKyAgKiAgICAgQGFyZyBGU01DX0ZMQUdfTGV2ZWw6IExldmVsIGRldGVjdGlvbiBGbGFnLgorICAqICAgICBAYXJnIEZTTUNfRkxBR19GYWxsaW5nRWRnZTogRmFsbGluZyBlZ2RlIGRldGVjdGlvbiBGbGFnLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBGU01DX0NsZWFyRmxhZyh1aW50MzJfdCBGU01DX0JhbmssIHVpbnQzMl90IEZTTUNfRkxBRykKK3sKKyAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfRlNNQ19HRVRGTEFHX0JBTksoRlNNQ19CYW5rKSk7CisgIGFzc2VydF9wYXJhbShJU19GU01DX0NMRUFSX0ZMQUcoRlNNQ19GTEFHKSkgOworICAgIAorICBpZihGU01DX0JhbmsgPT0gRlNNQ19CYW5rMl9OQU5EKQorICB7CisgICAgRlNNQ19CYW5rMi0+U1IyICY9IH5GU01DX0ZMQUc7IAorICB9ICAKKyAgZWxzZSBpZihGU01DX0JhbmsgPT0gRlNNQ19CYW5rM19OQU5EKQorICB7CisgICAgRlNNQ19CYW5rMy0+U1IzICY9IH5GU01DX0ZMQUc7CisgIH0KKyAgLyogRlNNQ19CYW5rNF9QQ0NBUkQqLworICBlbHNlCisgIHsKKyAgICBGU01DX0Jhbms0LT5TUjQgJj0gfkZTTUNfRkxBRzsKKyAgfQorfQorCisvKioKKyAgKiBAYnJpZWYgIENoZWNrcyB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgRlNNQyBpbnRlcnJ1cHQgaGFzIG9jY3VycmVkIG9yIG5vdC4KKyAgKiBAcGFyYW0gIEZTTUNfQmFuazogc3BlY2lmaWVzIHRoZSBGU01DIEJhbmsgdG8gYmUgdXNlZAorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBGU01DX0JhbmsyX05BTkQ6IEZTTUMgQmFuazIgTkFORCAKKyAgKiAgICAgQGFyZyBGU01DX0JhbmszX05BTkQ6IEZTTUMgQmFuazMgTkFORAorICAqICAgICBAYXJnIEZTTUNfQmFuazRfUENDQVJEOiBGU01DIEJhbms0IFBDQ0FSRAorICAqIEBwYXJhbSAgRlNNQ19JVDogc3BlY2lmaWVzIHRoZSBGU01DIGludGVycnVwdCBzb3VyY2UgdG8gY2hlY2suCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIEZTTUNfSVRfUmlzaW5nRWRnZTogUmlzaW5nIGVkZ2UgZGV0ZWN0aW9uIGludGVycnVwdC4gCisgICogICAgIEBhcmcgRlNNQ19JVF9MZXZlbDogTGV2ZWwgZWRnZSBkZXRlY3Rpb24gaW50ZXJydXB0LgorICAqICAgICBAYXJnIEZTTUNfSVRfRmFsbGluZ0VkZ2U6IEZhbGxpbmcgZWRnZSBkZXRlY3Rpb24gaW50ZXJydXB0LiAKKyAgKiBAcmV0dmFsIFRoZSBuZXcgc3RhdGUgb2YgRlNNQ19JVCAoU0VUIG9yIFJFU0VUKS4KKyAgKi8KK0lUU3RhdHVzIEZTTUNfR2V0SVRTdGF0dXModWludDMyX3QgRlNNQ19CYW5rLCB1aW50MzJfdCBGU01DX0lUKQoreworICBJVFN0YXR1cyBiaXRzdGF0dXMgPSBSRVNFVDsKKyAgdWludDMyX3QgdG1wc3IgPSAweDAsIGl0c3RhdHVzID0gMHgwLCBpdGVuYWJsZSA9IDB4MDsgCisgIAorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfRlNNQ19JVF9CQU5LKEZTTUNfQmFuaykpOworICBhc3NlcnRfcGFyYW0oSVNfRlNNQ19HRVRfSVQoRlNNQ19JVCkpOworICAKKyAgaWYoRlNNQ19CYW5rID09IEZTTUNfQmFuazJfTkFORCkKKyAgeworICAgIHRtcHNyID0gRlNNQ19CYW5rMi0+U1IyOworICB9ICAKKyAgZWxzZSBpZihGU01DX0JhbmsgPT0gRlNNQ19CYW5rM19OQU5EKQorICB7CisgICAgdG1wc3IgPSBGU01DX0JhbmszLT5TUjM7CisgIH0KKyAgLyogRlNNQ19CYW5rNF9QQ0NBUkQqLworICBlbHNlCisgIHsKKyAgICB0bXBzciA9IEZTTUNfQmFuazQtPlNSNDsKKyAgfSAKKyAgCisgIGl0c3RhdHVzID0gdG1wc3IgJiBGU01DX0lUOworICAKKyAgaXRlbmFibGUgPSB0bXBzciAmIChGU01DX0lUID4+IDMpOworICBpZiAoKGl0c3RhdHVzICE9ICh1aW50MzJfdClSRVNFVCkgICYmIChpdGVuYWJsZSAhPSAodWludDMyX3QpUkVTRVQpKQorICB7CisgICAgYml0c3RhdHVzID0gU0VUOworICB9CisgIGVsc2UKKyAgeworICAgIGJpdHN0YXR1cyA9IFJFU0VUOworICB9CisgIHJldHVybiBiaXRzdGF0dXM7IAorfQorCisvKioKKyAgKiBAYnJpZWYgIENsZWFycyB0aGUgRlNNQydzIGludGVycnVwdCBwZW5kaW5nIGJpdHMuCisgICogQHBhcmFtICBGU01DX0Jhbms6IHNwZWNpZmllcyB0aGUgRlNNQyBCYW5rIHRvIGJlIHVzZWQKKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICAgIEBhcmcgRlNNQ19CYW5rMl9OQU5EOiBGU01DIEJhbmsyIE5BTkQgCisgICogICAgIEBhcmcgRlNNQ19CYW5rM19OQU5EOiBGU01DIEJhbmszIE5BTkQKKyAgKiAgICAgQGFyZyBGU01DX0Jhbms0X1BDQ0FSRDogRlNNQyBCYW5rNCBQQ0NBUkQKKyAgKiBAcGFyYW0gIEZTTUNfSVQ6IHNwZWNpZmllcyB0aGUgaW50ZXJydXB0IHBlbmRpbmcgYml0IHRvIGNsZWFyLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGFueSBjb21iaW5hdGlvbiBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBGU01DX0lUX1Jpc2luZ0VkZ2U6IFJpc2luZyBlZGdlIGRldGVjdGlvbiBpbnRlcnJ1cHQuIAorICAqICAgICBAYXJnIEZTTUNfSVRfTGV2ZWw6IExldmVsIGVkZ2UgZGV0ZWN0aW9uIGludGVycnVwdC4KKyAgKiAgICAgQGFyZyBGU01DX0lUX0ZhbGxpbmdFZGdlOiBGYWxsaW5nIGVkZ2UgZGV0ZWN0aW9uIGludGVycnVwdC4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgRlNNQ19DbGVhcklUUGVuZGluZ0JpdCh1aW50MzJfdCBGU01DX0JhbmssIHVpbnQzMl90IEZTTUNfSVQpCit7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19GU01DX0lUX0JBTksoRlNNQ19CYW5rKSk7CisgIGFzc2VydF9wYXJhbShJU19GU01DX0lUKEZTTUNfSVQpKTsKKyAgICAKKyAgaWYoRlNNQ19CYW5rID09IEZTTUNfQmFuazJfTkFORCkKKyAgeworICAgIEZTTUNfQmFuazItPlNSMiAmPSB+KEZTTUNfSVQgPj4gMyk7IAorICB9ICAKKyAgZWxzZSBpZihGU01DX0JhbmsgPT0gRlNNQ19CYW5rM19OQU5EKQorICB7CisgICAgRlNNQ19CYW5rMy0+U1IzICY9IH4oRlNNQ19JVCA+PiAzKTsKKyAgfQorICAvKiBGU01DX0Jhbms0X1BDQ0FSRCovCisgIGVsc2UKKyAgeworICAgIEZTTUNfQmFuazQtPlNSNCAmPSB+KEZTTUNfSVQgPj4gMyk7CisgIH0KK30KKworLyoqCisgICogQH0KKyAgKi8gCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgMjAxMSBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9zdF9md19saWIvc3JjL3N0bTMyZjEweF9ncGlvLmMgYi9zdF9md19saWIvc3JjL3N0bTMyZjEweF9ncGlvLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDU3ZmYxMQotLS0gL2Rldi9udWxsCisrKyBiL3N0X2Z3X2xpYi9zcmMvc3RtMzJmMTB4X2dwaW8uYwpAQCAtMCwwICsxLDY1MCBAQAorLyoqCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqIEBmaWxlICAgIHN0bTMyZjEweF9ncGlvLmMKKyAgKiBAYXV0aG9yICBNQ0QgQXBwbGljYXRpb24gVGVhbQorICAqIEB2ZXJzaW9uIFYzLjUuMAorICAqIEBkYXRlICAgIDExLU1hcmNoLTIwMTEKKyAgKiBAYnJpZWYgICBUaGlzIGZpbGUgcHJvdmlkZXMgYWxsIHRoZSBHUElPIGZpcm13YXJlIGZ1bmN0aW9ucy4KKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICogQGF0dGVudGlvbgorICAqCisgICogVEhFIFBSRVNFTlQgRklSTVdBUkUgV0hJQ0ggSVMgRk9SIEdVSURBTkNFIE9OTFkgQUlNUyBBVCBQUk9WSURJTkcgQ1VTVE9NRVJTCisgICogV0lUSCBDT0RJTkcgSU5GT1JNQVRJT04gUkVHQVJESU5HIFRIRUlSIFBST0RVQ1RTIElOIE9SREVSIEZPUiBUSEVNIFRPIFNBVkUKKyAgKiBUSU1FLiBBUyBBIFJFU1VMVCwgU1RNSUNST0VMRUNUUk9OSUNTIFNIQUxMIE5PVCBCRSBIRUxEIExJQUJMRSBGT1IgQU5ZCisgICogRElSRUNULCBJTkRJUkVDVCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgV0lUSCBSRVNQRUNUIFRPIEFOWSBDTEFJTVMgQVJJU0lORworICAqIEZST00gVEhFIENPTlRFTlQgT0YgU1VDSCBGSVJNV0FSRSBBTkQvT1IgVEhFIFVTRSBNQURFIEJZIENVU1RPTUVSUyBPRiBUSEUKKyAgKiBDT0RJTkcgSU5GT1JNQVRJT04gQ09OVEFJTkVEIEhFUkVJTiBJTiBDT05ORUNUSU9OIFdJVEggVEhFSVIgUFJPRFVDVFMuCisgICoKKyAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ09QWVJJR0hUIDIwMTEgU1RNaWNyb2VsZWN0cm9uaWNzPC9jZW50ZXI+PC9oMj4KKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICovCisKKy8qIEluY2x1ZGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisjaW5jbHVkZSAic3RtMzJmMTB4X2dwaW8uaCIKKyNpbmNsdWRlICJzdG0zMmYxMHhfcmNjLmgiCisKKy8qKiBAYWRkdG9ncm91cCBTVE0zMkYxMHhfU3RkUGVyaXBoX0RyaXZlcgorICAqIEB7CisgICovCisKKy8qKiBAZGVmZ3JvdXAgR1BJTyAKKyAgKiBAYnJpZWYgR1BJTyBkcml2ZXIgbW9kdWxlcworICAqIEB7CisgICovIAorCisvKiogQGRlZmdyb3VwIEdQSU9fUHJpdmF0ZV9UeXBlc0RlZmluaXRpb25zCisgICogQHsKKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBHUElPX1ByaXZhdGVfRGVmaW5lcworICAqIEB7CisgICovCisKKy8qIC0tLS0tLS0tLS0tLSBSQ0MgcmVnaXN0ZXJzIGJpdCBhZGRyZXNzIGluIHRoZSBhbGlhcyByZWdpb24gLS0tLS0tLS0tLS0tLS0tLSovCisjZGVmaW5lIEFGSU9fT0ZGU0VUICAgICAgICAgICAgICAgICAoQUZJT19CQVNFIC0gUEVSSVBIX0JBU0UpCisKKy8qIC0tLSBFVkVOVENSIFJlZ2lzdGVyIC0tLS0tKi8KKworLyogQWxpYXMgd29yZCBhZGRyZXNzIG9mIEVWT0UgYml0ICovCisjZGVmaW5lIEVWQ1JfT0ZGU0VUICAgICAgICAgICAgICAgICAoQUZJT19PRkZTRVQgKyAweDAwKQorI2RlZmluZSBFVk9FX0JpdE51bWJlciAgICAgICAgICAgICAgKCh1aW50OF90KTB4MDcpCisjZGVmaW5lIEVWQ1JfRVZPRV9CQiAgICAgICAgICAgICAgICAoUEVSSVBIX0JCX0JBU0UgKyAoRVZDUl9PRkZTRVQgKiAzMikgKyAoRVZPRV9CaXROdW1iZXIgKiA0KSkKKworCisvKiAtLS0gIE1BUFIgUmVnaXN0ZXIgLS0tKi8gCisvKiBBbGlhcyB3b3JkIGFkZHJlc3Mgb2YgTUlJX1JNSUlfU0VMIGJpdCAqLyAKKyNkZWZpbmUgTUFQUl9PRkZTRVQgICAgICAgICAgICAgICAgIChBRklPX09GRlNFVCArIDB4MDQpIAorI2RlZmluZSBNSUlfUk1JSV9TRUxfQml0TnVtYmVyICAgICAgKCh1OCkweDE3KSAKKyNkZWZpbmUgTUFQUl9NSUlfUk1JSV9TRUxfQkIgICAgICAgIChQRVJJUEhfQkJfQkFTRSArIChNQVBSX09GRlNFVCAqIDMyKSArIChNSUlfUk1JSV9TRUxfQml0TnVtYmVyICogNCkpCisKKworI2RlZmluZSBFVkNSX1BPUlRQSU5DT05GSUdfTUFTSyAgICAgKCh1aW50MTZfdCkweEZGODApCisjZGVmaW5lIExTQl9NQVNLICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4RkZGRikKKyNkZWZpbmUgREJHQUZSX1BPU0lUSU9OX01BU0sgICAgICAgICgodWludDMyX3QpMHgwMDBGMDAwMCkKKyNkZWZpbmUgREJHQUZSX1NXSkNGR19NQVNLICAgICAgICAgICgodWludDMyX3QpMHhGMEZGRkZGRikKKyNkZWZpbmUgREJHQUZSX0xPQ0FUSU9OX01BU0sgICAgICAgICgodWludDMyX3QpMHgwMDIwMDAwMCkKKyNkZWZpbmUgREJHQUZSX05VTUJJVFNfTUFTSyAgICAgICAgICgodWludDMyX3QpMHgwMDEwMDAwMCkKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgR1BJT19Qcml2YXRlX01hY3JvcworICAqIEB7CisgICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgR1BJT19Qcml2YXRlX1ZhcmlhYmxlcworICAqIEB7CisgICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgR1BJT19Qcml2YXRlX0Z1bmN0aW9uUHJvdG90eXBlcworICAqIEB7CisgICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgR1BJT19Qcml2YXRlX0Z1bmN0aW9ucworICAqIEB7CisgICovCisKKy8qKgorICAqIEBicmllZiAgRGVpbml0aWFsaXplcyB0aGUgR1BJT3ggcGVyaXBoZXJhbCByZWdpc3RlcnMgdG8gdGhlaXIgZGVmYXVsdCByZXNldCB2YWx1ZXMuCisgICogQHBhcmFtICBHUElPeDogd2hlcmUgeCBjYW4gYmUgKEEuLkcpIHRvIHNlbGVjdCB0aGUgR1BJTyBwZXJpcGhlcmFsLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBHUElPX0RlSW5pdChHUElPX1R5cGVEZWYqIEdQSU94KQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfR1BJT19BTExfUEVSSVBIKEdQSU94KSk7CisgIAorICBpZiAoR1BJT3ggPT0gR1BJT0EpCisgIHsKKyAgICBSQ0NfQVBCMlBlcmlwaFJlc2V0Q21kKFJDQ19BUEIyUGVyaXBoX0dQSU9BLCBFTkFCTEUpOworICAgIFJDQ19BUEIyUGVyaXBoUmVzZXRDbWQoUkNDX0FQQjJQZXJpcGhfR1BJT0EsIERJU0FCTEUpOworICB9CisgIGVsc2UgaWYgKEdQSU94ID09IEdQSU9CKQorICB7CisgICAgUkNDX0FQQjJQZXJpcGhSZXNldENtZChSQ0NfQVBCMlBlcmlwaF9HUElPQiwgRU5BQkxFKTsKKyAgICBSQ0NfQVBCMlBlcmlwaFJlc2V0Q21kKFJDQ19BUEIyUGVyaXBoX0dQSU9CLCBESVNBQkxFKTsKKyAgfQorICBlbHNlIGlmIChHUElPeCA9PSBHUElPQykKKyAgeworICAgIFJDQ19BUEIyUGVyaXBoUmVzZXRDbWQoUkNDX0FQQjJQZXJpcGhfR1BJT0MsIEVOQUJMRSk7CisgICAgUkNDX0FQQjJQZXJpcGhSZXNldENtZChSQ0NfQVBCMlBlcmlwaF9HUElPQywgRElTQUJMRSk7CisgIH0KKyAgZWxzZSBpZiAoR1BJT3ggPT0gR1BJT0QpCisgIHsKKyAgICBSQ0NfQVBCMlBlcmlwaFJlc2V0Q21kKFJDQ19BUEIyUGVyaXBoX0dQSU9ELCBFTkFCTEUpOworICAgIFJDQ19BUEIyUGVyaXBoUmVzZXRDbWQoUkNDX0FQQjJQZXJpcGhfR1BJT0QsIERJU0FCTEUpOworICB9ICAgIAorICBlbHNlIGlmIChHUElPeCA9PSBHUElPRSkKKyAgeworICAgIFJDQ19BUEIyUGVyaXBoUmVzZXRDbWQoUkNDX0FQQjJQZXJpcGhfR1BJT0UsIEVOQUJMRSk7CisgICAgUkNDX0FQQjJQZXJpcGhSZXNldENtZChSQ0NfQVBCMlBlcmlwaF9HUElPRSwgRElTQUJMRSk7CisgIH0gCisgIGVsc2UgaWYgKEdQSU94ID09IEdQSU9GKQorICB7CisgICAgUkNDX0FQQjJQZXJpcGhSZXNldENtZChSQ0NfQVBCMlBlcmlwaF9HUElPRiwgRU5BQkxFKTsKKyAgICBSQ0NfQVBCMlBlcmlwaFJlc2V0Q21kKFJDQ19BUEIyUGVyaXBoX0dQSU9GLCBESVNBQkxFKTsKKyAgfQorICBlbHNlCisgIHsKKyAgICBpZiAoR1BJT3ggPT0gR1BJT0cpCisgICAgeworICAgICAgUkNDX0FQQjJQZXJpcGhSZXNldENtZChSQ0NfQVBCMlBlcmlwaF9HUElPRywgRU5BQkxFKTsKKyAgICAgIFJDQ19BUEIyUGVyaXBoUmVzZXRDbWQoUkNDX0FQQjJQZXJpcGhfR1BJT0csIERJU0FCTEUpOworICAgIH0KKyAgfQorfQorCisvKioKKyAgKiBAYnJpZWYgIERlaW5pdGlhbGl6ZXMgdGhlIEFsdGVybmF0ZSBGdW5jdGlvbnMgKHJlbWFwLCBldmVudCBjb250cm9sCisgICogICBhbmQgRVhUSSBjb25maWd1cmF0aW9uKSByZWdpc3RlcnMgdG8gdGhlaXIgZGVmYXVsdCByZXNldCB2YWx1ZXMuCisgICogQHBhcmFtICBOb25lCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIEdQSU9fQUZJT0RlSW5pdCh2b2lkKQoreworICBSQ0NfQVBCMlBlcmlwaFJlc2V0Q21kKFJDQ19BUEIyUGVyaXBoX0FGSU8sIEVOQUJMRSk7CisgIFJDQ19BUEIyUGVyaXBoUmVzZXRDbWQoUkNDX0FQQjJQZXJpcGhfQUZJTywgRElTQUJMRSk7Cit9CisKKy8qKgorICAqIEBicmllZiAgSW5pdGlhbGl6ZXMgdGhlIEdQSU94IHBlcmlwaGVyYWwgYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQKKyAgKiAgICAgICAgIHBhcmFtZXRlcnMgaW4gdGhlIEdQSU9fSW5pdFN0cnVjdC4KKyAgKiBAcGFyYW0gIEdQSU94OiB3aGVyZSB4IGNhbiBiZSAoQS4uRykgdG8gc2VsZWN0IHRoZSBHUElPIHBlcmlwaGVyYWwuCisgICogQHBhcmFtICBHUElPX0luaXRTdHJ1Y3Q6IHBvaW50ZXIgdG8gYSBHUElPX0luaXRUeXBlRGVmIHN0cnVjdHVyZSB0aGF0CisgICogICAgICAgICBjb250YWlucyB0aGUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBmb3IgdGhlIHNwZWNpZmllZCBHUElPIHBlcmlwaGVyYWwuCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIEdQSU9fSW5pdChHUElPX1R5cGVEZWYqIEdQSU94LCBHUElPX0luaXRUeXBlRGVmKiBHUElPX0luaXRTdHJ1Y3QpCit7CisgIHVpbnQzMl90IGN1cnJlbnRtb2RlID0gMHgwMCwgY3VycmVudHBpbiA9IDB4MDAsIHBpbnBvcyA9IDB4MDAsIHBvcyA9IDB4MDA7CisgIHVpbnQzMl90IHRtcHJlZyA9IDB4MDAsIHBpbm1hc2sgPSAweDAwOworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfR1BJT19BTExfUEVSSVBIKEdQSU94KSk7CisgIGFzc2VydF9wYXJhbShJU19HUElPX01PREUoR1BJT19Jbml0U3RydWN0LT5HUElPX01vZGUpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0dQSU9fUElOKEdQSU9fSW5pdFN0cnVjdC0+R1BJT19QaW4pKTsgIAorICAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBHUElPIE1vZGUgQ29uZmlndXJhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisgIGN1cnJlbnRtb2RlID0gKCh1aW50MzJfdClHUElPX0luaXRTdHJ1Y3QtPkdQSU9fTW9kZSkgJiAoKHVpbnQzMl90KTB4MEYpOworICBpZiAoKCgodWludDMyX3QpR1BJT19Jbml0U3RydWN0LT5HUElPX01vZGUpICYgKCh1aW50MzJfdCkweDEwKSkgIT0gMHgwMCkKKyAgeyAKKyAgICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICAgIGFzc2VydF9wYXJhbShJU19HUElPX1NQRUVEKEdQSU9fSW5pdFN0cnVjdC0+R1BJT19TcGVlZCkpOworICAgIC8qIE91dHB1dCBtb2RlICovCisgICAgY3VycmVudG1vZGUgfD0gKHVpbnQzMl90KUdQSU9fSW5pdFN0cnVjdC0+R1BJT19TcGVlZDsKKyAgfQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEdQSU8gQ1JMIENvbmZpZ3VyYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyAgLyogQ29uZmlndXJlIHRoZSBlaWdodCBsb3cgcG9ydCBwaW5zICovCisgIGlmICgoKHVpbnQzMl90KUdQSU9fSW5pdFN0cnVjdC0+R1BJT19QaW4gJiAoKHVpbnQzMl90KTB4MDBGRikpICE9IDB4MDApCisgIHsKKyAgICB0bXByZWcgPSBHUElPeC0+Q1JMOworICAgIGZvciAocGlucG9zID0gMHgwMDsgcGlucG9zIDwgMHgwODsgcGlucG9zKyspCisgICAgeworICAgICAgcG9zID0gKCh1aW50MzJfdCkweDAxKSA8PCBwaW5wb3M7CisgICAgICAvKiBHZXQgdGhlIHBvcnQgcGlucyBwb3NpdGlvbiAqLworICAgICAgY3VycmVudHBpbiA9IChHUElPX0luaXRTdHJ1Y3QtPkdQSU9fUGluKSAmIHBvczsKKyAgICAgIGlmIChjdXJyZW50cGluID09IHBvcykKKyAgICAgIHsKKyAgICAgICAgcG9zID0gcGlucG9zIDw8IDI7CisgICAgICAgIC8qIENsZWFyIHRoZSBjb3JyZXNwb25kaW5nIGxvdyBjb250cm9sIHJlZ2lzdGVyIGJpdHMgKi8KKyAgICAgICAgcGlubWFzayA9ICgodWludDMyX3QpMHgwRikgPDwgcG9zOworICAgICAgICB0bXByZWcgJj0gfnBpbm1hc2s7CisgICAgICAgIC8qIFdyaXRlIHRoZSBtb2RlIGNvbmZpZ3VyYXRpb24gaW4gdGhlIGNvcnJlc3BvbmRpbmcgYml0cyAqLworICAgICAgICB0bXByZWcgfD0gKGN1cnJlbnRtb2RlIDw8IHBvcyk7CisgICAgICAgIC8qIFJlc2V0IHRoZSBjb3JyZXNwb25kaW5nIE9EUiBiaXQgKi8KKyAgICAgICAgaWYgKEdQSU9fSW5pdFN0cnVjdC0+R1BJT19Nb2RlID09IEdQSU9fTW9kZV9JUEQpCisgICAgICAgIHsKKyAgICAgICAgICBHUElPeC0+QlJSID0gKCgodWludDMyX3QpMHgwMSkgPDwgcGlucG9zKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAvKiBTZXQgdGhlIGNvcnJlc3BvbmRpbmcgT0RSIGJpdCAqLworICAgICAgICAgIGlmIChHUElPX0luaXRTdHJ1Y3QtPkdQSU9fTW9kZSA9PSBHUElPX01vZGVfSVBVKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIEdQSU94LT5CU1JSID0gKCgodWludDMyX3QpMHgwMSkgPDwgcGlucG9zKTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgICAgR1BJT3gtPkNSTCA9IHRtcHJlZzsKKyAgfQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEdQSU8gQ1JIIENvbmZpZ3VyYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyAgLyogQ29uZmlndXJlIHRoZSBlaWdodCBoaWdoIHBvcnQgcGlucyAqLworICBpZiAoR1BJT19Jbml0U3RydWN0LT5HUElPX1BpbiA+IDB4MDBGRikKKyAgeworICAgIHRtcHJlZyA9IEdQSU94LT5DUkg7CisgICAgZm9yIChwaW5wb3MgPSAweDAwOyBwaW5wb3MgPCAweDA4OyBwaW5wb3MrKykKKyAgICB7CisgICAgICBwb3MgPSAoKCh1aW50MzJfdCkweDAxKSA8PCAocGlucG9zICsgMHgwOCkpOworICAgICAgLyogR2V0IHRoZSBwb3J0IHBpbnMgcG9zaXRpb24gKi8KKyAgICAgIGN1cnJlbnRwaW4gPSAoKEdQSU9fSW5pdFN0cnVjdC0+R1BJT19QaW4pICYgcG9zKTsKKyAgICAgIGlmIChjdXJyZW50cGluID09IHBvcykKKyAgICAgIHsKKyAgICAgICAgcG9zID0gcGlucG9zIDw8IDI7CisgICAgICAgIC8qIENsZWFyIHRoZSBjb3JyZXNwb25kaW5nIGhpZ2ggY29udHJvbCByZWdpc3RlciBiaXRzICovCisgICAgICAgIHBpbm1hc2sgPSAoKHVpbnQzMl90KTB4MEYpIDw8IHBvczsKKyAgICAgICAgdG1wcmVnICY9IH5waW5tYXNrOworICAgICAgICAvKiBXcml0ZSB0aGUgbW9kZSBjb25maWd1cmF0aW9uIGluIHRoZSBjb3JyZXNwb25kaW5nIGJpdHMgKi8KKyAgICAgICAgdG1wcmVnIHw9IChjdXJyZW50bW9kZSA8PCBwb3MpOworICAgICAgICAvKiBSZXNldCB0aGUgY29ycmVzcG9uZGluZyBPRFIgYml0ICovCisgICAgICAgIGlmIChHUElPX0luaXRTdHJ1Y3QtPkdQSU9fTW9kZSA9PSBHUElPX01vZGVfSVBEKQorICAgICAgICB7CisgICAgICAgICAgR1BJT3gtPkJSUiA9ICgoKHVpbnQzMl90KTB4MDEpIDw8IChwaW5wb3MgKyAweDA4KSk7CisgICAgICAgIH0KKyAgICAgICAgLyogU2V0IHRoZSBjb3JyZXNwb25kaW5nIE9EUiBiaXQgKi8KKyAgICAgICAgaWYgKEdQSU9fSW5pdFN0cnVjdC0+R1BJT19Nb2RlID09IEdQSU9fTW9kZV9JUFUpCisgICAgICAgIHsKKyAgICAgICAgICBHUElPeC0+QlNSUiA9ICgoKHVpbnQzMl90KTB4MDEpIDw8IChwaW5wb3MgKyAweDA4KSk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgICAgR1BJT3gtPkNSSCA9IHRtcHJlZzsKKyAgfQorfQorCisvKioKKyAgKiBAYnJpZWYgIEZpbGxzIGVhY2ggR1BJT19Jbml0U3RydWN0IG1lbWJlciB3aXRoIGl0cyBkZWZhdWx0IHZhbHVlLgorICAqIEBwYXJhbSAgR1BJT19Jbml0U3RydWN0IDogcG9pbnRlciB0byBhIEdQSU9fSW5pdFR5cGVEZWYgc3RydWN0dXJlIHdoaWNoIHdpbGwKKyAgKiAgICAgICAgIGJlIGluaXRpYWxpemVkLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBHUElPX1N0cnVjdEluaXQoR1BJT19Jbml0VHlwZURlZiogR1BJT19Jbml0U3RydWN0KQoreworICAvKiBSZXNldCBHUElPIGluaXQgc3RydWN0dXJlIHBhcmFtZXRlcnMgdmFsdWVzICovCisgIEdQSU9fSW5pdFN0cnVjdC0+R1BJT19QaW4gID0gR1BJT19QaW5fQWxsOworICBHUElPX0luaXRTdHJ1Y3QtPkdQSU9fU3BlZWQgPSBHUElPX1NwZWVkXzJNSHo7CisgIEdQSU9fSW5pdFN0cnVjdC0+R1BJT19Nb2RlID0gR1BJT19Nb2RlX0lOX0ZMT0FUSU5HOworfQorCisvKioKKyAgKiBAYnJpZWYgIFJlYWRzIHRoZSBzcGVjaWZpZWQgaW5wdXQgcG9ydCBwaW4uCisgICogQHBhcmFtICBHUElPeDogd2hlcmUgeCBjYW4gYmUgKEEuLkcpIHRvIHNlbGVjdCB0aGUgR1BJTyBwZXJpcGhlcmFsLgorICAqIEBwYXJhbSAgR1BJT19QaW46ICBzcGVjaWZpZXMgdGhlIHBvcnQgYml0IHRvIHJlYWQuCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgR1BJT19QaW5feCB3aGVyZSB4IGNhbiBiZSAoMC4uMTUpLgorICAqIEByZXR2YWwgVGhlIGlucHV0IHBvcnQgcGluIHZhbHVlLgorICAqLwordWludDhfdCBHUElPX1JlYWRJbnB1dERhdGFCaXQoR1BJT19UeXBlRGVmKiBHUElPeCwgdWludDE2X3QgR1BJT19QaW4pCit7CisgIHVpbnQ4X3QgYml0c3RhdHVzID0gMHgwMDsKKyAgCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19HUElPX0FMTF9QRVJJUEgoR1BJT3gpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0dFVF9HUElPX1BJTihHUElPX1BpbikpOyAKKyAgCisgIGlmICgoR1BJT3gtPklEUiAmIEdQSU9fUGluKSAhPSAodWludDMyX3QpQml0X1JFU0VUKQorICB7CisgICAgYml0c3RhdHVzID0gKHVpbnQ4X3QpQml0X1NFVDsKKyAgfQorICBlbHNlCisgIHsKKyAgICBiaXRzdGF0dXMgPSAodWludDhfdClCaXRfUkVTRVQ7CisgIH0KKyAgcmV0dXJuIGJpdHN0YXR1czsKK30KKworLyoqCisgICogQGJyaWVmICBSZWFkcyB0aGUgc3BlY2lmaWVkIEdQSU8gaW5wdXQgZGF0YSBwb3J0LgorICAqIEBwYXJhbSAgR1BJT3g6IHdoZXJlIHggY2FuIGJlIChBLi5HKSB0byBzZWxlY3QgdGhlIEdQSU8gcGVyaXBoZXJhbC4KKyAgKiBAcmV0dmFsIEdQSU8gaW5wdXQgZGF0YSBwb3J0IHZhbHVlLgorICAqLwordWludDE2X3QgR1BJT19SZWFkSW5wdXREYXRhKEdQSU9fVHlwZURlZiogR1BJT3gpCit7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19HUElPX0FMTF9QRVJJUEgoR1BJT3gpKTsKKyAgCisgIHJldHVybiAoKHVpbnQxNl90KUdQSU94LT5JRFIpOworfQorCisvKioKKyAgKiBAYnJpZWYgIFJlYWRzIHRoZSBzcGVjaWZpZWQgb3V0cHV0IGRhdGEgcG9ydCBiaXQuCisgICogQHBhcmFtICBHUElPeDogd2hlcmUgeCBjYW4gYmUgKEEuLkcpIHRvIHNlbGVjdCB0aGUgR1BJTyBwZXJpcGhlcmFsLgorICAqIEBwYXJhbSAgR1BJT19QaW46ICBzcGVjaWZpZXMgdGhlIHBvcnQgYml0IHRvIHJlYWQuCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgR1BJT19QaW5feCB3aGVyZSB4IGNhbiBiZSAoMC4uMTUpLgorICAqIEByZXR2YWwgVGhlIG91dHB1dCBwb3J0IHBpbiB2YWx1ZS4KKyAgKi8KK3VpbnQ4X3QgR1BJT19SZWFkT3V0cHV0RGF0YUJpdChHUElPX1R5cGVEZWYqIEdQSU94LCB1aW50MTZfdCBHUElPX1BpbikKK3sKKyAgdWludDhfdCBiaXRzdGF0dXMgPSAweDAwOworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfR1BJT19BTExfUEVSSVBIKEdQSU94KSk7CisgIGFzc2VydF9wYXJhbShJU19HRVRfR1BJT19QSU4oR1BJT19QaW4pKTsgCisgIAorICBpZiAoKEdQSU94LT5PRFIgJiBHUElPX1BpbikgIT0gKHVpbnQzMl90KUJpdF9SRVNFVCkKKyAgeworICAgIGJpdHN0YXR1cyA9ICh1aW50OF90KUJpdF9TRVQ7CisgIH0KKyAgZWxzZQorICB7CisgICAgYml0c3RhdHVzID0gKHVpbnQ4X3QpQml0X1JFU0VUOworICB9CisgIHJldHVybiBiaXRzdGF0dXM7Cit9CisKKy8qKgorICAqIEBicmllZiAgUmVhZHMgdGhlIHNwZWNpZmllZCBHUElPIG91dHB1dCBkYXRhIHBvcnQuCisgICogQHBhcmFtICBHUElPeDogd2hlcmUgeCBjYW4gYmUgKEEuLkcpIHRvIHNlbGVjdCB0aGUgR1BJTyBwZXJpcGhlcmFsLgorICAqIEByZXR2YWwgR1BJTyBvdXRwdXQgZGF0YSBwb3J0IHZhbHVlLgorICAqLwordWludDE2X3QgR1BJT19SZWFkT3V0cHV0RGF0YShHUElPX1R5cGVEZWYqIEdQSU94KQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfR1BJT19BTExfUEVSSVBIKEdQSU94KSk7CisgICAgCisgIHJldHVybiAoKHVpbnQxNl90KUdQSU94LT5PRFIpOworfQorCisvKioKKyAgKiBAYnJpZWYgIFNldHMgdGhlIHNlbGVjdGVkIGRhdGEgcG9ydCBiaXRzLgorICAqIEBwYXJhbSAgR1BJT3g6IHdoZXJlIHggY2FuIGJlIChBLi5HKSB0byBzZWxlY3QgdGhlIEdQSU8gcGVyaXBoZXJhbC4KKyAgKiBAcGFyYW0gIEdQSU9fUGluOiBzcGVjaWZpZXMgdGhlIHBvcnQgYml0cyB0byBiZSB3cml0dGVuLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGFueSBjb21iaW5hdGlvbiBvZiBHUElPX1Bpbl94IHdoZXJlIHggY2FuIGJlICgwLi4xNSkuCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIEdQSU9fU2V0Qml0cyhHUElPX1R5cGVEZWYqIEdQSU94LCB1aW50MTZfdCBHUElPX1BpbikKK3sKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX0dQSU9fQUxMX1BFUklQSChHUElPeCkpOworICBhc3NlcnRfcGFyYW0oSVNfR1BJT19QSU4oR1BJT19QaW4pKTsKKyAgCisgIEdQSU94LT5CU1JSID0gR1BJT19QaW47Cit9CisKKy8qKgorICAqIEBicmllZiAgQ2xlYXJzIHRoZSBzZWxlY3RlZCBkYXRhIHBvcnQgYml0cy4KKyAgKiBAcGFyYW0gIEdQSU94OiB3aGVyZSB4IGNhbiBiZSAoQS4uRykgdG8gc2VsZWN0IHRoZSBHUElPIHBlcmlwaGVyYWwuCisgICogQHBhcmFtICBHUElPX1Bpbjogc3BlY2lmaWVzIHRoZSBwb3J0IGJpdHMgdG8gYmUgd3JpdHRlbi4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhbnkgY29tYmluYXRpb24gb2YgR1BJT19QaW5feCB3aGVyZSB4IGNhbiBiZSAoMC4uMTUpLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBHUElPX1Jlc2V0Qml0cyhHUElPX1R5cGVEZWYqIEdQSU94LCB1aW50MTZfdCBHUElPX1BpbikKK3sKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX0dQSU9fQUxMX1BFUklQSChHUElPeCkpOworICBhc3NlcnRfcGFyYW0oSVNfR1BJT19QSU4oR1BJT19QaW4pKTsKKyAgCisgIEdQSU94LT5CUlIgPSBHUElPX1BpbjsKK30KKworLyoqCisgICogQGJyaWVmICBTZXRzIG9yIGNsZWFycyB0aGUgc2VsZWN0ZWQgZGF0YSBwb3J0IGJpdC4KKyAgKiBAcGFyYW0gIEdQSU94OiB3aGVyZSB4IGNhbiBiZSAoQS4uRykgdG8gc2VsZWN0IHRoZSBHUElPIHBlcmlwaGVyYWwuCisgICogQHBhcmFtICBHUElPX1Bpbjogc3BlY2lmaWVzIHRoZSBwb3J0IGJpdCB0byBiZSB3cml0dGVuLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiBHUElPX1Bpbl94IHdoZXJlIHggY2FuIGJlICgwLi4xNSkuCisgICogQHBhcmFtICBCaXRWYWw6IHNwZWNpZmllcyB0aGUgdmFsdWUgdG8gYmUgd3JpdHRlbiB0byB0aGUgc2VsZWN0ZWQgYml0LgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgQml0QWN0aW9uIGVudW0gdmFsdWVzOgorICAqICAgICBAYXJnIEJpdF9SRVNFVDogdG8gY2xlYXIgdGhlIHBvcnQgcGluCisgICogICAgIEBhcmcgQml0X1NFVDogdG8gc2V0IHRoZSBwb3J0IHBpbgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBHUElPX1dyaXRlQml0KEdQSU9fVHlwZURlZiogR1BJT3gsIHVpbnQxNl90IEdQSU9fUGluLCBCaXRBY3Rpb24gQml0VmFsKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfR1BJT19BTExfUEVSSVBIKEdQSU94KSk7CisgIGFzc2VydF9wYXJhbShJU19HRVRfR1BJT19QSU4oR1BJT19QaW4pKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0dQSU9fQklUX0FDVElPTihCaXRWYWwpKTsgCisgIAorICBpZiAoQml0VmFsICE9IEJpdF9SRVNFVCkKKyAgeworICAgIEdQSU94LT5CU1JSID0gR1BJT19QaW47CisgIH0KKyAgZWxzZQorICB7CisgICAgR1BJT3gtPkJSUiA9IEdQSU9fUGluOworICB9Cit9CisKKy8qKgorICAqIEBicmllZiAgV3JpdGVzIGRhdGEgdG8gdGhlIHNwZWNpZmllZCBHUElPIGRhdGEgcG9ydC4KKyAgKiBAcGFyYW0gIEdQSU94OiB3aGVyZSB4IGNhbiBiZSAoQS4uRykgdG8gc2VsZWN0IHRoZSBHUElPIHBlcmlwaGVyYWwuCisgICogQHBhcmFtICBQb3J0VmFsOiBzcGVjaWZpZXMgdGhlIHZhbHVlIHRvIGJlIHdyaXR0ZW4gdG8gdGhlIHBvcnQgb3V0cHV0IGRhdGEgcmVnaXN0ZXIuCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIEdQSU9fV3JpdGUoR1BJT19UeXBlRGVmKiBHUElPeCwgdWludDE2X3QgUG9ydFZhbCkKK3sKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX0dQSU9fQUxMX1BFUklQSChHUElPeCkpOworICAKKyAgR1BJT3gtPk9EUiA9IFBvcnRWYWw7Cit9CisKKy8qKgorICAqIEBicmllZiAgTG9ja3MgR1BJTyBQaW5zIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzLgorICAqIEBwYXJhbSAgR1BJT3g6IHdoZXJlIHggY2FuIGJlIChBLi5HKSB0byBzZWxlY3QgdGhlIEdQSU8gcGVyaXBoZXJhbC4KKyAgKiBAcGFyYW0gIEdQSU9fUGluOiBzcGVjaWZpZXMgdGhlIHBvcnQgYml0IHRvIGJlIHdyaXR0ZW4uCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYW55IGNvbWJpbmF0aW9uIG9mIEdQSU9fUGluX3ggd2hlcmUgeCBjYW4gYmUgKDAuLjE1KS4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgR1BJT19QaW5Mb2NrQ29uZmlnKEdQSU9fVHlwZURlZiogR1BJT3gsIHVpbnQxNl90IEdQSU9fUGluKQoreworICB1aW50MzJfdCB0bXAgPSAweDAwMDEwMDAwOworICAKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX0dQSU9fQUxMX1BFUklQSChHUElPeCkpOworICBhc3NlcnRfcGFyYW0oSVNfR1BJT19QSU4oR1BJT19QaW4pKTsKKyAgCisgIHRtcCB8PSBHUElPX1BpbjsKKyAgLyogU2V0IExDS0sgYml0ICovCisgIEdQSU94LT5MQ0tSID0gdG1wOworICAvKiBSZXNldCBMQ0tLIGJpdCAqLworICBHUElPeC0+TENLUiA9ICBHUElPX1BpbjsKKyAgLyogU2V0IExDS0sgYml0ICovCisgIEdQSU94LT5MQ0tSID0gdG1wOworICAvKiBSZWFkIExDS0sgYml0Ki8KKyAgdG1wID0gR1BJT3gtPkxDS1I7CisgIC8qIFJlYWQgTENLSyBiaXQqLworICB0bXAgPSBHUElPeC0+TENLUjsKK30KKworLyoqCisgICogQGJyaWVmICBTZWxlY3RzIHRoZSBHUElPIHBpbiB1c2VkIGFzIEV2ZW50IG91dHB1dC4KKyAgKiBAcGFyYW0gIEdQSU9fUG9ydFNvdXJjZTogc2VsZWN0cyB0aGUgR1BJTyBwb3J0IHRvIGJlIHVzZWQgYXMgc291cmNlCisgICogICBmb3IgRXZlbnQgb3V0cHV0LgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIEdQSU9fUG9ydFNvdXJjZUdQSU94IHdoZXJlIHggY2FuIGJlIChBLi5FKS4KKyAgKiBAcGFyYW0gIEdQSU9fUGluU291cmNlOiBzcGVjaWZpZXMgdGhlIHBpbiBmb3IgdGhlIEV2ZW50IG91dHB1dC4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBHUElPX1BpblNvdXJjZXggd2hlcmUgeCBjYW4gYmUgKDAuLjE1KS4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgR1BJT19FdmVudE91dHB1dENvbmZpZyh1aW50OF90IEdQSU9fUG9ydFNvdXJjZSwgdWludDhfdCBHUElPX1BpblNvdXJjZSkKK3sKKyAgdWludDMyX3QgdG1wcmVnID0gMHgwMDsKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX0dQSU9fRVZFTlRPVVRfUE9SVF9TT1VSQ0UoR1BJT19Qb3J0U291cmNlKSk7CisgIGFzc2VydF9wYXJhbShJU19HUElPX1BJTl9TT1VSQ0UoR1BJT19QaW5Tb3VyY2UpKTsKKyAgICAKKyAgdG1wcmVnID0gQUZJTy0+RVZDUjsKKyAgLyogQ2xlYXIgdGhlIFBPUlRbNjo0XSBhbmQgUElOWzM6MF0gYml0cyAqLworICB0bXByZWcgJj0gRVZDUl9QT1JUUElOQ09ORklHX01BU0s7CisgIHRtcHJlZyB8PSAodWludDMyX3QpR1BJT19Qb3J0U291cmNlIDw8IDB4MDQ7CisgIHRtcHJlZyB8PSBHUElPX1BpblNvdXJjZTsKKyAgQUZJTy0+RVZDUiA9IHRtcHJlZzsKK30KKworLyoqCisgICogQGJyaWVmICBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBFdmVudCBPdXRwdXQuCisgICogQHBhcmFtICBOZXdTdGF0ZTogbmV3IHN0YXRlIG9mIHRoZSBFdmVudCBvdXRwdXQuCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmU6IEVOQUJMRSBvciBESVNBQkxFLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBHUElPX0V2ZW50T3V0cHV0Q21kKEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSkKK3sKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX0ZVTkNUSU9OQUxfU1RBVEUoTmV3U3RhdGUpKTsKKyAgCisgICooX19JTyB1aW50MzJfdCAqKSBFVkNSX0VWT0VfQkIgPSAodWludDMyX3QpTmV3U3RhdGU7Cit9CisKKy8qKgorICAqIEBicmllZiAgQ2hhbmdlcyB0aGUgbWFwcGluZyBvZiB0aGUgc3BlY2lmaWVkIHBpbi4KKyAgKiBAcGFyYW0gIEdQSU9fUmVtYXA6IHNlbGVjdHMgdGhlIHBpbiB0byByZW1hcC4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICAgIEBhcmcgR1BJT19SZW1hcF9TUEkxICAgICAgICAgICAgIDogU1BJMSBBbHRlcm5hdGUgRnVuY3Rpb24gbWFwcGluZworICAqICAgICBAYXJnIEdQSU9fUmVtYXBfSTJDMSAgICAgICAgICAgICA6IEkyQzEgQWx0ZXJuYXRlIEZ1bmN0aW9uIG1hcHBpbmcKKyAgKiAgICAgQGFyZyBHUElPX1JlbWFwX1VTQVJUMSAgICAgICAgICAgOiBVU0FSVDEgQWx0ZXJuYXRlIEZ1bmN0aW9uIG1hcHBpbmcKKyAgKiAgICAgQGFyZyBHUElPX1JlbWFwX1VTQVJUMiAgICAgICAgICAgOiBVU0FSVDIgQWx0ZXJuYXRlIEZ1bmN0aW9uIG1hcHBpbmcKKyAgKiAgICAgQGFyZyBHUElPX1BhcnRpYWxSZW1hcF9VU0FSVDMgICAgOiBVU0FSVDMgUGFydGlhbCBBbHRlcm5hdGUgRnVuY3Rpb24gbWFwcGluZworICAqICAgICBAYXJnIEdQSU9fRnVsbFJlbWFwX1VTQVJUMyAgICAgICA6IFVTQVJUMyBGdWxsIEFsdGVybmF0ZSBGdW5jdGlvbiBtYXBwaW5nCisgICogICAgIEBhcmcgR1BJT19QYXJ0aWFsUmVtYXBfVElNMSAgICAgIDogVElNMSBQYXJ0aWFsIEFsdGVybmF0ZSBGdW5jdGlvbiBtYXBwaW5nCisgICogICAgIEBhcmcgR1BJT19GdWxsUmVtYXBfVElNMSAgICAgICAgIDogVElNMSBGdWxsIEFsdGVybmF0ZSBGdW5jdGlvbiBtYXBwaW5nCisgICogICAgIEBhcmcgR1BJT19QYXJ0aWFsUmVtYXAxX1RJTTIgICAgIDogVElNMiBQYXJ0aWFsMSBBbHRlcm5hdGUgRnVuY3Rpb24gbWFwcGluZworICAqICAgICBAYXJnIEdQSU9fUGFydGlhbFJlbWFwMl9USU0yICAgICA6IFRJTTIgUGFydGlhbDIgQWx0ZXJuYXRlIEZ1bmN0aW9uIG1hcHBpbmcKKyAgKiAgICAgQGFyZyBHUElPX0Z1bGxSZW1hcF9USU0yICAgICAgICAgOiBUSU0yIEZ1bGwgQWx0ZXJuYXRlIEZ1bmN0aW9uIG1hcHBpbmcKKyAgKiAgICAgQGFyZyBHUElPX1BhcnRpYWxSZW1hcF9USU0zICAgICAgOiBUSU0zIFBhcnRpYWwgQWx0ZXJuYXRlIEZ1bmN0aW9uIG1hcHBpbmcKKyAgKiAgICAgQGFyZyBHUElPX0Z1bGxSZW1hcF9USU0zICAgICAgICAgOiBUSU0zIEZ1bGwgQWx0ZXJuYXRlIEZ1bmN0aW9uIG1hcHBpbmcKKyAgKiAgICAgQGFyZyBHUElPX1JlbWFwX1RJTTQgICAgICAgICAgICAgOiBUSU00IEFsdGVybmF0ZSBGdW5jdGlvbiBtYXBwaW5nCisgICogICAgIEBhcmcgR1BJT19SZW1hcDFfQ0FOMSAgICAgICAgICAgIDogQ0FOMSBBbHRlcm5hdGUgRnVuY3Rpb24gbWFwcGluZworICAqICAgICBAYXJnIEdQSU9fUmVtYXAyX0NBTjEgICAgICAgICAgICA6IENBTjEgQWx0ZXJuYXRlIEZ1bmN0aW9uIG1hcHBpbmcKKyAgKiAgICAgQGFyZyBHUElPX1JlbWFwX1BEMDEgICAgICAgICAgICAgOiBQRDAxIEFsdGVybmF0ZSBGdW5jdGlvbiBtYXBwaW5nCisgICogICAgIEBhcmcgR1BJT19SZW1hcF9USU01Q0g0X0xTSSAgICAgIDogTFNJIGNvbm5lY3RlZCB0byBUSU01IENoYW5uZWw0IGlucHV0IGNhcHR1cmUgZm9yIGNhbGlicmF0aW9uCisgICogICAgIEBhcmcgR1BJT19SZW1hcF9BREMxX0VUUkdJTkogICAgIDogQURDMSBFeHRlcm5hbCBUcmlnZ2VyIEluamVjdGVkIENvbnZlcnNpb24gcmVtYXBwaW5nCisgICogICAgIEBhcmcgR1BJT19SZW1hcF9BREMxX0VUUkdSRUcgICAgIDogQURDMSBFeHRlcm5hbCBUcmlnZ2VyIFJlZ3VsYXIgQ29udmVyc2lvbiByZW1hcHBpbmcKKyAgKiAgICAgQGFyZyBHUElPX1JlbWFwX0FEQzJfRVRSR0lOSiAgICAgOiBBREMyIEV4dGVybmFsIFRyaWdnZXIgSW5qZWN0ZWQgQ29udmVyc2lvbiByZW1hcHBpbmcKKyAgKiAgICAgQGFyZyBHUElPX1JlbWFwX0FEQzJfRVRSR1JFRyAgICAgOiBBREMyIEV4dGVybmFsIFRyaWdnZXIgUmVndWxhciBDb252ZXJzaW9uIHJlbWFwcGluZworICAqICAgICBAYXJnIEdQSU9fUmVtYXBfRVRIICAgICAgICAgICAgICA6IEV0aGVybmV0IHJlbWFwcGluZyAob25seSBmb3IgQ29ubmVjdGl2aXR5IGxpbmUgZGV2aWNlcykKKyAgKiAgICAgQGFyZyBHUElPX1JlbWFwX0NBTjIgICAgICAgICAgICAgOiBDQU4yIHJlbWFwcGluZyAob25seSBmb3IgQ29ubmVjdGl2aXR5IGxpbmUgZGV2aWNlcykKKyAgKiAgICAgQGFyZyBHUElPX1JlbWFwX1NXSl9Ob0pUUlNUICAgICAgOiBGdWxsIFNXSiBFbmFibGVkIChKVEFHLURQICsgU1ctRFApIGJ1dCB3aXRob3V0IEpUUlNUCisgICogICAgIEBhcmcgR1BJT19SZW1hcF9TV0pfSlRBR0Rpc2FibGUgIDogSlRBRy1EUCBEaXNhYmxlZCBhbmQgU1ctRFAgRW5hYmxlZAorICAqICAgICBAYXJnIEdQSU9fUmVtYXBfU1dKX0Rpc2FibGUgICAgICA6IEZ1bGwgU1dKIERpc2FibGVkIChKVEFHLURQICsgU1ctRFApCisgICogICAgIEBhcmcgR1BJT19SZW1hcF9TUEkzICAgICAgICAgICAgIDogU1BJMy9JMlMzIEFsdGVybmF0ZSBGdW5jdGlvbiBtYXBwaW5nIChvbmx5IGZvciBDb25uZWN0aXZpdHkgbGluZSBkZXZpY2VzKQorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdoZW4gdGhlIFNQSTMvSTJTMyBpcyByZW1hcHBlZCB1c2luZyB0aGlzIGZ1bmN0aW9uLCB0aGUgU1dKIGlzIGNvbmZpZ3VyZWQKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBGdWxsIFNXSiBFbmFibGVkIChKVEFHLURQICsgU1ctRFApIGJ1dCB3aXRob3V0IEpUUlNULiAgIAorICAqICAgICBAYXJnIEdQSU9fUmVtYXBfVElNMklUUjFfUFRQX1NPRiA6IEV0aGVybmV0IFBUUCBvdXRwdXQgb3IgVVNCIE9URyBTT0YgKFN0YXJ0IG9mIEZyYW1lKSBjb25uZWN0ZWQKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBUSU0yIEludGVybmFsIFRyaWdnZXIgMSBmb3IgY2FsaWJyYXRpb24gKG9ubHkgZm9yIENvbm5lY3Rpdml0eSBsaW5lIGRldmljZXMpCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgdGhlIEdQSU9fUmVtYXBfVElNMklUUjFfUFRQX1NPRiBpcyBlbmFibGVkIHRoZSBUSU0yIElUUjEgaXMgY29ubmVjdGVkIHRvIAorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV0aGVybmV0IFBUUCBvdXRwdXQuIFdoZW4gUmVzZXQgVElNMiBJVFIxIGlzIGNvbm5lY3RlZCB0byBVU0IgT1RHIFNPRiBvdXRwdXQuICAgIAorICAqICAgICBAYXJnIEdQSU9fUmVtYXBfUFRQX1BQUyAgICAgICAgICA6IEV0aGVybmV0IE1BQyBQUFNfUFRTIG91dHB1dCBvbiBQQjA1IChvbmx5IGZvciBDb25uZWN0aXZpdHkgbGluZSBkZXZpY2VzKQorICAqICAgICBAYXJnIEdQSU9fUmVtYXBfVElNMTUgICAgICAgICAgICA6IFRJTTE1IEFsdGVybmF0ZSBGdW5jdGlvbiBtYXBwaW5nIChvbmx5IGZvciBWYWx1ZSBsaW5lIGRldmljZXMpCisgICogICAgIEBhcmcgR1BJT19SZW1hcF9USU0xNiAgICAgICAgICAgIDogVElNMTYgQWx0ZXJuYXRlIEZ1bmN0aW9uIG1hcHBpbmcgKG9ubHkgZm9yIFZhbHVlIGxpbmUgZGV2aWNlcykKKyAgKiAgICAgQGFyZyBHUElPX1JlbWFwX1RJTTE3ICAgICAgICAgICAgOiBUSU0xNyBBbHRlcm5hdGUgRnVuY3Rpb24gbWFwcGluZyAob25seSBmb3IgVmFsdWUgbGluZSBkZXZpY2VzKQorICAqICAgICBAYXJnIEdQSU9fUmVtYXBfQ0VDICAgICAgICAgICAgICA6IENFQyBBbHRlcm5hdGUgRnVuY3Rpb24gbWFwcGluZyAob25seSBmb3IgVmFsdWUgbGluZSBkZXZpY2VzKQorICAqICAgICBAYXJnIEdQSU9fUmVtYXBfVElNMV9ETUEgICAgICAgICA6IFRJTTEgRE1BIHJlcXVlc3RzIG1hcHBpbmcgKG9ubHkgZm9yIFZhbHVlIGxpbmUgZGV2aWNlcykKKyAgKiAgICAgQGFyZyBHUElPX1JlbWFwX1RJTTkgICAgICAgICAgICAgOiBUSU05IEFsdGVybmF0ZSBGdW5jdGlvbiBtYXBwaW5nIChvbmx5IGZvciBYTC1kZW5zaXR5IGRldmljZXMpCisgICogICAgIEBhcmcgR1BJT19SZW1hcF9USU0xMCAgICAgICAgICAgIDogVElNMTAgQWx0ZXJuYXRlIEZ1bmN0aW9uIG1hcHBpbmcgKG9ubHkgZm9yIFhMLWRlbnNpdHkgZGV2aWNlcykKKyAgKiAgICAgQGFyZyBHUElPX1JlbWFwX1RJTTExICAgICAgICAgICAgOiBUSU0xMSBBbHRlcm5hdGUgRnVuY3Rpb24gbWFwcGluZyAob25seSBmb3IgWEwtZGVuc2l0eSBkZXZpY2VzKQorICAqICAgICBAYXJnIEdQSU9fUmVtYXBfVElNMTMgICAgICAgICAgICA6IFRJTTEzIEFsdGVybmF0ZSBGdW5jdGlvbiBtYXBwaW5nIChvbmx5IGZvciBIaWdoIGRlbnNpdHkgVmFsdWUgbGluZSBhbmQgWEwtZGVuc2l0eSBkZXZpY2VzKQorICAqICAgICBAYXJnIEdQSU9fUmVtYXBfVElNMTQgICAgICAgICAgICA6IFRJTTE0IEFsdGVybmF0ZSBGdW5jdGlvbiBtYXBwaW5nIChvbmx5IGZvciBIaWdoIGRlbnNpdHkgVmFsdWUgbGluZSBhbmQgWEwtZGVuc2l0eSBkZXZpY2VzKQorICAqICAgICBAYXJnIEdQSU9fUmVtYXBfRlNNQ19OQURWICAgICAgICA6IEZTTUNfTkFEViBBbHRlcm5hdGUgRnVuY3Rpb24gbWFwcGluZyAob25seSBmb3IgSGlnaCBkZW5zaXR5IFZhbHVlIGxpbmUgYW5kIFhMLWRlbnNpdHkgZGV2aWNlcykKKyAgKiAgICAgQGFyZyBHUElPX1JlbWFwX1RJTTY3X0RBQ19ETUEgICAgOiBUSU02L1RJTTcgYW5kIERBQyBETUEgcmVxdWVzdHMgcmVtYXBwaW5nIChvbmx5IGZvciBIaWdoIGRlbnNpdHkgVmFsdWUgbGluZSBkZXZpY2VzKQorICAqICAgICBAYXJnIEdQSU9fUmVtYXBfVElNMTIgICAgICAgICAgICA6IFRJTTEyIEFsdGVybmF0ZSBGdW5jdGlvbiBtYXBwaW5nIChvbmx5IGZvciBIaWdoIGRlbnNpdHkgVmFsdWUgbGluZSBkZXZpY2VzKQorICAqICAgICBAYXJnIEdQSU9fUmVtYXBfTUlTQyAgICAgICAgICAgICA6IE1pc2NlbGxhbmVvdXMgUmVtYXAgKERNQTIgQ2hhbm5lbDUgUG9zaXRpb24gYW5kIERBQyBUcmlnZ2VyIHJlbWFwcGluZywgCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25seSBmb3IgSGlnaCBkZW5zaXR5IFZhbHVlIGxpbmUgZGV2aWNlcykgICAgIAorICAqIEBwYXJhbSAgTmV3U3RhdGU6IG5ldyBzdGF0ZSBvZiB0aGUgcG9ydCBwaW4gcmVtYXBwaW5nLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlOiBFTkFCTEUgb3IgRElTQUJMRS4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgR1BJT19QaW5SZW1hcENvbmZpZyh1aW50MzJfdCBHUElPX1JlbWFwLCBGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpCit7CisgIHVpbnQzMl90IHRtcCA9IDB4MDAsIHRtcDEgPSAweDAwLCB0bXByZWcgPSAweDAwLCB0bXBtYXNrID0gMHgwMDsKKworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfR1BJT19SRU1BUChHUElPX1JlbWFwKSk7CisgIGFzc2VydF9wYXJhbShJU19GVU5DVElPTkFMX1NUQVRFKE5ld1N0YXRlKSk7ICAKKyAgCisgIGlmKChHUElPX1JlbWFwICYgMHg4MDAwMDAwMCkgPT0gMHg4MDAwMDAwMCkKKyAgeworICAgIHRtcHJlZyA9IEFGSU8tPk1BUFIyOworICB9CisgIGVsc2UKKyAgeworICAgIHRtcHJlZyA9IEFGSU8tPk1BUFI7CisgIH0KKworICB0bXBtYXNrID0gKEdQSU9fUmVtYXAgJiBEQkdBRlJfUE9TSVRJT05fTUFTSykgPj4gMHgxMDsKKyAgdG1wID0gR1BJT19SZW1hcCAmIExTQl9NQVNLOworCisgIGlmICgoR1BJT19SZW1hcCAmIChEQkdBRlJfTE9DQVRJT05fTUFTSyB8IERCR0FGUl9OVU1CSVRTX01BU0spKSA9PSAoREJHQUZSX0xPQ0FUSU9OX01BU0sgfCBEQkdBRlJfTlVNQklUU19NQVNLKSkKKyAgeworICAgIHRtcHJlZyAmPSBEQkdBRlJfU1dKQ0ZHX01BU0s7CisgICAgQUZJTy0+TUFQUiAmPSBEQkdBRlJfU1dKQ0ZHX01BU0s7CisgIH0KKyAgZWxzZSBpZiAoKEdQSU9fUmVtYXAgJiBEQkdBRlJfTlVNQklUU19NQVNLKSA9PSBEQkdBRlJfTlVNQklUU19NQVNLKQorICB7CisgICAgdG1wMSA9ICgodWludDMyX3QpMHgwMykgPDwgdG1wbWFzazsKKyAgICB0bXByZWcgJj0gfnRtcDE7CisgICAgdG1wcmVnIHw9IH5EQkdBRlJfU1dKQ0ZHX01BU0s7CisgIH0KKyAgZWxzZQorICB7CisgICAgdG1wcmVnICY9IH4odG1wIDw8ICgoR1BJT19SZW1hcCA+PiAweDE1KSoweDEwKSk7CisgICAgdG1wcmVnIHw9IH5EQkdBRlJfU1dKQ0ZHX01BU0s7CisgIH0KKworICBpZiAoTmV3U3RhdGUgIT0gRElTQUJMRSkKKyAgeworICAgIHRtcHJlZyB8PSAodG1wIDw8ICgoR1BJT19SZW1hcCA+PiAweDE1KSoweDEwKSk7CisgIH0KKworICBpZigoR1BJT19SZW1hcCAmIDB4ODAwMDAwMDApID09IDB4ODAwMDAwMDApCisgIHsKKyAgICBBRklPLT5NQVBSMiA9IHRtcHJlZzsKKyAgfQorICBlbHNlCisgIHsKKyAgICBBRklPLT5NQVBSID0gdG1wcmVnOworICB9ICAKK30KKworLyoqCisgICogQGJyaWVmICBTZWxlY3RzIHRoZSBHUElPIHBpbiB1c2VkIGFzIEVYVEkgTGluZS4KKyAgKiBAcGFyYW0gIEdQSU9fUG9ydFNvdXJjZTogc2VsZWN0cyB0aGUgR1BJTyBwb3J0IHRvIGJlIHVzZWQgYXMgc291cmNlIGZvciBFWFRJIGxpbmVzLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIEdQSU9fUG9ydFNvdXJjZUdQSU94IHdoZXJlIHggY2FuIGJlIChBLi5HKS4KKyAgKiBAcGFyYW0gIEdQSU9fUGluU291cmNlOiBzcGVjaWZpZXMgdGhlIEVYVEkgbGluZSB0byBiZSBjb25maWd1cmVkLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIEdQSU9fUGluU291cmNleCB3aGVyZSB4IGNhbiBiZSAoMC4uMTUpLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBHUElPX0VYVElMaW5lQ29uZmlnKHVpbnQ4X3QgR1BJT19Qb3J0U291cmNlLCB1aW50OF90IEdQSU9fUGluU291cmNlKQoreworICB1aW50MzJfdCB0bXAgPSAweDAwOworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfR1BJT19FWFRJX1BPUlRfU09VUkNFKEdQSU9fUG9ydFNvdXJjZSkpOworICBhc3NlcnRfcGFyYW0oSVNfR1BJT19QSU5fU09VUkNFKEdQSU9fUGluU291cmNlKSk7CisgIAorICB0bXAgPSAoKHVpbnQzMl90KTB4MEYpIDw8ICgweDA0ICogKEdQSU9fUGluU291cmNlICYgKHVpbnQ4X3QpMHgwMykpOworICBBRklPLT5FWFRJQ1JbR1BJT19QaW5Tb3VyY2UgPj4gMHgwMl0gJj0gfnRtcDsKKyAgQUZJTy0+RVhUSUNSW0dQSU9fUGluU291cmNlID4+IDB4MDJdIHw9ICgoKHVpbnQzMl90KUdQSU9fUG9ydFNvdXJjZSkgPDwgKDB4MDQgKiAoR1BJT19QaW5Tb3VyY2UgJiAodWludDhfdCkweDAzKSkpOworfQorCisvKioKKyAgKiBAYnJpZWYgIFNlbGVjdHMgdGhlIEV0aGVybmV0IG1lZGlhIGludGVyZmFjZS4KKyAgKiBAbm90ZSAgIFRoaXMgZnVuY3Rpb24gYXBwbGllcyBvbmx5IHRvIFNUTTMyIENvbm5lY3Rpdml0eSBsaW5lIGRldmljZXMuICAKKyAgKiBAcGFyYW0gIEdQSU9fRVRIX01lZGlhSW50ZXJmYWNlOiBzcGVjaWZpZXMgdGhlIE1lZGlhIEludGVyZmFjZSBtb2RlLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBHUElPX0VUSF9NZWRpYUludGVyZmFjZV9NSUk6IE1JSSBtb2RlCisgICogICAgIEBhcmcgR1BJT19FVEhfTWVkaWFJbnRlcmZhY2VfUk1JSTogUk1JSSBtb2RlICAgIAorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBHUElPX0VUSF9NZWRpYUludGVyZmFjZUNvbmZpZyh1aW50MzJfdCBHUElPX0VUSF9NZWRpYUludGVyZmFjZSkgCit7IAorICBhc3NlcnRfcGFyYW0oSVNfR1BJT19FVEhfTUVESUFfSU5URVJGQUNFKEdQSU9fRVRIX01lZGlhSW50ZXJmYWNlKSk7IAorCisgIC8qIENvbmZpZ3VyZSBNSUlfUk1JSSBzZWxlY3Rpb24gYml0ICovIAorICAqKF9fSU8gdWludDMyX3QgKikgTUFQUl9NSUlfUk1JSV9TRUxfQkIgPSBHUElPX0VUSF9NZWRpYUludGVyZmFjZTsgCit9CisgIAorLyoqCisgICogQH0KKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCAyMDExIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL3N0X2Z3X2xpYi9zcmMvc3RtMzJmMTB4X2kyYy5jIGIvc3RfZndfbGliL3NyYy9zdG0zMmYxMHhfaTJjLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGVhMzIxYwotLS0gL2Rldi9udWxsCisrKyBiL3N0X2Z3X2xpYi9zcmMvc3RtMzJmMTB4X2kyYy5jCkBAIC0wLDAgKzEsMTMzMSBAQAorLyoqCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqIEBmaWxlICAgIHN0bTMyZjEweF9pMmMuYworICAqIEBhdXRob3IgIE1DRCBBcHBsaWNhdGlvbiBUZWFtCisgICogQHZlcnNpb24gVjMuNS4wCisgICogQGRhdGUgICAgMTEtTWFyY2gtMjAxMQorICAqIEBicmllZiAgIFRoaXMgZmlsZSBwcm92aWRlcyBhbGwgdGhlIEkyQyBmaXJtd2FyZSBmdW5jdGlvbnMuCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqIEBhdHRlbnRpb24KKyAgKgorICAqIFRIRSBQUkVTRU5UIEZJUk1XQVJFIFdISUNIIElTIEZPUiBHVUlEQU5DRSBPTkxZIEFJTVMgQVQgUFJPVklESU5HIENVU1RPTUVSUworICAqIFdJVEggQ09ESU5HIElORk9STUFUSU9OIFJFR0FSRElORyBUSEVJUiBQUk9EVUNUUyBJTiBPUkRFUiBGT1IgVEhFTSBUTyBTQVZFCisgICogVElNRS4gQVMgQSBSRVNVTFQsIFNUTUlDUk9FTEVDVFJPTklDUyBTSEFMTCBOT1QgQkUgSEVMRCBMSUFCTEUgRk9SIEFOWQorICAqIERJUkVDVCwgSU5ESVJFQ1QgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIFdJVEggUkVTUEVDVCBUTyBBTlkgQ0xBSU1TIEFSSVNJTkcKKyAgKiBGUk9NIFRIRSBDT05URU5UIE9GIFNVQ0ggRklSTVdBUkUgQU5EL09SIFRIRSBVU0UgTUFERSBCWSBDVVNUT01FUlMgT0YgVEhFCisgICogQ09ESU5HIElORk9STUFUSU9OIENPTlRBSU5FRCBIRVJFSU4gSU4gQ09OTkVDVElPTiBXSVRIIFRIRUlSIFBST0RVQ1RTLgorICAqCisgICogPGgyPjxjZW50ZXI+JmNvcHk7IENPUFlSSUdIVCAyMDExIFNUTWljcm9lbGVjdHJvbmljczwvY2VudGVyPjwvaDI+CisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqLworCisvKiBJbmNsdWRlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworI2luY2x1ZGUgInN0bTMyZjEweF9pMmMuaCIKKyNpbmNsdWRlICJzdG0zMmYxMHhfcmNjLmgiCisKKworLyoqIEBhZGR0b2dyb3VwIFNUTTMyRjEweF9TdGRQZXJpcGhfRHJpdmVyCisgICogQHsKKyAgKi8KKworLyoqIEBkZWZncm91cCBJMkMgCisgICogQGJyaWVmIEkyQyBkcml2ZXIgbW9kdWxlcworICAqIEB7CisgICovIAorCisvKiogQGRlZmdyb3VwIEkyQ19Qcml2YXRlX1R5cGVzRGVmaW5pdGlvbnMKKyAgKiBAeworICAqLworCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIEkyQ19Qcml2YXRlX0RlZmluZXMKKyAgKiBAeworICAqLworCisvKiBJMkMgU1BFIG1hc2sgKi8KKyNkZWZpbmUgQ1IxX1BFX1NldCAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDEpCisjZGVmaW5lIENSMV9QRV9SZXNldCAgICAgICAgICAgICgodWludDE2X3QpMHhGRkZFKQorCisvKiBJMkMgU1RBUlQgbWFzayAqLworI2RlZmluZSBDUjFfU1RBUlRfU2V0ICAgICAgICAgICAoKHVpbnQxNl90KTB4MDEwMCkKKyNkZWZpbmUgQ1IxX1NUQVJUX1Jlc2V0ICAgICAgICAgKCh1aW50MTZfdCkweEZFRkYpCisKKy8qIEkyQyBTVE9QIG1hc2sgKi8KKyNkZWZpbmUgQ1IxX1NUT1BfU2V0ICAgICAgICAgICAgKCh1aW50MTZfdCkweDAyMDApCisjZGVmaW5lIENSMV9TVE9QX1Jlc2V0ICAgICAgICAgICgodWludDE2X3QpMHhGREZGKQorCisvKiBJMkMgQUNLIG1hc2sgKi8KKyNkZWZpbmUgQ1IxX0FDS19TZXQgICAgICAgICAgICAgKCh1aW50MTZfdCkweDA0MDApCisjZGVmaW5lIENSMV9BQ0tfUmVzZXQgICAgICAgICAgICgodWludDE2X3QpMHhGQkZGKQorCisvKiBJMkMgRU5HQyBtYXNrICovCisjZGVmaW5lIENSMV9FTkdDX1NldCAgICAgICAgICAgICgodWludDE2X3QpMHgwMDQwKQorI2RlZmluZSBDUjFfRU5HQ19SZXNldCAgICAgICAgICAoKHVpbnQxNl90KTB4RkZCRikKKworLyogSTJDIFNXUlNUIG1hc2sgKi8KKyNkZWZpbmUgQ1IxX1NXUlNUX1NldCAgICAgICAgICAgKCh1aW50MTZfdCkweDgwMDApCisjZGVmaW5lIENSMV9TV1JTVF9SZXNldCAgICAgICAgICgodWludDE2X3QpMHg3RkZGKQorCisvKiBJMkMgUEVDIG1hc2sgKi8KKyNkZWZpbmUgQ1IxX1BFQ19TZXQgICAgICAgICAgICAgKCh1aW50MTZfdCkweDEwMDApCisjZGVmaW5lIENSMV9QRUNfUmVzZXQgICAgICAgICAgICgodWludDE2X3QpMHhFRkZGKQorCisvKiBJMkMgRU5QRUMgbWFzayAqLworI2RlZmluZSBDUjFfRU5QRUNfU2V0ICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAyMCkKKyNkZWZpbmUgQ1IxX0VOUEVDX1Jlc2V0ICAgICAgICAgKCh1aW50MTZfdCkweEZGREYpCisKKy8qIEkyQyBFTkFSUCBtYXNrICovCisjZGVmaW5lIENSMV9FTkFSUF9TZXQgICAgICAgICAgICgodWludDE2X3QpMHgwMDEwKQorI2RlZmluZSBDUjFfRU5BUlBfUmVzZXQgICAgICAgICAoKHVpbnQxNl90KTB4RkZFRikKKworLyogSTJDIE5PU1RSRVRDSCBtYXNrICovCisjZGVmaW5lIENSMV9OT1NUUkVUQ0hfU2V0ICAgICAgICgodWludDE2X3QpMHgwMDgwKQorI2RlZmluZSBDUjFfTk9TVFJFVENIX1Jlc2V0ICAgICAoKHVpbnQxNl90KTB4RkY3RikKKworLyogSTJDIHJlZ2lzdGVycyBNYXNrcyAqLworI2RlZmluZSBDUjFfQ0xFQVJfTWFzayAgICAgICAgICAoKHVpbnQxNl90KTB4RkJGNSkKKworLyogSTJDIERNQUVOIG1hc2sgKi8KKyNkZWZpbmUgQ1IyX0RNQUVOX1NldCAgICAgICAgICAgKCh1aW50MTZfdCkweDA4MDApCisjZGVmaW5lIENSMl9ETUFFTl9SZXNldCAgICAgICAgICgodWludDE2X3QpMHhGN0ZGKQorCisvKiBJMkMgTEFTVCBtYXNrICovCisjZGVmaW5lIENSMl9MQVNUX1NldCAgICAgICAgICAgICgodWludDE2X3QpMHgxMDAwKQorI2RlZmluZSBDUjJfTEFTVF9SZXNldCAgICAgICAgICAoKHVpbnQxNl90KTB4RUZGRikKKworLyogSTJDIEZSRVEgbWFzayAqLworI2RlZmluZSBDUjJfRlJFUV9SZXNldCAgICAgICAgICAoKHVpbnQxNl90KTB4RkZDMCkKKworLyogSTJDIEFERDAgbWFzayAqLworI2RlZmluZSBPQVIxX0FERDBfU2V0ICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMSkKKyNkZWZpbmUgT0FSMV9BREQwX1Jlc2V0ICAgICAgICAgKCh1aW50MTZfdCkweEZGRkUpCisKKy8qIEkyQyBFTkRVQUwgbWFzayAqLworI2RlZmluZSBPQVIyX0VORFVBTF9TZXQgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMSkKKyNkZWZpbmUgT0FSMl9FTkRVQUxfUmVzZXQgICAgICAgKCh1aW50MTZfdCkweEZGRkUpCisKKy8qIEkyQyBBREQyIG1hc2sgKi8KKyNkZWZpbmUgT0FSMl9BREQyX1Jlc2V0ICAgICAgICAgKCh1aW50MTZfdCkweEZGMDEpCisKKy8qIEkyQyBGL1MgbWFzayAqLworI2RlZmluZSBDQ1JfRlNfU2V0ICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4ODAwMCkKKworLyogSTJDIENDUiBtYXNrICovCisjZGVmaW5lIENDUl9DQ1JfU2V0ICAgICAgICAgICAgICgodWludDE2X3QpMHgwRkZGKQorCisvKiBJMkMgRkxBRyBtYXNrICovCisjZGVmaW5lIEZMQUdfTWFzayAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMEZGRkZGRikKKworLyogSTJDIEludGVycnVwdCBFbmFibGUgbWFzayAqLworI2RlZmluZSBJVEVOX01hc2sgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDcwMDAwMDApCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgSTJDX1ByaXZhdGVfTWFjcm9zCisgICogQHsKKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBJMkNfUHJpdmF0ZV9WYXJpYWJsZXMKKyAgKiBAeworICAqLworCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIEkyQ19Qcml2YXRlX0Z1bmN0aW9uUHJvdG90eXBlcworICAqIEB7CisgICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgSTJDX1ByaXZhdGVfRnVuY3Rpb25zCisgICogQHsKKyAgKi8KKworLyoqCisgICogQGJyaWVmICBEZWluaXRpYWxpemVzIHRoZSBJMkN4IHBlcmlwaGVyYWwgcmVnaXN0ZXJzIHRvIHRoZWlyIGRlZmF1bHQgcmVzZXQgdmFsdWVzLgorICAqIEBwYXJhbSAgSTJDeDogd2hlcmUgeCBjYW4gYmUgMSBvciAyIHRvIHNlbGVjdCB0aGUgSTJDIHBlcmlwaGVyYWwuCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIEkyQ19EZUluaXQoSTJDX1R5cGVEZWYqIEkyQ3gpCit7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19JMkNfQUxMX1BFUklQSChJMkN4KSk7CisKKyAgaWYgKEkyQ3ggPT0gSTJDMSkKKyAgeworICAgIC8qIEVuYWJsZSBJMkMxIHJlc2V0IHN0YXRlICovCisgICAgUkNDX0FQQjFQZXJpcGhSZXNldENtZChSQ0NfQVBCMVBlcmlwaF9JMkMxLCBFTkFCTEUpOworICAgIC8qIFJlbGVhc2UgSTJDMSBmcm9tIHJlc2V0IHN0YXRlICovCisgICAgUkNDX0FQQjFQZXJpcGhSZXNldENtZChSQ0NfQVBCMVBlcmlwaF9JMkMxLCBESVNBQkxFKTsKKyAgfQorICBlbHNlCisgIHsKKyAgICAvKiBFbmFibGUgSTJDMiByZXNldCBzdGF0ZSAqLworICAgIFJDQ19BUEIxUGVyaXBoUmVzZXRDbWQoUkNDX0FQQjFQZXJpcGhfSTJDMiwgRU5BQkxFKTsKKyAgICAvKiBSZWxlYXNlIEkyQzIgZnJvbSByZXNldCBzdGF0ZSAqLworICAgIFJDQ19BUEIxUGVyaXBoUmVzZXRDbWQoUkNDX0FQQjFQZXJpcGhfSTJDMiwgRElTQUJMRSk7CisgIH0KK30KKworLyoqCisgICogQGJyaWVmICBJbml0aWFsaXplcyB0aGUgSTJDeCBwZXJpcGhlcmFsIGFjY29yZGluZyB0byB0aGUgc3BlY2lmaWVkIAorICAqICAgcGFyYW1ldGVycyBpbiB0aGUgSTJDX0luaXRTdHJ1Y3QuCisgICogQHBhcmFtICBJMkN4OiB3aGVyZSB4IGNhbiBiZSAxIG9yIDIgdG8gc2VsZWN0IHRoZSBJMkMgcGVyaXBoZXJhbC4KKyAgKiBAcGFyYW0gIEkyQ19Jbml0U3RydWN0OiBwb2ludGVyIHRvIGEgSTJDX0luaXRUeXBlRGVmIHN0cnVjdHVyZSB0aGF0CisgICogICBjb250YWlucyB0aGUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBmb3IgdGhlIHNwZWNpZmllZCBJMkMgcGVyaXBoZXJhbC4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgSTJDX0luaXQoSTJDX1R5cGVEZWYqIEkyQ3gsIEkyQ19Jbml0VHlwZURlZiogSTJDX0luaXRTdHJ1Y3QpCit7CisgIHVpbnQxNl90IHRtcHJlZyA9IDAsIGZyZXFyYW5nZSA9IDA7CisgIHVpbnQxNl90IHJlc3VsdCA9IDB4MDQ7CisgIHVpbnQzMl90IHBjbGsxID0gODAwMDAwMDsKKyAgUkNDX0Nsb2Nrc1R5cGVEZWYgIHJjY19jbG9ja3M7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19JMkNfQUxMX1BFUklQSChJMkN4KSk7CisgIGFzc2VydF9wYXJhbShJU19JMkNfQ0xPQ0tfU1BFRUQoSTJDX0luaXRTdHJ1Y3QtPkkyQ19DbG9ja1NwZWVkKSk7CisgIGFzc2VydF9wYXJhbShJU19JMkNfTU9ERShJMkNfSW5pdFN0cnVjdC0+STJDX01vZGUpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0kyQ19EVVRZX0NZQ0xFKEkyQ19Jbml0U3RydWN0LT5JMkNfRHV0eUN5Y2xlKSk7CisgIGFzc2VydF9wYXJhbShJU19JMkNfT1dOX0FERFJFU1MxKEkyQ19Jbml0U3RydWN0LT5JMkNfT3duQWRkcmVzczEpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0kyQ19BQ0tfU1RBVEUoSTJDX0luaXRTdHJ1Y3QtPkkyQ19BY2spKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0kyQ19BQ0tOT1dMRURHRV9BRERSRVNTKEkyQ19Jbml0U3RydWN0LT5JMkNfQWNrbm93bGVkZ2VkQWRkcmVzcykpOworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gSTJDeCBDUjIgQ29uZmlndXJhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworICAvKiBHZXQgdGhlIEkyQ3ggQ1IyIHZhbHVlICovCisgIHRtcHJlZyA9IEkyQ3gtPkNSMjsKKyAgLyogQ2xlYXIgZnJlcXVlbmN5IEZSRVFbNTowXSBiaXRzICovCisgIHRtcHJlZyAmPSBDUjJfRlJFUV9SZXNldDsKKyAgLyogR2V0IHBjbGsxIGZyZXF1ZW5jeSB2YWx1ZSAqLworICBSQ0NfR2V0Q2xvY2tzRnJlcSgmcmNjX2Nsb2Nrcyk7CisgIHBjbGsxID0gcmNjX2Nsb2Nrcy5QQ0xLMV9GcmVxdWVuY3k7CisgIC8qIFNldCBmcmVxdWVuY3kgYml0cyBkZXBlbmRpbmcgb24gcGNsazEgdmFsdWUgKi8KKyAgZnJlcXJhbmdlID0gKHVpbnQxNl90KShwY2xrMSAvIDEwMDAwMDApOworICB0bXByZWcgfD0gZnJlcXJhbmdlOworICAvKiBXcml0ZSB0byBJMkN4IENSMiAqLworICBJMkN4LT5DUjIgPSB0bXByZWc7CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBJMkN4IENDUiBDb25maWd1cmF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisgIC8qIERpc2FibGUgdGhlIHNlbGVjdGVkIEkyQyBwZXJpcGhlcmFsIHRvIGNvbmZpZ3VyZSBUUklTRSAqLworICBJMkN4LT5DUjEgJj0gQ1IxX1BFX1Jlc2V0OworICAvKiBSZXNldCB0bXByZWcgdmFsdWUgKi8KKyAgLyogQ2xlYXIgRi9TLCBEVVRZIGFuZCBDQ1JbMTE6MF0gYml0cyAqLworICB0bXByZWcgPSAwOworCisgIC8qIENvbmZpZ3VyZSBzcGVlZCBpbiBzdGFuZGFyZCBtb2RlICovCisgIGlmIChJMkNfSW5pdFN0cnVjdC0+STJDX0Nsb2NrU3BlZWQgPD0gMTAwMDAwKQorICB7CisgICAgLyogU3RhbmRhcmQgbW9kZSBzcGVlZCBjYWxjdWxhdGUgKi8KKyAgICByZXN1bHQgPSAodWludDE2X3QpKHBjbGsxIC8gKEkyQ19Jbml0U3RydWN0LT5JMkNfQ2xvY2tTcGVlZCA8PCAxKSk7CisgICAgLyogVGVzdCBpZiBDQ1IgdmFsdWUgaXMgdW5kZXIgMHg0Ki8KKyAgICBpZiAocmVzdWx0IDwgMHgwNCkKKyAgICB7CisgICAgICAvKiBTZXQgbWluaW11bSBhbGxvd2VkIHZhbHVlICovCisgICAgICByZXN1bHQgPSAweDA0OyAgCisgICAgfQorICAgIC8qIFNldCBzcGVlZCB2YWx1ZSBmb3Igc3RhbmRhcmQgbW9kZSAqLworICAgIHRtcHJlZyB8PSByZXN1bHQ7CSAgCisgICAgLyogU2V0IE1heGltdW0gUmlzZSBUaW1lIGZvciBzdGFuZGFyZCBtb2RlICovCisgICAgSTJDeC0+VFJJU0UgPSBmcmVxcmFuZ2UgKyAxOyAKKyAgfQorICAvKiBDb25maWd1cmUgc3BlZWQgaW4gZmFzdCBtb2RlICovCisgIGVsc2UgLyooSTJDX0luaXRTdHJ1Y3QtPkkyQ19DbG9ja1NwZWVkIDw9IDQwMDAwMCkqLworICB7CisgICAgaWYgKEkyQ19Jbml0U3RydWN0LT5JMkNfRHV0eUN5Y2xlID09IEkyQ19EdXR5Q3ljbGVfMikKKyAgICB7CisgICAgICAvKiBGYXN0IG1vZGUgc3BlZWQgY2FsY3VsYXRlOiBUbG93L1RoaWdoID0gMiAqLworICAgICAgcmVzdWx0ID0gKHVpbnQxNl90KShwY2xrMSAvIChJMkNfSW5pdFN0cnVjdC0+STJDX0Nsb2NrU3BlZWQgKiAzKSk7CisgICAgfQorICAgIGVsc2UgLypJMkNfSW5pdFN0cnVjdC0+STJDX0R1dHlDeWNsZSA9PSBJMkNfRHV0eUN5Y2xlXzE2XzkqLworICAgIHsKKyAgICAgIC8qIEZhc3QgbW9kZSBzcGVlZCBjYWxjdWxhdGU6IFRsb3cvVGhpZ2ggPSAxNi85ICovCisgICAgICByZXN1bHQgPSAodWludDE2X3QpKHBjbGsxIC8gKEkyQ19Jbml0U3RydWN0LT5JMkNfQ2xvY2tTcGVlZCAqIDI1KSk7CisgICAgICAvKiBTZXQgRFVUWSBiaXQgKi8KKyAgICAgIHJlc3VsdCB8PSBJMkNfRHV0eUN5Y2xlXzE2Xzk7CisgICAgfQorCisgICAgLyogVGVzdCBpZiBDQ1IgdmFsdWUgaXMgdW5kZXIgMHgxKi8KKyAgICBpZiAoKHJlc3VsdCAmIENDUl9DQ1JfU2V0KSA9PSAwKQorICAgIHsKKyAgICAgIC8qIFNldCBtaW5pbXVtIGFsbG93ZWQgdmFsdWUgKi8KKyAgICAgIHJlc3VsdCB8PSAodWludDE2X3QpMHgwMDAxOyAgCisgICAgfQorICAgIC8qIFNldCBzcGVlZCB2YWx1ZSBhbmQgc2V0IEYvUyBiaXQgZm9yIGZhc3QgbW9kZSAqLworICAgIHRtcHJlZyB8PSAodWludDE2X3QpKHJlc3VsdCB8IENDUl9GU19TZXQpOworICAgIC8qIFNldCBNYXhpbXVtIFJpc2UgVGltZSBmb3IgZmFzdCBtb2RlICovCisgICAgSTJDeC0+VFJJU0UgPSAodWludDE2X3QpKCgoZnJlcXJhbmdlICogKHVpbnQxNl90KTMwMCkgLyAodWludDE2X3QpMTAwMCkgKyAodWludDE2X3QpMSk7ICAKKyAgfQorCisgIC8qIFdyaXRlIHRvIEkyQ3ggQ0NSICovCisgIEkyQ3gtPkNDUiA9IHRtcHJlZzsKKyAgLyogRW5hYmxlIHRoZSBzZWxlY3RlZCBJMkMgcGVyaXBoZXJhbCAqLworICBJMkN4LT5DUjEgfD0gQ1IxX1BFX1NldDsKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEkyQ3ggQ1IxIENvbmZpZ3VyYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyAgLyogR2V0IHRoZSBJMkN4IENSMSB2YWx1ZSAqLworICB0bXByZWcgPSBJMkN4LT5DUjE7CisgIC8qIENsZWFyIEFDSywgU01CVFlQRSBhbmQgIFNNQlVTIGJpdHMgKi8KKyAgdG1wcmVnICY9IENSMV9DTEVBUl9NYXNrOworICAvKiBDb25maWd1cmUgSTJDeDogbW9kZSBhbmQgYWNrbm93bGVkZ2VtZW50ICovCisgIC8qIFNldCBTTUJUWVBFIGFuZCBTTUJVUyBiaXRzIGFjY29yZGluZyB0byBJMkNfTW9kZSB2YWx1ZSAqLworICAvKiBTZXQgQUNLIGJpdCBhY2NvcmRpbmcgdG8gSTJDX0FjayB2YWx1ZSAqLworICB0bXByZWcgfD0gKHVpbnQxNl90KSgodWludDMyX3QpSTJDX0luaXRTdHJ1Y3QtPkkyQ19Nb2RlIHwgSTJDX0luaXRTdHJ1Y3QtPkkyQ19BY2spOworICAvKiBXcml0ZSB0byBJMkN4IENSMSAqLworICBJMkN4LT5DUjEgPSB0bXByZWc7CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBJMkN4IE9BUjEgQ29uZmlndXJhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisgIC8qIFNldCBJMkN4IE93biBBZGRyZXNzMSBhbmQgYWNrbm93bGVkZ2VkIGFkZHJlc3MgKi8KKyAgSTJDeC0+T0FSMSA9IChJMkNfSW5pdFN0cnVjdC0+STJDX0Fja25vd2xlZGdlZEFkZHJlc3MgfCBJMkNfSW5pdFN0cnVjdC0+STJDX093bkFkZHJlc3MxKTsKK30KKworLyoqCisgICogQGJyaWVmICBGaWxscyBlYWNoIEkyQ19Jbml0U3RydWN0IG1lbWJlciB3aXRoIGl0cyBkZWZhdWx0IHZhbHVlLgorICAqIEBwYXJhbSAgSTJDX0luaXRTdHJ1Y3Q6IHBvaW50ZXIgdG8gYW4gSTJDX0luaXRUeXBlRGVmIHN0cnVjdHVyZSB3aGljaCB3aWxsIGJlIGluaXRpYWxpemVkLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBJMkNfU3RydWN0SW5pdChJMkNfSW5pdFR5cGVEZWYqIEkyQ19Jbml0U3RydWN0KQoreworLyotLS0tLS0tLS0tLS0tLS0tIFJlc2V0IEkyQyBpbml0IHN0cnVjdHVyZSBwYXJhbWV0ZXJzIHZhbHVlcyAtLS0tLS0tLS0tLS0tLS0tKi8KKyAgLyogaW5pdGlhbGl6ZSB0aGUgSTJDX0Nsb2NrU3BlZWQgbWVtYmVyICovCisgIEkyQ19Jbml0U3RydWN0LT5JMkNfQ2xvY2tTcGVlZCA9IDUwMDA7CisgIC8qIEluaXRpYWxpemUgdGhlIEkyQ19Nb2RlIG1lbWJlciAqLworICBJMkNfSW5pdFN0cnVjdC0+STJDX01vZGUgPSBJMkNfTW9kZV9JMkM7CisgIC8qIEluaXRpYWxpemUgdGhlIEkyQ19EdXR5Q3ljbGUgbWVtYmVyICovCisgIEkyQ19Jbml0U3RydWN0LT5JMkNfRHV0eUN5Y2xlID0gSTJDX0R1dHlDeWNsZV8yOworICAvKiBJbml0aWFsaXplIHRoZSBJMkNfT3duQWRkcmVzczEgbWVtYmVyICovCisgIEkyQ19Jbml0U3RydWN0LT5JMkNfT3duQWRkcmVzczEgPSAwOworICAvKiBJbml0aWFsaXplIHRoZSBJMkNfQWNrIG1lbWJlciAqLworICBJMkNfSW5pdFN0cnVjdC0+STJDX0FjayA9IEkyQ19BY2tfRGlzYWJsZTsKKyAgLyogSW5pdGlhbGl6ZSB0aGUgSTJDX0Fja25vd2xlZGdlZEFkZHJlc3MgbWVtYmVyICovCisgIEkyQ19Jbml0U3RydWN0LT5JMkNfQWNrbm93bGVkZ2VkQWRkcmVzcyA9IEkyQ19BY2tub3dsZWRnZWRBZGRyZXNzXzdiaXQ7Cit9CisKKy8qKgorICAqIEBicmllZiAgRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgc3BlY2lmaWVkIEkyQyBwZXJpcGhlcmFsLgorICAqIEBwYXJhbSAgSTJDeDogd2hlcmUgeCBjYW4gYmUgMSBvciAyIHRvIHNlbGVjdCB0aGUgSTJDIHBlcmlwaGVyYWwuCisgICogQHBhcmFtICBOZXdTdGF0ZTogbmV3IHN0YXRlIG9mIHRoZSBJMkN4IHBlcmlwaGVyYWwuIAorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlOiBFTkFCTEUgb3IgRElTQUJMRS4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgSTJDX0NtZChJMkNfVHlwZURlZiogSTJDeCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfSTJDX0FMTF9QRVJJUEgoSTJDeCkpOworICBhc3NlcnRfcGFyYW0oSVNfRlVOQ1RJT05BTF9TVEFURShOZXdTdGF0ZSkpOworICBpZiAoTmV3U3RhdGUgIT0gRElTQUJMRSkKKyAgeworICAgIC8qIEVuYWJsZSB0aGUgc2VsZWN0ZWQgSTJDIHBlcmlwaGVyYWwgKi8KKyAgICBJMkN4LT5DUjEgfD0gQ1IxX1BFX1NldDsKKyAgfQorICBlbHNlCisgIHsKKyAgICAvKiBEaXNhYmxlIHRoZSBzZWxlY3RlZCBJMkMgcGVyaXBoZXJhbCAqLworICAgIEkyQ3gtPkNSMSAmPSBDUjFfUEVfUmVzZXQ7CisgIH0KK30KKworLyoqCisgICogQGJyaWVmICBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBzcGVjaWZpZWQgSTJDIERNQSByZXF1ZXN0cy4KKyAgKiBAcGFyYW0gIEkyQ3g6IHdoZXJlIHggY2FuIGJlIDEgb3IgMiB0byBzZWxlY3QgdGhlIEkyQyBwZXJpcGhlcmFsLgorICAqIEBwYXJhbSAgTmV3U3RhdGU6IG5ldyBzdGF0ZSBvZiB0aGUgSTJDIERNQSB0cmFuc2Zlci4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZTogRU5BQkxFIG9yIERJU0FCTEUuCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIEkyQ19ETUFDbWQoSTJDX1R5cGVEZWYqIEkyQ3gsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSkKK3sKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX0kyQ19BTExfUEVSSVBIKEkyQ3gpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0ZVTkNUSU9OQUxfU1RBVEUoTmV3U3RhdGUpKTsKKyAgaWYgKE5ld1N0YXRlICE9IERJU0FCTEUpCisgIHsKKyAgICAvKiBFbmFibGUgdGhlIHNlbGVjdGVkIEkyQyBETUEgcmVxdWVzdHMgKi8KKyAgICBJMkN4LT5DUjIgfD0gQ1IyX0RNQUVOX1NldDsKKyAgfQorICBlbHNlCisgIHsKKyAgICAvKiBEaXNhYmxlIHRoZSBzZWxlY3RlZCBJMkMgRE1BIHJlcXVlc3RzICovCisgICAgSTJDeC0+Q1IyICY9IENSMl9ETUFFTl9SZXNldDsKKyAgfQorfQorCisvKioKKyAgKiBAYnJpZWYgIFNwZWNpZmllcyBpZiB0aGUgbmV4dCBETUEgdHJhbnNmZXIgd2lsbCBiZSB0aGUgbGFzdCBvbmUuCisgICogQHBhcmFtICBJMkN4OiB3aGVyZSB4IGNhbiBiZSAxIG9yIDIgdG8gc2VsZWN0IHRoZSBJMkMgcGVyaXBoZXJhbC4KKyAgKiBAcGFyYW0gIE5ld1N0YXRlOiBuZXcgc3RhdGUgb2YgdGhlIEkyQyBETUEgbGFzdCB0cmFuc2Zlci4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZTogRU5BQkxFIG9yIERJU0FCTEUuCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIEkyQ19ETUFMYXN0VHJhbnNmZXJDbWQoSTJDX1R5cGVEZWYqIEkyQ3gsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSkKK3sKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX0kyQ19BTExfUEVSSVBIKEkyQ3gpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0ZVTkNUSU9OQUxfU1RBVEUoTmV3U3RhdGUpKTsKKyAgaWYgKE5ld1N0YXRlICE9IERJU0FCTEUpCisgIHsKKyAgICAvKiBOZXh0IERNQSB0cmFuc2ZlciBpcyB0aGUgbGFzdCB0cmFuc2ZlciAqLworICAgIEkyQ3gtPkNSMiB8PSBDUjJfTEFTVF9TZXQ7CisgIH0KKyAgZWxzZQorICB7CisgICAgLyogTmV4dCBETUEgdHJhbnNmZXIgaXMgbm90IHRoZSBsYXN0IHRyYW5zZmVyICovCisgICAgSTJDeC0+Q1IyICY9IENSMl9MQVNUX1Jlc2V0OworICB9Cit9CisKKy8qKgorICAqIEBicmllZiAgR2VuZXJhdGVzIEkyQ3ggY29tbXVuaWNhdGlvbiBTVEFSVCBjb25kaXRpb24uCisgICogQHBhcmFtICBJMkN4OiB3aGVyZSB4IGNhbiBiZSAxIG9yIDIgdG8gc2VsZWN0IHRoZSBJMkMgcGVyaXBoZXJhbC4KKyAgKiBAcGFyYW0gIE5ld1N0YXRlOiBuZXcgc3RhdGUgb2YgdGhlIEkyQyBTVEFSVCBjb25kaXRpb24gZ2VuZXJhdGlvbi4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZTogRU5BQkxFIG9yIERJU0FCTEUuCisgICogQHJldHZhbCBOb25lLgorICAqLwordm9pZCBJMkNfR2VuZXJhdGVTVEFSVChJMkNfVHlwZURlZiogSTJDeCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfSTJDX0FMTF9QRVJJUEgoSTJDeCkpOworICBhc3NlcnRfcGFyYW0oSVNfRlVOQ1RJT05BTF9TVEFURShOZXdTdGF0ZSkpOworICBpZiAoTmV3U3RhdGUgIT0gRElTQUJMRSkKKyAgeworICAgIC8qIEdlbmVyYXRlIGEgU1RBUlQgY29uZGl0aW9uICovCisgICAgSTJDeC0+Q1IxIHw9IENSMV9TVEFSVF9TZXQ7CisgIH0KKyAgZWxzZQorICB7CisgICAgLyogRGlzYWJsZSB0aGUgU1RBUlQgY29uZGl0aW9uIGdlbmVyYXRpb24gKi8KKyAgICBJMkN4LT5DUjEgJj0gQ1IxX1NUQVJUX1Jlc2V0OworICB9Cit9CisKKy8qKgorICAqIEBicmllZiAgR2VuZXJhdGVzIEkyQ3ggY29tbXVuaWNhdGlvbiBTVE9QIGNvbmRpdGlvbi4KKyAgKiBAcGFyYW0gIEkyQ3g6IHdoZXJlIHggY2FuIGJlIDEgb3IgMiB0byBzZWxlY3QgdGhlIEkyQyBwZXJpcGhlcmFsLgorICAqIEBwYXJhbSAgTmV3U3RhdGU6IG5ldyBzdGF0ZSBvZiB0aGUgSTJDIFNUT1AgY29uZGl0aW9uIGdlbmVyYXRpb24uCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmU6IEVOQUJMRSBvciBESVNBQkxFLgorICAqIEByZXR2YWwgTm9uZS4KKyAgKi8KK3ZvaWQgSTJDX0dlbmVyYXRlU1RPUChJMkNfVHlwZURlZiogSTJDeCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfSTJDX0FMTF9QRVJJUEgoSTJDeCkpOworICBhc3NlcnRfcGFyYW0oSVNfRlVOQ1RJT05BTF9TVEFURShOZXdTdGF0ZSkpOworICBpZiAoTmV3U3RhdGUgIT0gRElTQUJMRSkKKyAgeworICAgIC8qIEdlbmVyYXRlIGEgU1RPUCBjb25kaXRpb24gKi8KKyAgICBJMkN4LT5DUjEgfD0gQ1IxX1NUT1BfU2V0OworICB9CisgIGVsc2UKKyAgeworICAgIC8qIERpc2FibGUgdGhlIFNUT1AgY29uZGl0aW9uIGdlbmVyYXRpb24gKi8KKyAgICBJMkN4LT5DUjEgJj0gQ1IxX1NUT1BfUmVzZXQ7CisgIH0KK30KKworLyoqCisgICogQGJyaWVmICBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBzcGVjaWZpZWQgSTJDIGFja25vd2xlZGdlIGZlYXR1cmUuCisgICogQHBhcmFtICBJMkN4OiB3aGVyZSB4IGNhbiBiZSAxIG9yIDIgdG8gc2VsZWN0IHRoZSBJMkMgcGVyaXBoZXJhbC4KKyAgKiBAcGFyYW0gIE5ld1N0YXRlOiBuZXcgc3RhdGUgb2YgdGhlIEkyQyBBY2tub3dsZWRnZW1lbnQuCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmU6IEVOQUJMRSBvciBESVNBQkxFLgorICAqIEByZXR2YWwgTm9uZS4KKyAgKi8KK3ZvaWQgSTJDX0Fja25vd2xlZGdlQ29uZmlnKEkyQ19UeXBlRGVmKiBJMkN4LCBGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpCit7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19JMkNfQUxMX1BFUklQSChJMkN4KSk7CisgIGFzc2VydF9wYXJhbShJU19GVU5DVElPTkFMX1NUQVRFKE5ld1N0YXRlKSk7CisgIGlmIChOZXdTdGF0ZSAhPSBESVNBQkxFKQorICB7CisgICAgLyogRW5hYmxlIHRoZSBhY2tub3dsZWRnZW1lbnQgKi8KKyAgICBJMkN4LT5DUjEgfD0gQ1IxX0FDS19TZXQ7CisgIH0KKyAgZWxzZQorICB7CisgICAgLyogRGlzYWJsZSB0aGUgYWNrbm93bGVkZ2VtZW50ICovCisgICAgSTJDeC0+Q1IxICY9IENSMV9BQ0tfUmVzZXQ7CisgIH0KK30KKworLyoqCisgICogQGJyaWVmICBDb25maWd1cmVzIHRoZSBzcGVjaWZpZWQgSTJDIG93biBhZGRyZXNzMi4KKyAgKiBAcGFyYW0gIEkyQ3g6IHdoZXJlIHggY2FuIGJlIDEgb3IgMiB0byBzZWxlY3QgdGhlIEkyQyBwZXJpcGhlcmFsLgorICAqIEBwYXJhbSAgQWRkcmVzczogc3BlY2lmaWVzIHRoZSA3Yml0IEkyQyBvd24gYWRkcmVzczIuCisgICogQHJldHZhbCBOb25lLgorICAqLwordm9pZCBJMkNfT3duQWRkcmVzczJDb25maWcoSTJDX1R5cGVEZWYqIEkyQ3gsIHVpbnQ4X3QgQWRkcmVzcykKK3sKKyAgdWludDE2X3QgdG1wcmVnID0gMDsKKworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfSTJDX0FMTF9QRVJJUEgoSTJDeCkpOworCisgIC8qIEdldCB0aGUgb2xkIHJlZ2lzdGVyIHZhbHVlICovCisgIHRtcHJlZyA9IEkyQ3gtPk9BUjI7CisKKyAgLyogUmVzZXQgSTJDeCBPd24gYWRkcmVzczIgYml0IFs3OjFdICovCisgIHRtcHJlZyAmPSBPQVIyX0FERDJfUmVzZXQ7CisKKyAgLyogU2V0IEkyQ3ggT3duIGFkZHJlc3MyICovCisgIHRtcHJlZyB8PSAodWludDE2X3QpKCh1aW50MTZfdClBZGRyZXNzICYgKHVpbnQxNl90KTB4MDBGRSk7CisKKyAgLyogU3RvcmUgdGhlIG5ldyByZWdpc3RlciB2YWx1ZSAqLworICBJMkN4LT5PQVIyID0gdG1wcmVnOworfQorCisvKioKKyAgKiBAYnJpZWYgIEVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIHNwZWNpZmllZCBJMkMgZHVhbCBhZGRyZXNzaW5nIG1vZGUuCisgICogQHBhcmFtICBJMkN4OiB3aGVyZSB4IGNhbiBiZSAxIG9yIDIgdG8gc2VsZWN0IHRoZSBJMkMgcGVyaXBoZXJhbC4KKyAgKiBAcGFyYW0gIE5ld1N0YXRlOiBuZXcgc3RhdGUgb2YgdGhlIEkyQyBkdWFsIGFkZHJlc3NpbmcgbW9kZS4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZTogRU5BQkxFIG9yIERJU0FCTEUuCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIEkyQ19EdWFsQWRkcmVzc0NtZChJMkNfVHlwZURlZiogSTJDeCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfSTJDX0FMTF9QRVJJUEgoSTJDeCkpOworICBhc3NlcnRfcGFyYW0oSVNfRlVOQ1RJT05BTF9TVEFURShOZXdTdGF0ZSkpOworICBpZiAoTmV3U3RhdGUgIT0gRElTQUJMRSkKKyAgeworICAgIC8qIEVuYWJsZSBkdWFsIGFkZHJlc3NpbmcgbW9kZSAqLworICAgIEkyQ3gtPk9BUjIgfD0gT0FSMl9FTkRVQUxfU2V0OworICB9CisgIGVsc2UKKyAgeworICAgIC8qIERpc2FibGUgZHVhbCBhZGRyZXNzaW5nIG1vZGUgKi8KKyAgICBJMkN4LT5PQVIyICY9IE9BUjJfRU5EVUFMX1Jlc2V0OworICB9Cit9CisKKy8qKgorICAqIEBicmllZiAgRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgc3BlY2lmaWVkIEkyQyBnZW5lcmFsIGNhbGwgZmVhdHVyZS4KKyAgKiBAcGFyYW0gIEkyQ3g6IHdoZXJlIHggY2FuIGJlIDEgb3IgMiB0byBzZWxlY3QgdGhlIEkyQyBwZXJpcGhlcmFsLgorICAqIEBwYXJhbSAgTmV3U3RhdGU6IG5ldyBzdGF0ZSBvZiB0aGUgSTJDIEdlbmVyYWwgY2FsbC4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZTogRU5BQkxFIG9yIERJU0FCTEUuCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIEkyQ19HZW5lcmFsQ2FsbENtZChJMkNfVHlwZURlZiogSTJDeCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfSTJDX0FMTF9QRVJJUEgoSTJDeCkpOworICBhc3NlcnRfcGFyYW0oSVNfRlVOQ1RJT05BTF9TVEFURShOZXdTdGF0ZSkpOworICBpZiAoTmV3U3RhdGUgIT0gRElTQUJMRSkKKyAgeworICAgIC8qIEVuYWJsZSBnZW5lcmFsbCBjYWxsICovCisgICAgSTJDeC0+Q1IxIHw9IENSMV9FTkdDX1NldDsKKyAgfQorICBlbHNlCisgIHsKKyAgICAvKiBEaXNhYmxlIGdlbmVyYWxsIGNhbGwgKi8KKyAgICBJMkN4LT5DUjEgJj0gQ1IxX0VOR0NfUmVzZXQ7CisgIH0KK30KKworLyoqCisgICogQGJyaWVmICBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBzcGVjaWZpZWQgSTJDIGludGVycnVwdHMuCisgICogQHBhcmFtICBJMkN4OiB3aGVyZSB4IGNhbiBiZSAxIG9yIDIgdG8gc2VsZWN0IHRoZSBJMkMgcGVyaXBoZXJhbC4KKyAgKiBAcGFyYW0gIEkyQ19JVDogc3BlY2lmaWVzIHRoZSBJMkMgaW50ZXJydXB0cyBzb3VyY2VzIHRvIGJlIGVuYWJsZWQgb3IgZGlzYWJsZWQuIAorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGFueSBjb21iaW5hdGlvbiBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBJMkNfSVRfQlVGOiBCdWZmZXIgaW50ZXJydXB0IG1hc2sKKyAgKiAgICAgQGFyZyBJMkNfSVRfRVZUOiBFdmVudCBpbnRlcnJ1cHQgbWFzaworICAqICAgICBAYXJnIEkyQ19JVF9FUlI6IEVycm9yIGludGVycnVwdCBtYXNrCisgICogQHBhcmFtICBOZXdTdGF0ZTogbmV3IHN0YXRlIG9mIHRoZSBzcGVjaWZpZWQgSTJDIGludGVycnVwdHMuCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmU6IEVOQUJMRSBvciBESVNBQkxFLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBJMkNfSVRDb25maWcoSTJDX1R5cGVEZWYqIEkyQ3gsIHVpbnQxNl90IEkyQ19JVCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfSTJDX0FMTF9QRVJJUEgoSTJDeCkpOworICBhc3NlcnRfcGFyYW0oSVNfRlVOQ1RJT05BTF9TVEFURShOZXdTdGF0ZSkpOworICBhc3NlcnRfcGFyYW0oSVNfSTJDX0NPTkZJR19JVChJMkNfSVQpKTsKKyAgCisgIGlmIChOZXdTdGF0ZSAhPSBESVNBQkxFKQorICB7CisgICAgLyogRW5hYmxlIHRoZSBzZWxlY3RlZCBJMkMgaW50ZXJydXB0cyAqLworICAgIEkyQ3gtPkNSMiB8PSBJMkNfSVQ7CisgIH0KKyAgZWxzZQorICB7CisgICAgLyogRGlzYWJsZSB0aGUgc2VsZWN0ZWQgSTJDIGludGVycnVwdHMgKi8KKyAgICBJMkN4LT5DUjIgJj0gKHVpbnQxNl90KX5JMkNfSVQ7CisgIH0KK30KKworLyoqCisgICogQGJyaWVmICBTZW5kcyBhIGRhdGEgYnl0ZSB0aHJvdWdoIHRoZSBJMkN4IHBlcmlwaGVyYWwuCisgICogQHBhcmFtICBJMkN4OiB3aGVyZSB4IGNhbiBiZSAxIG9yIDIgdG8gc2VsZWN0IHRoZSBJMkMgcGVyaXBoZXJhbC4KKyAgKiBAcGFyYW0gIERhdGE6IEJ5dGUgdG8gYmUgdHJhbnNtaXR0ZWQuLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBJMkNfU2VuZERhdGEoSTJDX1R5cGVEZWYqIEkyQ3gsIHVpbnQ4X3QgRGF0YSkKK3sKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX0kyQ19BTExfUEVSSVBIKEkyQ3gpKTsKKyAgLyogV3JpdGUgaW4gdGhlIERSIHJlZ2lzdGVyIHRoZSBkYXRhIHRvIGJlIHNlbnQgKi8KKyAgSTJDeC0+RFIgPSBEYXRhOworfQorCisvKioKKyAgKiBAYnJpZWYgIFJldHVybnMgdGhlIG1vc3QgcmVjZW50IHJlY2VpdmVkIGRhdGEgYnkgdGhlIEkyQ3ggcGVyaXBoZXJhbC4KKyAgKiBAcGFyYW0gIEkyQ3g6IHdoZXJlIHggY2FuIGJlIDEgb3IgMiB0byBzZWxlY3QgdGhlIEkyQyBwZXJpcGhlcmFsLgorICAqIEByZXR2YWwgVGhlIHZhbHVlIG9mIHRoZSByZWNlaXZlZCBkYXRhLgorICAqLwordWludDhfdCBJMkNfUmVjZWl2ZURhdGEoSTJDX1R5cGVEZWYqIEkyQ3gpCit7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19JMkNfQUxMX1BFUklQSChJMkN4KSk7CisgIC8qIFJldHVybiB0aGUgZGF0YSBpbiB0aGUgRFIgcmVnaXN0ZXIgKi8KKyAgcmV0dXJuICh1aW50OF90KUkyQ3gtPkRSOworfQorCisvKioKKyAgKiBAYnJpZWYgIFRyYW5zbWl0cyB0aGUgYWRkcmVzcyBieXRlIHRvIHNlbGVjdCB0aGUgc2xhdmUgZGV2aWNlLgorICAqIEBwYXJhbSAgSTJDeDogd2hlcmUgeCBjYW4gYmUgMSBvciAyIHRvIHNlbGVjdCB0aGUgSTJDIHBlcmlwaGVyYWwuCisgICogQHBhcmFtICBBZGRyZXNzOiBzcGVjaWZpZXMgdGhlIHNsYXZlIGFkZHJlc3Mgd2hpY2ggd2lsbCBiZSB0cmFuc21pdHRlZAorICAqIEBwYXJhbSAgSTJDX0RpcmVjdGlvbjogc3BlY2lmaWVzIHdoZXRoZXIgdGhlIEkyQyBkZXZpY2Ugd2lsbCBiZSBhCisgICogICBUcmFuc21pdHRlciBvciBhIFJlY2VpdmVyLiBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzCisgICogICAgIEBhcmcgSTJDX0RpcmVjdGlvbl9UcmFuc21pdHRlcjogVHJhbnNtaXR0ZXIgbW9kZQorICAqICAgICBAYXJnIEkyQ19EaXJlY3Rpb25fUmVjZWl2ZXI6IFJlY2VpdmVyIG1vZGUKKyAgKiBAcmV0dmFsIE5vbmUuCisgICovCit2b2lkIEkyQ19TZW5kN2JpdEFkZHJlc3MoSTJDX1R5cGVEZWYqIEkyQ3gsIHVpbnQ4X3QgQWRkcmVzcywgdWludDhfdCBJMkNfRGlyZWN0aW9uKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfSTJDX0FMTF9QRVJJUEgoSTJDeCkpOworICBhc3NlcnRfcGFyYW0oSVNfSTJDX0RJUkVDVElPTihJMkNfRGlyZWN0aW9uKSk7CisgIC8qIFRlc3Qgb24gdGhlIGRpcmVjdGlvbiB0byBzZXQvcmVzZXQgdGhlIHJlYWQvd3JpdGUgYml0ICovCisgIGlmIChJMkNfRGlyZWN0aW9uICE9IEkyQ19EaXJlY3Rpb25fVHJhbnNtaXR0ZXIpCisgIHsKKyAgICAvKiBTZXQgdGhlIGFkZHJlc3MgYml0MCBmb3IgcmVhZCAqLworICAgIEFkZHJlc3MgfD0gT0FSMV9BREQwX1NldDsKKyAgfQorICBlbHNlCisgIHsKKyAgICAvKiBSZXNldCB0aGUgYWRkcmVzcyBiaXQwIGZvciB3cml0ZSAqLworICAgIEFkZHJlc3MgJj0gT0FSMV9BREQwX1Jlc2V0OworICB9CisgIC8qIFNlbmQgdGhlIGFkZHJlc3MgKi8KKyAgSTJDeC0+RFIgPSBBZGRyZXNzOworfQorCisvKioKKyAgKiBAYnJpZWYgIFJlYWRzIHRoZSBzcGVjaWZpZWQgSTJDIHJlZ2lzdGVyIGFuZCByZXR1cm5zIGl0cyB2YWx1ZS4KKyAgKiBAcGFyYW0gIEkyQ19SZWdpc3Rlcjogc3BlY2lmaWVzIHRoZSByZWdpc3RlciB0byByZWFkLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBJMkNfUmVnaXN0ZXJfQ1IxOiAgQ1IxIHJlZ2lzdGVyLgorICAqICAgICBAYXJnIEkyQ19SZWdpc3Rlcl9DUjI6ICAgQ1IyIHJlZ2lzdGVyLgorICAqICAgICBAYXJnIEkyQ19SZWdpc3Rlcl9PQVIxOiAgT0FSMSByZWdpc3Rlci4KKyAgKiAgICAgQGFyZyBJMkNfUmVnaXN0ZXJfT0FSMjogIE9BUjIgcmVnaXN0ZXIuCisgICogICAgIEBhcmcgSTJDX1JlZ2lzdGVyX0RSOiAgICBEUiByZWdpc3Rlci4KKyAgKiAgICAgQGFyZyBJMkNfUmVnaXN0ZXJfU1IxOiAgIFNSMSByZWdpc3Rlci4KKyAgKiAgICAgQGFyZyBJMkNfUmVnaXN0ZXJfU1IyOiAgIFNSMiByZWdpc3Rlci4KKyAgKiAgICAgQGFyZyBJMkNfUmVnaXN0ZXJfQ0NSOiAgIENDUiByZWdpc3Rlci4KKyAgKiAgICAgQGFyZyBJMkNfUmVnaXN0ZXJfVFJJU0U6IFRSSVNFIHJlZ2lzdGVyLgorICAqIEByZXR2YWwgVGhlIHZhbHVlIG9mIHRoZSByZWFkIHJlZ2lzdGVyLgorICAqLwordWludDE2X3QgSTJDX1JlYWRSZWdpc3RlcihJMkNfVHlwZURlZiogSTJDeCwgdWludDhfdCBJMkNfUmVnaXN0ZXIpCit7CisgIF9fSU8gdWludDMyX3QgdG1wID0gMDsKKworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfSTJDX0FMTF9QRVJJUEgoSTJDeCkpOworICBhc3NlcnRfcGFyYW0oSVNfSTJDX1JFR0lTVEVSKEkyQ19SZWdpc3RlcikpOworCisgIHRtcCA9ICh1aW50MzJfdCkgSTJDeDsKKyAgdG1wICs9IEkyQ19SZWdpc3RlcjsKKworICAvKiBSZXR1cm4gdGhlIHNlbGVjdGVkIHJlZ2lzdGVyIHZhbHVlICovCisgIHJldHVybiAoKihfX0lPIHVpbnQxNl90ICopIHRtcCk7Cit9CisKKy8qKgorICAqIEBicmllZiAgRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgc3BlY2lmaWVkIEkyQyBzb2Z0d2FyZSByZXNldC4KKyAgKiBAcGFyYW0gIEkyQ3g6IHdoZXJlIHggY2FuIGJlIDEgb3IgMiB0byBzZWxlY3QgdGhlIEkyQyBwZXJpcGhlcmFsLgorICAqIEBwYXJhbSAgTmV3U3RhdGU6IG5ldyBzdGF0ZSBvZiB0aGUgSTJDIHNvZnR3YXJlIHJlc2V0LgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlOiBFTkFCTEUgb3IgRElTQUJMRS4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgSTJDX1NvZnR3YXJlUmVzZXRDbWQoSTJDX1R5cGVEZWYqIEkyQ3gsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSkKK3sKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX0kyQ19BTExfUEVSSVBIKEkyQ3gpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0ZVTkNUSU9OQUxfU1RBVEUoTmV3U3RhdGUpKTsKKyAgaWYgKE5ld1N0YXRlICE9IERJU0FCTEUpCisgIHsKKyAgICAvKiBQZXJpcGhlcmFsIHVuZGVyIHJlc2V0ICovCisgICAgSTJDeC0+Q1IxIHw9IENSMV9TV1JTVF9TZXQ7CisgIH0KKyAgZWxzZQorICB7CisgICAgLyogUGVyaXBoZXJhbCBub3QgdW5kZXIgcmVzZXQgKi8KKyAgICBJMkN4LT5DUjEgJj0gQ1IxX1NXUlNUX1Jlc2V0OworICB9Cit9CisKKy8qKgorICAqIEBicmllZiAgU2VsZWN0cyB0aGUgc3BlY2lmaWVkIEkyQyBOQUNLIHBvc2l0aW9uIGluIG1hc3RlciByZWNlaXZlciBtb2RlLgorICAqICAgICAgICAgVGhpcyBmdW5jdGlvbiBpcyB1c2VmdWwgaW4gSTJDIE1hc3RlciBSZWNlaXZlciBtb2RlIHdoZW4gdGhlIG51bWJlcgorICAqICAgICAgICAgb2YgZGF0YSB0byBiZSByZWNlaXZlZCBpcyBlcXVhbCB0byAyLiBJbiB0aGlzIGNhc2UsIHRoaXMgZnVuY3Rpb24gCisgICogICAgICAgICBzaG91bGQgYmUgY2FsbGVkICh3aXRoIHBhcmFtZXRlciBJMkNfTkFDS1Bvc2l0aW9uX05leHQpIGJlZm9yZSBkYXRhIAorICAqICAgICAgICAgcmVjZXB0aW9uIHN0YXJ0cyxhcyBkZXNjcmliZWQgaW4gdGhlIDItYnl0ZSByZWNlcHRpb24gcHJvY2VkdXJlIAorICAqICAgICAgICAgcmVjb21tZW5kZWQgaW4gUmVmZXJlbmNlIE1hbnVhbCBpbiBTZWN0aW9uOiBNYXN0ZXIgcmVjZWl2ZXIuICAgICAgICAgICAgICAgIAorICAqIEBwYXJhbSAgSTJDeDogd2hlcmUgeCBjYW4gYmUgMSBvciAyIHRvIHNlbGVjdCB0aGUgSTJDIHBlcmlwaGVyYWwuCisgICogQHBhcmFtICBJMkNfTkFDS1Bvc2l0aW9uOiBzcGVjaWZpZXMgdGhlIE5BQ0sgcG9zaXRpb24uIAorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBJMkNfTkFDS1Bvc2l0aW9uX05leHQ6IGluZGljYXRlcyB0aGF0IHRoZSBuZXh0IGJ5dGUgd2lsbCBiZSB0aGUgbGFzdAorICAqICAgICAgICAgIHJlY2VpdmVkIGJ5dGUuICAKKyAgKiAgICAgQGFyZyBJMkNfTkFDS1Bvc2l0aW9uX0N1cnJlbnQ6IGluZGljYXRlcyB0aGF0IGN1cnJlbnQgYnl0ZSBpcyB0aGUgbGFzdCAKKyAgKiAgICAgICAgICByZWNlaXZlZCBieXRlLgorICAqICAgICAgICAgICAgCisgICogQG5vdGUgICAgVGhpcyBmdW5jdGlvbiBjb25maWd1cmVzIHRoZSBzYW1lIGJpdCAoUE9TKSBhcyBJMkNfUEVDUG9zaXRpb25Db25maWcoKSAKKyAgKiAgICAgICAgICBidXQgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBpbiBJMkMgbW9kZSB3aGlsZSBJMkNfUEVDUG9zaXRpb25Db25maWcoKSAKKyAgKiAgICAgICAgICBpcyBpbnRlbmRlZCB0byB1c2VkIGluIFNNQlVTIG1vZGUuIAorICAqICAgICAgICAgICAgCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIEkyQ19OQUNLUG9zaXRpb25Db25maWcoSTJDX1R5cGVEZWYqIEkyQ3gsIHVpbnQxNl90IEkyQ19OQUNLUG9zaXRpb24pCit7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19JMkNfQUxMX1BFUklQSChJMkN4KSk7CisgIGFzc2VydF9wYXJhbShJU19JMkNfTkFDS19QT1NJVElPTihJMkNfTkFDS1Bvc2l0aW9uKSk7CisgIAorICAvKiBDaGVjayB0aGUgaW5wdXQgcGFyYW1ldGVyICovCisgIGlmIChJMkNfTkFDS1Bvc2l0aW9uID09IEkyQ19OQUNLUG9zaXRpb25fTmV4dCkKKyAgeworICAgIC8qIE5leHQgYnl0ZSBpbiBzaGlmdCByZWdpc3RlciBpcyB0aGUgbGFzdCByZWNlaXZlZCBieXRlICovCisgICAgSTJDeC0+Q1IxIHw9IEkyQ19OQUNLUG9zaXRpb25fTmV4dDsKKyAgfQorICBlbHNlCisgIHsKKyAgICAvKiBDdXJyZW50IGJ5dGUgaW4gc2hpZnQgcmVnaXN0ZXIgaXMgdGhlIGxhc3QgcmVjZWl2ZWQgYnl0ZSAqLworICAgIEkyQ3gtPkNSMSAmPSBJMkNfTkFDS1Bvc2l0aW9uX0N1cnJlbnQ7CisgIH0KK30KKworLyoqCisgICogQGJyaWVmICBEcml2ZXMgdGhlIFNNQnVzQWxlcnQgcGluIGhpZ2ggb3IgbG93IGZvciB0aGUgc3BlY2lmaWVkIEkyQy4KKyAgKiBAcGFyYW0gIEkyQ3g6IHdoZXJlIHggY2FuIGJlIDEgb3IgMiB0byBzZWxlY3QgdGhlIEkyQyBwZXJpcGhlcmFsLgorICAqIEBwYXJhbSAgSTJDX1NNQnVzQWxlcnQ6IHNwZWNpZmllcyBTTUJBbGVydCBwaW4gbGV2ZWwuIAorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBJMkNfU01CdXNBbGVydF9Mb3c6IFNNQkFsZXJ0IHBpbiBkcml2ZW4gbG93CisgICogICAgIEBhcmcgSTJDX1NNQnVzQWxlcnRfSGlnaDogU01CQWxlcnQgcGluIGRyaXZlbiBoaWdoCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIEkyQ19TTUJ1c0FsZXJ0Q29uZmlnKEkyQ19UeXBlRGVmKiBJMkN4LCB1aW50MTZfdCBJMkNfU01CdXNBbGVydCkKK3sKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX0kyQ19BTExfUEVSSVBIKEkyQ3gpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0kyQ19TTUJVU19BTEVSVChJMkNfU01CdXNBbGVydCkpOworICBpZiAoSTJDX1NNQnVzQWxlcnQgPT0gSTJDX1NNQnVzQWxlcnRfTG93KQorICB7CisgICAgLyogRHJpdmUgdGhlIFNNQnVzQWxlcnQgcGluIExvdyAqLworICAgIEkyQ3gtPkNSMSB8PSBJMkNfU01CdXNBbGVydF9Mb3c7CisgIH0KKyAgZWxzZQorICB7CisgICAgLyogRHJpdmUgdGhlIFNNQnVzQWxlcnQgcGluIEhpZ2ggICovCisgICAgSTJDeC0+Q1IxICY9IEkyQ19TTUJ1c0FsZXJ0X0hpZ2g7CisgIH0KK30KKworLyoqCisgICogQGJyaWVmICBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBzcGVjaWZpZWQgSTJDIFBFQyB0cmFuc2Zlci4KKyAgKiBAcGFyYW0gIEkyQ3g6IHdoZXJlIHggY2FuIGJlIDEgb3IgMiB0byBzZWxlY3QgdGhlIEkyQyBwZXJpcGhlcmFsLgorICAqIEBwYXJhbSAgTmV3U3RhdGU6IG5ldyBzdGF0ZSBvZiB0aGUgSTJDIFBFQyB0cmFuc21pc3Npb24uCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmU6IEVOQUJMRSBvciBESVNBQkxFLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBJMkNfVHJhbnNtaXRQRUMoSTJDX1R5cGVEZWYqIEkyQ3gsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSkKK3sKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX0kyQ19BTExfUEVSSVBIKEkyQ3gpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0ZVTkNUSU9OQUxfU1RBVEUoTmV3U3RhdGUpKTsKKyAgaWYgKE5ld1N0YXRlICE9IERJU0FCTEUpCisgIHsKKyAgICAvKiBFbmFibGUgdGhlIHNlbGVjdGVkIEkyQyBQRUMgdHJhbnNtaXNzaW9uICovCisgICAgSTJDeC0+Q1IxIHw9IENSMV9QRUNfU2V0OworICB9CisgIGVsc2UKKyAgeworICAgIC8qIERpc2FibGUgdGhlIHNlbGVjdGVkIEkyQyBQRUMgdHJhbnNtaXNzaW9uICovCisgICAgSTJDeC0+Q1IxICY9IENSMV9QRUNfUmVzZXQ7CisgIH0KK30KKworLyoqCisgICogQGJyaWVmICBTZWxlY3RzIHRoZSBzcGVjaWZpZWQgSTJDIFBFQyBwb3NpdGlvbi4KKyAgKiBAcGFyYW0gIEkyQ3g6IHdoZXJlIHggY2FuIGJlIDEgb3IgMiB0byBzZWxlY3QgdGhlIEkyQyBwZXJpcGhlcmFsLgorICAqIEBwYXJhbSAgSTJDX1BFQ1Bvc2l0aW9uOiBzcGVjaWZpZXMgdGhlIFBFQyBwb3NpdGlvbi4gCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIEkyQ19QRUNQb3NpdGlvbl9OZXh0OiBpbmRpY2F0ZXMgdGhhdCB0aGUgbmV4dCBieXRlIGlzIFBFQworICAqICAgICBAYXJnIEkyQ19QRUNQb3NpdGlvbl9DdXJyZW50OiBpbmRpY2F0ZXMgdGhhdCBjdXJyZW50IGJ5dGUgaXMgUEVDCisgICogICAgICAgCisgICogQG5vdGUgICAgVGhpcyBmdW5jdGlvbiBjb25maWd1cmVzIHRoZSBzYW1lIGJpdCAoUE9TKSBhcyBJMkNfTkFDS1Bvc2l0aW9uQ29uZmlnKCkKKyAgKiAgICAgICAgICBidXQgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBpbiBTTUJVUyBtb2RlIHdoaWxlIEkyQ19OQUNLUG9zaXRpb25Db25maWcoKSAKKyAgKiAgICAgICAgICBpcyBpbnRlbmRlZCB0byB1c2VkIGluIEkyQyBtb2RlLgorICAqICAgICAgICAgICAgICAgCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIEkyQ19QRUNQb3NpdGlvbkNvbmZpZyhJMkNfVHlwZURlZiogSTJDeCwgdWludDE2X3QgSTJDX1BFQ1Bvc2l0aW9uKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfSTJDX0FMTF9QRVJJUEgoSTJDeCkpOworICBhc3NlcnRfcGFyYW0oSVNfSTJDX1BFQ19QT1NJVElPTihJMkNfUEVDUG9zaXRpb24pKTsKKyAgaWYgKEkyQ19QRUNQb3NpdGlvbiA9PSBJMkNfUEVDUG9zaXRpb25fTmV4dCkKKyAgeworICAgIC8qIE5leHQgYnl0ZSBpbiBzaGlmdCByZWdpc3RlciBpcyBQRUMgKi8KKyAgICBJMkN4LT5DUjEgfD0gSTJDX1BFQ1Bvc2l0aW9uX05leHQ7CisgIH0KKyAgZWxzZQorICB7CisgICAgLyogQ3VycmVudCBieXRlIGluIHNoaWZ0IHJlZ2lzdGVyIGlzIFBFQyAqLworICAgIEkyQ3gtPkNSMSAmPSBJMkNfUEVDUG9zaXRpb25fQ3VycmVudDsKKyAgfQorfQorCisvKioKKyAgKiBAYnJpZWYgIEVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIFBFQyB2YWx1ZSBjYWxjdWxhdGlvbiBvZiB0aGUgdHJhbnNmZXJyZWQgYnl0ZXMuCisgICogQHBhcmFtICBJMkN4OiB3aGVyZSB4IGNhbiBiZSAxIG9yIDIgdG8gc2VsZWN0IHRoZSBJMkMgcGVyaXBoZXJhbC4KKyAgKiBAcGFyYW0gIE5ld1N0YXRlOiBuZXcgc3RhdGUgb2YgdGhlIEkyQ3ggUEVDIHZhbHVlIGNhbGN1bGF0aW9uLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlOiBFTkFCTEUgb3IgRElTQUJMRS4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgSTJDX0NhbGN1bGF0ZVBFQyhJMkNfVHlwZURlZiogSTJDeCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfSTJDX0FMTF9QRVJJUEgoSTJDeCkpOworICBhc3NlcnRfcGFyYW0oSVNfRlVOQ1RJT05BTF9TVEFURShOZXdTdGF0ZSkpOworICBpZiAoTmV3U3RhdGUgIT0gRElTQUJMRSkKKyAgeworICAgIC8qIEVuYWJsZSB0aGUgc2VsZWN0ZWQgSTJDIFBFQyBjYWxjdWxhdGlvbiAqLworICAgIEkyQ3gtPkNSMSB8PSBDUjFfRU5QRUNfU2V0OworICB9CisgIGVsc2UKKyAgeworICAgIC8qIERpc2FibGUgdGhlIHNlbGVjdGVkIEkyQyBQRUMgY2FsY3VsYXRpb24gKi8KKyAgICBJMkN4LT5DUjEgJj0gQ1IxX0VOUEVDX1Jlc2V0OworICB9Cit9CisKKy8qKgorICAqIEBicmllZiAgUmV0dXJucyB0aGUgUEVDIHZhbHVlIGZvciB0aGUgc3BlY2lmaWVkIEkyQy4KKyAgKiBAcGFyYW0gIEkyQ3g6IHdoZXJlIHggY2FuIGJlIDEgb3IgMiB0byBzZWxlY3QgdGhlIEkyQyBwZXJpcGhlcmFsLgorICAqIEByZXR2YWwgVGhlIFBFQyB2YWx1ZS4KKyAgKi8KK3VpbnQ4X3QgSTJDX0dldFBFQyhJMkNfVHlwZURlZiogSTJDeCkKK3sKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX0kyQ19BTExfUEVSSVBIKEkyQ3gpKTsKKyAgLyogUmV0dXJuIHRoZSBzZWxlY3RlZCBJMkMgUEVDIHZhbHVlICovCisgIHJldHVybiAoKEkyQ3gtPlNSMikgPj4gOCk7Cit9CisKKy8qKgorICAqIEBicmllZiAgRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgc3BlY2lmaWVkIEkyQyBBUlAuCisgICogQHBhcmFtICBJMkN4OiB3aGVyZSB4IGNhbiBiZSAxIG9yIDIgdG8gc2VsZWN0IHRoZSBJMkMgcGVyaXBoZXJhbC4KKyAgKiBAcGFyYW0gIE5ld1N0YXRlOiBuZXcgc3RhdGUgb2YgdGhlIEkyQ3ggQVJQLiAKKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZTogRU5BQkxFIG9yIERJU0FCTEUuCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIEkyQ19BUlBDbWQoSTJDX1R5cGVEZWYqIEkyQ3gsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSkKK3sKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX0kyQ19BTExfUEVSSVBIKEkyQ3gpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0ZVTkNUSU9OQUxfU1RBVEUoTmV3U3RhdGUpKTsKKyAgaWYgKE5ld1N0YXRlICE9IERJU0FCTEUpCisgIHsKKyAgICAvKiBFbmFibGUgdGhlIHNlbGVjdGVkIEkyQyBBUlAgKi8KKyAgICBJMkN4LT5DUjEgfD0gQ1IxX0VOQVJQX1NldDsKKyAgfQorICBlbHNlCisgIHsKKyAgICAvKiBEaXNhYmxlIHRoZSBzZWxlY3RlZCBJMkMgQVJQICovCisgICAgSTJDeC0+Q1IxICY9IENSMV9FTkFSUF9SZXNldDsKKyAgfQorfQorCisvKioKKyAgKiBAYnJpZWYgIEVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIHNwZWNpZmllZCBJMkMgQ2xvY2sgc3RyZXRjaGluZy4KKyAgKiBAcGFyYW0gIEkyQ3g6IHdoZXJlIHggY2FuIGJlIDEgb3IgMiB0byBzZWxlY3QgdGhlIEkyQyBwZXJpcGhlcmFsLgorICAqIEBwYXJhbSAgTmV3U3RhdGU6IG5ldyBzdGF0ZSBvZiB0aGUgSTJDeCBDbG9jayBzdHJldGNoaW5nLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlOiBFTkFCTEUgb3IgRElTQUJMRS4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgSTJDX1N0cmV0Y2hDbG9ja0NtZChJMkNfVHlwZURlZiogSTJDeCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfSTJDX0FMTF9QRVJJUEgoSTJDeCkpOworICBhc3NlcnRfcGFyYW0oSVNfRlVOQ1RJT05BTF9TVEFURShOZXdTdGF0ZSkpOworICBpZiAoTmV3U3RhdGUgPT0gRElTQUJMRSkKKyAgeworICAgIC8qIEVuYWJsZSB0aGUgc2VsZWN0ZWQgSTJDIENsb2NrIHN0cmV0Y2hpbmcgKi8KKyAgICBJMkN4LT5DUjEgfD0gQ1IxX05PU1RSRVRDSF9TZXQ7CisgIH0KKyAgZWxzZQorICB7CisgICAgLyogRGlzYWJsZSB0aGUgc2VsZWN0ZWQgSTJDIENsb2NrIHN0cmV0Y2hpbmcgKi8KKyAgICBJMkN4LT5DUjEgJj0gQ1IxX05PU1RSRVRDSF9SZXNldDsKKyAgfQorfQorCisvKioKKyAgKiBAYnJpZWYgIFNlbGVjdHMgdGhlIHNwZWNpZmllZCBJMkMgZmFzdCBtb2RlIGR1dHkgY3ljbGUuCisgICogQHBhcmFtICBJMkN4OiB3aGVyZSB4IGNhbiBiZSAxIG9yIDIgdG8gc2VsZWN0IHRoZSBJMkMgcGVyaXBoZXJhbC4KKyAgKiBAcGFyYW0gIEkyQ19EdXR5Q3ljbGU6IHNwZWNpZmllcyB0aGUgZmFzdCBtb2RlIGR1dHkgY3ljbGUuCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIEkyQ19EdXR5Q3ljbGVfMjogSTJDIGZhc3QgbW9kZSBUbG93L1RoaWdoID0gMgorICAqICAgICBAYXJnIEkyQ19EdXR5Q3ljbGVfMTZfOTogSTJDIGZhc3QgbW9kZSBUbG93L1RoaWdoID0gMTYvOQorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBJMkNfRmFzdE1vZGVEdXR5Q3ljbGVDb25maWcoSTJDX1R5cGVEZWYqIEkyQ3gsIHVpbnQxNl90IEkyQ19EdXR5Q3ljbGUpCit7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19JMkNfQUxMX1BFUklQSChJMkN4KSk7CisgIGFzc2VydF9wYXJhbShJU19JMkNfRFVUWV9DWUNMRShJMkNfRHV0eUN5Y2xlKSk7CisgIGlmIChJMkNfRHV0eUN5Y2xlICE9IEkyQ19EdXR5Q3ljbGVfMTZfOSkKKyAgeworICAgIC8qIEkyQyBmYXN0IG1vZGUgVGxvdy9UaGlnaD0yICovCisgICAgSTJDeC0+Q0NSICY9IEkyQ19EdXR5Q3ljbGVfMjsKKyAgfQorICBlbHNlCisgIHsKKyAgICAvKiBJMkMgZmFzdCBtb2RlIFRsb3cvVGhpZ2g9MTYvOSAqLworICAgIEkyQ3gtPkNDUiB8PSBJMkNfRHV0eUN5Y2xlXzE2Xzk7CisgIH0KK30KKworCisKKy8qKgorICogQGJyaWVmCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgIEkyQyBTdGF0ZSBNb25pdG9yaW5nIEZ1bmN0aW9ucworICogICAgICAgICAgICAgICAgICAgICAgIAorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogICAKKyAqIFRoaXMgSTJDIGRyaXZlciBwcm92aWRlcyB0aHJlZSBkaWZmZXJlbnQgd2F5cyBmb3IgSTJDIHN0YXRlIG1vbml0b3JpbmcKKyAqICBkZXBlbmRpbmcgb24gdGhlIGFwcGxpY2F0aW9uIHJlcXVpcmVtZW50cyBhbmQgY29uc3RyYWludHM6CisgKiAgICAgICAgCisgKiAgCisgKiAxKSBCYXNpYyBzdGF0ZSBtb25pdG9yaW5nOgorICogICAgVXNpbmcgSTJDX0NoZWNrRXZlbnQoKSBmdW5jdGlvbjoKKyAqICAgIEl0IGNvbXBhcmVzIHRoZSBzdGF0dXMgcmVnaXN0ZXJzIChTUjEgYW5kIFNSMikgY29udGVudCB0byBhIGdpdmVuIGV2ZW50CisgKiAgICAoY2FuIGJlIHRoZSBjb21iaW5hdGlvbiBvZiBvbmUgb3IgbW9yZSBmbGFncykuCisgKiAgICBJdCByZXR1cm5zIFNVQ0NFU1MgaWYgdGhlIGN1cnJlbnQgc3RhdHVzIGluY2x1ZGVzIHRoZSBnaXZlbiBmbGFncyAKKyAqICAgIGFuZCByZXR1cm5zIEVSUk9SIGlmIG9uZSBvciBtb3JlIGZsYWdzIGFyZSBtaXNzaW5nIGluIHRoZSBjdXJyZW50IHN0YXR1cy4KKyAqICAgIC0gV2hlbiB0byB1c2U6CisgKiAgICAgIC0gVGhpcyBmdW5jdGlvbiBpcyBzdWl0YWJsZSBmb3IgbW9zdCBhcHBsaWNhdGlvbnMgYXMgd2VsbCBhcyBmb3Igc3RhcnR1cCAKKyAqICAgICAgYWN0aXZpdHkgc2luY2UgdGhlIGV2ZW50cyBhcmUgZnVsbHkgZGVzY3JpYmVkIGluIHRoZSBwcm9kdWN0IHJlZmVyZW5jZSBtYW51YWwgCisgKiAgICAgIChSTTAwMDgpLgorICogICAgICAtIEl0IGlzIGFsc28gc3VpdGFibGUgZm9yIHVzZXJzIHdobyBuZWVkIHRvIGRlZmluZSB0aGVpciBvd24gZXZlbnRzLgorICogICAgLSBMaW1pdGF0aW9uczoKKyAqICAgICAgLSBJZiBhbiBlcnJvciBvY2N1cnMgKGllLiBlcnJvciBmbGFncyBhcmUgc2V0IGJlc2lkZXMgdG8gdGhlIG1vbml0b3JlZCBmbGFncyksCisgKiAgICAgICAgdGhlIEkyQ19DaGVja0V2ZW50KCkgZnVuY3Rpb24gbWF5IHJldHVybiBTVUNDRVNTIGRlc3BpdGUgdGhlIGNvbW11bmljYXRpb24KKyAqICAgICAgICBob2xkIG9yIGNvcnJ1cHRlZCByZWFsIHN0YXRlLiAKKyAqICAgICAgICBJbiB0aGlzIGNhc2UsIGl0IGlzIGFkdmlzZWQgdG8gdXNlIGVycm9yIGludGVycnVwdHMgdG8gbW9uaXRvciB0aGUgZXJyb3IKKyAqICAgICAgICBldmVudHMgYW5kIGhhbmRsZSB0aGVtIGluIHRoZSBpbnRlcnJ1cHQgSVJRIGhhbmRsZXIuCisgKiAgICAgICAgCisgKiAgICAgICAgQG5vdGUgCisgKiAgICAgICAgRm9yIGVycm9yIG1hbmFnZW1lbnQsIGl0IGlzIGFkdmlzZWQgdG8gdXNlIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zOgorICogICAgICAgICAgLSBJMkNfSVRDb25maWcoKSB0byBjb25maWd1cmUgYW5kIGVuYWJsZSB0aGUgZXJyb3IgaW50ZXJydXB0cyAoSTJDX0lUX0VSUikuCisgKiAgICAgICAgICAtIEkyQ3hfRVJfSVJRSGFuZGxlcigpIHdoaWNoIGlzIGNhbGxlZCB3aGVuIHRoZSBlcnJvciBpbnRlcnJ1cHQgb2NjdXJzLgorICogICAgICAgICAgICBXaGVyZSB4IGlzIHRoZSBwZXJpcGhlcmFsIGluc3RhbmNlIChJMkMxLCBJMkMyIC4uLikKKyAqICAgICAgICAgIC0gSTJDX0dldEZsYWdTdGF0dXMoKSBvciBJMkNfR2V0SVRTdGF0dXMoKSB0byBiZSBjYWxsZWQgaW50byBJMkN4X0VSX0lSUUhhbmRsZXIoKSAKKyAqICAgICAgICAgICAgaW4gb3JkZXIgdG8gZGV0ZXJtaW5lIHdoaWNoIGVycm9yIG9jY3VyZWQuCisgKiAgICAgICAgICAtIEkyQ19DbGVhckZsYWcoKSBvciBJMkNfQ2xlYXJJVFBlbmRpbmdCaXQoKSBhbmQvb3IgSTJDX1NvZnR3YXJlUmVzZXRDbWQoKQorICogICAgICAgICAgICBhbmQvb3IgSTJDX0dlbmVyYXRlU3RvcCgpIGluIG9yZGVyIHRvIGNsZWFyIHRoZSBlcnJvciBmbGFnIGFuZCBzb3VyY2UsCisgKiAgICAgICAgICAgIGFuZCByZXR1cm4gdG8gY29ycmVjdCBjb21tdW5pY2F0aW9uIHN0YXR1cy4KKyAqICAgICAgICAgICAgCisgKgorICogIDIpIEFkdmFuY2VkIHN0YXRlIG1vbml0b3Jpbmc6CisgKiAgICAgVXNpbmcgdGhlIGZ1bmN0aW9uIEkyQ19HZXRMYXN0RXZlbnQoKSB3aGljaCByZXR1cm5zIHRoZSBpbWFnZSBvZiBib3RoIHN0YXR1cyAKKyAqICAgICByZWdpc3RlcnMgaW4gYSBzaW5nbGUgd29yZCAodWludDMyX3QpIChTdGF0dXMgUmVnaXN0ZXIgMiB2YWx1ZSBpcyBzaGlmdGVkIGxlZnQgCisgKiAgICAgYnkgMTYgYml0cyBhbmQgY29uY2F0ZW5hdGVkIHRvIFN0YXR1cyBSZWdpc3RlciAxKS4KKyAqICAgICAtIFdoZW4gdG8gdXNlOgorICogICAgICAgLSBUaGlzIGZ1bmN0aW9uIGlzIHN1aXRhYmxlIGZvciB0aGUgc2FtZSBhcHBsaWNhdGlvbnMgYWJvdmUgYnV0IGl0IGFsbG93cyB0bworICogICAgICAgICBvdmVyY29tZSB0aGUgbWVudGlvbmVkIGxpbWl0YXRpb24gb2YgSTJDX0dldEZsYWdTdGF0dXMoKSBmdW5jdGlvbi4KKyAqICAgICAgICAgVGhlIHJldHVybmVkIHZhbHVlIGNvdWxkIGJlIGNvbXBhcmVkIHRvIGV2ZW50cyBhbHJlYWR5IGRlZmluZWQgaW4gdGhlIAorICogICAgICAgICBsaWJyYXJ5IChzdG0zMmYxMHhfaTJjLmgpIG9yIHRvIGN1c3RvbSB2YWx1ZXMgZGVmaW5lZCBieSB1c2VyLgorICogICAgICAgLSBUaGlzIGZ1bmN0aW9uIGlzIHN1aXRhYmxlIHdoZW4gbXVsdGlwbGUgZmxhZ3MgYXJlIG1vbml0b3JlZCBhdCB0aGUgc2FtZSB0aW1lLgorICogICAgICAgLSBBdCB0aGUgb3Bwb3NpdGUgb2YgSTJDX0NoZWNrRXZlbnQoKSBmdW5jdGlvbiwgdGhpcyBmdW5jdGlvbiBhbGxvd3MgdXNlciB0bworICogICAgICAgICBjaG9vc2Ugd2hlbiBhbiBldmVudCBpcyBhY2NlcHRlZCAod2hlbiBhbGwgZXZlbnRzIGZsYWdzIGFyZSBzZXQgYW5kIG5vIAorICogICAgICAgICBvdGhlciBmbGFncyBhcmUgc2V0IG9yIGp1c3Qgd2hlbiB0aGUgbmVlZGVkIGZsYWdzIGFyZSBzZXQgbGlrZSAKKyAqICAgICAgICAgSTJDX0NoZWNrRXZlbnQoKSBmdW5jdGlvbikuCisgKiAgICAgLSBMaW1pdGF0aW9uczoKKyAqICAgICAgIC0gVXNlciBtYXkgbmVlZCB0byBkZWZpbmUgaGlzIG93biBldmVudHMuCisgKiAgICAgICAtIFNhbWUgcmVtYXJrIGNvbmNlcm5pbmcgdGhlIGVycm9yIG1hbmFnZW1lbnQgaXMgYXBwbGljYWJsZSBmb3IgdGhpcyAKKyAqICAgICAgICAgZnVuY3Rpb24gaWYgdXNlciBkZWNpZGVzIHRvIGNoZWNrIG9ubHkgcmVndWxhciBjb21tdW5pY2F0aW9uIGZsYWdzIChhbmQgCisgKiAgICAgICAgIGlnbm9yZXMgZXJyb3IgZmxhZ3MpLgorICogICAgIAorICoKKyAqICAzKSBGbGFnLWJhc2VkIHN0YXRlIG1vbml0b3Jpbmc6CisgKiAgICAgVXNpbmcgdGhlIGZ1bmN0aW9uIEkyQ19HZXRGbGFnU3RhdHVzKCkgd2hpY2ggc2ltcGx5IHJldHVybnMgdGhlIHN0YXR1cyBvZiAKKyAqICAgICBvbmUgc2luZ2xlIGZsYWcgKGllLiBJMkNfRkxBR19SWE5FIC4uLikuIAorICogICAgIC0gV2hlbiB0byB1c2U6CisgKiAgICAgICAgLSBUaGlzIGZ1bmN0aW9uIGNvdWxkIGJlIHVzZWQgZm9yIHNwZWNpZmljIGFwcGxpY2F0aW9ucyBvciBpbiBkZWJ1ZyBwaGFzZS4KKyAqICAgICAgICAtIEl0IGlzIHN1aXRhYmxlIHdoZW4gb25seSBvbmUgZmxhZyBjaGVja2luZyBpcyBuZWVkZWQgKG1vc3QgSTJDIGV2ZW50cyAKKyAqICAgICAgICAgIGFyZSBtb25pdG9yZWQgdGhyb3VnaCBtdWx0aXBsZSBmbGFncykuCisgKiAgICAgLSBMaW1pdGF0aW9uczogCisgKiAgICAgICAgLSBXaGVuIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiwgdGhlIFN0YXR1cyByZWdpc3RlciBpcyBhY2Nlc3NlZC4gU29tZSBmbGFncyBhcmUKKyAqICAgICAgICAgIGNsZWFyZWQgd2hlbiB0aGUgc3RhdHVzIHJlZ2lzdGVyIGlzIGFjY2Vzc2VkLiBTbyBjaGVja2luZyB0aGUgc3RhdHVzCisgKiAgICAgICAgICBvZiBvbmUgRmxhZywgbWF5IGNsZWFyIG90aGVyIG9uZXMuCisgKiAgICAgICAgLSBGdW5jdGlvbiBtYXkgbmVlZCB0byBiZSBjYWxsZWQgdHdpY2Ugb3IgbW9yZSBpbiBvcmRlciB0byBtb25pdG9yIG9uZSAKKyAqICAgICAgICAgIHNpbmdsZSBldmVudC4KKyAqCisgKiAgRm9yIGRldGFpbGVkIGRlc2NyaXB0aW9uIG9mIEV2ZW50cywgcGxlYXNlIHJlZmVyIHRvIHNlY3Rpb24gSTJDX0V2ZW50cyBpbiAKKyAqICBzdG0zMmYxMHhfaTJjLmggZmlsZS4KKyAqICAKKyAqLworCisvKioKKyAqIAorICogIDEpIEJhc2ljIHN0YXRlIG1vbml0b3JpbmcKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKworLyoqCisgICogQGJyaWVmICBDaGVja3Mgd2hldGhlciB0aGUgbGFzdCBJMkN4IEV2ZW50IGlzIGVxdWFsIHRvIHRoZSBvbmUgcGFzc2VkCisgICogICBhcyBwYXJhbWV0ZXIuCisgICogQHBhcmFtICBJMkN4OiB3aGVyZSB4IGNhbiBiZSAxIG9yIDIgdG8gc2VsZWN0IHRoZSBJMkMgcGVyaXBoZXJhbC4KKyAgKiBAcGFyYW0gIEkyQ19FVkVOVDogc3BlY2lmaWVzIHRoZSBldmVudCB0byBiZSBjaGVja2VkLiAKKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICAgIEBhcmcgSTJDX0VWRU5UX1NMQVZFX1RSQU5TTUlUVEVSX0FERFJFU1NfTUFUQ0hFRCAgICAgICAgICAgOiBFVjEKKyAgKiAgICAgQGFyZyBJMkNfRVZFTlRfU0xBVkVfUkVDRUlWRVJfQUREUkVTU19NQVRDSEVEICAgICAgICAgICAgICA6IEVWMQorICAqICAgICBAYXJnIEkyQ19FVkVOVF9TTEFWRV9UUkFOU01JVFRFUl9TRUNPTkRBRERSRVNTX01BVENIRUQgICAgIDogRVYxCisgICogICAgIEBhcmcgSTJDX0VWRU5UX1NMQVZFX1JFQ0VJVkVSX1NFQ09OREFERFJFU1NfTUFUQ0hFRCAgICAgICAgOiBFVjEKKyAgKiAgICAgQGFyZyBJMkNfRVZFTlRfU0xBVkVfR0VORVJBTENBTExBRERSRVNTX01BVENIRUQgICAgICAgICAgICA6IEVWMQorICAqICAgICBAYXJnIEkyQ19FVkVOVF9TTEFWRV9CWVRFX1JFQ0VJVkVEICAgICAgICAgICAgICAgICAgICAgICAgIDogRVYyCisgICogICAgIEBhcmcgKEkyQ19FVkVOVF9TTEFWRV9CWVRFX1JFQ0VJVkVEIHwgSTJDX0ZMQUdfRFVBTEYpICAgICAgOiBFVjIKKyAgKiAgICAgQGFyZyAoSTJDX0VWRU5UX1NMQVZFX0JZVEVfUkVDRUlWRUQgfCBJMkNfRkxBR19HRU5DQUxMKSAgICA6IEVWMgorICAqICAgICBAYXJnIEkyQ19FVkVOVF9TTEFWRV9CWVRFX1RSQU5TTUlUVEVEICAgICAgICAgICAgICAgICAgICAgIDogRVYzCisgICogICAgIEBhcmcgKEkyQ19FVkVOVF9TTEFWRV9CWVRFX1RSQU5TTUlUVEVEIHwgSTJDX0ZMQUdfRFVBTEYpICAgOiBFVjMKKyAgKiAgICAgQGFyZyAoSTJDX0VWRU5UX1NMQVZFX0JZVEVfVFJBTlNNSVRURUQgfCBJMkNfRkxBR19HRU5DQUxMKSA6IEVWMworICAqICAgICBAYXJnIEkyQ19FVkVOVF9TTEFWRV9BQ0tfRkFJTFVSRSAgICAgICAgICAgICAgICAgICAgICAgICAgIDogRVYzXzIKKyAgKiAgICAgQGFyZyBJMkNfRVZFTlRfU0xBVkVfU1RPUF9ERVRFQ1RFRCAgICAgICAgICAgICAgICAgICAgICAgICA6IEVWNAorICAqICAgICBAYXJnIEkyQ19FVkVOVF9NQVNURVJfTU9ERV9TRUxFQ1QgICAgICAgICAgICAgICAgICAgICAgICAgIDogRVY1CisgICogICAgIEBhcmcgSTJDX0VWRU5UX01BU1RFUl9UUkFOU01JVFRFUl9NT0RFX1NFTEVDVEVEICAgICAgICAgICAgOiBFVjYgICAgIAorICAqICAgICBAYXJnIEkyQ19FVkVOVF9NQVNURVJfUkVDRUlWRVJfTU9ERV9TRUxFQ1RFRCAgICAgICAgICAgICAgIDogRVY2CisgICogICAgIEBhcmcgSTJDX0VWRU5UX01BU1RFUl9CWVRFX1JFQ0VJVkVEICAgICAgICAgICAgICAgICAgICAgICAgOiBFVjcKKyAgKiAgICAgQGFyZyBJMkNfRVZFTlRfTUFTVEVSX0JZVEVfVFJBTlNNSVRUSU5HICAgICAgICAgICAgICAgICAgICA6IEVWOAorICAqICAgICBAYXJnIEkyQ19FVkVOVF9NQVNURVJfQllURV9UUkFOU01JVFRFRCAgICAgICAgICAgICAgICAgICAgIDogRVY4XzIKKyAgKiAgICAgQGFyZyBJMkNfRVZFTlRfTUFTVEVSX01PREVfQUREUkVTUzEwICAgICAgICAgICAgICAgICAgICAgICA6IEVWOQorICAqICAgICAKKyAgKiBAbm90ZTogRm9yIGRldGFpbGVkIGRlc2NyaXB0aW9uIG9mIEV2ZW50cywgcGxlYXNlIHJlZmVyIHRvIHNlY3Rpb24gCisgICogICAgSTJDX0V2ZW50cyBpbiBzdG0zMmYxMHhfaTJjLmggZmlsZS4KKyAgKiAgICAKKyAgKiBAcmV0dmFsIEFuIEVycm9yU3RhdHVzIGVudW1lcmF0aW9uIHZhbHVlOgorICAqIC0gU1VDQ0VTUzogTGFzdCBldmVudCBpcyBlcXVhbCB0byB0aGUgSTJDX0VWRU5UCisgICogLSBFUlJPUjogTGFzdCBldmVudCBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgSTJDX0VWRU5UCisgICovCitFcnJvclN0YXR1cyBJMkNfQ2hlY2tFdmVudChJMkNfVHlwZURlZiogSTJDeCwgdWludDMyX3QgSTJDX0VWRU5UKQoreworICB1aW50MzJfdCBsYXN0ZXZlbnQgPSAwOworICB1aW50MzJfdCBmbGFnMSA9IDAsIGZsYWcyID0gMDsKKyAgRXJyb3JTdGF0dXMgc3RhdHVzID0gRVJST1I7CisKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX0kyQ19BTExfUEVSSVBIKEkyQ3gpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0kyQ19FVkVOVChJMkNfRVZFTlQpKTsKKworICAvKiBSZWFkIHRoZSBJMkN4IHN0YXR1cyByZWdpc3RlciAqLworICBmbGFnMSA9IEkyQ3gtPlNSMTsKKyAgZmxhZzIgPSBJMkN4LT5TUjI7CisgIGZsYWcyID0gZmxhZzIgPDwgMTY7CisKKyAgLyogR2V0IHRoZSBsYXN0IGV2ZW50IHZhbHVlIGZyb20gSTJDIHN0YXR1cyByZWdpc3RlciAqLworICBsYXN0ZXZlbnQgPSAoZmxhZzEgfCBmbGFnMikgJiBGTEFHX01hc2s7CisKKyAgLyogQ2hlY2sgd2hldGhlciB0aGUgbGFzdCBldmVudCBjb250YWlucyB0aGUgSTJDX0VWRU5UICovCisgIGlmICgobGFzdGV2ZW50ICYgSTJDX0VWRU5UKSA9PSBJMkNfRVZFTlQpCisgIHsKKyAgICAvKiBTVUNDRVNTOiBsYXN0IGV2ZW50IGlzIGVxdWFsIHRvIEkyQ19FVkVOVCAqLworICAgIHN0YXR1cyA9IFNVQ0NFU1M7CisgIH0KKyAgZWxzZQorICB7CisgICAgLyogRVJST1I6IGxhc3QgZXZlbnQgaXMgZGlmZmVyZW50IGZyb20gSTJDX0VWRU5UICovCisgICAgc3RhdHVzID0gRVJST1I7CisgIH0KKyAgLyogUmV0dXJuIHN0YXR1cyAqLworICByZXR1cm4gc3RhdHVzOworfQorCisvKioKKyAqIAorICogIDIpIEFkdmFuY2VkIHN0YXRlIG1vbml0b3JpbmcKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKworLyoqCisgICogQGJyaWVmICBSZXR1cm5zIHRoZSBsYXN0IEkyQ3ggRXZlbnQuCisgICogQHBhcmFtICBJMkN4OiB3aGVyZSB4IGNhbiBiZSAxIG9yIDIgdG8gc2VsZWN0IHRoZSBJMkMgcGVyaXBoZXJhbC4KKyAgKiAgICAgCisgICogQG5vdGU6IEZvciBkZXRhaWxlZCBkZXNjcmlwdGlvbiBvZiBFdmVudHMsIHBsZWFzZSByZWZlciB0byBzZWN0aW9uIAorICAqICAgIEkyQ19FdmVudHMgaW4gc3RtMzJmMTB4X2kyYy5oIGZpbGUuCisgICogICAgCisgICogQHJldHZhbCBUaGUgbGFzdCBldmVudAorICAqLwordWludDMyX3QgSTJDX0dldExhc3RFdmVudChJMkNfVHlwZURlZiogSTJDeCkKK3sKKyAgdWludDMyX3QgbGFzdGV2ZW50ID0gMDsKKyAgdWludDMyX3QgZmxhZzEgPSAwLCBmbGFnMiA9IDA7CisKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX0kyQ19BTExfUEVSSVBIKEkyQ3gpKTsKKworICAvKiBSZWFkIHRoZSBJMkN4IHN0YXR1cyByZWdpc3RlciAqLworICBmbGFnMSA9IEkyQ3gtPlNSMTsKKyAgZmxhZzIgPSBJMkN4LT5TUjI7CisgIGZsYWcyID0gZmxhZzIgPDwgMTY7CisKKyAgLyogR2V0IHRoZSBsYXN0IGV2ZW50IHZhbHVlIGZyb20gSTJDIHN0YXR1cyByZWdpc3RlciAqLworICBsYXN0ZXZlbnQgPSAoZmxhZzEgfCBmbGFnMikgJiBGTEFHX01hc2s7CisKKyAgLyogUmV0dXJuIHN0YXR1cyAqLworICByZXR1cm4gbGFzdGV2ZW50OworfQorCisvKioKKyAqIAorICogIDMpIEZsYWctYmFzZWQgc3RhdGUgbW9uaXRvcmluZworICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworCisvKioKKyAgKiBAYnJpZWYgIENoZWNrcyB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgSTJDIGZsYWcgaXMgc2V0IG9yIG5vdC4KKyAgKiBAcGFyYW0gIEkyQ3g6IHdoZXJlIHggY2FuIGJlIDEgb3IgMiB0byBzZWxlY3QgdGhlIEkyQyBwZXJpcGhlcmFsLgorICAqIEBwYXJhbSAgSTJDX0ZMQUc6IHNwZWNpZmllcyB0aGUgZmxhZyB0byBjaGVjay4gCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIEkyQ19GTEFHX0RVQUxGOiBEdWFsIGZsYWcgKFNsYXZlIG1vZGUpCisgICogICAgIEBhcmcgSTJDX0ZMQUdfU01CSE9TVDogU01CdXMgaG9zdCBoZWFkZXIgKFNsYXZlIG1vZGUpCisgICogICAgIEBhcmcgSTJDX0ZMQUdfU01CREVGQVVMVDogU01CdXMgZGVmYXVsdCBoZWFkZXIgKFNsYXZlIG1vZGUpCisgICogICAgIEBhcmcgSTJDX0ZMQUdfR0VOQ0FMTDogR2VuZXJhbCBjYWxsIGhlYWRlciBmbGFnIChTbGF2ZSBtb2RlKQorICAqICAgICBAYXJnIEkyQ19GTEFHX1RSQTogVHJhbnNtaXR0ZXIvUmVjZWl2ZXIgZmxhZworICAqICAgICBAYXJnIEkyQ19GTEFHX0JVU1k6IEJ1cyBidXN5IGZsYWcKKyAgKiAgICAgQGFyZyBJMkNfRkxBR19NU0w6IE1hc3Rlci9TbGF2ZSBmbGFnCisgICogICAgIEBhcmcgSTJDX0ZMQUdfU01CQUxFUlQ6IFNNQnVzIEFsZXJ0IGZsYWcKKyAgKiAgICAgQGFyZyBJMkNfRkxBR19USU1FT1VUOiBUaW1lb3V0IG9yIFRsb3cgZXJyb3IgZmxhZworICAqICAgICBAYXJnIEkyQ19GTEFHX1BFQ0VSUjogUEVDIGVycm9yIGluIHJlY2VwdGlvbiBmbGFnCisgICogICAgIEBhcmcgSTJDX0ZMQUdfT1ZSOiBPdmVycnVuL1VuZGVycnVuIGZsYWcgKFNsYXZlIG1vZGUpCisgICogICAgIEBhcmcgSTJDX0ZMQUdfQUY6IEFja25vd2xlZGdlIGZhaWx1cmUgZmxhZworICAqICAgICBAYXJnIEkyQ19GTEFHX0FSTE86IEFyYml0cmF0aW9uIGxvc3QgZmxhZyAoTWFzdGVyIG1vZGUpCisgICogICAgIEBhcmcgSTJDX0ZMQUdfQkVSUjogQnVzIGVycm9yIGZsYWcKKyAgKiAgICAgQGFyZyBJMkNfRkxBR19UWEU6IERhdGEgcmVnaXN0ZXIgZW1wdHkgZmxhZyAoVHJhbnNtaXR0ZXIpCisgICogICAgIEBhcmcgSTJDX0ZMQUdfUlhORTogRGF0YSByZWdpc3RlciBub3QgZW1wdHkgKFJlY2VpdmVyKSBmbGFnCisgICogICAgIEBhcmcgSTJDX0ZMQUdfU1RPUEY6IFN0b3AgZGV0ZWN0aW9uIGZsYWcgKFNsYXZlIG1vZGUpCisgICogICAgIEBhcmcgSTJDX0ZMQUdfQUREMTA6IDEwLWJpdCBoZWFkZXIgc2VudCBmbGFnIChNYXN0ZXIgbW9kZSkKKyAgKiAgICAgQGFyZyBJMkNfRkxBR19CVEY6IEJ5dGUgdHJhbnNmZXIgZmluaXNoZWQgZmxhZworICAqICAgICBAYXJnIEkyQ19GTEFHX0FERFI6IEFkZHJlc3Mgc2VudCBmbGFnIChNYXN0ZXIgbW9kZSkgIkFEU0wiCisgICogICBBZGRyZXNzIG1hdGNoZWQgZmxhZyAoU2xhdmUgbW9kZSkiRU5EQSIKKyAgKiAgICAgQGFyZyBJMkNfRkxBR19TQjogU3RhcnQgYml0IGZsYWcgKE1hc3RlciBtb2RlKQorICAqIEByZXR2YWwgVGhlIG5ldyBzdGF0ZSBvZiBJMkNfRkxBRyAoU0VUIG9yIFJFU0VUKS4KKyAgKi8KK0ZsYWdTdGF0dXMgSTJDX0dldEZsYWdTdGF0dXMoSTJDX1R5cGVEZWYqIEkyQ3gsIHVpbnQzMl90IEkyQ19GTEFHKQoreworICBGbGFnU3RhdHVzIGJpdHN0YXR1cyA9IFJFU0VUOworICBfX0lPIHVpbnQzMl90IGkyY3JlZyA9IDAsIGkyY3hiYXNlID0gMDsKKworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfSTJDX0FMTF9QRVJJUEgoSTJDeCkpOworICBhc3NlcnRfcGFyYW0oSVNfSTJDX0dFVF9GTEFHKEkyQ19GTEFHKSk7CisKKyAgLyogR2V0IHRoZSBJMkN4IHBlcmlwaGVyYWwgYmFzZSBhZGRyZXNzICovCisgIGkyY3hiYXNlID0gKHVpbnQzMl90KUkyQ3g7CisgIAorICAvKiBSZWFkIGZsYWcgcmVnaXN0ZXIgaW5kZXggKi8KKyAgaTJjcmVnID0gSTJDX0ZMQUcgPj4gMjg7CisgIAorICAvKiBHZXQgYml0WzIzOjBdIG9mIHRoZSBmbGFnICovCisgIEkyQ19GTEFHICY9IEZMQUdfTWFzazsKKyAgCisgIGlmKGkyY3JlZyAhPSAwKQorICB7CisgICAgLyogR2V0IHRoZSBJMkN4IFNSMSByZWdpc3RlciBhZGRyZXNzICovCisgICAgaTJjeGJhc2UgKz0gMHgxNDsKKyAgfQorICBlbHNlCisgIHsKKyAgICAvKiBGbGFnIGluIEkyQ3ggU1IyIFJlZ2lzdGVyICovCisgICAgSTJDX0ZMQUcgPSAodWludDMyX3QpKEkyQ19GTEFHID4+IDE2KTsKKyAgICAvKiBHZXQgdGhlIEkyQ3ggU1IyIHJlZ2lzdGVyIGFkZHJlc3MgKi8KKyAgICBpMmN4YmFzZSArPSAweDE4OworICB9CisgIAorICBpZigoKCooX19JTyB1aW50MzJfdCAqKWkyY3hiYXNlKSAmIEkyQ19GTEFHKSAhPSAodWludDMyX3QpUkVTRVQpCisgIHsKKyAgICAvKiBJMkNfRkxBRyBpcyBzZXQgKi8KKyAgICBiaXRzdGF0dXMgPSBTRVQ7CisgIH0KKyAgZWxzZQorICB7CisgICAgLyogSTJDX0ZMQUcgaXMgcmVzZXQgKi8KKyAgICBiaXRzdGF0dXMgPSBSRVNFVDsKKyAgfQorICAKKyAgLyogUmV0dXJuIHRoZSBJMkNfRkxBRyBzdGF0dXMgKi8KKyAgcmV0dXJuICBiaXRzdGF0dXM7Cit9CisKKworCisvKioKKyAgKiBAYnJpZWYgIENsZWFycyB0aGUgSTJDeCdzIHBlbmRpbmcgZmxhZ3MuCisgICogQHBhcmFtICBJMkN4OiB3aGVyZSB4IGNhbiBiZSAxIG9yIDIgdG8gc2VsZWN0IHRoZSBJMkMgcGVyaXBoZXJhbC4KKyAgKiBAcGFyYW0gIEkyQ19GTEFHOiBzcGVjaWZpZXMgdGhlIGZsYWcgdG8gY2xlYXIuIAorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGFueSBjb21iaW5hdGlvbiBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBJMkNfRkxBR19TTUJBTEVSVDogU01CdXMgQWxlcnQgZmxhZworICAqICAgICBAYXJnIEkyQ19GTEFHX1RJTUVPVVQ6IFRpbWVvdXQgb3IgVGxvdyBlcnJvciBmbGFnCisgICogICAgIEBhcmcgSTJDX0ZMQUdfUEVDRVJSOiBQRUMgZXJyb3IgaW4gcmVjZXB0aW9uIGZsYWcKKyAgKiAgICAgQGFyZyBJMkNfRkxBR19PVlI6IE92ZXJydW4vVW5kZXJydW4gZmxhZyAoU2xhdmUgbW9kZSkKKyAgKiAgICAgQGFyZyBJMkNfRkxBR19BRjogQWNrbm93bGVkZ2UgZmFpbHVyZSBmbGFnCisgICogICAgIEBhcmcgSTJDX0ZMQUdfQVJMTzogQXJiaXRyYXRpb24gbG9zdCBmbGFnIChNYXN0ZXIgbW9kZSkKKyAgKiAgICAgQGFyZyBJMkNfRkxBR19CRVJSOiBCdXMgZXJyb3IgZmxhZworICAqICAgCisgICogQG5vdGUKKyAgKiAgIC0gU1RPUEYgKFNUT1AgZGV0ZWN0aW9uKSBpcyBjbGVhcmVkIGJ5IHNvZnR3YXJlIHNlcXVlbmNlOiBhIHJlYWQgb3BlcmF0aW9uIAorICAqICAgICB0byBJMkNfU1IxIHJlZ2lzdGVyIChJMkNfR2V0RmxhZ1N0YXR1cygpKSBmb2xsb3dlZCBieSBhIHdyaXRlIG9wZXJhdGlvbiAKKyAgKiAgICAgdG8gSTJDX0NSMSByZWdpc3RlciAoSTJDX0NtZCgpIHRvIHJlLWVuYWJsZSB0aGUgSTJDIHBlcmlwaGVyYWwpLgorICAqICAgLSBBREQxMCAoMTAtYml0IGhlYWRlciBzZW50KSBpcyBjbGVhcmVkIGJ5IHNvZnR3YXJlIHNlcXVlbmNlOiBhIHJlYWQgCisgICogICAgIG9wZXJhdGlvbiB0byBJMkNfU1IxIChJMkNfR2V0RmxhZ1N0YXR1cygpKSBmb2xsb3dlZCBieSB3cml0aW5nIHRoZSAKKyAgKiAgICAgc2Vjb25kIGJ5dGUgb2YgdGhlIGFkZHJlc3MgaW4gRFIgcmVnaXN0ZXIuCisgICogICAtIEJURiAoQnl0ZSBUcmFuc2ZlciBGaW5pc2hlZCkgaXMgY2xlYXJlZCBieSBzb2Z0d2FyZSBzZXF1ZW5jZTogYSByZWFkIAorICAqICAgICBvcGVyYXRpb24gdG8gSTJDX1NSMSByZWdpc3RlciAoSTJDX0dldEZsYWdTdGF0dXMoKSkgZm9sbG93ZWQgYnkgYSAKKyAgKiAgICAgcmVhZC93cml0ZSB0byBJMkNfRFIgcmVnaXN0ZXIgKEkyQ19TZW5kRGF0YSgpKS4KKyAgKiAgIC0gQUREUiAoQWRkcmVzcyBzZW50KSBpcyBjbGVhcmVkIGJ5IHNvZnR3YXJlIHNlcXVlbmNlOiBhIHJlYWQgb3BlcmF0aW9uIHRvIAorICAqICAgICBJMkNfU1IxIHJlZ2lzdGVyIChJMkNfR2V0RmxhZ1N0YXR1cygpKSBmb2xsb3dlZCBieSBhIHJlYWQgb3BlcmF0aW9uIHRvIAorICAqICAgICBJMkNfU1IyIHJlZ2lzdGVyICgodm9pZCkoSTJDeC0+U1IyKSkuCisgICogICAtIFNCIChTdGFydCBCaXQpIGlzIGNsZWFyZWQgc29mdHdhcmUgc2VxdWVuY2U6IGEgcmVhZCBvcGVyYXRpb24gdG8gSTJDX1NSMQorICAqICAgICByZWdpc3RlciAoSTJDX0dldEZsYWdTdGF0dXMoKSkgZm9sbG93ZWQgYnkgYSB3cml0ZSBvcGVyYXRpb24gdG8gSTJDX0RSCisgICogICAgIHJlZ2lzdGVyICAoSTJDX1NlbmREYXRhKCkpLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBJMkNfQ2xlYXJGbGFnKEkyQ19UeXBlRGVmKiBJMkN4LCB1aW50MzJfdCBJMkNfRkxBRykKK3sKKyAgdWludDMyX3QgZmxhZ3BvcyA9IDA7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19JMkNfQUxMX1BFUklQSChJMkN4KSk7CisgIGFzc2VydF9wYXJhbShJU19JMkNfQ0xFQVJfRkxBRyhJMkNfRkxBRykpOworICAvKiBHZXQgdGhlIEkyQyBmbGFnIHBvc2l0aW9uICovCisgIGZsYWdwb3MgPSBJMkNfRkxBRyAmIEZMQUdfTWFzazsKKyAgLyogQ2xlYXIgdGhlIHNlbGVjdGVkIEkyQyBmbGFnICovCisgIEkyQ3gtPlNSMSA9ICh1aW50MTZfdCl+ZmxhZ3BvczsKK30KKworLyoqCisgICogQGJyaWVmICBDaGVja3Mgd2hldGhlciB0aGUgc3BlY2lmaWVkIEkyQyBpbnRlcnJ1cHQgaGFzIG9jY3VycmVkIG9yIG5vdC4KKyAgKiBAcGFyYW0gIEkyQ3g6IHdoZXJlIHggY2FuIGJlIDEgb3IgMiB0byBzZWxlY3QgdGhlIEkyQyBwZXJpcGhlcmFsLgorICAqIEBwYXJhbSAgSTJDX0lUOiBzcGVjaWZpZXMgdGhlIGludGVycnVwdCBzb3VyY2UgdG8gY2hlY2suIAorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBJMkNfSVRfU01CQUxFUlQ6IFNNQnVzIEFsZXJ0IGZsYWcKKyAgKiAgICAgQGFyZyBJMkNfSVRfVElNRU9VVDogVGltZW91dCBvciBUbG93IGVycm9yIGZsYWcKKyAgKiAgICAgQGFyZyBJMkNfSVRfUEVDRVJSOiBQRUMgZXJyb3IgaW4gcmVjZXB0aW9uIGZsYWcKKyAgKiAgICAgQGFyZyBJMkNfSVRfT1ZSOiBPdmVycnVuL1VuZGVycnVuIGZsYWcgKFNsYXZlIG1vZGUpCisgICogICAgIEBhcmcgSTJDX0lUX0FGOiBBY2tub3dsZWRnZSBmYWlsdXJlIGZsYWcKKyAgKiAgICAgQGFyZyBJMkNfSVRfQVJMTzogQXJiaXRyYXRpb24gbG9zdCBmbGFnIChNYXN0ZXIgbW9kZSkKKyAgKiAgICAgQGFyZyBJMkNfSVRfQkVSUjogQnVzIGVycm9yIGZsYWcKKyAgKiAgICAgQGFyZyBJMkNfSVRfVFhFOiBEYXRhIHJlZ2lzdGVyIGVtcHR5IGZsYWcgKFRyYW5zbWl0dGVyKQorICAqICAgICBAYXJnIEkyQ19JVF9SWE5FOiBEYXRhIHJlZ2lzdGVyIG5vdCBlbXB0eSAoUmVjZWl2ZXIpIGZsYWcKKyAgKiAgICAgQGFyZyBJMkNfSVRfU1RPUEY6IFN0b3AgZGV0ZWN0aW9uIGZsYWcgKFNsYXZlIG1vZGUpCisgICogICAgIEBhcmcgSTJDX0lUX0FERDEwOiAxMC1iaXQgaGVhZGVyIHNlbnQgZmxhZyAoTWFzdGVyIG1vZGUpCisgICogICAgIEBhcmcgSTJDX0lUX0JURjogQnl0ZSB0cmFuc2ZlciBmaW5pc2hlZCBmbGFnCisgICogICAgIEBhcmcgSTJDX0lUX0FERFI6IEFkZHJlc3Mgc2VudCBmbGFnIChNYXN0ZXIgbW9kZSkgIkFEU0wiCisgICogICAgICAgICAgICAgICAgICAgICAgIEFkZHJlc3MgbWF0Y2hlZCBmbGFnIChTbGF2ZSBtb2RlKSJFTkRBRCIKKyAgKiAgICAgQGFyZyBJMkNfSVRfU0I6IFN0YXJ0IGJpdCBmbGFnIChNYXN0ZXIgbW9kZSkKKyAgKiBAcmV0dmFsIFRoZSBuZXcgc3RhdGUgb2YgSTJDX0lUIChTRVQgb3IgUkVTRVQpLgorICAqLworSVRTdGF0dXMgSTJDX0dldElUU3RhdHVzKEkyQ19UeXBlRGVmKiBJMkN4LCB1aW50MzJfdCBJMkNfSVQpCit7CisgIElUU3RhdHVzIGJpdHN0YXR1cyA9IFJFU0VUOworICB1aW50MzJfdCBlbmFibGVzdGF0dXMgPSAwOworCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19JMkNfQUxMX1BFUklQSChJMkN4KSk7CisgIGFzc2VydF9wYXJhbShJU19JMkNfR0VUX0lUKEkyQ19JVCkpOworCisgIC8qIENoZWNrIGlmIHRoZSBpbnRlcnJ1cHQgc291cmNlIGlzIGVuYWJsZWQgb3Igbm90ICovCisgIGVuYWJsZXN0YXR1cyA9ICh1aW50MzJfdCkoKChJMkNfSVQgJiBJVEVOX01hc2spID4+IDE2KSAmIChJMkN4LT5DUjIpKSA7CisgIAorICAvKiBHZXQgYml0WzIzOjBdIG9mIHRoZSBmbGFnICovCisgIEkyQ19JVCAmPSBGTEFHX01hc2s7CisKKyAgLyogQ2hlY2sgdGhlIHN0YXR1cyBvZiB0aGUgc3BlY2lmaWVkIEkyQyBmbGFnICovCisgIGlmICgoKEkyQ3gtPlNSMSAmIEkyQ19JVCkgIT0gKHVpbnQzMl90KVJFU0VUKSAmJiBlbmFibGVzdGF0dXMpCisgIHsKKyAgICAvKiBJMkNfSVQgaXMgc2V0ICovCisgICAgYml0c3RhdHVzID0gU0VUOworICB9CisgIGVsc2UKKyAgeworICAgIC8qIEkyQ19JVCBpcyByZXNldCAqLworICAgIGJpdHN0YXR1cyA9IFJFU0VUOworICB9CisgIC8qIFJldHVybiB0aGUgSTJDX0lUIHN0YXR1cyAqLworICByZXR1cm4gIGJpdHN0YXR1czsKK30KKworLyoqCisgICogQGJyaWVmICBDbGVhcnMgdGhlIEkyQ3iScyBpbnRlcnJ1cHQgcGVuZGluZyBiaXRzLgorICAqIEBwYXJhbSAgSTJDeDogd2hlcmUgeCBjYW4gYmUgMSBvciAyIHRvIHNlbGVjdCB0aGUgSTJDIHBlcmlwaGVyYWwuCisgICogQHBhcmFtICBJMkNfSVQ6IHNwZWNpZmllcyB0aGUgaW50ZXJydXB0IHBlbmRpbmcgYml0IHRvIGNsZWFyLiAKKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhbnkgY29tYmluYXRpb24gb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICAgIEBhcmcgSTJDX0lUX1NNQkFMRVJUOiBTTUJ1cyBBbGVydCBpbnRlcnJ1cHQKKyAgKiAgICAgQGFyZyBJMkNfSVRfVElNRU9VVDogVGltZW91dCBvciBUbG93IGVycm9yIGludGVycnVwdAorICAqICAgICBAYXJnIEkyQ19JVF9QRUNFUlI6IFBFQyBlcnJvciBpbiByZWNlcHRpb24gIGludGVycnVwdAorICAqICAgICBAYXJnIEkyQ19JVF9PVlI6IE92ZXJydW4vVW5kZXJydW4gaW50ZXJydXB0IChTbGF2ZSBtb2RlKQorICAqICAgICBAYXJnIEkyQ19JVF9BRjogQWNrbm93bGVkZ2UgZmFpbHVyZSBpbnRlcnJ1cHQKKyAgKiAgICAgQGFyZyBJMkNfSVRfQVJMTzogQXJiaXRyYXRpb24gbG9zdCBpbnRlcnJ1cHQgKE1hc3RlciBtb2RlKQorICAqICAgICBAYXJnIEkyQ19JVF9CRVJSOiBCdXMgZXJyb3IgaW50ZXJydXB0CisgICogICAKKyAgKiBAbm90ZQorICAqICAgLSBTVE9QRiAoU1RPUCBkZXRlY3Rpb24pIGlzIGNsZWFyZWQgYnkgc29mdHdhcmUgc2VxdWVuY2U6IGEgcmVhZCBvcGVyYXRpb24gCisgICogICAgIHRvIEkyQ19TUjEgcmVnaXN0ZXIgKEkyQ19HZXRJVFN0YXR1cygpKSBmb2xsb3dlZCBieSBhIHdyaXRlIG9wZXJhdGlvbiB0byAKKyAgKiAgICAgSTJDX0NSMSByZWdpc3RlciAoSTJDX0NtZCgpIHRvIHJlLWVuYWJsZSB0aGUgSTJDIHBlcmlwaGVyYWwpLgorICAqICAgLSBBREQxMCAoMTAtYml0IGhlYWRlciBzZW50KSBpcyBjbGVhcmVkIGJ5IHNvZnR3YXJlIHNlcXVlbmNlOiBhIHJlYWQgCisgICogICAgIG9wZXJhdGlvbiB0byBJMkNfU1IxIChJMkNfR2V0SVRTdGF0dXMoKSkgZm9sbG93ZWQgYnkgd3JpdGluZyB0aGUgc2Vjb25kIAorICAqICAgICBieXRlIG9mIHRoZSBhZGRyZXNzIGluIEkyQ19EUiByZWdpc3Rlci4KKyAgKiAgIC0gQlRGIChCeXRlIFRyYW5zZmVyIEZpbmlzaGVkKSBpcyBjbGVhcmVkIGJ5IHNvZnR3YXJlIHNlcXVlbmNlOiBhIHJlYWQgCisgICogICAgIG9wZXJhdGlvbiB0byBJMkNfU1IxIHJlZ2lzdGVyIChJMkNfR2V0SVRTdGF0dXMoKSkgZm9sbG93ZWQgYnkgYSAKKyAgKiAgICAgcmVhZC93cml0ZSB0byBJMkNfRFIgcmVnaXN0ZXIgKEkyQ19TZW5kRGF0YSgpKS4KKyAgKiAgIC0gQUREUiAoQWRkcmVzcyBzZW50KSBpcyBjbGVhcmVkIGJ5IHNvZnR3YXJlIHNlcXVlbmNlOiBhIHJlYWQgb3BlcmF0aW9uIHRvIAorICAqICAgICBJMkNfU1IxIHJlZ2lzdGVyIChJMkNfR2V0SVRTdGF0dXMoKSkgZm9sbG93ZWQgYnkgYSByZWFkIG9wZXJhdGlvbiB0byAKKyAgKiAgICAgSTJDX1NSMiByZWdpc3RlciAoKHZvaWQpKEkyQ3gtPlNSMikpLgorICAqICAgLSBTQiAoU3RhcnQgQml0KSBpcyBjbGVhcmVkIGJ5IHNvZnR3YXJlIHNlcXVlbmNlOiBhIHJlYWQgb3BlcmF0aW9uIHRvIAorICAqICAgICBJMkNfU1IxIHJlZ2lzdGVyIChJMkNfR2V0SVRTdGF0dXMoKSkgZm9sbG93ZWQgYnkgYSB3cml0ZSBvcGVyYXRpb24gdG8gCisgICogICAgIEkyQ19EUiByZWdpc3RlciAoSTJDX1NlbmREYXRhKCkpLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBJMkNfQ2xlYXJJVFBlbmRpbmdCaXQoSTJDX1R5cGVEZWYqIEkyQ3gsIHVpbnQzMl90IEkyQ19JVCkKK3sKKyAgdWludDMyX3QgZmxhZ3BvcyA9IDA7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19JMkNfQUxMX1BFUklQSChJMkN4KSk7CisgIGFzc2VydF9wYXJhbShJU19JMkNfQ0xFQVJfSVQoSTJDX0lUKSk7CisgIC8qIEdldCB0aGUgSTJDIGZsYWcgcG9zaXRpb24gKi8KKyAgZmxhZ3BvcyA9IEkyQ19JVCAmIEZMQUdfTWFzazsKKyAgLyogQ2xlYXIgdGhlIHNlbGVjdGVkIEkyQyBmbGFnICovCisgIEkyQ3gtPlNSMSA9ICh1aW50MTZfdCl+ZmxhZ3BvczsKK30KKworLyoqCisgICogQH0KKyAgKi8gCisKKy8qKgorICAqIEB9CisgICovIAorCisvKioKKyAgKiBAfQorICAqLyAKKworLyoqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCAyMDExIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL3N0X2Z3X2xpYi9zcmMvc3RtMzJmMTB4X2l3ZGcuYyBiL3N0X2Z3X2xpYi9zcmMvc3RtMzJmMTB4X2l3ZGcuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jN2NiZjdlCi0tLSAvZGV2L251bGwKKysrIGIvc3RfZndfbGliL3NyYy9zdG0zMmYxMHhfaXdkZy5jCkBAIC0wLDAgKzEsMTkwIEBACisvKioKKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICogQGZpbGUgICAgc3RtMzJmMTB4X2l3ZGcuYworICAqIEBhdXRob3IgIE1DRCBBcHBsaWNhdGlvbiBUZWFtCisgICogQHZlcnNpb24gVjMuNS4wCisgICogQGRhdGUgICAgMTEtTWFyY2gtMjAxMQorICAqIEBicmllZiAgIFRoaXMgZmlsZSBwcm92aWRlcyBhbGwgdGhlIElXREcgZmlybXdhcmUgZnVuY3Rpb25zLgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKiBAYXR0ZW50aW9uCisgICoKKyAgKiBUSEUgUFJFU0VOVCBGSVJNV0FSRSBXSElDSCBJUyBGT1IgR1VJREFOQ0UgT05MWSBBSU1TIEFUIFBST1ZJRElORyBDVVNUT01FUlMKKyAgKiBXSVRIIENPRElORyBJTkZPUk1BVElPTiBSRUdBUkRJTkcgVEhFSVIgUFJPRFVDVFMgSU4gT1JERVIgRk9SIFRIRU0gVE8gU0FWRQorICAqIFRJTUUuIEFTIEEgUkVTVUxULCBTVE1JQ1JPRUxFQ1RST05JQ1MgU0hBTEwgTk9UIEJFIEhFTEQgTElBQkxFIEZPUiBBTlkKKyAgKiBESVJFQ1QsIElORElSRUNUIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBXSVRIIFJFU1BFQ1QgVE8gQU5ZIENMQUlNUyBBUklTSU5HCisgICogRlJPTSBUSEUgQ09OVEVOVCBPRiBTVUNIIEZJUk1XQVJFIEFORC9PUiBUSEUgVVNFIE1BREUgQlkgQ1VTVE9NRVJTIE9GIFRIRQorICAqIENPRElORyBJTkZPUk1BVElPTiBDT05UQUlORUQgSEVSRUlOIElOIENPTk5FQ1RJT04gV0lUSCBUSEVJUiBQUk9EVUNUUy4KKyAgKgorICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDT1BZUklHSFQgMjAxMSBTVE1pY3JvZWxlY3Ryb25pY3M8L2NlbnRlcj48L2gyPgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKi8KKworLyogSW5jbHVkZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyNpbmNsdWRlICJzdG0zMmYxMHhfaXdkZy5oIgorCisvKiogQGFkZHRvZ3JvdXAgU1RNMzJGMTB4X1N0ZFBlcmlwaF9Ecml2ZXIKKyAgKiBAeworICAqLworCisvKiogQGRlZmdyb3VwIElXREcgCisgICogQGJyaWVmIElXREcgZHJpdmVyIG1vZHVsZXMKKyAgKiBAeworICAqLyAKKworLyoqIEBkZWZncm91cCBJV0RHX1ByaXZhdGVfVHlwZXNEZWZpbml0aW9ucworICAqIEB7CisgICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgSVdER19Qcml2YXRlX0RlZmluZXMKKyAgKiBAeworICAqLyAKKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBJV0RHIHJlZ2lzdGVycyBiaXQgbWFzayAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworLyogS1IgcmVnaXN0ZXIgYml0IG1hc2sgKi8KKyNkZWZpbmUgS1JfS0VZX1JlbG9hZCAgICAoKHVpbnQxNl90KTB4QUFBQSkKKyNkZWZpbmUgS1JfS0VZX0VuYWJsZSAgICAoKHVpbnQxNl90KTB4Q0NDQykKKworLyoqCisgICogQH0KKyAgKi8gCisKKy8qKiBAZGVmZ3JvdXAgSVdER19Qcml2YXRlX01hY3JvcworICAqIEB7CisgICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgSVdER19Qcml2YXRlX1ZhcmlhYmxlcworICAqIEB7CisgICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgSVdER19Qcml2YXRlX0Z1bmN0aW9uUHJvdG90eXBlcworICAqIEB7CisgICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgSVdER19Qcml2YXRlX0Z1bmN0aW9ucworICAqIEB7CisgICovCisKKy8qKgorICAqIEBicmllZiAgRW5hYmxlcyBvciBkaXNhYmxlcyB3cml0ZSBhY2Nlc3MgdG8gSVdER19QUiBhbmQgSVdER19STFIgcmVnaXN0ZXJzLgorICAqIEBwYXJhbSAgSVdER19Xcml0ZUFjY2VzczogbmV3IHN0YXRlIG9mIHdyaXRlIGFjY2VzcyB0byBJV0RHX1BSIGFuZCBJV0RHX1JMUiByZWdpc3RlcnMuCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIElXREdfV3JpdGVBY2Nlc3NfRW5hYmxlOiBFbmFibGUgd3JpdGUgYWNjZXNzIHRvIElXREdfUFIgYW5kIElXREdfUkxSIHJlZ2lzdGVycworICAqICAgICBAYXJnIElXREdfV3JpdGVBY2Nlc3NfRGlzYWJsZTogRGlzYWJsZSB3cml0ZSBhY2Nlc3MgdG8gSVdER19QUiBhbmQgSVdER19STFIgcmVnaXN0ZXJzCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIElXREdfV3JpdGVBY2Nlc3NDbWQodWludDE2X3QgSVdER19Xcml0ZUFjY2VzcykKK3sKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX0lXREdfV1JJVEVfQUNDRVNTKElXREdfV3JpdGVBY2Nlc3MpKTsKKyAgSVdERy0+S1IgPSBJV0RHX1dyaXRlQWNjZXNzOworfQorCisvKioKKyAgKiBAYnJpZWYgIFNldHMgSVdERyBQcmVzY2FsZXIgdmFsdWUuCisgICogQHBhcmFtICBJV0RHX1ByZXNjYWxlcjogc3BlY2lmaWVzIHRoZSBJV0RHIFByZXNjYWxlciB2YWx1ZS4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICAgIEBhcmcgSVdER19QcmVzY2FsZXJfNDogSVdERyBwcmVzY2FsZXIgc2V0IHRvIDQKKyAgKiAgICAgQGFyZyBJV0RHX1ByZXNjYWxlcl84OiBJV0RHIHByZXNjYWxlciBzZXQgdG8gOAorICAqICAgICBAYXJnIElXREdfUHJlc2NhbGVyXzE2OiBJV0RHIHByZXNjYWxlciBzZXQgdG8gMTYKKyAgKiAgICAgQGFyZyBJV0RHX1ByZXNjYWxlcl8zMjogSVdERyBwcmVzY2FsZXIgc2V0IHRvIDMyCisgICogICAgIEBhcmcgSVdER19QcmVzY2FsZXJfNjQ6IElXREcgcHJlc2NhbGVyIHNldCB0byA2NAorICAqICAgICBAYXJnIElXREdfUHJlc2NhbGVyXzEyODogSVdERyBwcmVzY2FsZXIgc2V0IHRvIDEyOAorICAqICAgICBAYXJnIElXREdfUHJlc2NhbGVyXzI1NjogSVdERyBwcmVzY2FsZXIgc2V0IHRvIDI1NgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBJV0RHX1NldFByZXNjYWxlcih1aW50OF90IElXREdfUHJlc2NhbGVyKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfSVdER19QUkVTQ0FMRVIoSVdER19QcmVzY2FsZXIpKTsKKyAgSVdERy0+UFIgPSBJV0RHX1ByZXNjYWxlcjsKK30KKworLyoqCisgICogQGJyaWVmICBTZXRzIElXREcgUmVsb2FkIHZhbHVlLgorICAqIEBwYXJhbSAgUmVsb2FkOiBzcGVjaWZpZXMgdGhlIElXREcgUmVsb2FkIHZhbHVlLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgbXVzdCBiZSBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDB4MEZGRi4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgSVdER19TZXRSZWxvYWQodWludDE2X3QgUmVsb2FkKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfSVdER19SRUxPQUQoUmVsb2FkKSk7CisgIElXREctPlJMUiA9IFJlbG9hZDsKK30KKworLyoqCisgICogQGJyaWVmICBSZWxvYWRzIElXREcgY291bnRlciB3aXRoIHZhbHVlIGRlZmluZWQgaW4gdGhlIHJlbG9hZCByZWdpc3RlcgorICAqICAgKHdyaXRlIGFjY2VzcyB0byBJV0RHX1BSIGFuZCBJV0RHX1JMUiByZWdpc3RlcnMgZGlzYWJsZWQpLgorICAqIEBwYXJhbSAgTm9uZQorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBJV0RHX1JlbG9hZENvdW50ZXIodm9pZCkKK3sKKyAgSVdERy0+S1IgPSBLUl9LRVlfUmVsb2FkOworfQorCisvKioKKyAgKiBAYnJpZWYgIEVuYWJsZXMgSVdERyAod3JpdGUgYWNjZXNzIHRvIElXREdfUFIgYW5kIElXREdfUkxSIHJlZ2lzdGVycyBkaXNhYmxlZCkuCisgICogQHBhcmFtICBOb25lCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIElXREdfRW5hYmxlKHZvaWQpCit7CisgIElXREctPktSID0gS1JfS0VZX0VuYWJsZTsKK30KKworLyoqCisgICogQGJyaWVmICBDaGVja3Mgd2hldGhlciB0aGUgc3BlY2lmaWVkIElXREcgZmxhZyBpcyBzZXQgb3Igbm90LgorICAqIEBwYXJhbSAgSVdER19GTEFHOiBzcGVjaWZpZXMgdGhlIGZsYWcgdG8gY2hlY2suCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIElXREdfRkxBR19QVlU6IFByZXNjYWxlciBWYWx1ZSBVcGRhdGUgb24gZ29pbmcKKyAgKiAgICAgQGFyZyBJV0RHX0ZMQUdfUlZVOiBSZWxvYWQgVmFsdWUgVXBkYXRlIG9uIGdvaW5nCisgICogQHJldHZhbCBUaGUgbmV3IHN0YXRlIG9mIElXREdfRkxBRyAoU0VUIG9yIFJFU0VUKS4KKyAgKi8KK0ZsYWdTdGF0dXMgSVdER19HZXRGbGFnU3RhdHVzKHVpbnQxNl90IElXREdfRkxBRykKK3sKKyAgRmxhZ1N0YXR1cyBiaXRzdGF0dXMgPSBSRVNFVDsKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX0lXREdfRkxBRyhJV0RHX0ZMQUcpKTsKKyAgaWYgKChJV0RHLT5TUiAmIElXREdfRkxBRykgIT0gKHVpbnQzMl90KVJFU0VUKQorICB7CisgICAgYml0c3RhdHVzID0gU0VUOworICB9CisgIGVsc2UKKyAgeworICAgIGJpdHN0YXR1cyA9IFJFU0VUOworICB9CisgIC8qIFJldHVybiB0aGUgZmxhZyBzdGF0dXMgKi8KKyAgcmV0dXJuIGJpdHN0YXR1czsKK30KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCAyMDExIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL3N0X2Z3X2xpYi9zcmMvc3RtMzJmMTB4X3B3ci5jIGIvc3RfZndfbGliL3NyYy9zdG0zMmYxMHhfcHdyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTVhNWM1NwotLS0gL2Rldi9udWxsCisrKyBiL3N0X2Z3X2xpYi9zcmMvc3RtMzJmMTB4X3B3ci5jCkBAIC0wLDAgKzEsMzA3IEBACisvKioKKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICogQGZpbGUgICAgc3RtMzJmMTB4X3B3ci5jCisgICogQGF1dGhvciAgTUNEIEFwcGxpY2F0aW9uIFRlYW0KKyAgKiBAdmVyc2lvbiBWMy41LjAKKyAgKiBAZGF0ZSAgICAxMS1NYXJjaC0yMDExCisgICogQGJyaWVmICAgVGhpcyBmaWxlIHByb3ZpZGVzIGFsbCB0aGUgUFdSIGZpcm13YXJlIGZ1bmN0aW9ucy4KKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICogQGF0dGVudGlvbgorICAqCisgICogVEhFIFBSRVNFTlQgRklSTVdBUkUgV0hJQ0ggSVMgRk9SIEdVSURBTkNFIE9OTFkgQUlNUyBBVCBQUk9WSURJTkcgQ1VTVE9NRVJTCisgICogV0lUSCBDT0RJTkcgSU5GT1JNQVRJT04gUkVHQVJESU5HIFRIRUlSIFBST0RVQ1RTIElOIE9SREVSIEZPUiBUSEVNIFRPIFNBVkUKKyAgKiBUSU1FLiBBUyBBIFJFU1VMVCwgU1RNSUNST0VMRUNUUk9OSUNTIFNIQUxMIE5PVCBCRSBIRUxEIExJQUJMRSBGT1IgQU5ZCisgICogRElSRUNULCBJTkRJUkVDVCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgV0lUSCBSRVNQRUNUIFRPIEFOWSBDTEFJTVMgQVJJU0lORworICAqIEZST00gVEhFIENPTlRFTlQgT0YgU1VDSCBGSVJNV0FSRSBBTkQvT1IgVEhFIFVTRSBNQURFIEJZIENVU1RPTUVSUyBPRiBUSEUKKyAgKiBDT0RJTkcgSU5GT1JNQVRJT04gQ09OVEFJTkVEIEhFUkVJTiBJTiBDT05ORUNUSU9OIFdJVEggVEhFSVIgUFJPRFVDVFMuCisgICoKKyAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ09QWVJJR0hUIDIwMTEgU1RNaWNyb2VsZWN0cm9uaWNzPC9jZW50ZXI+PC9oMj4KKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICovCisKKy8qIEluY2x1ZGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisjaW5jbHVkZSAic3RtMzJmMTB4X3B3ci5oIgorI2luY2x1ZGUgInN0bTMyZjEweF9yY2MuaCIKKworLyoqIEBhZGR0b2dyb3VwIFNUTTMyRjEweF9TdGRQZXJpcGhfRHJpdmVyCisgICogQHsKKyAgKi8KKworLyoqIEBkZWZncm91cCBQV1IgCisgICogQGJyaWVmIFBXUiBkcml2ZXIgbW9kdWxlcworICAqIEB7CisgICovIAorCisvKiogQGRlZmdyb3VwIFBXUl9Qcml2YXRlX1R5cGVzRGVmaW5pdGlvbnMKKyAgKiBAeworICAqLworCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIFBXUl9Qcml2YXRlX0RlZmluZXMKKyAgKiBAeworICAqLworCisvKiAtLS0tLS0tLS0gUFdSIHJlZ2lzdGVycyBiaXQgYWRkcmVzcyBpbiB0aGUgYWxpYXMgcmVnaW9uIC0tLS0tLS0tLS0gKi8KKyNkZWZpbmUgUFdSX09GRlNFVCAgICAgICAgICAgICAgIChQV1JfQkFTRSAtIFBFUklQSF9CQVNFKQorCisvKiAtLS0gQ1IgUmVnaXN0ZXIgLS0tKi8KKworLyogQWxpYXMgd29yZCBhZGRyZXNzIG9mIERCUCBiaXQgKi8KKyNkZWZpbmUgQ1JfT0ZGU0VUICAgICAgICAgICAgICAgIChQV1JfT0ZGU0VUICsgMHgwMCkKKyNkZWZpbmUgREJQX0JpdE51bWJlciAgICAgICAgICAgIDB4MDgKKyNkZWZpbmUgQ1JfREJQX0JCICAgICAgICAgICAgICAgIChQRVJJUEhfQkJfQkFTRSArIChDUl9PRkZTRVQgKiAzMikgKyAoREJQX0JpdE51bWJlciAqIDQpKQorCisvKiBBbGlhcyB3b3JkIGFkZHJlc3Mgb2YgUFZERSBiaXQgKi8KKyNkZWZpbmUgUFZERV9CaXROdW1iZXIgICAgICAgICAgIDB4MDQKKyNkZWZpbmUgQ1JfUFZERV9CQiAgICAgICAgICAgICAgIChQRVJJUEhfQkJfQkFTRSArIChDUl9PRkZTRVQgKiAzMikgKyAoUFZERV9CaXROdW1iZXIgKiA0KSkKKworLyogLS0tIENTUiBSZWdpc3RlciAtLS0qLworCisvKiBBbGlhcyB3b3JkIGFkZHJlc3Mgb2YgRVdVUCBiaXQgKi8KKyNkZWZpbmUgQ1NSX09GRlNFVCAgICAgICAgICAgICAgIChQV1JfT0ZGU0VUICsgMHgwNCkKKyNkZWZpbmUgRVdVUF9CaXROdW1iZXIgICAgICAgICAgIDB4MDgKKyNkZWZpbmUgQ1NSX0VXVVBfQkIgICAgICAgICAgICAgIChQRVJJUEhfQkJfQkFTRSArIChDU1JfT0ZGU0VUICogMzIpICsgKEVXVVBfQml0TnVtYmVyICogNCkpCisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLSBQV1IgcmVnaXN0ZXJzIGJpdCBtYXNrIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisvKiBDUiByZWdpc3RlciBiaXQgbWFzayAqLworI2RlZmluZSBDUl9EU19NQVNLICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGRkZGRkZDKQorI2RlZmluZSBDUl9QTFNfTUFTSyAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGRkZGRjFGKQorCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgUFdSX1ByaXZhdGVfTWFjcm9zCisgICogQHsKKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBQV1JfUHJpdmF0ZV9WYXJpYWJsZXMKKyAgKiBAeworICAqLworCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIFBXUl9Qcml2YXRlX0Z1bmN0aW9uUHJvdG90eXBlcworICAqIEB7CisgICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgUFdSX1ByaXZhdGVfRnVuY3Rpb25zCisgICogQHsKKyAgKi8KKworLyoqCisgICogQGJyaWVmICBEZWluaXRpYWxpemVzIHRoZSBQV1IgcGVyaXBoZXJhbCByZWdpc3RlcnMgdG8gdGhlaXIgZGVmYXVsdCByZXNldCB2YWx1ZXMuCisgICogQHBhcmFtICBOb25lCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFBXUl9EZUluaXQodm9pZCkKK3sKKyAgUkNDX0FQQjFQZXJpcGhSZXNldENtZChSQ0NfQVBCMVBlcmlwaF9QV1IsIEVOQUJMRSk7CisgIFJDQ19BUEIxUGVyaXBoUmVzZXRDbWQoUkNDX0FQQjFQZXJpcGhfUFdSLCBESVNBQkxFKTsKK30KKworLyoqCisgICogQGJyaWVmICBFbmFibGVzIG9yIGRpc2FibGVzIGFjY2VzcyB0byB0aGUgUlRDIGFuZCBiYWNrdXAgcmVnaXN0ZXJzLgorICAqIEBwYXJhbSAgTmV3U3RhdGU6IG5ldyBzdGF0ZSBvZiB0aGUgYWNjZXNzIHRvIHRoZSBSVEMgYW5kIGJhY2t1cCByZWdpc3RlcnMuCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmU6IEVOQUJMRSBvciBESVNBQkxFLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBQV1JfQmFja3VwQWNjZXNzQ21kKEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSkKK3sKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX0ZVTkNUSU9OQUxfU1RBVEUoTmV3U3RhdGUpKTsKKyAgKihfX0lPIHVpbnQzMl90ICopIENSX0RCUF9CQiA9ICh1aW50MzJfdClOZXdTdGF0ZTsKK30KKworLyoqCisgICogQGJyaWVmICBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBQb3dlciBWb2x0YWdlIERldGVjdG9yKFBWRCkuCisgICogQHBhcmFtICBOZXdTdGF0ZTogbmV3IHN0YXRlIG9mIHRoZSBQVkQuCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmU6IEVOQUJMRSBvciBESVNBQkxFLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBQV1JfUFZEQ21kKEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSkKK3sKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX0ZVTkNUSU9OQUxfU1RBVEUoTmV3U3RhdGUpKTsKKyAgKihfX0lPIHVpbnQzMl90ICopIENSX1BWREVfQkIgPSAodWludDMyX3QpTmV3U3RhdGU7Cit9CisKKy8qKgorICAqIEBicmllZiAgQ29uZmlndXJlcyB0aGUgdm9sdGFnZSB0aHJlc2hvbGQgZGV0ZWN0ZWQgYnkgdGhlIFBvd2VyIFZvbHRhZ2UgRGV0ZWN0b3IoUFZEKS4KKyAgKiBAcGFyYW0gIFBXUl9QVkRMZXZlbDogc3BlY2lmaWVzIHRoZSBQVkQgZGV0ZWN0aW9uIGxldmVsCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIFBXUl9QVkRMZXZlbF8yVjI6IFBWRCBkZXRlY3Rpb24gbGV2ZWwgc2V0IHRvIDIuMlYKKyAgKiAgICAgQGFyZyBQV1JfUFZETGV2ZWxfMlYzOiBQVkQgZGV0ZWN0aW9uIGxldmVsIHNldCB0byAyLjNWCisgICogICAgIEBhcmcgUFdSX1BWRExldmVsXzJWNDogUFZEIGRldGVjdGlvbiBsZXZlbCBzZXQgdG8gMi40VgorICAqICAgICBAYXJnIFBXUl9QVkRMZXZlbF8yVjU6IFBWRCBkZXRlY3Rpb24gbGV2ZWwgc2V0IHRvIDIuNVYKKyAgKiAgICAgQGFyZyBQV1JfUFZETGV2ZWxfMlY2OiBQVkQgZGV0ZWN0aW9uIGxldmVsIHNldCB0byAyLjZWCisgICogICAgIEBhcmcgUFdSX1BWRExldmVsXzJWNzogUFZEIGRldGVjdGlvbiBsZXZlbCBzZXQgdG8gMi43VgorICAqICAgICBAYXJnIFBXUl9QVkRMZXZlbF8yVjg6IFBWRCBkZXRlY3Rpb24gbGV2ZWwgc2V0IHRvIDIuOFYKKyAgKiAgICAgQGFyZyBQV1JfUFZETGV2ZWxfMlY5OiBQVkQgZGV0ZWN0aW9uIGxldmVsIHNldCB0byAyLjlWCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFBXUl9QVkRMZXZlbENvbmZpZyh1aW50MzJfdCBQV1JfUFZETGV2ZWwpCit7CisgIHVpbnQzMl90IHRtcHJlZyA9IDA7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19QV1JfUFZEX0xFVkVMKFBXUl9QVkRMZXZlbCkpOworICB0bXByZWcgPSBQV1ItPkNSOworICAvKiBDbGVhciBQTFNbNzo1XSBiaXRzICovCisgIHRtcHJlZyAmPSBDUl9QTFNfTUFTSzsKKyAgLyogU2V0IFBMU1s3OjVdIGJpdHMgYWNjb3JkaW5nIHRvIFBXUl9QVkRMZXZlbCB2YWx1ZSAqLworICB0bXByZWcgfD0gUFdSX1BWRExldmVsOworICAvKiBTdG9yZSB0aGUgbmV3IHZhbHVlICovCisgIFBXUi0+Q1IgPSB0bXByZWc7Cit9CisKKy8qKgorICAqIEBicmllZiAgRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgV2FrZVVwIFBpbiBmdW5jdGlvbmFsaXR5LgorICAqIEBwYXJhbSAgTmV3U3RhdGU6IG5ldyBzdGF0ZSBvZiB0aGUgV2FrZVVwIFBpbiBmdW5jdGlvbmFsaXR5LgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlOiBFTkFCTEUgb3IgRElTQUJMRS4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgUFdSX1dha2VVcFBpbkNtZChGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpCit7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19GVU5DVElPTkFMX1NUQVRFKE5ld1N0YXRlKSk7CisgICooX19JTyB1aW50MzJfdCAqKSBDU1JfRVdVUF9CQiA9ICh1aW50MzJfdClOZXdTdGF0ZTsKK30KKworLyoqCisgICogQGJyaWVmICBFbnRlcnMgU1RPUCBtb2RlLgorICAqIEBwYXJhbSAgUFdSX1JlZ3VsYXRvcjogc3BlY2lmaWVzIHRoZSByZWd1bGF0b3Igc3RhdGUgaW4gU1RPUCBtb2RlLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBQV1JfUmVndWxhdG9yX09OOiBTVE9QIG1vZGUgd2l0aCByZWd1bGF0b3IgT04KKyAgKiAgICAgQGFyZyBQV1JfUmVndWxhdG9yX0xvd1Bvd2VyOiBTVE9QIG1vZGUgd2l0aCByZWd1bGF0b3IgaW4gbG93IHBvd2VyIG1vZGUKKyAgKiBAcGFyYW0gIFBXUl9TVE9QRW50cnk6IHNwZWNpZmllcyBpZiBTVE9QIG1vZGUgaW4gZW50ZXJlZCB3aXRoIFdGSSBvciBXRkUgaW5zdHJ1Y3Rpb24uCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIFBXUl9TVE9QRW50cnlfV0ZJOiBlbnRlciBTVE9QIG1vZGUgd2l0aCBXRkkgaW5zdHJ1Y3Rpb24KKyAgKiAgICAgQGFyZyBQV1JfU1RPUEVudHJ5X1dGRTogZW50ZXIgU1RPUCBtb2RlIHdpdGggV0ZFIGluc3RydWN0aW9uCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFBXUl9FbnRlclNUT1BNb2RlKHVpbnQzMl90IFBXUl9SZWd1bGF0b3IsIHVpbnQ4X3QgUFdSX1NUT1BFbnRyeSkKK3sKKyAgdWludDMyX3QgdG1wcmVnID0gMDsKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX1BXUl9SRUdVTEFUT1IoUFdSX1JlZ3VsYXRvcikpOworICBhc3NlcnRfcGFyYW0oSVNfUFdSX1NUT1BfRU5UUlkoUFdSX1NUT1BFbnRyeSkpOworICAKKyAgLyogU2VsZWN0IHRoZSByZWd1bGF0b3Igc3RhdGUgaW4gU1RPUCBtb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisgIHRtcHJlZyA9IFBXUi0+Q1I7CisgIC8qIENsZWFyIFBERFMgYW5kIExQRFMgYml0cyAqLworICB0bXByZWcgJj0gQ1JfRFNfTUFTSzsKKyAgLyogU2V0IExQRFMgYml0IGFjY29yZGluZyB0byBQV1JfUmVndWxhdG9yIHZhbHVlICovCisgIHRtcHJlZyB8PSBQV1JfUmVndWxhdG9yOworICAvKiBTdG9yZSB0aGUgbmV3IHZhbHVlICovCisgIFBXUi0+Q1IgPSB0bXByZWc7CisgIC8qIFNldCBTTEVFUERFRVAgYml0IG9mIENvcnRleCBTeXN0ZW0gQ29udHJvbCBSZWdpc3RlciAqLworICBTQ0ItPlNDUiB8PSBTQ0JfU0NSX1NMRUVQREVFUDsKKyAgCisgIC8qIFNlbGVjdCBTVE9QIG1vZGUgZW50cnkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworICBpZihQV1JfU1RPUEVudHJ5ID09IFBXUl9TVE9QRW50cnlfV0ZJKQorICB7ICAgCisgICAgLyogUmVxdWVzdCBXYWl0IEZvciBJbnRlcnJ1cHQgKi8KKyAgICBfX1dGSSgpOworICB9CisgIGVsc2UKKyAgeworICAgIC8qIFJlcXVlc3QgV2FpdCBGb3IgRXZlbnQgKi8KKyAgICBfX1dGRSgpOworICB9CisgIAorICAvKiBSZXNldCBTTEVFUERFRVAgYml0IG9mIENvcnRleCBTeXN0ZW0gQ29udHJvbCBSZWdpc3RlciAqLworICBTQ0ItPlNDUiAmPSAodWludDMyX3QpfigodWludDMyX3QpU0NCX1NDUl9TTEVFUERFRVApOyAgCit9CisKKy8qKgorICAqIEBicmllZiAgRW50ZXJzIFNUQU5EQlkgbW9kZS4KKyAgKiBAcGFyYW0gIE5vbmUKKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgUFdSX0VudGVyU1RBTkRCWU1vZGUodm9pZCkKK3sKKyAgLyogQ2xlYXIgV2FrZS11cCBmbGFnICovCisgIFBXUi0+Q1IgfD0gUFdSX0NSX0NXVUY7CisgIC8qIFNlbGVjdCBTVEFOREJZIG1vZGUgKi8KKyAgUFdSLT5DUiB8PSBQV1JfQ1JfUEREUzsKKyAgLyogU2V0IFNMRUVQREVFUCBiaXQgb2YgQ29ydGV4IFN5c3RlbSBDb250cm9sIFJlZ2lzdGVyICovCisgIFNDQi0+U0NSIHw9IFNDQl9TQ1JfU0xFRVBERUVQOworLyogVGhpcyBvcHRpb24gaXMgdXNlZCB0byBlbnN1cmUgdGhhdCBzdG9yZSBvcGVyYXRpb25zIGFyZSBjb21wbGV0ZWQgKi8KKyNpZiBkZWZpbmVkICggX19DQ19BUk0gICApCisgIF9fZm9yY2Vfc3RvcmVzKCk7CisjZW5kaWYKKyAgLyogUmVxdWVzdCBXYWl0IEZvciBJbnRlcnJ1cHQgKi8KKyAgX19XRkkoKTsKK30KKworLyoqCisgICogQGJyaWVmICBDaGVja3Mgd2hldGhlciB0aGUgc3BlY2lmaWVkIFBXUiBmbGFnIGlzIHNldCBvciBub3QuCisgICogQHBhcmFtICBQV1JfRkxBRzogc3BlY2lmaWVzIHRoZSBmbGFnIHRvIGNoZWNrLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBQV1JfRkxBR19XVTogV2FrZSBVcCBmbGFnCisgICogICAgIEBhcmcgUFdSX0ZMQUdfU0I6IFN0YW5kQnkgZmxhZworICAqICAgICBAYXJnIFBXUl9GTEFHX1BWRE86IFBWRCBPdXRwdXQKKyAgKiBAcmV0dmFsIFRoZSBuZXcgc3RhdGUgb2YgUFdSX0ZMQUcgKFNFVCBvciBSRVNFVCkuCisgICovCitGbGFnU3RhdHVzIFBXUl9HZXRGbGFnU3RhdHVzKHVpbnQzMl90IFBXUl9GTEFHKQoreworICBGbGFnU3RhdHVzIGJpdHN0YXR1cyA9IFJFU0VUOworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfUFdSX0dFVF9GTEFHKFBXUl9GTEFHKSk7CisgIAorICBpZiAoKFBXUi0+Q1NSICYgUFdSX0ZMQUcpICE9ICh1aW50MzJfdClSRVNFVCkKKyAgeworICAgIGJpdHN0YXR1cyA9IFNFVDsKKyAgfQorICBlbHNlCisgIHsKKyAgICBiaXRzdGF0dXMgPSBSRVNFVDsKKyAgfQorICAvKiBSZXR1cm4gdGhlIGZsYWcgc3RhdHVzICovCisgIHJldHVybiBiaXRzdGF0dXM7Cit9CisKKy8qKgorICAqIEBicmllZiAgQ2xlYXJzIHRoZSBQV1IncyBwZW5kaW5nIGZsYWdzLgorICAqIEBwYXJhbSAgUFdSX0ZMQUc6IHNwZWNpZmllcyB0aGUgZmxhZyB0byBjbGVhci4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICAgIEBhcmcgUFdSX0ZMQUdfV1U6IFdha2UgVXAgZmxhZworICAqICAgICBAYXJnIFBXUl9GTEFHX1NCOiBTdGFuZEJ5IGZsYWcKKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgUFdSX0NsZWFyRmxhZyh1aW50MzJfdCBQV1JfRkxBRykKK3sKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX1BXUl9DTEVBUl9GTEFHKFBXUl9GTEFHKSk7CisgICAgICAgICAKKyAgUFdSLT5DUiB8PSAgUFdSX0ZMQUcgPDwgMjsKK30KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCAyMDExIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL3N0X2Z3X2xpYi9zcmMvc3RtMzJmMTB4X3JjYy5jIGIvc3RfZndfbGliL3NyYy9zdG0zMmYxMHhfcmNjLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTI5MDM0YgotLS0gL2Rldi9udWxsCisrKyBiL3N0X2Z3X2xpYi9zcmMvc3RtMzJmMTB4X3JjYy5jCkBAIC0wLDAgKzEsMTQ3MCBAQAorLyoqCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqIEBmaWxlICAgIHN0bTMyZjEweF9yY2MuYworICAqIEBhdXRob3IgIE1DRCBBcHBsaWNhdGlvbiBUZWFtCisgICogQHZlcnNpb24gVjMuNS4wCisgICogQGRhdGUgICAgMTEtTWFyY2gtMjAxMQorICAqIEBicmllZiAgIFRoaXMgZmlsZSBwcm92aWRlcyBhbGwgdGhlIFJDQyBmaXJtd2FyZSBmdW5jdGlvbnMuCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqIEBhdHRlbnRpb24KKyAgKgorICAqIFRIRSBQUkVTRU5UIEZJUk1XQVJFIFdISUNIIElTIEZPUiBHVUlEQU5DRSBPTkxZIEFJTVMgQVQgUFJPVklESU5HIENVU1RPTUVSUworICAqIFdJVEggQ09ESU5HIElORk9STUFUSU9OIFJFR0FSRElORyBUSEVJUiBQUk9EVUNUUyBJTiBPUkRFUiBGT1IgVEhFTSBUTyBTQVZFCisgICogVElNRS4gQVMgQSBSRVNVTFQsIFNUTUlDUk9FTEVDVFJPTklDUyBTSEFMTCBOT1QgQkUgSEVMRCBMSUFCTEUgRk9SIEFOWQorICAqIERJUkVDVCwgSU5ESVJFQ1QgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIFdJVEggUkVTUEVDVCBUTyBBTlkgQ0xBSU1TIEFSSVNJTkcKKyAgKiBGUk9NIFRIRSBDT05URU5UIE9GIFNVQ0ggRklSTVdBUkUgQU5EL09SIFRIRSBVU0UgTUFERSBCWSBDVVNUT01FUlMgT0YgVEhFCisgICogQ09ESU5HIElORk9STUFUSU9OIENPTlRBSU5FRCBIRVJFSU4gSU4gQ09OTkVDVElPTiBXSVRIIFRIRUlSIFBST0RVQ1RTLgorICAqCisgICogPGgyPjxjZW50ZXI+JmNvcHk7IENPUFlSSUdIVCAyMDExIFNUTWljcm9lbGVjdHJvbmljczwvY2VudGVyPjwvaDI+CisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqLworCisvKiBJbmNsdWRlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworI2luY2x1ZGUgInN0bTMyZjEweF9yY2MuaCIKKworLyoqIEBhZGR0b2dyb3VwIFNUTTMyRjEweF9TdGRQZXJpcGhfRHJpdmVyCisgICogQHsKKyAgKi8KKworLyoqIEBkZWZncm91cCBSQ0MgCisgICogQGJyaWVmIFJDQyBkcml2ZXIgbW9kdWxlcworICAqIEB7CisgICovIAorCisvKiogQGRlZmdyb3VwIFJDQ19Qcml2YXRlX1R5cGVzRGVmaW5pdGlvbnMKKyAgKiBAeworICAqLworCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIFJDQ19Qcml2YXRlX0RlZmluZXMKKyAgKiBAeworICAqLworCisvKiAtLS0tLS0tLS0tLS0gUkNDIHJlZ2lzdGVycyBiaXQgYWRkcmVzcyBpbiB0aGUgYWxpYXMgcmVnaW9uIC0tLS0tLS0tLS0tICovCisjZGVmaW5lIFJDQ19PRkZTRVQgICAgICAgICAgICAgICAgKFJDQ19CQVNFIC0gUEVSSVBIX0JBU0UpCisKKy8qIC0tLSBDUiBSZWdpc3RlciAtLS0qLworCisvKiBBbGlhcyB3b3JkIGFkZHJlc3Mgb2YgSFNJT04gYml0ICovCisjZGVmaW5lIENSX09GRlNFVCAgICAgICAgICAgICAgICAgKFJDQ19PRkZTRVQgKyAweDAwKQorI2RlZmluZSBIU0lPTl9CaXROdW1iZXIgICAgICAgICAgIDB4MDAKKyNkZWZpbmUgQ1JfSFNJT05fQkIgICAgICAgICAgICAgICAoUEVSSVBIX0JCX0JBU0UgKyAoQ1JfT0ZGU0VUICogMzIpICsgKEhTSU9OX0JpdE51bWJlciAqIDQpKQorCisvKiBBbGlhcyB3b3JkIGFkZHJlc3Mgb2YgUExMT04gYml0ICovCisjZGVmaW5lIFBMTE9OX0JpdE51bWJlciAgICAgICAgICAgMHgxOAorI2RlZmluZSBDUl9QTExPTl9CQiAgICAgICAgICAgICAgIChQRVJJUEhfQkJfQkFTRSArIChDUl9PRkZTRVQgKiAzMikgKyAoUExMT05fQml0TnVtYmVyICogNCkpCisKKyNpZmRlZiBTVE0zMkYxMFhfQ0wKKyAvKiBBbGlhcyB3b3JkIGFkZHJlc3Mgb2YgUExMMk9OIGJpdCAqLworICNkZWZpbmUgUExMMk9OX0JpdE51bWJlciAgICAgICAgICAweDFBCisgI2RlZmluZSBDUl9QTEwyT05fQkIgICAgICAgICAgICAgIChQRVJJUEhfQkJfQkFTRSArIChDUl9PRkZTRVQgKiAzMikgKyAoUExMMk9OX0JpdE51bWJlciAqIDQpKQorCisgLyogQWxpYXMgd29yZCBhZGRyZXNzIG9mIFBMTDNPTiBiaXQgKi8KKyAjZGVmaW5lIFBMTDNPTl9CaXROdW1iZXIgICAgICAgICAgMHgxQworICNkZWZpbmUgQ1JfUExMM09OX0JCICAgICAgICAgICAgICAoUEVSSVBIX0JCX0JBU0UgKyAoQ1JfT0ZGU0VUICogMzIpICsgKFBMTDNPTl9CaXROdW1iZXIgKiA0KSkKKyNlbmRpZiAvKiBTVE0zMkYxMFhfQ0wgKi8gCisKKy8qIEFsaWFzIHdvcmQgYWRkcmVzcyBvZiBDU1NPTiBiaXQgKi8KKyNkZWZpbmUgQ1NTT05fQml0TnVtYmVyICAgICAgICAgICAweDEzCisjZGVmaW5lIENSX0NTU09OX0JCICAgICAgICAgICAgICAgKFBFUklQSF9CQl9CQVNFICsgKENSX09GRlNFVCAqIDMyKSArIChDU1NPTl9CaXROdW1iZXIgKiA0KSkKKworLyogLS0tIENGR1IgUmVnaXN0ZXIgLS0tKi8KKworLyogQWxpYXMgd29yZCBhZGRyZXNzIG9mIFVTQlBSRSBiaXQgKi8KKyNkZWZpbmUgQ0ZHUl9PRkZTRVQgICAgICAgICAgICAgICAoUkNDX09GRlNFVCArIDB4MDQpCisKKyNpZm5kZWYgU1RNMzJGMTBYX0NMCisgI2RlZmluZSBVU0JQUkVfQml0TnVtYmVyICAgICAgICAgIDB4MTYKKyAjZGVmaW5lIENGR1JfVVNCUFJFX0JCICAgICAgICAgICAgKFBFUklQSF9CQl9CQVNFICsgKENGR1JfT0ZGU0VUICogMzIpICsgKFVTQlBSRV9CaXROdW1iZXIgKiA0KSkKKyNlbHNlCisgI2RlZmluZSBPVEdGU1BSRV9CaXROdW1iZXIgICAgICAgIDB4MTYKKyAjZGVmaW5lIENGR1JfT1RHRlNQUkVfQkIgICAgICAgICAgKFBFUklQSF9CQl9CQVNFICsgKENGR1JfT0ZGU0VUICogMzIpICsgKE9UR0ZTUFJFX0JpdE51bWJlciAqIDQpKQorI2VuZGlmIC8qIFNUTTMyRjEwWF9DTCAqLyAKKworLyogLS0tIEJEQ1IgUmVnaXN0ZXIgLS0tKi8KKworLyogQWxpYXMgd29yZCBhZGRyZXNzIG9mIFJUQ0VOIGJpdCAqLworI2RlZmluZSBCRENSX09GRlNFVCAgICAgICAgICAgICAgIChSQ0NfT0ZGU0VUICsgMHgyMCkKKyNkZWZpbmUgUlRDRU5fQml0TnVtYmVyICAgICAgICAgICAweDBGCisjZGVmaW5lIEJEQ1JfUlRDRU5fQkIgICAgICAgICAgICAgKFBFUklQSF9CQl9CQVNFICsgKEJEQ1JfT0ZGU0VUICogMzIpICsgKFJUQ0VOX0JpdE51bWJlciAqIDQpKQorCisvKiBBbGlhcyB3b3JkIGFkZHJlc3Mgb2YgQkRSU1QgYml0ICovCisjZGVmaW5lIEJEUlNUX0JpdE51bWJlciAgICAgICAgICAgMHgxMAorI2RlZmluZSBCRENSX0JEUlNUX0JCICAgICAgICAgICAgIChQRVJJUEhfQkJfQkFTRSArIChCRENSX09GRlNFVCAqIDMyKSArIChCRFJTVF9CaXROdW1iZXIgKiA0KSkKKworLyogLS0tIENTUiBSZWdpc3RlciAtLS0qLworCisvKiBBbGlhcyB3b3JkIGFkZHJlc3Mgb2YgTFNJT04gYml0ICovCisjZGVmaW5lIENTUl9PRkZTRVQgICAgICAgICAgICAgICAgKFJDQ19PRkZTRVQgKyAweDI0KQorI2RlZmluZSBMU0lPTl9CaXROdW1iZXIgICAgICAgICAgIDB4MDAKKyNkZWZpbmUgQ1NSX0xTSU9OX0JCICAgICAgICAgICAgICAoUEVSSVBIX0JCX0JBU0UgKyAoQ1NSX09GRlNFVCAqIDMyKSArIChMU0lPTl9CaXROdW1iZXIgKiA0KSkKKworI2lmZGVmIFNUTTMyRjEwWF9DTAorLyogLS0tIENGR1IyIFJlZ2lzdGVyIC0tLSovCisKKyAvKiBBbGlhcyB3b3JkIGFkZHJlc3Mgb2YgSTJTMlNSQyBiaXQgKi8KKyAjZGVmaW5lIENGR1IyX09GRlNFVCAgICAgICAgICAgICAgKFJDQ19PRkZTRVQgKyAweDJDKQorICNkZWZpbmUgSTJTMlNSQ19CaXROdW1iZXIgICAgICAgICAweDExCisgI2RlZmluZSBDRkdSMl9JMlMyU1JDX0JCICAgICAgICAgIChQRVJJUEhfQkJfQkFTRSArIChDRkdSMl9PRkZTRVQgKiAzMikgKyAoSTJTMlNSQ19CaXROdW1iZXIgKiA0KSkKKworIC8qIEFsaWFzIHdvcmQgYWRkcmVzcyBvZiBJMlMzU1JDIGJpdCAqLworICNkZWZpbmUgSTJTM1NSQ19CaXROdW1iZXIgICAgICAgICAweDEyCisgI2RlZmluZSBDRkdSMl9JMlMzU1JDX0JCICAgICAgICAgIChQRVJJUEhfQkJfQkFTRSArIChDRkdSMl9PRkZTRVQgKiAzMikgKyAoSTJTM1NSQ19CaXROdW1iZXIgKiA0KSkKKyNlbmRpZiAvKiBTVE0zMkYxMFhfQ0wgKi8KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBSQ0MgcmVnaXN0ZXJzIGJpdCBtYXNrIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisvKiBDUiByZWdpc3RlciBiaXQgbWFzayAqLworI2RlZmluZSBDUl9IU0VCWVBfUmVzZXQgICAgICAgICAgICgodWludDMyX3QpMHhGRkZCRkZGRikKKyNkZWZpbmUgQ1JfSFNFQllQX1NldCAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwNDAwMDApCisjZGVmaW5lIENSX0hTRU9OX1Jlc2V0ICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGRkVGRkZGKQorI2RlZmluZSBDUl9IU0VPTl9TZXQgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAxMDAwMCkKKyNkZWZpbmUgQ1JfSFNJVFJJTV9NYXNrICAgICAgICAgICAoKHVpbnQzMl90KTB4RkZGRkZGMDcpCisKKy8qIENGR1IgcmVnaXN0ZXIgYml0IG1hc2sgKi8KKyNpZiBkZWZpbmVkIChTVE0zMkYxMFhfTERfVkwpIHx8IGRlZmluZWQgKFNUTTMyRjEwWF9NRF9WTCkgfHwgZGVmaW5lZCAoU1RNMzJGMTBYX0hEX1ZMKSB8fCBkZWZpbmVkIChTVE0zMkYxMFhfQ0wpIAorICNkZWZpbmUgQ0ZHUl9QTExfTWFzayAgICAgICAgICAgICgodWludDMyX3QpMHhGRkMyRkZGRikKKyNlbHNlCisgI2RlZmluZSBDRkdSX1BMTF9NYXNrICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGQzBGRkZGKQorI2VuZGlmIC8qIFNUTTMyRjEwWF9DTCAqLyAKKworI2RlZmluZSBDRkdSX1BMTE11bGxfTWFzayAgICAgICAgICgodWludDMyX3QpMHgwMDNDMDAwMCkKKyNkZWZpbmUgQ0ZHUl9QTExTUkNfTWFzayAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMTAwMDApCisjZGVmaW5lIENGR1JfUExMWFRQUkVfTWFzayAgICAgICAgKCh1aW50MzJfdCkweDAwMDIwMDAwKQorI2RlZmluZSBDRkdSX1NXU19NYXNrICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwQykKKyNkZWZpbmUgQ0ZHUl9TV19NYXNrICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4RkZGRkZGRkMpCisjZGVmaW5lIENGR1JfSFBSRV9SZXNldF9NYXNrICAgICAgKCh1aW50MzJfdCkweEZGRkZGRjBGKQorI2RlZmluZSBDRkdSX0hQUkVfU2V0X01hc2sgICAgICAgICgodWludDMyX3QpMHgwMDAwMDBGMCkKKyNkZWZpbmUgQ0ZHUl9QUFJFMV9SZXNldF9NYXNrICAgICAoKHVpbnQzMl90KTB4RkZGRkY4RkYpCisjZGVmaW5lIENGR1JfUFBSRTFfU2V0X01hc2sgICAgICAgKCh1aW50MzJfdCkweDAwMDAwNzAwKQorI2RlZmluZSBDRkdSX1BQUkUyX1Jlc2V0X01hc2sgICAgICgodWludDMyX3QpMHhGRkZGQzdGRikKKyNkZWZpbmUgQ0ZHUl9QUFJFMl9TZXRfTWFzayAgICAgICAoKHVpbnQzMl90KTB4MDAwMDM4MDApCisjZGVmaW5lIENGR1JfQURDUFJFX1Jlc2V0X01hc2sgICAgKCh1aW50MzJfdCkweEZGRkYzRkZGKQorI2RlZmluZSBDRkdSX0FEQ1BSRV9TZXRfTWFzayAgICAgICgodWludDMyX3QpMHgwMDAwQzAwMCkKKworLyogQ1NSIHJlZ2lzdGVyIGJpdCBtYXNrICovCisjZGVmaW5lIENTUl9STVZGX1NldCAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAxMDAwMDAwKQorCisjaWYgZGVmaW5lZCAoU1RNMzJGMTBYX0xEX1ZMKSB8fCBkZWZpbmVkIChTVE0zMkYxMFhfTURfVkwpIHx8IGRlZmluZWQgKFNUTTMyRjEwWF9IRF9WTCkgfHwgZGVmaW5lZCAoU1RNMzJGMTBYX0NMKSAKKy8qIENGR1IyIHJlZ2lzdGVyIGJpdCBtYXNrICovCisgI2RlZmluZSBDRkdSMl9QUkVESVYxU1JDICAgICAgICAgKCh1aW50MzJfdCkweDAwMDEwMDAwKQorICNkZWZpbmUgQ0ZHUjJfUFJFRElWMSAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwRikKKyNlbmRpZgorI2lmZGVmIFNUTTMyRjEwWF9DTAorICNkZWZpbmUgQ0ZHUjJfUFJFRElWMiAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDBGMCkKKyAjZGVmaW5lIENGR1IyX1BMTDJNVUwgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDBGMDApCisgI2RlZmluZSBDRkdSMl9QTEwzTVVMICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDBGMDAwKQorI2VuZGlmIC8qIFNUTTMyRjEwWF9DTCAqLyAKKworLyogUkNDIEZsYWcgTWFzayAqLworI2RlZmluZSBGTEFHX01hc2sgICAgICAgICAgICAgICAgICgodWludDhfdCkweDFGKQorCisvKiBDSVIgcmVnaXN0ZXIgYnl0ZSAyIChCaXRzWzE1OjhdKSBiYXNlIGFkZHJlc3MgKi8KKyNkZWZpbmUgQ0lSX0JZVEUyX0FERFJFU1MgICAgICAgICAoKHVpbnQzMl90KTB4NDAwMjEwMDkpCisKKy8qIENJUiByZWdpc3RlciBieXRlIDMgKEJpdHNbMjM6MTZdKSBiYXNlIGFkZHJlc3MgKi8KKyNkZWZpbmUgQ0lSX0JZVEUzX0FERFJFU1MgICAgICAgICAoKHVpbnQzMl90KTB4NDAwMjEwMEEpCisKKy8qIENGR1IgcmVnaXN0ZXIgYnl0ZSA0IChCaXRzWzMxOjI0XSkgYmFzZSBhZGRyZXNzICovCisjZGVmaW5lIENGR1JfQllURTRfQUREUkVTUyAgICAgICAgKCh1aW50MzJfdCkweDQwMDIxMDA3KQorCisvKiBCRENSIHJlZ2lzdGVyIGJhc2UgYWRkcmVzcyAqLworI2RlZmluZSBCRENSX0FERFJFU1MgICAgICAgICAgICAgIChQRVJJUEhfQkFTRSArIEJEQ1JfT0ZGU0VUKQorCisvKioKKyAgKiBAfQorICAqLyAKKworLyoqIEBkZWZncm91cCBSQ0NfUHJpdmF0ZV9NYWNyb3MKKyAgKiBAeworICAqLyAKKworLyoqCisgICogQH0KKyAgKi8gCisKKy8qKiBAZGVmZ3JvdXAgUkNDX1ByaXZhdGVfVmFyaWFibGVzCisgICogQHsKKyAgKi8gCisKK3N0YXRpYyBfX0kgdWludDhfdCBBUEJBSEJQcmVzY1RhYmxlWzE2XSA9IHswLCAwLCAwLCAwLCAxLCAyLCAzLCA0LCAxLCAyLCAzLCA0LCA2LCA3LCA4LCA5fTsKK3N0YXRpYyBfX0kgdWludDhfdCBBRENQcmVzY1RhYmxlWzRdID0gezIsIDQsIDYsIDh9OworCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIFJDQ19Qcml2YXRlX0Z1bmN0aW9uUHJvdG90eXBlcworICAqIEB7CisgICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgUkNDX1ByaXZhdGVfRnVuY3Rpb25zCisgICogQHsKKyAgKi8KKworLyoqCisgICogQGJyaWVmICBSZXNldHMgdGhlIFJDQyBjbG9jayBjb25maWd1cmF0aW9uIHRvIHRoZSBkZWZhdWx0IHJlc2V0IHN0YXRlLgorICAqIEBwYXJhbSAgTm9uZQorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBSQ0NfRGVJbml0KHZvaWQpCit7CisgIC8qIFNldCBIU0lPTiBiaXQgKi8KKyAgUkNDLT5DUiB8PSAodWludDMyX3QpMHgwMDAwMDAwMTsKKworICAvKiBSZXNldCBTVywgSFBSRSwgUFBSRTEsIFBQUkUyLCBBRENQUkUgYW5kIE1DTyBiaXRzICovCisjaWZuZGVmIFNUTTMyRjEwWF9DTAorICBSQ0MtPkNGR1IgJj0gKHVpbnQzMl90KTB4RjhGRjAwMDA7CisjZWxzZQorICBSQ0MtPkNGR1IgJj0gKHVpbnQzMl90KTB4RjBGRjAwMDA7CisjZW5kaWYgLyogU1RNMzJGMTBYX0NMICovICAgCisgIAorICAvKiBSZXNldCBIU0VPTiwgQ1NTT04gYW5kIFBMTE9OIGJpdHMgKi8KKyAgUkNDLT5DUiAmPSAodWludDMyX3QpMHhGRUY2RkZGRjsKKworICAvKiBSZXNldCBIU0VCWVAgYml0ICovCisgIFJDQy0+Q1IgJj0gKHVpbnQzMl90KTB4RkZGQkZGRkY7CisKKyAgLyogUmVzZXQgUExMU1JDLCBQTExYVFBSRSwgUExMTVVMIGFuZCBVU0JQUkUvT1RHRlNQUkUgYml0cyAqLworICBSQ0MtPkNGR1IgJj0gKHVpbnQzMl90KTB4RkY4MEZGRkY7CisKKyNpZmRlZiBTVE0zMkYxMFhfQ0wKKyAgLyogUmVzZXQgUExMMk9OIGFuZCBQTEwzT04gYml0cyAqLworICBSQ0MtPkNSICY9ICh1aW50MzJfdCkweEVCRkZGRkZGOworCisgIC8qIERpc2FibGUgYWxsIGludGVycnVwdHMgYW5kIGNsZWFyIHBlbmRpbmcgYml0cyAgKi8KKyAgUkNDLT5DSVIgPSAweDAwRkYwMDAwOworCisgIC8qIFJlc2V0IENGR1IyIHJlZ2lzdGVyICovCisgIFJDQy0+Q0ZHUjIgPSAweDAwMDAwMDAwOworI2VsaWYgZGVmaW5lZCAoU1RNMzJGMTBYX0xEX1ZMKSB8fCBkZWZpbmVkIChTVE0zMkYxMFhfTURfVkwpIHx8IGRlZmluZWQgKFNUTTMyRjEwWF9IRF9WTCkKKyAgLyogRGlzYWJsZSBhbGwgaW50ZXJydXB0cyBhbmQgY2xlYXIgcGVuZGluZyBiaXRzICAqLworICBSQ0MtPkNJUiA9IDB4MDA5RjAwMDA7CisKKyAgLyogUmVzZXQgQ0ZHUjIgcmVnaXN0ZXIgKi8KKyAgUkNDLT5DRkdSMiA9IDB4MDAwMDAwMDA7ICAgICAgCisjZWxzZQorICAvKiBEaXNhYmxlIGFsbCBpbnRlcnJ1cHRzIGFuZCBjbGVhciBwZW5kaW5nIGJpdHMgICovCisgIFJDQy0+Q0lSID0gMHgwMDlGMDAwMDsKKyNlbmRpZiAvKiBTVE0zMkYxMFhfQ0wgKi8KKworfQorCisvKioKKyAgKiBAYnJpZWYgIENvbmZpZ3VyZXMgdGhlIEV4dGVybmFsIEhpZ2ggU3BlZWQgb3NjaWxsYXRvciAoSFNFKS4KKyAgKiBAbm90ZSAgIEhTRSBjYW4gbm90IGJlIHN0b3BwZWQgaWYgaXQgaXMgdXNlZCBkaXJlY3RseSBvciB0aHJvdWdoIHRoZSBQTEwgYXMgc3lzdGVtIGNsb2NrLgorICAqIEBwYXJhbSAgUkNDX0hTRTogc3BlY2lmaWVzIHRoZSBuZXcgc3RhdGUgb2YgdGhlIEhTRS4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICAgIEBhcmcgUkNDX0hTRV9PRkY6IEhTRSBvc2NpbGxhdG9yIE9GRgorICAqICAgICBAYXJnIFJDQ19IU0VfT046IEhTRSBvc2NpbGxhdG9yIE9OCisgICogICAgIEBhcmcgUkNDX0hTRV9CeXBhc3M6IEhTRSBvc2NpbGxhdG9yIGJ5cGFzc2VkIHdpdGggZXh0ZXJuYWwgY2xvY2sKKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgUkNDX0hTRUNvbmZpZyh1aW50MzJfdCBSQ0NfSFNFKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfUkNDX0hTRShSQ0NfSFNFKSk7CisgIC8qIFJlc2V0IEhTRU9OIGFuZCBIU0VCWVAgYml0cyBiZWZvcmUgY29uZmlndXJpbmcgdGhlIEhTRSAtLS0tLS0tLS0tLS0tLS0tLS0qLworICAvKiBSZXNldCBIU0VPTiBiaXQgKi8KKyAgUkNDLT5DUiAmPSBDUl9IU0VPTl9SZXNldDsKKyAgLyogUmVzZXQgSFNFQllQIGJpdCAqLworICBSQ0MtPkNSICY9IENSX0hTRUJZUF9SZXNldDsKKyAgLyogQ29uZmlndXJlIEhTRSAoUkNDX0hTRV9PRkYgaXMgYWxyZWFkeSBjb3ZlcmVkIGJ5IHRoZSBjb2RlIHNlY3Rpb24gYWJvdmUpICovCisgIHN3aXRjaChSQ0NfSFNFKQorICB7CisgICAgY2FzZSBSQ0NfSFNFX09OOgorICAgICAgLyogU2V0IEhTRU9OIGJpdCAqLworICAgICAgUkNDLT5DUiB8PSBDUl9IU0VPTl9TZXQ7CisgICAgICBicmVhazsKKyAgICAgIAorICAgIGNhc2UgUkNDX0hTRV9CeXBhc3M6CisgICAgICAvKiBTZXQgSFNFQllQIGFuZCBIU0VPTiBiaXRzICovCisgICAgICBSQ0MtPkNSIHw9IENSX0hTRUJZUF9TZXQgfCBDUl9IU0VPTl9TZXQ7CisgICAgICBicmVhazsKKyAgICAgIAorICAgIGRlZmF1bHQ6CisgICAgICBicmVhazsKKyAgfQorfQorCisvKioKKyAgKiBAYnJpZWYgIFdhaXRzIGZvciBIU0Ugc3RhcnQtdXAuCisgICogQHBhcmFtICBOb25lCisgICogQHJldHZhbCBBbiBFcnJvclN0YXR1cyBlbnVtdXJhdGlvbiB2YWx1ZToKKyAgKiAtIFNVQ0NFU1M6IEhTRSBvc2NpbGxhdG9yIGlzIHN0YWJsZSBhbmQgcmVhZHkgdG8gdXNlCisgICogLSBFUlJPUjogSFNFIG9zY2lsbGF0b3Igbm90IHlldCByZWFkeQorICAqLworRXJyb3JTdGF0dXMgUkNDX1dhaXRGb3JIU0VTdGFydFVwKHZvaWQpCit7CisgIF9fSU8gdWludDMyX3QgU3RhcnRVcENvdW50ZXIgPSAwOworICBFcnJvclN0YXR1cyBzdGF0dXMgPSBFUlJPUjsKKyAgRmxhZ1N0YXR1cyBIU0VTdGF0dXMgPSBSRVNFVDsKKyAgCisgIC8qIFdhaXQgdGlsbCBIU0UgaXMgcmVhZHkgYW5kIGlmIFRpbWUgb3V0IGlzIHJlYWNoZWQgZXhpdCAqLworICBkbworICB7CisgICAgSFNFU3RhdHVzID0gUkNDX0dldEZsYWdTdGF0dXMoUkNDX0ZMQUdfSFNFUkRZKTsKKyAgICBTdGFydFVwQ291bnRlcisrOyAgCisgIH0gd2hpbGUoKFN0YXJ0VXBDb3VudGVyICE9IEhTRV9TVEFSVFVQX1RJTUVPVVQpICYmIChIU0VTdGF0dXMgPT0gUkVTRVQpKTsKKyAgCisgIGlmIChSQ0NfR2V0RmxhZ1N0YXR1cyhSQ0NfRkxBR19IU0VSRFkpICE9IFJFU0VUKQorICB7CisgICAgc3RhdHVzID0gU1VDQ0VTUzsKKyAgfQorICBlbHNlCisgIHsKKyAgICBzdGF0dXMgPSBFUlJPUjsKKyAgfSAgCisgIHJldHVybiAoc3RhdHVzKTsKK30KKworLyoqCisgICogQGJyaWVmICBBZGp1c3RzIHRoZSBJbnRlcm5hbCBIaWdoIFNwZWVkIG9zY2lsbGF0b3IgKEhTSSkgY2FsaWJyYXRpb24gdmFsdWUuCisgICogQHBhcmFtICBIU0lDYWxpYnJhdGlvblZhbHVlOiBzcGVjaWZpZXMgdGhlIGNhbGlicmF0aW9uIHRyaW1taW5nIHZhbHVlLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgbXVzdCBiZSBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDB4MUYuCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFJDQ19BZGp1c3RIU0lDYWxpYnJhdGlvblZhbHVlKHVpbnQ4X3QgSFNJQ2FsaWJyYXRpb25WYWx1ZSkKK3sKKyAgdWludDMyX3QgdG1wcmVnID0gMDsKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX1JDQ19DQUxJQlJBVElPTl9WQUxVRShIU0lDYWxpYnJhdGlvblZhbHVlKSk7CisgIHRtcHJlZyA9IFJDQy0+Q1I7CisgIC8qIENsZWFyIEhTSVRSSU1bNDowXSBiaXRzICovCisgIHRtcHJlZyAmPSBDUl9IU0lUUklNX01hc2s7CisgIC8qIFNldCB0aGUgSFNJVFJJTVs0OjBdIGJpdHMgYWNjb3JkaW5nIHRvIEhTSUNhbGlicmF0aW9uVmFsdWUgdmFsdWUgKi8KKyAgdG1wcmVnIHw9ICh1aW50MzJfdClIU0lDYWxpYnJhdGlvblZhbHVlIDw8IDM7CisgIC8qIFN0b3JlIHRoZSBuZXcgdmFsdWUgKi8KKyAgUkNDLT5DUiA9IHRtcHJlZzsKK30KKworLyoqCisgICogQGJyaWVmICBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBJbnRlcm5hbCBIaWdoIFNwZWVkIG9zY2lsbGF0b3IgKEhTSSkuCisgICogQG5vdGUgICBIU0kgY2FuIG5vdCBiZSBzdG9wcGVkIGlmIGl0IGlzIHVzZWQgZGlyZWN0bHkgb3IgdGhyb3VnaCB0aGUgUExMIGFzIHN5c3RlbSBjbG9jay4KKyAgKiBAcGFyYW0gIE5ld1N0YXRlOiBuZXcgc3RhdGUgb2YgdGhlIEhTSS4gVGhpcyBwYXJhbWV0ZXIgY2FuIGJlOiBFTkFCTEUgb3IgRElTQUJMRS4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgUkNDX0hTSUNtZChGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpCit7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19GVU5DVElPTkFMX1NUQVRFKE5ld1N0YXRlKSk7CisgICooX19JTyB1aW50MzJfdCAqKSBDUl9IU0lPTl9CQiA9ICh1aW50MzJfdClOZXdTdGF0ZTsKK30KKworLyoqCisgICogQGJyaWVmICBDb25maWd1cmVzIHRoZSBQTEwgY2xvY2sgc291cmNlIGFuZCBtdWx0aXBsaWNhdGlvbiBmYWN0b3IuCisgICogQG5vdGUgICBUaGlzIGZ1bmN0aW9uIG11c3QgYmUgdXNlZCBvbmx5IHdoZW4gdGhlIFBMTCBpcyBkaXNhYmxlZC4KKyAgKiBAcGFyYW0gIFJDQ19QTExTb3VyY2U6IHNwZWNpZmllcyB0aGUgUExMIGVudHJ5IGNsb2NrIHNvdXJjZS4KKyAgKiAgIEZvciBAYiBTVE0zMl9Db25uZWN0aXZpdHlfbGluZV9kZXZpY2VzIG9yIEBiIFNUTTMyX1ZhbHVlX2xpbmVfZGV2aWNlcywgCisgICogICB0aGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIFJDQ19QTExTb3VyY2VfSFNJX0RpdjI6IEhTSSBvc2NpbGxhdG9yIGNsb2NrIGRpdmlkZWQgYnkgMiBzZWxlY3RlZCBhcyBQTEwgY2xvY2sgZW50cnkKKyAgKiAgICAgQGFyZyBSQ0NfUExMU291cmNlX1BSRURJVjE6IFBSRURJVjEgY2xvY2sgc2VsZWN0ZWQgYXMgUExMIGNsb2NrIGVudHJ5CisgICogICBGb3IgQGIgb3RoZXJfU1RNMzJfZGV2aWNlcywgdGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBSQ0NfUExMU291cmNlX0hTSV9EaXYyOiBIU0kgb3NjaWxsYXRvciBjbG9jayBkaXZpZGVkIGJ5IDIgc2VsZWN0ZWQgYXMgUExMIGNsb2NrIGVudHJ5CisgICogICAgIEBhcmcgUkNDX1BMTFNvdXJjZV9IU0VfRGl2MTogSFNFIG9zY2lsbGF0b3IgY2xvY2sgc2VsZWN0ZWQgYXMgUExMIGNsb2NrIGVudHJ5CisgICogICAgIEBhcmcgUkNDX1BMTFNvdXJjZV9IU0VfRGl2MjogSFNFIG9zY2lsbGF0b3IgY2xvY2sgZGl2aWRlZCBieSAyIHNlbGVjdGVkIGFzIFBMTCBjbG9jayBlbnRyeSAKKyAgKiBAcGFyYW0gIFJDQ19QTExNdWw6IHNwZWNpZmllcyB0aGUgUExMIG11bHRpcGxpY2F0aW9uIGZhY3Rvci4KKyAgKiAgIEZvciBAYiBTVE0zMl9Db25uZWN0aXZpdHlfbGluZV9kZXZpY2VzLCB0aGlzIHBhcmFtZXRlciBjYW4gYmUgUkNDX1BMTE11bF94IHdoZXJlIHg6e1s0LDldLCA2XzV9CisgICogICBGb3IgQGIgb3RoZXJfU1RNMzJfZGV2aWNlcywgdGhpcyBwYXJhbWV0ZXIgY2FuIGJlIFJDQ19QTExNdWxfeCB3aGVyZSB4OlsyLDE2XSAgCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFJDQ19QTExDb25maWcodWludDMyX3QgUkNDX1BMTFNvdXJjZSwgdWludDMyX3QgUkNDX1BMTE11bCkKK3sKKyAgdWludDMyX3QgdG1wcmVnID0gMDsKKworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfUkNDX1BMTF9TT1VSQ0UoUkNDX1BMTFNvdXJjZSkpOworICBhc3NlcnRfcGFyYW0oSVNfUkNDX1BMTF9NVUwoUkNDX1BMTE11bCkpOworCisgIHRtcHJlZyA9IFJDQy0+Q0ZHUjsKKyAgLyogQ2xlYXIgUExMU1JDLCBQTExYVFBSRSBhbmQgUExMTVVMWzM6MF0gYml0cyAqLworICB0bXByZWcgJj0gQ0ZHUl9QTExfTWFzazsKKyAgLyogU2V0IHRoZSBQTEwgY29uZmlndXJhdGlvbiBiaXRzICovCisgIHRtcHJlZyB8PSBSQ0NfUExMU291cmNlIHwgUkNDX1BMTE11bDsKKyAgLyogU3RvcmUgdGhlIG5ldyB2YWx1ZSAqLworICBSQ0MtPkNGR1IgPSB0bXByZWc7Cit9CisKKy8qKgorICAqIEBicmllZiAgRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgUExMLgorICAqIEBub3RlICAgVGhlIFBMTCBjYW4gbm90IGJlIGRpc2FibGVkIGlmIGl0IGlzIHVzZWQgYXMgc3lzdGVtIGNsb2NrLgorICAqIEBwYXJhbSAgTmV3U3RhdGU6IG5ldyBzdGF0ZSBvZiB0aGUgUExMLiBUaGlzIHBhcmFtZXRlciBjYW4gYmU6IEVOQUJMRSBvciBESVNBQkxFLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBSQ0NfUExMQ21kKEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSkKK3sKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX0ZVTkNUSU9OQUxfU1RBVEUoTmV3U3RhdGUpKTsKKworICAqKF9fSU8gdWludDMyX3QgKikgQ1JfUExMT05fQkIgPSAodWludDMyX3QpTmV3U3RhdGU7Cit9CisKKyNpZiBkZWZpbmVkIChTVE0zMkYxMFhfTERfVkwpIHx8IGRlZmluZWQgKFNUTTMyRjEwWF9NRF9WTCkgfHwgZGVmaW5lZCAoU1RNMzJGMTBYX0hEX1ZMKSB8fCBkZWZpbmVkIChTVE0zMkYxMFhfQ0wpCisvKioKKyAgKiBAYnJpZWYgIENvbmZpZ3VyZXMgdGhlIFBSRURJVjEgZGl2aXNpb24gZmFjdG9yLgorICAqIEBub3RlIAorICAqICAgLSBUaGlzIGZ1bmN0aW9uIG11c3QgYmUgdXNlZCBvbmx5IHdoZW4gdGhlIFBMTCBpcyBkaXNhYmxlZC4KKyAgKiAgIC0gVGhpcyBmdW5jdGlvbiBhcHBsaWVzIG9ubHkgdG8gU1RNMzIgQ29ubmVjdGl2aXR5IGxpbmUgYW5kIFZhbHVlIGxpbmUgCisgICogICAgIGRldmljZXMuCisgICogQHBhcmFtICBSQ0NfUFJFRElWMV9Tb3VyY2U6IHNwZWNpZmllcyB0aGUgUFJFRElWMSBjbG9jayBzb3VyY2UuCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIFJDQ19QUkVESVYxX1NvdXJjZV9IU0U6IEhTRSBzZWxlY3RlZCBhcyBQUkVESVYxIGNsb2NrCisgICogICAgIEBhcmcgUkNDX1BSRURJVjFfU291cmNlX1BMTDI6IFBMTDIgc2VsZWN0ZWQgYXMgUFJFRElWMSBjbG9jaworICAqIEBub3RlIAorICAqICAgRm9yIEBiIFNUTTMyX1ZhbHVlX2xpbmVfZGV2aWNlcyB0aGlzIHBhcmFtZXRlciBpcyBhbHdheXMgUkNDX1BSRURJVjFfU291cmNlX0hTRSAgCisgICogQHBhcmFtICBSQ0NfUFJFRElWMV9EaXY6IHNwZWNpZmllcyB0aGUgUFJFRElWMSBjbG9jayBkaXZpc2lvbiBmYWN0b3IuCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgUkNDX1BSRURJVjFfRGl2eCB3aGVyZSB4OlsxLDE2XQorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBSQ0NfUFJFRElWMUNvbmZpZyh1aW50MzJfdCBSQ0NfUFJFRElWMV9Tb3VyY2UsIHVpbnQzMl90IFJDQ19QUkVESVYxX0RpdikKK3sKKyAgdWludDMyX3QgdG1wcmVnID0gMDsKKyAgCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19SQ0NfUFJFRElWMV9TT1VSQ0UoUkNDX1BSRURJVjFfU291cmNlKSk7CisgIGFzc2VydF9wYXJhbShJU19SQ0NfUFJFRElWMShSQ0NfUFJFRElWMV9EaXYpKTsKKworICB0bXByZWcgPSBSQ0MtPkNGR1IyOworICAvKiBDbGVhciBQUkVESVYxWzM6MF0gYW5kIFBSRURJVjFTUkMgYml0cyAqLworICB0bXByZWcgJj0gfihDRkdSMl9QUkVESVYxIHwgQ0ZHUjJfUFJFRElWMVNSQyk7CisgIC8qIFNldCB0aGUgUFJFRElWMSBjbG9jayBzb3VyY2UgYW5kIGRpdmlzaW9uIGZhY3RvciAqLworICB0bXByZWcgfD0gUkNDX1BSRURJVjFfU291cmNlIHwgUkNDX1BSRURJVjFfRGl2IDsKKyAgLyogU3RvcmUgdGhlIG5ldyB2YWx1ZSAqLworICBSQ0MtPkNGR1IyID0gdG1wcmVnOworfQorI2VuZGlmCisKKyNpZmRlZiBTVE0zMkYxMFhfQ0wKKy8qKgorICAqIEBicmllZiAgQ29uZmlndXJlcyB0aGUgUFJFRElWMiBkaXZpc2lvbiBmYWN0b3IuCisgICogQG5vdGUgCisgICogICAtIFRoaXMgZnVuY3Rpb24gbXVzdCBiZSB1c2VkIG9ubHkgd2hlbiBib3RoIFBMTDIgYW5kIFBMTDMgYXJlIGRpc2FibGVkLgorICAqICAgLSBUaGlzIGZ1bmN0aW9uIGFwcGxpZXMgb25seSB0byBTVE0zMiBDb25uZWN0aXZpdHkgbGluZSBkZXZpY2VzLgorICAqIEBwYXJhbSAgUkNDX1BSRURJVjJfRGl2OiBzcGVjaWZpZXMgdGhlIFBSRURJVjIgY2xvY2sgZGl2aXNpb24gZmFjdG9yLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIFJDQ19QUkVESVYyX0Rpdnggd2hlcmUgeDpbMSwxNl0KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgUkNDX1BSRURJVjJDb25maWcodWludDMyX3QgUkNDX1BSRURJVjJfRGl2KQoreworICB1aW50MzJfdCB0bXByZWcgPSAwOworCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19SQ0NfUFJFRElWMihSQ0NfUFJFRElWMl9EaXYpKTsKKworICB0bXByZWcgPSBSQ0MtPkNGR1IyOworICAvKiBDbGVhciBQUkVESVYyWzM6MF0gYml0cyAqLworICB0bXByZWcgJj0gfkNGR1IyX1BSRURJVjI7CisgIC8qIFNldCB0aGUgUFJFRElWMiBkaXZpc2lvbiBmYWN0b3IgKi8KKyAgdG1wcmVnIHw9IFJDQ19QUkVESVYyX0RpdjsKKyAgLyogU3RvcmUgdGhlIG5ldyB2YWx1ZSAqLworICBSQ0MtPkNGR1IyID0gdG1wcmVnOworfQorCisvKioKKyAgKiBAYnJpZWYgIENvbmZpZ3VyZXMgdGhlIFBMTDIgbXVsdGlwbGljYXRpb24gZmFjdG9yLgorICAqIEBub3RlCisgICogICAtIFRoaXMgZnVuY3Rpb24gbXVzdCBiZSB1c2VkIG9ubHkgd2hlbiB0aGUgUExMMiBpcyBkaXNhYmxlZC4KKyAgKiAgIC0gVGhpcyBmdW5jdGlvbiBhcHBsaWVzIG9ubHkgdG8gU1RNMzIgQ29ubmVjdGl2aXR5IGxpbmUgZGV2aWNlcy4KKyAgKiBAcGFyYW0gIFJDQ19QTEwyTXVsOiBzcGVjaWZpZXMgdGhlIFBMTDIgbXVsdGlwbGljYXRpb24gZmFjdG9yLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIFJDQ19QTEwyTXVsX3ggd2hlcmUgeDp7WzgsMTRdLCAxNiwgMjB9CisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFJDQ19QTEwyQ29uZmlnKHVpbnQzMl90IFJDQ19QTEwyTXVsKQoreworICB1aW50MzJfdCB0bXByZWcgPSAwOworCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19SQ0NfUExMMl9NVUwoUkNDX1BMTDJNdWwpKTsKKworICB0bXByZWcgPSBSQ0MtPkNGR1IyOworICAvKiBDbGVhciBQTEwyTXVsWzM6MF0gYml0cyAqLworICB0bXByZWcgJj0gfkNGR1IyX1BMTDJNVUw7CisgIC8qIFNldCB0aGUgUExMMiBjb25maWd1cmF0aW9uIGJpdHMgKi8KKyAgdG1wcmVnIHw9IFJDQ19QTEwyTXVsOworICAvKiBTdG9yZSB0aGUgbmV3IHZhbHVlICovCisgIFJDQy0+Q0ZHUjIgPSB0bXByZWc7Cit9CisKKworLyoqCisgICogQGJyaWVmICBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBQTEwyLgorICAqIEBub3RlIAorICAqICAgLSBUaGUgUExMMiBjYW4gbm90IGJlIGRpc2FibGVkIGlmIGl0IGlzIHVzZWQgaW5kaXJlY3RseSBhcyBzeXN0ZW0gY2xvY2sKKyAgKiAgICAgKGkuZS4gaXQgaXMgdXNlZCBhcyBQTEwgY2xvY2sgZW50cnkgdGhhdCBpcyB1c2VkIGFzIFN5c3RlbSBjbG9jaykuCisgICogICAtIFRoaXMgZnVuY3Rpb24gYXBwbGllcyBvbmx5IHRvIFNUTTMyIENvbm5lY3Rpdml0eSBsaW5lIGRldmljZXMuCisgICogQHBhcmFtICBOZXdTdGF0ZTogbmV3IHN0YXRlIG9mIHRoZSBQTEwyLiBUaGlzIHBhcmFtZXRlciBjYW4gYmU6IEVOQUJMRSBvciBESVNBQkxFLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBSQ0NfUExMMkNtZChGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpCit7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19GVU5DVElPTkFMX1NUQVRFKE5ld1N0YXRlKSk7CisKKyAgKihfX0lPIHVpbnQzMl90ICopIENSX1BMTDJPTl9CQiA9ICh1aW50MzJfdClOZXdTdGF0ZTsKK30KKworCisvKioKKyAgKiBAYnJpZWYgIENvbmZpZ3VyZXMgdGhlIFBMTDMgbXVsdGlwbGljYXRpb24gZmFjdG9yLgorICAqIEBub3RlIAorICAqICAgLSBUaGlzIGZ1bmN0aW9uIG11c3QgYmUgdXNlZCBvbmx5IHdoZW4gdGhlIFBMTDMgaXMgZGlzYWJsZWQuCisgICogICAtIFRoaXMgZnVuY3Rpb24gYXBwbGllcyBvbmx5IHRvIFNUTTMyIENvbm5lY3Rpdml0eSBsaW5lIGRldmljZXMuCisgICogQHBhcmFtICBSQ0NfUExMM011bDogc3BlY2lmaWVzIHRoZSBQTEwzIG11bHRpcGxpY2F0aW9uIGZhY3Rvci4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBSQ0NfUExMM011bF94IHdoZXJlIHg6e1s4LDE0XSwgMTYsIDIwfQorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBSQ0NfUExMM0NvbmZpZyh1aW50MzJfdCBSQ0NfUExMM011bCkKK3sKKyAgdWludDMyX3QgdG1wcmVnID0gMDsKKworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfUkNDX1BMTDNfTVVMKFJDQ19QTEwzTXVsKSk7CisKKyAgdG1wcmVnID0gUkNDLT5DRkdSMjsKKyAgLyogQ2xlYXIgUExMM011bFszOjBdIGJpdHMgKi8KKyAgdG1wcmVnICY9IH5DRkdSMl9QTEwzTVVMOworICAvKiBTZXQgdGhlIFBMTDMgY29uZmlndXJhdGlvbiBiaXRzICovCisgIHRtcHJlZyB8PSBSQ0NfUExMM011bDsKKyAgLyogU3RvcmUgdGhlIG5ldyB2YWx1ZSAqLworICBSQ0MtPkNGR1IyID0gdG1wcmVnOworfQorCisKKy8qKgorICAqIEBicmllZiAgRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgUExMMy4KKyAgKiBAbm90ZSAgIFRoaXMgZnVuY3Rpb24gYXBwbGllcyBvbmx5IHRvIFNUTTMyIENvbm5lY3Rpdml0eSBsaW5lIGRldmljZXMuCisgICogQHBhcmFtICBOZXdTdGF0ZTogbmV3IHN0YXRlIG9mIHRoZSBQTEwzLiBUaGlzIHBhcmFtZXRlciBjYW4gYmU6IEVOQUJMRSBvciBESVNBQkxFLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBSQ0NfUExMM0NtZChGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpCit7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisKKyAgYXNzZXJ0X3BhcmFtKElTX0ZVTkNUSU9OQUxfU1RBVEUoTmV3U3RhdGUpKTsKKyAgKihfX0lPIHVpbnQzMl90ICopIENSX1BMTDNPTl9CQiA9ICh1aW50MzJfdClOZXdTdGF0ZTsKK30KKyNlbmRpZiAvKiBTVE0zMkYxMFhfQ0wgKi8KKworLyoqCisgICogQGJyaWVmICBDb25maWd1cmVzIHRoZSBzeXN0ZW0gY2xvY2sgKFNZU0NMSykuCisgICogQHBhcmFtICBSQ0NfU1lTQ0xLU291cmNlOiBzcGVjaWZpZXMgdGhlIGNsb2NrIHNvdXJjZSB1c2VkIGFzIHN5c3RlbSBjbG9jay4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICAgIEBhcmcgUkNDX1NZU0NMS1NvdXJjZV9IU0k6IEhTSSBzZWxlY3RlZCBhcyBzeXN0ZW0gY2xvY2sKKyAgKiAgICAgQGFyZyBSQ0NfU1lTQ0xLU291cmNlX0hTRTogSFNFIHNlbGVjdGVkIGFzIHN5c3RlbSBjbG9jaworICAqICAgICBAYXJnIFJDQ19TWVNDTEtTb3VyY2VfUExMQ0xLOiBQTEwgc2VsZWN0ZWQgYXMgc3lzdGVtIGNsb2NrCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFJDQ19TWVNDTEtDb25maWcodWludDMyX3QgUkNDX1NZU0NMS1NvdXJjZSkKK3sKKyAgdWludDMyX3QgdG1wcmVnID0gMDsKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX1JDQ19TWVNDTEtfU09VUkNFKFJDQ19TWVNDTEtTb3VyY2UpKTsKKyAgdG1wcmVnID0gUkNDLT5DRkdSOworICAvKiBDbGVhciBTV1sxOjBdIGJpdHMgKi8KKyAgdG1wcmVnICY9IENGR1JfU1dfTWFzazsKKyAgLyogU2V0IFNXWzE6MF0gYml0cyBhY2NvcmRpbmcgdG8gUkNDX1NZU0NMS1NvdXJjZSB2YWx1ZSAqLworICB0bXByZWcgfD0gUkNDX1NZU0NMS1NvdXJjZTsKKyAgLyogU3RvcmUgdGhlIG5ldyB2YWx1ZSAqLworICBSQ0MtPkNGR1IgPSB0bXByZWc7Cit9CisKKy8qKgorICAqIEBicmllZiAgUmV0dXJucyB0aGUgY2xvY2sgc291cmNlIHVzZWQgYXMgc3lzdGVtIGNsb2NrLgorICAqIEBwYXJhbSAgTm9uZQorICAqIEByZXR2YWwgVGhlIGNsb2NrIHNvdXJjZSB1c2VkIGFzIHN5c3RlbSBjbG9jay4gVGhlIHJldHVybmVkIHZhbHVlIGNhbgorICAqICAgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6CisgICogICAgIC0gMHgwMDogSFNJIHVzZWQgYXMgc3lzdGVtIGNsb2NrCisgICogICAgIC0gMHgwNDogSFNFIHVzZWQgYXMgc3lzdGVtIGNsb2NrCisgICogICAgIC0gMHgwODogUExMIHVzZWQgYXMgc3lzdGVtIGNsb2NrCisgICovCit1aW50OF90IFJDQ19HZXRTWVNDTEtTb3VyY2Uodm9pZCkKK3sKKyAgcmV0dXJuICgodWludDhfdCkoUkNDLT5DRkdSICYgQ0ZHUl9TV1NfTWFzaykpOworfQorCisvKioKKyAgKiBAYnJpZWYgIENvbmZpZ3VyZXMgdGhlIEFIQiBjbG9jayAoSENMSykuCisgICogQHBhcmFtICBSQ0NfU1lTQ0xLOiBkZWZpbmVzIHRoZSBBSEIgY2xvY2sgZGl2aWRlci4gVGhpcyBjbG9jayBpcyBkZXJpdmVkIGZyb20gCisgICogICB0aGUgc3lzdGVtIGNsb2NrIChTWVNDTEspLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBSQ0NfU1lTQ0xLX0RpdjE6IEFIQiBjbG9jayA9IFNZU0NMSworICAqICAgICBAYXJnIFJDQ19TWVNDTEtfRGl2MjogQUhCIGNsb2NrID0gU1lTQ0xLLzIKKyAgKiAgICAgQGFyZyBSQ0NfU1lTQ0xLX0RpdjQ6IEFIQiBjbG9jayA9IFNZU0NMSy80CisgICogICAgIEBhcmcgUkNDX1NZU0NMS19EaXY4OiBBSEIgY2xvY2sgPSBTWVNDTEsvOAorICAqICAgICBAYXJnIFJDQ19TWVNDTEtfRGl2MTY6IEFIQiBjbG9jayA9IFNZU0NMSy8xNgorICAqICAgICBAYXJnIFJDQ19TWVNDTEtfRGl2NjQ6IEFIQiBjbG9jayA9IFNZU0NMSy82NAorICAqICAgICBAYXJnIFJDQ19TWVNDTEtfRGl2MTI4OiBBSEIgY2xvY2sgPSBTWVNDTEsvMTI4CisgICogICAgIEBhcmcgUkNDX1NZU0NMS19EaXYyNTY6IEFIQiBjbG9jayA9IFNZU0NMSy8yNTYKKyAgKiAgICAgQGFyZyBSQ0NfU1lTQ0xLX0RpdjUxMjogQUhCIGNsb2NrID0gU1lTQ0xLLzUxMgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBSQ0NfSENMS0NvbmZpZyh1aW50MzJfdCBSQ0NfU1lTQ0xLKQoreworICB1aW50MzJfdCB0bXByZWcgPSAwOworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfUkNDX0hDTEsoUkNDX1NZU0NMSykpOworICB0bXByZWcgPSBSQ0MtPkNGR1I7CisgIC8qIENsZWFyIEhQUkVbMzowXSBiaXRzICovCisgIHRtcHJlZyAmPSBDRkdSX0hQUkVfUmVzZXRfTWFzazsKKyAgLyogU2V0IEhQUkVbMzowXSBiaXRzIGFjY29yZGluZyB0byBSQ0NfU1lTQ0xLIHZhbHVlICovCisgIHRtcHJlZyB8PSBSQ0NfU1lTQ0xLOworICAvKiBTdG9yZSB0aGUgbmV3IHZhbHVlICovCisgIFJDQy0+Q0ZHUiA9IHRtcHJlZzsKK30KKworLyoqCisgICogQGJyaWVmICBDb25maWd1cmVzIHRoZSBMb3cgU3BlZWQgQVBCIGNsb2NrIChQQ0xLMSkuCisgICogQHBhcmFtICBSQ0NfSENMSzogZGVmaW5lcyB0aGUgQVBCMSBjbG9jayBkaXZpZGVyLiBUaGlzIGNsb2NrIGlzIGRlcml2ZWQgZnJvbSAKKyAgKiAgIHRoZSBBSEIgY2xvY2sgKEhDTEspLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBSQ0NfSENMS19EaXYxOiBBUEIxIGNsb2NrID0gSENMSworICAqICAgICBAYXJnIFJDQ19IQ0xLX0RpdjI6IEFQQjEgY2xvY2sgPSBIQ0xLLzIKKyAgKiAgICAgQGFyZyBSQ0NfSENMS19EaXY0OiBBUEIxIGNsb2NrID0gSENMSy80CisgICogICAgIEBhcmcgUkNDX0hDTEtfRGl2ODogQVBCMSBjbG9jayA9IEhDTEsvOAorICAqICAgICBAYXJnIFJDQ19IQ0xLX0RpdjE2OiBBUEIxIGNsb2NrID0gSENMSy8xNgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBSQ0NfUENMSzFDb25maWcodWludDMyX3QgUkNDX0hDTEspCit7CisgIHVpbnQzMl90IHRtcHJlZyA9IDA7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19SQ0NfUENMSyhSQ0NfSENMSykpOworICB0bXByZWcgPSBSQ0MtPkNGR1I7CisgIC8qIENsZWFyIFBQUkUxWzI6MF0gYml0cyAqLworICB0bXByZWcgJj0gQ0ZHUl9QUFJFMV9SZXNldF9NYXNrOworICAvKiBTZXQgUFBSRTFbMjowXSBiaXRzIGFjY29yZGluZyB0byBSQ0NfSENMSyB2YWx1ZSAqLworICB0bXByZWcgfD0gUkNDX0hDTEs7CisgIC8qIFN0b3JlIHRoZSBuZXcgdmFsdWUgKi8KKyAgUkNDLT5DRkdSID0gdG1wcmVnOworfQorCisvKioKKyAgKiBAYnJpZWYgIENvbmZpZ3VyZXMgdGhlIEhpZ2ggU3BlZWQgQVBCIGNsb2NrIChQQ0xLMikuCisgICogQHBhcmFtICBSQ0NfSENMSzogZGVmaW5lcyB0aGUgQVBCMiBjbG9jayBkaXZpZGVyLiBUaGlzIGNsb2NrIGlzIGRlcml2ZWQgZnJvbSAKKyAgKiAgIHRoZSBBSEIgY2xvY2sgKEhDTEspLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBSQ0NfSENMS19EaXYxOiBBUEIyIGNsb2NrID0gSENMSworICAqICAgICBAYXJnIFJDQ19IQ0xLX0RpdjI6IEFQQjIgY2xvY2sgPSBIQ0xLLzIKKyAgKiAgICAgQGFyZyBSQ0NfSENMS19EaXY0OiBBUEIyIGNsb2NrID0gSENMSy80CisgICogICAgIEBhcmcgUkNDX0hDTEtfRGl2ODogQVBCMiBjbG9jayA9IEhDTEsvOAorICAqICAgICBAYXJnIFJDQ19IQ0xLX0RpdjE2OiBBUEIyIGNsb2NrID0gSENMSy8xNgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBSQ0NfUENMSzJDb25maWcodWludDMyX3QgUkNDX0hDTEspCit7CisgIHVpbnQzMl90IHRtcHJlZyA9IDA7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19SQ0NfUENMSyhSQ0NfSENMSykpOworICB0bXByZWcgPSBSQ0MtPkNGR1I7CisgIC8qIENsZWFyIFBQUkUyWzI6MF0gYml0cyAqLworICB0bXByZWcgJj0gQ0ZHUl9QUFJFMl9SZXNldF9NYXNrOworICAvKiBTZXQgUFBSRTJbMjowXSBiaXRzIGFjY29yZGluZyB0byBSQ0NfSENMSyB2YWx1ZSAqLworICB0bXByZWcgfD0gUkNDX0hDTEsgPDwgMzsKKyAgLyogU3RvcmUgdGhlIG5ldyB2YWx1ZSAqLworICBSQ0MtPkNGR1IgPSB0bXByZWc7Cit9CisKKy8qKgorICAqIEBicmllZiAgRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgc3BlY2lmaWVkIFJDQyBpbnRlcnJ1cHRzLgorICAqIEBwYXJhbSAgUkNDX0lUOiBzcGVjaWZpZXMgdGhlIFJDQyBpbnRlcnJ1cHQgc291cmNlcyB0byBiZSBlbmFibGVkIG9yIGRpc2FibGVkLgorICAqIAorICAqICAgRm9yIEBiIFNUTTMyX0Nvbm5lY3Rpdml0eV9saW5lX2RldmljZXMsIHRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhbnkgY29tYmluYXRpb24KKyAgKiAgIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzICAgICAgICAKKyAgKiAgICAgQGFyZyBSQ0NfSVRfTFNJUkRZOiBMU0kgcmVhZHkgaW50ZXJydXB0CisgICogICAgIEBhcmcgUkNDX0lUX0xTRVJEWTogTFNFIHJlYWR5IGludGVycnVwdAorICAqICAgICBAYXJnIFJDQ19JVF9IU0lSRFk6IEhTSSByZWFkeSBpbnRlcnJ1cHQKKyAgKiAgICAgQGFyZyBSQ0NfSVRfSFNFUkRZOiBIU0UgcmVhZHkgaW50ZXJydXB0CisgICogICAgIEBhcmcgUkNDX0lUX1BMTFJEWTogUExMIHJlYWR5IGludGVycnVwdAorICAqICAgICBAYXJnIFJDQ19JVF9QTEwyUkRZOiBQTEwyIHJlYWR5IGludGVycnVwdAorICAqICAgICBAYXJnIFJDQ19JVF9QTEwzUkRZOiBQTEwzIHJlYWR5IGludGVycnVwdAorICAqIAorICAqICAgRm9yIEBiIG90aGVyX1NUTTMyX2RldmljZXMsIHRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhbnkgY29tYmluYXRpb24gb2YgdGhlIAorICAqICAgZm9sbG93aW5nIHZhbHVlcyAgICAgICAgCisgICogICAgIEBhcmcgUkNDX0lUX0xTSVJEWTogTFNJIHJlYWR5IGludGVycnVwdAorICAqICAgICBAYXJnIFJDQ19JVF9MU0VSRFk6IExTRSByZWFkeSBpbnRlcnJ1cHQKKyAgKiAgICAgQGFyZyBSQ0NfSVRfSFNJUkRZOiBIU0kgcmVhZHkgaW50ZXJydXB0CisgICogICAgIEBhcmcgUkNDX0lUX0hTRVJEWTogSFNFIHJlYWR5IGludGVycnVwdAorICAqICAgICBAYXJnIFJDQ19JVF9QTExSRFk6IFBMTCByZWFkeSBpbnRlcnJ1cHQKKyAgKiAgICAgICAKKyAgKiBAcGFyYW0gIE5ld1N0YXRlOiBuZXcgc3RhdGUgb2YgdGhlIHNwZWNpZmllZCBSQ0MgaW50ZXJydXB0cy4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZTogRU5BQkxFIG9yIERJU0FCTEUuCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFJDQ19JVENvbmZpZyh1aW50OF90IFJDQ19JVCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfUkNDX0lUKFJDQ19JVCkpOworICBhc3NlcnRfcGFyYW0oSVNfRlVOQ1RJT05BTF9TVEFURShOZXdTdGF0ZSkpOworICBpZiAoTmV3U3RhdGUgIT0gRElTQUJMRSkKKyAgeworICAgIC8qIFBlcmZvcm0gQnl0ZSBhY2Nlc3MgdG8gUkNDX0NJUiBiaXRzIHRvIGVuYWJsZSB0aGUgc2VsZWN0ZWQgaW50ZXJydXB0cyAqLworICAgICooX19JTyB1aW50OF90ICopIENJUl9CWVRFMl9BRERSRVNTIHw9IFJDQ19JVDsKKyAgfQorICBlbHNlCisgIHsKKyAgICAvKiBQZXJmb3JtIEJ5dGUgYWNjZXNzIHRvIFJDQ19DSVIgYml0cyB0byBkaXNhYmxlIHRoZSBzZWxlY3RlZCBpbnRlcnJ1cHRzICovCisgICAgKihfX0lPIHVpbnQ4X3QgKikgQ0lSX0JZVEUyX0FERFJFU1MgJj0gKHVpbnQ4X3QpflJDQ19JVDsKKyAgfQorfQorCisjaWZuZGVmIFNUTTMyRjEwWF9DTAorLyoqCisgICogQGJyaWVmICBDb25maWd1cmVzIHRoZSBVU0IgY2xvY2sgKFVTQkNMSykuCisgICogQHBhcmFtICBSQ0NfVVNCQ0xLU291cmNlOiBzcGVjaWZpZXMgdGhlIFVTQiBjbG9jayBzb3VyY2UuIFRoaXMgY2xvY2sgaXMgCisgICogICBkZXJpdmVkIGZyb20gdGhlIFBMTCBvdXRwdXQuCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIFJDQ19VU0JDTEtTb3VyY2VfUExMQ0xLXzFEaXY1OiBQTEwgY2xvY2sgZGl2aWRlZCBieSAxLDUgc2VsZWN0ZWQgYXMgVVNCIAorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb2NrIHNvdXJjZQorICAqICAgICBAYXJnIFJDQ19VU0JDTEtTb3VyY2VfUExMQ0xLX0RpdjE6IFBMTCBjbG9jayBzZWxlY3RlZCBhcyBVU0IgY2xvY2sgc291cmNlCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFJDQ19VU0JDTEtDb25maWcodWludDMyX3QgUkNDX1VTQkNMS1NvdXJjZSkKK3sKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX1JDQ19VU0JDTEtfU09VUkNFKFJDQ19VU0JDTEtTb3VyY2UpKTsKKworICAqKF9fSU8gdWludDMyX3QgKikgQ0ZHUl9VU0JQUkVfQkIgPSBSQ0NfVVNCQ0xLU291cmNlOworfQorI2Vsc2UKKy8qKgorICAqIEBicmllZiAgQ29uZmlndXJlcyB0aGUgVVNCIE9URyBGUyBjbG9jayAoT1RHRlNDTEspLgorICAqICAgVGhpcyBmdW5jdGlvbiBhcHBsaWVzIG9ubHkgdG8gU1RNMzIgQ29ubmVjdGl2aXR5IGxpbmUgZGV2aWNlcy4KKyAgKiBAcGFyYW0gIFJDQ19PVEdGU0NMS1NvdXJjZTogc3BlY2lmaWVzIHRoZSBVU0IgT1RHIEZTIGNsb2NrIHNvdXJjZS4KKyAgKiAgIFRoaXMgY2xvY2sgaXMgZGVyaXZlZCBmcm9tIHRoZSBQTEwgb3V0cHV0LgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyAgUkNDX09UR0ZTQ0xLU291cmNlX1BMTFZDT19EaXYzOiBQTEwgVkNPIGNsb2NrIGRpdmlkZWQgYnkgMiBzZWxlY3RlZCBhcyBVU0IgT1RHIEZTIGNsb2NrIHNvdXJjZQorICAqICAgICBAYXJnICBSQ0NfT1RHRlNDTEtTb3VyY2VfUExMVkNPX0RpdjI6IFBMTCBWQ08gY2xvY2sgZGl2aWRlZCBieSAyIHNlbGVjdGVkIGFzIFVTQiBPVEcgRlMgY2xvY2sgc291cmNlCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFJDQ19PVEdGU0NMS0NvbmZpZyh1aW50MzJfdCBSQ0NfT1RHRlNDTEtTb3VyY2UpCit7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19SQ0NfT1RHRlNDTEtfU09VUkNFKFJDQ19PVEdGU0NMS1NvdXJjZSkpOworCisgICooX19JTyB1aW50MzJfdCAqKSBDRkdSX09UR0ZTUFJFX0JCID0gUkNDX09UR0ZTQ0xLU291cmNlOworfQorI2VuZGlmIC8qIFNUTTMyRjEwWF9DTCAqLyAKKworLyoqCisgICogQGJyaWVmICBDb25maWd1cmVzIHRoZSBBREMgY2xvY2sgKEFEQ0NMSykuCisgICogQHBhcmFtICBSQ0NfUENMSzI6IGRlZmluZXMgdGhlIEFEQyBjbG9jayBkaXZpZGVyLiBUaGlzIGNsb2NrIGlzIGRlcml2ZWQgZnJvbSAKKyAgKiAgIHRoZSBBUEIyIGNsb2NrIChQQ0xLMikuCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIFJDQ19QQ0xLMl9EaXYyOiBBREMgY2xvY2sgPSBQQ0xLMi8yCisgICogICAgIEBhcmcgUkNDX1BDTEsyX0RpdjQ6IEFEQyBjbG9jayA9IFBDTEsyLzQKKyAgKiAgICAgQGFyZyBSQ0NfUENMSzJfRGl2NjogQURDIGNsb2NrID0gUENMSzIvNgorICAqICAgICBAYXJnIFJDQ19QQ0xLMl9EaXY4OiBBREMgY2xvY2sgPSBQQ0xLMi84CisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFJDQ19BRENDTEtDb25maWcodWludDMyX3QgUkNDX1BDTEsyKQoreworICB1aW50MzJfdCB0bXByZWcgPSAwOworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfUkNDX0FEQ0NMSyhSQ0NfUENMSzIpKTsKKyAgdG1wcmVnID0gUkNDLT5DRkdSOworICAvKiBDbGVhciBBRENQUkVbMTowXSBiaXRzICovCisgIHRtcHJlZyAmPSBDRkdSX0FEQ1BSRV9SZXNldF9NYXNrOworICAvKiBTZXQgQURDUFJFWzE6MF0gYml0cyBhY2NvcmRpbmcgdG8gUkNDX1BDTEsyIHZhbHVlICovCisgIHRtcHJlZyB8PSBSQ0NfUENMSzI7CisgIC8qIFN0b3JlIHRoZSBuZXcgdmFsdWUgKi8KKyAgUkNDLT5DRkdSID0gdG1wcmVnOworfQorCisjaWZkZWYgU1RNMzJGMTBYX0NMCisvKioKKyAgKiBAYnJpZWYgIENvbmZpZ3VyZXMgdGhlIEkyUzIgY2xvY2sgc291cmNlKEkyUzJDTEspLgorICAqIEBub3RlCisgICogICAtIFRoaXMgZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQgYmVmb3JlIGVuYWJsaW5nIEkyUzIgQVBCIGNsb2NrLgorICAqICAgLSBUaGlzIGZ1bmN0aW9uIGFwcGxpZXMgb25seSB0byBTVE0zMiBDb25uZWN0aXZpdHkgbGluZSBkZXZpY2VzLgorICAqIEBwYXJhbSAgUkNDX0kyUzJDTEtTb3VyY2U6IHNwZWNpZmllcyB0aGUgSTJTMiBjbG9jayBzb3VyY2UuCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIFJDQ19JMlMyQ0xLU291cmNlX1NZU0NMSzogc3lzdGVtIGNsb2NrIHNlbGVjdGVkIGFzIEkyUzIgY2xvY2sgZW50cnkKKyAgKiAgICAgQGFyZyBSQ0NfSTJTMkNMS1NvdXJjZV9QTEwzX1ZDTzogUExMMyBWQ08gY2xvY2sgc2VsZWN0ZWQgYXMgSTJTMiBjbG9jayBlbnRyeQorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBSQ0NfSTJTMkNMS0NvbmZpZyh1aW50MzJfdCBSQ0NfSTJTMkNMS1NvdXJjZSkKK3sKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX1JDQ19JMlMyQ0xLX1NPVVJDRShSQ0NfSTJTMkNMS1NvdXJjZSkpOworCisgICooX19JTyB1aW50MzJfdCAqKSBDRkdSMl9JMlMyU1JDX0JCID0gUkNDX0kyUzJDTEtTb3VyY2U7Cit9CisKKy8qKgorICAqIEBicmllZiAgQ29uZmlndXJlcyB0aGUgSTJTMyBjbG9jayBzb3VyY2UoSTJTMkNMSykuCisgICogQG5vdGUKKyAgKiAgIC0gVGhpcyBmdW5jdGlvbiBtdXN0IGJlIGNhbGxlZCBiZWZvcmUgZW5hYmxpbmcgSTJTMyBBUEIgY2xvY2suCisgICogICAtIFRoaXMgZnVuY3Rpb24gYXBwbGllcyBvbmx5IHRvIFNUTTMyIENvbm5lY3Rpdml0eSBsaW5lIGRldmljZXMuCisgICogQHBhcmFtICBSQ0NfSTJTM0NMS1NvdXJjZTogc3BlY2lmaWVzIHRoZSBJMlMzIGNsb2NrIHNvdXJjZS4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICAgIEBhcmcgUkNDX0kyUzNDTEtTb3VyY2VfU1lTQ0xLOiBzeXN0ZW0gY2xvY2sgc2VsZWN0ZWQgYXMgSTJTMyBjbG9jayBlbnRyeQorICAqICAgICBAYXJnIFJDQ19JMlMzQ0xLU291cmNlX1BMTDNfVkNPOiBQTEwzIFZDTyBjbG9jayBzZWxlY3RlZCBhcyBJMlMzIGNsb2NrIGVudHJ5CisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFJDQ19JMlMzQ0xLQ29uZmlnKHVpbnQzMl90IFJDQ19JMlMzQ0xLU291cmNlKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfUkNDX0kyUzNDTEtfU09VUkNFKFJDQ19JMlMzQ0xLU291cmNlKSk7CisKKyAgKihfX0lPIHVpbnQzMl90ICopIENGR1IyX0kyUzNTUkNfQkIgPSBSQ0NfSTJTM0NMS1NvdXJjZTsKK30KKyNlbmRpZiAvKiBTVE0zMkYxMFhfQ0wgKi8KKworLyoqCisgICogQGJyaWVmICBDb25maWd1cmVzIHRoZSBFeHRlcm5hbCBMb3cgU3BlZWQgb3NjaWxsYXRvciAoTFNFKS4KKyAgKiBAcGFyYW0gIFJDQ19MU0U6IHNwZWNpZmllcyB0aGUgbmV3IHN0YXRlIG9mIHRoZSBMU0UuCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIFJDQ19MU0VfT0ZGOiBMU0Ugb3NjaWxsYXRvciBPRkYKKyAgKiAgICAgQGFyZyBSQ0NfTFNFX09OOiBMU0Ugb3NjaWxsYXRvciBPTgorICAqICAgICBAYXJnIFJDQ19MU0VfQnlwYXNzOiBMU0Ugb3NjaWxsYXRvciBieXBhc3NlZCB3aXRoIGV4dGVybmFsIGNsb2NrCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFJDQ19MU0VDb25maWcodWludDhfdCBSQ0NfTFNFKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfUkNDX0xTRShSQ0NfTFNFKSk7CisgIC8qIFJlc2V0IExTRU9OIGFuZCBMU0VCWVAgYml0cyBiZWZvcmUgY29uZmlndXJpbmcgdGhlIExTRSAtLS0tLS0tLS0tLS0tLS0tLS0qLworICAvKiBSZXNldCBMU0VPTiBiaXQgKi8KKyAgKihfX0lPIHVpbnQ4X3QgKikgQkRDUl9BRERSRVNTID0gUkNDX0xTRV9PRkY7CisgIC8qIFJlc2V0IExTRUJZUCBiaXQgKi8KKyAgKihfX0lPIHVpbnQ4X3QgKikgQkRDUl9BRERSRVNTID0gUkNDX0xTRV9PRkY7CisgIC8qIENvbmZpZ3VyZSBMU0UgKFJDQ19MU0VfT0ZGIGlzIGFscmVhZHkgY292ZXJlZCBieSB0aGUgY29kZSBzZWN0aW9uIGFib3ZlKSAqLworICBzd2l0Y2goUkNDX0xTRSkKKyAgeworICAgIGNhc2UgUkNDX0xTRV9PTjoKKyAgICAgIC8qIFNldCBMU0VPTiBiaXQgKi8KKyAgICAgICooX19JTyB1aW50OF90ICopIEJEQ1JfQUREUkVTUyA9IFJDQ19MU0VfT047CisgICAgICBicmVhazsKKyAgICAgIAorICAgIGNhc2UgUkNDX0xTRV9CeXBhc3M6CisgICAgICAvKiBTZXQgTFNFQllQIGFuZCBMU0VPTiBiaXRzICovCisgICAgICAqKF9fSU8gdWludDhfdCAqKSBCRENSX0FERFJFU1MgPSBSQ0NfTFNFX0J5cGFzcyB8IFJDQ19MU0VfT047CisgICAgICBicmVhazsgICAgICAgICAgICAKKyAgICAgIAorICAgIGRlZmF1bHQ6CisgICAgICBicmVhazsgICAgICAKKyAgfQorfQorCisvKioKKyAgKiBAYnJpZWYgIEVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIEludGVybmFsIExvdyBTcGVlZCBvc2NpbGxhdG9yIChMU0kpLgorICAqIEBub3RlICAgTFNJIGNhbiBub3QgYmUgZGlzYWJsZWQgaWYgdGhlIElXREcgaXMgcnVubmluZy4KKyAgKiBAcGFyYW0gIE5ld1N0YXRlOiBuZXcgc3RhdGUgb2YgdGhlIExTSS4gVGhpcyBwYXJhbWV0ZXIgY2FuIGJlOiBFTkFCTEUgb3IgRElTQUJMRS4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgUkNDX0xTSUNtZChGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpCit7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19GVU5DVElPTkFMX1NUQVRFKE5ld1N0YXRlKSk7CisgICooX19JTyB1aW50MzJfdCAqKSBDU1JfTFNJT05fQkIgPSAodWludDMyX3QpTmV3U3RhdGU7Cit9CisKKy8qKgorICAqIEBicmllZiAgQ29uZmlndXJlcyB0aGUgUlRDIGNsb2NrIChSVENDTEspLgorICAqIEBub3RlICAgT25jZSB0aGUgUlRDIGNsb2NrIGlzIHNlbGVjdGVkIGl0IGNhbid0IGJlIGNoYW5nZWQgdW5sZXNzIHRoZSBCYWNrdXAgZG9tYWluIGlzIHJlc2V0LgorICAqIEBwYXJhbSAgUkNDX1JUQ0NMS1NvdXJjZTogc3BlY2lmaWVzIHRoZSBSVEMgY2xvY2sgc291cmNlLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBSQ0NfUlRDQ0xLU291cmNlX0xTRTogTFNFIHNlbGVjdGVkIGFzIFJUQyBjbG9jaworICAqICAgICBAYXJnIFJDQ19SVENDTEtTb3VyY2VfTFNJOiBMU0kgc2VsZWN0ZWQgYXMgUlRDIGNsb2NrCisgICogICAgIEBhcmcgUkNDX1JUQ0NMS1NvdXJjZV9IU0VfRGl2MTI4OiBIU0UgY2xvY2sgZGl2aWRlZCBieSAxMjggc2VsZWN0ZWQgYXMgUlRDIGNsb2NrCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFJDQ19SVENDTEtDb25maWcodWludDMyX3QgUkNDX1JUQ0NMS1NvdXJjZSkKK3sKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX1JDQ19SVENDTEtfU09VUkNFKFJDQ19SVENDTEtTb3VyY2UpKTsKKyAgLyogU2VsZWN0IHRoZSBSVEMgY2xvY2sgc291cmNlICovCisgIFJDQy0+QkRDUiB8PSBSQ0NfUlRDQ0xLU291cmNlOworfQorCisvKioKKyAgKiBAYnJpZWYgIEVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIFJUQyBjbG9jay4KKyAgKiBAbm90ZSAgIFRoaXMgZnVuY3Rpb24gbXVzdCBiZSB1c2VkIG9ubHkgYWZ0ZXIgdGhlIFJUQyBjbG9jayB3YXMgc2VsZWN0ZWQgdXNpbmcgdGhlIFJDQ19SVENDTEtDb25maWcgZnVuY3Rpb24uCisgICogQHBhcmFtICBOZXdTdGF0ZTogbmV3IHN0YXRlIG9mIHRoZSBSVEMgY2xvY2suIFRoaXMgcGFyYW1ldGVyIGNhbiBiZTogRU5BQkxFIG9yIERJU0FCTEUuCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFJDQ19SVENDTEtDbWQoRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfRlVOQ1RJT05BTF9TVEFURShOZXdTdGF0ZSkpOworICAqKF9fSU8gdWludDMyX3QgKikgQkRDUl9SVENFTl9CQiA9ICh1aW50MzJfdClOZXdTdGF0ZTsKK30KKworLyoqCisgICogQGJyaWVmICBSZXR1cm5zIHRoZSBmcmVxdWVuY2llcyBvZiBkaWZmZXJlbnQgb24gY2hpcCBjbG9ja3MuCisgICogQHBhcmFtICBSQ0NfQ2xvY2tzOiBwb2ludGVyIHRvIGEgUkNDX0Nsb2Nrc1R5cGVEZWYgc3RydWN0dXJlIHdoaWNoIHdpbGwgaG9sZAorICAqICAgICAgICAgdGhlIGNsb2NrcyBmcmVxdWVuY2llcy4KKyAgKiBAbm90ZSAgIFRoZSByZXN1bHQgb2YgdGhpcyBmdW5jdGlvbiBjb3VsZCBiZSBub3QgY29ycmVjdCB3aGVuIHVzaW5nIAorICAqICAgICAgICAgZnJhY3Rpb25hbCB2YWx1ZSBmb3IgSFNFIGNyeXN0YWwuICAKKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgUkNDX0dldENsb2Nrc0ZyZXEoUkNDX0Nsb2Nrc1R5cGVEZWYqIFJDQ19DbG9ja3MpCit7CisgIHVpbnQzMl90IHRtcCA9IDAsIHBsbG11bGwgPSAwLCBwbGxzb3VyY2UgPSAwLCBwcmVzYyA9IDA7CisKKyNpZmRlZiAgU1RNMzJGMTBYX0NMCisgIHVpbnQzMl90IHByZWRpdjFzb3VyY2UgPSAwLCBwcmVkaXYxZmFjdG9yID0gMCwgcHJlZGl2MmZhY3RvciA9IDAsIHBsbDJtdWxsID0gMDsKKyNlbmRpZiAvKiBTVE0zMkYxMFhfQ0wgKi8KKworI2lmIGRlZmluZWQgKFNUTTMyRjEwWF9MRF9WTCkgfHwgZGVmaW5lZCAoU1RNMzJGMTBYX01EX1ZMKSB8fCBkZWZpbmVkIChTVE0zMkYxMFhfSERfVkwpCisgIHVpbnQzMl90IHByZWRpdjFmYWN0b3IgPSAwOworI2VuZGlmCisgICAgCisgIC8qIEdldCBTWVNDTEsgc291cmNlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworICB0bXAgPSBSQ0MtPkNGR1IgJiBDRkdSX1NXU19NYXNrOworICAKKyAgc3dpdGNoICh0bXApCisgIHsKKyAgICBjYXNlIDB4MDA6ICAvKiBIU0kgdXNlZCBhcyBzeXN0ZW0gY2xvY2sgKi8KKyAgICAgIFJDQ19DbG9ja3MtPlNZU0NMS19GcmVxdWVuY3kgPSBIU0lfVkFMVUU7CisgICAgICBicmVhazsKKyAgICBjYXNlIDB4MDQ6ICAvKiBIU0UgdXNlZCBhcyBzeXN0ZW0gY2xvY2sgKi8KKyAgICAgIFJDQ19DbG9ja3MtPlNZU0NMS19GcmVxdWVuY3kgPSBIU0VfVkFMVUU7CisgICAgICBicmVhazsKKyAgICBjYXNlIDB4MDg6ICAvKiBQTEwgdXNlZCBhcyBzeXN0ZW0gY2xvY2sgKi8KKworICAgICAgLyogR2V0IFBMTCBjbG9jayBzb3VyY2UgYW5kIG11bHRpcGxpY2F0aW9uIGZhY3RvciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyAgICAgIHBsbG11bGwgPSBSQ0MtPkNGR1IgJiBDRkdSX1BMTE11bGxfTWFzazsKKyAgICAgIHBsbHNvdXJjZSA9IFJDQy0+Q0ZHUiAmIENGR1JfUExMU1JDX01hc2s7CisgICAgICAKKyNpZm5kZWYgU1RNMzJGMTBYX0NMICAgICAgCisgICAgICBwbGxtdWxsID0gKCBwbGxtdWxsID4+IDE4KSArIDI7CisgICAgICAKKyAgICAgIGlmIChwbGxzb3VyY2UgPT0gMHgwMCkKKyAgICAgIHsvKiBIU0kgb3NjaWxsYXRvciBjbG9jayBkaXZpZGVkIGJ5IDIgc2VsZWN0ZWQgYXMgUExMIGNsb2NrIGVudHJ5ICovCisgICAgICAgIFJDQ19DbG9ja3MtPlNZU0NMS19GcmVxdWVuY3kgPSAoSFNJX1ZBTFVFID4+IDEpICogcGxsbXVsbDsKKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgIHsKKyAjaWYgZGVmaW5lZCAoU1RNMzJGMTBYX0xEX1ZMKSB8fCBkZWZpbmVkIChTVE0zMkYxMFhfTURfVkwpIHx8IGRlZmluZWQgKFNUTTMyRjEwWF9IRF9WTCkKKyAgICAgICBwcmVkaXYxZmFjdG9yID0gKFJDQy0+Q0ZHUjIgJiBDRkdSMl9QUkVESVYxKSArIDE7CisgICAgICAgLyogSFNFIG9zY2lsbGF0b3IgY2xvY2sgc2VsZWN0ZWQgYXMgUFJFRElWMSBjbG9jayBlbnRyeSAqLworICAgICAgIFJDQ19DbG9ja3MtPlNZU0NMS19GcmVxdWVuY3kgPSAoSFNFX1ZBTFVFIC8gcHJlZGl2MWZhY3RvcikgKiBwbGxtdWxsOyAKKyAjZWxzZQorICAgICAgICAvKiBIU0Ugc2VsZWN0ZWQgYXMgUExMIGNsb2NrIGVudHJ5ICovCisgICAgICAgIGlmICgoUkNDLT5DRkdSICYgQ0ZHUl9QTExYVFBSRV9NYXNrKSAhPSAodWludDMyX3QpUkVTRVQpCisgICAgICAgIHsvKiBIU0Ugb3NjaWxsYXRvciBjbG9jayBkaXZpZGVkIGJ5IDIgKi8KKyAgICAgICAgICBSQ0NfQ2xvY2tzLT5TWVNDTEtfRnJlcXVlbmN5ID0gKEhTRV9WQUxVRSA+PiAxKSAqIHBsbG11bGw7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgUkNDX0Nsb2Nrcy0+U1lTQ0xLX0ZyZXF1ZW5jeSA9IEhTRV9WQUxVRSAqIHBsbG11bGw7CisgICAgICAgIH0KKyAjZW5kaWYKKyAgICAgIH0KKyNlbHNlCisgICAgICBwbGxtdWxsID0gcGxsbXVsbCA+PiAxODsKKyAgICAgIAorICAgICAgaWYgKHBsbG11bGwgIT0gMHgwRCkKKyAgICAgIHsKKyAgICAgICAgIHBsbG11bGwgKz0gMjsKKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgIHsgLyogUExMIG11bHRpcGxpY2F0aW9uIGZhY3RvciA9IFBMTCBpbnB1dCBjbG9jayAqIDYuNSAqLworICAgICAgICBwbGxtdWxsID0gMTMgLyAyOyAKKyAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgaWYgKHBsbHNvdXJjZSA9PSAweDAwKQorICAgICAgey8qIEhTSSBvc2NpbGxhdG9yIGNsb2NrIGRpdmlkZWQgYnkgMiBzZWxlY3RlZCBhcyBQTEwgY2xvY2sgZW50cnkgKi8KKyAgICAgICAgUkNDX0Nsb2Nrcy0+U1lTQ0xLX0ZyZXF1ZW5jeSA9IChIU0lfVkFMVUUgPj4gMSkgKiBwbGxtdWxsOworICAgICAgfQorICAgICAgZWxzZQorICAgICAgey8qIFBSRURJVjEgc2VsZWN0ZWQgYXMgUExMIGNsb2NrIGVudHJ5ICovCisgICAgICAgIAorICAgICAgICAvKiBHZXQgUFJFRElWMSBjbG9jayBzb3VyY2UgYW5kIGRpdmlzaW9uIGZhY3RvciAqLworICAgICAgICBwcmVkaXYxc291cmNlID0gUkNDLT5DRkdSMiAmIENGR1IyX1BSRURJVjFTUkM7CisgICAgICAgIHByZWRpdjFmYWN0b3IgPSAoUkNDLT5DRkdSMiAmIENGR1IyX1BSRURJVjEpICsgMTsKKyAgICAgICAgCisgICAgICAgIGlmIChwcmVkaXYxc291cmNlID09IDApCisgICAgICAgIHsgLyogSFNFIG9zY2lsbGF0b3IgY2xvY2sgc2VsZWN0ZWQgYXMgUFJFRElWMSBjbG9jayBlbnRyeSAqLworICAgICAgICAgIFJDQ19DbG9ja3MtPlNZU0NMS19GcmVxdWVuY3kgPSAoSFNFX1ZBTFVFIC8gcHJlZGl2MWZhY3RvcikgKiBwbGxtdWxsOyAgICAgICAgICAKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsvKiBQTEwyIGNsb2NrIHNlbGVjdGVkIGFzIFBSRURJVjEgY2xvY2sgZW50cnkgKi8KKyAgICAgICAgICAKKyAgICAgICAgICAvKiBHZXQgUFJFRElWMiBkaXZpc2lvbiBmYWN0b3IgYW5kIFBMTDIgbXVsdGlwbGljYXRpb24gZmFjdG9yICovCisgICAgICAgICAgcHJlZGl2MmZhY3RvciA9ICgoUkNDLT5DRkdSMiAmIENGR1IyX1BSRURJVjIpID4+IDQpICsgMTsKKyAgICAgICAgICBwbGwybXVsbCA9ICgoUkNDLT5DRkdSMiAmIENGR1IyX1BMTDJNVUwpID4+IDggKSArIDI7IAorICAgICAgICAgIFJDQ19DbG9ja3MtPlNZU0NMS19GcmVxdWVuY3kgPSAoKChIU0VfVkFMVUUgLyBwcmVkaXYyZmFjdG9yKSAqIHBsbDJtdWxsKSAvIHByZWRpdjFmYWN0b3IpICogcGxsbXVsbDsgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIH0KKyAgICAgIH0KKyNlbmRpZiAvKiBTVE0zMkYxMFhfQ0wgKi8gCisgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICBSQ0NfQ2xvY2tzLT5TWVNDTEtfRnJlcXVlbmN5ID0gSFNJX1ZBTFVFOworICAgICAgYnJlYWs7CisgIH0KKworICAvKiBDb21wdXRlIEhDTEssIFBDTEsxLCBQQ0xLMiBhbmQgQURDQ0xLIGNsb2NrcyBmcmVxdWVuY2llcyAtLS0tLS0tLS0tLS0tLS0tKi8KKyAgLyogR2V0IEhDTEsgcHJlc2NhbGVyICovCisgIHRtcCA9IFJDQy0+Q0ZHUiAmIENGR1JfSFBSRV9TZXRfTWFzazsKKyAgdG1wID0gdG1wID4+IDQ7CisgIHByZXNjID0gQVBCQUhCUHJlc2NUYWJsZVt0bXBdOworICAvKiBIQ0xLIGNsb2NrIGZyZXF1ZW5jeSAqLworICBSQ0NfQ2xvY2tzLT5IQ0xLX0ZyZXF1ZW5jeSA9IFJDQ19DbG9ja3MtPlNZU0NMS19GcmVxdWVuY3kgPj4gcHJlc2M7CisgIC8qIEdldCBQQ0xLMSBwcmVzY2FsZXIgKi8KKyAgdG1wID0gUkNDLT5DRkdSICYgQ0ZHUl9QUFJFMV9TZXRfTWFzazsKKyAgdG1wID0gdG1wID4+IDg7CisgIHByZXNjID0gQVBCQUhCUHJlc2NUYWJsZVt0bXBdOworICAvKiBQQ0xLMSBjbG9jayBmcmVxdWVuY3kgKi8KKyAgUkNDX0Nsb2Nrcy0+UENMSzFfRnJlcXVlbmN5ID0gUkNDX0Nsb2Nrcy0+SENMS19GcmVxdWVuY3kgPj4gcHJlc2M7CisgIC8qIEdldCBQQ0xLMiBwcmVzY2FsZXIgKi8KKyAgdG1wID0gUkNDLT5DRkdSICYgQ0ZHUl9QUFJFMl9TZXRfTWFzazsKKyAgdG1wID0gdG1wID4+IDExOworICBwcmVzYyA9IEFQQkFIQlByZXNjVGFibGVbdG1wXTsKKyAgLyogUENMSzIgY2xvY2sgZnJlcXVlbmN5ICovCisgIFJDQ19DbG9ja3MtPlBDTEsyX0ZyZXF1ZW5jeSA9IFJDQ19DbG9ja3MtPkhDTEtfRnJlcXVlbmN5ID4+IHByZXNjOworICAvKiBHZXQgQURDQ0xLIHByZXNjYWxlciAqLworICB0bXAgPSBSQ0MtPkNGR1IgJiBDRkdSX0FEQ1BSRV9TZXRfTWFzazsKKyAgdG1wID0gdG1wID4+IDE0OworICBwcmVzYyA9IEFEQ1ByZXNjVGFibGVbdG1wXTsKKyAgLyogQURDQ0xLIGNsb2NrIGZyZXF1ZW5jeSAqLworICBSQ0NfQ2xvY2tzLT5BRENDTEtfRnJlcXVlbmN5ID0gUkNDX0Nsb2Nrcy0+UENMSzJfRnJlcXVlbmN5IC8gcHJlc2M7Cit9CisKKy8qKgorICAqIEBicmllZiAgRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgQUhCIHBlcmlwaGVyYWwgY2xvY2suCisgICogQHBhcmFtICBSQ0NfQUhCUGVyaXBoOiBzcGVjaWZpZXMgdGhlIEFIQiBwZXJpcGhlcmFsIHRvIGdhdGVzIGl0cyBjbG9jay4KKyAgKiAgIAorICAqICAgRm9yIEBiIFNUTTMyX0Nvbm5lY3Rpdml0eV9saW5lX2RldmljZXMsIHRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhbnkgY29tYmluYXRpb24KKyAgKiAgIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOiAgICAgICAgCisgICogICAgIEBhcmcgUkNDX0FIQlBlcmlwaF9ETUExCisgICogICAgIEBhcmcgUkNDX0FIQlBlcmlwaF9ETUEyCisgICogICAgIEBhcmcgUkNDX0FIQlBlcmlwaF9TUkFNCisgICogICAgIEBhcmcgUkNDX0FIQlBlcmlwaF9GTElURgorICAqICAgICBAYXJnIFJDQ19BSEJQZXJpcGhfQ1JDCisgICogICAgIEBhcmcgUkNDX0FIQlBlcmlwaF9PVEdfRlMgICAgCisgICogICAgIEBhcmcgUkNDX0FIQlBlcmlwaF9FVEhfTUFDICAgCisgICogICAgIEBhcmcgUkNDX0FIQlBlcmlwaF9FVEhfTUFDX1R4CisgICogICAgIEBhcmcgUkNDX0FIQlBlcmlwaF9FVEhfTUFDX1J4CisgICogCisgICogICBGb3IgQGIgb3RoZXJfU1RNMzJfZGV2aWNlcywgdGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGFueSBjb21iaW5hdGlvbiBvZiB0aGUgCisgICogICBmb2xsb3dpbmcgdmFsdWVzOiAgICAgICAgCisgICogICAgIEBhcmcgUkNDX0FIQlBlcmlwaF9ETUExCisgICogICAgIEBhcmcgUkNDX0FIQlBlcmlwaF9ETUEyCisgICogICAgIEBhcmcgUkNDX0FIQlBlcmlwaF9TUkFNCisgICogICAgIEBhcmcgUkNDX0FIQlBlcmlwaF9GTElURgorICAqICAgICBAYXJnIFJDQ19BSEJQZXJpcGhfQ1JDCisgICogICAgIEBhcmcgUkNDX0FIQlBlcmlwaF9GU01DCisgICogICAgIEBhcmcgUkNDX0FIQlBlcmlwaF9TRElPCisgICogICAKKyAgKiBAbm90ZSBTUkFNIGFuZCBGTElURiBjbG9jayBjYW4gYmUgZGlzYWJsZWQgb25seSBkdXJpbmcgc2xlZXAgbW9kZS4KKyAgKiBAcGFyYW0gIE5ld1N0YXRlOiBuZXcgc3RhdGUgb2YgdGhlIHNwZWNpZmllZCBwZXJpcGhlcmFsIGNsb2NrLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlOiBFTkFCTEUgb3IgRElTQUJMRS4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgUkNDX0FIQlBlcmlwaENsb2NrQ21kKHVpbnQzMl90IFJDQ19BSEJQZXJpcGgsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSkKK3sKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX1JDQ19BSEJfUEVSSVBIKFJDQ19BSEJQZXJpcGgpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0ZVTkNUSU9OQUxfU1RBVEUoTmV3U3RhdGUpKTsKKworICBpZiAoTmV3U3RhdGUgIT0gRElTQUJMRSkKKyAgeworICAgIFJDQy0+QUhCRU5SIHw9IFJDQ19BSEJQZXJpcGg7CisgIH0KKyAgZWxzZQorICB7CisgICAgUkNDLT5BSEJFTlIgJj0gflJDQ19BSEJQZXJpcGg7CisgIH0KK30KKworLyoqCisgICogQGJyaWVmICBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBIaWdoIFNwZWVkIEFQQiAoQVBCMikgcGVyaXBoZXJhbCBjbG9jay4KKyAgKiBAcGFyYW0gIFJDQ19BUEIyUGVyaXBoOiBzcGVjaWZpZXMgdGhlIEFQQjIgcGVyaXBoZXJhbCB0byBnYXRlcyBpdHMgY2xvY2suCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYW55IGNvbWJpbmF0aW9uIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIFJDQ19BUEIyUGVyaXBoX0FGSU8sIFJDQ19BUEIyUGVyaXBoX0dQSU9BLCBSQ0NfQVBCMlBlcmlwaF9HUElPQiwKKyAgKiAgICAgICAgICBSQ0NfQVBCMlBlcmlwaF9HUElPQywgUkNDX0FQQjJQZXJpcGhfR1BJT0QsIFJDQ19BUEIyUGVyaXBoX0dQSU9FLAorICAqICAgICAgICAgIFJDQ19BUEIyUGVyaXBoX0dQSU9GLCBSQ0NfQVBCMlBlcmlwaF9HUElPRywgUkNDX0FQQjJQZXJpcGhfQURDMSwKKyAgKiAgICAgICAgICBSQ0NfQVBCMlBlcmlwaF9BREMyLCBSQ0NfQVBCMlBlcmlwaF9USU0xLCBSQ0NfQVBCMlBlcmlwaF9TUEkxLAorICAqICAgICAgICAgIFJDQ19BUEIyUGVyaXBoX1RJTTgsIFJDQ19BUEIyUGVyaXBoX1VTQVJUMSwgUkNDX0FQQjJQZXJpcGhfQURDMywKKyAgKiAgICAgICAgICBSQ0NfQVBCMlBlcmlwaF9USU0xNSwgUkNDX0FQQjJQZXJpcGhfVElNMTYsIFJDQ19BUEIyUGVyaXBoX1RJTTE3LAorICAqICAgICAgICAgIFJDQ19BUEIyUGVyaXBoX1RJTTksIFJDQ19BUEIyUGVyaXBoX1RJTTEwLCBSQ0NfQVBCMlBlcmlwaF9USU0xMSAgICAgCisgICogQHBhcmFtICBOZXdTdGF0ZTogbmV3IHN0YXRlIG9mIHRoZSBzcGVjaWZpZWQgcGVyaXBoZXJhbCBjbG9jay4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZTogRU5BQkxFIG9yIERJU0FCTEUuCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFJDQ19BUEIyUGVyaXBoQ2xvY2tDbWQodWludDMyX3QgUkNDX0FQQjJQZXJpcGgsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSkKK3sKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX1JDQ19BUEIyX1BFUklQSChSQ0NfQVBCMlBlcmlwaCkpOworICBhc3NlcnRfcGFyYW0oSVNfRlVOQ1RJT05BTF9TVEFURShOZXdTdGF0ZSkpOworICBpZiAoTmV3U3RhdGUgIT0gRElTQUJMRSkKKyAgeworICAgIFJDQy0+QVBCMkVOUiB8PSBSQ0NfQVBCMlBlcmlwaDsKKyAgfQorICBlbHNlCisgIHsKKyAgICBSQ0MtPkFQQjJFTlIgJj0gflJDQ19BUEIyUGVyaXBoOworICB9Cit9CisKKy8qKgorICAqIEBicmllZiAgRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgTG93IFNwZWVkIEFQQiAoQVBCMSkgcGVyaXBoZXJhbCBjbG9jay4KKyAgKiBAcGFyYW0gIFJDQ19BUEIxUGVyaXBoOiBzcGVjaWZpZXMgdGhlIEFQQjEgcGVyaXBoZXJhbCB0byBnYXRlcyBpdHMgY2xvY2suCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYW55IGNvbWJpbmF0aW9uIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIFJDQ19BUEIxUGVyaXBoX1RJTTIsIFJDQ19BUEIxUGVyaXBoX1RJTTMsIFJDQ19BUEIxUGVyaXBoX1RJTTQsCisgICogICAgICAgICAgUkNDX0FQQjFQZXJpcGhfVElNNSwgUkNDX0FQQjFQZXJpcGhfVElNNiwgUkNDX0FQQjFQZXJpcGhfVElNNywKKyAgKiAgICAgICAgICBSQ0NfQVBCMVBlcmlwaF9XV0RHLCBSQ0NfQVBCMVBlcmlwaF9TUEkyLCBSQ0NfQVBCMVBlcmlwaF9TUEkzLAorICAqICAgICAgICAgIFJDQ19BUEIxUGVyaXBoX1VTQVJUMiwgUkNDX0FQQjFQZXJpcGhfVVNBUlQzLCBSQ0NfQVBCMVBlcmlwaF9VU0FSVDQsIAorICAqICAgICAgICAgIFJDQ19BUEIxUGVyaXBoX1VTQVJUNSwgUkNDX0FQQjFQZXJpcGhfSTJDMSwgUkNDX0FQQjFQZXJpcGhfSTJDMiwKKyAgKiAgICAgICAgICBSQ0NfQVBCMVBlcmlwaF9VU0IsIFJDQ19BUEIxUGVyaXBoX0NBTjEsIFJDQ19BUEIxUGVyaXBoX0JLUCwKKyAgKiAgICAgICAgICBSQ0NfQVBCMVBlcmlwaF9QV1IsIFJDQ19BUEIxUGVyaXBoX0RBQywgUkNDX0FQQjFQZXJpcGhfQ0VDLAorICAqICAgICAgICAgIFJDQ19BUEIxUGVyaXBoX1RJTTEyLCBSQ0NfQVBCMVBlcmlwaF9USU0xMywgUkNDX0FQQjFQZXJpcGhfVElNMTQKKyAgKiBAcGFyYW0gIE5ld1N0YXRlOiBuZXcgc3RhdGUgb2YgdGhlIHNwZWNpZmllZCBwZXJpcGhlcmFsIGNsb2NrLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlOiBFTkFCTEUgb3IgRElTQUJMRS4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgUkNDX0FQQjFQZXJpcGhDbG9ja0NtZCh1aW50MzJfdCBSQ0NfQVBCMVBlcmlwaCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfUkNDX0FQQjFfUEVSSVBIKFJDQ19BUEIxUGVyaXBoKSk7CisgIGFzc2VydF9wYXJhbShJU19GVU5DVElPTkFMX1NUQVRFKE5ld1N0YXRlKSk7CisgIGlmIChOZXdTdGF0ZSAhPSBESVNBQkxFKQorICB7CisgICAgUkNDLT5BUEIxRU5SIHw9IFJDQ19BUEIxUGVyaXBoOworICB9CisgIGVsc2UKKyAgeworICAgIFJDQy0+QVBCMUVOUiAmPSB+UkNDX0FQQjFQZXJpcGg7CisgIH0KK30KKworI2lmZGVmIFNUTTMyRjEwWF9DTAorLyoqCisgICogQGJyaWVmICBGb3JjZXMgb3IgcmVsZWFzZXMgQUhCIHBlcmlwaGVyYWwgcmVzZXQuCisgICogQG5vdGUgICBUaGlzIGZ1bmN0aW9uIGFwcGxpZXMgb25seSB0byBTVE0zMiBDb25uZWN0aXZpdHkgbGluZSBkZXZpY2VzLgorICAqIEBwYXJhbSAgUkNDX0FIQlBlcmlwaDogc3BlY2lmaWVzIHRoZSBBSEIgcGVyaXBoZXJhbCB0byByZXNldC4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhbnkgY29tYmluYXRpb24gb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICAgIEBhcmcgUkNDX0FIQlBlcmlwaF9PVEdfRlMgCisgICogICAgIEBhcmcgUkNDX0FIQlBlcmlwaF9FVEhfTUFDCisgICogQHBhcmFtICBOZXdTdGF0ZTogbmV3IHN0YXRlIG9mIHRoZSBzcGVjaWZpZWQgcGVyaXBoZXJhbCByZXNldC4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZTogRU5BQkxFIG9yIERJU0FCTEUuCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFJDQ19BSEJQZXJpcGhSZXNldENtZCh1aW50MzJfdCBSQ0NfQUhCUGVyaXBoLCBGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpCit7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19SQ0NfQUhCX1BFUklQSF9SRVNFVChSQ0NfQUhCUGVyaXBoKSk7CisgIGFzc2VydF9wYXJhbShJU19GVU5DVElPTkFMX1NUQVRFKE5ld1N0YXRlKSk7CisKKyAgaWYgKE5ld1N0YXRlICE9IERJU0FCTEUpCisgIHsKKyAgICBSQ0MtPkFIQlJTVFIgfD0gUkNDX0FIQlBlcmlwaDsKKyAgfQorICBlbHNlCisgIHsKKyAgICBSQ0MtPkFIQlJTVFIgJj0gflJDQ19BSEJQZXJpcGg7CisgIH0KK30KKyNlbmRpZiAvKiBTVE0zMkYxMFhfQ0wgKi8gCisKKy8qKgorICAqIEBicmllZiAgRm9yY2VzIG9yIHJlbGVhc2VzIEhpZ2ggU3BlZWQgQVBCIChBUEIyKSBwZXJpcGhlcmFsIHJlc2V0LgorICAqIEBwYXJhbSAgUkNDX0FQQjJQZXJpcGg6IHNwZWNpZmllcyB0aGUgQVBCMiBwZXJpcGhlcmFsIHRvIHJlc2V0LgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGFueSBjb21iaW5hdGlvbiBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBSQ0NfQVBCMlBlcmlwaF9BRklPLCBSQ0NfQVBCMlBlcmlwaF9HUElPQSwgUkNDX0FQQjJQZXJpcGhfR1BJT0IsCisgICogICAgICAgICAgUkNDX0FQQjJQZXJpcGhfR1BJT0MsIFJDQ19BUEIyUGVyaXBoX0dQSU9ELCBSQ0NfQVBCMlBlcmlwaF9HUElPRSwKKyAgKiAgICAgICAgICBSQ0NfQVBCMlBlcmlwaF9HUElPRiwgUkNDX0FQQjJQZXJpcGhfR1BJT0csIFJDQ19BUEIyUGVyaXBoX0FEQzEsCisgICogICAgICAgICAgUkNDX0FQQjJQZXJpcGhfQURDMiwgUkNDX0FQQjJQZXJpcGhfVElNMSwgUkNDX0FQQjJQZXJpcGhfU1BJMSwKKyAgKiAgICAgICAgICBSQ0NfQVBCMlBlcmlwaF9USU04LCBSQ0NfQVBCMlBlcmlwaF9VU0FSVDEsIFJDQ19BUEIyUGVyaXBoX0FEQzMsCisgICogICAgICAgICAgUkNDX0FQQjJQZXJpcGhfVElNMTUsIFJDQ19BUEIyUGVyaXBoX1RJTTE2LCBSQ0NfQVBCMlBlcmlwaF9USU0xNywKKyAgKiAgICAgICAgICBSQ0NfQVBCMlBlcmlwaF9USU05LCBSQ0NfQVBCMlBlcmlwaF9USU0xMCwgUkNDX0FQQjJQZXJpcGhfVElNMTEgIAorICAqIEBwYXJhbSAgTmV3U3RhdGU6IG5ldyBzdGF0ZSBvZiB0aGUgc3BlY2lmaWVkIHBlcmlwaGVyYWwgcmVzZXQuCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmU6IEVOQUJMRSBvciBESVNBQkxFLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBSQ0NfQVBCMlBlcmlwaFJlc2V0Q21kKHVpbnQzMl90IFJDQ19BUEIyUGVyaXBoLCBGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpCit7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19SQ0NfQVBCMl9QRVJJUEgoUkNDX0FQQjJQZXJpcGgpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0ZVTkNUSU9OQUxfU1RBVEUoTmV3U3RhdGUpKTsKKyAgaWYgKE5ld1N0YXRlICE9IERJU0FCTEUpCisgIHsKKyAgICBSQ0MtPkFQQjJSU1RSIHw9IFJDQ19BUEIyUGVyaXBoOworICB9CisgIGVsc2UKKyAgeworICAgIFJDQy0+QVBCMlJTVFIgJj0gflJDQ19BUEIyUGVyaXBoOworICB9Cit9CisKKy8qKgorICAqIEBicmllZiAgRm9yY2VzIG9yIHJlbGVhc2VzIExvdyBTcGVlZCBBUEIgKEFQQjEpIHBlcmlwaGVyYWwgcmVzZXQuCisgICogQHBhcmFtICBSQ0NfQVBCMVBlcmlwaDogc3BlY2lmaWVzIHRoZSBBUEIxIHBlcmlwaGVyYWwgdG8gcmVzZXQuCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYW55IGNvbWJpbmF0aW9uIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIFJDQ19BUEIxUGVyaXBoX1RJTTIsIFJDQ19BUEIxUGVyaXBoX1RJTTMsIFJDQ19BUEIxUGVyaXBoX1RJTTQsCisgICogICAgICAgICAgUkNDX0FQQjFQZXJpcGhfVElNNSwgUkNDX0FQQjFQZXJpcGhfVElNNiwgUkNDX0FQQjFQZXJpcGhfVElNNywKKyAgKiAgICAgICAgICBSQ0NfQVBCMVBlcmlwaF9XV0RHLCBSQ0NfQVBCMVBlcmlwaF9TUEkyLCBSQ0NfQVBCMVBlcmlwaF9TUEkzLAorICAqICAgICAgICAgIFJDQ19BUEIxUGVyaXBoX1VTQVJUMiwgUkNDX0FQQjFQZXJpcGhfVVNBUlQzLCBSQ0NfQVBCMVBlcmlwaF9VU0FSVDQsIAorICAqICAgICAgICAgIFJDQ19BUEIxUGVyaXBoX1VTQVJUNSwgUkNDX0FQQjFQZXJpcGhfSTJDMSwgUkNDX0FQQjFQZXJpcGhfSTJDMiwKKyAgKiAgICAgICAgICBSQ0NfQVBCMVBlcmlwaF9VU0IsIFJDQ19BUEIxUGVyaXBoX0NBTjEsIFJDQ19BUEIxUGVyaXBoX0JLUCwKKyAgKiAgICAgICAgICBSQ0NfQVBCMVBlcmlwaF9QV1IsIFJDQ19BUEIxUGVyaXBoX0RBQywgUkNDX0FQQjFQZXJpcGhfQ0VDLAorICAqICAgICAgICAgIFJDQ19BUEIxUGVyaXBoX1RJTTEyLCBSQ0NfQVBCMVBlcmlwaF9USU0xMywgUkNDX0FQQjFQZXJpcGhfVElNMTQgIAorICAqIEBwYXJhbSAgTmV3U3RhdGU6IG5ldyBzdGF0ZSBvZiB0aGUgc3BlY2lmaWVkIHBlcmlwaGVyYWwgY2xvY2suCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmU6IEVOQUJMRSBvciBESVNBQkxFLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBSQ0NfQVBCMVBlcmlwaFJlc2V0Q21kKHVpbnQzMl90IFJDQ19BUEIxUGVyaXBoLCBGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpCit7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19SQ0NfQVBCMV9QRVJJUEgoUkNDX0FQQjFQZXJpcGgpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0ZVTkNUSU9OQUxfU1RBVEUoTmV3U3RhdGUpKTsKKyAgaWYgKE5ld1N0YXRlICE9IERJU0FCTEUpCisgIHsKKyAgICBSQ0MtPkFQQjFSU1RSIHw9IFJDQ19BUEIxUGVyaXBoOworICB9CisgIGVsc2UKKyAgeworICAgIFJDQy0+QVBCMVJTVFIgJj0gflJDQ19BUEIxUGVyaXBoOworICB9Cit9CisKKy8qKgorICAqIEBicmllZiAgRm9yY2VzIG9yIHJlbGVhc2VzIHRoZSBCYWNrdXAgZG9tYWluIHJlc2V0LgorICAqIEBwYXJhbSAgTmV3U3RhdGU6IG5ldyBzdGF0ZSBvZiB0aGUgQmFja3VwIGRvbWFpbiByZXNldC4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZTogRU5BQkxFIG9yIERJU0FCTEUuCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFJDQ19CYWNrdXBSZXNldENtZChGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpCit7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19GVU5DVElPTkFMX1NUQVRFKE5ld1N0YXRlKSk7CisgICooX19JTyB1aW50MzJfdCAqKSBCRENSX0JEUlNUX0JCID0gKHVpbnQzMl90KU5ld1N0YXRlOworfQorCisvKioKKyAgKiBAYnJpZWYgIEVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIENsb2NrIFNlY3VyaXR5IFN5c3RlbS4KKyAgKiBAcGFyYW0gIE5ld1N0YXRlOiBuZXcgc3RhdGUgb2YgdGhlIENsb2NrIFNlY3VyaXR5IFN5c3RlbS4uCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmU6IEVOQUJMRSBvciBESVNBQkxFLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBSQ0NfQ2xvY2tTZWN1cml0eVN5c3RlbUNtZChGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpCit7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19GVU5DVElPTkFMX1NUQVRFKE5ld1N0YXRlKSk7CisgICooX19JTyB1aW50MzJfdCAqKSBDUl9DU1NPTl9CQiA9ICh1aW50MzJfdClOZXdTdGF0ZTsKK30KKworLyoqCisgICogQGJyaWVmICBTZWxlY3RzIHRoZSBjbG9jayBzb3VyY2UgdG8gb3V0cHV0IG9uIE1DTyBwaW4uCisgICogQHBhcmFtICBSQ0NfTUNPOiBzcGVjaWZpZXMgdGhlIGNsb2NrIHNvdXJjZSB0byBvdXRwdXQuCisgICogICAKKyAgKiAgIEZvciBAYiBTVE0zMl9Db25uZWN0aXZpdHlfbGluZV9kZXZpY2VzLCB0aGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZQorICAqICAgZm9sbG93aW5nIHZhbHVlczogICAgICAgCisgICogICAgIEBhcmcgUkNDX01DT19Ob0Nsb2NrOiBObyBjbG9jayBzZWxlY3RlZAorICAqICAgICBAYXJnIFJDQ19NQ09fU1lTQ0xLOiBTeXN0ZW0gY2xvY2sgc2VsZWN0ZWQKKyAgKiAgICAgQGFyZyBSQ0NfTUNPX0hTSTogSFNJIG9zY2lsbGF0b3IgY2xvY2sgc2VsZWN0ZWQKKyAgKiAgICAgQGFyZyBSQ0NfTUNPX0hTRTogSFNFIG9zY2lsbGF0b3IgY2xvY2sgc2VsZWN0ZWQKKyAgKiAgICAgQGFyZyBSQ0NfTUNPX1BMTENMS19EaXYyOiBQTEwgY2xvY2sgZGl2aWRlZCBieSAyIHNlbGVjdGVkCisgICogICAgIEBhcmcgUkNDX01DT19QTEwyQ0xLOiBQTEwyIGNsb2NrIHNlbGVjdGVkICAgICAgICAgICAgICAgICAgICAgCisgICogICAgIEBhcmcgUkNDX01DT19QTEwzQ0xLX0RpdjI6IFBMTDMgY2xvY2sgZGl2aWRlZCBieSAyIHNlbGVjdGVkICAgCisgICogICAgIEBhcmcgUkNDX01DT19YVDE6IEV4dGVybmFsIDMtMjUgTUh6IG9zY2lsbGF0b3IgY2xvY2sgc2VsZWN0ZWQgIAorICAqICAgICBAYXJnIFJDQ19NQ09fUExMM0NMSzogUExMMyBjbG9jayBzZWxlY3RlZCAKKyAgKiAKKyAgKiAgIEZvciAgQGIgb3RoZXJfU1RNMzJfZGV2aWNlcywgdGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczogICAgICAgIAorICAqICAgICBAYXJnIFJDQ19NQ09fTm9DbG9jazogTm8gY2xvY2sgc2VsZWN0ZWQKKyAgKiAgICAgQGFyZyBSQ0NfTUNPX1NZU0NMSzogU3lzdGVtIGNsb2NrIHNlbGVjdGVkCisgICogICAgIEBhcmcgUkNDX01DT19IU0k6IEhTSSBvc2NpbGxhdG9yIGNsb2NrIHNlbGVjdGVkCisgICogICAgIEBhcmcgUkNDX01DT19IU0U6IEhTRSBvc2NpbGxhdG9yIGNsb2NrIHNlbGVjdGVkCisgICogICAgIEBhcmcgUkNDX01DT19QTExDTEtfRGl2MjogUExMIGNsb2NrIGRpdmlkZWQgYnkgMiBzZWxlY3RlZAorICAqICAgCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFJDQ19NQ09Db25maWcodWludDhfdCBSQ0NfTUNPKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfUkNDX01DTyhSQ0NfTUNPKSk7CisKKyAgLyogUGVyZm9ybSBCeXRlIGFjY2VzcyB0byBNQ08gYml0cyB0byBzZWxlY3QgdGhlIE1DTyBzb3VyY2UgKi8KKyAgKihfX0lPIHVpbnQ4X3QgKikgQ0ZHUl9CWVRFNF9BRERSRVNTID0gUkNDX01DTzsKK30KKworLyoqCisgICogQGJyaWVmICBDaGVja3Mgd2hldGhlciB0aGUgc3BlY2lmaWVkIFJDQyBmbGFnIGlzIHNldCBvciBub3QuCisgICogQHBhcmFtICBSQ0NfRkxBRzogc3BlY2lmaWVzIHRoZSBmbGFnIHRvIGNoZWNrLgorICAqICAgCisgICogICBGb3IgQGIgU1RNMzJfQ29ubmVjdGl2aXR5X2xpbmVfZGV2aWNlcywgdGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUKKyAgKiAgIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICAgIEBhcmcgUkNDX0ZMQUdfSFNJUkRZOiBIU0kgb3NjaWxsYXRvciBjbG9jayByZWFkeQorICAqICAgICBAYXJnIFJDQ19GTEFHX0hTRVJEWTogSFNFIG9zY2lsbGF0b3IgY2xvY2sgcmVhZHkKKyAgKiAgICAgQGFyZyBSQ0NfRkxBR19QTExSRFk6IFBMTCBjbG9jayByZWFkeQorICAqICAgICBAYXJnIFJDQ19GTEFHX1BMTDJSRFk6IFBMTDIgY2xvY2sgcmVhZHkgICAgICAKKyAgKiAgICAgQGFyZyBSQ0NfRkxBR19QTEwzUkRZOiBQTEwzIGNsb2NrIHJlYWR5ICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICogICAgIEBhcmcgUkNDX0ZMQUdfTFNFUkRZOiBMU0Ugb3NjaWxsYXRvciBjbG9jayByZWFkeQorICAqICAgICBAYXJnIFJDQ19GTEFHX0xTSVJEWTogTFNJIG9zY2lsbGF0b3IgY2xvY2sgcmVhZHkKKyAgKiAgICAgQGFyZyBSQ0NfRkxBR19QSU5SU1Q6IFBpbiByZXNldAorICAqICAgICBAYXJnIFJDQ19GTEFHX1BPUlJTVDogUE9SL1BEUiByZXNldAorICAqICAgICBAYXJnIFJDQ19GTEFHX1NGVFJTVDogU29mdHdhcmUgcmVzZXQKKyAgKiAgICAgQGFyZyBSQ0NfRkxBR19JV0RHUlNUOiBJbmRlcGVuZGVudCBXYXRjaGRvZyByZXNldAorICAqICAgICBAYXJnIFJDQ19GTEFHX1dXREdSU1Q6IFdpbmRvdyBXYXRjaGRvZyByZXNldAorICAqICAgICBAYXJnIFJDQ19GTEFHX0xQV1JSU1Q6IExvdyBQb3dlciByZXNldAorICAqIAorICAqICAgRm9yIEBiIG90aGVyX1NUTTMyX2RldmljZXMsIHRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6ICAgICAgICAKKyAgKiAgICAgQGFyZyBSQ0NfRkxBR19IU0lSRFk6IEhTSSBvc2NpbGxhdG9yIGNsb2NrIHJlYWR5CisgICogICAgIEBhcmcgUkNDX0ZMQUdfSFNFUkRZOiBIU0Ugb3NjaWxsYXRvciBjbG9jayByZWFkeQorICAqICAgICBAYXJnIFJDQ19GTEFHX1BMTFJEWTogUExMIGNsb2NrIHJlYWR5CisgICogICAgIEBhcmcgUkNDX0ZMQUdfTFNFUkRZOiBMU0Ugb3NjaWxsYXRvciBjbG9jayByZWFkeQorICAqICAgICBAYXJnIFJDQ19GTEFHX0xTSVJEWTogTFNJIG9zY2lsbGF0b3IgY2xvY2sgcmVhZHkKKyAgKiAgICAgQGFyZyBSQ0NfRkxBR19QSU5SU1Q6IFBpbiByZXNldAorICAqICAgICBAYXJnIFJDQ19GTEFHX1BPUlJTVDogUE9SL1BEUiByZXNldAorICAqICAgICBAYXJnIFJDQ19GTEFHX1NGVFJTVDogU29mdHdhcmUgcmVzZXQKKyAgKiAgICAgQGFyZyBSQ0NfRkxBR19JV0RHUlNUOiBJbmRlcGVuZGVudCBXYXRjaGRvZyByZXNldAorICAqICAgICBAYXJnIFJDQ19GTEFHX1dXREdSU1Q6IFdpbmRvdyBXYXRjaGRvZyByZXNldAorICAqICAgICBAYXJnIFJDQ19GTEFHX0xQV1JSU1Q6IExvdyBQb3dlciByZXNldAorICAqICAgCisgICogQHJldHZhbCBUaGUgbmV3IHN0YXRlIG9mIFJDQ19GTEFHIChTRVQgb3IgUkVTRVQpLgorICAqLworRmxhZ1N0YXR1cyBSQ0NfR2V0RmxhZ1N0YXR1cyh1aW50OF90IFJDQ19GTEFHKQoreworICB1aW50MzJfdCB0bXAgPSAwOworICB1aW50MzJfdCBzdGF0dXNyZWcgPSAwOworICBGbGFnU3RhdHVzIGJpdHN0YXR1cyA9IFJFU0VUOworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfUkNDX0ZMQUcoUkNDX0ZMQUcpKTsKKworICAvKiBHZXQgdGhlIFJDQyByZWdpc3RlciBpbmRleCAqLworICB0bXAgPSBSQ0NfRkxBRyA+PiA1OworICBpZiAodG1wID09IDEpICAgICAgICAgICAgICAgLyogVGhlIGZsYWcgdG8gY2hlY2sgaXMgaW4gQ1IgcmVnaXN0ZXIgKi8KKyAgeworICAgIHN0YXR1c3JlZyA9IFJDQy0+Q1I7CisgIH0KKyAgZWxzZSBpZiAodG1wID09IDIpICAgICAgICAgIC8qIFRoZSBmbGFnIHRvIGNoZWNrIGlzIGluIEJEQ1IgcmVnaXN0ZXIgKi8KKyAgeworICAgIHN0YXR1c3JlZyA9IFJDQy0+QkRDUjsKKyAgfQorICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAvKiBUaGUgZmxhZyB0byBjaGVjayBpcyBpbiBDU1IgcmVnaXN0ZXIgKi8KKyAgeworICAgIHN0YXR1c3JlZyA9IFJDQy0+Q1NSOworICB9CisKKyAgLyogR2V0IHRoZSBmbGFnIHBvc2l0aW9uICovCisgIHRtcCA9IFJDQ19GTEFHICYgRkxBR19NYXNrOworICBpZiAoKHN0YXR1c3JlZyAmICgodWludDMyX3QpMSA8PCB0bXApKSAhPSAodWludDMyX3QpUkVTRVQpCisgIHsKKyAgICBiaXRzdGF0dXMgPSBTRVQ7CisgIH0KKyAgZWxzZQorICB7CisgICAgYml0c3RhdHVzID0gUkVTRVQ7CisgIH0KKworICAvKiBSZXR1cm4gdGhlIGZsYWcgc3RhdHVzICovCisgIHJldHVybiBiaXRzdGF0dXM7Cit9CisKKy8qKgorICAqIEBicmllZiAgQ2xlYXJzIHRoZSBSQ0MgcmVzZXQgZmxhZ3MuCisgICogQG5vdGUgICBUaGUgcmVzZXQgZmxhZ3MgYXJlOiBSQ0NfRkxBR19QSU5SU1QsIFJDQ19GTEFHX1BPUlJTVCwgUkNDX0ZMQUdfU0ZUUlNULAorICAqICAgUkNDX0ZMQUdfSVdER1JTVCwgUkNDX0ZMQUdfV1dER1JTVCwgUkNDX0ZMQUdfTFBXUlJTVAorICAqIEBwYXJhbSAgTm9uZQorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBSQ0NfQ2xlYXJGbGFnKHZvaWQpCit7CisgIC8qIFNldCBSTVZGIGJpdCB0byBjbGVhciB0aGUgcmVzZXQgZmxhZ3MgKi8KKyAgUkNDLT5DU1IgfD0gQ1NSX1JNVkZfU2V0OworfQorCisvKioKKyAgKiBAYnJpZWYgIENoZWNrcyB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgUkNDIGludGVycnVwdCBoYXMgb2NjdXJyZWQgb3Igbm90LgorICAqIEBwYXJhbSAgUkNDX0lUOiBzcGVjaWZpZXMgdGhlIFJDQyBpbnRlcnJ1cHQgc291cmNlIHRvIGNoZWNrLgorICAqICAgCisgICogICBGb3IgQGIgU1RNMzJfQ29ubmVjdGl2aXR5X2xpbmVfZGV2aWNlcywgdGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUKKyAgKiAgIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICAgIEBhcmcgUkNDX0lUX0xTSVJEWTogTFNJIHJlYWR5IGludGVycnVwdAorICAqICAgICBAYXJnIFJDQ19JVF9MU0VSRFk6IExTRSByZWFkeSBpbnRlcnJ1cHQKKyAgKiAgICAgQGFyZyBSQ0NfSVRfSFNJUkRZOiBIU0kgcmVhZHkgaW50ZXJydXB0CisgICogICAgIEBhcmcgUkNDX0lUX0hTRVJEWTogSFNFIHJlYWR5IGludGVycnVwdAorICAqICAgICBAYXJnIFJDQ19JVF9QTExSRFk6IFBMTCByZWFkeSBpbnRlcnJ1cHQKKyAgKiAgICAgQGFyZyBSQ0NfSVRfUExMMlJEWTogUExMMiByZWFkeSBpbnRlcnJ1cHQgCisgICogICAgIEBhcmcgUkNDX0lUX1BMTDNSRFk6IFBMTDMgcmVhZHkgaW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgIAorICAqICAgICBAYXJnIFJDQ19JVF9DU1M6IENsb2NrIFNlY3VyaXR5IFN5c3RlbSBpbnRlcnJ1cHQKKyAgKiAKKyAgKiAgIEZvciBAYiBvdGhlcl9TVE0zMl9kZXZpY2VzLCB0aGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOiAgICAgICAgCisgICogICAgIEBhcmcgUkNDX0lUX0xTSVJEWTogTFNJIHJlYWR5IGludGVycnVwdAorICAqICAgICBAYXJnIFJDQ19JVF9MU0VSRFk6IExTRSByZWFkeSBpbnRlcnJ1cHQKKyAgKiAgICAgQGFyZyBSQ0NfSVRfSFNJUkRZOiBIU0kgcmVhZHkgaW50ZXJydXB0CisgICogICAgIEBhcmcgUkNDX0lUX0hTRVJEWTogSFNFIHJlYWR5IGludGVycnVwdAorICAqICAgICBAYXJnIFJDQ19JVF9QTExSRFk6IFBMTCByZWFkeSBpbnRlcnJ1cHQKKyAgKiAgICAgQGFyZyBSQ0NfSVRfQ1NTOiBDbG9jayBTZWN1cml0eSBTeXN0ZW0gaW50ZXJydXB0CisgICogICAKKyAgKiBAcmV0dmFsIFRoZSBuZXcgc3RhdGUgb2YgUkNDX0lUIChTRVQgb3IgUkVTRVQpLgorICAqLworSVRTdGF0dXMgUkNDX0dldElUU3RhdHVzKHVpbnQ4X3QgUkNDX0lUKQoreworICBJVFN0YXR1cyBiaXRzdGF0dXMgPSBSRVNFVDsKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX1JDQ19HRVRfSVQoUkNDX0lUKSk7CisKKyAgLyogQ2hlY2sgdGhlIHN0YXR1cyBvZiB0aGUgc3BlY2lmaWVkIFJDQyBpbnRlcnJ1cHQgKi8KKyAgaWYgKChSQ0MtPkNJUiAmIFJDQ19JVCkgIT0gKHVpbnQzMl90KVJFU0VUKQorICB7CisgICAgYml0c3RhdHVzID0gU0VUOworICB9CisgIGVsc2UKKyAgeworICAgIGJpdHN0YXR1cyA9IFJFU0VUOworICB9CisKKyAgLyogUmV0dXJuIHRoZSBSQ0NfSVQgc3RhdHVzICovCisgIHJldHVybiAgYml0c3RhdHVzOworfQorCisvKioKKyAgKiBAYnJpZWYgIENsZWFycyB0aGUgUkNDJ3MgaW50ZXJydXB0IHBlbmRpbmcgYml0cy4KKyAgKiBAcGFyYW0gIFJDQ19JVDogc3BlY2lmaWVzIHRoZSBpbnRlcnJ1cHQgcGVuZGluZyBiaXQgdG8gY2xlYXIuCisgICogICAKKyAgKiAgIEZvciBAYiBTVE0zMl9Db25uZWN0aXZpdHlfbGluZV9kZXZpY2VzLCB0aGlzIHBhcmFtZXRlciBjYW4gYmUgYW55IGNvbWJpbmF0aW9uCisgICogICBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBSQ0NfSVRfTFNJUkRZOiBMU0kgcmVhZHkgaW50ZXJydXB0CisgICogICAgIEBhcmcgUkNDX0lUX0xTRVJEWTogTFNFIHJlYWR5IGludGVycnVwdAorICAqICAgICBAYXJnIFJDQ19JVF9IU0lSRFk6IEhTSSByZWFkeSBpbnRlcnJ1cHQKKyAgKiAgICAgQGFyZyBSQ0NfSVRfSFNFUkRZOiBIU0UgcmVhZHkgaW50ZXJydXB0CisgICogICAgIEBhcmcgUkNDX0lUX1BMTFJEWTogUExMIHJlYWR5IGludGVycnVwdAorICAqICAgICBAYXJnIFJDQ19JVF9QTEwyUkRZOiBQTEwyIHJlYWR5IGludGVycnVwdCAKKyAgKiAgICAgQGFyZyBSQ0NfSVRfUExMM1JEWTogUExMMyByZWFkeSBpbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgCisgICogICAgIEBhcmcgUkNDX0lUX0NTUzogQ2xvY2sgU2VjdXJpdHkgU3lzdGVtIGludGVycnVwdAorICAqIAorICAqICAgRm9yIEBiIG90aGVyX1NUTTMyX2RldmljZXMsIHRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhbnkgY29tYmluYXRpb24gb2YgdGhlCisgICogICBmb2xsb3dpbmcgdmFsdWVzOiAgICAgICAgCisgICogICAgIEBhcmcgUkNDX0lUX0xTSVJEWTogTFNJIHJlYWR5IGludGVycnVwdAorICAqICAgICBAYXJnIFJDQ19JVF9MU0VSRFk6IExTRSByZWFkeSBpbnRlcnJ1cHQKKyAgKiAgICAgQGFyZyBSQ0NfSVRfSFNJUkRZOiBIU0kgcmVhZHkgaW50ZXJydXB0CisgICogICAgIEBhcmcgUkNDX0lUX0hTRVJEWTogSFNFIHJlYWR5IGludGVycnVwdAorICAqICAgICBAYXJnIFJDQ19JVF9QTExSRFk6IFBMTCByZWFkeSBpbnRlcnJ1cHQKKyAgKiAgIAorICAqICAgICBAYXJnIFJDQ19JVF9DU1M6IENsb2NrIFNlY3VyaXR5IFN5c3RlbSBpbnRlcnJ1cHQKKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgUkNDX0NsZWFySVRQZW5kaW5nQml0KHVpbnQ4X3QgUkNDX0lUKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfUkNDX0NMRUFSX0lUKFJDQ19JVCkpOworCisgIC8qIFBlcmZvcm0gQnl0ZSBhY2Nlc3MgdG8gUkNDX0NJUlsyMzoxNl0gYml0cyB0byBjbGVhciB0aGUgc2VsZWN0ZWQgaW50ZXJydXB0CisgICAgIHBlbmRpbmcgYml0cyAqLworICAqKF9fSU8gdWludDhfdCAqKSBDSVJfQllURTNfQUREUkVTUyA9IFJDQ19JVDsKK30KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCAyMDExIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL3N0X2Z3X2xpYi9zcmMvc3RtMzJmMTB4X3J0Yy5jIGIvc3RfZndfbGliL3NyYy9zdG0zMmYxMHhfcnRjLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjA1YWVmNQotLS0gL2Rldi9udWxsCisrKyBiL3N0X2Z3X2xpYi9zcmMvc3RtMzJmMTB4X3J0Yy5jCkBAIC0wLDAgKzEsMzM5IEBACisvKioKKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICogQGZpbGUgICAgc3RtMzJmMTB4X3J0Yy5jCisgICogQGF1dGhvciAgTUNEIEFwcGxpY2F0aW9uIFRlYW0KKyAgKiBAdmVyc2lvbiBWMy41LjAKKyAgKiBAZGF0ZSAgICAxMS1NYXJjaC0yMDExCisgICogQGJyaWVmICAgVGhpcyBmaWxlIHByb3ZpZGVzIGFsbCB0aGUgUlRDIGZpcm13YXJlIGZ1bmN0aW9ucy4KKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICogQGF0dGVudGlvbgorICAqCisgICogVEhFIFBSRVNFTlQgRklSTVdBUkUgV0hJQ0ggSVMgRk9SIEdVSURBTkNFIE9OTFkgQUlNUyBBVCBQUk9WSURJTkcgQ1VTVE9NRVJTCisgICogV0lUSCBDT0RJTkcgSU5GT1JNQVRJT04gUkVHQVJESU5HIFRIRUlSIFBST0RVQ1RTIElOIE9SREVSIEZPUiBUSEVNIFRPIFNBVkUKKyAgKiBUSU1FLiBBUyBBIFJFU1VMVCwgU1RNSUNST0VMRUNUUk9OSUNTIFNIQUxMIE5PVCBCRSBIRUxEIExJQUJMRSBGT1IgQU5ZCisgICogRElSRUNULCBJTkRJUkVDVCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgV0lUSCBSRVNQRUNUIFRPIEFOWSBDTEFJTVMgQVJJU0lORworICAqIEZST00gVEhFIENPTlRFTlQgT0YgU1VDSCBGSVJNV0FSRSBBTkQvT1IgVEhFIFVTRSBNQURFIEJZIENVU1RPTUVSUyBPRiBUSEUKKyAgKiBDT0RJTkcgSU5GT1JNQVRJT04gQ09OVEFJTkVEIEhFUkVJTiBJTiBDT05ORUNUSU9OIFdJVEggVEhFSVIgUFJPRFVDVFMuCisgICoKKyAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ09QWVJJR0hUIDIwMTEgU1RNaWNyb2VsZWN0cm9uaWNzPC9jZW50ZXI+PC9oMj4KKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICovCisKKy8qIEluY2x1ZGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisjaW5jbHVkZSAic3RtMzJmMTB4X3J0Yy5oIgorCisvKiogQGFkZHRvZ3JvdXAgU1RNMzJGMTB4X1N0ZFBlcmlwaF9Ecml2ZXIKKyAgKiBAeworICAqLworCisvKiogQGRlZmdyb3VwIFJUQyAKKyAgKiBAYnJpZWYgUlRDIGRyaXZlciBtb2R1bGVzCisgICogQHsKKyAgKi8KKworLyoqIEBkZWZncm91cCBSVENfUHJpdmF0ZV9UeXBlc0RlZmluaXRpb25zCisgICogQHsKKyAgKi8gCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIFJUQ19Qcml2YXRlX0RlZmluZXMKKyAgKiBAeworICAqLworI2RlZmluZSBSVENfTFNCX01BU0sgICAgICgodWludDMyX3QpMHgwMDAwRkZGRikgIC8qITwgUlRDIExTQiBNYXNrICovCisjZGVmaW5lIFBSTEhfTVNCX01BU0sgICAgKCh1aW50MzJfdCkweDAwMEYwMDAwKSAgLyohPCBSVEMgUHJlc2NhbGVyIE1TQiBNYXNrICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgUlRDX1ByaXZhdGVfTWFjcm9zCisgICogQHsKKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBSVENfUHJpdmF0ZV9WYXJpYWJsZXMKKyAgKiBAeworICAqLworCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIFJUQ19Qcml2YXRlX0Z1bmN0aW9uUHJvdG90eXBlcworICAqIEB7CisgICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgUlRDX1ByaXZhdGVfRnVuY3Rpb25zCisgICogQHsKKyAgKi8KKworLyoqCisgICogQGJyaWVmICBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBzcGVjaWZpZWQgUlRDIGludGVycnVwdHMuCisgICogQHBhcmFtICBSVENfSVQ6IHNwZWNpZmllcyB0aGUgUlRDIGludGVycnVwdHMgc291cmNlcyB0byBiZSBlbmFibGVkIG9yIGRpc2FibGVkLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGFueSBjb21iaW5hdGlvbiBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBSVENfSVRfT1c6IE92ZXJmbG93IGludGVycnVwdAorICAqICAgICBAYXJnIFJUQ19JVF9BTFI6IEFsYXJtIGludGVycnVwdAorICAqICAgICBAYXJnIFJUQ19JVF9TRUM6IFNlY29uZCBpbnRlcnJ1cHQKKyAgKiBAcGFyYW0gIE5ld1N0YXRlOiBuZXcgc3RhdGUgb2YgdGhlIHNwZWNpZmllZCBSVEMgaW50ZXJydXB0cy4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZTogRU5BQkxFIG9yIERJU0FCTEUuCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFJUQ19JVENvbmZpZyh1aW50MTZfdCBSVENfSVQsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSkKK3sKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX1JUQ19JVChSVENfSVQpKTsgIAorICBhc3NlcnRfcGFyYW0oSVNfRlVOQ1RJT05BTF9TVEFURShOZXdTdGF0ZSkpOworICAKKyAgaWYgKE5ld1N0YXRlICE9IERJU0FCTEUpCisgIHsKKyAgICBSVEMtPkNSSCB8PSBSVENfSVQ7CisgIH0KKyAgZWxzZQorICB7CisgICAgUlRDLT5DUkggJj0gKHVpbnQxNl90KX5SVENfSVQ7CisgIH0KK30KKworLyoqCisgICogQGJyaWVmICBFbnRlcnMgdGhlIFJUQyBjb25maWd1cmF0aW9uIG1vZGUuCisgICogQHBhcmFtICBOb25lCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFJUQ19FbnRlckNvbmZpZ01vZGUodm9pZCkKK3sKKyAgLyogU2V0IHRoZSBDTkYgZmxhZyB0byBlbnRlciBpbiB0aGUgQ29uZmlndXJhdGlvbiBNb2RlICovCisgIFJUQy0+Q1JMIHw9IFJUQ19DUkxfQ05GOworfQorCisvKioKKyAgKiBAYnJpZWYgIEV4aXRzIGZyb20gdGhlIFJUQyBjb25maWd1cmF0aW9uIG1vZGUuCisgICogQHBhcmFtICBOb25lCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFJUQ19FeGl0Q29uZmlnTW9kZSh2b2lkKQoreworICAvKiBSZXNldCB0aGUgQ05GIGZsYWcgdG8gZXhpdCBmcm9tIHRoZSBDb25maWd1cmF0aW9uIE1vZGUgKi8KKyAgUlRDLT5DUkwgJj0gKHVpbnQxNl90KX4oKHVpbnQxNl90KVJUQ19DUkxfQ05GKTsgCit9CisKKy8qKgorICAqIEBicmllZiAgR2V0cyB0aGUgUlRDIGNvdW50ZXIgdmFsdWUuCisgICogQHBhcmFtICBOb25lCisgICogQHJldHZhbCBSVEMgY291bnRlciB2YWx1ZS4KKyAgKi8KK3VpbnQzMl90IFJUQ19HZXRDb3VudGVyKHZvaWQpCit7CisgIHVpbnQxNl90IHRtcCA9IDA7CisgIHRtcCA9IFJUQy0+Q05UTDsKKyAgcmV0dXJuICgoKHVpbnQzMl90KVJUQy0+Q05USCA8PCAxNiApIHwgdG1wKSA7Cit9CisKKy8qKgorICAqIEBicmllZiAgU2V0cyB0aGUgUlRDIGNvdW50ZXIgdmFsdWUuCisgICogQHBhcmFtICBDb3VudGVyVmFsdWU6IFJUQyBjb3VudGVyIG5ldyB2YWx1ZS4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgUlRDX1NldENvdW50ZXIodWludDMyX3QgQ291bnRlclZhbHVlKQoreyAKKyAgUlRDX0VudGVyQ29uZmlnTW9kZSgpOworICAvKiBTZXQgUlRDIENPVU5URVIgTVNCIHdvcmQgKi8KKyAgUlRDLT5DTlRIID0gQ291bnRlclZhbHVlID4+IDE2OworICAvKiBTZXQgUlRDIENPVU5URVIgTFNCIHdvcmQgKi8KKyAgUlRDLT5DTlRMID0gKENvdW50ZXJWYWx1ZSAmIFJUQ19MU0JfTUFTSyk7CisgIFJUQ19FeGl0Q29uZmlnTW9kZSgpOworfQorCisvKioKKyAgKiBAYnJpZWYgIFNldHMgdGhlIFJUQyBwcmVzY2FsZXIgdmFsdWUuCisgICogQHBhcmFtICBQcmVzY2FsZXJWYWx1ZTogUlRDIHByZXNjYWxlciBuZXcgdmFsdWUuCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFJUQ19TZXRQcmVzY2FsZXIodWludDMyX3QgUHJlc2NhbGVyVmFsdWUpCit7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19SVENfUFJFU0NBTEVSKFByZXNjYWxlclZhbHVlKSk7CisgIAorICBSVENfRW50ZXJDb25maWdNb2RlKCk7CisgIC8qIFNldCBSVEMgUFJFU0NBTEVSIE1TQiB3b3JkICovCisgIFJUQy0+UFJMSCA9IChQcmVzY2FsZXJWYWx1ZSAmIFBSTEhfTVNCX01BU0spID4+IDE2OworICAvKiBTZXQgUlRDIFBSRVNDQUxFUiBMU0Igd29yZCAqLworICBSVEMtPlBSTEwgPSAoUHJlc2NhbGVyVmFsdWUgJiBSVENfTFNCX01BU0spOworICBSVENfRXhpdENvbmZpZ01vZGUoKTsKK30KKworLyoqCisgICogQGJyaWVmICBTZXRzIHRoZSBSVEMgYWxhcm0gdmFsdWUuCisgICogQHBhcmFtICBBbGFybVZhbHVlOiBSVEMgYWxhcm0gbmV3IHZhbHVlLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBSVENfU2V0QWxhcm0odWludDMyX3QgQWxhcm1WYWx1ZSkKK3sgIAorICBSVENfRW50ZXJDb25maWdNb2RlKCk7CisgIC8qIFNldCB0aGUgQUxBUk0gTVNCIHdvcmQgKi8KKyAgUlRDLT5BTFJIID0gQWxhcm1WYWx1ZSA+PiAxNjsKKyAgLyogU2V0IHRoZSBBTEFSTSBMU0Igd29yZCAqLworICBSVEMtPkFMUkwgPSAoQWxhcm1WYWx1ZSAmIFJUQ19MU0JfTUFTSyk7CisgIFJUQ19FeGl0Q29uZmlnTW9kZSgpOworfQorCisvKioKKyAgKiBAYnJpZWYgIEdldHMgdGhlIFJUQyBkaXZpZGVyIHZhbHVlLgorICAqIEBwYXJhbSAgTm9uZQorICAqIEByZXR2YWwgUlRDIERpdmlkZXIgdmFsdWUuCisgICovCit1aW50MzJfdCBSVENfR2V0RGl2aWRlcih2b2lkKQoreworICB1aW50MzJfdCB0bXAgPSAweDAwOworICB0bXAgPSAoKHVpbnQzMl90KVJUQy0+RElWSCAmICh1aW50MzJfdCkweDAwMEYpIDw8IDE2OworICB0bXAgfD0gUlRDLT5ESVZMOworICByZXR1cm4gdG1wOworfQorCisvKioKKyAgKiBAYnJpZWYgIFdhaXRzIHVudGlsIGxhc3Qgd3JpdGUgb3BlcmF0aW9uIG9uIFJUQyByZWdpc3RlcnMgaGFzIGZpbmlzaGVkLgorICAqIEBub3RlICAgVGhpcyBmdW5jdGlvbiBtdXN0IGJlIGNhbGxlZCBiZWZvcmUgYW55IHdyaXRlIHRvIFJUQyByZWdpc3RlcnMuCisgICogQHBhcmFtICBOb25lCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFJUQ19XYWl0Rm9yTGFzdFRhc2sodm9pZCkKK3sKKyAgLyogTG9vcCB1bnRpbCBSVE9GRiBmbGFnIGlzIHNldCAqLworICB3aGlsZSAoKFJUQy0+Q1JMICYgUlRDX0ZMQUdfUlRPRkYpID09ICh1aW50MTZfdClSRVNFVCkKKyAgeworICB9Cit9CisKKy8qKgorICAqIEBicmllZiAgV2FpdHMgdW50aWwgdGhlIFJUQyByZWdpc3RlcnMgKFJUQ19DTlQsIFJUQ19BTFIgYW5kIFJUQ19QUkwpCisgICogICBhcmUgc3luY2hyb25pemVkIHdpdGggUlRDIEFQQiBjbG9jay4KKyAgKiBAbm90ZSAgIFRoaXMgZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQgYmVmb3JlIGFueSByZWFkIG9wZXJhdGlvbiBhZnRlciBhbiBBUEIgcmVzZXQKKyAgKiAgIG9yIGFuIEFQQiBjbG9jayBzdG9wLgorICAqIEBwYXJhbSAgTm9uZQorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBSVENfV2FpdEZvclN5bmNocm8odm9pZCkKK3sKKyAgLyogQ2xlYXIgUlNGIGZsYWcgKi8KKyAgUlRDLT5DUkwgJj0gKHVpbnQxNl90KX5SVENfRkxBR19SU0Y7CisgIC8qIExvb3AgdW50aWwgUlNGIGZsYWcgaXMgc2V0ICovCisgIHdoaWxlICgoUlRDLT5DUkwgJiBSVENfRkxBR19SU0YpID09ICh1aW50MTZfdClSRVNFVCkKKyAgeworICB9Cit9CisKKy8qKgorICAqIEBicmllZiAgQ2hlY2tzIHdoZXRoZXIgdGhlIHNwZWNpZmllZCBSVEMgZmxhZyBpcyBzZXQgb3Igbm90LgorICAqIEBwYXJhbSAgUlRDX0ZMQUc6IHNwZWNpZmllcyB0aGUgZmxhZyB0byBjaGVjay4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICAgIEBhcmcgUlRDX0ZMQUdfUlRPRkY6IFJUQyBPcGVyYXRpb24gT0ZGIGZsYWcKKyAgKiAgICAgQGFyZyBSVENfRkxBR19SU0Y6IFJlZ2lzdGVycyBTeW5jaHJvbml6ZWQgZmxhZworICAqICAgICBAYXJnIFJUQ19GTEFHX09XOiBPdmVyZmxvdyBmbGFnCisgICogICAgIEBhcmcgUlRDX0ZMQUdfQUxSOiBBbGFybSBmbGFnCisgICogICAgIEBhcmcgUlRDX0ZMQUdfU0VDOiBTZWNvbmQgZmxhZworICAqIEByZXR2YWwgVGhlIG5ldyBzdGF0ZSBvZiBSVENfRkxBRyAoU0VUIG9yIFJFU0VUKS4KKyAgKi8KK0ZsYWdTdGF0dXMgUlRDX0dldEZsYWdTdGF0dXModWludDE2X3QgUlRDX0ZMQUcpCit7CisgIEZsYWdTdGF0dXMgYml0c3RhdHVzID0gUkVTRVQ7CisgIAorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfUlRDX0dFVF9GTEFHKFJUQ19GTEFHKSk7IAorICAKKyAgaWYgKChSVEMtPkNSTCAmIFJUQ19GTEFHKSAhPSAodWludDE2X3QpUkVTRVQpCisgIHsKKyAgICBiaXRzdGF0dXMgPSBTRVQ7CisgIH0KKyAgZWxzZQorICB7CisgICAgYml0c3RhdHVzID0gUkVTRVQ7CisgIH0KKyAgcmV0dXJuIGJpdHN0YXR1czsKK30KKworLyoqCisgICogQGJyaWVmICBDbGVhcnMgdGhlIFJUQydzIHBlbmRpbmcgZmxhZ3MuCisgICogQHBhcmFtICBSVENfRkxBRzogc3BlY2lmaWVzIHRoZSBmbGFnIHRvIGNsZWFyLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGFueSBjb21iaW5hdGlvbiBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBSVENfRkxBR19SU0Y6IFJlZ2lzdGVycyBTeW5jaHJvbml6ZWQgZmxhZy4gVGhpcyBmbGFnIGlzIGNsZWFyZWQgb25seSBhZnRlcgorICAqICAgICAgICAgICAgICAgICAgICAgICAgYW4gQVBCIHJlc2V0IG9yIGFuIEFQQiBDbG9jayBzdG9wLgorICAqICAgICBAYXJnIFJUQ19GTEFHX09XOiBPdmVyZmxvdyBmbGFnCisgICogICAgIEBhcmcgUlRDX0ZMQUdfQUxSOiBBbGFybSBmbGFnCisgICogICAgIEBhcmcgUlRDX0ZMQUdfU0VDOiBTZWNvbmQgZmxhZworICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBSVENfQ2xlYXJGbGFnKHVpbnQxNl90IFJUQ19GTEFHKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfUlRDX0NMRUFSX0ZMQUcoUlRDX0ZMQUcpKTsgCisgICAgCisgIC8qIENsZWFyIHRoZSBjb3JyZXNwb25kaW5nIFJUQyBmbGFnICovCisgIFJUQy0+Q1JMICY9ICh1aW50MTZfdCl+UlRDX0ZMQUc7Cit9CisKKy8qKgorICAqIEBicmllZiAgQ2hlY2tzIHdoZXRoZXIgdGhlIHNwZWNpZmllZCBSVEMgaW50ZXJydXB0IGhhcyBvY2N1cnJlZCBvciBub3QuCisgICogQHBhcmFtICBSVENfSVQ6IHNwZWNpZmllcyB0aGUgUlRDIGludGVycnVwdHMgc291cmNlcyB0byBjaGVjay4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICAgIEBhcmcgUlRDX0lUX09XOiBPdmVyZmxvdyBpbnRlcnJ1cHQKKyAgKiAgICAgQGFyZyBSVENfSVRfQUxSOiBBbGFybSBpbnRlcnJ1cHQKKyAgKiAgICAgQGFyZyBSVENfSVRfU0VDOiBTZWNvbmQgaW50ZXJydXB0CisgICogQHJldHZhbCBUaGUgbmV3IHN0YXRlIG9mIHRoZSBSVENfSVQgKFNFVCBvciBSRVNFVCkuCisgICovCitJVFN0YXR1cyBSVENfR2V0SVRTdGF0dXModWludDE2X3QgUlRDX0lUKQoreworICBJVFN0YXR1cyBiaXRzdGF0dXMgPSBSRVNFVDsKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX1JUQ19HRVRfSVQoUlRDX0lUKSk7IAorICAKKyAgYml0c3RhdHVzID0gKElUU3RhdHVzKShSVEMtPkNSTCAmIFJUQ19JVCk7CisgIGlmICgoKFJUQy0+Q1JIICYgUlRDX0lUKSAhPSAodWludDE2X3QpUkVTRVQpICYmIChiaXRzdGF0dXMgIT0gKHVpbnQxNl90KVJFU0VUKSkKKyAgeworICAgIGJpdHN0YXR1cyA9IFNFVDsKKyAgfQorICBlbHNlCisgIHsKKyAgICBiaXRzdGF0dXMgPSBSRVNFVDsKKyAgfQorICByZXR1cm4gYml0c3RhdHVzOworfQorCisvKioKKyAgKiBAYnJpZWYgIENsZWFycyB0aGUgUlRDJ3MgaW50ZXJydXB0IHBlbmRpbmcgYml0cy4KKyAgKiBAcGFyYW0gIFJUQ19JVDogc3BlY2lmaWVzIHRoZSBpbnRlcnJ1cHQgcGVuZGluZyBiaXQgdG8gY2xlYXIuCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYW55IGNvbWJpbmF0aW9uIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIFJUQ19JVF9PVzogT3ZlcmZsb3cgaW50ZXJydXB0CisgICogICAgIEBhcmcgUlRDX0lUX0FMUjogQWxhcm0gaW50ZXJydXB0CisgICogICAgIEBhcmcgUlRDX0lUX1NFQzogU2Vjb25kIGludGVycnVwdAorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBSVENfQ2xlYXJJVFBlbmRpbmdCaXQodWludDE2X3QgUlRDX0lUKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfUlRDX0lUKFJUQ19JVCkpOyAgCisgIAorICAvKiBDbGVhciB0aGUgY29ycmVzcG9uZGluZyBSVEMgcGVuZGluZyBiaXQgKi8KKyAgUlRDLT5DUkwgJj0gKHVpbnQxNl90KX5SVENfSVQ7Cit9CisKKy8qKgorICAqIEB9CisgICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgMjAxMSBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9zdF9md19saWIvc3JjL3N0bTMyZjEweF9zZGlvLmMgYi9zdF9md19saWIvc3JjL3N0bTMyZjEweF9zZGlvLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmMxNzE5ZAotLS0gL2Rldi9udWxsCisrKyBiL3N0X2Z3X2xpYi9zcmMvc3RtMzJmMTB4X3NkaW8uYwpAQCAtMCwwICsxLDc5OSBAQAorLyoqCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqIEBmaWxlICAgIHN0bTMyZjEweF9zZGlvLmMKKyAgKiBAYXV0aG9yICBNQ0QgQXBwbGljYXRpb24gVGVhbQorICAqIEB2ZXJzaW9uIFYzLjUuMAorICAqIEBkYXRlICAgIDExLU1hcmNoLTIwMTEKKyAgKiBAYnJpZWYgICBUaGlzIGZpbGUgcHJvdmlkZXMgYWxsIHRoZSBTRElPIGZpcm13YXJlIGZ1bmN0aW9ucy4KKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICogQGF0dGVudGlvbgorICAqCisgICogVEhFIFBSRVNFTlQgRklSTVdBUkUgV0hJQ0ggSVMgRk9SIEdVSURBTkNFIE9OTFkgQUlNUyBBVCBQUk9WSURJTkcgQ1VTVE9NRVJTCisgICogV0lUSCBDT0RJTkcgSU5GT1JNQVRJT04gUkVHQVJESU5HIFRIRUlSIFBST0RVQ1RTIElOIE9SREVSIEZPUiBUSEVNIFRPIFNBVkUKKyAgKiBUSU1FLiBBUyBBIFJFU1VMVCwgU1RNSUNST0VMRUNUUk9OSUNTIFNIQUxMIE5PVCBCRSBIRUxEIExJQUJMRSBGT1IgQU5ZCisgICogRElSRUNULCBJTkRJUkVDVCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgV0lUSCBSRVNQRUNUIFRPIEFOWSBDTEFJTVMgQVJJU0lORworICAqIEZST00gVEhFIENPTlRFTlQgT0YgU1VDSCBGSVJNV0FSRSBBTkQvT1IgVEhFIFVTRSBNQURFIEJZIENVU1RPTUVSUyBPRiBUSEUKKyAgKiBDT0RJTkcgSU5GT1JNQVRJT04gQ09OVEFJTkVEIEhFUkVJTiBJTiBDT05ORUNUSU9OIFdJVEggVEhFSVIgUFJPRFVDVFMuCisgICoKKyAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ09QWVJJR0hUIDIwMTEgU1RNaWNyb2VsZWN0cm9uaWNzPC9jZW50ZXI+PC9oMj4KKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICovCisKKy8qIEluY2x1ZGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisjaW5jbHVkZSAic3RtMzJmMTB4X3NkaW8uaCIKKyNpbmNsdWRlICJzdG0zMmYxMHhfcmNjLmgiCisKKy8qKiBAYWRkdG9ncm91cCBTVE0zMkYxMHhfU3RkUGVyaXBoX0RyaXZlcgorICAqIEB7CisgICovCisKKy8qKiBAZGVmZ3JvdXAgU0RJTyAKKyAgKiBAYnJpZWYgU0RJTyBkcml2ZXIgbW9kdWxlcworICAqIEB7CisgICovIAorCisvKiogQGRlZmdyb3VwIFNESU9fUHJpdmF0ZV9UeXBlc0RlZmluaXRpb25zCisgICogQHsKKyAgKi8gCisKKy8qIC0tLS0tLS0tLS0tLSBTRElPIHJlZ2lzdGVycyBiaXQgYWRkcmVzcyBpbiB0aGUgYWxpYXMgcmVnaW9uIC0tLS0tLS0tLS0tICovCisjZGVmaW5lIFNESU9fT0ZGU0VUICAgICAgICAgICAgICAgIChTRElPX0JBU0UgLSBQRVJJUEhfQkFTRSkKKworLyogLS0tIENMS0NSIFJlZ2lzdGVyIC0tLSovCisKKy8qIEFsaWFzIHdvcmQgYWRkcmVzcyBvZiBDTEtFTiBiaXQgKi8KKyNkZWZpbmUgQ0xLQ1JfT0ZGU0VUICAgICAgICAgICAgICAoU0RJT19PRkZTRVQgKyAweDA0KQorI2RlZmluZSBDTEtFTl9CaXROdW1iZXIgICAgICAgICAgIDB4MDgKKyNkZWZpbmUgQ0xLQ1JfQ0xLRU5fQkIgICAgICAgICAgICAoUEVSSVBIX0JCX0JBU0UgKyAoQ0xLQ1JfT0ZGU0VUICogMzIpICsgKENMS0VOX0JpdE51bWJlciAqIDQpKQorCisvKiAtLS0gQ01EIFJlZ2lzdGVyIC0tLSovCisKKy8qIEFsaWFzIHdvcmQgYWRkcmVzcyBvZiBTRElPU1VTUEVORCBiaXQgKi8KKyNkZWZpbmUgQ01EX09GRlNFVCAgICAgICAgICAgICAgICAoU0RJT19PRkZTRVQgKyAweDBDKQorI2RlZmluZSBTRElPU1VTUEVORF9CaXROdW1iZXIgICAgIDB4MEIKKyNkZWZpbmUgQ01EX1NESU9TVVNQRU5EX0JCICAgICAgICAoUEVSSVBIX0JCX0JBU0UgKyAoQ01EX09GRlNFVCAqIDMyKSArIChTRElPU1VTUEVORF9CaXROdW1iZXIgKiA0KSkKKworLyogQWxpYXMgd29yZCBhZGRyZXNzIG9mIEVOQ01EQ09NUEwgYml0ICovCisjZGVmaW5lIEVOQ01EQ09NUExfQml0TnVtYmVyICAgICAgMHgwQworI2RlZmluZSBDTURfRU5DTURDT01QTF9CQiAgICAgICAgIChQRVJJUEhfQkJfQkFTRSArIChDTURfT0ZGU0VUICogMzIpICsgKEVOQ01EQ09NUExfQml0TnVtYmVyICogNCkpCisKKy8qIEFsaWFzIHdvcmQgYWRkcmVzcyBvZiBOSUVOIGJpdCAqLworI2RlZmluZSBOSUVOX0JpdE51bWJlciAgICAgICAgICAgIDB4MEQKKyNkZWZpbmUgQ01EX05JRU5fQkIgICAgICAgICAgICAgICAoUEVSSVBIX0JCX0JBU0UgKyAoQ01EX09GRlNFVCAqIDMyKSArIChOSUVOX0JpdE51bWJlciAqIDQpKQorCisvKiBBbGlhcyB3b3JkIGFkZHJlc3Mgb2YgQVRBQ01EIGJpdCAqLworI2RlZmluZSBBVEFDTURfQml0TnVtYmVyICAgICAgICAgIDB4MEUKKyNkZWZpbmUgQ01EX0FUQUNNRF9CQiAgICAgICAgICAgICAoUEVSSVBIX0JCX0JBU0UgKyAoQ01EX09GRlNFVCAqIDMyKSArIChBVEFDTURfQml0TnVtYmVyICogNCkpCisKKy8qIC0tLSBEQ1RSTCBSZWdpc3RlciAtLS0qLworCisvKiBBbGlhcyB3b3JkIGFkZHJlc3Mgb2YgRE1BRU4gYml0ICovCisjZGVmaW5lIERDVFJMX09GRlNFVCAgICAgICAgICAgICAgKFNESU9fT0ZGU0VUICsgMHgyQykKKyNkZWZpbmUgRE1BRU5fQml0TnVtYmVyICAgICAgICAgICAweDAzCisjZGVmaW5lIERDVFJMX0RNQUVOX0JCICAgICAgICAgICAgKFBFUklQSF9CQl9CQVNFICsgKERDVFJMX09GRlNFVCAqIDMyKSArIChETUFFTl9CaXROdW1iZXIgKiA0KSkKKworLyogQWxpYXMgd29yZCBhZGRyZXNzIG9mIFJXU1RBUlQgYml0ICovCisjZGVmaW5lIFJXU1RBUlRfQml0TnVtYmVyICAgICAgICAgMHgwOAorI2RlZmluZSBEQ1RSTF9SV1NUQVJUX0JCICAgICAgICAgIChQRVJJUEhfQkJfQkFTRSArIChEQ1RSTF9PRkZTRVQgKiAzMikgKyAoUldTVEFSVF9CaXROdW1iZXIgKiA0KSkKKworLyogQWxpYXMgd29yZCBhZGRyZXNzIG9mIFJXU1RPUCBiaXQgKi8KKyNkZWZpbmUgUldTVE9QX0JpdE51bWJlciAgICAgICAgICAweDA5CisjZGVmaW5lIERDVFJMX1JXU1RPUF9CQiAgICAgICAgICAgKFBFUklQSF9CQl9CQVNFICsgKERDVFJMX09GRlNFVCAqIDMyKSArIChSV1NUT1BfQml0TnVtYmVyICogNCkpCisKKy8qIEFsaWFzIHdvcmQgYWRkcmVzcyBvZiBSV01PRCBiaXQgKi8KKyNkZWZpbmUgUldNT0RfQml0TnVtYmVyICAgICAgICAgICAweDBBCisjZGVmaW5lIERDVFJMX1JXTU9EX0JCICAgICAgICAgICAgKFBFUklQSF9CQl9CQVNFICsgKERDVFJMX09GRlNFVCAqIDMyKSArIChSV01PRF9CaXROdW1iZXIgKiA0KSkKKworLyogQWxpYXMgd29yZCBhZGRyZXNzIG9mIFNESU9FTiBiaXQgKi8KKyNkZWZpbmUgU0RJT0VOX0JpdE51bWJlciAgICAgICAgICAweDBCCisjZGVmaW5lIERDVFJMX1NESU9FTl9CQiAgICAgICAgICAgKFBFUklQSF9CQl9CQVNFICsgKERDVFJMX09GRlNFVCAqIDMyKSArIChTRElPRU5fQml0TnVtYmVyICogNCkpCisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gU0RJTyByZWdpc3RlcnMgYml0IG1hc2sgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKKy8qIC0tLSBDTEtDUiBSZWdpc3RlciAtLS0qLworCisvKiBDTEtDUiByZWdpc3RlciBjbGVhciBtYXNrICovCisjZGVmaW5lIENMS0NSX0NMRUFSX01BU0sgICAgICAgICAoKHVpbnQzMl90KTB4RkZGRjgxMDApIAorCisvKiAtLS0gUFdSQ1RSTCBSZWdpc3RlciAtLS0qLworCisvKiBTRElPIFBXUkNUUkwgTWFzayAqLworI2RlZmluZSBQV1JfUFdSQ1RSTF9NQVNLICAgICAgICAgKCh1aW50MzJfdCkweEZGRkZGRkZDKQorCisvKiAtLS0gRENUUkwgUmVnaXN0ZXIgLS0tKi8KKworLyogU0RJTyBEQ1RSTCBDbGVhciBNYXNrICovCisjZGVmaW5lIERDVFJMX0NMRUFSX01BU0sgICAgICAgICAoKHVpbnQzMl90KTB4RkZGRkZGMDgpCisKKy8qIC0tLSBDTUQgUmVnaXN0ZXIgLS0tKi8KKworLyogQ01EIFJlZ2lzdGVyIGNsZWFyIG1hc2sgKi8KKyNkZWZpbmUgQ01EX0NMRUFSX01BU0sgICAgICAgICAgICgodWludDMyX3QpMHhGRkZGRjgwMCkKKworLyogU0RJTyBSRVNQIFJlZ2lzdGVycyBBZGRyZXNzICovCisjZGVmaW5lIFNESU9fUkVTUF9BRERSICAgICAgICAgICAoKHVpbnQzMl90KShTRElPX0JBU0UgKyAweDE0KSkKKworLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBTRElPX1ByaXZhdGVfRGVmaW5lcworICAqIEB7CisgICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgU0RJT19Qcml2YXRlX01hY3JvcworICAqIEB7CisgICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgU0RJT19Qcml2YXRlX1ZhcmlhYmxlcworICAqIEB7CisgICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgU0RJT19Qcml2YXRlX0Z1bmN0aW9uUHJvdG90eXBlcworICAqIEB7CisgICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgU0RJT19Qcml2YXRlX0Z1bmN0aW9ucworICAqIEB7CisgICovCisKKy8qKgorICAqIEBicmllZiAgRGVpbml0aWFsaXplcyB0aGUgU0RJTyBwZXJpcGhlcmFsIHJlZ2lzdGVycyB0byB0aGVpciBkZWZhdWx0IHJlc2V0IHZhbHVlcy4KKyAgKiBAcGFyYW0gIE5vbmUKKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgU0RJT19EZUluaXQodm9pZCkKK3sKKyAgU0RJTy0+UE9XRVIgPSAweDAwMDAwMDAwOworICBTRElPLT5DTEtDUiA9IDB4MDAwMDAwMDA7CisgIFNESU8tPkFSRyA9IDB4MDAwMDAwMDA7CisgIFNESU8tPkNNRCA9IDB4MDAwMDAwMDA7CisgIFNESU8tPkRUSU1FUiA9IDB4MDAwMDAwMDA7CisgIFNESU8tPkRMRU4gPSAweDAwMDAwMDAwOworICBTRElPLT5EQ1RSTCA9IDB4MDAwMDAwMDA7CisgIFNESU8tPklDUiA9IDB4MDBDMDA3RkY7CisgIFNESU8tPk1BU0sgPSAweDAwMDAwMDAwOworfQorCisvKioKKyAgKiBAYnJpZWYgIEluaXRpYWxpemVzIHRoZSBTRElPIHBlcmlwaGVyYWwgYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQgCisgICogICAgICAgICBwYXJhbWV0ZXJzIGluIHRoZSBTRElPX0luaXRTdHJ1Y3QuCisgICogQHBhcmFtICBTRElPX0luaXRTdHJ1Y3QgOiBwb2ludGVyIHRvIGEgU0RJT19Jbml0VHlwZURlZiBzdHJ1Y3R1cmUgCisgICogICAgICAgICB0aGF0IGNvbnRhaW5zIHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZvciB0aGUgU0RJTyBwZXJpcGhlcmFsLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBTRElPX0luaXQoU0RJT19Jbml0VHlwZURlZiogU0RJT19Jbml0U3RydWN0KQoreworICB1aW50MzJfdCB0bXByZWcgPSAwOworICAgIAorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfU0RJT19DTE9DS19FREdFKFNESU9fSW5pdFN0cnVjdC0+U0RJT19DbG9ja0VkZ2UpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX1NESU9fQ0xPQ0tfQllQQVNTKFNESU9fSW5pdFN0cnVjdC0+U0RJT19DbG9ja0J5cGFzcykpOworICBhc3NlcnRfcGFyYW0oSVNfU0RJT19DTE9DS19QT1dFUl9TQVZFKFNESU9fSW5pdFN0cnVjdC0+U0RJT19DbG9ja1Bvd2VyU2F2ZSkpOworICBhc3NlcnRfcGFyYW0oSVNfU0RJT19CVVNfV0lERShTRElPX0luaXRTdHJ1Y3QtPlNESU9fQnVzV2lkZSkpOworICBhc3NlcnRfcGFyYW0oSVNfU0RJT19IQVJEV0FSRV9GTE9XX0NPTlRST0woU0RJT19Jbml0U3RydWN0LT5TRElPX0hhcmR3YXJlRmxvd0NvbnRyb2wpKTsgCisgICAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBTRElPIENMS0NSIENvbmZpZ3VyYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gIAorICAvKiBHZXQgdGhlIFNESU8gQ0xLQ1IgdmFsdWUgKi8KKyAgdG1wcmVnID0gU0RJTy0+Q0xLQ1I7CisgIAorICAvKiBDbGVhciBDTEtESVYsIFBXUlNBViwgQllQQVNTLCBXSURCVVMsIE5FR0VER0UsIEhXRkNfRU4gYml0cyAqLworICB0bXByZWcgJj0gQ0xLQ1JfQ0xFQVJfTUFTSzsKKyAgCisgIC8qIFNldCBDTEtESVYgYml0cyBhY2NvcmRpbmcgdG8gU0RJT19DbG9ja0RpdiB2YWx1ZSAqLworICAvKiBTZXQgUFdSU0FWIGJpdCBhY2NvcmRpbmcgdG8gU0RJT19DbG9ja1Bvd2VyU2F2ZSB2YWx1ZSAqLworICAvKiBTZXQgQllQQVNTIGJpdCBhY2NvcmRpbmcgdG8gU0RJT19DbG9ja0J5cGFzcyB2YWx1ZSAqLworICAvKiBTZXQgV0lEQlVTIGJpdHMgYWNjb3JkaW5nIHRvIFNESU9fQnVzV2lkZSB2YWx1ZSAqLworICAvKiBTZXQgTkVHRURHRSBiaXRzIGFjY29yZGluZyB0byBTRElPX0Nsb2NrRWRnZSB2YWx1ZSAqLworICAvKiBTZXQgSFdGQ19FTiBiaXRzIGFjY29yZGluZyB0byBTRElPX0hhcmR3YXJlRmxvd0NvbnRyb2wgdmFsdWUgKi8KKyAgdG1wcmVnIHw9IChTRElPX0luaXRTdHJ1Y3QtPlNESU9fQ2xvY2tEaXYgIHwgU0RJT19Jbml0U3RydWN0LT5TRElPX0Nsb2NrUG93ZXJTYXZlIHwKKyAgICAgICAgICAgICBTRElPX0luaXRTdHJ1Y3QtPlNESU9fQ2xvY2tCeXBhc3MgfCBTRElPX0luaXRTdHJ1Y3QtPlNESU9fQnVzV2lkZSB8CisgICAgICAgICAgICAgU0RJT19Jbml0U3RydWN0LT5TRElPX0Nsb2NrRWRnZSB8IFNESU9fSW5pdFN0cnVjdC0+U0RJT19IYXJkd2FyZUZsb3dDb250cm9sKTsgCisgIAorICAvKiBXcml0ZSB0byBTRElPIENMS0NSICovCisgIFNESU8tPkNMS0NSID0gdG1wcmVnOworfQorCisvKioKKyAgKiBAYnJpZWYgIEZpbGxzIGVhY2ggU0RJT19Jbml0U3RydWN0IG1lbWJlciB3aXRoIGl0cyBkZWZhdWx0IHZhbHVlLgorICAqIEBwYXJhbSAgU0RJT19Jbml0U3RydWN0OiBwb2ludGVyIHRvIGFuIFNESU9fSW5pdFR5cGVEZWYgc3RydWN0dXJlIHdoaWNoIAorICAqICAgd2lsbCBiZSBpbml0aWFsaXplZC4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgU0RJT19TdHJ1Y3RJbml0KFNESU9fSW5pdFR5cGVEZWYqIFNESU9fSW5pdFN0cnVjdCkKK3sKKyAgLyogU0RJT19Jbml0U3RydWN0IG1lbWJlcnMgZGVmYXVsdCB2YWx1ZSAqLworICBTRElPX0luaXRTdHJ1Y3QtPlNESU9fQ2xvY2tEaXYgPSAweDAwOworICBTRElPX0luaXRTdHJ1Y3QtPlNESU9fQ2xvY2tFZGdlID0gU0RJT19DbG9ja0VkZ2VfUmlzaW5nOworICBTRElPX0luaXRTdHJ1Y3QtPlNESU9fQ2xvY2tCeXBhc3MgPSBTRElPX0Nsb2NrQnlwYXNzX0Rpc2FibGU7CisgIFNESU9fSW5pdFN0cnVjdC0+U0RJT19DbG9ja1Bvd2VyU2F2ZSA9IFNESU9fQ2xvY2tQb3dlclNhdmVfRGlzYWJsZTsKKyAgU0RJT19Jbml0U3RydWN0LT5TRElPX0J1c1dpZGUgPSBTRElPX0J1c1dpZGVfMWI7CisgIFNESU9fSW5pdFN0cnVjdC0+U0RJT19IYXJkd2FyZUZsb3dDb250cm9sID0gU0RJT19IYXJkd2FyZUZsb3dDb250cm9sX0Rpc2FibGU7Cit9CisKKy8qKgorICAqIEBicmllZiAgRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgU0RJTyBDbG9jay4KKyAgKiBAcGFyYW0gIE5ld1N0YXRlOiBuZXcgc3RhdGUgb2YgdGhlIFNESU8gQ2xvY2suIFRoaXMgcGFyYW1ldGVyIGNhbiBiZTogRU5BQkxFIG9yIERJU0FCTEUuCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFNESU9fQ2xvY2tDbWQoRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfRlVOQ1RJT05BTF9TVEFURShOZXdTdGF0ZSkpOworICAKKyAgKihfX0lPIHVpbnQzMl90ICopIENMS0NSX0NMS0VOX0JCID0gKHVpbnQzMl90KU5ld1N0YXRlOworfQorCisvKioKKyAgKiBAYnJpZWYgIFNldHMgdGhlIHBvd2VyIHN0YXR1cyBvZiB0aGUgY29udHJvbGxlci4KKyAgKiBAcGFyYW0gIFNESU9fUG93ZXJTdGF0ZTogbmV3IHN0YXRlIG9mIHRoZSBQb3dlciBzdGF0ZS4gCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIFNESU9fUG93ZXJTdGF0ZV9PRkYKKyAgKiAgICAgQGFyZyBTRElPX1Bvd2VyU3RhdGVfT04KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgU0RJT19TZXRQb3dlclN0YXRlKHVpbnQzMl90IFNESU9fUG93ZXJTdGF0ZSkKK3sKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX1NESU9fUE9XRVJfU1RBVEUoU0RJT19Qb3dlclN0YXRlKSk7CisgIAorICBTRElPLT5QT1dFUiAmPSBQV1JfUFdSQ1RSTF9NQVNLOworICBTRElPLT5QT1dFUiB8PSBTRElPX1Bvd2VyU3RhdGU7Cit9CisKKy8qKgorICAqIEBicmllZiAgR2V0cyB0aGUgcG93ZXIgc3RhdHVzIG9mIHRoZSBjb250cm9sbGVyLgorICAqIEBwYXJhbSAgTm9uZQorICAqIEByZXR2YWwgUG93ZXIgc3RhdHVzIG9mIHRoZSBjb250cm9sbGVyLiBUaGUgcmV0dXJuZWQgdmFsdWUgY2FuCisgICogICBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZzoKKyAgKiAtIDB4MDA6IFBvd2VyIE9GRgorICAqIC0gMHgwMjogUG93ZXIgVVAKKyAgKiAtIDB4MDM6IFBvd2VyIE9OIAorICAqLwordWludDMyX3QgU0RJT19HZXRQb3dlclN0YXRlKHZvaWQpCit7CisgIHJldHVybiAoU0RJTy0+UE9XRVIgJiAoflBXUl9QV1JDVFJMX01BU0spKTsKK30KKworLyoqCisgICogQGJyaWVmICBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBTRElPIGludGVycnVwdHMuCisgICogQHBhcmFtICBTRElPX0lUOiBzcGVjaWZpZXMgdGhlIFNESU8gaW50ZXJydXB0IHNvdXJjZXMgdG8gYmUgZW5hYmxlZCBvciBkaXNhYmxlZC4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb3IgYSBjb21iaW5hdGlvbiBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBTRElPX0lUX0NDUkNGQUlMOiBDb21tYW5kIHJlc3BvbnNlIHJlY2VpdmVkIChDUkMgY2hlY2sgZmFpbGVkKSBpbnRlcnJ1cHQKKyAgKiAgICAgQGFyZyBTRElPX0lUX0RDUkNGQUlMOiBEYXRhIGJsb2NrIHNlbnQvcmVjZWl2ZWQgKENSQyBjaGVjayBmYWlsZWQpIGludGVycnVwdAorICAqICAgICBAYXJnIFNESU9fSVRfQ1RJTUVPVVQ6IENvbW1hbmQgcmVzcG9uc2UgdGltZW91dCBpbnRlcnJ1cHQKKyAgKiAgICAgQGFyZyBTRElPX0lUX0RUSU1FT1VUOiBEYXRhIHRpbWVvdXQgaW50ZXJydXB0CisgICogICAgIEBhcmcgU0RJT19JVF9UWFVOREVSUjogVHJhbnNtaXQgRklGTyB1bmRlcnJ1biBlcnJvciBpbnRlcnJ1cHQKKyAgKiAgICAgQGFyZyBTRElPX0lUX1JYT1ZFUlI6ICBSZWNlaXZlZCBGSUZPIG92ZXJydW4gZXJyb3IgaW50ZXJydXB0CisgICogICAgIEBhcmcgU0RJT19JVF9DTURSRU5EOiAgQ29tbWFuZCByZXNwb25zZSByZWNlaXZlZCAoQ1JDIGNoZWNrIHBhc3NlZCkgaW50ZXJydXB0CisgICogICAgIEBhcmcgU0RJT19JVF9DTURTRU5UOiAgQ29tbWFuZCBzZW50IChubyByZXNwb25zZSByZXF1aXJlZCkgaW50ZXJydXB0CisgICogICAgIEBhcmcgU0RJT19JVF9EQVRBRU5EOiAgRGF0YSBlbmQgKGRhdGEgY291bnRlciwgU0RJRENPVU5ULCBpcyB6ZXJvKSBpbnRlcnJ1cHQKKyAgKiAgICAgQGFyZyBTRElPX0lUX1NUQklURVJSOiBTdGFydCBiaXQgbm90IGRldGVjdGVkIG9uIGFsbCBkYXRhIHNpZ25hbHMgaW4gd2lkZSAKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXMgbW9kZSBpbnRlcnJ1cHQKKyAgKiAgICAgQGFyZyBTRElPX0lUX0RCQ0tFTkQ6ICBEYXRhIGJsb2NrIHNlbnQvcmVjZWl2ZWQgKENSQyBjaGVjayBwYXNzZWQpIGludGVycnVwdAorICAqICAgICBAYXJnIFNESU9fSVRfQ01EQUNUOiAgIENvbW1hbmQgdHJhbnNmZXIgaW4gcHJvZ3Jlc3MgaW50ZXJydXB0CisgICogICAgIEBhcmcgU0RJT19JVF9UWEFDVDogICAgRGF0YSB0cmFuc21pdCBpbiBwcm9ncmVzcyBpbnRlcnJ1cHQKKyAgKiAgICAgQGFyZyBTRElPX0lUX1JYQUNUOiAgICBEYXRhIHJlY2VpdmUgaW4gcHJvZ3Jlc3MgaW50ZXJydXB0CisgICogICAgIEBhcmcgU0RJT19JVF9UWEZJRk9IRTogVHJhbnNtaXQgRklGTyBIYWxmIEVtcHR5IGludGVycnVwdAorICAqICAgICBAYXJnIFNESU9fSVRfUlhGSUZPSEY6IFJlY2VpdmUgRklGTyBIYWxmIEZ1bGwgaW50ZXJydXB0CisgICogICAgIEBhcmcgU0RJT19JVF9UWEZJRk9GOiAgVHJhbnNtaXQgRklGTyBmdWxsIGludGVycnVwdAorICAqICAgICBAYXJnIFNESU9fSVRfUlhGSUZPRjogIFJlY2VpdmUgRklGTyBmdWxsIGludGVycnVwdAorICAqICAgICBAYXJnIFNESU9fSVRfVFhGSUZPRTogIFRyYW5zbWl0IEZJRk8gZW1wdHkgaW50ZXJydXB0CisgICogICAgIEBhcmcgU0RJT19JVF9SWEZJRk9FOiAgUmVjZWl2ZSBGSUZPIGVtcHR5IGludGVycnVwdAorICAqICAgICBAYXJnIFNESU9fSVRfVFhEQVZMOiAgIERhdGEgYXZhaWxhYmxlIGluIHRyYW5zbWl0IEZJRk8gaW50ZXJydXB0CisgICogICAgIEBhcmcgU0RJT19JVF9SWERBVkw6ICAgRGF0YSBhdmFpbGFibGUgaW4gcmVjZWl2ZSBGSUZPIGludGVycnVwdAorICAqICAgICBAYXJnIFNESU9fSVRfU0RJT0lUOiAgIFNEIEkvTyBpbnRlcnJ1cHQgcmVjZWl2ZWQgaW50ZXJydXB0CisgICogICAgIEBhcmcgU0RJT19JVF9DRUFUQUVORDogQ0UtQVRBIGNvbW1hbmQgY29tcGxldGlvbiBzaWduYWwgcmVjZWl2ZWQgZm9yIENNRDYxIGludGVycnVwdAorICAqIEBwYXJhbSAgTmV3U3RhdGU6IG5ldyBzdGF0ZSBvZiB0aGUgc3BlY2lmaWVkIFNESU8gaW50ZXJydXB0cy4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZTogRU5BQkxFIG9yIERJU0FCTEUuCisgICogQHJldHZhbCBOb25lIAorICAqLwordm9pZCBTRElPX0lUQ29uZmlnKHVpbnQzMl90IFNESU9fSVQsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSkKK3sKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX1NESU9fSVQoU0RJT19JVCkpOworICBhc3NlcnRfcGFyYW0oSVNfRlVOQ1RJT05BTF9TVEFURShOZXdTdGF0ZSkpOworICAKKyAgaWYgKE5ld1N0YXRlICE9IERJU0FCTEUpCisgIHsKKyAgICAvKiBFbmFibGUgdGhlIFNESU8gaW50ZXJydXB0cyAqLworICAgIFNESU8tPk1BU0sgfD0gU0RJT19JVDsKKyAgfQorICBlbHNlCisgIHsKKyAgICAvKiBEaXNhYmxlIHRoZSBTRElPIGludGVycnVwdHMgKi8KKyAgICBTRElPLT5NQVNLICY9IH5TRElPX0lUOworICB9IAorfQorCisvKioKKyAgKiBAYnJpZWYgIEVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIFNESU8gRE1BIHJlcXVlc3QuCisgICogQHBhcmFtICBOZXdTdGF0ZTogbmV3IHN0YXRlIG9mIHRoZSBzZWxlY3RlZCBTRElPIERNQSByZXF1ZXN0LgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlOiBFTkFCTEUgb3IgRElTQUJMRS4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgU0RJT19ETUFDbWQoRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfRlVOQ1RJT05BTF9TVEFURShOZXdTdGF0ZSkpOworICAKKyAgKihfX0lPIHVpbnQzMl90ICopIERDVFJMX0RNQUVOX0JCID0gKHVpbnQzMl90KU5ld1N0YXRlOworfQorCisvKioKKyAgKiBAYnJpZWYgIEluaXRpYWxpemVzIHRoZSBTRElPIENvbW1hbmQgYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQgCisgICogICAgICAgICBwYXJhbWV0ZXJzIGluIHRoZSBTRElPX0NtZEluaXRTdHJ1Y3QgYW5kIHNlbmQgdGhlIGNvbW1hbmQuCisgICogQHBhcmFtICBTRElPX0NtZEluaXRTdHJ1Y3QgOiBwb2ludGVyIHRvIGEgU0RJT19DbWRJbml0VHlwZURlZiAKKyAgKiAgICAgICAgIHN0cnVjdHVyZSB0aGF0IGNvbnRhaW5zIHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZvciB0aGUgU0RJTyBjb21tYW5kLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBTRElPX1NlbmRDb21tYW5kKFNESU9fQ21kSW5pdFR5cGVEZWYgKlNESU9fQ21kSW5pdFN0cnVjdCkKK3sKKyAgdWludDMyX3QgdG1wcmVnID0gMDsKKyAgCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19TRElPX0NNRF9JTkRFWChTRElPX0NtZEluaXRTdHJ1Y3QtPlNESU9fQ21kSW5kZXgpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX1NESU9fUkVTUE9OU0UoU0RJT19DbWRJbml0U3RydWN0LT5TRElPX1Jlc3BvbnNlKSk7CisgIGFzc2VydF9wYXJhbShJU19TRElPX1dBSVQoU0RJT19DbWRJbml0U3RydWN0LT5TRElPX1dhaXQpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX1NESU9fQ1BTTShTRElPX0NtZEluaXRTdHJ1Y3QtPlNESU9fQ1BTTSkpOworICAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBTRElPIEFSRyBDb25maWd1cmF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisgIC8qIFNldCB0aGUgU0RJTyBBcmd1bWVudCB2YWx1ZSAqLworICBTRElPLT5BUkcgPSBTRElPX0NtZEluaXRTdHJ1Y3QtPlNESU9fQXJndW1lbnQ7CisgIAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFNESU8gQ01EIENvbmZpZ3VyYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gIAorICAvKiBHZXQgdGhlIFNESU8gQ01EIHZhbHVlICovCisgIHRtcHJlZyA9IFNESU8tPkNNRDsKKyAgLyogQ2xlYXIgQ01ESU5ERVgsIFdBSVRSRVNQLCBXQUlUSU5ULCBXQUlUUEVORCwgQ1BTTUVOIGJpdHMgKi8KKyAgdG1wcmVnICY9IENNRF9DTEVBUl9NQVNLOworICAvKiBTZXQgQ01ESU5ERVggYml0cyBhY2NvcmRpbmcgdG8gU0RJT19DbWRJbmRleCB2YWx1ZSAqLworICAvKiBTZXQgV0FJVFJFU1AgYml0cyBhY2NvcmRpbmcgdG8gU0RJT19SZXNwb25zZSB2YWx1ZSAqLworICAvKiBTZXQgV0FJVElOVCBhbmQgV0FJVFBFTkQgYml0cyBhY2NvcmRpbmcgdG8gU0RJT19XYWl0IHZhbHVlICovCisgIC8qIFNldCBDUFNNRU4gYml0cyBhY2NvcmRpbmcgdG8gU0RJT19DUFNNIHZhbHVlICovCisgIHRtcHJlZyB8PSAodWludDMyX3QpU0RJT19DbWRJbml0U3RydWN0LT5TRElPX0NtZEluZGV4IHwgU0RJT19DbWRJbml0U3RydWN0LT5TRElPX1Jlc3BvbnNlCisgICAgICAgICAgIHwgU0RJT19DbWRJbml0U3RydWN0LT5TRElPX1dhaXQgfCBTRElPX0NtZEluaXRTdHJ1Y3QtPlNESU9fQ1BTTTsKKyAgCisgIC8qIFdyaXRlIHRvIFNESU8gQ01EICovCisgIFNESU8tPkNNRCA9IHRtcHJlZzsKK30KKworLyoqCisgICogQGJyaWVmICBGaWxscyBlYWNoIFNESU9fQ21kSW5pdFN0cnVjdCBtZW1iZXIgd2l0aCBpdHMgZGVmYXVsdCB2YWx1ZS4KKyAgKiBAcGFyYW0gIFNESU9fQ21kSW5pdFN0cnVjdDogcG9pbnRlciB0byBhbiBTRElPX0NtZEluaXRUeXBlRGVmIAorICAqICAgICAgICAgc3RydWN0dXJlIHdoaWNoIHdpbGwgYmUgaW5pdGlhbGl6ZWQuCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFNESU9fQ21kU3RydWN0SW5pdChTRElPX0NtZEluaXRUeXBlRGVmKiBTRElPX0NtZEluaXRTdHJ1Y3QpCit7CisgIC8qIFNESU9fQ21kSW5pdFN0cnVjdCBtZW1iZXJzIGRlZmF1bHQgdmFsdWUgKi8KKyAgU0RJT19DbWRJbml0U3RydWN0LT5TRElPX0FyZ3VtZW50ID0gMHgwMDsKKyAgU0RJT19DbWRJbml0U3RydWN0LT5TRElPX0NtZEluZGV4ID0gMHgwMDsKKyAgU0RJT19DbWRJbml0U3RydWN0LT5TRElPX1Jlc3BvbnNlID0gU0RJT19SZXNwb25zZV9ObzsKKyAgU0RJT19DbWRJbml0U3RydWN0LT5TRElPX1dhaXQgPSBTRElPX1dhaXRfTm87CisgIFNESU9fQ21kSW5pdFN0cnVjdC0+U0RJT19DUFNNID0gU0RJT19DUFNNX0Rpc2FibGU7Cit9CisKKy8qKgorICAqIEBicmllZiAgUmV0dXJucyBjb21tYW5kIGluZGV4IG9mIGxhc3QgY29tbWFuZCBmb3Igd2hpY2ggcmVzcG9uc2UgcmVjZWl2ZWQuCisgICogQHBhcmFtICBOb25lCisgICogQHJldHZhbCBSZXR1cm5zIHRoZSBjb21tYW5kIGluZGV4IG9mIHRoZSBsYXN0IGNvbW1hbmQgcmVzcG9uc2UgcmVjZWl2ZWQuCisgICovCit1aW50OF90IFNESU9fR2V0Q29tbWFuZFJlc3BvbnNlKHZvaWQpCit7CisgIHJldHVybiAodWludDhfdCkoU0RJTy0+UkVTUENNRCk7Cit9CisKKy8qKgorICAqIEBicmllZiAgUmV0dXJucyByZXNwb25zZSByZWNlaXZlZCBmcm9tIHRoZSBjYXJkIGZvciB0aGUgbGFzdCBjb21tYW5kLgorICAqIEBwYXJhbSAgU0RJT19SRVNQOiBTcGVjaWZpZXMgdGhlIFNESU8gcmVzcG9uc2UgcmVnaXN0ZXIuIAorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBTRElPX1JFU1AxOiBSZXNwb25zZSBSZWdpc3RlciAxCisgICogICAgIEBhcmcgU0RJT19SRVNQMjogUmVzcG9uc2UgUmVnaXN0ZXIgMgorICAqICAgICBAYXJnIFNESU9fUkVTUDM6IFJlc3BvbnNlIFJlZ2lzdGVyIDMKKyAgKiAgICAgQGFyZyBTRElPX1JFU1A0OiBSZXNwb25zZSBSZWdpc3RlciA0CisgICogQHJldHZhbCBUaGUgQ29ycmVzcG9uZGluZyByZXNwb25zZSByZWdpc3RlciB2YWx1ZS4KKyAgKi8KK3VpbnQzMl90IFNESU9fR2V0UmVzcG9uc2UodWludDMyX3QgU0RJT19SRVNQKQoreworICBfX0lPIHVpbnQzMl90IHRtcCA9IDA7CisKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX1NESU9fUkVTUChTRElPX1JFU1ApKTsKKworICB0bXAgPSBTRElPX1JFU1BfQUREUiArIFNESU9fUkVTUDsKKyAgCisgIHJldHVybiAoKihfX0lPIHVpbnQzMl90ICopIHRtcCk7IAorfQorCisvKioKKyAgKiBAYnJpZWYgIEluaXRpYWxpemVzIHRoZSBTRElPIGRhdGEgcGF0aCBhY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmllZCAKKyAgKiAgIHBhcmFtZXRlcnMgaW4gdGhlIFNESU9fRGF0YUluaXRTdHJ1Y3QuCisgICogQHBhcmFtICBTRElPX0RhdGFJbml0U3RydWN0IDogcG9pbnRlciB0byBhIFNESU9fRGF0YUluaXRUeXBlRGVmIHN0cnVjdHVyZSB0aGF0CisgICogICBjb250YWlucyB0aGUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBmb3IgdGhlIFNESU8gY29tbWFuZC4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgU0RJT19EYXRhQ29uZmlnKFNESU9fRGF0YUluaXRUeXBlRGVmKiBTRElPX0RhdGFJbml0U3RydWN0KQoreworICB1aW50MzJfdCB0bXByZWcgPSAwOworICAKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX1NESU9fREFUQV9MRU5HVEgoU0RJT19EYXRhSW5pdFN0cnVjdC0+U0RJT19EYXRhTGVuZ3RoKSk7CisgIGFzc2VydF9wYXJhbShJU19TRElPX0JMT0NLX1NJWkUoU0RJT19EYXRhSW5pdFN0cnVjdC0+U0RJT19EYXRhQmxvY2tTaXplKSk7CisgIGFzc2VydF9wYXJhbShJU19TRElPX1RSQU5TRkVSX0RJUihTRElPX0RhdGFJbml0U3RydWN0LT5TRElPX1RyYW5zZmVyRGlyKSk7CisgIGFzc2VydF9wYXJhbShJU19TRElPX1RSQU5TRkVSX01PREUoU0RJT19EYXRhSW5pdFN0cnVjdC0+U0RJT19UcmFuc2Zlck1vZGUpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX1NESU9fRFBTTShTRElPX0RhdGFJbml0U3RydWN0LT5TRElPX0RQU00pKTsKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFNESU8gRFRJTUVSIENvbmZpZ3VyYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyAgLyogU2V0IHRoZSBTRElPIERhdGEgVGltZU91dCB2YWx1ZSAqLworICBTRElPLT5EVElNRVIgPSBTRElPX0RhdGFJbml0U3RydWN0LT5TRElPX0RhdGFUaW1lT3V0OworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gU0RJTyBETEVOIENvbmZpZ3VyYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworICAvKiBTZXQgdGhlIFNESU8gRGF0YUxlbmd0aCB2YWx1ZSAqLworICBTRElPLT5ETEVOID0gU0RJT19EYXRhSW5pdFN0cnVjdC0+U0RJT19EYXRhTGVuZ3RoOworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gU0RJTyBEQ1RSTCBDb25maWd1cmF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyAgCisgIC8qIEdldCB0aGUgU0RJTyBEQ1RSTCB2YWx1ZSAqLworICB0bXByZWcgPSBTRElPLT5EQ1RSTDsKKyAgLyogQ2xlYXIgREVOLCBEVE1PREUsIERURElSIGFuZCBEQkNLU0laRSBiaXRzICovCisgIHRtcHJlZyAmPSBEQ1RSTF9DTEVBUl9NQVNLOworICAvKiBTZXQgREVOIGJpdCBhY2NvcmRpbmcgdG8gU0RJT19EUFNNIHZhbHVlICovCisgIC8qIFNldCBEVE1PREUgYml0IGFjY29yZGluZyB0byBTRElPX1RyYW5zZmVyTW9kZSB2YWx1ZSAqLworICAvKiBTZXQgRFRESVIgYml0IGFjY29yZGluZyB0byBTRElPX1RyYW5zZmVyRGlyIHZhbHVlICovCisgIC8qIFNldCBEQkNLU0laRSBiaXRzIGFjY29yZGluZyB0byBTRElPX0RhdGFCbG9ja1NpemUgdmFsdWUgKi8KKyAgdG1wcmVnIHw9ICh1aW50MzJfdClTRElPX0RhdGFJbml0U3RydWN0LT5TRElPX0RhdGFCbG9ja1NpemUgfCBTRElPX0RhdGFJbml0U3RydWN0LT5TRElPX1RyYW5zZmVyRGlyCisgICAgICAgICAgIHwgU0RJT19EYXRhSW5pdFN0cnVjdC0+U0RJT19UcmFuc2Zlck1vZGUgfCBTRElPX0RhdGFJbml0U3RydWN0LT5TRElPX0RQU007CisKKyAgLyogV3JpdGUgdG8gU0RJTyBEQ1RSTCAqLworICBTRElPLT5EQ1RSTCA9IHRtcHJlZzsKK30KKworLyoqCisgICogQGJyaWVmICBGaWxscyBlYWNoIFNESU9fRGF0YUluaXRTdHJ1Y3QgbWVtYmVyIHdpdGggaXRzIGRlZmF1bHQgdmFsdWUuCisgICogQHBhcmFtICBTRElPX0RhdGFJbml0U3RydWN0OiBwb2ludGVyIHRvIGFuIFNESU9fRGF0YUluaXRUeXBlRGVmIHN0cnVjdHVyZSB3aGljaAorICAqICAgICAgICAgd2lsbCBiZSBpbml0aWFsaXplZC4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgU0RJT19EYXRhU3RydWN0SW5pdChTRElPX0RhdGFJbml0VHlwZURlZiogU0RJT19EYXRhSW5pdFN0cnVjdCkKK3sKKyAgLyogU0RJT19EYXRhSW5pdFN0cnVjdCBtZW1iZXJzIGRlZmF1bHQgdmFsdWUgKi8KKyAgU0RJT19EYXRhSW5pdFN0cnVjdC0+U0RJT19EYXRhVGltZU91dCA9IDB4RkZGRkZGRkY7CisgIFNESU9fRGF0YUluaXRTdHJ1Y3QtPlNESU9fRGF0YUxlbmd0aCA9IDB4MDA7CisgIFNESU9fRGF0YUluaXRTdHJ1Y3QtPlNESU9fRGF0YUJsb2NrU2l6ZSA9IFNESU9fRGF0YUJsb2NrU2l6ZV8xYjsKKyAgU0RJT19EYXRhSW5pdFN0cnVjdC0+U0RJT19UcmFuc2ZlckRpciA9IFNESU9fVHJhbnNmZXJEaXJfVG9DYXJkOworICBTRElPX0RhdGFJbml0U3RydWN0LT5TRElPX1RyYW5zZmVyTW9kZSA9IFNESU9fVHJhbnNmZXJNb2RlX0Jsb2NrOyAgCisgIFNESU9fRGF0YUluaXRTdHJ1Y3QtPlNESU9fRFBTTSA9IFNESU9fRFBTTV9EaXNhYmxlOworfQorCisvKioKKyAgKiBAYnJpZWYgIFJldHVybnMgbnVtYmVyIG9mIHJlbWFpbmluZyBkYXRhIGJ5dGVzIHRvIGJlIHRyYW5zZmVycmVkLgorICAqIEBwYXJhbSAgTm9uZQorICAqIEByZXR2YWwgTnVtYmVyIG9mIHJlbWFpbmluZyBkYXRhIGJ5dGVzIHRvIGJlIHRyYW5zZmVycmVkCisgICovCit1aW50MzJfdCBTRElPX0dldERhdGFDb3VudGVyKHZvaWQpCit7IAorICByZXR1cm4gU0RJTy0+RENPVU5UOworfQorCisvKioKKyAgKiBAYnJpZWYgIFJlYWQgb25lIGRhdGEgd29yZCBmcm9tIFJ4IEZJRk8uCisgICogQHBhcmFtICBOb25lCisgICogQHJldHZhbCBEYXRhIHJlY2VpdmVkCisgICovCit1aW50MzJfdCBTRElPX1JlYWREYXRhKHZvaWQpCit7IAorICByZXR1cm4gU0RJTy0+RklGTzsKK30KKworLyoqCisgICogQGJyaWVmICBXcml0ZSBvbmUgZGF0YSB3b3JkIHRvIFR4IEZJRk8uCisgICogQHBhcmFtICBEYXRhOiAzMi1iaXQgZGF0YSB3b3JkIHRvIHdyaXRlLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBTRElPX1dyaXRlRGF0YSh1aW50MzJfdCBEYXRhKQoreyAKKyAgU0RJTy0+RklGTyA9IERhdGE7Cit9CisKKy8qKgorICAqIEBicmllZiAgUmV0dXJucyB0aGUgbnVtYmVyIG9mIHdvcmRzIGxlZnQgdG8gYmUgd3JpdHRlbiB0byBvciByZWFkIGZyb20gRklGTy4JCisgICogQHBhcmFtICBOb25lCisgICogQHJldHZhbCBSZW1haW5pbmcgbnVtYmVyIG9mIHdvcmRzLgorICAqLwordWludDMyX3QgU0RJT19HZXRGSUZPQ291bnQodm9pZCkKK3sgCisgIHJldHVybiBTRElPLT5GSUZPQ05UOworfQorCisvKioKKyAgKiBAYnJpZWYgIFN0YXJ0cyB0aGUgU0QgSS9PIFJlYWQgV2FpdCBvcGVyYXRpb24uCQorICAqIEBwYXJhbSAgTmV3U3RhdGU6IG5ldyBzdGF0ZSBvZiB0aGUgU3RhcnQgU0RJTyBSZWFkIFdhaXQgb3BlcmF0aW9uLiAKKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZTogRU5BQkxFIG9yIERJU0FCTEUuCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFNESU9fU3RhcnRTRElPUmVhZFdhaXQoRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKQoreyAKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX0ZVTkNUSU9OQUxfU1RBVEUoTmV3U3RhdGUpKTsKKyAgCisgICooX19JTyB1aW50MzJfdCAqKSBEQ1RSTF9SV1NUQVJUX0JCID0gKHVpbnQzMl90KSBOZXdTdGF0ZTsKK30KKworLyoqCisgICogQGJyaWVmICBTdG9wcyB0aGUgU0QgSS9PIFJlYWQgV2FpdCBvcGVyYXRpb24uCQorICAqIEBwYXJhbSAgTmV3U3RhdGU6IG5ldyBzdGF0ZSBvZiB0aGUgU3RvcCBTRElPIFJlYWQgV2FpdCBvcGVyYXRpb24uIAorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlOiBFTkFCTEUgb3IgRElTQUJMRS4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgU0RJT19TdG9wU0RJT1JlYWRXYWl0KEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSkKK3sgCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19GVU5DVElPTkFMX1NUQVRFKE5ld1N0YXRlKSk7CisgIAorICAqKF9fSU8gdWludDMyX3QgKikgRENUUkxfUldTVE9QX0JCID0gKHVpbnQzMl90KSBOZXdTdGF0ZTsKK30KKworLyoqCisgICogQGJyaWVmICBTZXRzIG9uZSBvZiB0aGUgdHdvIG9wdGlvbnMgb2YgaW5zZXJ0aW5nIHJlYWQgd2FpdCBpbnRlcnZhbC4KKyAgKiBAcGFyYW0gIFNESU9fUmVhZFdhaXRNb2RlOiBTRCBJL08gUmVhZCBXYWl0IG9wZXJhdGlvbiBtb2RlLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlOgorICAqICAgICBAYXJnIFNESU9fUmVhZFdhaXRNb2RlX0NMSzogUmVhZCBXYWl0IGNvbnRyb2wgYnkgc3RvcHBpbmcgU0RJT0NMSworICAqICAgICBAYXJnIFNESU9fUmVhZFdhaXRNb2RlX0RBVEEyOiBSZWFkIFdhaXQgY29udHJvbCB1c2luZyBTRElPX0RBVEEyCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFNESU9fU2V0U0RJT1JlYWRXYWl0TW9kZSh1aW50MzJfdCBTRElPX1JlYWRXYWl0TW9kZSkKK3sKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX1NESU9fUkVBRFdBSVRfTU9ERShTRElPX1JlYWRXYWl0TW9kZSkpOworICAKKyAgKihfX0lPIHVpbnQzMl90ICopIERDVFJMX1JXTU9EX0JCID0gU0RJT19SZWFkV2FpdE1vZGU7Cit9CisKKy8qKgorICAqIEBicmllZiAgRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgU0QgSS9PIE1vZGUgT3BlcmF0aW9uLgorICAqIEBwYXJhbSAgTmV3U3RhdGU6IG5ldyBzdGF0ZSBvZiBTRElPIHNwZWNpZmljIG9wZXJhdGlvbi4gCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmU6IEVOQUJMRSBvciBESVNBQkxFLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBTRElPX1NldFNESU9PcGVyYXRpb24oRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKQoreyAKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX0ZVTkNUSU9OQUxfU1RBVEUoTmV3U3RhdGUpKTsKKyAgCisgICooX19JTyB1aW50MzJfdCAqKSBEQ1RSTF9TRElPRU5fQkIgPSAodWludDMyX3QpTmV3U3RhdGU7Cit9CisKKy8qKgorICAqIEBicmllZiAgRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgU0QgSS9PIE1vZGUgc3VzcGVuZCBjb21tYW5kIHNlbmRpbmcuCisgICogQHBhcmFtICBOZXdTdGF0ZTogbmV3IHN0YXRlIG9mIHRoZSBTRCBJL08gTW9kZSBzdXNwZW5kIGNvbW1hbmQuCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmU6IEVOQUJMRSBvciBESVNBQkxFLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBTRElPX1NlbmRTRElPU3VzcGVuZENtZChGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpCit7IAorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfRlVOQ1RJT05BTF9TVEFURShOZXdTdGF0ZSkpOworICAKKyAgKihfX0lPIHVpbnQzMl90ICopIENNRF9TRElPU1VTUEVORF9CQiA9ICh1aW50MzJfdClOZXdTdGF0ZTsKK30KKworLyoqCisgICogQGJyaWVmICBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBjb21tYW5kIGNvbXBsZXRpb24gc2lnbmFsLgorICAqIEBwYXJhbSAgTmV3U3RhdGU6IG5ldyBzdGF0ZSBvZiBjb21tYW5kIGNvbXBsZXRpb24gc2lnbmFsLiAKKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZTogRU5BQkxFIG9yIERJU0FCTEUuCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFNESU9fQ29tbWFuZENvbXBsZXRpb25DbWQoRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKQoreyAKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX0ZVTkNUSU9OQUxfU1RBVEUoTmV3U3RhdGUpKTsKKyAgCisgICooX19JTyB1aW50MzJfdCAqKSBDTURfRU5DTURDT01QTF9CQiA9ICh1aW50MzJfdClOZXdTdGF0ZTsKK30KKworLyoqCisgICogQGJyaWVmICBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBDRS1BVEEgaW50ZXJydXB0LgorICAqIEBwYXJhbSAgTmV3U3RhdGU6IG5ldyBzdGF0ZSBvZiBDRS1BVEEgaW50ZXJydXB0LiBUaGlzIHBhcmFtZXRlciBjYW4gYmU6IEVOQUJMRSBvciBESVNBQkxFLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBTRElPX0NFQVRBSVRDbWQoRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKQoreyAKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX0ZVTkNUSU9OQUxfU1RBVEUoTmV3U3RhdGUpKTsKKyAgCisgICooX19JTyB1aW50MzJfdCAqKSBDTURfTklFTl9CQiA9ICh1aW50MzJfdCkoKH4oKHVpbnQzMl90KU5ld1N0YXRlKSkgJiAoKHVpbnQzMl90KTB4MSkpOworfQorCisvKioKKyAgKiBAYnJpZWYgIFNlbmRzIENFLUFUQSBjb21tYW5kIChDTUQ2MSkuCisgICogQHBhcmFtICBOZXdTdGF0ZTogbmV3IHN0YXRlIG9mIENFLUFUQSBjb21tYW5kLiBUaGlzIHBhcmFtZXRlciBjYW4gYmU6IEVOQUJMRSBvciBESVNBQkxFLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBTRElPX1NlbmRDRUFUQUNtZChGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpCit7IAorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfRlVOQ1RJT05BTF9TVEFURShOZXdTdGF0ZSkpOworICAKKyAgKihfX0lPIHVpbnQzMl90ICopIENNRF9BVEFDTURfQkIgPSAodWludDMyX3QpTmV3U3RhdGU7Cit9CisKKy8qKgorICAqIEBicmllZiAgQ2hlY2tzIHdoZXRoZXIgdGhlIHNwZWNpZmllZCBTRElPIGZsYWcgaXMgc2V0IG9yIG5vdC4KKyAgKiBAcGFyYW0gIFNESU9fRkxBRzogc3BlY2lmaWVzIHRoZSBmbGFnIHRvIGNoZWNrLiAKKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICAgIEBhcmcgU0RJT19GTEFHX0NDUkNGQUlMOiBDb21tYW5kIHJlc3BvbnNlIHJlY2VpdmVkIChDUkMgY2hlY2sgZmFpbGVkKQorICAqICAgICBAYXJnIFNESU9fRkxBR19EQ1JDRkFJTDogRGF0YSBibG9jayBzZW50L3JlY2VpdmVkIChDUkMgY2hlY2sgZmFpbGVkKQorICAqICAgICBAYXJnIFNESU9fRkxBR19DVElNRU9VVDogQ29tbWFuZCByZXNwb25zZSB0aW1lb3V0CisgICogICAgIEBhcmcgU0RJT19GTEFHX0RUSU1FT1VUOiBEYXRhIHRpbWVvdXQKKyAgKiAgICAgQGFyZyBTRElPX0ZMQUdfVFhVTkRFUlI6IFRyYW5zbWl0IEZJRk8gdW5kZXJydW4gZXJyb3IKKyAgKiAgICAgQGFyZyBTRElPX0ZMQUdfUlhPVkVSUjogIFJlY2VpdmVkIEZJRk8gb3ZlcnJ1biBlcnJvcgorICAqICAgICBAYXJnIFNESU9fRkxBR19DTURSRU5EOiAgQ29tbWFuZCByZXNwb25zZSByZWNlaXZlZCAoQ1JDIGNoZWNrIHBhc3NlZCkKKyAgKiAgICAgQGFyZyBTRElPX0ZMQUdfQ01EU0VOVDogIENvbW1hbmQgc2VudCAobm8gcmVzcG9uc2UgcmVxdWlyZWQpCisgICogICAgIEBhcmcgU0RJT19GTEFHX0RBVEFFTkQ6ICBEYXRhIGVuZCAoZGF0YSBjb3VudGVyLCBTRElEQ09VTlQsIGlzIHplcm8pCisgICogICAgIEBhcmcgU0RJT19GTEFHX1NUQklURVJSOiBTdGFydCBiaXQgbm90IGRldGVjdGVkIG9uIGFsbCBkYXRhIHNpZ25hbHMgaW4gd2lkZSAKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1cyBtb2RlLgorICAqICAgICBAYXJnIFNESU9fRkxBR19EQkNLRU5EOiAgRGF0YSBibG9jayBzZW50L3JlY2VpdmVkIChDUkMgY2hlY2sgcGFzc2VkKQorICAqICAgICBAYXJnIFNESU9fRkxBR19DTURBQ1Q6ICAgQ29tbWFuZCB0cmFuc2ZlciBpbiBwcm9ncmVzcworICAqICAgICBAYXJnIFNESU9fRkxBR19UWEFDVDogICAgRGF0YSB0cmFuc21pdCBpbiBwcm9ncmVzcworICAqICAgICBAYXJnIFNESU9fRkxBR19SWEFDVDogICAgRGF0YSByZWNlaXZlIGluIHByb2dyZXNzCisgICogICAgIEBhcmcgU0RJT19GTEFHX1RYRklGT0hFOiBUcmFuc21pdCBGSUZPIEhhbGYgRW1wdHkKKyAgKiAgICAgQGFyZyBTRElPX0ZMQUdfUlhGSUZPSEY6IFJlY2VpdmUgRklGTyBIYWxmIEZ1bGwKKyAgKiAgICAgQGFyZyBTRElPX0ZMQUdfVFhGSUZPRjogIFRyYW5zbWl0IEZJRk8gZnVsbAorICAqICAgICBAYXJnIFNESU9fRkxBR19SWEZJRk9GOiAgUmVjZWl2ZSBGSUZPIGZ1bGwKKyAgKiAgICAgQGFyZyBTRElPX0ZMQUdfVFhGSUZPRTogIFRyYW5zbWl0IEZJRk8gZW1wdHkKKyAgKiAgICAgQGFyZyBTRElPX0ZMQUdfUlhGSUZPRTogIFJlY2VpdmUgRklGTyBlbXB0eQorICAqICAgICBAYXJnIFNESU9fRkxBR19UWERBVkw6ICAgRGF0YSBhdmFpbGFibGUgaW4gdHJhbnNtaXQgRklGTworICAqICAgICBAYXJnIFNESU9fRkxBR19SWERBVkw6ICAgRGF0YSBhdmFpbGFibGUgaW4gcmVjZWl2ZSBGSUZPCisgICogICAgIEBhcmcgU0RJT19GTEFHX1NESU9JVDogICBTRCBJL08gaW50ZXJydXB0IHJlY2VpdmVkCisgICogICAgIEBhcmcgU0RJT19GTEFHX0NFQVRBRU5EOiBDRS1BVEEgY29tbWFuZCBjb21wbGV0aW9uIHNpZ25hbCByZWNlaXZlZCBmb3IgQ01ENjEKKyAgKiBAcmV0dmFsIFRoZSBuZXcgc3RhdGUgb2YgU0RJT19GTEFHIChTRVQgb3IgUkVTRVQpLgorICAqLworRmxhZ1N0YXR1cyBTRElPX0dldEZsYWdTdGF0dXModWludDMyX3QgU0RJT19GTEFHKQoreyAKKyAgRmxhZ1N0YXR1cyBiaXRzdGF0dXMgPSBSRVNFVDsKKyAgCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19TRElPX0ZMQUcoU0RJT19GTEFHKSk7CisgIAorICBpZiAoKFNESU8tPlNUQSAmIFNESU9fRkxBRykgIT0gKHVpbnQzMl90KVJFU0VUKQorICB7CisgICAgYml0c3RhdHVzID0gU0VUOworICB9CisgIGVsc2UKKyAgeworICAgIGJpdHN0YXR1cyA9IFJFU0VUOworICB9CisgIHJldHVybiBiaXRzdGF0dXM7Cit9CisKKy8qKgorICAqIEBicmllZiAgQ2xlYXJzIHRoZSBTRElPJ3MgcGVuZGluZyBmbGFncy4KKyAgKiBAcGFyYW0gIFNESU9fRkxBRzogc3BlY2lmaWVzIHRoZSBmbGFnIHRvIGNsZWFyLiAgCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9yIGEgY29tYmluYXRpb24gb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICAgIEBhcmcgU0RJT19GTEFHX0NDUkNGQUlMOiBDb21tYW5kIHJlc3BvbnNlIHJlY2VpdmVkIChDUkMgY2hlY2sgZmFpbGVkKQorICAqICAgICBAYXJnIFNESU9fRkxBR19EQ1JDRkFJTDogRGF0YSBibG9jayBzZW50L3JlY2VpdmVkIChDUkMgY2hlY2sgZmFpbGVkKQorICAqICAgICBAYXJnIFNESU9fRkxBR19DVElNRU9VVDogQ29tbWFuZCByZXNwb25zZSB0aW1lb3V0CisgICogICAgIEBhcmcgU0RJT19GTEFHX0RUSU1FT1VUOiBEYXRhIHRpbWVvdXQKKyAgKiAgICAgQGFyZyBTRElPX0ZMQUdfVFhVTkRFUlI6IFRyYW5zbWl0IEZJRk8gdW5kZXJydW4gZXJyb3IKKyAgKiAgICAgQGFyZyBTRElPX0ZMQUdfUlhPVkVSUjogIFJlY2VpdmVkIEZJRk8gb3ZlcnJ1biBlcnJvcgorICAqICAgICBAYXJnIFNESU9fRkxBR19DTURSRU5EOiAgQ29tbWFuZCByZXNwb25zZSByZWNlaXZlZCAoQ1JDIGNoZWNrIHBhc3NlZCkKKyAgKiAgICAgQGFyZyBTRElPX0ZMQUdfQ01EU0VOVDogIENvbW1hbmQgc2VudCAobm8gcmVzcG9uc2UgcmVxdWlyZWQpCisgICogICAgIEBhcmcgU0RJT19GTEFHX0RBVEFFTkQ6ICBEYXRhIGVuZCAoZGF0YSBjb3VudGVyLCBTRElEQ09VTlQsIGlzIHplcm8pCisgICogICAgIEBhcmcgU0RJT19GTEFHX1NUQklURVJSOiBTdGFydCBiaXQgbm90IGRldGVjdGVkIG9uIGFsbCBkYXRhIHNpZ25hbHMgaW4gd2lkZSAKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1cyBtb2RlCisgICogICAgIEBhcmcgU0RJT19GTEFHX0RCQ0tFTkQ6ICBEYXRhIGJsb2NrIHNlbnQvcmVjZWl2ZWQgKENSQyBjaGVjayBwYXNzZWQpCisgICogICAgIEBhcmcgU0RJT19GTEFHX1NESU9JVDogICBTRCBJL08gaW50ZXJydXB0IHJlY2VpdmVkCisgICogICAgIEBhcmcgU0RJT19GTEFHX0NFQVRBRU5EOiBDRS1BVEEgY29tbWFuZCBjb21wbGV0aW9uIHNpZ25hbCByZWNlaXZlZCBmb3IgQ01ENjEKKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgU0RJT19DbGVhckZsYWcodWludDMyX3QgU0RJT19GTEFHKQoreyAKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX1NESU9fQ0xFQVJfRkxBRyhTRElPX0ZMQUcpKTsKKyAgIAorICBTRElPLT5JQ1IgPSBTRElPX0ZMQUc7Cit9CisKKy8qKgorICAqIEBicmllZiAgQ2hlY2tzIHdoZXRoZXIgdGhlIHNwZWNpZmllZCBTRElPIGludGVycnVwdCBoYXMgb2NjdXJyZWQgb3Igbm90LgorICAqIEBwYXJhbSAgU0RJT19JVDogc3BlY2lmaWVzIHRoZSBTRElPIGludGVycnVwdCBzb3VyY2UgdG8gY2hlY2suIAorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBTRElPX0lUX0NDUkNGQUlMOiBDb21tYW5kIHJlc3BvbnNlIHJlY2VpdmVkIChDUkMgY2hlY2sgZmFpbGVkKSBpbnRlcnJ1cHQKKyAgKiAgICAgQGFyZyBTRElPX0lUX0RDUkNGQUlMOiBEYXRhIGJsb2NrIHNlbnQvcmVjZWl2ZWQgKENSQyBjaGVjayBmYWlsZWQpIGludGVycnVwdAorICAqICAgICBAYXJnIFNESU9fSVRfQ1RJTUVPVVQ6IENvbW1hbmQgcmVzcG9uc2UgdGltZW91dCBpbnRlcnJ1cHQKKyAgKiAgICAgQGFyZyBTRElPX0lUX0RUSU1FT1VUOiBEYXRhIHRpbWVvdXQgaW50ZXJydXB0CisgICogICAgIEBhcmcgU0RJT19JVF9UWFVOREVSUjogVHJhbnNtaXQgRklGTyB1bmRlcnJ1biBlcnJvciBpbnRlcnJ1cHQKKyAgKiAgICAgQGFyZyBTRElPX0lUX1JYT1ZFUlI6ICBSZWNlaXZlZCBGSUZPIG92ZXJydW4gZXJyb3IgaW50ZXJydXB0CisgICogICAgIEBhcmcgU0RJT19JVF9DTURSRU5EOiAgQ29tbWFuZCByZXNwb25zZSByZWNlaXZlZCAoQ1JDIGNoZWNrIHBhc3NlZCkgaW50ZXJydXB0CisgICogICAgIEBhcmcgU0RJT19JVF9DTURTRU5UOiAgQ29tbWFuZCBzZW50IChubyByZXNwb25zZSByZXF1aXJlZCkgaW50ZXJydXB0CisgICogICAgIEBhcmcgU0RJT19JVF9EQVRBRU5EOiAgRGF0YSBlbmQgKGRhdGEgY291bnRlciwgU0RJRENPVU5ULCBpcyB6ZXJvKSBpbnRlcnJ1cHQKKyAgKiAgICAgQGFyZyBTRElPX0lUX1NUQklURVJSOiBTdGFydCBiaXQgbm90IGRldGVjdGVkIG9uIGFsbCBkYXRhIHNpZ25hbHMgaW4gd2lkZSAKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXMgbW9kZSBpbnRlcnJ1cHQKKyAgKiAgICAgQGFyZyBTRElPX0lUX0RCQ0tFTkQ6ICBEYXRhIGJsb2NrIHNlbnQvcmVjZWl2ZWQgKENSQyBjaGVjayBwYXNzZWQpIGludGVycnVwdAorICAqICAgICBAYXJnIFNESU9fSVRfQ01EQUNUOiAgIENvbW1hbmQgdHJhbnNmZXIgaW4gcHJvZ3Jlc3MgaW50ZXJydXB0CisgICogICAgIEBhcmcgU0RJT19JVF9UWEFDVDogICAgRGF0YSB0cmFuc21pdCBpbiBwcm9ncmVzcyBpbnRlcnJ1cHQKKyAgKiAgICAgQGFyZyBTRElPX0lUX1JYQUNUOiAgICBEYXRhIHJlY2VpdmUgaW4gcHJvZ3Jlc3MgaW50ZXJydXB0CisgICogICAgIEBhcmcgU0RJT19JVF9UWEZJRk9IRTogVHJhbnNtaXQgRklGTyBIYWxmIEVtcHR5IGludGVycnVwdAorICAqICAgICBAYXJnIFNESU9fSVRfUlhGSUZPSEY6IFJlY2VpdmUgRklGTyBIYWxmIEZ1bGwgaW50ZXJydXB0CisgICogICAgIEBhcmcgU0RJT19JVF9UWEZJRk9GOiAgVHJhbnNtaXQgRklGTyBmdWxsIGludGVycnVwdAorICAqICAgICBAYXJnIFNESU9fSVRfUlhGSUZPRjogIFJlY2VpdmUgRklGTyBmdWxsIGludGVycnVwdAorICAqICAgICBAYXJnIFNESU9fSVRfVFhGSUZPRTogIFRyYW5zbWl0IEZJRk8gZW1wdHkgaW50ZXJydXB0CisgICogICAgIEBhcmcgU0RJT19JVF9SWEZJRk9FOiAgUmVjZWl2ZSBGSUZPIGVtcHR5IGludGVycnVwdAorICAqICAgICBAYXJnIFNESU9fSVRfVFhEQVZMOiAgIERhdGEgYXZhaWxhYmxlIGluIHRyYW5zbWl0IEZJRk8gaW50ZXJydXB0CisgICogICAgIEBhcmcgU0RJT19JVF9SWERBVkw6ICAgRGF0YSBhdmFpbGFibGUgaW4gcmVjZWl2ZSBGSUZPIGludGVycnVwdAorICAqICAgICBAYXJnIFNESU9fSVRfU0RJT0lUOiAgIFNEIEkvTyBpbnRlcnJ1cHQgcmVjZWl2ZWQgaW50ZXJydXB0CisgICogICAgIEBhcmcgU0RJT19JVF9DRUFUQUVORDogQ0UtQVRBIGNvbW1hbmQgY29tcGxldGlvbiBzaWduYWwgcmVjZWl2ZWQgZm9yIENNRDYxIGludGVycnVwdAorICAqIEByZXR2YWwgVGhlIG5ldyBzdGF0ZSBvZiBTRElPX0lUIChTRVQgb3IgUkVTRVQpLgorICAqLworSVRTdGF0dXMgU0RJT19HZXRJVFN0YXR1cyh1aW50MzJfdCBTRElPX0lUKQoreyAKKyAgSVRTdGF0dXMgYml0c3RhdHVzID0gUkVTRVQ7CisgIAorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfU0RJT19HRVRfSVQoU0RJT19JVCkpOworICBpZiAoKFNESU8tPlNUQSAmIFNESU9fSVQpICE9ICh1aW50MzJfdClSRVNFVCkgIAorICB7CisgICAgYml0c3RhdHVzID0gU0VUOworICB9CisgIGVsc2UKKyAgeworICAgIGJpdHN0YXR1cyA9IFJFU0VUOworICB9CisgIHJldHVybiBiaXRzdGF0dXM7Cit9CisKKy8qKgorICAqIEBicmllZiAgQ2xlYXJzIHRoZSBTRElPJ3MgaW50ZXJydXB0IHBlbmRpbmcgYml0cy4KKyAgKiBAcGFyYW0gIFNESU9fSVQ6IHNwZWNpZmllcyB0aGUgaW50ZXJydXB0IHBlbmRpbmcgYml0IHRvIGNsZWFyLiAKKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb3IgYSBjb21iaW5hdGlvbiBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBTRElPX0lUX0NDUkNGQUlMOiBDb21tYW5kIHJlc3BvbnNlIHJlY2VpdmVkIChDUkMgY2hlY2sgZmFpbGVkKSBpbnRlcnJ1cHQKKyAgKiAgICAgQGFyZyBTRElPX0lUX0RDUkNGQUlMOiBEYXRhIGJsb2NrIHNlbnQvcmVjZWl2ZWQgKENSQyBjaGVjayBmYWlsZWQpIGludGVycnVwdAorICAqICAgICBAYXJnIFNESU9fSVRfQ1RJTUVPVVQ6IENvbW1hbmQgcmVzcG9uc2UgdGltZW91dCBpbnRlcnJ1cHQKKyAgKiAgICAgQGFyZyBTRElPX0lUX0RUSU1FT1VUOiBEYXRhIHRpbWVvdXQgaW50ZXJydXB0CisgICogICAgIEBhcmcgU0RJT19JVF9UWFVOREVSUjogVHJhbnNtaXQgRklGTyB1bmRlcnJ1biBlcnJvciBpbnRlcnJ1cHQKKyAgKiAgICAgQGFyZyBTRElPX0lUX1JYT1ZFUlI6ICBSZWNlaXZlZCBGSUZPIG92ZXJydW4gZXJyb3IgaW50ZXJydXB0CisgICogICAgIEBhcmcgU0RJT19JVF9DTURSRU5EOiAgQ29tbWFuZCByZXNwb25zZSByZWNlaXZlZCAoQ1JDIGNoZWNrIHBhc3NlZCkgaW50ZXJydXB0CisgICogICAgIEBhcmcgU0RJT19JVF9DTURTRU5UOiAgQ29tbWFuZCBzZW50IChubyByZXNwb25zZSByZXF1aXJlZCkgaW50ZXJydXB0CisgICogICAgIEBhcmcgU0RJT19JVF9EQVRBRU5EOiAgRGF0YSBlbmQgKGRhdGEgY291bnRlciwgU0RJRENPVU5ULCBpcyB6ZXJvKSBpbnRlcnJ1cHQKKyAgKiAgICAgQGFyZyBTRElPX0lUX1NUQklURVJSOiBTdGFydCBiaXQgbm90IGRldGVjdGVkIG9uIGFsbCBkYXRhIHNpZ25hbHMgaW4gd2lkZSAKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXMgbW9kZSBpbnRlcnJ1cHQKKyAgKiAgICAgQGFyZyBTRElPX0lUX1NESU9JVDogICBTRCBJL08gaW50ZXJydXB0IHJlY2VpdmVkIGludGVycnVwdAorICAqICAgICBAYXJnIFNESU9fSVRfQ0VBVEFFTkQ6IENFLUFUQSBjb21tYW5kIGNvbXBsZXRpb24gc2lnbmFsIHJlY2VpdmVkIGZvciBDTUQ2MQorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBTRElPX0NsZWFySVRQZW5kaW5nQml0KHVpbnQzMl90IFNESU9fSVQpCit7IAorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfU0RJT19DTEVBUl9JVChTRElPX0lUKSk7CisgICAKKyAgU0RJTy0+SUNSID0gU0RJT19JVDsKK30KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCAyMDExIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL3N0X2Z3X2xpYi9zcmMvc3RtMzJmMTB4X3NwaS5jIGIvc3RfZndfbGliL3NyYy9zdG0zMmYxMHhfc3BpLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGVjNjViMgotLS0gL2Rldi9udWxsCisrKyBiL3N0X2Z3X2xpYi9zcmMvc3RtMzJmMTB4X3NwaS5jCkBAIC0wLDAgKzEsOTA4IEBACisvKioKKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICogQGZpbGUgICAgc3RtMzJmMTB4X3NwaS5jCisgICogQGF1dGhvciAgTUNEIEFwcGxpY2F0aW9uIFRlYW0KKyAgKiBAdmVyc2lvbiBWMy41LjAKKyAgKiBAZGF0ZSAgICAxMS1NYXJjaC0yMDExCisgICogQGJyaWVmICAgVGhpcyBmaWxlIHByb3ZpZGVzIGFsbCB0aGUgU1BJIGZpcm13YXJlIGZ1bmN0aW9ucy4KKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICogQGF0dGVudGlvbgorICAqCisgICogVEhFIFBSRVNFTlQgRklSTVdBUkUgV0hJQ0ggSVMgRk9SIEdVSURBTkNFIE9OTFkgQUlNUyBBVCBQUk9WSURJTkcgQ1VTVE9NRVJTCisgICogV0lUSCBDT0RJTkcgSU5GT1JNQVRJT04gUkVHQVJESU5HIFRIRUlSIFBST0RVQ1RTIElOIE9SREVSIEZPUiBUSEVNIFRPIFNBVkUKKyAgKiBUSU1FLiBBUyBBIFJFU1VMVCwgU1RNSUNST0VMRUNUUk9OSUNTIFNIQUxMIE5PVCBCRSBIRUxEIExJQUJMRSBGT1IgQU5ZCisgICogRElSRUNULCBJTkRJUkVDVCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgV0lUSCBSRVNQRUNUIFRPIEFOWSBDTEFJTVMgQVJJU0lORworICAqIEZST00gVEhFIENPTlRFTlQgT0YgU1VDSCBGSVJNV0FSRSBBTkQvT1IgVEhFIFVTRSBNQURFIEJZIENVU1RPTUVSUyBPRiBUSEUKKyAgKiBDT0RJTkcgSU5GT1JNQVRJT04gQ09OVEFJTkVEIEhFUkVJTiBJTiBDT05ORUNUSU9OIFdJVEggVEhFSVIgUFJPRFVDVFMuCisgICoKKyAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ09QWVJJR0hUIDIwMTEgU1RNaWNyb2VsZWN0cm9uaWNzPC9jZW50ZXI+PC9oMj4KKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICovCisKKy8qIEluY2x1ZGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisjaW5jbHVkZSAic3RtMzJmMTB4X3NwaS5oIgorI2luY2x1ZGUgInN0bTMyZjEweF9yY2MuaCIKKworLyoqIEBhZGR0b2dyb3VwIFNUTTMyRjEweF9TdGRQZXJpcGhfRHJpdmVyCisgICogQHsKKyAgKi8KKworLyoqIEBkZWZncm91cCBTUEkgCisgICogQGJyaWVmIFNQSSBkcml2ZXIgbW9kdWxlcworICAqIEB7CisgICovIAorCisvKiogQGRlZmdyb3VwIFNQSV9Qcml2YXRlX1R5cGVzRGVmaW5pdGlvbnMKKyAgKiBAeworICAqLworCisvKioKKyAgKiBAfQorICAqLyAKKworCisvKiogQGRlZmdyb3VwIFNQSV9Qcml2YXRlX0RlZmluZXMKKyAgKiBAeworICAqLworCisvKiBTUEkgU1BFIG1hc2sgKi8KKyNkZWZpbmUgQ1IxX1NQRV9TZXQgICAgICAgICAgKCh1aW50MTZfdCkweDAwNDApCisjZGVmaW5lIENSMV9TUEVfUmVzZXQgICAgICAgICgodWludDE2X3QpMHhGRkJGKQorCisvKiBJMlMgSTJTRSBtYXNrICovCisjZGVmaW5lIEkyU0NGR1JfSTJTRV9TZXQgICAgICgodWludDE2X3QpMHgwNDAwKQorI2RlZmluZSBJMlNDRkdSX0kyU0VfUmVzZXQgICAoKHVpbnQxNl90KTB4RkJGRikKKworLyogU1BJIENSQ05leHQgbWFzayAqLworI2RlZmluZSBDUjFfQ1JDTmV4dF9TZXQgICAgICAoKHVpbnQxNl90KTB4MTAwMCkKKworLyogU1BJIENSQ0VOIG1hc2sgKi8KKyNkZWZpbmUgQ1IxX0NSQ0VOX1NldCAgICAgICAgKCh1aW50MTZfdCkweDIwMDApCisjZGVmaW5lIENSMV9DUkNFTl9SZXNldCAgICAgICgodWludDE2X3QpMHhERkZGKQorCisvKiBTUEkgU1NPRSBtYXNrICovCisjZGVmaW5lIENSMl9TU09FX1NldCAgICAgICAgICgodWludDE2X3QpMHgwMDA0KQorI2RlZmluZSBDUjJfU1NPRV9SZXNldCAgICAgICAoKHVpbnQxNl90KTB4RkZGQikKKworLyogU1BJIHJlZ2lzdGVycyBNYXNrcyAqLworI2RlZmluZSBDUjFfQ0xFQVJfTWFzayAgICAgICAoKHVpbnQxNl90KTB4MzA0MCkKKyNkZWZpbmUgSTJTQ0ZHUl9DTEVBUl9NYXNrICAgKCh1aW50MTZfdCkweEYwNDApCisKKy8qIFNQSSBvciBJMlMgbW9kZSBzZWxlY3Rpb24gbWFza3MgKi8KKyNkZWZpbmUgU1BJX01vZGVfU2VsZWN0ICAgICAgKCh1aW50MTZfdCkweEY3RkYpCisjZGVmaW5lIEkyU19Nb2RlX1NlbGVjdCAgICAgICgodWludDE2X3QpMHgwODAwKSAKKworLyogSTJTIGNsb2NrIHNvdXJjZSBzZWxlY3Rpb24gbWFza3MgKi8KKyNkZWZpbmUgSTJTMl9DTE9DS19TUkMgICAgICAgKCh1aW50MzJfdCkoMHgwMDAyMDAwMCkpCisjZGVmaW5lIEkyUzNfQ0xPQ0tfU1JDICAgICAgICgodWludDMyX3QpKDB4MDAwNDAwMDApKQorI2RlZmluZSBJMlNfTVVMX01BU0sgICAgICAgICAoKHVpbnQzMl90KSgweDAwMDBGMDAwKSkKKyNkZWZpbmUgSTJTX0RJVl9NQVNLICAgICAgICAgKCh1aW50MzJfdCkoMHgwMDAwMDBGMCkpCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgU1BJX1ByaXZhdGVfTWFjcm9zCisgICogQHsKKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBTUElfUHJpdmF0ZV9WYXJpYWJsZXMKKyAgKiBAeworICAqLworCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIFNQSV9Qcml2YXRlX0Z1bmN0aW9uUHJvdG90eXBlcworICAqIEB7CisgICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgU1BJX1ByaXZhdGVfRnVuY3Rpb25zCisgICogQHsKKyAgKi8KKworLyoqCisgICogQGJyaWVmICBEZWluaXRpYWxpemVzIHRoZSBTUEl4IHBlcmlwaGVyYWwgcmVnaXN0ZXJzIHRvIHRoZWlyIGRlZmF1bHQKKyAgKiAgICAgICAgIHJlc2V0IHZhbHVlcyAoQWZmZWN0cyBhbHNvIHRoZSBJMlNzKS4KKyAgKiBAcGFyYW0gIFNQSXg6IHdoZXJlIHggY2FuIGJlIDEsIDIgb3IgMyB0byBzZWxlY3QgdGhlIFNQSSBwZXJpcGhlcmFsLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBTUElfSTJTX0RlSW5pdChTUElfVHlwZURlZiogU1BJeCkKK3sKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX1NQSV9BTExfUEVSSVBIKFNQSXgpKTsKKworICBpZiAoU1BJeCA9PSBTUEkxKQorICB7CisgICAgLyogRW5hYmxlIFNQSTEgcmVzZXQgc3RhdGUgKi8KKyAgICBSQ0NfQVBCMlBlcmlwaFJlc2V0Q21kKFJDQ19BUEIyUGVyaXBoX1NQSTEsIEVOQUJMRSk7CisgICAgLyogUmVsZWFzZSBTUEkxIGZyb20gcmVzZXQgc3RhdGUgKi8KKyAgICBSQ0NfQVBCMlBlcmlwaFJlc2V0Q21kKFJDQ19BUEIyUGVyaXBoX1NQSTEsIERJU0FCTEUpOworICB9CisgIGVsc2UgaWYgKFNQSXggPT0gU1BJMikKKyAgeworICAgIC8qIEVuYWJsZSBTUEkyIHJlc2V0IHN0YXRlICovCisgICAgUkNDX0FQQjFQZXJpcGhSZXNldENtZChSQ0NfQVBCMVBlcmlwaF9TUEkyLCBFTkFCTEUpOworICAgIC8qIFJlbGVhc2UgU1BJMiBmcm9tIHJlc2V0IHN0YXRlICovCisgICAgUkNDX0FQQjFQZXJpcGhSZXNldENtZChSQ0NfQVBCMVBlcmlwaF9TUEkyLCBESVNBQkxFKTsKKyAgfQorICBlbHNlCisgIHsKKyAgICBpZiAoU1BJeCA9PSBTUEkzKQorICAgIHsKKyAgICAgIC8qIEVuYWJsZSBTUEkzIHJlc2V0IHN0YXRlICovCisgICAgICBSQ0NfQVBCMVBlcmlwaFJlc2V0Q21kKFJDQ19BUEIxUGVyaXBoX1NQSTMsIEVOQUJMRSk7CisgICAgICAvKiBSZWxlYXNlIFNQSTMgZnJvbSByZXNldCBzdGF0ZSAqLworICAgICAgUkNDX0FQQjFQZXJpcGhSZXNldENtZChSQ0NfQVBCMVBlcmlwaF9TUEkzLCBESVNBQkxFKTsKKyAgICB9CisgIH0KK30KKworLyoqCisgICogQGJyaWVmICBJbml0aWFsaXplcyB0aGUgU1BJeCBwZXJpcGhlcmFsIGFjY29yZGluZyB0byB0aGUgc3BlY2lmaWVkIAorICAqICAgICAgICAgcGFyYW1ldGVycyBpbiB0aGUgU1BJX0luaXRTdHJ1Y3QuCisgICogQHBhcmFtICBTUEl4OiB3aGVyZSB4IGNhbiBiZSAxLCAyIG9yIDMgdG8gc2VsZWN0IHRoZSBTUEkgcGVyaXBoZXJhbC4KKyAgKiBAcGFyYW0gIFNQSV9Jbml0U3RydWN0OiBwb2ludGVyIHRvIGEgU1BJX0luaXRUeXBlRGVmIHN0cnVjdHVyZSB0aGF0CisgICogICAgICAgICBjb250YWlucyB0aGUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBmb3IgdGhlIHNwZWNpZmllZCBTUEkgcGVyaXBoZXJhbC4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgU1BJX0luaXQoU1BJX1R5cGVEZWYqIFNQSXgsIFNQSV9Jbml0VHlwZURlZiogU1BJX0luaXRTdHJ1Y3QpCit7CisgIHVpbnQxNl90IHRtcHJlZyA9IDA7CisgIAorICAvKiBjaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfU1BJX0FMTF9QRVJJUEgoU1BJeCkpOyAgIAorICAKKyAgLyogQ2hlY2sgdGhlIFNQSSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19TUElfRElSRUNUSU9OX01PREUoU1BJX0luaXRTdHJ1Y3QtPlNQSV9EaXJlY3Rpb24pKTsKKyAgYXNzZXJ0X3BhcmFtKElTX1NQSV9NT0RFKFNQSV9Jbml0U3RydWN0LT5TUElfTW9kZSkpOworICBhc3NlcnRfcGFyYW0oSVNfU1BJX0RBVEFTSVpFKFNQSV9Jbml0U3RydWN0LT5TUElfRGF0YVNpemUpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX1NQSV9DUE9MKFNQSV9Jbml0U3RydWN0LT5TUElfQ1BPTCkpOworICBhc3NlcnRfcGFyYW0oSVNfU1BJX0NQSEEoU1BJX0luaXRTdHJ1Y3QtPlNQSV9DUEhBKSk7CisgIGFzc2VydF9wYXJhbShJU19TUElfTlNTKFNQSV9Jbml0U3RydWN0LT5TUElfTlNTKSk7CisgIGFzc2VydF9wYXJhbShJU19TUElfQkFVRFJBVEVfUFJFU0NBTEVSKFNQSV9Jbml0U3RydWN0LT5TUElfQmF1ZFJhdGVQcmVzY2FsZXIpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX1NQSV9GSVJTVF9CSVQoU1BJX0luaXRTdHJ1Y3QtPlNQSV9GaXJzdEJpdCkpOworICBhc3NlcnRfcGFyYW0oSVNfU1BJX0NSQ19QT0xZTk9NSUFMKFNQSV9Jbml0U3RydWN0LT5TUElfQ1JDUG9seW5vbWlhbCkpOworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gU1BJeCBDUjEgQ29uZmlndXJhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworICAvKiBHZXQgdGhlIFNQSXggQ1IxIHZhbHVlICovCisgIHRtcHJlZyA9IFNQSXgtPkNSMTsKKyAgLyogQ2xlYXIgQklESU1vZGUsIEJJRElPRSwgUnhPTkxZLCBTU00sIFNTSSwgTFNCRmlyc3QsIEJSLCBNU1RSLCBDUE9MIGFuZCBDUEhBIGJpdHMgKi8KKyAgdG1wcmVnICY9IENSMV9DTEVBUl9NYXNrOworICAvKiBDb25maWd1cmUgU1BJeDogZGlyZWN0aW9uLCBOU1MgbWFuYWdlbWVudCwgZmlyc3QgdHJhbnNtaXR0ZWQgYml0LCBCYXVkUmF0ZSBwcmVzY2FsZXIKKyAgICAgbWFzdGVyL3NhbHZlIG1vZGUsIENQT0wgYW5kIENQSEEgKi8KKyAgLyogU2V0IEJJREltb2RlLCBCSURJT0UgYW5kIFJ4T05MWSBiaXRzIGFjY29yZGluZyB0byBTUElfRGlyZWN0aW9uIHZhbHVlICovCisgIC8qIFNldCBTU00sIFNTSSBhbmQgTVNUUiBiaXRzIGFjY29yZGluZyB0byBTUElfTW9kZSBhbmQgU1BJX05TUyB2YWx1ZXMgKi8KKyAgLyogU2V0IExTQkZpcnN0IGJpdCBhY2NvcmRpbmcgdG8gU1BJX0ZpcnN0Qml0IHZhbHVlICovCisgIC8qIFNldCBCUiBiaXRzIGFjY29yZGluZyB0byBTUElfQmF1ZFJhdGVQcmVzY2FsZXIgdmFsdWUgKi8KKyAgLyogU2V0IENQT0wgYml0IGFjY29yZGluZyB0byBTUElfQ1BPTCB2YWx1ZSAqLworICAvKiBTZXQgQ1BIQSBiaXQgYWNjb3JkaW5nIHRvIFNQSV9DUEhBIHZhbHVlICovCisgIHRtcHJlZyB8PSAodWludDE2X3QpKCh1aW50MzJfdClTUElfSW5pdFN0cnVjdC0+U1BJX0RpcmVjdGlvbiB8IFNQSV9Jbml0U3RydWN0LT5TUElfTW9kZSB8CisgICAgICAgICAgICAgICAgICBTUElfSW5pdFN0cnVjdC0+U1BJX0RhdGFTaXplIHwgU1BJX0luaXRTdHJ1Y3QtPlNQSV9DUE9MIHwgIAorICAgICAgICAgICAgICAgICAgU1BJX0luaXRTdHJ1Y3QtPlNQSV9DUEhBIHwgU1BJX0luaXRTdHJ1Y3QtPlNQSV9OU1MgfCAgCisgICAgICAgICAgICAgICAgICBTUElfSW5pdFN0cnVjdC0+U1BJX0JhdWRSYXRlUHJlc2NhbGVyIHwgU1BJX0luaXRTdHJ1Y3QtPlNQSV9GaXJzdEJpdCk7CisgIC8qIFdyaXRlIHRvIFNQSXggQ1IxICovCisgIFNQSXgtPkNSMSA9IHRtcHJlZzsKKyAgCisgIC8qIEFjdGl2YXRlIHRoZSBTUEkgbW9kZSAoUmVzZXQgSTJTTU9EIGJpdCBpbiBJMlNDRkdSIHJlZ2lzdGVyKSAqLworICBTUEl4LT5JMlNDRkdSICY9IFNQSV9Nb2RlX1NlbGVjdDsJCQorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gU1BJeCBDUkNQT0xZIENvbmZpZ3VyYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworICAvKiBXcml0ZSB0byBTUEl4IENSQ1BPTFkgKi8KKyAgU1BJeC0+Q1JDUFIgPSBTUElfSW5pdFN0cnVjdC0+U1BJX0NSQ1BvbHlub21pYWw7Cit9CisKKy8qKgorICAqIEBicmllZiAgSW5pdGlhbGl6ZXMgdGhlIFNQSXggcGVyaXBoZXJhbCBhY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmllZCAKKyAgKiAgICAgICAgIHBhcmFtZXRlcnMgaW4gdGhlIEkyU19Jbml0U3RydWN0LgorICAqIEBwYXJhbSAgU1BJeDogd2hlcmUgeCBjYW4gYmUgIDIgb3IgMyB0byBzZWxlY3QgdGhlIFNQSSBwZXJpcGhlcmFsCisgICogICAgICAgICAoY29uZmlndXJlZCBpbiBJMlMgbW9kZSkuCisgICogQHBhcmFtICBJMlNfSW5pdFN0cnVjdDogcG9pbnRlciB0byBhbiBJMlNfSW5pdFR5cGVEZWYgc3RydWN0dXJlIHRoYXQKKyAgKiAgICAgICAgIGNvbnRhaW5zIHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZvciB0aGUgc3BlY2lmaWVkIFNQSSBwZXJpcGhlcmFsCisgICogICAgICAgICBjb25maWd1cmVkIGluIEkyUyBtb2RlLgorICAqIEBub3RlCisgICogIFRoZSBmdW5jdGlvbiBjYWxjdWxhdGVzIHRoZSBvcHRpbWFsIHByZXNjYWxlciBuZWVkZWQgdG8gb2J0YWluIHRoZSBtb3N0IAorICAqICBhY2N1cmF0ZSBhdWRpbyBmcmVxdWVuY3kgKGRlcGVuZGluZyBvbiB0aGUgSTJTIGNsb2NrIHNvdXJjZSwgdGhlIFBMTCB2YWx1ZXMgCisgICogIGFuZCB0aGUgcHJvZHVjdCBjb25maWd1cmF0aW9uKS4gQnV0IGluIGNhc2UgdGhlIHByZXNjYWxlciB2YWx1ZSBpcyBncmVhdGVyIAorICAqICB0aGFuIDUxMSwgdGhlIGRlZmF1bHQgdmFsdWUgKDB4MDIpIHdpbGwgYmUgY29uZmlndXJlZCBpbnN0ZWFkLiAgKiAgIAorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBJMlNfSW5pdChTUElfVHlwZURlZiogU1BJeCwgSTJTX0luaXRUeXBlRGVmKiBJMlNfSW5pdFN0cnVjdCkKK3sKKyAgdWludDE2X3QgdG1wcmVnID0gMCwgaTJzZGl2ID0gMiwgaTJzb2RkID0gMCwgcGFja2V0bGVuZ3RoID0gMTsKKyAgdWludDMyX3QgdG1wID0gMDsKKyAgUkNDX0Nsb2Nrc1R5cGVEZWYgUkNDX0Nsb2NrczsKKyAgdWludDMyX3Qgc291cmNlY2xvY2sgPSAwOworICAKKyAgLyogQ2hlY2sgdGhlIEkyUyBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19TUElfMjNfUEVSSVBIKFNQSXgpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0kyU19NT0RFKEkyU19Jbml0U3RydWN0LT5JMlNfTW9kZSkpOworICBhc3NlcnRfcGFyYW0oSVNfSTJTX1NUQU5EQVJEKEkyU19Jbml0U3RydWN0LT5JMlNfU3RhbmRhcmQpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0kyU19EQVRBX0ZPUk1BVChJMlNfSW5pdFN0cnVjdC0+STJTX0RhdGFGb3JtYXQpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0kyU19NQ0xLX09VVFBVVChJMlNfSW5pdFN0cnVjdC0+STJTX01DTEtPdXRwdXQpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0kyU19BVURJT19GUkVRKEkyU19Jbml0U3RydWN0LT5JMlNfQXVkaW9GcmVxKSk7CisgIGFzc2VydF9wYXJhbShJU19JMlNfQ1BPTChJMlNfSW5pdFN0cnVjdC0+STJTX0NQT0wpKTsgIAorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFNQSXggSTJTQ0ZHUiAmIEkyU1BSIENvbmZpZ3VyYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0qLworICAvKiBDbGVhciBJMlNNT0QsIEkyU0UsIEkyU0NGRywgUENNU1lOQywgSTJTU1RELCBDS1BPTCwgREFUTEVOIGFuZCBDSExFTiBiaXRzICovCisgIFNQSXgtPkkyU0NGR1IgJj0gSTJTQ0ZHUl9DTEVBUl9NYXNrOyAKKyAgU1BJeC0+STJTUFIgPSAweDAwMDI7CisgIAorICAvKiBHZXQgdGhlIEkyU0NGR1IgcmVnaXN0ZXIgdmFsdWUgKi8KKyAgdG1wcmVnID0gU1BJeC0+STJTQ0ZHUjsKKyAgCisgIC8qIElmIHRoZSBkZWZhdWx0IHZhbHVlIGhhcyB0byBiZSB3cml0dGVuLCByZWluaXRpYWxpemUgaTJzZGl2IGFuZCBpMnNvZGQqLworICBpZihJMlNfSW5pdFN0cnVjdC0+STJTX0F1ZGlvRnJlcSA9PSBJMlNfQXVkaW9GcmVxX0RlZmF1bHQpCisgIHsKKyAgICBpMnNvZGQgPSAodWludDE2X3QpMDsKKyAgICBpMnNkaXYgPSAodWludDE2X3QpMjsgICAKKyAgfQorICAvKiBJZiB0aGUgcmVxdWVzdGVkIGF1ZGlvIGZyZXF1ZW5jeSBpcyBub3QgdGhlIGRlZmF1bHQsIGNvbXB1dGUgdGhlIHByZXNjYWxlciAqLworICBlbHNlCisgIHsKKyAgICAvKiBDaGVjayB0aGUgZnJhbWUgbGVuZ3RoIChGb3IgdGhlIFByZXNjYWxlciBjb21wdXRpbmcpICovCisgICAgaWYoSTJTX0luaXRTdHJ1Y3QtPkkyU19EYXRhRm9ybWF0ID09IEkyU19EYXRhRm9ybWF0XzE2YikKKyAgICB7CisgICAgICAvKiBQYWNrZXQgbGVuZ3RoIGlzIDE2IGJpdHMgKi8KKyAgICAgIHBhY2tldGxlbmd0aCA9IDE7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAvKiBQYWNrZXQgbGVuZ3RoIGlzIDMyIGJpdHMgKi8KKyAgICAgIHBhY2tldGxlbmd0aCA9IDI7CisgICAgfQorCisgICAgLyogR2V0IHRoZSBJMlMgY2xvY2sgc291cmNlIG1hc2sgZGVwZW5kaW5nIG9uIHRoZSBwZXJpcGhlcmFsIG51bWJlciAqLworICAgIGlmKCgodWludDMyX3QpU1BJeCkgPT0gU1BJMl9CQVNFKQorICAgIHsKKyAgICAgIC8qIFRoZSBtYXNrIGlzIHJlbGF0aXZlIHRvIEkyUzIgKi8KKyAgICAgIHRtcCA9IEkyUzJfQ0xPQ0tfU1JDOworICAgIH0KKyAgICBlbHNlIAorICAgIHsKKyAgICAgIC8qIFRoZSBtYXNrIGlzIHJlbGF0aXZlIHRvIEkyUzMgKi8gICAgICAKKyAgICAgIHRtcCA9IEkyUzNfQ0xPQ0tfU1JDOworICAgIH0KKworICAgIC8qIENoZWNrIHRoZSBJMlMgY2xvY2sgc291cmNlIGNvbmZpZ3VyYXRpb24gZGVwZW5kaW5nIG9uIHRoZSBEZXZpY2U6CisgICAgICAgT25seSBDb25uZWN0aXZpdHkgbGluZSBkZXZpY2VzIGhhdmUgdGhlIFBMTDMgVkNPIGNsb2NrICovCisjaWZkZWYgU1RNMzJGMTBYX0NMCisgICAgaWYoKFJDQy0+Q0ZHUjIgJiB0bXApICE9IDApCisgICAgeworICAgICAgLyogR2V0IHRoZSBjb25maWd1cmF0aW9uIGJpdHMgb2YgUkNDIFBMTDMgbXVsdGlwbGllciAqLworICAgICAgdG1wID0gKHVpbnQzMl90KSgoUkNDLT5DRkdSMiAmIEkyU19NVUxfTUFTSykgPj4gMTIpOworCisgICAgICAvKiBHZXQgdGhlIHZhbHVlIG9mIHRoZSBQTEwzIG11bHRpcGxpZXIgKi8gICAgICAKKyAgICAgIGlmKCh0bXAgPiA1KSAmJiAodG1wIDwgMTUpKQorICAgICAgeworICAgICAgICAvKiBNdWx0aXBsaWVyIGlzIGJldHdlZW4gOCBhbmQgMTQgKHZhbHVlIDE1IGlzIGZvcmJpZGRlbikgKi8KKyAgICAgICAgdG1wICs9IDI7CisgICAgICB9CisgICAgICBlbHNlCisgICAgICB7CisgICAgICAgIGlmICh0bXAgPT0gMTUpCisgICAgICAgIHsKKyAgICAgICAgICAvKiBNdWx0aXBsaWVyIGlzIDIwICovCisgICAgICAgICAgdG1wID0gMjA7CisgICAgICAgIH0KKyAgICAgIH0gICAgICAKKyAgICAgIC8qIEdldCB0aGUgUFJFRElWMiB2YWx1ZSAqLworICAgICAgc291cmNlY2xvY2sgPSAodWludDMyX3QpKCgoUkNDLT5DRkdSMiAmIEkyU19ESVZfTUFTSykgPj4gNCkgKyAxKTsKKyAgICAgIAorICAgICAgLyogQ2FsY3VsYXRlIHRoZSBTb3VyY2UgQ2xvY2sgZnJlcXVlbmN5IGJhc2VkIG9uIFBMTDMgYW5kIFBSRURJVjIgdmFsdWVzICovCisgICAgICBzb3VyY2VjbG9jayA9ICh1aW50MzJfdCkgKChIU0VfVmFsdWUgLyBzb3VyY2VjbG9jaykgKiB0bXAgKiAyKTsgCisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAvKiBJMlMgQ2xvY2sgc291cmNlIGlzIFN5c3RlbSBjbG9jazogR2V0IFN5c3RlbSBDbG9jayBmcmVxdWVuY3kgKi8KKyAgICAgIFJDQ19HZXRDbG9ja3NGcmVxKCZSQ0NfQ2xvY2tzKTsgICAgICAKKyAgICAgIAorICAgICAgLyogR2V0IHRoZSBzb3VyY2UgY2xvY2sgdmFsdWU6IGJhc2VkIG9uIFN5c3RlbSBDbG9jayB2YWx1ZSAqLworICAgICAgc291cmNlY2xvY2sgPSBSQ0NfQ2xvY2tzLlNZU0NMS19GcmVxdWVuY3k7CisgICAgfSAgICAgICAgCisjZWxzZSAvKiBTVE0zMkYxMFhfSEQgKi8KKyAgICAvKiBJMlMgQ2xvY2sgc291cmNlIGlzIFN5c3RlbSBjbG9jazogR2V0IFN5c3RlbSBDbG9jayBmcmVxdWVuY3kgKi8KKyAgICBSQ0NfR2V0Q2xvY2tzRnJlcSgmUkNDX0Nsb2Nrcyk7ICAgICAgCisgICAgICAKKyAgICAvKiBHZXQgdGhlIHNvdXJjZSBjbG9jayB2YWx1ZTogYmFzZWQgb24gU3lzdGVtIENsb2NrIHZhbHVlICovCisgICAgc291cmNlY2xvY2sgPSBSQ0NfQ2xvY2tzLlNZU0NMS19GcmVxdWVuY3k7ICAgIAorI2VuZGlmIC8qIFNUTTMyRjEwWF9DTCAqLyAgICAKKworICAgIC8qIENvbXB1dGUgdGhlIFJlYWwgZGl2aWRlciBkZXBlbmRpbmcgb24gdGhlIE1DTEsgb3V0cHV0IHN0YXRlIHdpdGggYSBmbG9hdGluZyBwb2ludCAqLworICAgIGlmKEkyU19Jbml0U3RydWN0LT5JMlNfTUNMS091dHB1dCA9PSBJMlNfTUNMS091dHB1dF9FbmFibGUpCisgICAgeworICAgICAgLyogTUNMSyBvdXRwdXQgaXMgZW5hYmxlZCAqLworICAgICAgdG1wID0gKHVpbnQxNl90KSgoKCgoc291cmNlY2xvY2sgLyAyNTYpICogMTApIC8gSTJTX0luaXRTdHJ1Y3QtPkkyU19BdWRpb0ZyZXEpKSArIDUpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgLyogTUNMSyBvdXRwdXQgaXMgZGlzYWJsZWQgKi8KKyAgICAgIHRtcCA9ICh1aW50MTZfdCkoKCgoKHNvdXJjZWNsb2NrIC8gKDMyICogcGFja2V0bGVuZ3RoKSkgKjEwICkgLyBJMlNfSW5pdFN0cnVjdC0+STJTX0F1ZGlvRnJlcSkpICsgNSk7CisgICAgfQorICAgIAorICAgIC8qIFJlbW92ZSB0aGUgZmxvYXRpbmcgcG9pbnQgKi8KKyAgICB0bXAgPSB0bXAgLyAxMDsgIAorICAgICAgCisgICAgLyogQ2hlY2sgdGhlIHBhcml0eSBvZiB0aGUgZGl2aWRlciAqLworICAgIGkyc29kZCA9ICh1aW50MTZfdCkodG1wICYgKHVpbnQxNl90KTB4MDAwMSk7CisgICAKKyAgICAvKiBDb21wdXRlIHRoZSBpMnNkaXYgcHJlc2NhbGVyICovCisgICAgaTJzZGl2ID0gKHVpbnQxNl90KSgodG1wIC0gaTJzb2RkKSAvIDIpOworICAgCisgICAgLyogR2V0IHRoZSBNYXNrIGZvciB0aGUgT2RkIGJpdCAoU1BJX0kyU1BSWzhdKSByZWdpc3RlciAqLworICAgIGkyc29kZCA9ICh1aW50MTZfdCkgKGkyc29kZCA8PCA4KTsKKyAgfQorICAKKyAgLyogVGVzdCBpZiB0aGUgZGl2aWRlciBpcyAxIG9yIDAgb3IgZ3JlYXRlciB0aGFuIDB4RkYgKi8KKyAgaWYgKChpMnNkaXYgPCAyKSB8fCAoaTJzZGl2ID4gMHhGRikpCisgIHsKKyAgICAvKiBTZXQgdGhlIGRlZmF1bHQgdmFsdWVzICovCisgICAgaTJzZGl2ID0gMjsKKyAgICBpMnNvZGQgPSAwOworICB9CisKKyAgLyogV3JpdGUgdG8gU1BJeCBJMlNQUiByZWdpc3RlciB0aGUgY29tcHV0ZWQgdmFsdWUgKi8KKyAgU1BJeC0+STJTUFIgPSAodWludDE2X3QpKGkyc2RpdiB8ICh1aW50MTZfdCkoaTJzb2RkIHwgKHVpbnQxNl90KUkyU19Jbml0U3RydWN0LT5JMlNfTUNMS091dHB1dCkpOyAgCisgCisgIC8qIENvbmZpZ3VyZSB0aGUgSTJTIHdpdGggdGhlIFNQSV9Jbml0U3RydWN0IHZhbHVlcyAqLworICB0bXByZWcgfD0gKHVpbnQxNl90KShJMlNfTW9kZV9TZWxlY3QgfCAodWludDE2X3QpKEkyU19Jbml0U3RydWN0LT5JMlNfTW9kZSB8IFwKKyAgICAgICAgICAgICAgICAgICh1aW50MTZfdCkoSTJTX0luaXRTdHJ1Y3QtPkkyU19TdGFuZGFyZCB8ICh1aW50MTZfdCkoSTJTX0luaXRTdHJ1Y3QtPkkyU19EYXRhRm9ybWF0IHwgXAorICAgICAgICAgICAgICAgICAgKHVpbnQxNl90KUkyU19Jbml0U3RydWN0LT5JMlNfQ1BPTCkpKSk7CisgCisgIC8qIFdyaXRlIHRvIFNQSXggSTJTQ0ZHUiAqLyAgCisgIFNQSXgtPkkyU0NGR1IgPSB0bXByZWc7ICAgCit9CisKKy8qKgorICAqIEBicmllZiAgRmlsbHMgZWFjaCBTUElfSW5pdFN0cnVjdCBtZW1iZXIgd2l0aCBpdHMgZGVmYXVsdCB2YWx1ZS4KKyAgKiBAcGFyYW0gIFNQSV9Jbml0U3RydWN0IDogcG9pbnRlciB0byBhIFNQSV9Jbml0VHlwZURlZiBzdHJ1Y3R1cmUgd2hpY2ggd2lsbCBiZSBpbml0aWFsaXplZC4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgU1BJX1N0cnVjdEluaXQoU1BJX0luaXRUeXBlRGVmKiBTUElfSW5pdFN0cnVjdCkKK3sKKy8qLS0tLS0tLS0tLS0tLS0tIFJlc2V0IFNQSSBpbml0IHN0cnVjdHVyZSBwYXJhbWV0ZXJzIHZhbHVlcyAtLS0tLS0tLS0tLS0tLS0tLSovCisgIC8qIEluaXRpYWxpemUgdGhlIFNQSV9EaXJlY3Rpb24gbWVtYmVyICovCisgIFNQSV9Jbml0U3RydWN0LT5TUElfRGlyZWN0aW9uID0gU1BJX0RpcmVjdGlvbl8yTGluZXNfRnVsbER1cGxleDsKKyAgLyogaW5pdGlhbGl6ZSB0aGUgU1BJX01vZGUgbWVtYmVyICovCisgIFNQSV9Jbml0U3RydWN0LT5TUElfTW9kZSA9IFNQSV9Nb2RlX1NsYXZlOworICAvKiBpbml0aWFsaXplIHRoZSBTUElfRGF0YVNpemUgbWVtYmVyICovCisgIFNQSV9Jbml0U3RydWN0LT5TUElfRGF0YVNpemUgPSBTUElfRGF0YVNpemVfOGI7CisgIC8qIEluaXRpYWxpemUgdGhlIFNQSV9DUE9MIG1lbWJlciAqLworICBTUElfSW5pdFN0cnVjdC0+U1BJX0NQT0wgPSBTUElfQ1BPTF9Mb3c7CisgIC8qIEluaXRpYWxpemUgdGhlIFNQSV9DUEhBIG1lbWJlciAqLworICBTUElfSW5pdFN0cnVjdC0+U1BJX0NQSEEgPSBTUElfQ1BIQV8xRWRnZTsKKyAgLyogSW5pdGlhbGl6ZSB0aGUgU1BJX05TUyBtZW1iZXIgKi8KKyAgU1BJX0luaXRTdHJ1Y3QtPlNQSV9OU1MgPSBTUElfTlNTX0hhcmQ7CisgIC8qIEluaXRpYWxpemUgdGhlIFNQSV9CYXVkUmF0ZVByZXNjYWxlciBtZW1iZXIgKi8KKyAgU1BJX0luaXRTdHJ1Y3QtPlNQSV9CYXVkUmF0ZVByZXNjYWxlciA9IFNQSV9CYXVkUmF0ZVByZXNjYWxlcl8yOworICAvKiBJbml0aWFsaXplIHRoZSBTUElfRmlyc3RCaXQgbWVtYmVyICovCisgIFNQSV9Jbml0U3RydWN0LT5TUElfRmlyc3RCaXQgPSBTUElfRmlyc3RCaXRfTVNCOworICAvKiBJbml0aWFsaXplIHRoZSBTUElfQ1JDUG9seW5vbWlhbCBtZW1iZXIgKi8KKyAgU1BJX0luaXRTdHJ1Y3QtPlNQSV9DUkNQb2x5bm9taWFsID0gNzsKK30KKworLyoqCisgICogQGJyaWVmICBGaWxscyBlYWNoIEkyU19Jbml0U3RydWN0IG1lbWJlciB3aXRoIGl0cyBkZWZhdWx0IHZhbHVlLgorICAqIEBwYXJhbSAgSTJTX0luaXRTdHJ1Y3QgOiBwb2ludGVyIHRvIGEgSTJTX0luaXRUeXBlRGVmIHN0cnVjdHVyZSB3aGljaCB3aWxsIGJlIGluaXRpYWxpemVkLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBJMlNfU3RydWN0SW5pdChJMlNfSW5pdFR5cGVEZWYqIEkyU19Jbml0U3RydWN0KQoreworLyotLS0tLS0tLS0tLS0tLS0gUmVzZXQgSTJTIGluaXQgc3RydWN0dXJlIHBhcmFtZXRlcnMgdmFsdWVzIC0tLS0tLS0tLS0tLS0tLS0tKi8KKyAgLyogSW5pdGlhbGl6ZSB0aGUgSTJTX01vZGUgbWVtYmVyICovCisgIEkyU19Jbml0U3RydWN0LT5JMlNfTW9kZSA9IEkyU19Nb2RlX1NsYXZlVHg7CisgIAorICAvKiBJbml0aWFsaXplIHRoZSBJMlNfU3RhbmRhcmQgbWVtYmVyICovCisgIEkyU19Jbml0U3RydWN0LT5JMlNfU3RhbmRhcmQgPSBJMlNfU3RhbmRhcmRfUGhpbGxpcHM7CisgIAorICAvKiBJbml0aWFsaXplIHRoZSBJMlNfRGF0YUZvcm1hdCBtZW1iZXIgKi8KKyAgSTJTX0luaXRTdHJ1Y3QtPkkyU19EYXRhRm9ybWF0ID0gSTJTX0RhdGFGb3JtYXRfMTZiOworICAKKyAgLyogSW5pdGlhbGl6ZSB0aGUgSTJTX01DTEtPdXRwdXQgbWVtYmVyICovCisgIEkyU19Jbml0U3RydWN0LT5JMlNfTUNMS091dHB1dCA9IEkyU19NQ0xLT3V0cHV0X0Rpc2FibGU7CisgIAorICAvKiBJbml0aWFsaXplIHRoZSBJMlNfQXVkaW9GcmVxIG1lbWJlciAqLworICBJMlNfSW5pdFN0cnVjdC0+STJTX0F1ZGlvRnJlcSA9IEkyU19BdWRpb0ZyZXFfRGVmYXVsdDsKKyAgCisgIC8qIEluaXRpYWxpemUgdGhlIEkyU19DUE9MIG1lbWJlciAqLworICBJMlNfSW5pdFN0cnVjdC0+STJTX0NQT0wgPSBJMlNfQ1BPTF9Mb3c7Cit9CisKKy8qKgorICAqIEBicmllZiAgRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgc3BlY2lmaWVkIFNQSSBwZXJpcGhlcmFsLgorICAqIEBwYXJhbSAgU1BJeDogd2hlcmUgeCBjYW4gYmUgMSwgMiBvciAzIHRvIHNlbGVjdCB0aGUgU1BJIHBlcmlwaGVyYWwuCisgICogQHBhcmFtICBOZXdTdGF0ZTogbmV3IHN0YXRlIG9mIHRoZSBTUEl4IHBlcmlwaGVyYWwuIAorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlOiBFTkFCTEUgb3IgRElTQUJMRS4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgU1BJX0NtZChTUElfVHlwZURlZiogU1BJeCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfU1BJX0FMTF9QRVJJUEgoU1BJeCkpOworICBhc3NlcnRfcGFyYW0oSVNfRlVOQ1RJT05BTF9TVEFURShOZXdTdGF0ZSkpOworICBpZiAoTmV3U3RhdGUgIT0gRElTQUJMRSkKKyAgeworICAgIC8qIEVuYWJsZSB0aGUgc2VsZWN0ZWQgU1BJIHBlcmlwaGVyYWwgKi8KKyAgICBTUEl4LT5DUjEgfD0gQ1IxX1NQRV9TZXQ7CisgIH0KKyAgZWxzZQorICB7CisgICAgLyogRGlzYWJsZSB0aGUgc2VsZWN0ZWQgU1BJIHBlcmlwaGVyYWwgKi8KKyAgICBTUEl4LT5DUjEgJj0gQ1IxX1NQRV9SZXNldDsKKyAgfQorfQorCisvKioKKyAgKiBAYnJpZWYgIEVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIHNwZWNpZmllZCBTUEkgcGVyaXBoZXJhbCAoaW4gSTJTIG1vZGUpLgorICAqIEBwYXJhbSAgU1BJeDogd2hlcmUgeCBjYW4gYmUgMiBvciAzIHRvIHNlbGVjdCB0aGUgU1BJIHBlcmlwaGVyYWwuCisgICogQHBhcmFtICBOZXdTdGF0ZTogbmV3IHN0YXRlIG9mIHRoZSBTUEl4IHBlcmlwaGVyYWwuIAorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlOiBFTkFCTEUgb3IgRElTQUJMRS4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgSTJTX0NtZChTUElfVHlwZURlZiogU1BJeCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfU1BJXzIzX1BFUklQSChTUEl4KSk7CisgIGFzc2VydF9wYXJhbShJU19GVU5DVElPTkFMX1NUQVRFKE5ld1N0YXRlKSk7CisgIGlmIChOZXdTdGF0ZSAhPSBESVNBQkxFKQorICB7CisgICAgLyogRW5hYmxlIHRoZSBzZWxlY3RlZCBTUEkgcGVyaXBoZXJhbCAoaW4gSTJTIG1vZGUpICovCisgICAgU1BJeC0+STJTQ0ZHUiB8PSBJMlNDRkdSX0kyU0VfU2V0OworICB9CisgIGVsc2UKKyAgeworICAgIC8qIERpc2FibGUgdGhlIHNlbGVjdGVkIFNQSSBwZXJpcGhlcmFsIChpbiBJMlMgbW9kZSkgKi8KKyAgICBTUEl4LT5JMlNDRkdSICY9IEkyU0NGR1JfSTJTRV9SZXNldDsKKyAgfQorfQorCisvKioKKyAgKiBAYnJpZWYgIEVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIHNwZWNpZmllZCBTUEkvSTJTIGludGVycnVwdHMuCisgICogQHBhcmFtICBTUEl4OiB3aGVyZSB4IGNhbiBiZQorICAqICAgLSAxLCAyIG9yIDMgaW4gU1BJIG1vZGUgCisgICogICAtIDIgb3IgMyBpbiBJMlMgbW9kZQorICAqIEBwYXJhbSAgU1BJX0kyU19JVDogc3BlY2lmaWVzIHRoZSBTUEkvSTJTIGludGVycnVwdCBzb3VyY2UgdG8gYmUgZW5hYmxlZCBvciBkaXNhYmxlZC4gCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIFNQSV9JMlNfSVRfVFhFOiBUeCBidWZmZXIgZW1wdHkgaW50ZXJydXB0IG1hc2sKKyAgKiAgICAgQGFyZyBTUElfSTJTX0lUX1JYTkU6IFJ4IGJ1ZmZlciBub3QgZW1wdHkgaW50ZXJydXB0IG1hc2sKKyAgKiAgICAgQGFyZyBTUElfSTJTX0lUX0VSUjogRXJyb3IgaW50ZXJydXB0IG1hc2sKKyAgKiBAcGFyYW0gIE5ld1N0YXRlOiBuZXcgc3RhdGUgb2YgdGhlIHNwZWNpZmllZCBTUEkvSTJTIGludGVycnVwdC4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZTogRU5BQkxFIG9yIERJU0FCTEUuCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFNQSV9JMlNfSVRDb25maWcoU1BJX1R5cGVEZWYqIFNQSXgsIHVpbnQ4X3QgU1BJX0kyU19JVCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKQoreworICB1aW50MTZfdCBpdHBvcyA9IDAsIGl0bWFzayA9IDAgOworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfU1BJX0FMTF9QRVJJUEgoU1BJeCkpOworICBhc3NlcnRfcGFyYW0oSVNfRlVOQ1RJT05BTF9TVEFURShOZXdTdGF0ZSkpOworICBhc3NlcnRfcGFyYW0oSVNfU1BJX0kyU19DT05GSUdfSVQoU1BJX0kyU19JVCkpOworCisgIC8qIEdldCB0aGUgU1BJL0kyUyBJVCBpbmRleCAqLworICBpdHBvcyA9IFNQSV9JMlNfSVQgPj4gNDsKKworICAvKiBTZXQgdGhlIElUIG1hc2sgKi8KKyAgaXRtYXNrID0gKHVpbnQxNl90KTEgPDwgKHVpbnQxNl90KWl0cG9zOworCisgIGlmIChOZXdTdGF0ZSAhPSBESVNBQkxFKQorICB7CisgICAgLyogRW5hYmxlIHRoZSBzZWxlY3RlZCBTUEkvSTJTIGludGVycnVwdCAqLworICAgIFNQSXgtPkNSMiB8PSBpdG1hc2s7CisgIH0KKyAgZWxzZQorICB7CisgICAgLyogRGlzYWJsZSB0aGUgc2VsZWN0ZWQgU1BJL0kyUyBpbnRlcnJ1cHQgKi8KKyAgICBTUEl4LT5DUjIgJj0gKHVpbnQxNl90KX5pdG1hc2s7CisgIH0KK30KKworLyoqCisgICogQGJyaWVmICBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBTUEl4L0kyU3ggRE1BIGludGVyZmFjZS4KKyAgKiBAcGFyYW0gIFNQSXg6IHdoZXJlIHggY2FuIGJlCisgICogICAtIDEsIDIgb3IgMyBpbiBTUEkgbW9kZSAKKyAgKiAgIC0gMiBvciAzIGluIEkyUyBtb2RlCisgICogQHBhcmFtICBTUElfSTJTX0RNQVJlcTogc3BlY2lmaWVzIHRoZSBTUEkvSTJTIERNQSB0cmFuc2ZlciByZXF1ZXN0IHRvIGJlIGVuYWJsZWQgb3IgZGlzYWJsZWQuIAorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGFueSBjb21iaW5hdGlvbiBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBTUElfSTJTX0RNQVJlcV9UeDogVHggYnVmZmVyIERNQSB0cmFuc2ZlciByZXF1ZXN0CisgICogICAgIEBhcmcgU1BJX0kyU19ETUFSZXFfUng6IFJ4IGJ1ZmZlciBETUEgdHJhbnNmZXIgcmVxdWVzdAorICAqIEBwYXJhbSAgTmV3U3RhdGU6IG5ldyBzdGF0ZSBvZiB0aGUgc2VsZWN0ZWQgU1BJL0kyUyBETUEgdHJhbnNmZXIgcmVxdWVzdC4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZTogRU5BQkxFIG9yIERJU0FCTEUuCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFNQSV9JMlNfRE1BQ21kKFNQSV9UeXBlRGVmKiBTUEl4LCB1aW50MTZfdCBTUElfSTJTX0RNQVJlcSwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfU1BJX0FMTF9QRVJJUEgoU1BJeCkpOworICBhc3NlcnRfcGFyYW0oSVNfRlVOQ1RJT05BTF9TVEFURShOZXdTdGF0ZSkpOworICBhc3NlcnRfcGFyYW0oSVNfU1BJX0kyU19ETUFSRVEoU1BJX0kyU19ETUFSZXEpKTsKKyAgaWYgKE5ld1N0YXRlICE9IERJU0FCTEUpCisgIHsKKyAgICAvKiBFbmFibGUgdGhlIHNlbGVjdGVkIFNQSS9JMlMgRE1BIHJlcXVlc3RzICovCisgICAgU1BJeC0+Q1IyIHw9IFNQSV9JMlNfRE1BUmVxOworICB9CisgIGVsc2UKKyAgeworICAgIC8qIERpc2FibGUgdGhlIHNlbGVjdGVkIFNQSS9JMlMgRE1BIHJlcXVlc3RzICovCisgICAgU1BJeC0+Q1IyICY9ICh1aW50MTZfdCl+U1BJX0kyU19ETUFSZXE7CisgIH0KK30KKworLyoqCisgICogQGJyaWVmICBUcmFuc21pdHMgYSBEYXRhIHRocm91Z2ggdGhlIFNQSXgvSTJTeCBwZXJpcGhlcmFsLgorICAqIEBwYXJhbSAgU1BJeDogd2hlcmUgeCBjYW4gYmUKKyAgKiAgIC0gMSwgMiBvciAzIGluIFNQSSBtb2RlIAorICAqICAgLSAyIG9yIDMgaW4gSTJTIG1vZGUKKyAgKiBAcGFyYW0gIERhdGEgOiBEYXRhIHRvIGJlIHRyYW5zbWl0dGVkLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBTUElfSTJTX1NlbmREYXRhKFNQSV9UeXBlRGVmKiBTUEl4LCB1aW50MTZfdCBEYXRhKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfU1BJX0FMTF9QRVJJUEgoU1BJeCkpOworICAKKyAgLyogV3JpdGUgaW4gdGhlIERSIHJlZ2lzdGVyIHRoZSBkYXRhIHRvIGJlIHNlbnQgKi8KKyAgU1BJeC0+RFIgPSBEYXRhOworfQorCisvKioKKyAgKiBAYnJpZWYgIFJldHVybnMgdGhlIG1vc3QgcmVjZW50IHJlY2VpdmVkIGRhdGEgYnkgdGhlIFNQSXgvSTJTeCBwZXJpcGhlcmFsLiAKKyAgKiBAcGFyYW0gIFNQSXg6IHdoZXJlIHggY2FuIGJlCisgICogICAtIDEsIDIgb3IgMyBpbiBTUEkgbW9kZSAKKyAgKiAgIC0gMiBvciAzIGluIEkyUyBtb2RlCisgICogQHJldHZhbCBUaGUgdmFsdWUgb2YgdGhlIHJlY2VpdmVkIGRhdGEuCisgICovCit1aW50MTZfdCBTUElfSTJTX1JlY2VpdmVEYXRhKFNQSV9UeXBlRGVmKiBTUEl4KQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfU1BJX0FMTF9QRVJJUEgoU1BJeCkpOworICAKKyAgLyogUmV0dXJuIHRoZSBkYXRhIGluIHRoZSBEUiByZWdpc3RlciAqLworICByZXR1cm4gU1BJeC0+RFI7Cit9CisKKy8qKgorICAqIEBicmllZiAgQ29uZmlndXJlcyBpbnRlcm5hbGx5IGJ5IHNvZnR3YXJlIHRoZSBOU1MgcGluIGZvciB0aGUgc2VsZWN0ZWQgU1BJLgorICAqIEBwYXJhbSAgU1BJeDogd2hlcmUgeCBjYW4gYmUgMSwgMiBvciAzIHRvIHNlbGVjdCB0aGUgU1BJIHBlcmlwaGVyYWwuCisgICogQHBhcmFtICBTUElfTlNTSW50ZXJuYWxTb2Z0OiBzcGVjaWZpZXMgdGhlIFNQSSBOU1MgaW50ZXJuYWwgc3RhdGUuCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIFNQSV9OU1NJbnRlcm5hbFNvZnRfU2V0OiBTZXQgTlNTIHBpbiBpbnRlcm5hbGx5CisgICogICAgIEBhcmcgU1BJX05TU0ludGVybmFsU29mdF9SZXNldDogUmVzZXQgTlNTIHBpbiBpbnRlcm5hbGx5CisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFNQSV9OU1NJbnRlcm5hbFNvZnR3YXJlQ29uZmlnKFNQSV9UeXBlRGVmKiBTUEl4LCB1aW50MTZfdCBTUElfTlNTSW50ZXJuYWxTb2Z0KQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfU1BJX0FMTF9QRVJJUEgoU1BJeCkpOworICBhc3NlcnRfcGFyYW0oSVNfU1BJX05TU19JTlRFUk5BTChTUElfTlNTSW50ZXJuYWxTb2Z0KSk7CisgIGlmIChTUElfTlNTSW50ZXJuYWxTb2Z0ICE9IFNQSV9OU1NJbnRlcm5hbFNvZnRfUmVzZXQpCisgIHsKKyAgICAvKiBTZXQgTlNTIHBpbiBpbnRlcm5hbGx5IGJ5IHNvZnR3YXJlICovCisgICAgU1BJeC0+Q1IxIHw9IFNQSV9OU1NJbnRlcm5hbFNvZnRfU2V0OworICB9CisgIGVsc2UKKyAgeworICAgIC8qIFJlc2V0IE5TUyBwaW4gaW50ZXJuYWxseSBieSBzb2Z0d2FyZSAqLworICAgIFNQSXgtPkNSMSAmPSBTUElfTlNTSW50ZXJuYWxTb2Z0X1Jlc2V0OworICB9Cit9CisKKy8qKgorICAqIEBicmllZiAgRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgU1Mgb3V0cHV0IGZvciB0aGUgc2VsZWN0ZWQgU1BJLgorICAqIEBwYXJhbSAgU1BJeDogd2hlcmUgeCBjYW4gYmUgMSwgMiBvciAzIHRvIHNlbGVjdCB0aGUgU1BJIHBlcmlwaGVyYWwuCisgICogQHBhcmFtICBOZXdTdGF0ZTogbmV3IHN0YXRlIG9mIHRoZSBTUEl4IFNTIG91dHB1dC4gCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmU6IEVOQUJMRSBvciBESVNBQkxFLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBTUElfU1NPdXRwdXRDbWQoU1BJX1R5cGVEZWYqIFNQSXgsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSkKK3sKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX1NQSV9BTExfUEVSSVBIKFNQSXgpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0ZVTkNUSU9OQUxfU1RBVEUoTmV3U3RhdGUpKTsKKyAgaWYgKE5ld1N0YXRlICE9IERJU0FCTEUpCisgIHsKKyAgICAvKiBFbmFibGUgdGhlIHNlbGVjdGVkIFNQSSBTUyBvdXRwdXQgKi8KKyAgICBTUEl4LT5DUjIgfD0gQ1IyX1NTT0VfU2V0OworICB9CisgIGVsc2UKKyAgeworICAgIC8qIERpc2FibGUgdGhlIHNlbGVjdGVkIFNQSSBTUyBvdXRwdXQgKi8KKyAgICBTUEl4LT5DUjIgJj0gQ1IyX1NTT0VfUmVzZXQ7CisgIH0KK30KKworLyoqCisgICogQGJyaWVmICBDb25maWd1cmVzIHRoZSBkYXRhIHNpemUgZm9yIHRoZSBzZWxlY3RlZCBTUEkuCisgICogQHBhcmFtICBTUEl4OiB3aGVyZSB4IGNhbiBiZSAxLCAyIG9yIDMgdG8gc2VsZWN0IHRoZSBTUEkgcGVyaXBoZXJhbC4KKyAgKiBAcGFyYW0gIFNQSV9EYXRhU2l6ZTogc3BlY2lmaWVzIHRoZSBTUEkgZGF0YSBzaXplLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBTUElfRGF0YVNpemVfMTZiOiBTZXQgZGF0YSBmcmFtZSBmb3JtYXQgdG8gMTZiaXQKKyAgKiAgICAgQGFyZyBTUElfRGF0YVNpemVfOGI6IFNldCBkYXRhIGZyYW1lIGZvcm1hdCB0byA4Yml0CisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFNQSV9EYXRhU2l6ZUNvbmZpZyhTUElfVHlwZURlZiogU1BJeCwgdWludDE2X3QgU1BJX0RhdGFTaXplKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfU1BJX0FMTF9QRVJJUEgoU1BJeCkpOworICBhc3NlcnRfcGFyYW0oSVNfU1BJX0RBVEFTSVpFKFNQSV9EYXRhU2l6ZSkpOworICAvKiBDbGVhciBERkYgYml0ICovCisgIFNQSXgtPkNSMSAmPSAodWludDE2X3QpflNQSV9EYXRhU2l6ZV8xNmI7CisgIC8qIFNldCBuZXcgREZGIGJpdCB2YWx1ZSAqLworICBTUEl4LT5DUjEgfD0gU1BJX0RhdGFTaXplOworfQorCisvKioKKyAgKiBAYnJpZWYgIFRyYW5zbWl0IHRoZSBTUEl4IENSQyB2YWx1ZS4KKyAgKiBAcGFyYW0gIFNQSXg6IHdoZXJlIHggY2FuIGJlIDEsIDIgb3IgMyB0byBzZWxlY3QgdGhlIFNQSSBwZXJpcGhlcmFsLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBTUElfVHJhbnNtaXRDUkMoU1BJX1R5cGVEZWYqIFNQSXgpCit7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19TUElfQUxMX1BFUklQSChTUEl4KSk7CisgIAorICAvKiBFbmFibGUgdGhlIHNlbGVjdGVkIFNQSSBDUkMgdHJhbnNtaXNzaW9uICovCisgIFNQSXgtPkNSMSB8PSBDUjFfQ1JDTmV4dF9TZXQ7Cit9CisKKy8qKgorICAqIEBicmllZiAgRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgQ1JDIHZhbHVlIGNhbGN1bGF0aW9uIG9mIHRoZSB0cmFuc2ZlcnJlZCBieXRlcy4KKyAgKiBAcGFyYW0gIFNQSXg6IHdoZXJlIHggY2FuIGJlIDEsIDIgb3IgMyB0byBzZWxlY3QgdGhlIFNQSSBwZXJpcGhlcmFsLgorICAqIEBwYXJhbSAgTmV3U3RhdGU6IG5ldyBzdGF0ZSBvZiB0aGUgU1BJeCBDUkMgdmFsdWUgY2FsY3VsYXRpb24uCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmU6IEVOQUJMRSBvciBESVNBQkxFLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBTUElfQ2FsY3VsYXRlQ1JDKFNQSV9UeXBlRGVmKiBTUEl4LCBGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpCit7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19TUElfQUxMX1BFUklQSChTUEl4KSk7CisgIGFzc2VydF9wYXJhbShJU19GVU5DVElPTkFMX1NUQVRFKE5ld1N0YXRlKSk7CisgIGlmIChOZXdTdGF0ZSAhPSBESVNBQkxFKQorICB7CisgICAgLyogRW5hYmxlIHRoZSBzZWxlY3RlZCBTUEkgQ1JDIGNhbGN1bGF0aW9uICovCisgICAgU1BJeC0+Q1IxIHw9IENSMV9DUkNFTl9TZXQ7CisgIH0KKyAgZWxzZQorICB7CisgICAgLyogRGlzYWJsZSB0aGUgc2VsZWN0ZWQgU1BJIENSQyBjYWxjdWxhdGlvbiAqLworICAgIFNQSXgtPkNSMSAmPSBDUjFfQ1JDRU5fUmVzZXQ7CisgIH0KK30KKworLyoqCisgICogQGJyaWVmICBSZXR1cm5zIHRoZSB0cmFuc21pdCBvciB0aGUgcmVjZWl2ZSBDUkMgcmVnaXN0ZXIgdmFsdWUgZm9yIHRoZSBzcGVjaWZpZWQgU1BJLgorICAqIEBwYXJhbSAgU1BJeDogd2hlcmUgeCBjYW4gYmUgMSwgMiBvciAzIHRvIHNlbGVjdCB0aGUgU1BJIHBlcmlwaGVyYWwuCisgICogQHBhcmFtICBTUElfQ1JDOiBzcGVjaWZpZXMgdGhlIENSQyByZWdpc3RlciB0byBiZSByZWFkLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBTUElfQ1JDX1R4OiBTZWxlY3RzIFR4IENSQyByZWdpc3RlcgorICAqICAgICBAYXJnIFNQSV9DUkNfUng6IFNlbGVjdHMgUnggQ1JDIHJlZ2lzdGVyCisgICogQHJldHZhbCBUaGUgc2VsZWN0ZWQgQ1JDIHJlZ2lzdGVyIHZhbHVlLi4KKyAgKi8KK3VpbnQxNl90IFNQSV9HZXRDUkMoU1BJX1R5cGVEZWYqIFNQSXgsIHVpbnQ4X3QgU1BJX0NSQykKK3sKKyAgdWludDE2X3QgY3JjcmVnID0gMDsKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX1NQSV9BTExfUEVSSVBIKFNQSXgpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX1NQSV9DUkMoU1BJX0NSQykpOworICBpZiAoU1BJX0NSQyAhPSBTUElfQ1JDX1J4KQorICB7CisgICAgLyogR2V0IHRoZSBUeCBDUkMgcmVnaXN0ZXIgKi8KKyAgICBjcmNyZWcgPSBTUEl4LT5UWENSQ1I7CisgIH0KKyAgZWxzZQorICB7CisgICAgLyogR2V0IHRoZSBSeCBDUkMgcmVnaXN0ZXIgKi8KKyAgICBjcmNyZWcgPSBTUEl4LT5SWENSQ1I7CisgIH0KKyAgLyogUmV0dXJuIHRoZSBzZWxlY3RlZCBDUkMgcmVnaXN0ZXIgKi8KKyAgcmV0dXJuIGNyY3JlZzsKK30KKworLyoqCisgICogQGJyaWVmICBSZXR1cm5zIHRoZSBDUkMgUG9seW5vbWlhbCByZWdpc3RlciB2YWx1ZSBmb3IgdGhlIHNwZWNpZmllZCBTUEkuCisgICogQHBhcmFtICBTUEl4OiB3aGVyZSB4IGNhbiBiZSAxLCAyIG9yIDMgdG8gc2VsZWN0IHRoZSBTUEkgcGVyaXBoZXJhbC4KKyAgKiBAcmV0dmFsIFRoZSBDUkMgUG9seW5vbWlhbCByZWdpc3RlciB2YWx1ZS4KKyAgKi8KK3VpbnQxNl90IFNQSV9HZXRDUkNQb2x5bm9taWFsKFNQSV9UeXBlRGVmKiBTUEl4KQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfU1BJX0FMTF9QRVJJUEgoU1BJeCkpOworICAKKyAgLyogUmV0dXJuIHRoZSBDUkMgcG9seW5vbWlhbCByZWdpc3RlciAqLworICByZXR1cm4gU1BJeC0+Q1JDUFI7Cit9CisKKy8qKgorICAqIEBicmllZiAgU2VsZWN0cyB0aGUgZGF0YSB0cmFuc2ZlciBkaXJlY3Rpb24gaW4gYmktZGlyZWN0aW9uYWwgbW9kZSBmb3IgdGhlIHNwZWNpZmllZCBTUEkuCisgICogQHBhcmFtICBTUEl4OiB3aGVyZSB4IGNhbiBiZSAxLCAyIG9yIDMgdG8gc2VsZWN0IHRoZSBTUEkgcGVyaXBoZXJhbC4KKyAgKiBAcGFyYW0gIFNQSV9EaXJlY3Rpb246IHNwZWNpZmllcyB0aGUgZGF0YSB0cmFuc2ZlciBkaXJlY3Rpb24gaW4gYmktZGlyZWN0aW9uYWwgbW9kZS4gCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIFNQSV9EaXJlY3Rpb25fVHg6IFNlbGVjdHMgVHggdHJhbnNtaXNzaW9uIGRpcmVjdGlvbgorICAqICAgICBAYXJnIFNQSV9EaXJlY3Rpb25fUng6IFNlbGVjdHMgUnggcmVjZWl2ZSBkaXJlY3Rpb24KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgU1BJX0JpRGlyZWN0aW9uYWxMaW5lQ29uZmlnKFNQSV9UeXBlRGVmKiBTUEl4LCB1aW50MTZfdCBTUElfRGlyZWN0aW9uKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfU1BJX0FMTF9QRVJJUEgoU1BJeCkpOworICBhc3NlcnRfcGFyYW0oSVNfU1BJX0RJUkVDVElPTihTUElfRGlyZWN0aW9uKSk7CisgIGlmIChTUElfRGlyZWN0aW9uID09IFNQSV9EaXJlY3Rpb25fVHgpCisgIHsKKyAgICAvKiBTZXQgdGhlIFR4IG9ubHkgbW9kZSAqLworICAgIFNQSXgtPkNSMSB8PSBTUElfRGlyZWN0aW9uX1R4OworICB9CisgIGVsc2UKKyAgeworICAgIC8qIFNldCB0aGUgUnggb25seSBtb2RlICovCisgICAgU1BJeC0+Q1IxICY9IFNQSV9EaXJlY3Rpb25fUng7CisgIH0KK30KKworLyoqCisgICogQGJyaWVmICBDaGVja3Mgd2hldGhlciB0aGUgc3BlY2lmaWVkIFNQSS9JMlMgZmxhZyBpcyBzZXQgb3Igbm90LgorICAqIEBwYXJhbSAgU1BJeDogd2hlcmUgeCBjYW4gYmUKKyAgKiAgIC0gMSwgMiBvciAzIGluIFNQSSBtb2RlIAorICAqICAgLSAyIG9yIDMgaW4gSTJTIG1vZGUKKyAgKiBAcGFyYW0gIFNQSV9JMlNfRkxBRzogc3BlY2lmaWVzIHRoZSBTUEkvSTJTIGZsYWcgdG8gY2hlY2suIAorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBTUElfSTJTX0ZMQUdfVFhFOiBUcmFuc21pdCBidWZmZXIgZW1wdHkgZmxhZy4KKyAgKiAgICAgQGFyZyBTUElfSTJTX0ZMQUdfUlhORTogUmVjZWl2ZSBidWZmZXIgbm90IGVtcHR5IGZsYWcuCisgICogICAgIEBhcmcgU1BJX0kyU19GTEFHX0JTWTogQnVzeSBmbGFnLgorICAqICAgICBAYXJnIFNQSV9JMlNfRkxBR19PVlI6IE92ZXJydW4gZmxhZy4KKyAgKiAgICAgQGFyZyBTUElfRkxBR19NT0RGOiBNb2RlIEZhdWx0IGZsYWcuCisgICogICAgIEBhcmcgU1BJX0ZMQUdfQ1JDRVJSOiBDUkMgRXJyb3IgZmxhZy4KKyAgKiAgICAgQGFyZyBJMlNfRkxBR19VRFI6IFVuZGVycnVuIEVycm9yIGZsYWcuCisgICogICAgIEBhcmcgSTJTX0ZMQUdfQ0hTSURFOiBDaGFubmVsIFNpZGUgZmxhZy4KKyAgKiBAcmV0dmFsIFRoZSBuZXcgc3RhdGUgb2YgU1BJX0kyU19GTEFHIChTRVQgb3IgUkVTRVQpLgorICAqLworRmxhZ1N0YXR1cyBTUElfSTJTX0dldEZsYWdTdGF0dXMoU1BJX1R5cGVEZWYqIFNQSXgsIHVpbnQxNl90IFNQSV9JMlNfRkxBRykKK3sKKyAgRmxhZ1N0YXR1cyBiaXRzdGF0dXMgPSBSRVNFVDsKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX1NQSV9BTExfUEVSSVBIKFNQSXgpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX1NQSV9JMlNfR0VUX0ZMQUcoU1BJX0kyU19GTEFHKSk7CisgIC8qIENoZWNrIHRoZSBzdGF0dXMgb2YgdGhlIHNwZWNpZmllZCBTUEkvSTJTIGZsYWcgKi8KKyAgaWYgKChTUEl4LT5TUiAmIFNQSV9JMlNfRkxBRykgIT0gKHVpbnQxNl90KVJFU0VUKQorICB7CisgICAgLyogU1BJX0kyU19GTEFHIGlzIHNldCAqLworICAgIGJpdHN0YXR1cyA9IFNFVDsKKyAgfQorICBlbHNlCisgIHsKKyAgICAvKiBTUElfSTJTX0ZMQUcgaXMgcmVzZXQgKi8KKyAgICBiaXRzdGF0dXMgPSBSRVNFVDsKKyAgfQorICAvKiBSZXR1cm4gdGhlIFNQSV9JMlNfRkxBRyBzdGF0dXMgKi8KKyAgcmV0dXJuICBiaXRzdGF0dXM7Cit9CisKKy8qKgorICAqIEBicmllZiAgQ2xlYXJzIHRoZSBTUEl4IENSQyBFcnJvciAoQ1JDRVJSKSBmbGFnLgorICAqIEBwYXJhbSAgU1BJeDogd2hlcmUgeCBjYW4gYmUKKyAgKiAgIC0gMSwgMiBvciAzIGluIFNQSSBtb2RlIAorICAqIEBwYXJhbSAgU1BJX0kyU19GTEFHOiBzcGVjaWZpZXMgdGhlIFNQSSBmbGFnIHRvIGNsZWFyLiAKKyAgKiAgIFRoaXMgZnVuY3Rpb24gY2xlYXJzIG9ubHkgQ1JDRVJSIGZsYWcuCisgICogQG5vdGUKKyAgKiAgIC0gT1ZSIChPdmVyUnVuIGVycm9yKSBmbGFnIGlzIGNsZWFyZWQgYnkgc29mdHdhcmUgc2VxdWVuY2U6IGEgcmVhZCAKKyAgKiAgICAgb3BlcmF0aW9uIHRvIFNQSV9EUiByZWdpc3RlciAoU1BJX0kyU19SZWNlaXZlRGF0YSgpKSBmb2xsb3dlZCBieSBhIHJlYWQgCisgICogICAgIG9wZXJhdGlvbiB0byBTUElfU1IgcmVnaXN0ZXIgKFNQSV9JMlNfR2V0RmxhZ1N0YXR1cygpKS4KKyAgKiAgIC0gVURSIChVbmRlclJ1biBlcnJvcikgZmxhZyBpcyBjbGVhcmVkIGJ5IGEgcmVhZCBvcGVyYXRpb24gdG8gCisgICogICAgIFNQSV9TUiByZWdpc3RlciAoU1BJX0kyU19HZXRGbGFnU3RhdHVzKCkpLgorICAqICAgLSBNT0RGIChNb2RlIEZhdWx0KSBmbGFnIGlzIGNsZWFyZWQgYnkgc29mdHdhcmUgc2VxdWVuY2U6IGEgcmVhZC93cml0ZSAKKyAgKiAgICAgb3BlcmF0aW9uIHRvIFNQSV9TUiByZWdpc3RlciAoU1BJX0kyU19HZXRGbGFnU3RhdHVzKCkpIGZvbGxvd2VkIGJ5IGEgCisgICogICAgIHdyaXRlIG9wZXJhdGlvbiB0byBTUElfQ1IxIHJlZ2lzdGVyIChTUElfQ21kKCkgdG8gZW5hYmxlIHRoZSBTUEkpLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBTUElfSTJTX0NsZWFyRmxhZyhTUElfVHlwZURlZiogU1BJeCwgdWludDE2X3QgU1BJX0kyU19GTEFHKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfU1BJX0FMTF9QRVJJUEgoU1BJeCkpOworICBhc3NlcnRfcGFyYW0oSVNfU1BJX0kyU19DTEVBUl9GTEFHKFNQSV9JMlNfRkxBRykpOworICAgIAorICAgIC8qIENsZWFyIHRoZSBzZWxlY3RlZCBTUEkgQ1JDIEVycm9yIChDUkNFUlIpIGZsYWcgKi8KKyAgICBTUEl4LT5TUiA9ICh1aW50MTZfdCl+U1BJX0kyU19GTEFHOworfQorCisvKioKKyAgKiBAYnJpZWYgIENoZWNrcyB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgU1BJL0kyUyBpbnRlcnJ1cHQgaGFzIG9jY3VycmVkIG9yIG5vdC4KKyAgKiBAcGFyYW0gIFNQSXg6IHdoZXJlIHggY2FuIGJlCisgICogICAtIDEsIDIgb3IgMyBpbiBTUEkgbW9kZSAKKyAgKiAgIC0gMiBvciAzIGluIEkyUyBtb2RlCisgICogQHBhcmFtICBTUElfSTJTX0lUOiBzcGVjaWZpZXMgdGhlIFNQSS9JMlMgaW50ZXJydXB0IHNvdXJjZSB0byBjaGVjay4gCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIFNQSV9JMlNfSVRfVFhFOiBUcmFuc21pdCBidWZmZXIgZW1wdHkgaW50ZXJydXB0LgorICAqICAgICBAYXJnIFNQSV9JMlNfSVRfUlhORTogUmVjZWl2ZSBidWZmZXIgbm90IGVtcHR5IGludGVycnVwdC4KKyAgKiAgICAgQGFyZyBTUElfSTJTX0lUX09WUjogT3ZlcnJ1biBpbnRlcnJ1cHQuCisgICogICAgIEBhcmcgU1BJX0lUX01PREY6IE1vZGUgRmF1bHQgaW50ZXJydXB0LgorICAqICAgICBAYXJnIFNQSV9JVF9DUkNFUlI6IENSQyBFcnJvciBpbnRlcnJ1cHQuCisgICogICAgIEBhcmcgSTJTX0lUX1VEUjogVW5kZXJydW4gRXJyb3IgaW50ZXJydXB0LgorICAqIEByZXR2YWwgVGhlIG5ldyBzdGF0ZSBvZiBTUElfSTJTX0lUIChTRVQgb3IgUkVTRVQpLgorICAqLworSVRTdGF0dXMgU1BJX0kyU19HZXRJVFN0YXR1cyhTUElfVHlwZURlZiogU1BJeCwgdWludDhfdCBTUElfSTJTX0lUKQoreworICBJVFN0YXR1cyBiaXRzdGF0dXMgPSBSRVNFVDsKKyAgdWludDE2X3QgaXRwb3MgPSAwLCBpdG1hc2sgPSAwLCBlbmFibGVzdGF0dXMgPSAwOworCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19TUElfQUxMX1BFUklQSChTUEl4KSk7CisgIGFzc2VydF9wYXJhbShJU19TUElfSTJTX0dFVF9JVChTUElfSTJTX0lUKSk7CisKKyAgLyogR2V0IHRoZSBTUEkvSTJTIElUIGluZGV4ICovCisgIGl0cG9zID0gMHgwMSA8PCAoU1BJX0kyU19JVCAmIDB4MEYpOworCisgIC8qIEdldCB0aGUgU1BJL0kyUyBJVCBtYXNrICovCisgIGl0bWFzayA9IFNQSV9JMlNfSVQgPj4gNDsKKworICAvKiBTZXQgdGhlIElUIG1hc2sgKi8KKyAgaXRtYXNrID0gMHgwMSA8PCBpdG1hc2s7CisKKyAgLyogR2V0IHRoZSBTUElfSTJTX0lUIGVuYWJsZSBiaXQgc3RhdHVzICovCisgIGVuYWJsZXN0YXR1cyA9IChTUEl4LT5DUjIgJiBpdG1hc2spIDsKKworICAvKiBDaGVjayB0aGUgc3RhdHVzIG9mIHRoZSBzcGVjaWZpZWQgU1BJL0kyUyBpbnRlcnJ1cHQgKi8KKyAgaWYgKCgoU1BJeC0+U1IgJiBpdHBvcykgIT0gKHVpbnQxNl90KVJFU0VUKSAmJiBlbmFibGVzdGF0dXMpCisgIHsKKyAgICAvKiBTUElfSTJTX0lUIGlzIHNldCAqLworICAgIGJpdHN0YXR1cyA9IFNFVDsKKyAgfQorICBlbHNlCisgIHsKKyAgICAvKiBTUElfSTJTX0lUIGlzIHJlc2V0ICovCisgICAgYml0c3RhdHVzID0gUkVTRVQ7CisgIH0KKyAgLyogUmV0dXJuIHRoZSBTUElfSTJTX0lUIHN0YXR1cyAqLworICByZXR1cm4gYml0c3RhdHVzOworfQorCisvKioKKyAgKiBAYnJpZWYgIENsZWFycyB0aGUgU1BJeCBDUkMgRXJyb3IgKENSQ0VSUikgaW50ZXJydXB0IHBlbmRpbmcgYml0LgorICAqIEBwYXJhbSAgU1BJeDogd2hlcmUgeCBjYW4gYmUKKyAgKiAgIC0gMSwgMiBvciAzIGluIFNQSSBtb2RlIAorICAqIEBwYXJhbSAgU1BJX0kyU19JVDogc3BlY2lmaWVzIHRoZSBTUEkgaW50ZXJydXB0IHBlbmRpbmcgYml0IHRvIGNsZWFyLgorICAqICAgVGhpcyBmdW5jdGlvbiBjbGVhcnMgb25seSBDUkNFUlIgaW50ZXJydXB0IHBlbmRpbmcgYml0LiAgIAorICAqIEBub3RlCisgICogICAtIE9WUiAoT3ZlclJ1biBFcnJvcikgaW50ZXJydXB0IHBlbmRpbmcgYml0IGlzIGNsZWFyZWQgYnkgc29mdHdhcmUgCisgICogICAgIHNlcXVlbmNlOiBhIHJlYWQgb3BlcmF0aW9uIHRvIFNQSV9EUiByZWdpc3RlciAoU1BJX0kyU19SZWNlaXZlRGF0YSgpKSAKKyAgKiAgICAgZm9sbG93ZWQgYnkgYSByZWFkIG9wZXJhdGlvbiB0byBTUElfU1IgcmVnaXN0ZXIgKFNQSV9JMlNfR2V0SVRTdGF0dXMoKSkuCisgICogICAtIFVEUiAoVW5kZXJSdW4gRXJyb3IpIGludGVycnVwdCBwZW5kaW5nIGJpdCBpcyBjbGVhcmVkIGJ5IGEgcmVhZCAKKyAgKiAgICAgb3BlcmF0aW9uIHRvIFNQSV9TUiByZWdpc3RlciAoU1BJX0kyU19HZXRJVFN0YXR1cygpKS4KKyAgKiAgIC0gTU9ERiAoTW9kZSBGYXVsdCkgaW50ZXJydXB0IHBlbmRpbmcgYml0IGlzIGNsZWFyZWQgYnkgc29mdHdhcmUgc2VxdWVuY2U6CisgICogICAgIGEgcmVhZC93cml0ZSBvcGVyYXRpb24gdG8gU1BJX1NSIHJlZ2lzdGVyIChTUElfSTJTX0dldElUU3RhdHVzKCkpIAorICAqICAgICBmb2xsb3dlZCBieSBhIHdyaXRlIG9wZXJhdGlvbiB0byBTUElfQ1IxIHJlZ2lzdGVyIChTUElfQ21kKCkgdG8gZW5hYmxlIAorICAqICAgICB0aGUgU1BJKS4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgU1BJX0kyU19DbGVhcklUUGVuZGluZ0JpdChTUElfVHlwZURlZiogU1BJeCwgdWludDhfdCBTUElfSTJTX0lUKQoreworICB1aW50MTZfdCBpdHBvcyA9IDA7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19TUElfQUxMX1BFUklQSChTUEl4KSk7CisgIGFzc2VydF9wYXJhbShJU19TUElfSTJTX0NMRUFSX0lUKFNQSV9JMlNfSVQpKTsKKworICAvKiBHZXQgdGhlIFNQSSBJVCBpbmRleCAqLworICBpdHBvcyA9IDB4MDEgPDwgKFNQSV9JMlNfSVQgJiAweDBGKTsKKworICAvKiBDbGVhciB0aGUgc2VsZWN0ZWQgU1BJIENSQyBFcnJvciAoQ1JDRVJSKSBpbnRlcnJ1cHQgcGVuZGluZyBiaXQgKi8KKyAgU1BJeC0+U1IgPSAodWludDE2X3Qpfml0cG9zOworfQorLyoqCisgICogQH0KKyAgKi8gCisKKy8qKgorICAqIEB9CisgICovIAorCisvKioKKyAgKiBAfQorICAqLyAKKworLyoqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCAyMDExIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL3N0X2Z3X2xpYi9zcmMvc3RtMzJmMTB4X3RpbS5jIGIvc3RfZndfbGliL3NyYy9zdG0zMmYxMHhfdGltLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmZiNGRkMQotLS0gL2Rldi9udWxsCisrKyBiL3N0X2Z3X2xpYi9zcmMvc3RtMzJmMTB4X3RpbS5jCkBAIC0wLDAgKzEsMjg5MCBAQAorLyoqCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqIEBmaWxlICAgIHN0bTMyZjEweF90aW0uYworICAqIEBhdXRob3IgIE1DRCBBcHBsaWNhdGlvbiBUZWFtCisgICogQHZlcnNpb24gVjMuNS4wCisgICogQGRhdGUgICAgMTEtTWFyY2gtMjAxMQorICAqIEBicmllZiAgIFRoaXMgZmlsZSBwcm92aWRlcyBhbGwgdGhlIFRJTSBmaXJtd2FyZSBmdW5jdGlvbnMuCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqIEBhdHRlbnRpb24KKyAgKgorICAqIFRIRSBQUkVTRU5UIEZJUk1XQVJFIFdISUNIIElTIEZPUiBHVUlEQU5DRSBPTkxZIEFJTVMgQVQgUFJPVklESU5HIENVU1RPTUVSUworICAqIFdJVEggQ09ESU5HIElORk9STUFUSU9OIFJFR0FSRElORyBUSEVJUiBQUk9EVUNUUyBJTiBPUkRFUiBGT1IgVEhFTSBUTyBTQVZFCisgICogVElNRS4gQVMgQSBSRVNVTFQsIFNUTUlDUk9FTEVDVFJPTklDUyBTSEFMTCBOT1QgQkUgSEVMRCBMSUFCTEUgRk9SIEFOWQorICAqIERJUkVDVCwgSU5ESVJFQ1QgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIFdJVEggUkVTUEVDVCBUTyBBTlkgQ0xBSU1TIEFSSVNJTkcKKyAgKiBGUk9NIFRIRSBDT05URU5UIE9GIFNVQ0ggRklSTVdBUkUgQU5EL09SIFRIRSBVU0UgTUFERSBCWSBDVVNUT01FUlMgT0YgVEhFCisgICogQ09ESU5HIElORk9STUFUSU9OIENPTlRBSU5FRCBIRVJFSU4gSU4gQ09OTkVDVElPTiBXSVRIIFRIRUlSIFBST0RVQ1RTLgorICAqCisgICogPGgyPjxjZW50ZXI+JmNvcHk7IENPUFlSSUdIVCAyMDExIFNUTWljcm9lbGVjdHJvbmljczwvY2VudGVyPjwvaDI+CisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqLworCisvKiBJbmNsdWRlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworI2luY2x1ZGUgInN0bTMyZjEweF90aW0uaCIKKyNpbmNsdWRlICJzdG0zMmYxMHhfcmNjLmgiCisKKy8qKiBAYWRkdG9ncm91cCBTVE0zMkYxMHhfU3RkUGVyaXBoX0RyaXZlcgorICAqIEB7CisgICovCisKKy8qKiBAZGVmZ3JvdXAgVElNIAorICAqIEBicmllZiBUSU0gZHJpdmVyIG1vZHVsZXMKKyAgKiBAeworICAqLworCisvKiogQGRlZmdyb3VwIFRJTV9Qcml2YXRlX1R5cGVzRGVmaW5pdGlvbnMKKyAgKiBAeworICAqLworCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIFRJTV9Qcml2YXRlX0RlZmluZXMKKyAgKiBAeworICAqLworCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFRJTSByZWdpc3RlcnMgYml0IG1hc2sgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisjZGVmaW5lIFNNQ1JfRVRSX01hc2sgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDBGRikgCisjZGVmaW5lIENDTVJfT2Zmc2V0ICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAxOCkKKyNkZWZpbmUgQ0NFUl9DQ0VfU2V0ICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAxKSAgCisjZGVmaW5lCUNDRVJfQ0NORV9TZXQgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwNCkgCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgVElNX1ByaXZhdGVfTWFjcm9zCisgICogQHsKKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBUSU1fUHJpdmF0ZV9WYXJpYWJsZXMKKyAgKiBAeworICAqLworCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIFRJTV9Qcml2YXRlX0Z1bmN0aW9uUHJvdG90eXBlcworICAqIEB7CisgICovCisKK3N0YXRpYyB2b2lkIFRJMV9Db25maWcoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9JQ1BvbGFyaXR5LCB1aW50MTZfdCBUSU1fSUNTZWxlY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IFRJTV9JQ0ZpbHRlcik7CitzdGF0aWMgdm9pZCBUSTJfQ29uZmlnKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fSUNQb2xhcml0eSwgdWludDE2X3QgVElNX0lDU2VsZWN0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBUSU1fSUNGaWx0ZXIpOworc3RhdGljIHZvaWQgVEkzX0NvbmZpZyhUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgVElNX0lDUG9sYXJpdHksIHVpbnQxNl90IFRJTV9JQ1NlbGVjdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgVElNX0lDRmlsdGVyKTsKK3N0YXRpYyB2b2lkIFRJNF9Db25maWcoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9JQ1BvbGFyaXR5LCB1aW50MTZfdCBUSU1fSUNTZWxlY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IFRJTV9JQ0ZpbHRlcik7CisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIFRJTV9Qcml2YXRlX01hY3JvcworICAqIEB7CisgICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgVElNX1ByaXZhdGVfVmFyaWFibGVzCisgICogQHsKKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBUSU1fUHJpdmF0ZV9GdW5jdGlvblByb3RvdHlwZXMKKyAgKiBAeworICAqLworCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIFRJTV9Qcml2YXRlX0Z1bmN0aW9ucworICAqIEB7CisgICovCisKKy8qKgorICAqIEBicmllZiAgRGVpbml0aWFsaXplcyB0aGUgVElNeCBwZXJpcGhlcmFsIHJlZ2lzdGVycyB0byB0aGVpciBkZWZhdWx0IHJlc2V0IHZhbHVlcy4KKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlIDEgdG8gMTcgdG8gc2VsZWN0IHRoZSBUSU0gcGVyaXBoZXJhbC4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgVElNX0RlSW5pdChUSU1fVHlwZURlZiogVElNeCkKK3sKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9BTExfUEVSSVBIKFRJTXgpKTsgCisgCisgIGlmIChUSU14ID09IFRJTTEpCisgIHsKKyAgICBSQ0NfQVBCMlBlcmlwaFJlc2V0Q21kKFJDQ19BUEIyUGVyaXBoX1RJTTEsIEVOQUJMRSk7CisgICAgUkNDX0FQQjJQZXJpcGhSZXNldENtZChSQ0NfQVBCMlBlcmlwaF9USU0xLCBESVNBQkxFKTsgIAorICB9ICAgICAKKyAgZWxzZSBpZiAoVElNeCA9PSBUSU0yKQorICB7CisgICAgUkNDX0FQQjFQZXJpcGhSZXNldENtZChSQ0NfQVBCMVBlcmlwaF9USU0yLCBFTkFCTEUpOworICAgIFJDQ19BUEIxUGVyaXBoUmVzZXRDbWQoUkNDX0FQQjFQZXJpcGhfVElNMiwgRElTQUJMRSk7CisgIH0KKyAgZWxzZSBpZiAoVElNeCA9PSBUSU0zKQorICB7CisgICAgUkNDX0FQQjFQZXJpcGhSZXNldENtZChSQ0NfQVBCMVBlcmlwaF9USU0zLCBFTkFCTEUpOworICAgIFJDQ19BUEIxUGVyaXBoUmVzZXRDbWQoUkNDX0FQQjFQZXJpcGhfVElNMywgRElTQUJMRSk7CisgIH0KKyAgZWxzZSBpZiAoVElNeCA9PSBUSU00KQorICB7CisgICAgUkNDX0FQQjFQZXJpcGhSZXNldENtZChSQ0NfQVBCMVBlcmlwaF9USU00LCBFTkFCTEUpOworICAgIFJDQ19BUEIxUGVyaXBoUmVzZXRDbWQoUkNDX0FQQjFQZXJpcGhfVElNNCwgRElTQUJMRSk7CisgIH0gCisgIGVsc2UgaWYgKFRJTXggPT0gVElNNSkKKyAgeworICAgIFJDQ19BUEIxUGVyaXBoUmVzZXRDbWQoUkNDX0FQQjFQZXJpcGhfVElNNSwgRU5BQkxFKTsKKyAgICBSQ0NfQVBCMVBlcmlwaFJlc2V0Q21kKFJDQ19BUEIxUGVyaXBoX1RJTTUsIERJU0FCTEUpOworICB9IAorICBlbHNlIGlmIChUSU14ID09IFRJTTYpCisgIHsKKyAgICBSQ0NfQVBCMVBlcmlwaFJlc2V0Q21kKFJDQ19BUEIxUGVyaXBoX1RJTTYsIEVOQUJMRSk7CisgICAgUkNDX0FQQjFQZXJpcGhSZXNldENtZChSQ0NfQVBCMVBlcmlwaF9USU02LCBESVNBQkxFKTsKKyAgfSAKKyAgZWxzZSBpZiAoVElNeCA9PSBUSU03KQorICB7CisgICAgUkNDX0FQQjFQZXJpcGhSZXNldENtZChSQ0NfQVBCMVBlcmlwaF9USU03LCBFTkFCTEUpOworICAgIFJDQ19BUEIxUGVyaXBoUmVzZXRDbWQoUkNDX0FQQjFQZXJpcGhfVElNNywgRElTQUJMRSk7CisgIH0gCisgIGVsc2UgaWYgKFRJTXggPT0gVElNOCkKKyAgeworICAgIFJDQ19BUEIyUGVyaXBoUmVzZXRDbWQoUkNDX0FQQjJQZXJpcGhfVElNOCwgRU5BQkxFKTsKKyAgICBSQ0NfQVBCMlBlcmlwaFJlc2V0Q21kKFJDQ19BUEIyUGVyaXBoX1RJTTgsIERJU0FCTEUpOworICB9CisgIGVsc2UgaWYgKFRJTXggPT0gVElNOSkKKyAgeyAgICAgIAorICAgIFJDQ19BUEIyUGVyaXBoUmVzZXRDbWQoUkNDX0FQQjJQZXJpcGhfVElNOSwgRU5BQkxFKTsKKyAgICBSQ0NfQVBCMlBlcmlwaFJlc2V0Q21kKFJDQ19BUEIyUGVyaXBoX1RJTTksIERJU0FCTEUpOyAgCisgICB9ICAKKyAgZWxzZSBpZiAoVElNeCA9PSBUSU0xMCkKKyAgeyAgICAgIAorICAgIFJDQ19BUEIyUGVyaXBoUmVzZXRDbWQoUkNDX0FQQjJQZXJpcGhfVElNMTAsIEVOQUJMRSk7CisgICAgUkNDX0FQQjJQZXJpcGhSZXNldENtZChSQ0NfQVBCMlBlcmlwaF9USU0xMCwgRElTQUJMRSk7ICAKKyAgfSAgCisgIGVsc2UgaWYgKFRJTXggPT0gVElNMTEpIAorICB7ICAgICAKKyAgICBSQ0NfQVBCMlBlcmlwaFJlc2V0Q21kKFJDQ19BUEIyUGVyaXBoX1RJTTExLCBFTkFCTEUpOworICAgIFJDQ19BUEIyUGVyaXBoUmVzZXRDbWQoUkNDX0FQQjJQZXJpcGhfVElNMTEsIERJU0FCTEUpOyAgCisgIH0gIAorICBlbHNlIGlmIChUSU14ID09IFRJTTEyKQorICB7ICAgICAgCisgICAgUkNDX0FQQjFQZXJpcGhSZXNldENtZChSQ0NfQVBCMVBlcmlwaF9USU0xMiwgRU5BQkxFKTsKKyAgICBSQ0NfQVBCMVBlcmlwaFJlc2V0Q21kKFJDQ19BUEIxUGVyaXBoX1RJTTEyLCBESVNBQkxFKTsgIAorICB9ICAKKyAgZWxzZSBpZiAoVElNeCA9PSBUSU0xMykgCisgIHsgICAgICAgCisgICAgUkNDX0FQQjFQZXJpcGhSZXNldENtZChSQ0NfQVBCMVBlcmlwaF9USU0xMywgRU5BQkxFKTsKKyAgICBSQ0NfQVBCMVBlcmlwaFJlc2V0Q21kKFJDQ19BUEIxUGVyaXBoX1RJTTEzLCBESVNBQkxFKTsgIAorICB9CisgIGVsc2UgaWYgKFRJTXggPT0gVElNMTQpIAorICB7ICAgICAgIAorICAgIFJDQ19BUEIxUGVyaXBoUmVzZXRDbWQoUkNDX0FQQjFQZXJpcGhfVElNMTQsIEVOQUJMRSk7CisgICAgUkNDX0FQQjFQZXJpcGhSZXNldENtZChSQ0NfQVBCMVBlcmlwaF9USU0xNCwgRElTQUJMRSk7ICAKKyAgfSAgICAgICAgCisgIGVsc2UgaWYgKFRJTXggPT0gVElNMTUpCisgIHsKKyAgICBSQ0NfQVBCMlBlcmlwaFJlc2V0Q21kKFJDQ19BUEIyUGVyaXBoX1RJTTE1LCBFTkFCTEUpOworICAgIFJDQ19BUEIyUGVyaXBoUmVzZXRDbWQoUkNDX0FQQjJQZXJpcGhfVElNMTUsIERJU0FCTEUpOworICB9IAorICBlbHNlIGlmIChUSU14ID09IFRJTTE2KQorICB7CisgICAgUkNDX0FQQjJQZXJpcGhSZXNldENtZChSQ0NfQVBCMlBlcmlwaF9USU0xNiwgRU5BQkxFKTsKKyAgICBSQ0NfQVBCMlBlcmlwaFJlc2V0Q21kKFJDQ19BUEIyUGVyaXBoX1RJTTE2LCBESVNBQkxFKTsKKyAgfSAKKyAgZWxzZQorICB7CisgICAgaWYgKFRJTXggPT0gVElNMTcpCisgICAgeworICAgICAgUkNDX0FQQjJQZXJpcGhSZXNldENtZChSQ0NfQVBCMlBlcmlwaF9USU0xNywgRU5BQkxFKTsKKyAgICAgIFJDQ19BUEIyUGVyaXBoUmVzZXRDbWQoUkNDX0FQQjJQZXJpcGhfVElNMTcsIERJU0FCTEUpOworICAgIH0gIAorICB9Cit9CisKKy8qKgorICAqIEBicmllZiAgSW5pdGlhbGl6ZXMgdGhlIFRJTXggVGltZSBCYXNlIFVuaXQgcGVyaXBoZXJhbCBhY2NvcmRpbmcgdG8gCisgICogICAgICAgICB0aGUgc3BlY2lmaWVkIHBhcmFtZXRlcnMgaW4gdGhlIFRJTV9UaW1lQmFzZUluaXRTdHJ1Y3QuCisgICogQHBhcmFtICBUSU14OiB3aGVyZSB4IGNhbiBiZSAxIHRvIDE3IHRvIHNlbGVjdCB0aGUgVElNIHBlcmlwaGVyYWwuCisgICogQHBhcmFtICBUSU1fVGltZUJhc2VJbml0U3RydWN0OiBwb2ludGVyIHRvIGEgVElNX1RpbWVCYXNlSW5pdFR5cGVEZWYKKyAgKiAgICAgICAgIHN0cnVjdHVyZSB0aGF0IGNvbnRhaW5zIHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZvciB0aGUgCisgICogICAgICAgICBzcGVjaWZpZWQgVElNIHBlcmlwaGVyYWwuCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFRJTV9UaW1lQmFzZUluaXQoVElNX1R5cGVEZWYqIFRJTXgsIFRJTV9UaW1lQmFzZUluaXRUeXBlRGVmKiBUSU1fVGltZUJhc2VJbml0U3RydWN0KQoreworICB1aW50MTZfdCB0bXBjcjEgPSAwOworCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19USU1fQUxMX1BFUklQSChUSU14KSk7IAorICBhc3NlcnRfcGFyYW0oSVNfVElNX0NPVU5URVJfTU9ERShUSU1fVGltZUJhc2VJbml0U3RydWN0LT5USU1fQ291bnRlck1vZGUpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9DS0RfRElWKFRJTV9UaW1lQmFzZUluaXRTdHJ1Y3QtPlRJTV9DbG9ja0RpdmlzaW9uKSk7CisKKyAgdG1wY3IxID0gVElNeC0+Q1IxOyAgCisKKyAgaWYoKFRJTXggPT0gVElNMSkgfHwgKFRJTXggPT0gVElNOCl8fCAoVElNeCA9PSBUSU0yKSB8fCAoVElNeCA9PSBUSU0zKXx8CisgICAgIChUSU14ID09IFRJTTQpIHx8IChUSU14ID09IFRJTTUpKSAKKyAgeworICAgIC8qIFNlbGVjdCB0aGUgQ291bnRlciBNb2RlICovCisgICAgdG1wY3IxICY9ICh1aW50MTZfdCkofigodWludDE2X3QpKFRJTV9DUjFfRElSIHwgVElNX0NSMV9DTVMpKSk7CisgICAgdG1wY3IxIHw9ICh1aW50MzJfdClUSU1fVGltZUJhc2VJbml0U3RydWN0LT5USU1fQ291bnRlck1vZGU7CisgIH0KKyAKKyAgaWYoKFRJTXggIT0gVElNNikgJiYgKFRJTXggIT0gVElNNykpCisgIHsKKyAgICAvKiBTZXQgdGhlIGNsb2NrIGRpdmlzaW9uICovCisgICAgdG1wY3IxICY9ICh1aW50MTZfdCkofigodWludDE2X3QpVElNX0NSMV9DS0QpKTsKKyAgICB0bXBjcjEgfD0gKHVpbnQzMl90KVRJTV9UaW1lQmFzZUluaXRTdHJ1Y3QtPlRJTV9DbG9ja0RpdmlzaW9uOworICB9CisKKyAgVElNeC0+Q1IxID0gdG1wY3IxOworCisgIC8qIFNldCB0aGUgQXV0b3JlbG9hZCB2YWx1ZSAqLworICBUSU14LT5BUlIgPSBUSU1fVGltZUJhc2VJbml0U3RydWN0LT5USU1fUGVyaW9kIDsKKyAKKyAgLyogU2V0IHRoZSBQcmVzY2FsZXIgdmFsdWUgKi8KKyAgVElNeC0+UFNDID0gVElNX1RpbWVCYXNlSW5pdFN0cnVjdC0+VElNX1ByZXNjYWxlcjsKKyAgICAKKyAgaWYgKChUSU14ID09IFRJTTEpIHx8IChUSU14ID09IFRJTTgpfHwgKFRJTXggPT0gVElNMTUpfHwgKFRJTXggPT0gVElNMTYpIHx8IChUSU14ID09IFRJTTE3KSkgIAorICB7CisgICAgLyogU2V0IHRoZSBSZXBldGl0aW9uIENvdW50ZXIgdmFsdWUgKi8KKyAgICBUSU14LT5SQ1IgPSBUSU1fVGltZUJhc2VJbml0U3RydWN0LT5USU1fUmVwZXRpdGlvbkNvdW50ZXI7CisgIH0KKworICAvKiBHZW5lcmF0ZSBhbiB1cGRhdGUgZXZlbnQgdG8gcmVsb2FkIHRoZSBQcmVzY2FsZXIgYW5kIHRoZSBSZXBldGl0aW9uIGNvdW50ZXIKKyAgICAgdmFsdWVzIGltbWVkaWF0ZWx5ICovCisgIFRJTXgtPkVHUiA9IFRJTV9QU0NSZWxvYWRNb2RlX0ltbWVkaWF0ZTsgICAgICAgICAgIAorfQorCisvKioKKyAgKiBAYnJpZWYgIEluaXRpYWxpemVzIHRoZSBUSU14IENoYW5uZWwxIGFjY29yZGluZyB0byB0aGUgc3BlY2lmaWVkCisgICogICAgICAgICBwYXJhbWV0ZXJzIGluIHRoZSBUSU1fT0NJbml0U3RydWN0LgorICAqIEBwYXJhbSAgVElNeDogd2hlcmUgeCBjYW4gYmUgIDEgdG8gMTcgZXhjZXB0IDYgYW5kIDcgdG8gc2VsZWN0IHRoZSBUSU0gcGVyaXBoZXJhbC4KKyAgKiBAcGFyYW0gIFRJTV9PQ0luaXRTdHJ1Y3Q6IHBvaW50ZXIgdG8gYSBUSU1fT0NJbml0VHlwZURlZiBzdHJ1Y3R1cmUKKyAgKiAgICAgICAgIHRoYXQgY29udGFpbnMgdGhlIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gZm9yIHRoZSBzcGVjaWZpZWQgVElNIHBlcmlwaGVyYWwuCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFRJTV9PQzFJbml0KFRJTV9UeXBlRGVmKiBUSU14LCBUSU1fT0NJbml0VHlwZURlZiogVElNX09DSW5pdFN0cnVjdCkKK3sKKyAgdWludDE2X3QgdG1wY2NtcnggPSAwLCB0bXBjY2VyID0gMCwgdG1wY3IyID0gMDsKKyAgIAorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfVElNX0xJU1Q4X1BFUklQSChUSU14KSk7CisgIGFzc2VydF9wYXJhbShJU19USU1fT0NfTU9ERShUSU1fT0NJbml0U3RydWN0LT5USU1fT0NNb2RlKSk7CisgIGFzc2VydF9wYXJhbShJU19USU1fT1VUUFVUX1NUQVRFKFRJTV9PQ0luaXRTdHJ1Y3QtPlRJTV9PdXRwdXRTdGF0ZSkpOworICBhc3NlcnRfcGFyYW0oSVNfVElNX09DX1BPTEFSSVRZKFRJTV9PQ0luaXRTdHJ1Y3QtPlRJTV9PQ1BvbGFyaXR5KSk7ICAgCisgLyogRGlzYWJsZSB0aGUgQ2hhbm5lbCAxOiBSZXNldCB0aGUgQ0MxRSBCaXQgKi8KKyAgVElNeC0+Q0NFUiAmPSAodWludDE2X3QpKH4odWludDE2X3QpVElNX0NDRVJfQ0MxRSk7CisgIC8qIEdldCB0aGUgVElNeCBDQ0VSIHJlZ2lzdGVyIHZhbHVlICovCisgIHRtcGNjZXIgPSBUSU14LT5DQ0VSOworICAvKiBHZXQgdGhlIFRJTXggQ1IyIHJlZ2lzdGVyIHZhbHVlICovCisgIHRtcGNyMiA9ICBUSU14LT5DUjI7CisgIAorICAvKiBHZXQgdGhlIFRJTXggQ0NNUjEgcmVnaXN0ZXIgdmFsdWUgKi8KKyAgdG1wY2NtcnggPSBUSU14LT5DQ01SMTsKKyAgICAKKyAgLyogUmVzZXQgdGhlIE91dHB1dCBDb21wYXJlIE1vZGUgQml0cyAqLworICB0bXBjY21yeCAmPSAodWludDE2X3QpKH4oKHVpbnQxNl90KVRJTV9DQ01SMV9PQzFNKSk7CisgIHRtcGNjbXJ4ICY9ICh1aW50MTZfdCkofigodWludDE2X3QpVElNX0NDTVIxX0NDMVMpKTsKKworICAvKiBTZWxlY3QgdGhlIE91dHB1dCBDb21wYXJlIE1vZGUgKi8KKyAgdG1wY2NtcnggfD0gVElNX09DSW5pdFN0cnVjdC0+VElNX09DTW9kZTsKKyAgCisgIC8qIFJlc2V0IHRoZSBPdXRwdXQgUG9sYXJpdHkgbGV2ZWwgKi8KKyAgdG1wY2NlciAmPSAodWludDE2X3QpKH4oKHVpbnQxNl90KVRJTV9DQ0VSX0NDMVApKTsKKyAgLyogU2V0IHRoZSBPdXRwdXQgQ29tcGFyZSBQb2xhcml0eSAqLworICB0bXBjY2VyIHw9IFRJTV9PQ0luaXRTdHJ1Y3QtPlRJTV9PQ1BvbGFyaXR5OworICAKKyAgLyogU2V0IHRoZSBPdXRwdXQgU3RhdGUgKi8KKyAgdG1wY2NlciB8PSBUSU1fT0NJbml0U3RydWN0LT5USU1fT3V0cHV0U3RhdGU7CisgICAgCisgIGlmKChUSU14ID09IFRJTTEpIHx8IChUSU14ID09IFRJTTgpfHwgKFRJTXggPT0gVElNMTUpfHwKKyAgICAgKFRJTXggPT0gVElNMTYpfHwgKFRJTXggPT0gVElNMTcpKQorICB7CisgICAgYXNzZXJ0X3BhcmFtKElTX1RJTV9PVVRQVVROX1NUQVRFKFRJTV9PQ0luaXRTdHJ1Y3QtPlRJTV9PdXRwdXROU3RhdGUpKTsKKyAgICBhc3NlcnRfcGFyYW0oSVNfVElNX09DTl9QT0xBUklUWShUSU1fT0NJbml0U3RydWN0LT5USU1fT0NOUG9sYXJpdHkpKTsKKyAgICBhc3NlcnRfcGFyYW0oSVNfVElNX09DTklETEVfU1RBVEUoVElNX09DSW5pdFN0cnVjdC0+VElNX09DTklkbGVTdGF0ZSkpOworICAgIGFzc2VydF9wYXJhbShJU19USU1fT0NJRExFX1NUQVRFKFRJTV9PQ0luaXRTdHJ1Y3QtPlRJTV9PQ0lkbGVTdGF0ZSkpOworICAgIAorICAgIC8qIFJlc2V0IHRoZSBPdXRwdXQgTiBQb2xhcml0eSBsZXZlbCAqLworICAgIHRtcGNjZXIgJj0gKHVpbnQxNl90KSh+KCh1aW50MTZfdClUSU1fQ0NFUl9DQzFOUCkpOworICAgIC8qIFNldCB0aGUgT3V0cHV0IE4gUG9sYXJpdHkgKi8KKyAgICB0bXBjY2VyIHw9IFRJTV9PQ0luaXRTdHJ1Y3QtPlRJTV9PQ05Qb2xhcml0eTsKKyAgICAKKyAgICAvKiBSZXNldCB0aGUgT3V0cHV0IE4gU3RhdGUgKi8KKyAgICB0bXBjY2VyICY9ICh1aW50MTZfdCkofigodWludDE2X3QpVElNX0NDRVJfQ0MxTkUpKTsgICAgCisgICAgLyogU2V0IHRoZSBPdXRwdXQgTiBTdGF0ZSAqLworICAgIHRtcGNjZXIgfD0gVElNX09DSW5pdFN0cnVjdC0+VElNX091dHB1dE5TdGF0ZTsKKyAgICAKKyAgICAvKiBSZXNldCB0aGUgT3V0cHV0IENvbXBhcmUgYW5kIE91dHB1dCBDb21wYXJlIE4gSURMRSBTdGF0ZSAqLworICAgIHRtcGNyMiAmPSAodWludDE2X3QpKH4oKHVpbnQxNl90KVRJTV9DUjJfT0lTMSkpOworICAgIHRtcGNyMiAmPSAodWludDE2X3QpKH4oKHVpbnQxNl90KVRJTV9DUjJfT0lTMU4pKTsKKyAgICAKKyAgICAvKiBTZXQgdGhlIE91dHB1dCBJZGxlIHN0YXRlICovCisgICAgdG1wY3IyIHw9IFRJTV9PQ0luaXRTdHJ1Y3QtPlRJTV9PQ0lkbGVTdGF0ZTsKKyAgICAvKiBTZXQgdGhlIE91dHB1dCBOIElkbGUgc3RhdGUgKi8KKyAgICB0bXBjcjIgfD0gVElNX09DSW5pdFN0cnVjdC0+VElNX09DTklkbGVTdGF0ZTsKKyAgfQorICAvKiBXcml0ZSB0byBUSU14IENSMiAqLworICBUSU14LT5DUjIgPSB0bXBjcjI7CisgIAorICAvKiBXcml0ZSB0byBUSU14IENDTVIxICovCisgIFRJTXgtPkNDTVIxID0gdG1wY2Ntcng7CisKKyAgLyogU2V0IHRoZSBDYXB0dXJlIENvbXBhcmUgUmVnaXN0ZXIgdmFsdWUgKi8KKyAgVElNeC0+Q0NSMSA9IFRJTV9PQ0luaXRTdHJ1Y3QtPlRJTV9QdWxzZTsgCisgCisgIC8qIFdyaXRlIHRvIFRJTXggQ0NFUiAqLworICBUSU14LT5DQ0VSID0gdG1wY2NlcjsKK30KKworLyoqCisgICogQGJyaWVmICBJbml0aWFsaXplcyB0aGUgVElNeCBDaGFubmVsMiBhY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmllZAorICAqICAgICAgICAgcGFyYW1ldGVycyBpbiB0aGUgVElNX09DSW5pdFN0cnVjdC4KKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlICAxLCAyLCAzLCA0LCA1LCA4LCA5LCAxMiBvciAxNSB0byBzZWxlY3QgCisgICogICAgICAgICB0aGUgVElNIHBlcmlwaGVyYWwuCisgICogQHBhcmFtICBUSU1fT0NJbml0U3RydWN0OiBwb2ludGVyIHRvIGEgVElNX09DSW5pdFR5cGVEZWYgc3RydWN0dXJlCisgICogICAgICAgICB0aGF0IGNvbnRhaW5zIHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZvciB0aGUgc3BlY2lmaWVkIFRJTSBwZXJpcGhlcmFsLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBUSU1fT0MySW5pdChUSU1fVHlwZURlZiogVElNeCwgVElNX09DSW5pdFR5cGVEZWYqIFRJTV9PQ0luaXRTdHJ1Y3QpCit7CisgIHVpbnQxNl90IHRtcGNjbXJ4ID0gMCwgdG1wY2NlciA9IDAsIHRtcGNyMiA9IDA7CisgICAKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9MSVNUNl9QRVJJUEgoVElNeCkpOyAKKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9PQ19NT0RFKFRJTV9PQ0luaXRTdHJ1Y3QtPlRJTV9PQ01vZGUpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9PVVRQVVRfU1RBVEUoVElNX09DSW5pdFN0cnVjdC0+VElNX091dHB1dFN0YXRlKSk7CisgIGFzc2VydF9wYXJhbShJU19USU1fT0NfUE9MQVJJVFkoVElNX09DSW5pdFN0cnVjdC0+VElNX09DUG9sYXJpdHkpKTsgICAKKyAgIC8qIERpc2FibGUgdGhlIENoYW5uZWwgMjogUmVzZXQgdGhlIENDMkUgQml0ICovCisgIFRJTXgtPkNDRVIgJj0gKHVpbnQxNl90KSh+KCh1aW50MTZfdClUSU1fQ0NFUl9DQzJFKSk7CisgIAorICAvKiBHZXQgdGhlIFRJTXggQ0NFUiByZWdpc3RlciB2YWx1ZSAqLyAgCisgIHRtcGNjZXIgPSBUSU14LT5DQ0VSOworICAvKiBHZXQgdGhlIFRJTXggQ1IyIHJlZ2lzdGVyIHZhbHVlICovCisgIHRtcGNyMiA9ICBUSU14LT5DUjI7CisgIAorICAvKiBHZXQgdGhlIFRJTXggQ0NNUjEgcmVnaXN0ZXIgdmFsdWUgKi8KKyAgdG1wY2NtcnggPSBUSU14LT5DQ01SMTsKKyAgICAKKyAgLyogUmVzZXQgdGhlIE91dHB1dCBDb21wYXJlIG1vZGUgYW5kIENhcHR1cmUvQ29tcGFyZSBzZWxlY3Rpb24gQml0cyAqLworICB0bXBjY21yeCAmPSAodWludDE2X3QpKH4oKHVpbnQxNl90KVRJTV9DQ01SMV9PQzJNKSk7CisgIHRtcGNjbXJ4ICY9ICh1aW50MTZfdCkofigodWludDE2X3QpVElNX0NDTVIxX0NDMlMpKTsKKyAgCisgIC8qIFNlbGVjdCB0aGUgT3V0cHV0IENvbXBhcmUgTW9kZSAqLworICB0bXBjY21yeCB8PSAodWludDE2X3QpKFRJTV9PQ0luaXRTdHJ1Y3QtPlRJTV9PQ01vZGUgPDwgOCk7CisgIAorICAvKiBSZXNldCB0aGUgT3V0cHV0IFBvbGFyaXR5IGxldmVsICovCisgIHRtcGNjZXIgJj0gKHVpbnQxNl90KSh+KCh1aW50MTZfdClUSU1fQ0NFUl9DQzJQKSk7CisgIC8qIFNldCB0aGUgT3V0cHV0IENvbXBhcmUgUG9sYXJpdHkgKi8KKyAgdG1wY2NlciB8PSAodWludDE2X3QpKFRJTV9PQ0luaXRTdHJ1Y3QtPlRJTV9PQ1BvbGFyaXR5IDw8IDQpOworICAKKyAgLyogU2V0IHRoZSBPdXRwdXQgU3RhdGUgKi8KKyAgdG1wY2NlciB8PSAodWludDE2X3QpKFRJTV9PQ0luaXRTdHJ1Y3QtPlRJTV9PdXRwdXRTdGF0ZSA8PCA0KTsKKyAgICAKKyAgaWYoKFRJTXggPT0gVElNMSkgfHwgKFRJTXggPT0gVElNOCkpCisgIHsKKyAgICBhc3NlcnRfcGFyYW0oSVNfVElNX09VVFBVVE5fU1RBVEUoVElNX09DSW5pdFN0cnVjdC0+VElNX091dHB1dE5TdGF0ZSkpOworICAgIGFzc2VydF9wYXJhbShJU19USU1fT0NOX1BPTEFSSVRZKFRJTV9PQ0luaXRTdHJ1Y3QtPlRJTV9PQ05Qb2xhcml0eSkpOworICAgIGFzc2VydF9wYXJhbShJU19USU1fT0NOSURMRV9TVEFURShUSU1fT0NJbml0U3RydWN0LT5USU1fT0NOSWRsZVN0YXRlKSk7CisgICAgYXNzZXJ0X3BhcmFtKElTX1RJTV9PQ0lETEVfU1RBVEUoVElNX09DSW5pdFN0cnVjdC0+VElNX09DSWRsZVN0YXRlKSk7CisgICAgCisgICAgLyogUmVzZXQgdGhlIE91dHB1dCBOIFBvbGFyaXR5IGxldmVsICovCisgICAgdG1wY2NlciAmPSAodWludDE2X3QpKH4oKHVpbnQxNl90KVRJTV9DQ0VSX0NDMk5QKSk7CisgICAgLyogU2V0IHRoZSBPdXRwdXQgTiBQb2xhcml0eSAqLworICAgIHRtcGNjZXIgfD0gKHVpbnQxNl90KShUSU1fT0NJbml0U3RydWN0LT5USU1fT0NOUG9sYXJpdHkgPDwgNCk7CisgICAgCisgICAgLyogUmVzZXQgdGhlIE91dHB1dCBOIFN0YXRlICovCisgICAgdG1wY2NlciAmPSAodWludDE2X3QpKH4oKHVpbnQxNl90KVRJTV9DQ0VSX0NDMk5FKSk7ICAgIAorICAgIC8qIFNldCB0aGUgT3V0cHV0IE4gU3RhdGUgKi8KKyAgICB0bXBjY2VyIHw9ICh1aW50MTZfdCkoVElNX09DSW5pdFN0cnVjdC0+VElNX091dHB1dE5TdGF0ZSA8PCA0KTsKKyAgICAKKyAgICAvKiBSZXNldCB0aGUgT3V0cHV0IENvbXBhcmUgYW5kIE91dHB1dCBDb21wYXJlIE4gSURMRSBTdGF0ZSAqLworICAgIHRtcGNyMiAmPSAodWludDE2X3QpKH4oKHVpbnQxNl90KVRJTV9DUjJfT0lTMikpOworICAgIHRtcGNyMiAmPSAodWludDE2X3QpKH4oKHVpbnQxNl90KVRJTV9DUjJfT0lTMk4pKTsKKyAgICAKKyAgICAvKiBTZXQgdGhlIE91dHB1dCBJZGxlIHN0YXRlICovCisgICAgdG1wY3IyIHw9ICh1aW50MTZfdCkoVElNX09DSW5pdFN0cnVjdC0+VElNX09DSWRsZVN0YXRlIDw8IDIpOworICAgIC8qIFNldCB0aGUgT3V0cHV0IE4gSWRsZSBzdGF0ZSAqLworICAgIHRtcGNyMiB8PSAodWludDE2X3QpKFRJTV9PQ0luaXRTdHJ1Y3QtPlRJTV9PQ05JZGxlU3RhdGUgPDwgMik7CisgIH0KKyAgLyogV3JpdGUgdG8gVElNeCBDUjIgKi8KKyAgVElNeC0+Q1IyID0gdG1wY3IyOworICAKKyAgLyogV3JpdGUgdG8gVElNeCBDQ01SMSAqLworICBUSU14LT5DQ01SMSA9IHRtcGNjbXJ4OworCisgIC8qIFNldCB0aGUgQ2FwdHVyZSBDb21wYXJlIFJlZ2lzdGVyIHZhbHVlICovCisgIFRJTXgtPkNDUjIgPSBUSU1fT0NJbml0U3RydWN0LT5USU1fUHVsc2U7CisgIAorICAvKiBXcml0ZSB0byBUSU14IENDRVIgKi8KKyAgVElNeC0+Q0NFUiA9IHRtcGNjZXI7Cit9CisKKy8qKgorICAqIEBicmllZiAgSW5pdGlhbGl6ZXMgdGhlIFRJTXggQ2hhbm5lbDMgYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQKKyAgKiAgICAgICAgIHBhcmFtZXRlcnMgaW4gdGhlIFRJTV9PQ0luaXRTdHJ1Y3QuCisgICogQHBhcmFtICBUSU14OiB3aGVyZSB4IGNhbiBiZSAgMSwgMiwgMywgNCwgNSBvciA4IHRvIHNlbGVjdCB0aGUgVElNIHBlcmlwaGVyYWwuCisgICogQHBhcmFtICBUSU1fT0NJbml0U3RydWN0OiBwb2ludGVyIHRvIGEgVElNX09DSW5pdFR5cGVEZWYgc3RydWN0dXJlCisgICogICAgICAgICB0aGF0IGNvbnRhaW5zIHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZvciB0aGUgc3BlY2lmaWVkIFRJTSBwZXJpcGhlcmFsLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBUSU1fT0MzSW5pdChUSU1fVHlwZURlZiogVElNeCwgVElNX09DSW5pdFR5cGVEZWYqIFRJTV9PQ0luaXRTdHJ1Y3QpCit7CisgIHVpbnQxNl90IHRtcGNjbXJ4ID0gMCwgdG1wY2NlciA9IDAsIHRtcGNyMiA9IDA7CisgICAKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9MSVNUM19QRVJJUEgoVElNeCkpOyAKKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9PQ19NT0RFKFRJTV9PQ0luaXRTdHJ1Y3QtPlRJTV9PQ01vZGUpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9PVVRQVVRfU1RBVEUoVElNX09DSW5pdFN0cnVjdC0+VElNX091dHB1dFN0YXRlKSk7CisgIGFzc2VydF9wYXJhbShJU19USU1fT0NfUE9MQVJJVFkoVElNX09DSW5pdFN0cnVjdC0+VElNX09DUG9sYXJpdHkpKTsgICAKKyAgLyogRGlzYWJsZSB0aGUgQ2hhbm5lbCAyOiBSZXNldCB0aGUgQ0MyRSBCaXQgKi8KKyAgVElNeC0+Q0NFUiAmPSAodWludDE2X3QpKH4oKHVpbnQxNl90KVRJTV9DQ0VSX0NDM0UpKTsKKyAgCisgIC8qIEdldCB0aGUgVElNeCBDQ0VSIHJlZ2lzdGVyIHZhbHVlICovCisgIHRtcGNjZXIgPSBUSU14LT5DQ0VSOworICAvKiBHZXQgdGhlIFRJTXggQ1IyIHJlZ2lzdGVyIHZhbHVlICovCisgIHRtcGNyMiA9ICBUSU14LT5DUjI7CisgIAorICAvKiBHZXQgdGhlIFRJTXggQ0NNUjIgcmVnaXN0ZXIgdmFsdWUgKi8KKyAgdG1wY2NtcnggPSBUSU14LT5DQ01SMjsKKyAgICAKKyAgLyogUmVzZXQgdGhlIE91dHB1dCBDb21wYXJlIG1vZGUgYW5kIENhcHR1cmUvQ29tcGFyZSBzZWxlY3Rpb24gQml0cyAqLworICB0bXBjY21yeCAmPSAodWludDE2X3QpKH4oKHVpbnQxNl90KVRJTV9DQ01SMl9PQzNNKSk7CisgIHRtcGNjbXJ4ICY9ICh1aW50MTZfdCkofigodWludDE2X3QpVElNX0NDTVIyX0NDM1MpKTsgIAorICAvKiBTZWxlY3QgdGhlIE91dHB1dCBDb21wYXJlIE1vZGUgKi8KKyAgdG1wY2NtcnggfD0gVElNX09DSW5pdFN0cnVjdC0+VElNX09DTW9kZTsKKyAgCisgIC8qIFJlc2V0IHRoZSBPdXRwdXQgUG9sYXJpdHkgbGV2ZWwgKi8KKyAgdG1wY2NlciAmPSAodWludDE2X3QpKH4oKHVpbnQxNl90KVRJTV9DQ0VSX0NDM1ApKTsKKyAgLyogU2V0IHRoZSBPdXRwdXQgQ29tcGFyZSBQb2xhcml0eSAqLworICB0bXBjY2VyIHw9ICh1aW50MTZfdCkoVElNX09DSW5pdFN0cnVjdC0+VElNX09DUG9sYXJpdHkgPDwgOCk7CisgIAorICAvKiBTZXQgdGhlIE91dHB1dCBTdGF0ZSAqLworICB0bXBjY2VyIHw9ICh1aW50MTZfdCkoVElNX09DSW5pdFN0cnVjdC0+VElNX091dHB1dFN0YXRlIDw8IDgpOworICAgIAorICBpZigoVElNeCA9PSBUSU0xKSB8fCAoVElNeCA9PSBUSU04KSkKKyAgeworICAgIGFzc2VydF9wYXJhbShJU19USU1fT1VUUFVUTl9TVEFURShUSU1fT0NJbml0U3RydWN0LT5USU1fT3V0cHV0TlN0YXRlKSk7CisgICAgYXNzZXJ0X3BhcmFtKElTX1RJTV9PQ05fUE9MQVJJVFkoVElNX09DSW5pdFN0cnVjdC0+VElNX09DTlBvbGFyaXR5KSk7CisgICAgYXNzZXJ0X3BhcmFtKElTX1RJTV9PQ05JRExFX1NUQVRFKFRJTV9PQ0luaXRTdHJ1Y3QtPlRJTV9PQ05JZGxlU3RhdGUpKTsKKyAgICBhc3NlcnRfcGFyYW0oSVNfVElNX09DSURMRV9TVEFURShUSU1fT0NJbml0U3RydWN0LT5USU1fT0NJZGxlU3RhdGUpKTsKKyAgICAKKyAgICAvKiBSZXNldCB0aGUgT3V0cHV0IE4gUG9sYXJpdHkgbGV2ZWwgKi8KKyAgICB0bXBjY2VyICY9ICh1aW50MTZfdCkofigodWludDE2X3QpVElNX0NDRVJfQ0MzTlApKTsKKyAgICAvKiBTZXQgdGhlIE91dHB1dCBOIFBvbGFyaXR5ICovCisgICAgdG1wY2NlciB8PSAodWludDE2X3QpKFRJTV9PQ0luaXRTdHJ1Y3QtPlRJTV9PQ05Qb2xhcml0eSA8PCA4KTsKKyAgICAvKiBSZXNldCB0aGUgT3V0cHV0IE4gU3RhdGUgKi8KKyAgICB0bXBjY2VyICY9ICh1aW50MTZfdCkofigodWludDE2X3QpVElNX0NDRVJfQ0MzTkUpKTsKKyAgICAKKyAgICAvKiBTZXQgdGhlIE91dHB1dCBOIFN0YXRlICovCisgICAgdG1wY2NlciB8PSAodWludDE2X3QpKFRJTV9PQ0luaXRTdHJ1Y3QtPlRJTV9PdXRwdXROU3RhdGUgPDwgOCk7CisgICAgLyogUmVzZXQgdGhlIE91dHB1dCBDb21wYXJlIGFuZCBPdXRwdXQgQ29tcGFyZSBOIElETEUgU3RhdGUgKi8KKyAgICB0bXBjcjIgJj0gKHVpbnQxNl90KSh+KCh1aW50MTZfdClUSU1fQ1IyX09JUzMpKTsKKyAgICB0bXBjcjIgJj0gKHVpbnQxNl90KSh+KCh1aW50MTZfdClUSU1fQ1IyX09JUzNOKSk7CisgICAgLyogU2V0IHRoZSBPdXRwdXQgSWRsZSBzdGF0ZSAqLworICAgIHRtcGNyMiB8PSAodWludDE2X3QpKFRJTV9PQ0luaXRTdHJ1Y3QtPlRJTV9PQ0lkbGVTdGF0ZSA8PCA0KTsKKyAgICAvKiBTZXQgdGhlIE91dHB1dCBOIElkbGUgc3RhdGUgKi8KKyAgICB0bXBjcjIgfD0gKHVpbnQxNl90KShUSU1fT0NJbml0U3RydWN0LT5USU1fT0NOSWRsZVN0YXRlIDw8IDQpOworICB9CisgIC8qIFdyaXRlIHRvIFRJTXggQ1IyICovCisgIFRJTXgtPkNSMiA9IHRtcGNyMjsKKyAgCisgIC8qIFdyaXRlIHRvIFRJTXggQ0NNUjIgKi8KKyAgVElNeC0+Q0NNUjIgPSB0bXBjY21yeDsKKworICAvKiBTZXQgdGhlIENhcHR1cmUgQ29tcGFyZSBSZWdpc3RlciB2YWx1ZSAqLworICBUSU14LT5DQ1IzID0gVElNX09DSW5pdFN0cnVjdC0+VElNX1B1bHNlOworICAKKyAgLyogV3JpdGUgdG8gVElNeCBDQ0VSICovCisgIFRJTXgtPkNDRVIgPSB0bXBjY2VyOworfQorCisvKioKKyAgKiBAYnJpZWYgIEluaXRpYWxpemVzIHRoZSBUSU14IENoYW5uZWw0IGFjY29yZGluZyB0byB0aGUgc3BlY2lmaWVkCisgICogICAgICAgICBwYXJhbWV0ZXJzIGluIHRoZSBUSU1fT0NJbml0U3RydWN0LgorICAqIEBwYXJhbSAgVElNeDogd2hlcmUgeCBjYW4gYmUgIDEsIDIsIDMsIDQsIDUgb3IgOCB0byBzZWxlY3QgdGhlIFRJTSBwZXJpcGhlcmFsLgorICAqIEBwYXJhbSAgVElNX09DSW5pdFN0cnVjdDogcG9pbnRlciB0byBhIFRJTV9PQ0luaXRUeXBlRGVmIHN0cnVjdHVyZQorICAqICAgICAgICAgdGhhdCBjb250YWlucyB0aGUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBmb3IgdGhlIHNwZWNpZmllZCBUSU0gcGVyaXBoZXJhbC4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgVElNX09DNEluaXQoVElNX1R5cGVEZWYqIFRJTXgsIFRJTV9PQ0luaXRUeXBlRGVmKiBUSU1fT0NJbml0U3RydWN0KQoreworICB1aW50MTZfdCB0bXBjY21yeCA9IDAsIHRtcGNjZXIgPSAwLCB0bXBjcjIgPSAwOworICAgCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19USU1fTElTVDNfUEVSSVBIKFRJTXgpKTsgCisgIGFzc2VydF9wYXJhbShJU19USU1fT0NfTU9ERShUSU1fT0NJbml0U3RydWN0LT5USU1fT0NNb2RlKSk7CisgIGFzc2VydF9wYXJhbShJU19USU1fT1VUUFVUX1NUQVRFKFRJTV9PQ0luaXRTdHJ1Y3QtPlRJTV9PdXRwdXRTdGF0ZSkpOworICBhc3NlcnRfcGFyYW0oSVNfVElNX09DX1BPTEFSSVRZKFRJTV9PQ0luaXRTdHJ1Y3QtPlRJTV9PQ1BvbGFyaXR5KSk7ICAgCisgIC8qIERpc2FibGUgdGhlIENoYW5uZWwgMjogUmVzZXQgdGhlIENDNEUgQml0ICovCisgIFRJTXgtPkNDRVIgJj0gKHVpbnQxNl90KSh+KCh1aW50MTZfdClUSU1fQ0NFUl9DQzRFKSk7CisgIAorICAvKiBHZXQgdGhlIFRJTXggQ0NFUiByZWdpc3RlciB2YWx1ZSAqLworICB0bXBjY2VyID0gVElNeC0+Q0NFUjsKKyAgLyogR2V0IHRoZSBUSU14IENSMiByZWdpc3RlciB2YWx1ZSAqLworICB0bXBjcjIgPSAgVElNeC0+Q1IyOworICAKKyAgLyogR2V0IHRoZSBUSU14IENDTVIyIHJlZ2lzdGVyIHZhbHVlICovCisgIHRtcGNjbXJ4ID0gVElNeC0+Q0NNUjI7CisgICAgCisgIC8qIFJlc2V0IHRoZSBPdXRwdXQgQ29tcGFyZSBtb2RlIGFuZCBDYXB0dXJlL0NvbXBhcmUgc2VsZWN0aW9uIEJpdHMgKi8KKyAgdG1wY2NtcnggJj0gKHVpbnQxNl90KSh+KCh1aW50MTZfdClUSU1fQ0NNUjJfT0M0TSkpOworICB0bXBjY21yeCAmPSAodWludDE2X3QpKH4oKHVpbnQxNl90KVRJTV9DQ01SMl9DQzRTKSk7CisgIAorICAvKiBTZWxlY3QgdGhlIE91dHB1dCBDb21wYXJlIE1vZGUgKi8KKyAgdG1wY2NtcnggfD0gKHVpbnQxNl90KShUSU1fT0NJbml0U3RydWN0LT5USU1fT0NNb2RlIDw8IDgpOworICAKKyAgLyogUmVzZXQgdGhlIE91dHB1dCBQb2xhcml0eSBsZXZlbCAqLworICB0bXBjY2VyICY9ICh1aW50MTZfdCkofigodWludDE2X3QpVElNX0NDRVJfQ0M0UCkpOworICAvKiBTZXQgdGhlIE91dHB1dCBDb21wYXJlIFBvbGFyaXR5ICovCisgIHRtcGNjZXIgfD0gKHVpbnQxNl90KShUSU1fT0NJbml0U3RydWN0LT5USU1fT0NQb2xhcml0eSA8PCAxMik7CisgIAorICAvKiBTZXQgdGhlIE91dHB1dCBTdGF0ZSAqLworICB0bXBjY2VyIHw9ICh1aW50MTZfdCkoVElNX09DSW5pdFN0cnVjdC0+VElNX091dHB1dFN0YXRlIDw8IDEyKTsKKyAgICAKKyAgaWYoKFRJTXggPT0gVElNMSkgfHwgKFRJTXggPT0gVElNOCkpCisgIHsKKyAgICBhc3NlcnRfcGFyYW0oSVNfVElNX09DSURMRV9TVEFURShUSU1fT0NJbml0U3RydWN0LT5USU1fT0NJZGxlU3RhdGUpKTsKKyAgICAvKiBSZXNldCB0aGUgT3V0cHV0IENvbXBhcmUgSURMRSBTdGF0ZSAqLworICAgIHRtcGNyMiAmPSAodWludDE2X3QpKH4oKHVpbnQxNl90KVRJTV9DUjJfT0lTNCkpOworICAgIC8qIFNldCB0aGUgT3V0cHV0IElkbGUgc3RhdGUgKi8KKyAgICB0bXBjcjIgfD0gKHVpbnQxNl90KShUSU1fT0NJbml0U3RydWN0LT5USU1fT0NJZGxlU3RhdGUgPDwgNik7CisgIH0KKyAgLyogV3JpdGUgdG8gVElNeCBDUjIgKi8KKyAgVElNeC0+Q1IyID0gdG1wY3IyOworICAKKyAgLyogV3JpdGUgdG8gVElNeCBDQ01SMiAqLyAgCisgIFRJTXgtPkNDTVIyID0gdG1wY2Ntcng7CisKKyAgLyogU2V0IHRoZSBDYXB0dXJlIENvbXBhcmUgUmVnaXN0ZXIgdmFsdWUgKi8KKyAgVElNeC0+Q0NSNCA9IFRJTV9PQ0luaXRTdHJ1Y3QtPlRJTV9QdWxzZTsKKyAgCisgIC8qIFdyaXRlIHRvIFRJTXggQ0NFUiAqLworICBUSU14LT5DQ0VSID0gdG1wY2NlcjsKK30KKworLyoqCisgICogQGJyaWVmICBJbml0aWFsaXplcyB0aGUgVElNIHBlcmlwaGVyYWwgYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQKKyAgKiAgICAgICAgIHBhcmFtZXRlcnMgaW4gdGhlIFRJTV9JQ0luaXRTdHJ1Y3QuCisgICogQHBhcmFtICBUSU14OiB3aGVyZSB4IGNhbiBiZSAgMSB0byAxNyBleGNlcHQgNiBhbmQgNyB0byBzZWxlY3QgdGhlIFRJTSBwZXJpcGhlcmFsLgorICAqIEBwYXJhbSAgVElNX0lDSW5pdFN0cnVjdDogcG9pbnRlciB0byBhIFRJTV9JQ0luaXRUeXBlRGVmIHN0cnVjdHVyZQorICAqICAgICAgICAgdGhhdCBjb250YWlucyB0aGUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBmb3IgdGhlIHNwZWNpZmllZCBUSU0gcGVyaXBoZXJhbC4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgVElNX0lDSW5pdChUSU1fVHlwZURlZiogVElNeCwgVElNX0lDSW5pdFR5cGVEZWYqIFRJTV9JQ0luaXRTdHJ1Y3QpCit7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19USU1fQ0hBTk5FTChUSU1fSUNJbml0U3RydWN0LT5USU1fQ2hhbm5lbCkpOyAgCisgIGFzc2VydF9wYXJhbShJU19USU1fSUNfU0VMRUNUSU9OKFRJTV9JQ0luaXRTdHJ1Y3QtPlRJTV9JQ1NlbGVjdGlvbikpOworICBhc3NlcnRfcGFyYW0oSVNfVElNX0lDX1BSRVNDQUxFUihUSU1fSUNJbml0U3RydWN0LT5USU1fSUNQcmVzY2FsZXIpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9JQ19GSUxURVIoVElNX0lDSW5pdFN0cnVjdC0+VElNX0lDRmlsdGVyKSk7CisgIAorICBpZigoVElNeCA9PSBUSU0xKSB8fCAoVElNeCA9PSBUSU04KSB8fCAoVElNeCA9PSBUSU0yKSB8fCAoVElNeCA9PSBUSU0zKSB8fAorICAgICAoVElNeCA9PSBUSU00KSB8fChUSU14ID09IFRJTTUpKQorICB7CisgICAgYXNzZXJ0X3BhcmFtKElTX1RJTV9JQ19QT0xBUklUWShUSU1fSUNJbml0U3RydWN0LT5USU1fSUNQb2xhcml0eSkpOworICB9CisgIGVsc2UKKyAgeworICAgIGFzc2VydF9wYXJhbShJU19USU1fSUNfUE9MQVJJVFlfTElURShUSU1fSUNJbml0U3RydWN0LT5USU1fSUNQb2xhcml0eSkpOworICB9CisgIGlmIChUSU1fSUNJbml0U3RydWN0LT5USU1fQ2hhbm5lbCA9PSBUSU1fQ2hhbm5lbF8xKQorICB7CisgICAgYXNzZXJ0X3BhcmFtKElTX1RJTV9MSVNUOF9QRVJJUEgoVElNeCkpOworICAgIC8qIFRJMSBDb25maWd1cmF0aW9uICovCisgICAgVEkxX0NvbmZpZyhUSU14LCBUSU1fSUNJbml0U3RydWN0LT5USU1fSUNQb2xhcml0eSwKKyAgICAgICAgICAgICAgIFRJTV9JQ0luaXRTdHJ1Y3QtPlRJTV9JQ1NlbGVjdGlvbiwKKyAgICAgICAgICAgICAgIFRJTV9JQ0luaXRTdHJ1Y3QtPlRJTV9JQ0ZpbHRlcik7CisgICAgLyogU2V0IHRoZSBJbnB1dCBDYXB0dXJlIFByZXNjYWxlciB2YWx1ZSAqLworICAgIFRJTV9TZXRJQzFQcmVzY2FsZXIoVElNeCwgVElNX0lDSW5pdFN0cnVjdC0+VElNX0lDUHJlc2NhbGVyKTsKKyAgfQorICBlbHNlIGlmIChUSU1fSUNJbml0U3RydWN0LT5USU1fQ2hhbm5lbCA9PSBUSU1fQ2hhbm5lbF8yKQorICB7CisgICAgYXNzZXJ0X3BhcmFtKElTX1RJTV9MSVNUNl9QRVJJUEgoVElNeCkpOworICAgIC8qIFRJMiBDb25maWd1cmF0aW9uICovCisgICAgVEkyX0NvbmZpZyhUSU14LCBUSU1fSUNJbml0U3RydWN0LT5USU1fSUNQb2xhcml0eSwKKyAgICAgICAgICAgICAgIFRJTV9JQ0luaXRTdHJ1Y3QtPlRJTV9JQ1NlbGVjdGlvbiwKKyAgICAgICAgICAgICAgIFRJTV9JQ0luaXRTdHJ1Y3QtPlRJTV9JQ0ZpbHRlcik7CisgICAgLyogU2V0IHRoZSBJbnB1dCBDYXB0dXJlIFByZXNjYWxlciB2YWx1ZSAqLworICAgIFRJTV9TZXRJQzJQcmVzY2FsZXIoVElNeCwgVElNX0lDSW5pdFN0cnVjdC0+VElNX0lDUHJlc2NhbGVyKTsKKyAgfQorICBlbHNlIGlmIChUSU1fSUNJbml0U3RydWN0LT5USU1fQ2hhbm5lbCA9PSBUSU1fQ2hhbm5lbF8zKQorICB7CisgICAgYXNzZXJ0X3BhcmFtKElTX1RJTV9MSVNUM19QRVJJUEgoVElNeCkpOworICAgIC8qIFRJMyBDb25maWd1cmF0aW9uICovCisgICAgVEkzX0NvbmZpZyhUSU14LCAgVElNX0lDSW5pdFN0cnVjdC0+VElNX0lDUG9sYXJpdHksCisgICAgICAgICAgICAgICBUSU1fSUNJbml0U3RydWN0LT5USU1fSUNTZWxlY3Rpb24sCisgICAgICAgICAgICAgICBUSU1fSUNJbml0U3RydWN0LT5USU1fSUNGaWx0ZXIpOworICAgIC8qIFNldCB0aGUgSW5wdXQgQ2FwdHVyZSBQcmVzY2FsZXIgdmFsdWUgKi8KKyAgICBUSU1fU2V0SUMzUHJlc2NhbGVyKFRJTXgsIFRJTV9JQ0luaXRTdHJ1Y3QtPlRJTV9JQ1ByZXNjYWxlcik7CisgIH0KKyAgZWxzZQorICB7CisgICAgYXNzZXJ0X3BhcmFtKElTX1RJTV9MSVNUM19QRVJJUEgoVElNeCkpOworICAgIC8qIFRJNCBDb25maWd1cmF0aW9uICovCisgICAgVEk0X0NvbmZpZyhUSU14LCBUSU1fSUNJbml0U3RydWN0LT5USU1fSUNQb2xhcml0eSwKKyAgICAgICAgICAgICAgIFRJTV9JQ0luaXRTdHJ1Y3QtPlRJTV9JQ1NlbGVjdGlvbiwKKyAgICAgICAgICAgICAgIFRJTV9JQ0luaXRTdHJ1Y3QtPlRJTV9JQ0ZpbHRlcik7CisgICAgLyogU2V0IHRoZSBJbnB1dCBDYXB0dXJlIFByZXNjYWxlciB2YWx1ZSAqLworICAgIFRJTV9TZXRJQzRQcmVzY2FsZXIoVElNeCwgVElNX0lDSW5pdFN0cnVjdC0+VElNX0lDUHJlc2NhbGVyKTsKKyAgfQorfQorCisvKioKKyAgKiBAYnJpZWYgIENvbmZpZ3VyZXMgdGhlIFRJTSBwZXJpcGhlcmFsIGFjY29yZGluZyB0byB0aGUgc3BlY2lmaWVkCisgICogICAgICAgICBwYXJhbWV0ZXJzIGluIHRoZSBUSU1fSUNJbml0U3RydWN0IHRvIG1lYXN1cmUgYW4gZXh0ZXJuYWwgUFdNIHNpZ25hbC4KKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlICAxLCAyLCAzLCA0LCA1LCA4LCA5LCAxMiBvciAxNSB0byBzZWxlY3QgdGhlIFRJTSBwZXJpcGhlcmFsLgorICAqIEBwYXJhbSAgVElNX0lDSW5pdFN0cnVjdDogcG9pbnRlciB0byBhIFRJTV9JQ0luaXRUeXBlRGVmIHN0cnVjdHVyZQorICAqICAgICAgICAgdGhhdCBjb250YWlucyB0aGUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBmb3IgdGhlIHNwZWNpZmllZCBUSU0gcGVyaXBoZXJhbC4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgVElNX1BXTUlDb25maWcoVElNX1R5cGVEZWYqIFRJTXgsIFRJTV9JQ0luaXRUeXBlRGVmKiBUSU1fSUNJbml0U3RydWN0KQoreworICB1aW50MTZfdCBpY29wcG9zaXRlcG9sYXJpdHkgPSBUSU1fSUNQb2xhcml0eV9SaXNpbmc7CisgIHVpbnQxNl90IGljb3Bwb3NpdGVzZWxlY3Rpb24gPSBUSU1fSUNTZWxlY3Rpb25fRGlyZWN0VEk7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19USU1fTElTVDZfUEVSSVBIKFRJTXgpKTsKKyAgLyogU2VsZWN0IHRoZSBPcHBvc2l0ZSBJbnB1dCBQb2xhcml0eSAqLworICBpZiAoVElNX0lDSW5pdFN0cnVjdC0+VElNX0lDUG9sYXJpdHkgPT0gVElNX0lDUG9sYXJpdHlfUmlzaW5nKQorICB7CisgICAgaWNvcHBvc2l0ZXBvbGFyaXR5ID0gVElNX0lDUG9sYXJpdHlfRmFsbGluZzsKKyAgfQorICBlbHNlCisgIHsKKyAgICBpY29wcG9zaXRlcG9sYXJpdHkgPSBUSU1fSUNQb2xhcml0eV9SaXNpbmc7CisgIH0KKyAgLyogU2VsZWN0IHRoZSBPcHBvc2l0ZSBJbnB1dCAqLworICBpZiAoVElNX0lDSW5pdFN0cnVjdC0+VElNX0lDU2VsZWN0aW9uID09IFRJTV9JQ1NlbGVjdGlvbl9EaXJlY3RUSSkKKyAgeworICAgIGljb3Bwb3NpdGVzZWxlY3Rpb24gPSBUSU1fSUNTZWxlY3Rpb25fSW5kaXJlY3RUSTsKKyAgfQorICBlbHNlCisgIHsKKyAgICBpY29wcG9zaXRlc2VsZWN0aW9uID0gVElNX0lDU2VsZWN0aW9uX0RpcmVjdFRJOworICB9CisgIGlmIChUSU1fSUNJbml0U3RydWN0LT5USU1fQ2hhbm5lbCA9PSBUSU1fQ2hhbm5lbF8xKQorICB7CisgICAgLyogVEkxIENvbmZpZ3VyYXRpb24gKi8KKyAgICBUSTFfQ29uZmlnKFRJTXgsIFRJTV9JQ0luaXRTdHJ1Y3QtPlRJTV9JQ1BvbGFyaXR5LCBUSU1fSUNJbml0U3RydWN0LT5USU1fSUNTZWxlY3Rpb24sCisgICAgICAgICAgICAgICBUSU1fSUNJbml0U3RydWN0LT5USU1fSUNGaWx0ZXIpOworICAgIC8qIFNldCB0aGUgSW5wdXQgQ2FwdHVyZSBQcmVzY2FsZXIgdmFsdWUgKi8KKyAgICBUSU1fU2V0SUMxUHJlc2NhbGVyKFRJTXgsIFRJTV9JQ0luaXRTdHJ1Y3QtPlRJTV9JQ1ByZXNjYWxlcik7CisgICAgLyogVEkyIENvbmZpZ3VyYXRpb24gKi8KKyAgICBUSTJfQ29uZmlnKFRJTXgsIGljb3Bwb3NpdGVwb2xhcml0eSwgaWNvcHBvc2l0ZXNlbGVjdGlvbiwgVElNX0lDSW5pdFN0cnVjdC0+VElNX0lDRmlsdGVyKTsKKyAgICAvKiBTZXQgdGhlIElucHV0IENhcHR1cmUgUHJlc2NhbGVyIHZhbHVlICovCisgICAgVElNX1NldElDMlByZXNjYWxlcihUSU14LCBUSU1fSUNJbml0U3RydWN0LT5USU1fSUNQcmVzY2FsZXIpOworICB9CisgIGVsc2UKKyAgeyAKKyAgICAvKiBUSTIgQ29uZmlndXJhdGlvbiAqLworICAgIFRJMl9Db25maWcoVElNeCwgVElNX0lDSW5pdFN0cnVjdC0+VElNX0lDUG9sYXJpdHksIFRJTV9JQ0luaXRTdHJ1Y3QtPlRJTV9JQ1NlbGVjdGlvbiwKKyAgICAgICAgICAgICAgIFRJTV9JQ0luaXRTdHJ1Y3QtPlRJTV9JQ0ZpbHRlcik7CisgICAgLyogU2V0IHRoZSBJbnB1dCBDYXB0dXJlIFByZXNjYWxlciB2YWx1ZSAqLworICAgIFRJTV9TZXRJQzJQcmVzY2FsZXIoVElNeCwgVElNX0lDSW5pdFN0cnVjdC0+VElNX0lDUHJlc2NhbGVyKTsKKyAgICAvKiBUSTEgQ29uZmlndXJhdGlvbiAqLworICAgIFRJMV9Db25maWcoVElNeCwgaWNvcHBvc2l0ZXBvbGFyaXR5LCBpY29wcG9zaXRlc2VsZWN0aW9uLCBUSU1fSUNJbml0U3RydWN0LT5USU1fSUNGaWx0ZXIpOworICAgIC8qIFNldCB0aGUgSW5wdXQgQ2FwdHVyZSBQcmVzY2FsZXIgdmFsdWUgKi8KKyAgICBUSU1fU2V0SUMxUHJlc2NhbGVyKFRJTXgsIFRJTV9JQ0luaXRTdHJ1Y3QtPlRJTV9JQ1ByZXNjYWxlcik7CisgIH0KK30KKworLyoqCisgICogQGJyaWVmICBDb25maWd1cmVzIHRoZTogQnJlYWsgZmVhdHVyZSwgZGVhZCB0aW1lLCBMb2NrIGxldmVsLCB0aGUgT1NTSSwKKyAgKiAgICAgICAgIHRoZSBPU1NSIFN0YXRlIGFuZCB0aGUgQU9FKGF1dG9tYXRpYyBvdXRwdXQgZW5hYmxlKS4KKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlICAxIG9yIDggdG8gc2VsZWN0IHRoZSBUSU0gCisgICogQHBhcmFtICBUSU1fQkRUUkluaXRTdHJ1Y3Q6IHBvaW50ZXIgdG8gYSBUSU1fQkRUUkluaXRUeXBlRGVmIHN0cnVjdHVyZSB0aGF0CisgICogICAgICAgICBjb250YWlucyB0aGUgQkRUUiBSZWdpc3RlciBjb25maWd1cmF0aW9uICBpbmZvcm1hdGlvbiBmb3IgdGhlIFRJTSBwZXJpcGhlcmFsLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBUSU1fQkRUUkNvbmZpZyhUSU1fVHlwZURlZiogVElNeCwgVElNX0JEVFJJbml0VHlwZURlZiAqVElNX0JEVFJJbml0U3RydWN0KQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfVElNX0xJU1QyX1BFUklQSChUSU14KSk7CisgIGFzc2VydF9wYXJhbShJU19USU1fT1NTUl9TVEFURShUSU1fQkRUUkluaXRTdHJ1Y3QtPlRJTV9PU1NSU3RhdGUpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9PU1NJX1NUQVRFKFRJTV9CRFRSSW5pdFN0cnVjdC0+VElNX09TU0lTdGF0ZSkpOworICBhc3NlcnRfcGFyYW0oSVNfVElNX0xPQ0tfTEVWRUwoVElNX0JEVFJJbml0U3RydWN0LT5USU1fTE9DS0xldmVsKSk7CisgIGFzc2VydF9wYXJhbShJU19USU1fQlJFQUtfU1RBVEUoVElNX0JEVFJJbml0U3RydWN0LT5USU1fQnJlYWspKTsKKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9CUkVBS19QT0xBUklUWShUSU1fQkRUUkluaXRTdHJ1Y3QtPlRJTV9CcmVha1BvbGFyaXR5KSk7CisgIGFzc2VydF9wYXJhbShJU19USU1fQVVUT01BVElDX09VVFBVVF9TVEFURShUSU1fQkRUUkluaXRTdHJ1Y3QtPlRJTV9BdXRvbWF0aWNPdXRwdXQpKTsKKyAgLyogU2V0IHRoZSBMb2NrIGxldmVsLCB0aGUgQnJlYWsgZW5hYmxlIEJpdCBhbmQgdGhlIFBsb2FyaXR5LCB0aGUgT1NTUiBTdGF0ZSwKKyAgICAgdGhlIE9TU0kgU3RhdGUsIHRoZSBkZWFkIHRpbWUgdmFsdWUgYW5kIHRoZSBBdXRvbWF0aWMgT3V0cHV0IEVuYWJsZSBCaXQgKi8KKyAgVElNeC0+QkRUUiA9ICh1aW50MzJfdClUSU1fQkRUUkluaXRTdHJ1Y3QtPlRJTV9PU1NSU3RhdGUgfCBUSU1fQkRUUkluaXRTdHJ1Y3QtPlRJTV9PU1NJU3RhdGUgfAorICAgICAgICAgICAgIFRJTV9CRFRSSW5pdFN0cnVjdC0+VElNX0xPQ0tMZXZlbCB8IFRJTV9CRFRSSW5pdFN0cnVjdC0+VElNX0RlYWRUaW1lIHwKKyAgICAgICAgICAgICBUSU1fQkRUUkluaXRTdHJ1Y3QtPlRJTV9CcmVhayB8IFRJTV9CRFRSSW5pdFN0cnVjdC0+VElNX0JyZWFrUG9sYXJpdHkgfAorICAgICAgICAgICAgIFRJTV9CRFRSSW5pdFN0cnVjdC0+VElNX0F1dG9tYXRpY091dHB1dDsKK30KKworLyoqCisgICogQGJyaWVmICBGaWxscyBlYWNoIFRJTV9UaW1lQmFzZUluaXRTdHJ1Y3QgbWVtYmVyIHdpdGggaXRzIGRlZmF1bHQgdmFsdWUuCisgICogQHBhcmFtICBUSU1fVGltZUJhc2VJbml0U3RydWN0IDogcG9pbnRlciB0byBhIFRJTV9UaW1lQmFzZUluaXRUeXBlRGVmCisgICogICAgICAgICBzdHJ1Y3R1cmUgd2hpY2ggd2lsbCBiZSBpbml0aWFsaXplZC4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgVElNX1RpbWVCYXNlU3RydWN0SW5pdChUSU1fVGltZUJhc2VJbml0VHlwZURlZiogVElNX1RpbWVCYXNlSW5pdFN0cnVjdCkKK3sKKyAgLyogU2V0IHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gKi8KKyAgVElNX1RpbWVCYXNlSW5pdFN0cnVjdC0+VElNX1BlcmlvZCA9IDB4RkZGRjsKKyAgVElNX1RpbWVCYXNlSW5pdFN0cnVjdC0+VElNX1ByZXNjYWxlciA9IDB4MDAwMDsKKyAgVElNX1RpbWVCYXNlSW5pdFN0cnVjdC0+VElNX0Nsb2NrRGl2aXNpb24gPSBUSU1fQ0tEX0RJVjE7CisgIFRJTV9UaW1lQmFzZUluaXRTdHJ1Y3QtPlRJTV9Db3VudGVyTW9kZSA9IFRJTV9Db3VudGVyTW9kZV9VcDsKKyAgVElNX1RpbWVCYXNlSW5pdFN0cnVjdC0+VElNX1JlcGV0aXRpb25Db3VudGVyID0gMHgwMDAwOworfQorCisvKioKKyAgKiBAYnJpZWYgIEZpbGxzIGVhY2ggVElNX09DSW5pdFN0cnVjdCBtZW1iZXIgd2l0aCBpdHMgZGVmYXVsdCB2YWx1ZS4KKyAgKiBAcGFyYW0gIFRJTV9PQ0luaXRTdHJ1Y3QgOiBwb2ludGVyIHRvIGEgVElNX09DSW5pdFR5cGVEZWYgc3RydWN0dXJlIHdoaWNoIHdpbGwKKyAgKiAgICAgICAgIGJlIGluaXRpYWxpemVkLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBUSU1fT0NTdHJ1Y3RJbml0KFRJTV9PQ0luaXRUeXBlRGVmKiBUSU1fT0NJbml0U3RydWN0KQoreworICAvKiBTZXQgdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbiAqLworICBUSU1fT0NJbml0U3RydWN0LT5USU1fT0NNb2RlID0gVElNX09DTW9kZV9UaW1pbmc7CisgIFRJTV9PQ0luaXRTdHJ1Y3QtPlRJTV9PdXRwdXRTdGF0ZSA9IFRJTV9PdXRwdXRTdGF0ZV9EaXNhYmxlOworICBUSU1fT0NJbml0U3RydWN0LT5USU1fT3V0cHV0TlN0YXRlID0gVElNX091dHB1dE5TdGF0ZV9EaXNhYmxlOworICBUSU1fT0NJbml0U3RydWN0LT5USU1fUHVsc2UgPSAweDAwMDA7CisgIFRJTV9PQ0luaXRTdHJ1Y3QtPlRJTV9PQ1BvbGFyaXR5ID0gVElNX09DUG9sYXJpdHlfSGlnaDsKKyAgVElNX09DSW5pdFN0cnVjdC0+VElNX09DTlBvbGFyaXR5ID0gVElNX09DUG9sYXJpdHlfSGlnaDsKKyAgVElNX09DSW5pdFN0cnVjdC0+VElNX09DSWRsZVN0YXRlID0gVElNX09DSWRsZVN0YXRlX1Jlc2V0OworICBUSU1fT0NJbml0U3RydWN0LT5USU1fT0NOSWRsZVN0YXRlID0gVElNX09DTklkbGVTdGF0ZV9SZXNldDsKK30KKworLyoqCisgICogQGJyaWVmICBGaWxscyBlYWNoIFRJTV9JQ0luaXRTdHJ1Y3QgbWVtYmVyIHdpdGggaXRzIGRlZmF1bHQgdmFsdWUuCisgICogQHBhcmFtICBUSU1fSUNJbml0U3RydWN0OiBwb2ludGVyIHRvIGEgVElNX0lDSW5pdFR5cGVEZWYgc3RydWN0dXJlIHdoaWNoIHdpbGwKKyAgKiAgICAgICAgIGJlIGluaXRpYWxpemVkLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBUSU1fSUNTdHJ1Y3RJbml0KFRJTV9JQ0luaXRUeXBlRGVmKiBUSU1fSUNJbml0U3RydWN0KQoreworICAvKiBTZXQgdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbiAqLworICBUSU1fSUNJbml0U3RydWN0LT5USU1fQ2hhbm5lbCA9IFRJTV9DaGFubmVsXzE7CisgIFRJTV9JQ0luaXRTdHJ1Y3QtPlRJTV9JQ1BvbGFyaXR5ID0gVElNX0lDUG9sYXJpdHlfUmlzaW5nOworICBUSU1fSUNJbml0U3RydWN0LT5USU1fSUNTZWxlY3Rpb24gPSBUSU1fSUNTZWxlY3Rpb25fRGlyZWN0VEk7CisgIFRJTV9JQ0luaXRTdHJ1Y3QtPlRJTV9JQ1ByZXNjYWxlciA9IFRJTV9JQ1BTQ19ESVYxOworICBUSU1fSUNJbml0U3RydWN0LT5USU1fSUNGaWx0ZXIgPSAweDAwOworfQorCisvKioKKyAgKiBAYnJpZWYgIEZpbGxzIGVhY2ggVElNX0JEVFJJbml0U3RydWN0IG1lbWJlciB3aXRoIGl0cyBkZWZhdWx0IHZhbHVlLgorICAqIEBwYXJhbSAgVElNX0JEVFJJbml0U3RydWN0OiBwb2ludGVyIHRvIGEgVElNX0JEVFJJbml0VHlwZURlZiBzdHJ1Y3R1cmUgd2hpY2gKKyAgKiAgICAgICAgIHdpbGwgYmUgaW5pdGlhbGl6ZWQuCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFRJTV9CRFRSU3RydWN0SW5pdChUSU1fQkRUUkluaXRUeXBlRGVmKiBUSU1fQkRUUkluaXRTdHJ1Y3QpCit7CisgIC8qIFNldCB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uICovCisgIFRJTV9CRFRSSW5pdFN0cnVjdC0+VElNX09TU1JTdGF0ZSA9IFRJTV9PU1NSU3RhdGVfRGlzYWJsZTsKKyAgVElNX0JEVFJJbml0U3RydWN0LT5USU1fT1NTSVN0YXRlID0gVElNX09TU0lTdGF0ZV9EaXNhYmxlOworICBUSU1fQkRUUkluaXRTdHJ1Y3QtPlRJTV9MT0NLTGV2ZWwgPSBUSU1fTE9DS0xldmVsX09GRjsKKyAgVElNX0JEVFJJbml0U3RydWN0LT5USU1fRGVhZFRpbWUgPSAweDAwOworICBUSU1fQkRUUkluaXRTdHJ1Y3QtPlRJTV9CcmVhayA9IFRJTV9CcmVha19EaXNhYmxlOworICBUSU1fQkRUUkluaXRTdHJ1Y3QtPlRJTV9CcmVha1BvbGFyaXR5ID0gVElNX0JyZWFrUG9sYXJpdHlfTG93OworICBUSU1fQkRUUkluaXRTdHJ1Y3QtPlRJTV9BdXRvbWF0aWNPdXRwdXQgPSBUSU1fQXV0b21hdGljT3V0cHV0X0Rpc2FibGU7Cit9CisKKy8qKgorICAqIEBicmllZiAgRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgc3BlY2lmaWVkIFRJTSBwZXJpcGhlcmFsLgorICAqIEBwYXJhbSAgVElNeDogd2hlcmUgeCBjYW4gYmUgMSB0byAxNyB0byBzZWxlY3QgdGhlIFRJTXggcGVyaXBoZXJhbC4KKyAgKiBAcGFyYW0gIE5ld1N0YXRlOiBuZXcgc3RhdGUgb2YgdGhlIFRJTXggcGVyaXBoZXJhbC4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZTogRU5BQkxFIG9yIERJU0FCTEUuCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFRJTV9DbWQoVElNX1R5cGVEZWYqIFRJTXgsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSkKK3sKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9BTExfUEVSSVBIKFRJTXgpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0ZVTkNUSU9OQUxfU1RBVEUoTmV3U3RhdGUpKTsKKyAgCisgIGlmIChOZXdTdGF0ZSAhPSBESVNBQkxFKQorICB7CisgICAgLyogRW5hYmxlIHRoZSBUSU0gQ291bnRlciAqLworICAgIFRJTXgtPkNSMSB8PSBUSU1fQ1IxX0NFTjsKKyAgfQorICBlbHNlCisgIHsKKyAgICAvKiBEaXNhYmxlIHRoZSBUSU0gQ291bnRlciAqLworICAgIFRJTXgtPkNSMSAmPSAodWludDE2X3QpKH4oKHVpbnQxNl90KVRJTV9DUjFfQ0VOKSk7CisgIH0KK30KKworLyoqCisgICogQGJyaWVmICBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBUSU0gcGVyaXBoZXJhbCBNYWluIE91dHB1dHMuCisgICogQHBhcmFtICBUSU14OiB3aGVyZSB4IGNhbiBiZSAxLCA4LCAxNSwgMTYgb3IgMTcgdG8gc2VsZWN0IHRoZSBUSU14IHBlcmlwaGVyYWwuCisgICogQHBhcmFtICBOZXdTdGF0ZTogbmV3IHN0YXRlIG9mIHRoZSBUSU0gcGVyaXBoZXJhbCBNYWluIE91dHB1dHMuCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmU6IEVOQUJMRSBvciBESVNBQkxFLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBUSU1fQ3RybFBXTU91dHB1dHMoVElNX1R5cGVEZWYqIFRJTXgsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSkKK3sKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9MSVNUMl9QRVJJUEgoVElNeCkpOworICBhc3NlcnRfcGFyYW0oSVNfRlVOQ1RJT05BTF9TVEFURShOZXdTdGF0ZSkpOworICBpZiAoTmV3U3RhdGUgIT0gRElTQUJMRSkKKyAgeworICAgIC8qIEVuYWJsZSB0aGUgVElNIE1haW4gT3V0cHV0ICovCisgICAgVElNeC0+QkRUUiB8PSBUSU1fQkRUUl9NT0U7CisgIH0KKyAgZWxzZQorICB7CisgICAgLyogRGlzYWJsZSB0aGUgVElNIE1haW4gT3V0cHV0ICovCisgICAgVElNeC0+QkRUUiAmPSAodWludDE2X3QpKH4oKHVpbnQxNl90KVRJTV9CRFRSX01PRSkpOworICB9ICAKK30KKworLyoqCisgICogQGJyaWVmICBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBzcGVjaWZpZWQgVElNIGludGVycnVwdHMuCisgICogQHBhcmFtICBUSU14OiB3aGVyZSB4IGNhbiBiZSAxIHRvIDE3IHRvIHNlbGVjdCB0aGUgVElNeCBwZXJpcGhlcmFsLgorICAqIEBwYXJhbSAgVElNX0lUOiBzcGVjaWZpZXMgdGhlIFRJTSBpbnRlcnJ1cHRzIHNvdXJjZXMgdG8gYmUgZW5hYmxlZCBvciBkaXNhYmxlZC4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhbnkgY29tYmluYXRpb24gb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICAgIEBhcmcgVElNX0lUX1VwZGF0ZTogVElNIHVwZGF0ZSBJbnRlcnJ1cHQgc291cmNlCisgICogICAgIEBhcmcgVElNX0lUX0NDMTogVElNIENhcHR1cmUgQ29tcGFyZSAxIEludGVycnVwdCBzb3VyY2UKKyAgKiAgICAgQGFyZyBUSU1fSVRfQ0MyOiBUSU0gQ2FwdHVyZSBDb21wYXJlIDIgSW50ZXJydXB0IHNvdXJjZQorICAqICAgICBAYXJnIFRJTV9JVF9DQzM6IFRJTSBDYXB0dXJlIENvbXBhcmUgMyBJbnRlcnJ1cHQgc291cmNlCisgICogICAgIEBhcmcgVElNX0lUX0NDNDogVElNIENhcHR1cmUgQ29tcGFyZSA0IEludGVycnVwdCBzb3VyY2UKKyAgKiAgICAgQGFyZyBUSU1fSVRfQ09NOiBUSU0gQ29tbXV0YXRpb24gSW50ZXJydXB0IHNvdXJjZQorICAqICAgICBAYXJnIFRJTV9JVF9UcmlnZ2VyOiBUSU0gVHJpZ2dlciBJbnRlcnJ1cHQgc291cmNlCisgICogICAgIEBhcmcgVElNX0lUX0JyZWFrOiBUSU0gQnJlYWsgSW50ZXJydXB0IHNvdXJjZQorICAqIEBub3RlIAorICAqICAgLSBUSU02IGFuZCBUSU03IGNhbiBvbmx5IGdlbmVyYXRlIGFuIHVwZGF0ZSBpbnRlcnJ1cHQuCisgICogICAtIFRJTTksIFRJTTEyIGFuZCBUSU0xNSBjYW4gaGF2ZSBvbmx5IFRJTV9JVF9VcGRhdGUsIFRJTV9JVF9DQzEsCisgICogICAgICBUSU1fSVRfQ0MyIG9yIFRJTV9JVF9UcmlnZ2VyLiAKKyAgKiAgIC0gVElNMTAsIFRJTTExLCBUSU0xMywgVElNMTQsIFRJTTE2IGFuZCBUSU0xNyBjYW4gaGF2ZSBUSU1fSVRfVXBkYXRlIG9yIFRJTV9JVF9DQzEuICAgCisgICogICAtIFRJTV9JVF9CcmVhayBpcyB1c2VkIG9ubHkgd2l0aCBUSU0xLCBUSU04IGFuZCBUSU0xNS4gCisgICogICAtIFRJTV9JVF9DT00gaXMgdXNlZCBvbmx5IHdpdGggVElNMSwgVElNOCwgVElNMTUsIFRJTTE2IGFuZCBUSU0xNy4gICAgCisgICogQHBhcmFtICBOZXdTdGF0ZTogbmV3IHN0YXRlIG9mIHRoZSBUSU0gaW50ZXJydXB0cy4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZTogRU5BQkxFIG9yIERJU0FCTEUuCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFRJTV9JVENvbmZpZyhUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgVElNX0lULCBGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpCit7ICAKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9BTExfUEVSSVBIKFRJTXgpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9JVChUSU1fSVQpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0ZVTkNUSU9OQUxfU1RBVEUoTmV3U3RhdGUpKTsKKyAgCisgIGlmIChOZXdTdGF0ZSAhPSBESVNBQkxFKQorICB7CisgICAgLyogRW5hYmxlIHRoZSBJbnRlcnJ1cHQgc291cmNlcyAqLworICAgIFRJTXgtPkRJRVIgfD0gVElNX0lUOworICB9CisgIGVsc2UKKyAgeworICAgIC8qIERpc2FibGUgdGhlIEludGVycnVwdCBzb3VyY2VzICovCisgICAgVElNeC0+RElFUiAmPSAodWludDE2X3QpflRJTV9JVDsKKyAgfQorfQorCisvKioKKyAgKiBAYnJpZWYgIENvbmZpZ3VyZXMgdGhlIFRJTXggZXZlbnQgdG8gYmUgZ2VuZXJhdGUgYnkgc29mdHdhcmUuCisgICogQHBhcmFtICBUSU14OiB3aGVyZSB4IGNhbiBiZSAxIHRvIDE3IHRvIHNlbGVjdCB0aGUgVElNIHBlcmlwaGVyYWwuCisgICogQHBhcmFtICBUSU1fRXZlbnRTb3VyY2U6IHNwZWNpZmllcyB0aGUgZXZlbnQgc291cmNlLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvciBtb3JlIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgkgICAKKyAgKiAgICAgQGFyZyBUSU1fRXZlbnRTb3VyY2VfVXBkYXRlOiBUaW1lciB1cGRhdGUgRXZlbnQgc291cmNlCisgICogICAgIEBhcmcgVElNX0V2ZW50U291cmNlX0NDMTogVGltZXIgQ2FwdHVyZSBDb21wYXJlIDEgRXZlbnQgc291cmNlCisgICogICAgIEBhcmcgVElNX0V2ZW50U291cmNlX0NDMjogVGltZXIgQ2FwdHVyZSBDb21wYXJlIDIgRXZlbnQgc291cmNlCisgICogICAgIEBhcmcgVElNX0V2ZW50U291cmNlX0NDMzogVGltZXIgQ2FwdHVyZSBDb21wYXJlIDMgRXZlbnQgc291cmNlCisgICogICAgIEBhcmcgVElNX0V2ZW50U291cmNlX0NDNDogVGltZXIgQ2FwdHVyZSBDb21wYXJlIDQgRXZlbnQgc291cmNlCisgICogICAgIEBhcmcgVElNX0V2ZW50U291cmNlX0NPTTogVGltZXIgQ09NIGV2ZW50IHNvdXJjZSAgCisgICogICAgIEBhcmcgVElNX0V2ZW50U291cmNlX1RyaWdnZXI6IFRpbWVyIFRyaWdnZXIgRXZlbnQgc291cmNlCisgICogICAgIEBhcmcgVElNX0V2ZW50U291cmNlX0JyZWFrOiBUaW1lciBCcmVhayBldmVudCBzb3VyY2UKKyAgKiBAbm90ZSAKKyAgKiAgIC0gVElNNiBhbmQgVElNNyBjYW4gb25seSBnZW5lcmF0ZSBhbiB1cGRhdGUgZXZlbnQuIAorICAqICAgLSBUSU1fRXZlbnRTb3VyY2VfQ09NIGFuZCBUSU1fRXZlbnRTb3VyY2VfQnJlYWsgYXJlIHVzZWQgb25seSB3aXRoIFRJTTEgYW5kIFRJTTguICAgICAgCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFRJTV9HZW5lcmF0ZUV2ZW50KFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fRXZlbnRTb3VyY2UpCit7IAorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfVElNX0FMTF9QRVJJUEgoVElNeCkpOworICBhc3NlcnRfcGFyYW0oSVNfVElNX0VWRU5UX1NPVVJDRShUSU1fRXZlbnRTb3VyY2UpKTsKKyAgCisgIC8qIFNldCB0aGUgZXZlbnQgc291cmNlcyAqLworICBUSU14LT5FR1IgPSBUSU1fRXZlbnRTb3VyY2U7Cit9CisKKy8qKgorICAqIEBicmllZiAgQ29uZmlndXJlcyB0aGUgVElNeCdzIERNQSBpbnRlcmZhY2UuCisgICogQHBhcmFtICBUSU14OiB3aGVyZSB4IGNhbiBiZSAgMSwgMiwgMywgNCwgNSwgOCwgMTUsIDE2IG9yIDE3IHRvIHNlbGVjdCAKKyAgKiAgIHRoZSBUSU0gcGVyaXBoZXJhbC4KKyAgKiBAcGFyYW0gIFRJTV9ETUFCYXNlOiBETUEgQmFzZSBhZGRyZXNzLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBUSU1fRE1BQmFzZV9DUiwgVElNX0RNQUJhc2VfQ1IyLCBUSU1fRE1BQmFzZV9TTUNSLAorICAqICAgICAgICAgIFRJTV9ETUFCYXNlX0RJRVIsIFRJTTFfRE1BQmFzZV9TUiwgVElNX0RNQUJhc2VfRUdSLAorICAqICAgICAgICAgIFRJTV9ETUFCYXNlX0NDTVIxLCBUSU1fRE1BQmFzZV9DQ01SMiwgVElNX0RNQUJhc2VfQ0NFUiwKKyAgKiAgICAgICAgICBUSU1fRE1BQmFzZV9DTlQsIFRJTV9ETUFCYXNlX1BTQywgVElNX0RNQUJhc2VfQVJSLAorICAqICAgICAgICAgIFRJTV9ETUFCYXNlX1JDUiwgVElNX0RNQUJhc2VfQ0NSMSwgVElNX0RNQUJhc2VfQ0NSMiwKKyAgKiAgICAgICAgICBUSU1fRE1BQmFzZV9DQ1IzLCBUSU1fRE1BQmFzZV9DQ1I0LCBUSU1fRE1BQmFzZV9CRFRSLAorICAqICAgICAgICAgIFRJTV9ETUFCYXNlX0RDUi4KKyAgKiBAcGFyYW0gIFRJTV9ETUFCdXJzdExlbmd0aDogRE1BIEJ1cnN0IGxlbmd0aC4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgdmFsdWUgYmV0d2VlbjoKKyAgKiAgIFRJTV9ETUFCdXJzdExlbmd0aF8xVHJhbnNmZXIgYW5kIFRJTV9ETUFCdXJzdExlbmd0aF8xOFRyYW5zZmVycy4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgVElNX0RNQUNvbmZpZyhUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgVElNX0RNQUJhc2UsIHVpbnQxNl90IFRJTV9ETUFCdXJzdExlbmd0aCkKK3sKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9MSVNUNF9QRVJJUEgoVElNeCkpOworICBhc3NlcnRfcGFyYW0oSVNfVElNX0RNQV9CQVNFKFRJTV9ETUFCYXNlKSk7CisgIGFzc2VydF9wYXJhbShJU19USU1fRE1BX0xFTkdUSChUSU1fRE1BQnVyc3RMZW5ndGgpKTsKKyAgLyogU2V0IHRoZSBETUEgQmFzZSBhbmQgdGhlIERNQSBCdXJzdCBMZW5ndGggKi8KKyAgVElNeC0+RENSID0gVElNX0RNQUJhc2UgfCBUSU1fRE1BQnVyc3RMZW5ndGg7Cit9CisKKy8qKgorICAqIEBicmllZiAgRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgVElNeCdzIERNQSBSZXF1ZXN0cy4KKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlICAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCAxNSwgMTYgb3IgMTcgCisgICogICB0byBzZWxlY3QgdGhlIFRJTSBwZXJpcGhlcmFsLiAKKyAgKiBAcGFyYW0gIFRJTV9ETUFTb3VyY2U6IHNwZWNpZmllcyB0aGUgRE1BIFJlcXVlc3Qgc291cmNlcy4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhbnkgY29tYmluYXRpb24gb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICAgIEBhcmcgVElNX0RNQV9VcGRhdGU6IFRJTSB1cGRhdGUgSW50ZXJydXB0IHNvdXJjZQorICAqICAgICBAYXJnIFRJTV9ETUFfQ0MxOiBUSU0gQ2FwdHVyZSBDb21wYXJlIDEgRE1BIHNvdXJjZQorICAqICAgICBAYXJnIFRJTV9ETUFfQ0MyOiBUSU0gQ2FwdHVyZSBDb21wYXJlIDIgRE1BIHNvdXJjZQorICAqICAgICBAYXJnIFRJTV9ETUFfQ0MzOiBUSU0gQ2FwdHVyZSBDb21wYXJlIDMgRE1BIHNvdXJjZQorICAqICAgICBAYXJnIFRJTV9ETUFfQ0M0OiBUSU0gQ2FwdHVyZSBDb21wYXJlIDQgRE1BIHNvdXJjZQorICAqICAgICBAYXJnIFRJTV9ETUFfQ09NOiBUSU0gQ29tbXV0YXRpb24gRE1BIHNvdXJjZQorICAqICAgICBAYXJnIFRJTV9ETUFfVHJpZ2dlcjogVElNIFRyaWdnZXIgRE1BIHNvdXJjZQorICAqIEBwYXJhbSAgTmV3U3RhdGU6IG5ldyBzdGF0ZSBvZiB0aGUgRE1BIFJlcXVlc3Qgc291cmNlcy4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZTogRU5BQkxFIG9yIERJU0FCTEUuCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFRJTV9ETUFDbWQoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9ETUFTb3VyY2UsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSkKK3sgCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19USU1fTElTVDlfUEVSSVBIKFRJTXgpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9ETUFfU09VUkNFKFRJTV9ETUFTb3VyY2UpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0ZVTkNUSU9OQUxfU1RBVEUoTmV3U3RhdGUpKTsKKyAgCisgIGlmIChOZXdTdGF0ZSAhPSBESVNBQkxFKQorICB7CisgICAgLyogRW5hYmxlIHRoZSBETUEgc291cmNlcyAqLworICAgIFRJTXgtPkRJRVIgfD0gVElNX0RNQVNvdXJjZTsgCisgIH0KKyAgZWxzZQorICB7CisgICAgLyogRGlzYWJsZSB0aGUgRE1BIHNvdXJjZXMgKi8KKyAgICBUSU14LT5ESUVSICY9ICh1aW50MTZfdCl+VElNX0RNQVNvdXJjZTsKKyAgfQorfQorCisvKioKKyAgKiBAYnJpZWYgIENvbmZpZ3VyZXMgdGhlIFRJTXggaW50ZXJuYWwgQ2xvY2sKKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlICAxLCAyLCAzLCA0LCA1LCA4LCA5LCAxMiBvciAxNQorICAqICAgICAgICAgdG8gc2VsZWN0IHRoZSBUSU0gcGVyaXBoZXJhbC4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgVElNX0ludGVybmFsQ2xvY2tDb25maWcoVElNX1R5cGVEZWYqIFRJTXgpCit7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19USU1fTElTVDZfUEVSSVBIKFRJTXgpKTsKKyAgLyogRGlzYWJsZSBzbGF2ZSBtb2RlIHRvIGNsb2NrIHRoZSBwcmVzY2FsZXIgZGlyZWN0bHkgd2l0aCB0aGUgaW50ZXJuYWwgY2xvY2sgKi8KKyAgVElNeC0+U01DUiAmPSAgKHVpbnQxNl90KSh+KCh1aW50MTZfdClUSU1fU01DUl9TTVMpKTsKK30KKworLyoqCisgICogQGJyaWVmICBDb25maWd1cmVzIHRoZSBUSU14IEludGVybmFsIFRyaWdnZXIgYXMgRXh0ZXJuYWwgQ2xvY2sKKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlICAxLCAyLCAzLCA0LCA1LCA5LCAxMiBvciAxNSB0byBzZWxlY3QgdGhlIFRJTSBwZXJpcGhlcmFsLgorICAqIEBwYXJhbSAgVElNX0lUUlNvdXJjZTogVHJpZ2dlciBzb3VyY2UuCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqIEBwYXJhbSAgVElNX1RTX0lUUjA6IEludGVybmFsIFRyaWdnZXIgMAorICAqIEBwYXJhbSAgVElNX1RTX0lUUjE6IEludGVybmFsIFRyaWdnZXIgMQorICAqIEBwYXJhbSAgVElNX1RTX0lUUjI6IEludGVybmFsIFRyaWdnZXIgMgorICAqIEBwYXJhbSAgVElNX1RTX0lUUjM6IEludGVybmFsIFRyaWdnZXIgMworICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBUSU1fSVRSeEV4dGVybmFsQ2xvY2tDb25maWcoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9JbnB1dFRyaWdnZXJTb3VyY2UpCit7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19USU1fTElTVDZfUEVSSVBIKFRJTXgpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9JTlRFUk5BTF9UUklHR0VSX1NFTEVDVElPTihUSU1fSW5wdXRUcmlnZ2VyU291cmNlKSk7CisgIC8qIFNlbGVjdCB0aGUgSW50ZXJuYWwgVHJpZ2dlciAqLworICBUSU1fU2VsZWN0SW5wdXRUcmlnZ2VyKFRJTXgsIFRJTV9JbnB1dFRyaWdnZXJTb3VyY2UpOworICAvKiBTZWxlY3QgdGhlIEV4dGVybmFsIGNsb2NrIG1vZGUxICovCisgIFRJTXgtPlNNQ1IgfD0gVElNX1NsYXZlTW9kZV9FeHRlcm5hbDE7Cit9CisKKy8qKgorICAqIEBicmllZiAgQ29uZmlndXJlcyB0aGUgVElNeCBUcmlnZ2VyIGFzIEV4dGVybmFsIENsb2NrCisgICogQHBhcmFtICBUSU14OiB3aGVyZSB4IGNhbiBiZSAgMSwgMiwgMywgNCwgNSwgOSwgMTIgb3IgMTUgdG8gc2VsZWN0IHRoZSBUSU0gcGVyaXBoZXJhbC4KKyAgKiBAcGFyYW0gIFRJTV9USXhFeHRlcm5hbENMS1NvdXJjZTogVHJpZ2dlciBzb3VyY2UuCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIFRJTV9USXhFeHRlcm5hbENMSzFTb3VyY2VfVEkxRUQ6IFRJMSBFZGdlIERldGVjdG9yCisgICogICAgIEBhcmcgVElNX1RJeEV4dGVybmFsQ0xLMVNvdXJjZV9USTE6IEZpbHRlcmVkIFRpbWVyIElucHV0IDEKKyAgKiAgICAgQGFyZyBUSU1fVEl4RXh0ZXJuYWxDTEsxU291cmNlX1RJMjogRmlsdGVyZWQgVGltZXIgSW5wdXQgMgorICAqIEBwYXJhbSAgVElNX0lDUG9sYXJpdHk6IHNwZWNpZmllcyB0aGUgVEl4IFBvbGFyaXR5LgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBUSU1fSUNQb2xhcml0eV9SaXNpbmcKKyAgKiAgICAgQGFyZyBUSU1fSUNQb2xhcml0eV9GYWxsaW5nCisgICogQHBhcmFtICBJQ0ZpbHRlciA6IHNwZWNpZmllcyB0aGUgZmlsdGVyIHZhbHVlLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgbXVzdCBiZSBhIHZhbHVlIGJldHdlZW4gMHgwIGFuZCAweEYuCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFRJTV9USXhFeHRlcm5hbENsb2NrQ29uZmlnKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fVEl4RXh0ZXJuYWxDTEtTb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IFRJTV9JQ1BvbGFyaXR5LCB1aW50MTZfdCBJQ0ZpbHRlcikKK3sKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9MSVNUNl9QRVJJUEgoVElNeCkpOworICBhc3NlcnRfcGFyYW0oSVNfVElNX1RJWENMS19TT1VSQ0UoVElNX1RJeEV4dGVybmFsQ0xLU291cmNlKSk7CisgIGFzc2VydF9wYXJhbShJU19USU1fSUNfUE9MQVJJVFkoVElNX0lDUG9sYXJpdHkpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9JQ19GSUxURVIoSUNGaWx0ZXIpKTsKKyAgLyogQ29uZmlndXJlIHRoZSBUaW1lciBJbnB1dCBDbG9jayBTb3VyY2UgKi8KKyAgaWYgKFRJTV9USXhFeHRlcm5hbENMS1NvdXJjZSA9PSBUSU1fVEl4RXh0ZXJuYWxDTEsxU291cmNlX1RJMikKKyAgeworICAgIFRJMl9Db25maWcoVElNeCwgVElNX0lDUG9sYXJpdHksIFRJTV9JQ1NlbGVjdGlvbl9EaXJlY3RUSSwgSUNGaWx0ZXIpOworICB9CisgIGVsc2UKKyAgeworICAgIFRJMV9Db25maWcoVElNeCwgVElNX0lDUG9sYXJpdHksIFRJTV9JQ1NlbGVjdGlvbl9EaXJlY3RUSSwgSUNGaWx0ZXIpOworICB9CisgIC8qIFNlbGVjdCB0aGUgVHJpZ2dlciBzb3VyY2UgKi8KKyAgVElNX1NlbGVjdElucHV0VHJpZ2dlcihUSU14LCBUSU1fVEl4RXh0ZXJuYWxDTEtTb3VyY2UpOworICAvKiBTZWxlY3QgdGhlIEV4dGVybmFsIGNsb2NrIG1vZGUxICovCisgIFRJTXgtPlNNQ1IgfD0gVElNX1NsYXZlTW9kZV9FeHRlcm5hbDE7Cit9CisKKy8qKgorICAqIEBicmllZiAgQ29uZmlndXJlcyB0aGUgRXh0ZXJuYWwgY2xvY2sgTW9kZTEKKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlICAxLCAyLCAzLCA0LCA1IG9yIDggdG8gc2VsZWN0IHRoZSBUSU0gcGVyaXBoZXJhbC4KKyAgKiBAcGFyYW0gIFRJTV9FeHRUUkdQcmVzY2FsZXI6IFRoZSBleHRlcm5hbCBUcmlnZ2VyIFByZXNjYWxlci4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICAgIEBhcmcgVElNX0V4dFRSR1BTQ19PRkY6IEVUUlAgUHJlc2NhbGVyIE9GRi4KKyAgKiAgICAgQGFyZyBUSU1fRXh0VFJHUFNDX0RJVjI6IEVUUlAgZnJlcXVlbmN5IGRpdmlkZWQgYnkgMi4KKyAgKiAgICAgQGFyZyBUSU1fRXh0VFJHUFNDX0RJVjQ6IEVUUlAgZnJlcXVlbmN5IGRpdmlkZWQgYnkgNC4KKyAgKiAgICAgQGFyZyBUSU1fRXh0VFJHUFNDX0RJVjg6IEVUUlAgZnJlcXVlbmN5IGRpdmlkZWQgYnkgOC4KKyAgKiBAcGFyYW0gIFRJTV9FeHRUUkdQb2xhcml0eTogVGhlIGV4dGVybmFsIFRyaWdnZXIgUG9sYXJpdHkuCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIFRJTV9FeHRUUkdQb2xhcml0eV9JbnZlcnRlZDogYWN0aXZlIGxvdyBvciBmYWxsaW5nIGVkZ2UgYWN0aXZlLgorICAqICAgICBAYXJnIFRJTV9FeHRUUkdQb2xhcml0eV9Ob25JbnZlcnRlZDogYWN0aXZlIGhpZ2ggb3IgcmlzaW5nIGVkZ2UgYWN0aXZlLgorICAqIEBwYXJhbSAgRXh0VFJHRmlsdGVyOiBFeHRlcm5hbCBUcmlnZ2VyIEZpbHRlci4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIG11c3QgYmUgYSB2YWx1ZSBiZXR3ZWVuIDB4MDAgYW5kIDB4MEYKKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgVElNX0VUUkNsb2NrTW9kZTFDb25maWcoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9FeHRUUkdQcmVzY2FsZXIsIHVpbnQxNl90IFRJTV9FeHRUUkdQb2xhcml0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgRXh0VFJHRmlsdGVyKQoreworICB1aW50MTZfdCB0bXBzbWNyID0gMDsKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9MSVNUM19QRVJJUEgoVElNeCkpOworICBhc3NlcnRfcGFyYW0oSVNfVElNX0VYVF9QUkVTQ0FMRVIoVElNX0V4dFRSR1ByZXNjYWxlcikpOworICBhc3NlcnRfcGFyYW0oSVNfVElNX0VYVF9QT0xBUklUWShUSU1fRXh0VFJHUG9sYXJpdHkpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9FWFRfRklMVEVSKEV4dFRSR0ZpbHRlcikpOworICAvKiBDb25maWd1cmUgdGhlIEVUUiBDbG9jayBzb3VyY2UgKi8KKyAgVElNX0VUUkNvbmZpZyhUSU14LCBUSU1fRXh0VFJHUHJlc2NhbGVyLCBUSU1fRXh0VFJHUG9sYXJpdHksIEV4dFRSR0ZpbHRlcik7CisgIAorICAvKiBHZXQgdGhlIFRJTXggU01DUiByZWdpc3RlciB2YWx1ZSAqLworICB0bXBzbWNyID0gVElNeC0+U01DUjsKKyAgLyogUmVzZXQgdGhlIFNNUyBCaXRzICovCisgIHRtcHNtY3IgJj0gKHVpbnQxNl90KSh+KCh1aW50MTZfdClUSU1fU01DUl9TTVMpKTsKKyAgLyogU2VsZWN0IHRoZSBFeHRlcm5hbCBjbG9jayBtb2RlMSAqLworICB0bXBzbWNyIHw9IFRJTV9TbGF2ZU1vZGVfRXh0ZXJuYWwxOworICAvKiBTZWxlY3QgdGhlIFRyaWdnZXIgc2VsZWN0aW9uIDogRVRSRiAqLworICB0bXBzbWNyICY9ICh1aW50MTZfdCkofigodWludDE2X3QpVElNX1NNQ1JfVFMpKTsKKyAgdG1wc21jciB8PSBUSU1fVFNfRVRSRjsKKyAgLyogV3JpdGUgdG8gVElNeCBTTUNSICovCisgIFRJTXgtPlNNQ1IgPSB0bXBzbWNyOworfQorCisvKioKKyAgKiBAYnJpZWYgIENvbmZpZ3VyZXMgdGhlIEV4dGVybmFsIGNsb2NrIE1vZGUyCisgICogQHBhcmFtICBUSU14OiB3aGVyZSB4IGNhbiBiZSAgMSwgMiwgMywgNCwgNSBvciA4IHRvIHNlbGVjdCB0aGUgVElNIHBlcmlwaGVyYWwuCisgICogQHBhcmFtICBUSU1fRXh0VFJHUHJlc2NhbGVyOiBUaGUgZXh0ZXJuYWwgVHJpZ2dlciBQcmVzY2FsZXIuCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIFRJTV9FeHRUUkdQU0NfT0ZGOiBFVFJQIFByZXNjYWxlciBPRkYuCisgICogICAgIEBhcmcgVElNX0V4dFRSR1BTQ19ESVYyOiBFVFJQIGZyZXF1ZW5jeSBkaXZpZGVkIGJ5IDIuCisgICogICAgIEBhcmcgVElNX0V4dFRSR1BTQ19ESVY0OiBFVFJQIGZyZXF1ZW5jeSBkaXZpZGVkIGJ5IDQuCisgICogICAgIEBhcmcgVElNX0V4dFRSR1BTQ19ESVY4OiBFVFJQIGZyZXF1ZW5jeSBkaXZpZGVkIGJ5IDguCisgICogQHBhcmFtICBUSU1fRXh0VFJHUG9sYXJpdHk6IFRoZSBleHRlcm5hbCBUcmlnZ2VyIFBvbGFyaXR5LgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBUSU1fRXh0VFJHUG9sYXJpdHlfSW52ZXJ0ZWQ6IGFjdGl2ZSBsb3cgb3IgZmFsbGluZyBlZGdlIGFjdGl2ZS4KKyAgKiAgICAgQGFyZyBUSU1fRXh0VFJHUG9sYXJpdHlfTm9uSW52ZXJ0ZWQ6IGFjdGl2ZSBoaWdoIG9yIHJpc2luZyBlZGdlIGFjdGl2ZS4KKyAgKiBAcGFyYW0gIEV4dFRSR0ZpbHRlcjogRXh0ZXJuYWwgVHJpZ2dlciBGaWx0ZXIuCisgICogICBUaGlzIHBhcmFtZXRlciBtdXN0IGJlIGEgdmFsdWUgYmV0d2VlbiAweDAwIGFuZCAweDBGCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFRJTV9FVFJDbG9ja01vZGUyQ29uZmlnKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fRXh0VFJHUHJlc2NhbGVyLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgVElNX0V4dFRSR1BvbGFyaXR5LCB1aW50MTZfdCBFeHRUUkdGaWx0ZXIpCit7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19USU1fTElTVDNfUEVSSVBIKFRJTXgpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9FWFRfUFJFU0NBTEVSKFRJTV9FeHRUUkdQcmVzY2FsZXIpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9FWFRfUE9MQVJJVFkoVElNX0V4dFRSR1BvbGFyaXR5KSk7CisgIGFzc2VydF9wYXJhbShJU19USU1fRVhUX0ZJTFRFUihFeHRUUkdGaWx0ZXIpKTsKKyAgLyogQ29uZmlndXJlIHRoZSBFVFIgQ2xvY2sgc291cmNlICovCisgIFRJTV9FVFJDb25maWcoVElNeCwgVElNX0V4dFRSR1ByZXNjYWxlciwgVElNX0V4dFRSR1BvbGFyaXR5LCBFeHRUUkdGaWx0ZXIpOworICAvKiBFbmFibGUgdGhlIEV4dGVybmFsIGNsb2NrIG1vZGUyICovCisgIFRJTXgtPlNNQ1IgfD0gVElNX1NNQ1JfRUNFOworfQorCisvKioKKyAgKiBAYnJpZWYgIENvbmZpZ3VyZXMgdGhlIFRJTXggRXh0ZXJuYWwgVHJpZ2dlciAoRVRSKS4KKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlICAxLCAyLCAzLCA0LCA1IG9yIDggdG8gc2VsZWN0IHRoZSBUSU0gcGVyaXBoZXJhbC4KKyAgKiBAcGFyYW0gIFRJTV9FeHRUUkdQcmVzY2FsZXI6IFRoZSBleHRlcm5hbCBUcmlnZ2VyIFByZXNjYWxlci4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICAgIEBhcmcgVElNX0V4dFRSR1BTQ19PRkY6IEVUUlAgUHJlc2NhbGVyIE9GRi4KKyAgKiAgICAgQGFyZyBUSU1fRXh0VFJHUFNDX0RJVjI6IEVUUlAgZnJlcXVlbmN5IGRpdmlkZWQgYnkgMi4KKyAgKiAgICAgQGFyZyBUSU1fRXh0VFJHUFNDX0RJVjQ6IEVUUlAgZnJlcXVlbmN5IGRpdmlkZWQgYnkgNC4KKyAgKiAgICAgQGFyZyBUSU1fRXh0VFJHUFNDX0RJVjg6IEVUUlAgZnJlcXVlbmN5IGRpdmlkZWQgYnkgOC4KKyAgKiBAcGFyYW0gIFRJTV9FeHRUUkdQb2xhcml0eTogVGhlIGV4dGVybmFsIFRyaWdnZXIgUG9sYXJpdHkuCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIFRJTV9FeHRUUkdQb2xhcml0eV9JbnZlcnRlZDogYWN0aXZlIGxvdyBvciBmYWxsaW5nIGVkZ2UgYWN0aXZlLgorICAqICAgICBAYXJnIFRJTV9FeHRUUkdQb2xhcml0eV9Ob25JbnZlcnRlZDogYWN0aXZlIGhpZ2ggb3IgcmlzaW5nIGVkZ2UgYWN0aXZlLgorICAqIEBwYXJhbSAgRXh0VFJHRmlsdGVyOiBFeHRlcm5hbCBUcmlnZ2VyIEZpbHRlci4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIG11c3QgYmUgYSB2YWx1ZSBiZXR3ZWVuIDB4MDAgYW5kIDB4MEYKKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgVElNX0VUUkNvbmZpZyhUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgVElNX0V4dFRSR1ByZXNjYWxlciwgdWludDE2X3QgVElNX0V4dFRSR1BvbGFyaXR5LAorICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IEV4dFRSR0ZpbHRlcikKK3sKKyAgdWludDE2X3QgdG1wc21jciA9IDA7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19USU1fTElTVDNfUEVSSVBIKFRJTXgpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9FWFRfUFJFU0NBTEVSKFRJTV9FeHRUUkdQcmVzY2FsZXIpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9FWFRfUE9MQVJJVFkoVElNX0V4dFRSR1BvbGFyaXR5KSk7CisgIGFzc2VydF9wYXJhbShJU19USU1fRVhUX0ZJTFRFUihFeHRUUkdGaWx0ZXIpKTsKKyAgdG1wc21jciA9IFRJTXgtPlNNQ1I7CisgIC8qIFJlc2V0IHRoZSBFVFIgQml0cyAqLworICB0bXBzbWNyICY9IFNNQ1JfRVRSX01hc2s7CisgIC8qIFNldCB0aGUgUHJlc2NhbGVyLCB0aGUgRmlsdGVyIHZhbHVlIGFuZCB0aGUgUG9sYXJpdHkgKi8KKyAgdG1wc21jciB8PSAodWludDE2X3QpKFRJTV9FeHRUUkdQcmVzY2FsZXIgfCAodWludDE2X3QpKFRJTV9FeHRUUkdQb2xhcml0eSB8ICh1aW50MTZfdCkoRXh0VFJHRmlsdGVyIDw8ICh1aW50MTZfdCk4KSkpOworICAvKiBXcml0ZSB0byBUSU14IFNNQ1IgKi8KKyAgVElNeC0+U01DUiA9IHRtcHNtY3I7Cit9CisKKy8qKgorICAqIEBicmllZiAgQ29uZmlndXJlcyB0aGUgVElNeCBQcmVzY2FsZXIuCisgICogQHBhcmFtICBUSU14OiB3aGVyZSB4IGNhbiBiZSAxIHRvIDE3IHRvIHNlbGVjdCB0aGUgVElNIHBlcmlwaGVyYWwuCisgICogQHBhcmFtICBQcmVzY2FsZXI6IHNwZWNpZmllcyB0aGUgUHJlc2NhbGVyIFJlZ2lzdGVyIHZhbHVlCisgICogQHBhcmFtICBUSU1fUFNDUmVsb2FkTW9kZTogc3BlY2lmaWVzIHRoZSBUSU0gUHJlc2NhbGVyIFJlbG9hZCBtb2RlCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIFRJTV9QU0NSZWxvYWRNb2RlX1VwZGF0ZTogVGhlIFByZXNjYWxlciBpcyBsb2FkZWQgYXQgdGhlIHVwZGF0ZSBldmVudC4KKyAgKiAgICAgQGFyZyBUSU1fUFNDUmVsb2FkTW9kZV9JbW1lZGlhdGU6IFRoZSBQcmVzY2FsZXIgaXMgbG9hZGVkIGltbWVkaWF0ZWx5LgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBUSU1fUHJlc2NhbGVyQ29uZmlnKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBQcmVzY2FsZXIsIHVpbnQxNl90IFRJTV9QU0NSZWxvYWRNb2RlKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfVElNX0FMTF9QRVJJUEgoVElNeCkpOworICBhc3NlcnRfcGFyYW0oSVNfVElNX1BSRVNDQUxFUl9SRUxPQUQoVElNX1BTQ1JlbG9hZE1vZGUpKTsKKyAgLyogU2V0IHRoZSBQcmVzY2FsZXIgdmFsdWUgKi8KKyAgVElNeC0+UFNDID0gUHJlc2NhbGVyOworICAvKiBTZXQgb3IgcmVzZXQgdGhlIFVHIEJpdCAqLworICBUSU14LT5FR1IgPSBUSU1fUFNDUmVsb2FkTW9kZTsKK30KKworLyoqCisgICogQGJyaWVmICBTcGVjaWZpZXMgdGhlIFRJTXggQ291bnRlciBNb2RlIHRvIGJlIHVzZWQuCisgICogQHBhcmFtICBUSU14OiB3aGVyZSB4IGNhbiBiZSAgMSwgMiwgMywgNCwgNSBvciA4IHRvIHNlbGVjdCB0aGUgVElNIHBlcmlwaGVyYWwuCisgICogQHBhcmFtICBUSU1fQ291bnRlck1vZGU6IHNwZWNpZmllcyB0aGUgQ291bnRlciBNb2RlIHRvIGJlIHVzZWQKKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICAgIEBhcmcgVElNX0NvdW50ZXJNb2RlX1VwOiBUSU0gVXAgQ291bnRpbmcgTW9kZQorICAqICAgICBAYXJnIFRJTV9Db3VudGVyTW9kZV9Eb3duOiBUSU0gRG93biBDb3VudGluZyBNb2RlCisgICogICAgIEBhcmcgVElNX0NvdW50ZXJNb2RlX0NlbnRlckFsaWduZWQxOiBUSU0gQ2VudGVyIEFsaWduZWQgTW9kZTEKKyAgKiAgICAgQGFyZyBUSU1fQ291bnRlck1vZGVfQ2VudGVyQWxpZ25lZDI6IFRJTSBDZW50ZXIgQWxpZ25lZCBNb2RlMgorICAqICAgICBAYXJnIFRJTV9Db3VudGVyTW9kZV9DZW50ZXJBbGlnbmVkMzogVElNIENlbnRlciBBbGlnbmVkIE1vZGUzCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFRJTV9Db3VudGVyTW9kZUNvbmZpZyhUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgVElNX0NvdW50ZXJNb2RlKQoreworICB1aW50MTZfdCB0bXBjcjEgPSAwOworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfVElNX0xJU1QzX1BFUklQSChUSU14KSk7CisgIGFzc2VydF9wYXJhbShJU19USU1fQ09VTlRFUl9NT0RFKFRJTV9Db3VudGVyTW9kZSkpOworICB0bXBjcjEgPSBUSU14LT5DUjE7CisgIC8qIFJlc2V0IHRoZSBDTVMgYW5kIERJUiBCaXRzICovCisgIHRtcGNyMSAmPSAodWludDE2X3QpKH4oKHVpbnQxNl90KShUSU1fQ1IxX0RJUiB8IFRJTV9DUjFfQ01TKSkpOworICAvKiBTZXQgdGhlIENvdW50ZXIgTW9kZSAqLworICB0bXBjcjEgfD0gVElNX0NvdW50ZXJNb2RlOworICAvKiBXcml0ZSB0byBUSU14IENSMSByZWdpc3RlciAqLworICBUSU14LT5DUjEgPSB0bXBjcjE7Cit9CisKKy8qKgorICAqIEBicmllZiAgU2VsZWN0cyB0aGUgSW5wdXQgVHJpZ2dlciBzb3VyY2UKKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlICAxLCAyLCAzLCA0LCA1LCA4LCA5LCAxMiBvciAxNSB0byBzZWxlY3QgdGhlIFRJTSBwZXJpcGhlcmFsLgorICAqIEBwYXJhbSAgVElNX0lucHV0VHJpZ2dlclNvdXJjZTogVGhlIElucHV0IFRyaWdnZXIgc291cmNlLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBUSU1fVFNfSVRSMDogSW50ZXJuYWwgVHJpZ2dlciAwCisgICogICAgIEBhcmcgVElNX1RTX0lUUjE6IEludGVybmFsIFRyaWdnZXIgMQorICAqICAgICBAYXJnIFRJTV9UU19JVFIyOiBJbnRlcm5hbCBUcmlnZ2VyIDIKKyAgKiAgICAgQGFyZyBUSU1fVFNfSVRSMzogSW50ZXJuYWwgVHJpZ2dlciAzCisgICogICAgIEBhcmcgVElNX1RTX1RJMUZfRUQ6IFRJMSBFZGdlIERldGVjdG9yCisgICogICAgIEBhcmcgVElNX1RTX1RJMUZQMTogRmlsdGVyZWQgVGltZXIgSW5wdXQgMQorICAqICAgICBAYXJnIFRJTV9UU19USTJGUDI6IEZpbHRlcmVkIFRpbWVyIElucHV0IDIKKyAgKiAgICAgQGFyZyBUSU1fVFNfRVRSRjogRXh0ZXJuYWwgVHJpZ2dlciBpbnB1dAorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBUSU1fU2VsZWN0SW5wdXRUcmlnZ2VyKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fSW5wdXRUcmlnZ2VyU291cmNlKQoreworICB1aW50MTZfdCB0bXBzbWNyID0gMDsKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9MSVNUNl9QRVJJUEgoVElNeCkpOworICBhc3NlcnRfcGFyYW0oSVNfVElNX1RSSUdHRVJfU0VMRUNUSU9OKFRJTV9JbnB1dFRyaWdnZXJTb3VyY2UpKTsKKyAgLyogR2V0IHRoZSBUSU14IFNNQ1IgcmVnaXN0ZXIgdmFsdWUgKi8KKyAgdG1wc21jciA9IFRJTXgtPlNNQ1I7CisgIC8qIFJlc2V0IHRoZSBUUyBCaXRzICovCisgIHRtcHNtY3IgJj0gKHVpbnQxNl90KSh+KCh1aW50MTZfdClUSU1fU01DUl9UUykpOworICAvKiBTZXQgdGhlIElucHV0IFRyaWdnZXIgc291cmNlICovCisgIHRtcHNtY3IgfD0gVElNX0lucHV0VHJpZ2dlclNvdXJjZTsKKyAgLyogV3JpdGUgdG8gVElNeCBTTUNSICovCisgIFRJTXgtPlNNQ1IgPSB0bXBzbWNyOworfQorCisvKioKKyAgKiBAYnJpZWYgIENvbmZpZ3VyZXMgdGhlIFRJTXggRW5jb2RlciBJbnRlcmZhY2UuCisgICogQHBhcmFtICBUSU14OiB3aGVyZSB4IGNhbiBiZSAgMSwgMiwgMywgNCwgNSBvciA4IHRvIHNlbGVjdCB0aGUgVElNIHBlcmlwaGVyYWwuCisgICogQHBhcmFtICBUSU1fRW5jb2Rlck1vZGU6IHNwZWNpZmllcyB0aGUgVElNeCBFbmNvZGVyIE1vZGUuCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIFRJTV9FbmNvZGVyTW9kZV9USTE6IENvdW50ZXIgY291bnRzIG9uIFRJMUZQMSBlZGdlIGRlcGVuZGluZyBvbiBUSTJGUDIgbGV2ZWwuCisgICogICAgIEBhcmcgVElNX0VuY29kZXJNb2RlX1RJMjogQ291bnRlciBjb3VudHMgb24gVEkyRlAyIGVkZ2UgZGVwZW5kaW5nIG9uIFRJMUZQMSBsZXZlbC4KKyAgKiAgICAgQGFyZyBUSU1fRW5jb2Rlck1vZGVfVEkxMjogQ291bnRlciBjb3VudHMgb24gYm90aCBUSTFGUDEgYW5kIFRJMkZQMiBlZGdlcyBkZXBlbmRpbmcKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb24gdGhlIGxldmVsIG9mIHRoZSBvdGhlciBpbnB1dC4KKyAgKiBAcGFyYW0gIFRJTV9JQzFQb2xhcml0eTogc3BlY2lmaWVzIHRoZSBJQzEgUG9sYXJpdHkKKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICAgIEBhcmcgVElNX0lDUG9sYXJpdHlfRmFsbGluZzogSUMgRmFsbGluZyBlZGdlLgorICAqICAgICBAYXJnIFRJTV9JQ1BvbGFyaXR5X1Jpc2luZzogSUMgUmlzaW5nIGVkZ2UuCisgICogQHBhcmFtICBUSU1fSUMyUG9sYXJpdHk6IHNwZWNpZmllcyB0aGUgSUMyIFBvbGFyaXR5CisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIFRJTV9JQ1BvbGFyaXR5X0ZhbGxpbmc6IElDIEZhbGxpbmcgZWRnZS4KKyAgKiAgICAgQGFyZyBUSU1fSUNQb2xhcml0eV9SaXNpbmc6IElDIFJpc2luZyBlZGdlLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBUSU1fRW5jb2RlckludGVyZmFjZUNvbmZpZyhUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgVElNX0VuY29kZXJNb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBUSU1fSUMxUG9sYXJpdHksIHVpbnQxNl90IFRJTV9JQzJQb2xhcml0eSkKK3sKKyAgdWludDE2X3QgdG1wc21jciA9IDA7CisgIHVpbnQxNl90IHRtcGNjbXIxID0gMDsKKyAgdWludDE2X3QgdG1wY2NlciA9IDA7CisgICAgCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19USU1fTElTVDVfUEVSSVBIKFRJTXgpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9FTkNPREVSX01PREUoVElNX0VuY29kZXJNb2RlKSk7CisgIGFzc2VydF9wYXJhbShJU19USU1fSUNfUE9MQVJJVFkoVElNX0lDMVBvbGFyaXR5KSk7CisgIGFzc2VydF9wYXJhbShJU19USU1fSUNfUE9MQVJJVFkoVElNX0lDMlBvbGFyaXR5KSk7CisKKyAgLyogR2V0IHRoZSBUSU14IFNNQ1IgcmVnaXN0ZXIgdmFsdWUgKi8KKyAgdG1wc21jciA9IFRJTXgtPlNNQ1I7CisgIAorICAvKiBHZXQgdGhlIFRJTXggQ0NNUjEgcmVnaXN0ZXIgdmFsdWUgKi8KKyAgdG1wY2NtcjEgPSBUSU14LT5DQ01SMTsKKyAgCisgIC8qIEdldCB0aGUgVElNeCBDQ0VSIHJlZ2lzdGVyIHZhbHVlICovCisgIHRtcGNjZXIgPSBUSU14LT5DQ0VSOworICAKKyAgLyogU2V0IHRoZSBlbmNvZGVyIE1vZGUgKi8KKyAgdG1wc21jciAmPSAodWludDE2X3QpKH4oKHVpbnQxNl90KVRJTV9TTUNSX1NNUykpOworICB0bXBzbWNyIHw9IFRJTV9FbmNvZGVyTW9kZTsKKyAgCisgIC8qIFNlbGVjdCB0aGUgQ2FwdHVyZSBDb21wYXJlIDEgYW5kIHRoZSBDYXB0dXJlIENvbXBhcmUgMiBhcyBpbnB1dCAqLworICB0bXBjY21yMSAmPSAodWludDE2X3QpKCgodWludDE2X3QpfigodWludDE2X3QpVElNX0NDTVIxX0NDMVMpKSAmICh1aW50MTZfdCkofigodWludDE2X3QpVElNX0NDTVIxX0NDMlMpKSk7CisgIHRtcGNjbXIxIHw9IFRJTV9DQ01SMV9DQzFTXzAgfCBUSU1fQ0NNUjFfQ0MyU18wOworICAKKyAgLyogU2V0IHRoZSBUSTEgYW5kIHRoZSBUSTIgUG9sYXJpdGllcyAqLworICB0bXBjY2VyICY9ICh1aW50MTZfdCkoKCh1aW50MTZfdCl+KCh1aW50MTZfdClUSU1fQ0NFUl9DQzFQKSkgJiAoKHVpbnQxNl90KX4oKHVpbnQxNl90KVRJTV9DQ0VSX0NDMlApKSk7CisgIHRtcGNjZXIgfD0gKHVpbnQxNl90KShUSU1fSUMxUG9sYXJpdHkgfCAodWludDE2X3QpKFRJTV9JQzJQb2xhcml0eSA8PCAodWludDE2X3QpNCkpOworICAKKyAgLyogV3JpdGUgdG8gVElNeCBTTUNSICovCisgIFRJTXgtPlNNQ1IgPSB0bXBzbWNyOworICAvKiBXcml0ZSB0byBUSU14IENDTVIxICovCisgIFRJTXgtPkNDTVIxID0gdG1wY2NtcjE7CisgIC8qIFdyaXRlIHRvIFRJTXggQ0NFUiAqLworICBUSU14LT5DQ0VSID0gdG1wY2NlcjsKK30KKworLyoqCisgICogQGJyaWVmICBGb3JjZXMgdGhlIFRJTXggb3V0cHV0IDEgd2F2ZWZvcm0gdG8gYWN0aXZlIG9yIGluYWN0aXZlIGxldmVsLgorICAqIEBwYXJhbSAgVElNeDogd2hlcmUgeCBjYW4gYmUgIDEgdG8gMTcgZXhjZXB0IDYgYW5kIDcgdG8gc2VsZWN0IHRoZSBUSU0gcGVyaXBoZXJhbC4KKyAgKiBAcGFyYW0gIFRJTV9Gb3JjZWRBY3Rpb246IHNwZWNpZmllcyB0aGUgZm9yY2VkIEFjdGlvbiB0byBiZSBzZXQgdG8gdGhlIG91dHB1dCB3YXZlZm9ybS4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICAgIEBhcmcgVElNX0ZvcmNlZEFjdGlvbl9BY3RpdmU6IEZvcmNlIGFjdGl2ZSBsZXZlbCBvbiBPQzFSRUYKKyAgKiAgICAgQGFyZyBUSU1fRm9yY2VkQWN0aW9uX0luQWN0aXZlOiBGb3JjZSBpbmFjdGl2ZSBsZXZlbCBvbiBPQzFSRUYuCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFRJTV9Gb3JjZWRPQzFDb25maWcoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9Gb3JjZWRBY3Rpb24pCit7CisgIHVpbnQxNl90IHRtcGNjbXIxID0gMDsKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9MSVNUOF9QRVJJUEgoVElNeCkpOworICBhc3NlcnRfcGFyYW0oSVNfVElNX0ZPUkNFRF9BQ1RJT04oVElNX0ZvcmNlZEFjdGlvbikpOworICB0bXBjY21yMSA9IFRJTXgtPkNDTVIxOworICAvKiBSZXNldCB0aGUgT0MxTSBCaXRzICovCisgIHRtcGNjbXIxICY9ICh1aW50MTZfdCl+KCh1aW50MTZfdClUSU1fQ0NNUjFfT0MxTSk7CisgIC8qIENvbmZpZ3VyZSBUaGUgRm9yY2VkIG91dHB1dCBNb2RlICovCisgIHRtcGNjbXIxIHw9IFRJTV9Gb3JjZWRBY3Rpb247CisgIC8qIFdyaXRlIHRvIFRJTXggQ0NNUjEgcmVnaXN0ZXIgKi8KKyAgVElNeC0+Q0NNUjEgPSB0bXBjY21yMTsKK30KKworLyoqCisgICogQGJyaWVmICBGb3JjZXMgdGhlIFRJTXggb3V0cHV0IDIgd2F2ZWZvcm0gdG8gYWN0aXZlIG9yIGluYWN0aXZlIGxldmVsLgorICAqIEBwYXJhbSAgVElNeDogd2hlcmUgeCBjYW4gYmUgIDEsIDIsIDMsIDQsIDUsIDgsIDksIDEyIG9yIDE1IHRvIHNlbGVjdCB0aGUgVElNIHBlcmlwaGVyYWwuCisgICogQHBhcmFtICBUSU1fRm9yY2VkQWN0aW9uOiBzcGVjaWZpZXMgdGhlIGZvcmNlZCBBY3Rpb24gdG8gYmUgc2V0IHRvIHRoZSBvdXRwdXQgd2F2ZWZvcm0uCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIFRJTV9Gb3JjZWRBY3Rpb25fQWN0aXZlOiBGb3JjZSBhY3RpdmUgbGV2ZWwgb24gT0MyUkVGCisgICogICAgIEBhcmcgVElNX0ZvcmNlZEFjdGlvbl9JbkFjdGl2ZTogRm9yY2UgaW5hY3RpdmUgbGV2ZWwgb24gT0MyUkVGLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBUSU1fRm9yY2VkT0MyQ29uZmlnKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fRm9yY2VkQWN0aW9uKQoreworICB1aW50MTZfdCB0bXBjY21yMSA9IDA7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19USU1fTElTVDZfUEVSSVBIKFRJTXgpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9GT1JDRURfQUNUSU9OKFRJTV9Gb3JjZWRBY3Rpb24pKTsKKyAgdG1wY2NtcjEgPSBUSU14LT5DQ01SMTsKKyAgLyogUmVzZXQgdGhlIE9DMk0gQml0cyAqLworICB0bXBjY21yMSAmPSAodWludDE2X3QpfigodWludDE2X3QpVElNX0NDTVIxX09DMk0pOworICAvKiBDb25maWd1cmUgVGhlIEZvcmNlZCBvdXRwdXQgTW9kZSAqLworICB0bXBjY21yMSB8PSAodWludDE2X3QpKFRJTV9Gb3JjZWRBY3Rpb24gPDwgOCk7CisgIC8qIFdyaXRlIHRvIFRJTXggQ0NNUjEgcmVnaXN0ZXIgKi8KKyAgVElNeC0+Q0NNUjEgPSB0bXBjY21yMTsKK30KKworLyoqCisgICogQGJyaWVmICBGb3JjZXMgdGhlIFRJTXggb3V0cHV0IDMgd2F2ZWZvcm0gdG8gYWN0aXZlIG9yIGluYWN0aXZlIGxldmVsLgorICAqIEBwYXJhbSAgVElNeDogd2hlcmUgeCBjYW4gYmUgIDEsIDIsIDMsIDQsIDUgb3IgOCB0byBzZWxlY3QgdGhlIFRJTSBwZXJpcGhlcmFsLgorICAqIEBwYXJhbSAgVElNX0ZvcmNlZEFjdGlvbjogc3BlY2lmaWVzIHRoZSBmb3JjZWQgQWN0aW9uIHRvIGJlIHNldCB0byB0aGUgb3V0cHV0IHdhdmVmb3JtLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBUSU1fRm9yY2VkQWN0aW9uX0FjdGl2ZTogRm9yY2UgYWN0aXZlIGxldmVsIG9uIE9DM1JFRgorICAqICAgICBAYXJnIFRJTV9Gb3JjZWRBY3Rpb25fSW5BY3RpdmU6IEZvcmNlIGluYWN0aXZlIGxldmVsIG9uIE9DM1JFRi4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgVElNX0ZvcmNlZE9DM0NvbmZpZyhUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgVElNX0ZvcmNlZEFjdGlvbikKK3sKKyAgdWludDE2X3QgdG1wY2NtcjIgPSAwOworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfVElNX0xJU1QzX1BFUklQSChUSU14KSk7CisgIGFzc2VydF9wYXJhbShJU19USU1fRk9SQ0VEX0FDVElPTihUSU1fRm9yY2VkQWN0aW9uKSk7CisgIHRtcGNjbXIyID0gVElNeC0+Q0NNUjI7CisgIC8qIFJlc2V0IHRoZSBPQzFNIEJpdHMgKi8KKyAgdG1wY2NtcjIgJj0gKHVpbnQxNl90KX4oKHVpbnQxNl90KVRJTV9DQ01SMl9PQzNNKTsKKyAgLyogQ29uZmlndXJlIFRoZSBGb3JjZWQgb3V0cHV0IE1vZGUgKi8KKyAgdG1wY2NtcjIgfD0gVElNX0ZvcmNlZEFjdGlvbjsKKyAgLyogV3JpdGUgdG8gVElNeCBDQ01SMiByZWdpc3RlciAqLworICBUSU14LT5DQ01SMiA9IHRtcGNjbXIyOworfQorCisvKioKKyAgKiBAYnJpZWYgIEZvcmNlcyB0aGUgVElNeCBvdXRwdXQgNCB3YXZlZm9ybSB0byBhY3RpdmUgb3IgaW5hY3RpdmUgbGV2ZWwuCisgICogQHBhcmFtICBUSU14OiB3aGVyZSB4IGNhbiBiZSAgMSwgMiwgMywgNCwgNSBvciA4IHRvIHNlbGVjdCB0aGUgVElNIHBlcmlwaGVyYWwuCisgICogQHBhcmFtICBUSU1fRm9yY2VkQWN0aW9uOiBzcGVjaWZpZXMgdGhlIGZvcmNlZCBBY3Rpb24gdG8gYmUgc2V0IHRvIHRoZSBvdXRwdXQgd2F2ZWZvcm0uCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIFRJTV9Gb3JjZWRBY3Rpb25fQWN0aXZlOiBGb3JjZSBhY3RpdmUgbGV2ZWwgb24gT0M0UkVGCisgICogICAgIEBhcmcgVElNX0ZvcmNlZEFjdGlvbl9JbkFjdGl2ZTogRm9yY2UgaW5hY3RpdmUgbGV2ZWwgb24gT0M0UkVGLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBUSU1fRm9yY2VkT0M0Q29uZmlnKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fRm9yY2VkQWN0aW9uKQoreworICB1aW50MTZfdCB0bXBjY21yMiA9IDA7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19USU1fTElTVDNfUEVSSVBIKFRJTXgpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9GT1JDRURfQUNUSU9OKFRJTV9Gb3JjZWRBY3Rpb24pKTsKKyAgdG1wY2NtcjIgPSBUSU14LT5DQ01SMjsKKyAgLyogUmVzZXQgdGhlIE9DMk0gQml0cyAqLworICB0bXBjY21yMiAmPSAodWludDE2X3QpfigodWludDE2X3QpVElNX0NDTVIyX09DNE0pOworICAvKiBDb25maWd1cmUgVGhlIEZvcmNlZCBvdXRwdXQgTW9kZSAqLworICB0bXBjY21yMiB8PSAodWludDE2X3QpKFRJTV9Gb3JjZWRBY3Rpb24gPDwgOCk7CisgIC8qIFdyaXRlIHRvIFRJTXggQ0NNUjIgcmVnaXN0ZXIgKi8KKyAgVElNeC0+Q0NNUjIgPSB0bXBjY21yMjsKK30KKworLyoqCisgICogQGJyaWVmICBFbmFibGVzIG9yIGRpc2FibGVzIFRJTXggcGVyaXBoZXJhbCBQcmVsb2FkIHJlZ2lzdGVyIG9uIEFSUi4KKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlICAxIHRvIDE3IHRvIHNlbGVjdCB0aGUgVElNIHBlcmlwaGVyYWwuCisgICogQHBhcmFtICBOZXdTdGF0ZTogbmV3IHN0YXRlIG9mIHRoZSBUSU14IHBlcmlwaGVyYWwgUHJlbG9hZCByZWdpc3RlcgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlOiBFTkFCTEUgb3IgRElTQUJMRS4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgVElNX0FSUlByZWxvYWRDb25maWcoVElNX1R5cGVEZWYqIFRJTXgsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSkKK3sKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9BTExfUEVSSVBIKFRJTXgpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0ZVTkNUSU9OQUxfU1RBVEUoTmV3U3RhdGUpKTsKKyAgaWYgKE5ld1N0YXRlICE9IERJU0FCTEUpCisgIHsKKyAgICAvKiBTZXQgdGhlIEFSUiBQcmVsb2FkIEJpdCAqLworICAgIFRJTXgtPkNSMSB8PSBUSU1fQ1IxX0FSUEU7CisgIH0KKyAgZWxzZQorICB7CisgICAgLyogUmVzZXQgdGhlIEFSUiBQcmVsb2FkIEJpdCAqLworICAgIFRJTXgtPkNSMSAmPSAodWludDE2X3QpfigodWludDE2X3QpVElNX0NSMV9BUlBFKTsKKyAgfQorfQorCisvKioKKyAgKiBAYnJpZWYgIFNlbGVjdHMgdGhlIFRJTSBwZXJpcGhlcmFsIENvbW11dGF0aW9uIGV2ZW50LgorICAqIEBwYXJhbSAgVElNeDogd2hlcmUgeCBjYW4gYmUgIDEsIDgsIDE1LCAxNiBvciAxNyB0byBzZWxlY3QgdGhlIFRJTXggcGVyaXBoZXJhbAorICAqIEBwYXJhbSAgTmV3U3RhdGU6IG5ldyBzdGF0ZSBvZiB0aGUgQ29tbXV0YXRpb24gZXZlbnQuCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmU6IEVOQUJMRSBvciBESVNBQkxFLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBUSU1fU2VsZWN0Q09NKFRJTV9UeXBlRGVmKiBUSU14LCBGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpCit7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19USU1fTElTVDJfUEVSSVBIKFRJTXgpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0ZVTkNUSU9OQUxfU1RBVEUoTmV3U3RhdGUpKTsKKyAgaWYgKE5ld1N0YXRlICE9IERJU0FCTEUpCisgIHsKKyAgICAvKiBTZXQgdGhlIENPTSBCaXQgKi8KKyAgICBUSU14LT5DUjIgfD0gVElNX0NSMl9DQ1VTOworICB9CisgIGVsc2UKKyAgeworICAgIC8qIFJlc2V0IHRoZSBDT00gQml0ICovCisgICAgVElNeC0+Q1IyICY9ICh1aW50MTZfdCl+KCh1aW50MTZfdClUSU1fQ1IyX0NDVVMpOworICB9Cit9CisKKy8qKgorICAqIEBicmllZiAgU2VsZWN0cyB0aGUgVElNeCBwZXJpcGhlcmFsIENhcHR1cmUgQ29tcGFyZSBETUEgc291cmNlLgorICAqIEBwYXJhbSAgVElNeDogd2hlcmUgeCBjYW4gYmUgIDEsIDIsIDMsIDQsIDUsIDgsIDE1LCAxNiBvciAxNyB0byBzZWxlY3QgCisgICogICAgICAgICB0aGUgVElNIHBlcmlwaGVyYWwuCisgICogQHBhcmFtICBOZXdTdGF0ZTogbmV3IHN0YXRlIG9mIHRoZSBDYXB0dXJlIENvbXBhcmUgRE1BIHNvdXJjZQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlOiBFTkFCTEUgb3IgRElTQUJMRS4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgVElNX1NlbGVjdENDRE1BKFRJTV9UeXBlRGVmKiBUSU14LCBGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpCit7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19USU1fTElTVDRfUEVSSVBIKFRJTXgpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0ZVTkNUSU9OQUxfU1RBVEUoTmV3U3RhdGUpKTsKKyAgaWYgKE5ld1N0YXRlICE9IERJU0FCTEUpCisgIHsKKyAgICAvKiBTZXQgdGhlIENDRFMgQml0ICovCisgICAgVElNeC0+Q1IyIHw9IFRJTV9DUjJfQ0NEUzsKKyAgfQorICBlbHNlCisgIHsKKyAgICAvKiBSZXNldCB0aGUgQ0NEUyBCaXQgKi8KKyAgICBUSU14LT5DUjIgJj0gKHVpbnQxNl90KX4oKHVpbnQxNl90KVRJTV9DUjJfQ0NEUyk7CisgIH0KK30KKworLyoqCisgICogQGJyaWVmICBTZXRzIG9yIFJlc2V0cyB0aGUgVElNIHBlcmlwaGVyYWwgQ2FwdHVyZSBDb21wYXJlIFByZWxvYWQgQ29udHJvbCBiaXQuCisgICogQHBhcmFtICBUSU14OiB3aGVyZSB4IGNhbiBiZSAgIDEsIDIsIDMsIDQsIDUsIDggb3IgMTUgCisgICogICAgICAgICB0byBzZWxlY3QgdGhlIFRJTXggcGVyaXBoZXJhbAorICAqIEBwYXJhbSAgTmV3U3RhdGU6IG5ldyBzdGF0ZSBvZiB0aGUgQ2FwdHVyZSBDb21wYXJlIFByZWxvYWQgQ29udHJvbCBiaXQKKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZTogRU5BQkxFIG9yIERJU0FCTEUuCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFRJTV9DQ1ByZWxvYWRDb250cm9sKFRJTV9UeXBlRGVmKiBUSU14LCBGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpCit7IAorICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfVElNX0xJU1Q1X1BFUklQSChUSU14KSk7CisgIGFzc2VydF9wYXJhbShJU19GVU5DVElPTkFMX1NUQVRFKE5ld1N0YXRlKSk7CisgIGlmIChOZXdTdGF0ZSAhPSBESVNBQkxFKQorICB7CisgICAgLyogU2V0IHRoZSBDQ1BDIEJpdCAqLworICAgIFRJTXgtPkNSMiB8PSBUSU1fQ1IyX0NDUEM7CisgIH0KKyAgZWxzZQorICB7CisgICAgLyogUmVzZXQgdGhlIENDUEMgQml0ICovCisgICAgVElNeC0+Q1IyICY9ICh1aW50MTZfdCl+KCh1aW50MTZfdClUSU1fQ1IyX0NDUEMpOworICB9Cit9CisKKy8qKgorICAqIEBicmllZiAgRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgVElNeCBwZXJpcGhlcmFsIFByZWxvYWQgcmVnaXN0ZXIgb24gQ0NSMS4KKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlICAxIHRvIDE3IGV4Y2VwdCA2IGFuZCA3IHRvIHNlbGVjdCB0aGUgVElNIHBlcmlwaGVyYWwuCisgICogQHBhcmFtICBUSU1fT0NQcmVsb2FkOiBuZXcgc3RhdGUgb2YgdGhlIFRJTXggcGVyaXBoZXJhbCBQcmVsb2FkIHJlZ2lzdGVyCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIFRJTV9PQ1ByZWxvYWRfRW5hYmxlCisgICogICAgIEBhcmcgVElNX09DUHJlbG9hZF9EaXNhYmxlCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFRJTV9PQzFQcmVsb2FkQ29uZmlnKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fT0NQcmVsb2FkKQoreworICB1aW50MTZfdCB0bXBjY21yMSA9IDA7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19USU1fTElTVDhfUEVSSVBIKFRJTXgpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9PQ1BSRUxPQURfU1RBVEUoVElNX09DUHJlbG9hZCkpOworICB0bXBjY21yMSA9IFRJTXgtPkNDTVIxOworICAvKiBSZXNldCB0aGUgT0MxUEUgQml0ICovCisgIHRtcGNjbXIxICY9ICh1aW50MTZfdCl+KCh1aW50MTZfdClUSU1fQ0NNUjFfT0MxUEUpOworICAvKiBFbmFibGUgb3IgRGlzYWJsZSB0aGUgT3V0cHV0IENvbXBhcmUgUHJlbG9hZCBmZWF0dXJlICovCisgIHRtcGNjbXIxIHw9IFRJTV9PQ1ByZWxvYWQ7CisgIC8qIFdyaXRlIHRvIFRJTXggQ0NNUjEgcmVnaXN0ZXIgKi8KKyAgVElNeC0+Q0NNUjEgPSB0bXBjY21yMTsKK30KKworLyoqCisgICogQGJyaWVmICBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBUSU14IHBlcmlwaGVyYWwgUHJlbG9hZCByZWdpc3RlciBvbiBDQ1IyLgorICAqIEBwYXJhbSAgVElNeDogd2hlcmUgeCBjYW4gYmUgIDEsIDIsIDMsIDQsIDUsIDgsIDksIDEyIG9yIDE1IHRvIHNlbGVjdCAKKyAgKiAgICAgICAgIHRoZSBUSU0gcGVyaXBoZXJhbC4KKyAgKiBAcGFyYW0gIFRJTV9PQ1ByZWxvYWQ6IG5ldyBzdGF0ZSBvZiB0aGUgVElNeCBwZXJpcGhlcmFsIFByZWxvYWQgcmVnaXN0ZXIKKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICAgIEBhcmcgVElNX09DUHJlbG9hZF9FbmFibGUKKyAgKiAgICAgQGFyZyBUSU1fT0NQcmVsb2FkX0Rpc2FibGUKKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgVElNX09DMlByZWxvYWRDb25maWcoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9PQ1ByZWxvYWQpCit7CisgIHVpbnQxNl90IHRtcGNjbXIxID0gMDsKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9MSVNUNl9QRVJJUEgoVElNeCkpOworICBhc3NlcnRfcGFyYW0oSVNfVElNX09DUFJFTE9BRF9TVEFURShUSU1fT0NQcmVsb2FkKSk7CisgIHRtcGNjbXIxID0gVElNeC0+Q0NNUjE7CisgIC8qIFJlc2V0IHRoZSBPQzJQRSBCaXQgKi8KKyAgdG1wY2NtcjEgJj0gKHVpbnQxNl90KX4oKHVpbnQxNl90KVRJTV9DQ01SMV9PQzJQRSk7CisgIC8qIEVuYWJsZSBvciBEaXNhYmxlIHRoZSBPdXRwdXQgQ29tcGFyZSBQcmVsb2FkIGZlYXR1cmUgKi8KKyAgdG1wY2NtcjEgfD0gKHVpbnQxNl90KShUSU1fT0NQcmVsb2FkIDw8IDgpOworICAvKiBXcml0ZSB0byBUSU14IENDTVIxIHJlZ2lzdGVyICovCisgIFRJTXgtPkNDTVIxID0gdG1wY2NtcjE7Cit9CisKKy8qKgorICAqIEBicmllZiAgRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgVElNeCBwZXJpcGhlcmFsIFByZWxvYWQgcmVnaXN0ZXIgb24gQ0NSMy4KKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlICAxLCAyLCAzLCA0LCA1IG9yIDggdG8gc2VsZWN0IHRoZSBUSU0gcGVyaXBoZXJhbC4KKyAgKiBAcGFyYW0gIFRJTV9PQ1ByZWxvYWQ6IG5ldyBzdGF0ZSBvZiB0aGUgVElNeCBwZXJpcGhlcmFsIFByZWxvYWQgcmVnaXN0ZXIKKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICAgIEBhcmcgVElNX09DUHJlbG9hZF9FbmFibGUKKyAgKiAgICAgQGFyZyBUSU1fT0NQcmVsb2FkX0Rpc2FibGUKKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgVElNX09DM1ByZWxvYWRDb25maWcoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9PQ1ByZWxvYWQpCit7CisgIHVpbnQxNl90IHRtcGNjbXIyID0gMDsKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9MSVNUM19QRVJJUEgoVElNeCkpOworICBhc3NlcnRfcGFyYW0oSVNfVElNX09DUFJFTE9BRF9TVEFURShUSU1fT0NQcmVsb2FkKSk7CisgIHRtcGNjbXIyID0gVElNeC0+Q0NNUjI7CisgIC8qIFJlc2V0IHRoZSBPQzNQRSBCaXQgKi8KKyAgdG1wY2NtcjIgJj0gKHVpbnQxNl90KX4oKHVpbnQxNl90KVRJTV9DQ01SMl9PQzNQRSk7CisgIC8qIEVuYWJsZSBvciBEaXNhYmxlIHRoZSBPdXRwdXQgQ29tcGFyZSBQcmVsb2FkIGZlYXR1cmUgKi8KKyAgdG1wY2NtcjIgfD0gVElNX09DUHJlbG9hZDsKKyAgLyogV3JpdGUgdG8gVElNeCBDQ01SMiByZWdpc3RlciAqLworICBUSU14LT5DQ01SMiA9IHRtcGNjbXIyOworfQorCisvKioKKyAgKiBAYnJpZWYgIEVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIFRJTXggcGVyaXBoZXJhbCBQcmVsb2FkIHJlZ2lzdGVyIG9uIENDUjQuCisgICogQHBhcmFtICBUSU14OiB3aGVyZSB4IGNhbiBiZSAgMSwgMiwgMywgNCwgNSBvciA4IHRvIHNlbGVjdCB0aGUgVElNIHBlcmlwaGVyYWwuCisgICogQHBhcmFtICBUSU1fT0NQcmVsb2FkOiBuZXcgc3RhdGUgb2YgdGhlIFRJTXggcGVyaXBoZXJhbCBQcmVsb2FkIHJlZ2lzdGVyCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIFRJTV9PQ1ByZWxvYWRfRW5hYmxlCisgICogICAgIEBhcmcgVElNX09DUHJlbG9hZF9EaXNhYmxlCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFRJTV9PQzRQcmVsb2FkQ29uZmlnKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fT0NQcmVsb2FkKQoreworICB1aW50MTZfdCB0bXBjY21yMiA9IDA7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19USU1fTElTVDNfUEVSSVBIKFRJTXgpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9PQ1BSRUxPQURfU1RBVEUoVElNX09DUHJlbG9hZCkpOworICB0bXBjY21yMiA9IFRJTXgtPkNDTVIyOworICAvKiBSZXNldCB0aGUgT0M0UEUgQml0ICovCisgIHRtcGNjbXIyICY9ICh1aW50MTZfdCl+KCh1aW50MTZfdClUSU1fQ0NNUjJfT0M0UEUpOworICAvKiBFbmFibGUgb3IgRGlzYWJsZSB0aGUgT3V0cHV0IENvbXBhcmUgUHJlbG9hZCBmZWF0dXJlICovCisgIHRtcGNjbXIyIHw9ICh1aW50MTZfdCkoVElNX09DUHJlbG9hZCA8PCA4KTsKKyAgLyogV3JpdGUgdG8gVElNeCBDQ01SMiByZWdpc3RlciAqLworICBUSU14LT5DQ01SMiA9IHRtcGNjbXIyOworfQorCisvKioKKyAgKiBAYnJpZWYgIENvbmZpZ3VyZXMgdGhlIFRJTXggT3V0cHV0IENvbXBhcmUgMSBGYXN0IGZlYXR1cmUuCisgICogQHBhcmFtICBUSU14OiB3aGVyZSB4IGNhbiBiZSAgMSB0byAxNyBleGNlcHQgNiBhbmQgNyB0byBzZWxlY3QgdGhlIFRJTSBwZXJpcGhlcmFsLgorICAqIEBwYXJhbSAgVElNX09DRmFzdDogbmV3IHN0YXRlIG9mIHRoZSBPdXRwdXQgQ29tcGFyZSBGYXN0IEVuYWJsZSBCaXQuCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIFRJTV9PQ0Zhc3RfRW5hYmxlOiBUSU0gb3V0cHV0IGNvbXBhcmUgZmFzdCBlbmFibGUKKyAgKiAgICAgQGFyZyBUSU1fT0NGYXN0X0Rpc2FibGU6IFRJTSBvdXRwdXQgY29tcGFyZSBmYXN0IGRpc2FibGUKKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgVElNX09DMUZhc3RDb25maWcoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9PQ0Zhc3QpCit7CisgIHVpbnQxNl90IHRtcGNjbXIxID0gMDsKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9MSVNUOF9QRVJJUEgoVElNeCkpOworICBhc3NlcnRfcGFyYW0oSVNfVElNX09DRkFTVF9TVEFURShUSU1fT0NGYXN0KSk7CisgIC8qIEdldCB0aGUgVElNeCBDQ01SMSByZWdpc3RlciB2YWx1ZSAqLworICB0bXBjY21yMSA9IFRJTXgtPkNDTVIxOworICAvKiBSZXNldCB0aGUgT0MxRkUgQml0ICovCisgIHRtcGNjbXIxICY9ICh1aW50MTZfdCl+KCh1aW50MTZfdClUSU1fQ0NNUjFfT0MxRkUpOworICAvKiBFbmFibGUgb3IgRGlzYWJsZSB0aGUgT3V0cHV0IENvbXBhcmUgRmFzdCBCaXQgKi8KKyAgdG1wY2NtcjEgfD0gVElNX09DRmFzdDsKKyAgLyogV3JpdGUgdG8gVElNeCBDQ01SMSAqLworICBUSU14LT5DQ01SMSA9IHRtcGNjbXIxOworfQorCisvKioKKyAgKiBAYnJpZWYgIENvbmZpZ3VyZXMgdGhlIFRJTXggT3V0cHV0IENvbXBhcmUgMiBGYXN0IGZlYXR1cmUuCisgICogQHBhcmFtICBUSU14OiB3aGVyZSB4IGNhbiBiZSAgMSwgMiwgMywgNCwgNSwgOCwgOSwgMTIgb3IgMTUgdG8gc2VsZWN0IAorICAqICAgICAgICAgdGhlIFRJTSBwZXJpcGhlcmFsLgorICAqIEBwYXJhbSAgVElNX09DRmFzdDogbmV3IHN0YXRlIG9mIHRoZSBPdXRwdXQgQ29tcGFyZSBGYXN0IEVuYWJsZSBCaXQuCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIFRJTV9PQ0Zhc3RfRW5hYmxlOiBUSU0gb3V0cHV0IGNvbXBhcmUgZmFzdCBlbmFibGUKKyAgKiAgICAgQGFyZyBUSU1fT0NGYXN0X0Rpc2FibGU6IFRJTSBvdXRwdXQgY29tcGFyZSBmYXN0IGRpc2FibGUKKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgVElNX09DMkZhc3RDb25maWcoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9PQ0Zhc3QpCit7CisgIHVpbnQxNl90IHRtcGNjbXIxID0gMDsKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9MSVNUNl9QRVJJUEgoVElNeCkpOworICBhc3NlcnRfcGFyYW0oSVNfVElNX09DRkFTVF9TVEFURShUSU1fT0NGYXN0KSk7CisgIC8qIEdldCB0aGUgVElNeCBDQ01SMSByZWdpc3RlciB2YWx1ZSAqLworICB0bXBjY21yMSA9IFRJTXgtPkNDTVIxOworICAvKiBSZXNldCB0aGUgT0MyRkUgQml0ICovCisgIHRtcGNjbXIxICY9ICh1aW50MTZfdCl+KCh1aW50MTZfdClUSU1fQ0NNUjFfT0MyRkUpOworICAvKiBFbmFibGUgb3IgRGlzYWJsZSB0aGUgT3V0cHV0IENvbXBhcmUgRmFzdCBCaXQgKi8KKyAgdG1wY2NtcjEgfD0gKHVpbnQxNl90KShUSU1fT0NGYXN0IDw8IDgpOworICAvKiBXcml0ZSB0byBUSU14IENDTVIxICovCisgIFRJTXgtPkNDTVIxID0gdG1wY2NtcjE7Cit9CisKKy8qKgorICAqIEBicmllZiAgQ29uZmlndXJlcyB0aGUgVElNeCBPdXRwdXQgQ29tcGFyZSAzIEZhc3QgZmVhdHVyZS4KKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlICAxLCAyLCAzLCA0LCA1IG9yIDggdG8gc2VsZWN0IHRoZSBUSU0gcGVyaXBoZXJhbC4KKyAgKiBAcGFyYW0gIFRJTV9PQ0Zhc3Q6IG5ldyBzdGF0ZSBvZiB0aGUgT3V0cHV0IENvbXBhcmUgRmFzdCBFbmFibGUgQml0LgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBUSU1fT0NGYXN0X0VuYWJsZTogVElNIG91dHB1dCBjb21wYXJlIGZhc3QgZW5hYmxlCisgICogICAgIEBhcmcgVElNX09DRmFzdF9EaXNhYmxlOiBUSU0gb3V0cHV0IGNvbXBhcmUgZmFzdCBkaXNhYmxlCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFRJTV9PQzNGYXN0Q29uZmlnKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fT0NGYXN0KQoreworICB1aW50MTZfdCB0bXBjY21yMiA9IDA7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19USU1fTElTVDNfUEVSSVBIKFRJTXgpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9PQ0ZBU1RfU1RBVEUoVElNX09DRmFzdCkpOworICAvKiBHZXQgdGhlIFRJTXggQ0NNUjIgcmVnaXN0ZXIgdmFsdWUgKi8KKyAgdG1wY2NtcjIgPSBUSU14LT5DQ01SMjsKKyAgLyogUmVzZXQgdGhlIE9DM0ZFIEJpdCAqLworICB0bXBjY21yMiAmPSAodWludDE2X3QpfigodWludDE2X3QpVElNX0NDTVIyX09DM0ZFKTsKKyAgLyogRW5hYmxlIG9yIERpc2FibGUgdGhlIE91dHB1dCBDb21wYXJlIEZhc3QgQml0ICovCisgIHRtcGNjbXIyIHw9IFRJTV9PQ0Zhc3Q7CisgIC8qIFdyaXRlIHRvIFRJTXggQ0NNUjIgKi8KKyAgVElNeC0+Q0NNUjIgPSB0bXBjY21yMjsKK30KKworLyoqCisgICogQGJyaWVmICBDb25maWd1cmVzIHRoZSBUSU14IE91dHB1dCBDb21wYXJlIDQgRmFzdCBmZWF0dXJlLgorICAqIEBwYXJhbSAgVElNeDogd2hlcmUgeCBjYW4gYmUgIDEsIDIsIDMsIDQsIDUgb3IgOCB0byBzZWxlY3QgdGhlIFRJTSBwZXJpcGhlcmFsLgorICAqIEBwYXJhbSAgVElNX09DRmFzdDogbmV3IHN0YXRlIG9mIHRoZSBPdXRwdXQgQ29tcGFyZSBGYXN0IEVuYWJsZSBCaXQuCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIFRJTV9PQ0Zhc3RfRW5hYmxlOiBUSU0gb3V0cHV0IGNvbXBhcmUgZmFzdCBlbmFibGUKKyAgKiAgICAgQGFyZyBUSU1fT0NGYXN0X0Rpc2FibGU6IFRJTSBvdXRwdXQgY29tcGFyZSBmYXN0IGRpc2FibGUKKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgVElNX09DNEZhc3RDb25maWcoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9PQ0Zhc3QpCit7CisgIHVpbnQxNl90IHRtcGNjbXIyID0gMDsKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9MSVNUM19QRVJJUEgoVElNeCkpOworICBhc3NlcnRfcGFyYW0oSVNfVElNX09DRkFTVF9TVEFURShUSU1fT0NGYXN0KSk7CisgIC8qIEdldCB0aGUgVElNeCBDQ01SMiByZWdpc3RlciB2YWx1ZSAqLworICB0bXBjY21yMiA9IFRJTXgtPkNDTVIyOworICAvKiBSZXNldCB0aGUgT0M0RkUgQml0ICovCisgIHRtcGNjbXIyICY9ICh1aW50MTZfdCl+KCh1aW50MTZfdClUSU1fQ0NNUjJfT0M0RkUpOworICAvKiBFbmFibGUgb3IgRGlzYWJsZSB0aGUgT3V0cHV0IENvbXBhcmUgRmFzdCBCaXQgKi8KKyAgdG1wY2NtcjIgfD0gKHVpbnQxNl90KShUSU1fT0NGYXN0IDw8IDgpOworICAvKiBXcml0ZSB0byBUSU14IENDTVIyICovCisgIFRJTXgtPkNDTVIyID0gdG1wY2NtcjI7Cit9CisKKy8qKgorICAqIEBicmllZiAgQ2xlYXJzIG9yIHNhZmVndWFyZHMgdGhlIE9DUkVGMSBzaWduYWwgb24gYW4gZXh0ZXJuYWwgZXZlbnQKKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlICAxLCAyLCAzLCA0LCA1IG9yIDggdG8gc2VsZWN0IHRoZSBUSU0gcGVyaXBoZXJhbC4KKyAgKiBAcGFyYW0gIFRJTV9PQ0NsZWFyOiBuZXcgc3RhdGUgb2YgdGhlIE91dHB1dCBDb21wYXJlIENsZWFyIEVuYWJsZSBCaXQuCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIFRJTV9PQ0NsZWFyX0VuYWJsZTogVElNIE91dHB1dCBjbGVhciBlbmFibGUKKyAgKiAgICAgQGFyZyBUSU1fT0NDbGVhcl9EaXNhYmxlOiBUSU0gT3V0cHV0IGNsZWFyIGRpc2FibGUKKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgVElNX0NsZWFyT0MxUmVmKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fT0NDbGVhcikKK3sKKyAgdWludDE2X3QgdG1wY2NtcjEgPSAwOworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfVElNX0xJU1QzX1BFUklQSChUSU14KSk7CisgIGFzc2VydF9wYXJhbShJU19USU1fT0NDTEVBUl9TVEFURShUSU1fT0NDbGVhcikpOworCisgIHRtcGNjbXIxID0gVElNeC0+Q0NNUjE7CisKKyAgLyogUmVzZXQgdGhlIE9DMUNFIEJpdCAqLworICB0bXBjY21yMSAmPSAodWludDE2X3QpfigodWludDE2X3QpVElNX0NDTVIxX09DMUNFKTsKKyAgLyogRW5hYmxlIG9yIERpc2FibGUgdGhlIE91dHB1dCBDb21wYXJlIENsZWFyIEJpdCAqLworICB0bXBjY21yMSB8PSBUSU1fT0NDbGVhcjsKKyAgLyogV3JpdGUgdG8gVElNeCBDQ01SMSByZWdpc3RlciAqLworICBUSU14LT5DQ01SMSA9IHRtcGNjbXIxOworfQorCisvKioKKyAgKiBAYnJpZWYgIENsZWFycyBvciBzYWZlZ3VhcmRzIHRoZSBPQ1JFRjIgc2lnbmFsIG9uIGFuIGV4dGVybmFsIGV2ZW50CisgICogQHBhcmFtICBUSU14OiB3aGVyZSB4IGNhbiBiZSAgMSwgMiwgMywgNCwgNSBvciA4IHRvIHNlbGVjdCB0aGUgVElNIHBlcmlwaGVyYWwuCisgICogQHBhcmFtICBUSU1fT0NDbGVhcjogbmV3IHN0YXRlIG9mIHRoZSBPdXRwdXQgQ29tcGFyZSBDbGVhciBFbmFibGUgQml0LgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBUSU1fT0NDbGVhcl9FbmFibGU6IFRJTSBPdXRwdXQgY2xlYXIgZW5hYmxlCisgICogICAgIEBhcmcgVElNX09DQ2xlYXJfRGlzYWJsZTogVElNIE91dHB1dCBjbGVhciBkaXNhYmxlCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFRJTV9DbGVhck9DMlJlZihUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgVElNX09DQ2xlYXIpCit7CisgIHVpbnQxNl90IHRtcGNjbXIxID0gMDsKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9MSVNUM19QRVJJUEgoVElNeCkpOworICBhc3NlcnRfcGFyYW0oSVNfVElNX09DQ0xFQVJfU1RBVEUoVElNX09DQ2xlYXIpKTsKKyAgdG1wY2NtcjEgPSBUSU14LT5DQ01SMTsKKyAgLyogUmVzZXQgdGhlIE9DMkNFIEJpdCAqLworICB0bXBjY21yMSAmPSAodWludDE2X3QpfigodWludDE2X3QpVElNX0NDTVIxX09DMkNFKTsKKyAgLyogRW5hYmxlIG9yIERpc2FibGUgdGhlIE91dHB1dCBDb21wYXJlIENsZWFyIEJpdCAqLworICB0bXBjY21yMSB8PSAodWludDE2X3QpKFRJTV9PQ0NsZWFyIDw8IDgpOworICAvKiBXcml0ZSB0byBUSU14IENDTVIxIHJlZ2lzdGVyICovCisgIFRJTXgtPkNDTVIxID0gdG1wY2NtcjE7Cit9CisKKy8qKgorICAqIEBicmllZiAgQ2xlYXJzIG9yIHNhZmVndWFyZHMgdGhlIE9DUkVGMyBzaWduYWwgb24gYW4gZXh0ZXJuYWwgZXZlbnQKKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlICAxLCAyLCAzLCA0LCA1IG9yIDggdG8gc2VsZWN0IHRoZSBUSU0gcGVyaXBoZXJhbC4KKyAgKiBAcGFyYW0gIFRJTV9PQ0NsZWFyOiBuZXcgc3RhdGUgb2YgdGhlIE91dHB1dCBDb21wYXJlIENsZWFyIEVuYWJsZSBCaXQuCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIFRJTV9PQ0NsZWFyX0VuYWJsZTogVElNIE91dHB1dCBjbGVhciBlbmFibGUKKyAgKiAgICAgQGFyZyBUSU1fT0NDbGVhcl9EaXNhYmxlOiBUSU0gT3V0cHV0IGNsZWFyIGRpc2FibGUKKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgVElNX0NsZWFyT0MzUmVmKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fT0NDbGVhcikKK3sKKyAgdWludDE2X3QgdG1wY2NtcjIgPSAwOworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfVElNX0xJU1QzX1BFUklQSChUSU14KSk7CisgIGFzc2VydF9wYXJhbShJU19USU1fT0NDTEVBUl9TVEFURShUSU1fT0NDbGVhcikpOworICB0bXBjY21yMiA9IFRJTXgtPkNDTVIyOworICAvKiBSZXNldCB0aGUgT0MzQ0UgQml0ICovCisgIHRtcGNjbXIyICY9ICh1aW50MTZfdCl+KCh1aW50MTZfdClUSU1fQ0NNUjJfT0MzQ0UpOworICAvKiBFbmFibGUgb3IgRGlzYWJsZSB0aGUgT3V0cHV0IENvbXBhcmUgQ2xlYXIgQml0ICovCisgIHRtcGNjbXIyIHw9IFRJTV9PQ0NsZWFyOworICAvKiBXcml0ZSB0byBUSU14IENDTVIyIHJlZ2lzdGVyICovCisgIFRJTXgtPkNDTVIyID0gdG1wY2NtcjI7Cit9CisKKy8qKgorICAqIEBicmllZiAgQ2xlYXJzIG9yIHNhZmVndWFyZHMgdGhlIE9DUkVGNCBzaWduYWwgb24gYW4gZXh0ZXJuYWwgZXZlbnQKKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlICAxLCAyLCAzLCA0LCA1IG9yIDggdG8gc2VsZWN0IHRoZSBUSU0gcGVyaXBoZXJhbC4KKyAgKiBAcGFyYW0gIFRJTV9PQ0NsZWFyOiBuZXcgc3RhdGUgb2YgdGhlIE91dHB1dCBDb21wYXJlIENsZWFyIEVuYWJsZSBCaXQuCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIFRJTV9PQ0NsZWFyX0VuYWJsZTogVElNIE91dHB1dCBjbGVhciBlbmFibGUKKyAgKiAgICAgQGFyZyBUSU1fT0NDbGVhcl9EaXNhYmxlOiBUSU0gT3V0cHV0IGNsZWFyIGRpc2FibGUKKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgVElNX0NsZWFyT0M0UmVmKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fT0NDbGVhcikKK3sKKyAgdWludDE2X3QgdG1wY2NtcjIgPSAwOworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfVElNX0xJU1QzX1BFUklQSChUSU14KSk7CisgIGFzc2VydF9wYXJhbShJU19USU1fT0NDTEVBUl9TVEFURShUSU1fT0NDbGVhcikpOworICB0bXBjY21yMiA9IFRJTXgtPkNDTVIyOworICAvKiBSZXNldCB0aGUgT0M0Q0UgQml0ICovCisgIHRtcGNjbXIyICY9ICh1aW50MTZfdCl+KCh1aW50MTZfdClUSU1fQ0NNUjJfT0M0Q0UpOworICAvKiBFbmFibGUgb3IgRGlzYWJsZSB0aGUgT3V0cHV0IENvbXBhcmUgQ2xlYXIgQml0ICovCisgIHRtcGNjbXIyIHw9ICh1aW50MTZfdCkoVElNX09DQ2xlYXIgPDwgOCk7CisgIC8qIFdyaXRlIHRvIFRJTXggQ0NNUjIgcmVnaXN0ZXIgKi8KKyAgVElNeC0+Q0NNUjIgPSB0bXBjY21yMjsKK30KKworLyoqCisgICogQGJyaWVmICBDb25maWd1cmVzIHRoZSBUSU14IGNoYW5uZWwgMSBwb2xhcml0eS4KKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlIDEgdG8gMTcgZXhjZXB0IDYgYW5kIDcgdG8gc2VsZWN0IHRoZSBUSU0gcGVyaXBoZXJhbC4KKyAgKiBAcGFyYW0gIFRJTV9PQ1BvbGFyaXR5OiBzcGVjaWZpZXMgdGhlIE9DMSBQb2xhcml0eQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBUSU1fT0NQb2xhcml0eV9IaWdoOiBPdXRwdXQgQ29tcGFyZSBhY3RpdmUgaGlnaAorICAqICAgICBAYXJnIFRJTV9PQ1BvbGFyaXR5X0xvdzogT3V0cHV0IENvbXBhcmUgYWN0aXZlIGxvdworICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBUSU1fT0MxUG9sYXJpdHlDb25maWcoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9PQ1BvbGFyaXR5KQoreworICB1aW50MTZfdCB0bXBjY2VyID0gMDsKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9MSVNUOF9QRVJJUEgoVElNeCkpOworICBhc3NlcnRfcGFyYW0oSVNfVElNX09DX1BPTEFSSVRZKFRJTV9PQ1BvbGFyaXR5KSk7CisgIHRtcGNjZXIgPSBUSU14LT5DQ0VSOworICAvKiBTZXQgb3IgUmVzZXQgdGhlIENDMVAgQml0ICovCisgIHRtcGNjZXIgJj0gKHVpbnQxNl90KX4oKHVpbnQxNl90KVRJTV9DQ0VSX0NDMVApOworICB0bXBjY2VyIHw9IFRJTV9PQ1BvbGFyaXR5OworICAvKiBXcml0ZSB0byBUSU14IENDRVIgcmVnaXN0ZXIgKi8KKyAgVElNeC0+Q0NFUiA9IHRtcGNjZXI7Cit9CisKKy8qKgorICAqIEBicmllZiAgQ29uZmlndXJlcyB0aGUgVElNeCBDaGFubmVsIDFOIHBvbGFyaXR5LgorICAqIEBwYXJhbSAgVElNeDogd2hlcmUgeCBjYW4gYmUgMSwgOCwgMTUsIDE2IG9yIDE3IHRvIHNlbGVjdCB0aGUgVElNIHBlcmlwaGVyYWwuCisgICogQHBhcmFtICBUSU1fT0NOUG9sYXJpdHk6IHNwZWNpZmllcyB0aGUgT0MxTiBQb2xhcml0eQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBUSU1fT0NOUG9sYXJpdHlfSGlnaDogT3V0cHV0IENvbXBhcmUgYWN0aXZlIGhpZ2gKKyAgKiAgICAgQGFyZyBUSU1fT0NOUG9sYXJpdHlfTG93OiBPdXRwdXQgQ29tcGFyZSBhY3RpdmUgbG93CisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFRJTV9PQzFOUG9sYXJpdHlDb25maWcoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9PQ05Qb2xhcml0eSkKK3sKKyAgdWludDE2X3QgdG1wY2NlciA9IDA7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19USU1fTElTVDJfUEVSSVBIKFRJTXgpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9PQ05fUE9MQVJJVFkoVElNX09DTlBvbGFyaXR5KSk7CisgICAKKyAgdG1wY2NlciA9IFRJTXgtPkNDRVI7CisgIC8qIFNldCBvciBSZXNldCB0aGUgQ0MxTlAgQml0ICovCisgIHRtcGNjZXIgJj0gKHVpbnQxNl90KX4oKHVpbnQxNl90KVRJTV9DQ0VSX0NDMU5QKTsKKyAgdG1wY2NlciB8PSBUSU1fT0NOUG9sYXJpdHk7CisgIC8qIFdyaXRlIHRvIFRJTXggQ0NFUiByZWdpc3RlciAqLworICBUSU14LT5DQ0VSID0gdG1wY2NlcjsKK30KKworLyoqCisgICogQGJyaWVmICBDb25maWd1cmVzIHRoZSBUSU14IGNoYW5uZWwgMiBwb2xhcml0eS4KKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlIDEsIDIsIDMsIDQsIDUsIDgsIDksIDEyIG9yIDE1IHRvIHNlbGVjdCB0aGUgVElNIHBlcmlwaGVyYWwuCisgICogQHBhcmFtICBUSU1fT0NQb2xhcml0eTogc3BlY2lmaWVzIHRoZSBPQzIgUG9sYXJpdHkKKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICAgIEBhcmcgVElNX09DUG9sYXJpdHlfSGlnaDogT3V0cHV0IENvbXBhcmUgYWN0aXZlIGhpZ2gKKyAgKiAgICAgQGFyZyBUSU1fT0NQb2xhcml0eV9Mb3c6IE91dHB1dCBDb21wYXJlIGFjdGl2ZSBsb3cKKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgVElNX09DMlBvbGFyaXR5Q29uZmlnKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fT0NQb2xhcml0eSkKK3sKKyAgdWludDE2X3QgdG1wY2NlciA9IDA7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19USU1fTElTVDZfUEVSSVBIKFRJTXgpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9PQ19QT0xBUklUWShUSU1fT0NQb2xhcml0eSkpOworICB0bXBjY2VyID0gVElNeC0+Q0NFUjsKKyAgLyogU2V0IG9yIFJlc2V0IHRoZSBDQzJQIEJpdCAqLworICB0bXBjY2VyICY9ICh1aW50MTZfdCl+KCh1aW50MTZfdClUSU1fQ0NFUl9DQzJQKTsKKyAgdG1wY2NlciB8PSAodWludDE2X3QpKFRJTV9PQ1BvbGFyaXR5IDw8IDQpOworICAvKiBXcml0ZSB0byBUSU14IENDRVIgcmVnaXN0ZXIgKi8KKyAgVElNeC0+Q0NFUiA9IHRtcGNjZXI7Cit9CisKKy8qKgorICAqIEBicmllZiAgQ29uZmlndXJlcyB0aGUgVElNeCBDaGFubmVsIDJOIHBvbGFyaXR5LgorICAqIEBwYXJhbSAgVElNeDogd2hlcmUgeCBjYW4gYmUgMSBvciA4IHRvIHNlbGVjdCB0aGUgVElNIHBlcmlwaGVyYWwuCisgICogQHBhcmFtICBUSU1fT0NOUG9sYXJpdHk6IHNwZWNpZmllcyB0aGUgT0MyTiBQb2xhcml0eQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBUSU1fT0NOUG9sYXJpdHlfSGlnaDogT3V0cHV0IENvbXBhcmUgYWN0aXZlIGhpZ2gKKyAgKiAgICAgQGFyZyBUSU1fT0NOUG9sYXJpdHlfTG93OiBPdXRwdXQgQ29tcGFyZSBhY3RpdmUgbG93CisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFRJTV9PQzJOUG9sYXJpdHlDb25maWcoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9PQ05Qb2xhcml0eSkKK3sKKyAgdWludDE2X3QgdG1wY2NlciA9IDA7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19USU1fTElTVDFfUEVSSVBIKFRJTXgpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9PQ05fUE9MQVJJVFkoVElNX09DTlBvbGFyaXR5KSk7CisgIAorICB0bXBjY2VyID0gVElNeC0+Q0NFUjsKKyAgLyogU2V0IG9yIFJlc2V0IHRoZSBDQzJOUCBCaXQgKi8KKyAgdG1wY2NlciAmPSAodWludDE2X3QpfigodWludDE2X3QpVElNX0NDRVJfQ0MyTlApOworICB0bXBjY2VyIHw9ICh1aW50MTZfdCkoVElNX09DTlBvbGFyaXR5IDw8IDQpOworICAvKiBXcml0ZSB0byBUSU14IENDRVIgcmVnaXN0ZXIgKi8KKyAgVElNeC0+Q0NFUiA9IHRtcGNjZXI7Cit9CisKKy8qKgorICAqIEBicmllZiAgQ29uZmlndXJlcyB0aGUgVElNeCBjaGFubmVsIDMgcG9sYXJpdHkuCisgICogQHBhcmFtICBUSU14OiB3aGVyZSB4IGNhbiBiZSAxLCAyLCAzLCA0LCA1IG9yIDggdG8gc2VsZWN0IHRoZSBUSU0gcGVyaXBoZXJhbC4KKyAgKiBAcGFyYW0gIFRJTV9PQ1BvbGFyaXR5OiBzcGVjaWZpZXMgdGhlIE9DMyBQb2xhcml0eQorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBUSU1fT0NQb2xhcml0eV9IaWdoOiBPdXRwdXQgQ29tcGFyZSBhY3RpdmUgaGlnaAorICAqICAgICBAYXJnIFRJTV9PQ1BvbGFyaXR5X0xvdzogT3V0cHV0IENvbXBhcmUgYWN0aXZlIGxvdworICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBUSU1fT0MzUG9sYXJpdHlDb25maWcoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9PQ1BvbGFyaXR5KQoreworICB1aW50MTZfdCB0bXBjY2VyID0gMDsKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9MSVNUM19QRVJJUEgoVElNeCkpOworICBhc3NlcnRfcGFyYW0oSVNfVElNX09DX1BPTEFSSVRZKFRJTV9PQ1BvbGFyaXR5KSk7CisgIHRtcGNjZXIgPSBUSU14LT5DQ0VSOworICAvKiBTZXQgb3IgUmVzZXQgdGhlIENDM1AgQml0ICovCisgIHRtcGNjZXIgJj0gKHVpbnQxNl90KX4oKHVpbnQxNl90KVRJTV9DQ0VSX0NDM1ApOworICB0bXBjY2VyIHw9ICh1aW50MTZfdCkoVElNX09DUG9sYXJpdHkgPDwgOCk7CisgIC8qIFdyaXRlIHRvIFRJTXggQ0NFUiByZWdpc3RlciAqLworICBUSU14LT5DQ0VSID0gdG1wY2NlcjsKK30KKworLyoqCisgICogQGJyaWVmICBDb25maWd1cmVzIHRoZSBUSU14IENoYW5uZWwgM04gcG9sYXJpdHkuCisgICogQHBhcmFtICBUSU14OiB3aGVyZSB4IGNhbiBiZSAxIG9yIDggdG8gc2VsZWN0IHRoZSBUSU0gcGVyaXBoZXJhbC4KKyAgKiBAcGFyYW0gIFRJTV9PQ05Qb2xhcml0eTogc3BlY2lmaWVzIHRoZSBPQzNOIFBvbGFyaXR5CisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIFRJTV9PQ05Qb2xhcml0eV9IaWdoOiBPdXRwdXQgQ29tcGFyZSBhY3RpdmUgaGlnaAorICAqICAgICBAYXJnIFRJTV9PQ05Qb2xhcml0eV9Mb3c6IE91dHB1dCBDb21wYXJlIGFjdGl2ZSBsb3cKKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgVElNX09DM05Qb2xhcml0eUNvbmZpZyhUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgVElNX09DTlBvbGFyaXR5KQoreworICB1aW50MTZfdCB0bXBjY2VyID0gMDsKKyAKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9MSVNUMV9QRVJJUEgoVElNeCkpOworICBhc3NlcnRfcGFyYW0oSVNfVElNX09DTl9QT0xBUklUWShUSU1fT0NOUG9sYXJpdHkpKTsKKyAgICAKKyAgdG1wY2NlciA9IFRJTXgtPkNDRVI7CisgIC8qIFNldCBvciBSZXNldCB0aGUgQ0MzTlAgQml0ICovCisgIHRtcGNjZXIgJj0gKHVpbnQxNl90KX4oKHVpbnQxNl90KVRJTV9DQ0VSX0NDM05QKTsKKyAgdG1wY2NlciB8PSAodWludDE2X3QpKFRJTV9PQ05Qb2xhcml0eSA8PCA4KTsKKyAgLyogV3JpdGUgdG8gVElNeCBDQ0VSIHJlZ2lzdGVyICovCisgIFRJTXgtPkNDRVIgPSB0bXBjY2VyOworfQorCisvKioKKyAgKiBAYnJpZWYgIENvbmZpZ3VyZXMgdGhlIFRJTXggY2hhbm5lbCA0IHBvbGFyaXR5LgorICAqIEBwYXJhbSAgVElNeDogd2hlcmUgeCBjYW4gYmUgMSwgMiwgMywgNCwgNSBvciA4IHRvIHNlbGVjdCB0aGUgVElNIHBlcmlwaGVyYWwuCisgICogQHBhcmFtICBUSU1fT0NQb2xhcml0eTogc3BlY2lmaWVzIHRoZSBPQzQgUG9sYXJpdHkKKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICAgIEBhcmcgVElNX09DUG9sYXJpdHlfSGlnaDogT3V0cHV0IENvbXBhcmUgYWN0aXZlIGhpZ2gKKyAgKiAgICAgQGFyZyBUSU1fT0NQb2xhcml0eV9Mb3c6IE91dHB1dCBDb21wYXJlIGFjdGl2ZSBsb3cKKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgVElNX09DNFBvbGFyaXR5Q29uZmlnKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fT0NQb2xhcml0eSkKK3sKKyAgdWludDE2X3QgdG1wY2NlciA9IDA7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19USU1fTElTVDNfUEVSSVBIKFRJTXgpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9PQ19QT0xBUklUWShUSU1fT0NQb2xhcml0eSkpOworICB0bXBjY2VyID0gVElNeC0+Q0NFUjsKKyAgLyogU2V0IG9yIFJlc2V0IHRoZSBDQzRQIEJpdCAqLworICB0bXBjY2VyICY9ICh1aW50MTZfdCl+KCh1aW50MTZfdClUSU1fQ0NFUl9DQzRQKTsKKyAgdG1wY2NlciB8PSAodWludDE2X3QpKFRJTV9PQ1BvbGFyaXR5IDw8IDEyKTsKKyAgLyogV3JpdGUgdG8gVElNeCBDQ0VSIHJlZ2lzdGVyICovCisgIFRJTXgtPkNDRVIgPSB0bXBjY2VyOworfQorCisvKioKKyAgKiBAYnJpZWYgIEVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIFRJTSBDYXB0dXJlIENvbXBhcmUgQ2hhbm5lbCB4LgorICAqIEBwYXJhbSAgVElNeDogd2hlcmUgeCBjYW4gYmUgMSB0byAxNyBleGNlcHQgNiBhbmQgNyB0byBzZWxlY3QgdGhlIFRJTSBwZXJpcGhlcmFsLgorICAqIEBwYXJhbSAgVElNX0NoYW5uZWw6IHNwZWNpZmllcyB0aGUgVElNIENoYW5uZWwKKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICAgIEBhcmcgVElNX0NoYW5uZWxfMTogVElNIENoYW5uZWwgMQorICAqICAgICBAYXJnIFRJTV9DaGFubmVsXzI6IFRJTSBDaGFubmVsIDIKKyAgKiAgICAgQGFyZyBUSU1fQ2hhbm5lbF8zOiBUSU0gQ2hhbm5lbCAzCisgICogICAgIEBhcmcgVElNX0NoYW5uZWxfNDogVElNIENoYW5uZWwgNAorICAqIEBwYXJhbSAgVElNX0NDeDogc3BlY2lmaWVzIHRoZSBUSU0gQ2hhbm5lbCBDQ3hFIGJpdCBuZXcgc3RhdGUuCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmU6IFRJTV9DQ3hfRW5hYmxlIG9yIFRJTV9DQ3hfRGlzYWJsZS4gCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFRJTV9DQ3hDbWQoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9DaGFubmVsLCB1aW50MTZfdCBUSU1fQ0N4KQoreworICB1aW50MTZfdCB0bXAgPSAwOworCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19USU1fTElTVDhfUEVSSVBIKFRJTXgpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9DSEFOTkVMKFRJTV9DaGFubmVsKSk7CisgIGFzc2VydF9wYXJhbShJU19USU1fQ0NYKFRJTV9DQ3gpKTsKKworICB0bXAgPSBDQ0VSX0NDRV9TZXQgPDwgVElNX0NoYW5uZWw7CisKKyAgLyogUmVzZXQgdGhlIENDeEUgQml0ICovCisgIFRJTXgtPkNDRVIgJj0gKHVpbnQxNl90KX4gdG1wOworCisgIC8qIFNldCBvciByZXNldCB0aGUgQ0N4RSBCaXQgKi8gCisgIFRJTXgtPkNDRVIgfD0gICh1aW50MTZfdCkoVElNX0NDeCA8PCBUSU1fQ2hhbm5lbCk7Cit9CisKKy8qKgorICAqIEBicmllZiAgRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgVElNIENhcHR1cmUgQ29tcGFyZSBDaGFubmVsIHhOLgorICAqIEBwYXJhbSAgVElNeDogd2hlcmUgeCBjYW4gYmUgMSwgOCwgMTUsIDE2IG9yIDE3IHRvIHNlbGVjdCB0aGUgVElNIHBlcmlwaGVyYWwuCisgICogQHBhcmFtICBUSU1fQ2hhbm5lbDogc3BlY2lmaWVzIHRoZSBUSU0gQ2hhbm5lbAorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBUSU1fQ2hhbm5lbF8xOiBUSU0gQ2hhbm5lbCAxCisgICogICAgIEBhcmcgVElNX0NoYW5uZWxfMjogVElNIENoYW5uZWwgMgorICAqICAgICBAYXJnIFRJTV9DaGFubmVsXzM6IFRJTSBDaGFubmVsIDMKKyAgKiBAcGFyYW0gIFRJTV9DQ3hOOiBzcGVjaWZpZXMgdGhlIFRJTSBDaGFubmVsIENDeE5FIGJpdCBuZXcgc3RhdGUuCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmU6IFRJTV9DQ3hOX0VuYWJsZSBvciBUSU1fQ0N4Tl9EaXNhYmxlLiAKKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgVElNX0NDeE5DbWQoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9DaGFubmVsLCB1aW50MTZfdCBUSU1fQ0N4TikKK3sKKyAgdWludDE2X3QgdG1wID0gMDsKKworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfVElNX0xJU1QyX1BFUklQSChUSU14KSk7CisgIGFzc2VydF9wYXJhbShJU19USU1fQ09NUExFTUVOVEFSWV9DSEFOTkVMKFRJTV9DaGFubmVsKSk7CisgIGFzc2VydF9wYXJhbShJU19USU1fQ0NYTihUSU1fQ0N4TikpOworCisgIHRtcCA9IENDRVJfQ0NORV9TZXQgPDwgVElNX0NoYW5uZWw7CisKKyAgLyogUmVzZXQgdGhlIENDeE5FIEJpdCAqLworICBUSU14LT5DQ0VSICY9ICh1aW50MTZfdCkgfnRtcDsKKworICAvKiBTZXQgb3IgcmVzZXQgdGhlIENDeE5FIEJpdCAqLyAKKyAgVElNeC0+Q0NFUiB8PSAgKHVpbnQxNl90KShUSU1fQ0N4TiA8PCBUSU1fQ2hhbm5lbCk7Cit9CisKKy8qKgorICAqIEBicmllZiAgU2VsZWN0cyB0aGUgVElNIE91dHB1dCBDb21wYXJlIE1vZGUuCisgICogQG5vdGUgICBUaGlzIGZ1bmN0aW9uIGRpc2FibGVzIHRoZSBzZWxlY3RlZCBjaGFubmVsIGJlZm9yZSBjaGFuZ2luZyB0aGUgT3V0cHV0CisgICogICAgICAgICBDb21wYXJlIE1vZGUuCisgICogICAgICAgICBVc2VyIGhhcyB0byBlbmFibGUgdGhpcyBjaGFubmVsIHVzaW5nIFRJTV9DQ3hDbWQgYW5kIFRJTV9DQ3hOQ21kIGZ1bmN0aW9ucy4KKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlIDEgdG8gMTcgZXhjZXB0IDYgYW5kIDcgdG8gc2VsZWN0IHRoZSBUSU0gcGVyaXBoZXJhbC4KKyAgKiBAcGFyYW0gIFRJTV9DaGFubmVsOiBzcGVjaWZpZXMgdGhlIFRJTSBDaGFubmVsCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIFRJTV9DaGFubmVsXzE6IFRJTSBDaGFubmVsIDEKKyAgKiAgICAgQGFyZyBUSU1fQ2hhbm5lbF8yOiBUSU0gQ2hhbm5lbCAyCisgICogICAgIEBhcmcgVElNX0NoYW5uZWxfMzogVElNIENoYW5uZWwgMworICAqICAgICBAYXJnIFRJTV9DaGFubmVsXzQ6IFRJTSBDaGFubmVsIDQKKyAgKiBAcGFyYW0gIFRJTV9PQ01vZGU6IHNwZWNpZmllcyB0aGUgVElNIE91dHB1dCBDb21wYXJlIE1vZGUuCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIFRJTV9PQ01vZGVfVGltaW5nCisgICogICAgIEBhcmcgVElNX09DTW9kZV9BY3RpdmUKKyAgKiAgICAgQGFyZyBUSU1fT0NNb2RlX1RvZ2dsZQorICAqICAgICBAYXJnIFRJTV9PQ01vZGVfUFdNMQorICAqICAgICBAYXJnIFRJTV9PQ01vZGVfUFdNMgorICAqICAgICBAYXJnIFRJTV9Gb3JjZWRBY3Rpb25fQWN0aXZlCisgICogICAgIEBhcmcgVElNX0ZvcmNlZEFjdGlvbl9JbkFjdGl2ZQorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBUSU1fU2VsZWN0T0N4TShUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgVElNX0NoYW5uZWwsIHVpbnQxNl90IFRJTV9PQ01vZGUpCit7CisgIHVpbnQzMl90IHRtcCA9IDA7CisgIHVpbnQxNl90IHRtcDEgPSAwOworCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19USU1fTElTVDhfUEVSSVBIKFRJTXgpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9DSEFOTkVMKFRJTV9DaGFubmVsKSk7CisgIGFzc2VydF9wYXJhbShJU19USU1fT0NNKFRJTV9PQ01vZGUpKTsKKworICB0bXAgPSAodWludDMyX3QpIFRJTXg7CisgIHRtcCArPSBDQ01SX09mZnNldDsKKworICB0bXAxID0gQ0NFUl9DQ0VfU2V0IDw8ICh1aW50MTZfdClUSU1fQ2hhbm5lbDsKKworICAvKiBEaXNhYmxlIHRoZSBDaGFubmVsOiBSZXNldCB0aGUgQ0N4RSBCaXQgKi8KKyAgVElNeC0+Q0NFUiAmPSAodWludDE2X3QpIH50bXAxOworCisgIGlmKChUSU1fQ2hhbm5lbCA9PSBUSU1fQ2hhbm5lbF8xKSB8fChUSU1fQ2hhbm5lbCA9PSBUSU1fQ2hhbm5lbF8zKSkKKyAgeworICAgIHRtcCArPSAoVElNX0NoYW5uZWw+PjEpOworCisgICAgLyogUmVzZXQgdGhlIE9DeE0gYml0cyBpbiB0aGUgQ0NNUnggcmVnaXN0ZXIgKi8KKyAgICAqKF9fSU8gdWludDMyX3QgKikgdG1wICY9ICh1aW50MzJfdCl+KCh1aW50MzJfdClUSU1fQ0NNUjFfT0MxTSk7CisgICAKKyAgICAvKiBDb25maWd1cmUgdGhlIE9DeE0gYml0cyBpbiB0aGUgQ0NNUnggcmVnaXN0ZXIgKi8KKyAgICAqKF9fSU8gdWludDMyX3QgKikgdG1wIHw9IFRJTV9PQ01vZGU7CisgIH0KKyAgZWxzZQorICB7CisgICAgdG1wICs9ICh1aW50MTZfdCkoVElNX0NoYW5uZWwgLSAodWludDE2X3QpNCk+PiAodWludDE2X3QpMTsKKworICAgIC8qIFJlc2V0IHRoZSBPQ3hNIGJpdHMgaW4gdGhlIENDTVJ4IHJlZ2lzdGVyICovCisgICAgKihfX0lPIHVpbnQzMl90ICopIHRtcCAmPSAodWludDMyX3QpfigodWludDMyX3QpVElNX0NDTVIxX09DMk0pOworICAgIAorICAgIC8qIENvbmZpZ3VyZSB0aGUgT0N4TSBiaXRzIGluIHRoZSBDQ01SeCByZWdpc3RlciAqLworICAgICooX19JTyB1aW50MzJfdCAqKSB0bXAgfD0gKHVpbnQxNl90KShUSU1fT0NNb2RlIDw8IDgpOworICB9Cit9CisKKy8qKgorICAqIEBicmllZiAgRW5hYmxlcyBvciBEaXNhYmxlcyB0aGUgVElNeCBVcGRhdGUgZXZlbnQuCisgICogQHBhcmFtICBUSU14OiB3aGVyZSB4IGNhbiBiZSAxIHRvIDE3IHRvIHNlbGVjdCB0aGUgVElNIHBlcmlwaGVyYWwuCisgICogQHBhcmFtICBOZXdTdGF0ZTogbmV3IHN0YXRlIG9mIHRoZSBUSU14IFVESVMgYml0CisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmU6IEVOQUJMRSBvciBESVNBQkxFLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBUSU1fVXBkYXRlRGlzYWJsZUNvbmZpZyhUSU1fVHlwZURlZiogVElNeCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfVElNX0FMTF9QRVJJUEgoVElNeCkpOworICBhc3NlcnRfcGFyYW0oSVNfRlVOQ1RJT05BTF9TVEFURShOZXdTdGF0ZSkpOworICBpZiAoTmV3U3RhdGUgIT0gRElTQUJMRSkKKyAgeworICAgIC8qIFNldCB0aGUgVXBkYXRlIERpc2FibGUgQml0ICovCisgICAgVElNeC0+Q1IxIHw9IFRJTV9DUjFfVURJUzsKKyAgfQorICBlbHNlCisgIHsKKyAgICAvKiBSZXNldCB0aGUgVXBkYXRlIERpc2FibGUgQml0ICovCisgICAgVElNeC0+Q1IxICY9ICh1aW50MTZfdCl+KCh1aW50MTZfdClUSU1fQ1IxX1VESVMpOworICB9Cit9CisKKy8qKgorICAqIEBicmllZiAgQ29uZmlndXJlcyB0aGUgVElNeCBVcGRhdGUgUmVxdWVzdCBJbnRlcnJ1cHQgc291cmNlLgorICAqIEBwYXJhbSAgVElNeDogd2hlcmUgeCBjYW4gYmUgMSB0byAxNyB0byBzZWxlY3QgdGhlIFRJTSBwZXJpcGhlcmFsLgorICAqIEBwYXJhbSAgVElNX1VwZGF0ZVNvdXJjZTogc3BlY2lmaWVzIHRoZSBVcGRhdGUgc291cmNlLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBUSU1fVXBkYXRlU291cmNlX1JlZ3VsYXI6IFNvdXJjZSBvZiB1cGRhdGUgaXMgdGhlIGNvdW50ZXIgb3ZlcmZsb3cvdW5kZXJmbG93CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciB0aGUgc2V0dGluZyBvZiBVRyBiaXQsIG9yIGFuIHVwZGF0ZSBnZW5lcmF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdWdoIHRoZSBzbGF2ZSBtb2RlIGNvbnRyb2xsZXIuCisgICogICAgIEBhcmcgVElNX1VwZGF0ZVNvdXJjZV9HbG9iYWw6IFNvdXJjZSBvZiB1cGRhdGUgaXMgY291bnRlciBvdmVyZmxvdy91bmRlcmZsb3cuCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFRJTV9VcGRhdGVSZXF1ZXN0Q29uZmlnKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fVXBkYXRlU291cmNlKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfVElNX0FMTF9QRVJJUEgoVElNeCkpOworICBhc3NlcnRfcGFyYW0oSVNfVElNX1VQREFURV9TT1VSQ0UoVElNX1VwZGF0ZVNvdXJjZSkpOworICBpZiAoVElNX1VwZGF0ZVNvdXJjZSAhPSBUSU1fVXBkYXRlU291cmNlX0dsb2JhbCkKKyAgeworICAgIC8qIFNldCB0aGUgVVJTIEJpdCAqLworICAgIFRJTXgtPkNSMSB8PSBUSU1fQ1IxX1VSUzsKKyAgfQorICBlbHNlCisgIHsKKyAgICAvKiBSZXNldCB0aGUgVVJTIEJpdCAqLworICAgIFRJTXgtPkNSMSAmPSAodWludDE2X3QpfigodWludDE2X3QpVElNX0NSMV9VUlMpOworICB9Cit9CisKKy8qKgorICAqIEBicmllZiAgRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgVElNeCdzIEhhbGwgc2Vuc29yIGludGVyZmFjZS4KKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlIDEsIDIsIDMsIDQsIDUgb3IgOCB0byBzZWxlY3QgdGhlIFRJTSBwZXJpcGhlcmFsLgorICAqIEBwYXJhbSAgTmV3U3RhdGU6IG5ldyBzdGF0ZSBvZiB0aGUgVElNeCBIYWxsIHNlbnNvciBpbnRlcmZhY2UuCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmU6IEVOQUJMRSBvciBESVNBQkxFLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBUSU1fU2VsZWN0SGFsbFNlbnNvcihUSU1fVHlwZURlZiogVElNeCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfVElNX0xJU1Q2X1BFUklQSChUSU14KSk7CisgIGFzc2VydF9wYXJhbShJU19GVU5DVElPTkFMX1NUQVRFKE5ld1N0YXRlKSk7CisgIGlmIChOZXdTdGF0ZSAhPSBESVNBQkxFKQorICB7CisgICAgLyogU2V0IHRoZSBUSTFTIEJpdCAqLworICAgIFRJTXgtPkNSMiB8PSBUSU1fQ1IyX1RJMVM7CisgIH0KKyAgZWxzZQorICB7CisgICAgLyogUmVzZXQgdGhlIFRJMVMgQml0ICovCisgICAgVElNeC0+Q1IyICY9ICh1aW50MTZfdCl+KCh1aW50MTZfdClUSU1fQ1IyX1RJMVMpOworICB9Cit9CisKKy8qKgorICAqIEBicmllZiAgU2VsZWN0cyB0aGUgVElNeCdzIE9uZSBQdWxzZSBNb2RlLgorICAqIEBwYXJhbSAgVElNeDogd2hlcmUgeCBjYW4gYmUgMSB0byAxNyB0byBzZWxlY3QgdGhlIFRJTSBwZXJpcGhlcmFsLgorICAqIEBwYXJhbSAgVElNX09QTW9kZTogc3BlY2lmaWVzIHRoZSBPUE0gTW9kZSB0byBiZSB1c2VkLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBUSU1fT1BNb2RlX1NpbmdsZQorICAqICAgICBAYXJnIFRJTV9PUE1vZGVfUmVwZXRpdGl2ZQorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBUSU1fU2VsZWN0T25lUHVsc2VNb2RlKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fT1BNb2RlKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfVElNX0FMTF9QRVJJUEgoVElNeCkpOworICBhc3NlcnRfcGFyYW0oSVNfVElNX09QTV9NT0RFKFRJTV9PUE1vZGUpKTsKKyAgLyogUmVzZXQgdGhlIE9QTSBCaXQgKi8KKyAgVElNeC0+Q1IxICY9ICh1aW50MTZfdCl+KCh1aW50MTZfdClUSU1fQ1IxX09QTSk7CisgIC8qIENvbmZpZ3VyZSB0aGUgT1BNIE1vZGUgKi8KKyAgVElNeC0+Q1IxIHw9IFRJTV9PUE1vZGU7Cit9CisKKy8qKgorICAqIEBicmllZiAgU2VsZWN0cyB0aGUgVElNeCBUcmlnZ2VyIE91dHB1dCBNb2RlLgorICAqIEBwYXJhbSAgVElNeDogd2hlcmUgeCBjYW4gYmUgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTIgb3IgMTUgdG8gc2VsZWN0IHRoZSBUSU0gcGVyaXBoZXJhbC4KKyAgKiBAcGFyYW0gIFRJTV9UUkdPU291cmNlOiBzcGVjaWZpZXMgdGhlIFRyaWdnZXIgT3V0cHV0IHNvdXJjZS4KKyAgKiAgIFRoaXMgcGFyYW10ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKgorICAqICAtIEZvciBhbGwgVElNeAorICAqICAgICBAYXJnIFRJTV9UUkdPU291cmNlX1Jlc2V0OiAgVGhlIFVHIGJpdCBpbiB0aGUgVElNX0VHUiByZWdpc3RlciBpcyB1c2VkIGFzIHRoZSB0cmlnZ2VyIG91dHB1dCAoVFJHTykuCisgICogICAgIEBhcmcgVElNX1RSR09Tb3VyY2VfRW5hYmxlOiBUaGUgQ291bnRlciBFbmFibGUgQ0VOIGlzIHVzZWQgYXMgdGhlIHRyaWdnZXIgb3V0cHV0IChUUkdPKS4KKyAgKiAgICAgQGFyZyBUSU1fVFJHT1NvdXJjZV9VcGRhdGU6IFRoZSB1cGRhdGUgZXZlbnQgaXMgc2VsZWN0ZWQgYXMgdGhlIHRyaWdnZXIgb3V0cHV0IChUUkdPKS4KKyAgKgorICAqICAtIEZvciBhbGwgVElNeCBleGNlcHQgVElNNiBhbmQgVElNNworICAqICAgICBAYXJnIFRJTV9UUkdPU291cmNlX09DMTogVGhlIHRyaWdnZXIgb3V0cHV0IHNlbmRzIGEgcG9zaXRpdmUgcHVsc2Ugd2hlbiB0aGUgQ0MxSUYgZmxhZworICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgdG8gYmUgc2V0LCBhcyBzb29uIGFzIGEgY2FwdHVyZSBvciBjb21wYXJlIG1hdGNoIG9jY3VycyAoVFJHTykuCisgICogICAgIEBhcmcgVElNX1RSR09Tb3VyY2VfT0MxUmVmOiBPQzFSRUYgc2lnbmFsIGlzIHVzZWQgYXMgdGhlIHRyaWdnZXIgb3V0cHV0IChUUkdPKS4KKyAgKiAgICAgQGFyZyBUSU1fVFJHT1NvdXJjZV9PQzJSZWY6IE9DMlJFRiBzaWduYWwgaXMgdXNlZCBhcyB0aGUgdHJpZ2dlciBvdXRwdXQgKFRSR08pLgorICAqICAgICBAYXJnIFRJTV9UUkdPU291cmNlX09DM1JlZjogT0MzUkVGIHNpZ25hbCBpcyB1c2VkIGFzIHRoZSB0cmlnZ2VyIG91dHB1dCAoVFJHTykuCisgICogICAgIEBhcmcgVElNX1RSR09Tb3VyY2VfT0M0UmVmOiBPQzRSRUYgc2lnbmFsIGlzIHVzZWQgYXMgdGhlIHRyaWdnZXIgb3V0cHV0IChUUkdPKS4KKyAgKgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBUSU1fU2VsZWN0T3V0cHV0VHJpZ2dlcihUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgVElNX1RSR09Tb3VyY2UpCit7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19USU1fTElTVDdfUEVSSVBIKFRJTXgpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9UUkdPX1NPVVJDRShUSU1fVFJHT1NvdXJjZSkpOworICAvKiBSZXNldCB0aGUgTU1TIEJpdHMgKi8KKyAgVElNeC0+Q1IyICY9ICh1aW50MTZfdCl+KCh1aW50MTZfdClUSU1fQ1IyX01NUyk7CisgIC8qIFNlbGVjdCB0aGUgVFJHTyBzb3VyY2UgKi8KKyAgVElNeC0+Q1IyIHw9ICBUSU1fVFJHT1NvdXJjZTsKK30KKworLyoqCisgICogQGJyaWVmICBTZWxlY3RzIHRoZSBUSU14IFNsYXZlIE1vZGUuCisgICogQHBhcmFtICBUSU14OiB3aGVyZSB4IGNhbiBiZSAxLCAyLCAzLCA0LCA1LCA4LCA5LCAxMiBvciAxNSB0byBzZWxlY3QgdGhlIFRJTSBwZXJpcGhlcmFsLgorICAqIEBwYXJhbSAgVElNX1NsYXZlTW9kZTogc3BlY2lmaWVzIHRoZSBUaW1lciBTbGF2ZSBNb2RlLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBUSU1fU2xhdmVNb2RlX1Jlc2V0OiBSaXNpbmcgZWRnZSBvZiB0aGUgc2VsZWN0ZWQgdHJpZ2dlciBzaWduYWwgKFRSR0kpIHJlLWluaXRpYWxpemVzCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGNvdW50ZXIgYW5kIHRyaWdnZXJzIGFuIHVwZGF0ZSBvZiB0aGUgcmVnaXN0ZXJzLgorICAqICAgICBAYXJnIFRJTV9TbGF2ZU1vZGVfR2F0ZWQ6ICAgICBUaGUgY291bnRlciBjbG9jayBpcyBlbmFibGVkIHdoZW4gdGhlIHRyaWdnZXIgc2lnbmFsIChUUkdJKSBpcyBoaWdoLgorICAqICAgICBAYXJnIFRJTV9TbGF2ZU1vZGVfVHJpZ2dlcjogICBUaGUgY291bnRlciBzdGFydHMgYXQgYSByaXNpbmcgZWRnZSBvZiB0aGUgdHJpZ2dlciBUUkdJLgorICAqICAgICBAYXJnIFRJTV9TbGF2ZU1vZGVfRXh0ZXJuYWwxOiBSaXNpbmcgZWRnZXMgb2YgdGhlIHNlbGVjdGVkIHRyaWdnZXIgKFRSR0kpIGNsb2NrIHRoZSBjb3VudGVyLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBUSU1fU2VsZWN0U2xhdmVNb2RlKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fU2xhdmVNb2RlKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfVElNX0xJU1Q2X1BFUklQSChUSU14KSk7CisgIGFzc2VydF9wYXJhbShJU19USU1fU0xBVkVfTU9ERShUSU1fU2xhdmVNb2RlKSk7CisgLyogUmVzZXQgdGhlIFNNUyBCaXRzICovCisgIFRJTXgtPlNNQ1IgJj0gKHVpbnQxNl90KX4oKHVpbnQxNl90KVRJTV9TTUNSX1NNUyk7CisgIC8qIFNlbGVjdCB0aGUgU2xhdmUgTW9kZSAqLworICBUSU14LT5TTUNSIHw9IFRJTV9TbGF2ZU1vZGU7Cit9CisKKy8qKgorICAqIEBicmllZiAgU2V0cyBvciBSZXNldHMgdGhlIFRJTXggTWFzdGVyL1NsYXZlIE1vZGUuCisgICogQHBhcmFtICBUSU14OiB3aGVyZSB4IGNhbiBiZSAxLCAyLCAzLCA0LCA1LCA4LCA5LCAxMiBvciAxNSB0byBzZWxlY3QgdGhlIFRJTSBwZXJpcGhlcmFsLgorICAqIEBwYXJhbSAgVElNX01hc3RlclNsYXZlTW9kZTogc3BlY2lmaWVzIHRoZSBUaW1lciBNYXN0ZXIgU2xhdmUgTW9kZS4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICAgIEBhcmcgVElNX01hc3RlclNsYXZlTW9kZV9FbmFibGU6IHN5bmNocm9uaXphdGlvbiBiZXR3ZWVuIHRoZSBjdXJyZW50IHRpbWVyCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBpdHMgc2xhdmVzICh0aHJvdWdoIFRSR08pLgorICAqICAgICBAYXJnIFRJTV9NYXN0ZXJTbGF2ZU1vZGVfRGlzYWJsZTogTm8gYWN0aW9uCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFRJTV9TZWxlY3RNYXN0ZXJTbGF2ZU1vZGUoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9NYXN0ZXJTbGF2ZU1vZGUpCit7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19USU1fTElTVDZfUEVSSVBIKFRJTXgpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9NU01fU1RBVEUoVElNX01hc3RlclNsYXZlTW9kZSkpOworICAvKiBSZXNldCB0aGUgTVNNIEJpdCAqLworICBUSU14LT5TTUNSICY9ICh1aW50MTZfdCl+KCh1aW50MTZfdClUSU1fU01DUl9NU00pOworICAKKyAgLyogU2V0IG9yIFJlc2V0IHRoZSBNU00gQml0ICovCisgIFRJTXgtPlNNQ1IgfD0gVElNX01hc3RlclNsYXZlTW9kZTsKK30KKworLyoqCisgICogQGJyaWVmICBTZXRzIHRoZSBUSU14IENvdW50ZXIgUmVnaXN0ZXIgdmFsdWUKKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlIDEgdG8gMTcgdG8gc2VsZWN0IHRoZSBUSU0gcGVyaXBoZXJhbC4KKyAgKiBAcGFyYW0gIENvdW50ZXI6IHNwZWNpZmllcyB0aGUgQ291bnRlciByZWdpc3RlciBuZXcgdmFsdWUuCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFRJTV9TZXRDb3VudGVyKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBDb3VudGVyKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfVElNX0FMTF9QRVJJUEgoVElNeCkpOworICAvKiBTZXQgdGhlIENvdW50ZXIgUmVnaXN0ZXIgdmFsdWUgKi8KKyAgVElNeC0+Q05UID0gQ291bnRlcjsKK30KKworLyoqCisgICogQGJyaWVmICBTZXRzIHRoZSBUSU14IEF1dG9yZWxvYWQgUmVnaXN0ZXIgdmFsdWUKKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlIDEgdG8gMTcgdG8gc2VsZWN0IHRoZSBUSU0gcGVyaXBoZXJhbC4KKyAgKiBAcGFyYW0gIEF1dG9yZWxvYWQ6IHNwZWNpZmllcyB0aGUgQXV0b3JlbG9hZCByZWdpc3RlciBuZXcgdmFsdWUuCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFRJTV9TZXRBdXRvcmVsb2FkKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBBdXRvcmVsb2FkKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfVElNX0FMTF9QRVJJUEgoVElNeCkpOworICAvKiBTZXQgdGhlIEF1dG9yZWxvYWQgUmVnaXN0ZXIgdmFsdWUgKi8KKyAgVElNeC0+QVJSID0gQXV0b3JlbG9hZDsKK30KKworLyoqCisgICogQGJyaWVmICBTZXRzIHRoZSBUSU14IENhcHR1cmUgQ29tcGFyZTEgUmVnaXN0ZXIgdmFsdWUKKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlIDEgdG8gMTcgZXhjZXB0IDYgYW5kIDcgdG8gc2VsZWN0IHRoZSBUSU0gcGVyaXBoZXJhbC4KKyAgKiBAcGFyYW0gIENvbXBhcmUxOiBzcGVjaWZpZXMgdGhlIENhcHR1cmUgQ29tcGFyZTEgcmVnaXN0ZXIgbmV3IHZhbHVlLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBUSU1fU2V0Q29tcGFyZTEoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IENvbXBhcmUxKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfVElNX0xJU1Q4X1BFUklQSChUSU14KSk7CisgIC8qIFNldCB0aGUgQ2FwdHVyZSBDb21wYXJlMSBSZWdpc3RlciB2YWx1ZSAqLworICBUSU14LT5DQ1IxID0gQ29tcGFyZTE7Cit9CisKKy8qKgorICAqIEBicmllZiAgU2V0cyB0aGUgVElNeCBDYXB0dXJlIENvbXBhcmUyIFJlZ2lzdGVyIHZhbHVlCisgICogQHBhcmFtICBUSU14OiB3aGVyZSB4IGNhbiBiZSAxLCAyLCAzLCA0LCA1LCA4LCA5LCAxMiBvciAxNSB0byBzZWxlY3QgdGhlIFRJTSBwZXJpcGhlcmFsLgorICAqIEBwYXJhbSAgQ29tcGFyZTI6IHNwZWNpZmllcyB0aGUgQ2FwdHVyZSBDb21wYXJlMiByZWdpc3RlciBuZXcgdmFsdWUuCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFRJTV9TZXRDb21wYXJlMihUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgQ29tcGFyZTIpCit7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19USU1fTElTVDZfUEVSSVBIKFRJTXgpKTsKKyAgLyogU2V0IHRoZSBDYXB0dXJlIENvbXBhcmUyIFJlZ2lzdGVyIHZhbHVlICovCisgIFRJTXgtPkNDUjIgPSBDb21wYXJlMjsKK30KKworLyoqCisgICogQGJyaWVmICBTZXRzIHRoZSBUSU14IENhcHR1cmUgQ29tcGFyZTMgUmVnaXN0ZXIgdmFsdWUKKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlIDEsIDIsIDMsIDQsIDUgb3IgOCB0byBzZWxlY3QgdGhlIFRJTSBwZXJpcGhlcmFsLgorICAqIEBwYXJhbSAgQ29tcGFyZTM6IHNwZWNpZmllcyB0aGUgQ2FwdHVyZSBDb21wYXJlMyByZWdpc3RlciBuZXcgdmFsdWUuCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFRJTV9TZXRDb21wYXJlMyhUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgQ29tcGFyZTMpCit7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19USU1fTElTVDNfUEVSSVBIKFRJTXgpKTsKKyAgLyogU2V0IHRoZSBDYXB0dXJlIENvbXBhcmUzIFJlZ2lzdGVyIHZhbHVlICovCisgIFRJTXgtPkNDUjMgPSBDb21wYXJlMzsKK30KKworLyoqCisgICogQGJyaWVmICBTZXRzIHRoZSBUSU14IENhcHR1cmUgQ29tcGFyZTQgUmVnaXN0ZXIgdmFsdWUKKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlIDEsIDIsIDMsIDQsIDUgb3IgOCB0byBzZWxlY3QgdGhlIFRJTSBwZXJpcGhlcmFsLgorICAqIEBwYXJhbSAgQ29tcGFyZTQ6IHNwZWNpZmllcyB0aGUgQ2FwdHVyZSBDb21wYXJlNCByZWdpc3RlciBuZXcgdmFsdWUuCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFRJTV9TZXRDb21wYXJlNChUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgQ29tcGFyZTQpCit7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19USU1fTElTVDNfUEVSSVBIKFRJTXgpKTsKKyAgLyogU2V0IHRoZSBDYXB0dXJlIENvbXBhcmU0IFJlZ2lzdGVyIHZhbHVlICovCisgIFRJTXgtPkNDUjQgPSBDb21wYXJlNDsKK30KKworLyoqCisgICogQGJyaWVmICBTZXRzIHRoZSBUSU14IElucHV0IENhcHR1cmUgMSBwcmVzY2FsZXIuCisgICogQHBhcmFtICBUSU14OiB3aGVyZSB4IGNhbiBiZSAxIHRvIDE3IGV4Y2VwdCA2IGFuZCA3IHRvIHNlbGVjdCB0aGUgVElNIHBlcmlwaGVyYWwuCisgICogQHBhcmFtICBUSU1fSUNQU0M6IHNwZWNpZmllcyB0aGUgSW5wdXQgQ2FwdHVyZTEgcHJlc2NhbGVyIG5ldyB2YWx1ZS4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICAgIEBhcmcgVElNX0lDUFNDX0RJVjE6IG5vIHByZXNjYWxlcgorICAqICAgICBAYXJnIFRJTV9JQ1BTQ19ESVYyOiBjYXB0dXJlIGlzIGRvbmUgb25jZSBldmVyeSAyIGV2ZW50cworICAqICAgICBAYXJnIFRJTV9JQ1BTQ19ESVY0OiBjYXB0dXJlIGlzIGRvbmUgb25jZSBldmVyeSA0IGV2ZW50cworICAqICAgICBAYXJnIFRJTV9JQ1BTQ19ESVY4OiBjYXB0dXJlIGlzIGRvbmUgb25jZSBldmVyeSA4IGV2ZW50cworICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBUSU1fU2V0SUMxUHJlc2NhbGVyKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fSUNQU0MpCit7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19USU1fTElTVDhfUEVSSVBIKFRJTXgpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9JQ19QUkVTQ0FMRVIoVElNX0lDUFNDKSk7CisgIC8qIFJlc2V0IHRoZSBJQzFQU0MgQml0cyAqLworICBUSU14LT5DQ01SMSAmPSAodWludDE2X3QpfigodWludDE2X3QpVElNX0NDTVIxX0lDMVBTQyk7CisgIC8qIFNldCB0aGUgSUMxUFNDIHZhbHVlICovCisgIFRJTXgtPkNDTVIxIHw9IFRJTV9JQ1BTQzsKK30KKworLyoqCisgICogQGJyaWVmICBTZXRzIHRoZSBUSU14IElucHV0IENhcHR1cmUgMiBwcmVzY2FsZXIuCisgICogQHBhcmFtICBUSU14OiB3aGVyZSB4IGNhbiBiZSAxLCAyLCAzLCA0LCA1LCA4LCA5LCAxMiBvciAxNSB0byBzZWxlY3QgdGhlIFRJTSBwZXJpcGhlcmFsLgorICAqIEBwYXJhbSAgVElNX0lDUFNDOiBzcGVjaWZpZXMgdGhlIElucHV0IENhcHR1cmUyIHByZXNjYWxlciBuZXcgdmFsdWUuCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIFRJTV9JQ1BTQ19ESVYxOiBubyBwcmVzY2FsZXIKKyAgKiAgICAgQGFyZyBUSU1fSUNQU0NfRElWMjogY2FwdHVyZSBpcyBkb25lIG9uY2UgZXZlcnkgMiBldmVudHMKKyAgKiAgICAgQGFyZyBUSU1fSUNQU0NfRElWNDogY2FwdHVyZSBpcyBkb25lIG9uY2UgZXZlcnkgNCBldmVudHMKKyAgKiAgICAgQGFyZyBUSU1fSUNQU0NfRElWODogY2FwdHVyZSBpcyBkb25lIG9uY2UgZXZlcnkgOCBldmVudHMKKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgVElNX1NldElDMlByZXNjYWxlcihUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgVElNX0lDUFNDKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfVElNX0xJU1Q2X1BFUklQSChUSU14KSk7CisgIGFzc2VydF9wYXJhbShJU19USU1fSUNfUFJFU0NBTEVSKFRJTV9JQ1BTQykpOworICAvKiBSZXNldCB0aGUgSUMyUFNDIEJpdHMgKi8KKyAgVElNeC0+Q0NNUjEgJj0gKHVpbnQxNl90KX4oKHVpbnQxNl90KVRJTV9DQ01SMV9JQzJQU0MpOworICAvKiBTZXQgdGhlIElDMlBTQyB2YWx1ZSAqLworICBUSU14LT5DQ01SMSB8PSAodWludDE2X3QpKFRJTV9JQ1BTQyA8PCA4KTsKK30KKworLyoqCisgICogQGJyaWVmICBTZXRzIHRoZSBUSU14IElucHV0IENhcHR1cmUgMyBwcmVzY2FsZXIuCisgICogQHBhcmFtICBUSU14OiB3aGVyZSB4IGNhbiBiZSAxLCAyLCAzLCA0LCA1IG9yIDggdG8gc2VsZWN0IHRoZSBUSU0gcGVyaXBoZXJhbC4KKyAgKiBAcGFyYW0gIFRJTV9JQ1BTQzogc3BlY2lmaWVzIHRoZSBJbnB1dCBDYXB0dXJlMyBwcmVzY2FsZXIgbmV3IHZhbHVlLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBUSU1fSUNQU0NfRElWMTogbm8gcHJlc2NhbGVyCisgICogICAgIEBhcmcgVElNX0lDUFNDX0RJVjI6IGNhcHR1cmUgaXMgZG9uZSBvbmNlIGV2ZXJ5IDIgZXZlbnRzCisgICogICAgIEBhcmcgVElNX0lDUFNDX0RJVjQ6IGNhcHR1cmUgaXMgZG9uZSBvbmNlIGV2ZXJ5IDQgZXZlbnRzCisgICogICAgIEBhcmcgVElNX0lDUFNDX0RJVjg6IGNhcHR1cmUgaXMgZG9uZSBvbmNlIGV2ZXJ5IDggZXZlbnRzCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFRJTV9TZXRJQzNQcmVzY2FsZXIoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9JQ1BTQykKK3sKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9MSVNUM19QRVJJUEgoVElNeCkpOworICBhc3NlcnRfcGFyYW0oSVNfVElNX0lDX1BSRVNDQUxFUihUSU1fSUNQU0MpKTsKKyAgLyogUmVzZXQgdGhlIElDM1BTQyBCaXRzICovCisgIFRJTXgtPkNDTVIyICY9ICh1aW50MTZfdCl+KCh1aW50MTZfdClUSU1fQ0NNUjJfSUMzUFNDKTsKKyAgLyogU2V0IHRoZSBJQzNQU0MgdmFsdWUgKi8KKyAgVElNeC0+Q0NNUjIgfD0gVElNX0lDUFNDOworfQorCisvKioKKyAgKiBAYnJpZWYgIFNldHMgdGhlIFRJTXggSW5wdXQgQ2FwdHVyZSA0IHByZXNjYWxlci4KKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlIDEsIDIsIDMsIDQsIDUgb3IgOCB0byBzZWxlY3QgdGhlIFRJTSBwZXJpcGhlcmFsLgorICAqIEBwYXJhbSAgVElNX0lDUFNDOiBzcGVjaWZpZXMgdGhlIElucHV0IENhcHR1cmU0IHByZXNjYWxlciBuZXcgdmFsdWUuCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIFRJTV9JQ1BTQ19ESVYxOiBubyBwcmVzY2FsZXIKKyAgKiAgICAgQGFyZyBUSU1fSUNQU0NfRElWMjogY2FwdHVyZSBpcyBkb25lIG9uY2UgZXZlcnkgMiBldmVudHMKKyAgKiAgICAgQGFyZyBUSU1fSUNQU0NfRElWNDogY2FwdHVyZSBpcyBkb25lIG9uY2UgZXZlcnkgNCBldmVudHMKKyAgKiAgICAgQGFyZyBUSU1fSUNQU0NfRElWODogY2FwdHVyZSBpcyBkb25lIG9uY2UgZXZlcnkgOCBldmVudHMKKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgVElNX1NldElDNFByZXNjYWxlcihUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgVElNX0lDUFNDKQoreyAgCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19USU1fTElTVDNfUEVSSVBIKFRJTXgpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9JQ19QUkVTQ0FMRVIoVElNX0lDUFNDKSk7CisgIC8qIFJlc2V0IHRoZSBJQzRQU0MgQml0cyAqLworICBUSU14LT5DQ01SMiAmPSAodWludDE2X3QpfigodWludDE2X3QpVElNX0NDTVIyX0lDNFBTQyk7CisgIC8qIFNldCB0aGUgSUM0UFNDIHZhbHVlICovCisgIFRJTXgtPkNDTVIyIHw9ICh1aW50MTZfdCkoVElNX0lDUFNDIDw8IDgpOworfQorCisvKioKKyAgKiBAYnJpZWYgIFNldHMgdGhlIFRJTXggQ2xvY2sgRGl2aXNpb24gdmFsdWUuCisgICogQHBhcmFtICBUSU14OiB3aGVyZSB4IGNhbiBiZSAgMSB0byAxNyBleGNlcHQgNiBhbmQgNyB0byBzZWxlY3QgCisgICogICB0aGUgVElNIHBlcmlwaGVyYWwuCisgICogQHBhcmFtICBUSU1fQ0tEOiBzcGVjaWZpZXMgdGhlIGNsb2NrIGRpdmlzaW9uIHZhbHVlLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlOgorICAqICAgICBAYXJnIFRJTV9DS0RfRElWMTogVERUUyA9IFRja190aW0KKyAgKiAgICAgQGFyZyBUSU1fQ0tEX0RJVjI6IFREVFMgPSAyKlRja190aW0KKyAgKiAgICAgQGFyZyBUSU1fQ0tEX0RJVjQ6IFREVFMgPSA0KlRja190aW0KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgVElNX1NldENsb2NrRGl2aXNpb24oVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9DS0QpCit7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19USU1fTElTVDhfUEVSSVBIKFRJTXgpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9DS0RfRElWKFRJTV9DS0QpKTsKKyAgLyogUmVzZXQgdGhlIENLRCBCaXRzICovCisgIFRJTXgtPkNSMSAmPSAodWludDE2X3QpfigodWludDE2X3QpVElNX0NSMV9DS0QpOworICAvKiBTZXQgdGhlIENLRCB2YWx1ZSAqLworICBUSU14LT5DUjEgfD0gVElNX0NLRDsKK30KKworLyoqCisgICogQGJyaWVmICBHZXRzIHRoZSBUSU14IElucHV0IENhcHR1cmUgMSB2YWx1ZS4KKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlIDEgdG8gMTcgZXhjZXB0IDYgYW5kIDcgdG8gc2VsZWN0IHRoZSBUSU0gcGVyaXBoZXJhbC4KKyAgKiBAcmV0dmFsIENhcHR1cmUgQ29tcGFyZSAxIFJlZ2lzdGVyIHZhbHVlLgorICAqLwordWludDE2X3QgVElNX0dldENhcHR1cmUxKFRJTV9UeXBlRGVmKiBUSU14KQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfVElNX0xJU1Q4X1BFUklQSChUSU14KSk7CisgIC8qIEdldCB0aGUgQ2FwdHVyZSAxIFJlZ2lzdGVyIHZhbHVlICovCisgIHJldHVybiBUSU14LT5DQ1IxOworfQorCisvKioKKyAgKiBAYnJpZWYgIEdldHMgdGhlIFRJTXggSW5wdXQgQ2FwdHVyZSAyIHZhbHVlLgorICAqIEBwYXJhbSAgVElNeDogd2hlcmUgeCBjYW4gYmUgMSwgMiwgMywgNCwgNSwgOCwgOSwgMTIgb3IgMTUgdG8gc2VsZWN0IHRoZSBUSU0gcGVyaXBoZXJhbC4KKyAgKiBAcmV0dmFsIENhcHR1cmUgQ29tcGFyZSAyIFJlZ2lzdGVyIHZhbHVlLgorICAqLwordWludDE2X3QgVElNX0dldENhcHR1cmUyKFRJTV9UeXBlRGVmKiBUSU14KQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfVElNX0xJU1Q2X1BFUklQSChUSU14KSk7CisgIC8qIEdldCB0aGUgQ2FwdHVyZSAyIFJlZ2lzdGVyIHZhbHVlICovCisgIHJldHVybiBUSU14LT5DQ1IyOworfQorCisvKioKKyAgKiBAYnJpZWYgIEdldHMgdGhlIFRJTXggSW5wdXQgQ2FwdHVyZSAzIHZhbHVlLgorICAqIEBwYXJhbSAgVElNeDogd2hlcmUgeCBjYW4gYmUgMSwgMiwgMywgNCwgNSBvciA4IHRvIHNlbGVjdCB0aGUgVElNIHBlcmlwaGVyYWwuCisgICogQHJldHZhbCBDYXB0dXJlIENvbXBhcmUgMyBSZWdpc3RlciB2YWx1ZS4KKyAgKi8KK3VpbnQxNl90IFRJTV9HZXRDYXB0dXJlMyhUSU1fVHlwZURlZiogVElNeCkKK3sKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9MSVNUM19QRVJJUEgoVElNeCkpOyAKKyAgLyogR2V0IHRoZSBDYXB0dXJlIDMgUmVnaXN0ZXIgdmFsdWUgKi8KKyAgcmV0dXJuIFRJTXgtPkNDUjM7Cit9CisKKy8qKgorICAqIEBicmllZiAgR2V0cyB0aGUgVElNeCBJbnB1dCBDYXB0dXJlIDQgdmFsdWUuCisgICogQHBhcmFtICBUSU14OiB3aGVyZSB4IGNhbiBiZSAxLCAyLCAzLCA0LCA1IG9yIDggdG8gc2VsZWN0IHRoZSBUSU0gcGVyaXBoZXJhbC4KKyAgKiBAcmV0dmFsIENhcHR1cmUgQ29tcGFyZSA0IFJlZ2lzdGVyIHZhbHVlLgorICAqLwordWludDE2X3QgVElNX0dldENhcHR1cmU0KFRJTV9UeXBlRGVmKiBUSU14KQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfVElNX0xJU1QzX1BFUklQSChUSU14KSk7CisgIC8qIEdldCB0aGUgQ2FwdHVyZSA0IFJlZ2lzdGVyIHZhbHVlICovCisgIHJldHVybiBUSU14LT5DQ1I0OworfQorCisvKioKKyAgKiBAYnJpZWYgIEdldHMgdGhlIFRJTXggQ291bnRlciB2YWx1ZS4KKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlIDEgdG8gMTcgdG8gc2VsZWN0IHRoZSBUSU0gcGVyaXBoZXJhbC4KKyAgKiBAcmV0dmFsIENvdW50ZXIgUmVnaXN0ZXIgdmFsdWUuCisgICovCit1aW50MTZfdCBUSU1fR2V0Q291bnRlcihUSU1fVHlwZURlZiogVElNeCkKK3sKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9BTExfUEVSSVBIKFRJTXgpKTsKKyAgLyogR2V0IHRoZSBDb3VudGVyIFJlZ2lzdGVyIHZhbHVlICovCisgIHJldHVybiBUSU14LT5DTlQ7Cit9CisKKy8qKgorICAqIEBicmllZiAgR2V0cyB0aGUgVElNeCBQcmVzY2FsZXIgdmFsdWUuCisgICogQHBhcmFtICBUSU14OiB3aGVyZSB4IGNhbiBiZSAxIHRvIDE3IHRvIHNlbGVjdCB0aGUgVElNIHBlcmlwaGVyYWwuCisgICogQHJldHZhbCBQcmVzY2FsZXIgUmVnaXN0ZXIgdmFsdWUuCisgICovCit1aW50MTZfdCBUSU1fR2V0UHJlc2NhbGVyKFRJTV9UeXBlRGVmKiBUSU14KQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfVElNX0FMTF9QRVJJUEgoVElNeCkpOworICAvKiBHZXQgdGhlIFByZXNjYWxlciBSZWdpc3RlciB2YWx1ZSAqLworICByZXR1cm4gVElNeC0+UFNDOworfQorCisvKioKKyAgKiBAYnJpZWYgIENoZWNrcyB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgVElNIGZsYWcgaXMgc2V0IG9yIG5vdC4KKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlIDEgdG8gMTcgdG8gc2VsZWN0IHRoZSBUSU0gcGVyaXBoZXJhbC4KKyAgKiBAcGFyYW0gIFRJTV9GTEFHOiBzcGVjaWZpZXMgdGhlIGZsYWcgdG8gY2hlY2suCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIFRJTV9GTEFHX1VwZGF0ZTogVElNIHVwZGF0ZSBGbGFnCisgICogICAgIEBhcmcgVElNX0ZMQUdfQ0MxOiBUSU0gQ2FwdHVyZSBDb21wYXJlIDEgRmxhZworICAqICAgICBAYXJnIFRJTV9GTEFHX0NDMjogVElNIENhcHR1cmUgQ29tcGFyZSAyIEZsYWcKKyAgKiAgICAgQGFyZyBUSU1fRkxBR19DQzM6IFRJTSBDYXB0dXJlIENvbXBhcmUgMyBGbGFnCisgICogICAgIEBhcmcgVElNX0ZMQUdfQ0M0OiBUSU0gQ2FwdHVyZSBDb21wYXJlIDQgRmxhZworICAqICAgICBAYXJnIFRJTV9GTEFHX0NPTTogVElNIENvbW11dGF0aW9uIEZsYWcKKyAgKiAgICAgQGFyZyBUSU1fRkxBR19UcmlnZ2VyOiBUSU0gVHJpZ2dlciBGbGFnCisgICogICAgIEBhcmcgVElNX0ZMQUdfQnJlYWs6IFRJTSBCcmVhayBGbGFnCisgICogICAgIEBhcmcgVElNX0ZMQUdfQ0MxT0Y6IFRJTSBDYXB0dXJlIENvbXBhcmUgMSBvdmVyY2FwdHVyZSBGbGFnCisgICogICAgIEBhcmcgVElNX0ZMQUdfQ0MyT0Y6IFRJTSBDYXB0dXJlIENvbXBhcmUgMiBvdmVyY2FwdHVyZSBGbGFnCisgICogICAgIEBhcmcgVElNX0ZMQUdfQ0MzT0Y6IFRJTSBDYXB0dXJlIENvbXBhcmUgMyBvdmVyY2FwdHVyZSBGbGFnCisgICogICAgIEBhcmcgVElNX0ZMQUdfQ0M0T0Y6IFRJTSBDYXB0dXJlIENvbXBhcmUgNCBvdmVyY2FwdHVyZSBGbGFnCisgICogQG5vdGUKKyAgKiAgIC0gVElNNiBhbmQgVElNNyBjYW4gaGF2ZSBvbmx5IG9uZSB1cGRhdGUgZmxhZy4gCisgICogICAtIFRJTTksIFRJTTEyIGFuZCBUSU0xNSBjYW4gaGF2ZSBvbmx5IFRJTV9GTEFHX1VwZGF0ZSwgVElNX0ZMQUdfQ0MxLAorICAqICAgICAgVElNX0ZMQUdfQ0MyIG9yIFRJTV9GTEFHX1RyaWdnZXIuIAorICAqICAgLSBUSU0xMCwgVElNMTEsIFRJTTEzLCBUSU0xNCwgVElNMTYgYW5kIFRJTTE3IGNhbiBoYXZlIFRJTV9GTEFHX1VwZGF0ZSBvciBUSU1fRkxBR19DQzEuICAgCisgICogICAtIFRJTV9GTEFHX0JyZWFrIGlzIHVzZWQgb25seSB3aXRoIFRJTTEsIFRJTTggYW5kIFRJTTE1LiAKKyAgKiAgIC0gVElNX0ZMQUdfQ09NIGlzIHVzZWQgb25seSB3aXRoIFRJTTEsIFRJTTgsIFRJTTE1LCBUSU0xNiBhbmQgVElNMTcuICAgIAorICAqIEByZXR2YWwgVGhlIG5ldyBzdGF0ZSBvZiBUSU1fRkxBRyAoU0VUIG9yIFJFU0VUKS4KKyAgKi8KK0ZsYWdTdGF0dXMgVElNX0dldEZsYWdTdGF0dXMoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9GTEFHKQoreyAKKyAgSVRTdGF0dXMgYml0c3RhdHVzID0gUkVTRVQ7ICAKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9BTExfUEVSSVBIKFRJTXgpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9HRVRfRkxBRyhUSU1fRkxBRykpOworICAKKyAgaWYgKChUSU14LT5TUiAmIFRJTV9GTEFHKSAhPSAodWludDE2X3QpUkVTRVQpCisgIHsKKyAgICBiaXRzdGF0dXMgPSBTRVQ7CisgIH0KKyAgZWxzZQorICB7CisgICAgYml0c3RhdHVzID0gUkVTRVQ7CisgIH0KKyAgcmV0dXJuIGJpdHN0YXR1czsKK30KKworLyoqCisgICogQGJyaWVmICBDbGVhcnMgdGhlIFRJTXgncyBwZW5kaW5nIGZsYWdzLgorICAqIEBwYXJhbSAgVElNeDogd2hlcmUgeCBjYW4gYmUgMSB0byAxNyB0byBzZWxlY3QgdGhlIFRJTSBwZXJpcGhlcmFsLgorICAqIEBwYXJhbSAgVElNX0ZMQUc6IHNwZWNpZmllcyB0aGUgZmxhZyBiaXQgdG8gY2xlYXIuCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYW55IGNvbWJpbmF0aW9uIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIFRJTV9GTEFHX1VwZGF0ZTogVElNIHVwZGF0ZSBGbGFnCisgICogICAgIEBhcmcgVElNX0ZMQUdfQ0MxOiBUSU0gQ2FwdHVyZSBDb21wYXJlIDEgRmxhZworICAqICAgICBAYXJnIFRJTV9GTEFHX0NDMjogVElNIENhcHR1cmUgQ29tcGFyZSAyIEZsYWcKKyAgKiAgICAgQGFyZyBUSU1fRkxBR19DQzM6IFRJTSBDYXB0dXJlIENvbXBhcmUgMyBGbGFnCisgICogICAgIEBhcmcgVElNX0ZMQUdfQ0M0OiBUSU0gQ2FwdHVyZSBDb21wYXJlIDQgRmxhZworICAqICAgICBAYXJnIFRJTV9GTEFHX0NPTTogVElNIENvbW11dGF0aW9uIEZsYWcKKyAgKiAgICAgQGFyZyBUSU1fRkxBR19UcmlnZ2VyOiBUSU0gVHJpZ2dlciBGbGFnCisgICogICAgIEBhcmcgVElNX0ZMQUdfQnJlYWs6IFRJTSBCcmVhayBGbGFnCisgICogICAgIEBhcmcgVElNX0ZMQUdfQ0MxT0Y6IFRJTSBDYXB0dXJlIENvbXBhcmUgMSBvdmVyY2FwdHVyZSBGbGFnCisgICogICAgIEBhcmcgVElNX0ZMQUdfQ0MyT0Y6IFRJTSBDYXB0dXJlIENvbXBhcmUgMiBvdmVyY2FwdHVyZSBGbGFnCisgICogICAgIEBhcmcgVElNX0ZMQUdfQ0MzT0Y6IFRJTSBDYXB0dXJlIENvbXBhcmUgMyBvdmVyY2FwdHVyZSBGbGFnCisgICogICAgIEBhcmcgVElNX0ZMQUdfQ0M0T0Y6IFRJTSBDYXB0dXJlIENvbXBhcmUgNCBvdmVyY2FwdHVyZSBGbGFnCisgICogQG5vdGUKKyAgKiAgIC0gVElNNiBhbmQgVElNNyBjYW4gaGF2ZSBvbmx5IG9uZSB1cGRhdGUgZmxhZy4gCisgICogICAtIFRJTTksIFRJTTEyIGFuZCBUSU0xNSBjYW4gaGF2ZSBvbmx5IFRJTV9GTEFHX1VwZGF0ZSwgVElNX0ZMQUdfQ0MxLAorICAqICAgICAgVElNX0ZMQUdfQ0MyIG9yIFRJTV9GTEFHX1RyaWdnZXIuIAorICAqICAgLSBUSU0xMCwgVElNMTEsIFRJTTEzLCBUSU0xNCwgVElNMTYgYW5kIFRJTTE3IGNhbiBoYXZlIFRJTV9GTEFHX1VwZGF0ZSBvciBUSU1fRkxBR19DQzEuICAgCisgICogICAtIFRJTV9GTEFHX0JyZWFrIGlzIHVzZWQgb25seSB3aXRoIFRJTTEsIFRJTTggYW5kIFRJTTE1LiAKKyAgKiAgIC0gVElNX0ZMQUdfQ09NIGlzIHVzZWQgb25seSB3aXRoIFRJTTEsIFRJTTgsIFRJTTE1LCBUSU0xNiBhbmQgVElNMTcuICAgCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFRJTV9DbGVhckZsYWcoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9GTEFHKQoreyAgCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19USU1fQUxMX1BFUklQSChUSU14KSk7CisgIGFzc2VydF9wYXJhbShJU19USU1fQ0xFQVJfRkxBRyhUSU1fRkxBRykpOworICAgCisgIC8qIENsZWFyIHRoZSBmbGFncyAqLworICBUSU14LT5TUiA9ICh1aW50MTZfdCl+VElNX0ZMQUc7Cit9CisKKy8qKgorICAqIEBicmllZiAgQ2hlY2tzIHdoZXRoZXIgdGhlIFRJTSBpbnRlcnJ1cHQgaGFzIG9jY3VycmVkIG9yIG5vdC4KKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlIDEgdG8gMTcgdG8gc2VsZWN0IHRoZSBUSU0gcGVyaXBoZXJhbC4KKyAgKiBAcGFyYW0gIFRJTV9JVDogc3BlY2lmaWVzIHRoZSBUSU0gaW50ZXJydXB0IHNvdXJjZSB0byBjaGVjay4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICAgIEBhcmcgVElNX0lUX1VwZGF0ZTogVElNIHVwZGF0ZSBJbnRlcnJ1cHQgc291cmNlCisgICogICAgIEBhcmcgVElNX0lUX0NDMTogVElNIENhcHR1cmUgQ29tcGFyZSAxIEludGVycnVwdCBzb3VyY2UKKyAgKiAgICAgQGFyZyBUSU1fSVRfQ0MyOiBUSU0gQ2FwdHVyZSBDb21wYXJlIDIgSW50ZXJydXB0IHNvdXJjZQorICAqICAgICBAYXJnIFRJTV9JVF9DQzM6IFRJTSBDYXB0dXJlIENvbXBhcmUgMyBJbnRlcnJ1cHQgc291cmNlCisgICogICAgIEBhcmcgVElNX0lUX0NDNDogVElNIENhcHR1cmUgQ29tcGFyZSA0IEludGVycnVwdCBzb3VyY2UKKyAgKiAgICAgQGFyZyBUSU1fSVRfQ09NOiBUSU0gQ29tbXV0YXRpb24gSW50ZXJydXB0IHNvdXJjZQorICAqICAgICBAYXJnIFRJTV9JVF9UcmlnZ2VyOiBUSU0gVHJpZ2dlciBJbnRlcnJ1cHQgc291cmNlCisgICogICAgIEBhcmcgVElNX0lUX0JyZWFrOiBUSU0gQnJlYWsgSW50ZXJydXB0IHNvdXJjZQorICAqIEBub3RlCisgICogICAtIFRJTTYgYW5kIFRJTTcgY2FuIGdlbmVyYXRlIG9ubHkgYW4gdXBkYXRlIGludGVycnVwdC4KKyAgKiAgIC0gVElNOSwgVElNMTIgYW5kIFRJTTE1IGNhbiBoYXZlIG9ubHkgVElNX0lUX1VwZGF0ZSwgVElNX0lUX0NDMSwKKyAgKiAgICAgIFRJTV9JVF9DQzIgb3IgVElNX0lUX1RyaWdnZXIuIAorICAqICAgLSBUSU0xMCwgVElNMTEsIFRJTTEzLCBUSU0xNCwgVElNMTYgYW5kIFRJTTE3IGNhbiBoYXZlIFRJTV9JVF9VcGRhdGUgb3IgVElNX0lUX0NDMS4gICAKKyAgKiAgIC0gVElNX0lUX0JyZWFrIGlzIHVzZWQgb25seSB3aXRoIFRJTTEsIFRJTTggYW5kIFRJTTE1LiAKKyAgKiAgIC0gVElNX0lUX0NPTSBpcyB1c2VkIG9ubHkgd2l0aCBUSU0xLCBUSU04LCBUSU0xNSwgVElNMTYgYW5kIFRJTTE3LiAgCisgICogQHJldHZhbCBUaGUgbmV3IHN0YXRlIG9mIHRoZSBUSU1fSVQoU0VUIG9yIFJFU0VUKS4KKyAgKi8KK0lUU3RhdHVzIFRJTV9HZXRJVFN0YXR1cyhUSU1fVHlwZURlZiogVElNeCwgdWludDE2X3QgVElNX0lUKQoreworICBJVFN0YXR1cyBiaXRzdGF0dXMgPSBSRVNFVDsgIAorICB1aW50MTZfdCBpdHN0YXR1cyA9IDB4MCwgaXRlbmFibGUgPSAweDA7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19USU1fQUxMX1BFUklQSChUSU14KSk7CisgIGFzc2VydF9wYXJhbShJU19USU1fR0VUX0lUKFRJTV9JVCkpOworICAgCisgIGl0c3RhdHVzID0gVElNeC0+U1IgJiBUSU1fSVQ7CisgIAorICBpdGVuYWJsZSA9IFRJTXgtPkRJRVIgJiBUSU1fSVQ7CisgIGlmICgoaXRzdGF0dXMgIT0gKHVpbnQxNl90KVJFU0VUKSAmJiAoaXRlbmFibGUgIT0gKHVpbnQxNl90KVJFU0VUKSkKKyAgeworICAgIGJpdHN0YXR1cyA9IFNFVDsKKyAgfQorICBlbHNlCisgIHsKKyAgICBiaXRzdGF0dXMgPSBSRVNFVDsKKyAgfQorICByZXR1cm4gYml0c3RhdHVzOworfQorCisvKioKKyAgKiBAYnJpZWYgIENsZWFycyB0aGUgVElNeCdzIGludGVycnVwdCBwZW5kaW5nIGJpdHMuCisgICogQHBhcmFtICBUSU14OiB3aGVyZSB4IGNhbiBiZSAxIHRvIDE3IHRvIHNlbGVjdCB0aGUgVElNIHBlcmlwaGVyYWwuCisgICogQHBhcmFtICBUSU1fSVQ6IHNwZWNpZmllcyB0aGUgcGVuZGluZyBiaXQgdG8gY2xlYXIuCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYW55IGNvbWJpbmF0aW9uIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIFRJTV9JVF9VcGRhdGU6IFRJTTEgdXBkYXRlIEludGVycnVwdCBzb3VyY2UKKyAgKiAgICAgQGFyZyBUSU1fSVRfQ0MxOiBUSU0gQ2FwdHVyZSBDb21wYXJlIDEgSW50ZXJydXB0IHNvdXJjZQorICAqICAgICBAYXJnIFRJTV9JVF9DQzI6IFRJTSBDYXB0dXJlIENvbXBhcmUgMiBJbnRlcnJ1cHQgc291cmNlCisgICogICAgIEBhcmcgVElNX0lUX0NDMzogVElNIENhcHR1cmUgQ29tcGFyZSAzIEludGVycnVwdCBzb3VyY2UKKyAgKiAgICAgQGFyZyBUSU1fSVRfQ0M0OiBUSU0gQ2FwdHVyZSBDb21wYXJlIDQgSW50ZXJydXB0IHNvdXJjZQorICAqICAgICBAYXJnIFRJTV9JVF9DT006IFRJTSBDb21tdXRhdGlvbiBJbnRlcnJ1cHQgc291cmNlCisgICogICAgIEBhcmcgVElNX0lUX1RyaWdnZXI6IFRJTSBUcmlnZ2VyIEludGVycnVwdCBzb3VyY2UKKyAgKiAgICAgQGFyZyBUSU1fSVRfQnJlYWs6IFRJTSBCcmVhayBJbnRlcnJ1cHQgc291cmNlCisgICogQG5vdGUKKyAgKiAgIC0gVElNNiBhbmQgVElNNyBjYW4gZ2VuZXJhdGUgb25seSBhbiB1cGRhdGUgaW50ZXJydXB0LgorICAqICAgLSBUSU05LCBUSU0xMiBhbmQgVElNMTUgY2FuIGhhdmUgb25seSBUSU1fSVRfVXBkYXRlLCBUSU1fSVRfQ0MxLAorICAqICAgICAgVElNX0lUX0NDMiBvciBUSU1fSVRfVHJpZ2dlci4gCisgICogICAtIFRJTTEwLCBUSU0xMSwgVElNMTMsIFRJTTE0LCBUSU0xNiBhbmQgVElNMTcgY2FuIGhhdmUgVElNX0lUX1VwZGF0ZSBvciBUSU1fSVRfQ0MxLiAgIAorICAqICAgLSBUSU1fSVRfQnJlYWsgaXMgdXNlZCBvbmx5IHdpdGggVElNMSwgVElNOCBhbmQgVElNMTUuIAorICAqICAgLSBUSU1fSVRfQ09NIGlzIHVzZWQgb25seSB3aXRoIFRJTTEsIFRJTTgsIFRJTTE1LCBUSU0xNiBhbmQgVElNMTcuICAgIAorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBUSU1fQ2xlYXJJVFBlbmRpbmdCaXQoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9JVCkKK3sKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9BTExfUEVSSVBIKFRJTXgpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9JVChUSU1fSVQpKTsKKyAgLyogQ2xlYXIgdGhlIElUIHBlbmRpbmcgQml0ICovCisgIFRJTXgtPlNSID0gKHVpbnQxNl90KX5USU1fSVQ7Cit9CisKKy8qKgorICAqIEBicmllZiAgQ29uZmlndXJlIHRoZSBUSTEgYXMgSW5wdXQuCisgICogQHBhcmFtICBUSU14OiB3aGVyZSB4IGNhbiBiZSAxIHRvIDE3IGV4Y2VwdCA2IGFuZCA3IHRvIHNlbGVjdCB0aGUgVElNIHBlcmlwaGVyYWwuCisgICogQHBhcmFtICBUSU1fSUNQb2xhcml0eSA6IFRoZSBJbnB1dCBQb2xhcml0eS4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICAgIEBhcmcgVElNX0lDUG9sYXJpdHlfUmlzaW5nCisgICogICAgIEBhcmcgVElNX0lDUG9sYXJpdHlfRmFsbGluZworICAqIEBwYXJhbSAgVElNX0lDU2VsZWN0aW9uOiBzcGVjaWZpZXMgdGhlIGlucHV0IHRvIGJlIHVzZWQuCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIFRJTV9JQ1NlbGVjdGlvbl9EaXJlY3RUSTogVElNIElucHV0IDEgaXMgc2VsZWN0ZWQgdG8gYmUgY29ubmVjdGVkIHRvIElDMS4KKyAgKiAgICAgQGFyZyBUSU1fSUNTZWxlY3Rpb25fSW5kaXJlY3RUSTogVElNIElucHV0IDEgaXMgc2VsZWN0ZWQgdG8gYmUgY29ubmVjdGVkIHRvIElDMi4KKyAgKiAgICAgQGFyZyBUSU1fSUNTZWxlY3Rpb25fVFJDOiBUSU0gSW5wdXQgMSBpcyBzZWxlY3RlZCB0byBiZSBjb25uZWN0ZWQgdG8gVFJDLgorICAqIEBwYXJhbSAgVElNX0lDRmlsdGVyOiBTcGVjaWZpZXMgdGhlIElucHV0IENhcHR1cmUgRmlsdGVyLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgbXVzdCBiZSBhIHZhbHVlIGJldHdlZW4gMHgwMCBhbmQgMHgwRi4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3N0YXRpYyB2b2lkIFRJMV9Db25maWcoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9JQ1BvbGFyaXR5LCB1aW50MTZfdCBUSU1fSUNTZWxlY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IFRJTV9JQ0ZpbHRlcikKK3sKKyAgdWludDE2X3QgdG1wY2NtcjEgPSAwLCB0bXBjY2VyID0gMDsKKyAgLyogRGlzYWJsZSB0aGUgQ2hhbm5lbCAxOiBSZXNldCB0aGUgQ0MxRSBCaXQgKi8KKyAgVElNeC0+Q0NFUiAmPSAodWludDE2X3QpfigodWludDE2X3QpVElNX0NDRVJfQ0MxRSk7CisgIHRtcGNjbXIxID0gVElNeC0+Q0NNUjE7CisgIHRtcGNjZXIgPSBUSU14LT5DQ0VSOworICAvKiBTZWxlY3QgdGhlIElucHV0IGFuZCBzZXQgdGhlIGZpbHRlciAqLworICB0bXBjY21yMSAmPSAodWludDE2X3QpKCgodWludDE2X3QpfigodWludDE2X3QpVElNX0NDTVIxX0NDMVMpKSAmICgodWludDE2X3QpfigodWludDE2X3QpVElNX0NDTVIxX0lDMUYpKSk7CisgIHRtcGNjbXIxIHw9ICh1aW50MTZfdCkoVElNX0lDU2VsZWN0aW9uIHwgKHVpbnQxNl90KShUSU1fSUNGaWx0ZXIgPDwgKHVpbnQxNl90KTQpKTsKKyAgCisgIGlmKChUSU14ID09IFRJTTEpIHx8IChUSU14ID09IFRJTTgpIHx8IChUSU14ID09IFRJTTIpIHx8IChUSU14ID09IFRJTTMpIHx8CisgICAgIChUSU14ID09IFRJTTQpIHx8KFRJTXggPT0gVElNNSkpCisgIHsKKyAgICAvKiBTZWxlY3QgdGhlIFBvbGFyaXR5IGFuZCBzZXQgdGhlIENDMUUgQml0ICovCisgICAgdG1wY2NlciAmPSAodWludDE2X3QpfigodWludDE2X3QpKFRJTV9DQ0VSX0NDMVApKTsKKyAgICB0bXBjY2VyIHw9ICh1aW50MTZfdCkoVElNX0lDUG9sYXJpdHkgfCAodWludDE2X3QpVElNX0NDRVJfQ0MxRSk7CisgIH0KKyAgZWxzZQorICB7CisgICAgLyogU2VsZWN0IHRoZSBQb2xhcml0eSBhbmQgc2V0IHRoZSBDQzFFIEJpdCAqLworICAgIHRtcGNjZXIgJj0gKHVpbnQxNl90KX4oKHVpbnQxNl90KShUSU1fQ0NFUl9DQzFQIHwgVElNX0NDRVJfQ0MxTlApKTsKKyAgICB0bXBjY2VyIHw9ICh1aW50MTZfdCkoVElNX0lDUG9sYXJpdHkgfCAodWludDE2X3QpVElNX0NDRVJfQ0MxRSk7CisgIH0KKworICAvKiBXcml0ZSB0byBUSU14IENDTVIxIGFuZCBDQ0VSIHJlZ2lzdGVycyAqLworICBUSU14LT5DQ01SMSA9IHRtcGNjbXIxOworICBUSU14LT5DQ0VSID0gdG1wY2NlcjsKK30KKworLyoqCisgICogQGJyaWVmICBDb25maWd1cmUgdGhlIFRJMiBhcyBJbnB1dC4KKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlIDEsIDIsIDMsIDQsIDUsIDgsIDksIDEyIG9yIDE1IHRvIHNlbGVjdCB0aGUgVElNIHBlcmlwaGVyYWwuCisgICogQHBhcmFtICBUSU1fSUNQb2xhcml0eSA6IFRoZSBJbnB1dCBQb2xhcml0eS4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICAgIEBhcmcgVElNX0lDUG9sYXJpdHlfUmlzaW5nCisgICogICAgIEBhcmcgVElNX0lDUG9sYXJpdHlfRmFsbGluZworICAqIEBwYXJhbSAgVElNX0lDU2VsZWN0aW9uOiBzcGVjaWZpZXMgdGhlIGlucHV0IHRvIGJlIHVzZWQuCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIFRJTV9JQ1NlbGVjdGlvbl9EaXJlY3RUSTogVElNIElucHV0IDIgaXMgc2VsZWN0ZWQgdG8gYmUgY29ubmVjdGVkIHRvIElDMi4KKyAgKiAgICAgQGFyZyBUSU1fSUNTZWxlY3Rpb25fSW5kaXJlY3RUSTogVElNIElucHV0IDIgaXMgc2VsZWN0ZWQgdG8gYmUgY29ubmVjdGVkIHRvIElDMS4KKyAgKiAgICAgQGFyZyBUSU1fSUNTZWxlY3Rpb25fVFJDOiBUSU0gSW5wdXQgMiBpcyBzZWxlY3RlZCB0byBiZSBjb25uZWN0ZWQgdG8gVFJDLgorICAqIEBwYXJhbSAgVElNX0lDRmlsdGVyOiBTcGVjaWZpZXMgdGhlIElucHV0IENhcHR1cmUgRmlsdGVyLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgbXVzdCBiZSBhIHZhbHVlIGJldHdlZW4gMHgwMCBhbmQgMHgwRi4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3N0YXRpYyB2b2lkIFRJMl9Db25maWcoVElNX1R5cGVEZWYqIFRJTXgsIHVpbnQxNl90IFRJTV9JQ1BvbGFyaXR5LCB1aW50MTZfdCBUSU1fSUNTZWxlY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IFRJTV9JQ0ZpbHRlcikKK3sKKyAgdWludDE2X3QgdG1wY2NtcjEgPSAwLCB0bXBjY2VyID0gMCwgdG1wID0gMDsKKyAgLyogRGlzYWJsZSB0aGUgQ2hhbm5lbCAyOiBSZXNldCB0aGUgQ0MyRSBCaXQgKi8KKyAgVElNeC0+Q0NFUiAmPSAodWludDE2X3QpfigodWludDE2X3QpVElNX0NDRVJfQ0MyRSk7CisgIHRtcGNjbXIxID0gVElNeC0+Q0NNUjE7CisgIHRtcGNjZXIgPSBUSU14LT5DQ0VSOworICB0bXAgPSAodWludDE2X3QpKFRJTV9JQ1BvbGFyaXR5IDw8IDQpOworICAvKiBTZWxlY3QgdGhlIElucHV0IGFuZCBzZXQgdGhlIGZpbHRlciAqLworICB0bXBjY21yMSAmPSAodWludDE2X3QpKCgodWludDE2X3QpfigodWludDE2X3QpVElNX0NDTVIxX0NDMlMpKSAmICgodWludDE2X3QpfigodWludDE2X3QpVElNX0NDTVIxX0lDMkYpKSk7CisgIHRtcGNjbXIxIHw9ICh1aW50MTZfdCkoVElNX0lDRmlsdGVyIDw8IDEyKTsKKyAgdG1wY2NtcjEgfD0gKHVpbnQxNl90KShUSU1fSUNTZWxlY3Rpb24gPDwgOCk7CisgIAorICBpZigoVElNeCA9PSBUSU0xKSB8fCAoVElNeCA9PSBUSU04KSB8fCAoVElNeCA9PSBUSU0yKSB8fCAoVElNeCA9PSBUSU0zKSB8fAorICAgICAoVElNeCA9PSBUSU00KSB8fChUSU14ID09IFRJTTUpKQorICB7CisgICAgLyogU2VsZWN0IHRoZSBQb2xhcml0eSBhbmQgc2V0IHRoZSBDQzJFIEJpdCAqLworICAgIHRtcGNjZXIgJj0gKHVpbnQxNl90KX4oKHVpbnQxNl90KShUSU1fQ0NFUl9DQzJQKSk7CisgICAgdG1wY2NlciB8PSAgKHVpbnQxNl90KSh0bXAgfCAodWludDE2X3QpVElNX0NDRVJfQ0MyRSk7CisgIH0KKyAgZWxzZQorICB7CisgICAgLyogU2VsZWN0IHRoZSBQb2xhcml0eSBhbmQgc2V0IHRoZSBDQzJFIEJpdCAqLworICAgIHRtcGNjZXIgJj0gKHVpbnQxNl90KX4oKHVpbnQxNl90KShUSU1fQ0NFUl9DQzJQIHwgVElNX0NDRVJfQ0MyTlApKTsKKyAgICB0bXBjY2VyIHw9ICh1aW50MTZfdCkoVElNX0lDUG9sYXJpdHkgfCAodWludDE2X3QpVElNX0NDRVJfQ0MyRSk7CisgIH0KKyAgCisgIC8qIFdyaXRlIHRvIFRJTXggQ0NNUjEgYW5kIENDRVIgcmVnaXN0ZXJzICovCisgIFRJTXgtPkNDTVIxID0gdG1wY2NtcjEgOworICBUSU14LT5DQ0VSID0gdG1wY2NlcjsKK30KKworLyoqCisgICogQGJyaWVmICBDb25maWd1cmUgdGhlIFRJMyBhcyBJbnB1dC4KKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlIDEsIDIsIDMsIDQsIDUgb3IgOCB0byBzZWxlY3QgdGhlIFRJTSBwZXJpcGhlcmFsLgorICAqIEBwYXJhbSAgVElNX0lDUG9sYXJpdHkgOiBUaGUgSW5wdXQgUG9sYXJpdHkuCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIFRJTV9JQ1BvbGFyaXR5X1Jpc2luZworICAqICAgICBAYXJnIFRJTV9JQ1BvbGFyaXR5X0ZhbGxpbmcKKyAgKiBAcGFyYW0gIFRJTV9JQ1NlbGVjdGlvbjogc3BlY2lmaWVzIHRoZSBpbnB1dCB0byBiZSB1c2VkLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBUSU1fSUNTZWxlY3Rpb25fRGlyZWN0VEk6IFRJTSBJbnB1dCAzIGlzIHNlbGVjdGVkIHRvIGJlIGNvbm5lY3RlZCB0byBJQzMuCisgICogICAgIEBhcmcgVElNX0lDU2VsZWN0aW9uX0luZGlyZWN0VEk6IFRJTSBJbnB1dCAzIGlzIHNlbGVjdGVkIHRvIGJlIGNvbm5lY3RlZCB0byBJQzQuCisgICogICAgIEBhcmcgVElNX0lDU2VsZWN0aW9uX1RSQzogVElNIElucHV0IDMgaXMgc2VsZWN0ZWQgdG8gYmUgY29ubmVjdGVkIHRvIFRSQy4KKyAgKiBAcGFyYW0gIFRJTV9JQ0ZpbHRlcjogU3BlY2lmaWVzIHRoZSBJbnB1dCBDYXB0dXJlIEZpbHRlci4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIG11c3QgYmUgYSB2YWx1ZSBiZXR3ZWVuIDB4MDAgYW5kIDB4MEYuCisgICogQHJldHZhbCBOb25lCisgICovCitzdGF0aWMgdm9pZCBUSTNfQ29uZmlnKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fSUNQb2xhcml0eSwgdWludDE2X3QgVElNX0lDU2VsZWN0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBUSU1fSUNGaWx0ZXIpCit7CisgIHVpbnQxNl90IHRtcGNjbXIyID0gMCwgdG1wY2NlciA9IDAsIHRtcCA9IDA7CisgIC8qIERpc2FibGUgdGhlIENoYW5uZWwgMzogUmVzZXQgdGhlIENDM0UgQml0ICovCisgIFRJTXgtPkNDRVIgJj0gKHVpbnQxNl90KX4oKHVpbnQxNl90KVRJTV9DQ0VSX0NDM0UpOworICB0bXBjY21yMiA9IFRJTXgtPkNDTVIyOworICB0bXBjY2VyID0gVElNeC0+Q0NFUjsKKyAgdG1wID0gKHVpbnQxNl90KShUSU1fSUNQb2xhcml0eSA8PCA4KTsKKyAgLyogU2VsZWN0IHRoZSBJbnB1dCBhbmQgc2V0IHRoZSBmaWx0ZXIgKi8KKyAgdG1wY2NtcjIgJj0gKHVpbnQxNl90KSgoKHVpbnQxNl90KX4oKHVpbnQxNl90KVRJTV9DQ01SMl9DQzNTKSkgJiAoKHVpbnQxNl90KX4oKHVpbnQxNl90KVRJTV9DQ01SMl9JQzNGKSkpOworICB0bXBjY21yMiB8PSAodWludDE2X3QpKFRJTV9JQ1NlbGVjdGlvbiB8ICh1aW50MTZfdCkoVElNX0lDRmlsdGVyIDw8ICh1aW50MTZfdCk0KSk7CisgICAgCisgIGlmKChUSU14ID09IFRJTTEpIHx8IChUSU14ID09IFRJTTgpIHx8IChUSU14ID09IFRJTTIpIHx8IChUSU14ID09IFRJTTMpIHx8CisgICAgIChUSU14ID09IFRJTTQpIHx8KFRJTXggPT0gVElNNSkpCisgIHsKKyAgICAvKiBTZWxlY3QgdGhlIFBvbGFyaXR5IGFuZCBzZXQgdGhlIENDM0UgQml0ICovCisgICAgdG1wY2NlciAmPSAodWludDE2X3QpfigodWludDE2X3QpKFRJTV9DQ0VSX0NDM1ApKTsKKyAgICB0bXBjY2VyIHw9ICh1aW50MTZfdCkodG1wIHwgKHVpbnQxNl90KVRJTV9DQ0VSX0NDM0UpOworICB9CisgIGVsc2UKKyAgeworICAgIC8qIFNlbGVjdCB0aGUgUG9sYXJpdHkgYW5kIHNldCB0aGUgQ0MzRSBCaXQgKi8KKyAgICB0bXBjY2VyICY9ICh1aW50MTZfdCl+KCh1aW50MTZfdCkoVElNX0NDRVJfQ0MzUCB8IFRJTV9DQ0VSX0NDM05QKSk7CisgICAgdG1wY2NlciB8PSAodWludDE2X3QpKFRJTV9JQ1BvbGFyaXR5IHwgKHVpbnQxNl90KVRJTV9DQ0VSX0NDM0UpOworICB9CisgIAorICAvKiBXcml0ZSB0byBUSU14IENDTVIyIGFuZCBDQ0VSIHJlZ2lzdGVycyAqLworICBUSU14LT5DQ01SMiA9IHRtcGNjbXIyOworICBUSU14LT5DQ0VSID0gdG1wY2NlcjsKK30KKworLyoqCisgICogQGJyaWVmICBDb25maWd1cmUgdGhlIFRJNCBhcyBJbnB1dC4KKyAgKiBAcGFyYW0gIFRJTXg6IHdoZXJlIHggY2FuIGJlIDEsIDIsIDMsIDQsIDUgb3IgOCB0byBzZWxlY3QgdGhlIFRJTSBwZXJpcGhlcmFsLgorICAqIEBwYXJhbSAgVElNX0lDUG9sYXJpdHkgOiBUaGUgSW5wdXQgUG9sYXJpdHkuCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIFRJTV9JQ1BvbGFyaXR5X1Jpc2luZworICAqICAgICBAYXJnIFRJTV9JQ1BvbGFyaXR5X0ZhbGxpbmcKKyAgKiBAcGFyYW0gIFRJTV9JQ1NlbGVjdGlvbjogc3BlY2lmaWVzIHRoZSBpbnB1dCB0byBiZSB1c2VkLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBUSU1fSUNTZWxlY3Rpb25fRGlyZWN0VEk6IFRJTSBJbnB1dCA0IGlzIHNlbGVjdGVkIHRvIGJlIGNvbm5lY3RlZCB0byBJQzQuCisgICogICAgIEBhcmcgVElNX0lDU2VsZWN0aW9uX0luZGlyZWN0VEk6IFRJTSBJbnB1dCA0IGlzIHNlbGVjdGVkIHRvIGJlIGNvbm5lY3RlZCB0byBJQzMuCisgICogICAgIEBhcmcgVElNX0lDU2VsZWN0aW9uX1RSQzogVElNIElucHV0IDQgaXMgc2VsZWN0ZWQgdG8gYmUgY29ubmVjdGVkIHRvIFRSQy4KKyAgKiBAcGFyYW0gIFRJTV9JQ0ZpbHRlcjogU3BlY2lmaWVzIHRoZSBJbnB1dCBDYXB0dXJlIEZpbHRlci4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIG11c3QgYmUgYSB2YWx1ZSBiZXR3ZWVuIDB4MDAgYW5kIDB4MEYuCisgICogQHJldHZhbCBOb25lCisgICovCitzdGF0aWMgdm9pZCBUSTRfQ29uZmlnKFRJTV9UeXBlRGVmKiBUSU14LCB1aW50MTZfdCBUSU1fSUNQb2xhcml0eSwgdWludDE2X3QgVElNX0lDU2VsZWN0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBUSU1fSUNGaWx0ZXIpCit7CisgIHVpbnQxNl90IHRtcGNjbXIyID0gMCwgdG1wY2NlciA9IDAsIHRtcCA9IDA7CisKKyAgIC8qIERpc2FibGUgdGhlIENoYW5uZWwgNDogUmVzZXQgdGhlIENDNEUgQml0ICovCisgIFRJTXgtPkNDRVIgJj0gKHVpbnQxNl90KX4oKHVpbnQxNl90KVRJTV9DQ0VSX0NDNEUpOworICB0bXBjY21yMiA9IFRJTXgtPkNDTVIyOworICB0bXBjY2VyID0gVElNeC0+Q0NFUjsKKyAgdG1wID0gKHVpbnQxNl90KShUSU1fSUNQb2xhcml0eSA8PCAxMik7CisgIC8qIFNlbGVjdCB0aGUgSW5wdXQgYW5kIHNldCB0aGUgZmlsdGVyICovCisgIHRtcGNjbXIyICY9ICh1aW50MTZfdCkoKHVpbnQxNl90KSh+KHVpbnQxNl90KVRJTV9DQ01SMl9DQzRTKSAmICgodWludDE2X3QpfigodWludDE2X3QpVElNX0NDTVIyX0lDNEYpKSk7CisgIHRtcGNjbXIyIHw9ICh1aW50MTZfdCkoVElNX0lDU2VsZWN0aW9uIDw8IDgpOworICB0bXBjY21yMiB8PSAodWludDE2X3QpKFRJTV9JQ0ZpbHRlciA8PCAxMik7CisgIAorICBpZigoVElNeCA9PSBUSU0xKSB8fCAoVElNeCA9PSBUSU04KSB8fCAoVElNeCA9PSBUSU0yKSB8fCAoVElNeCA9PSBUSU0zKSB8fAorICAgICAoVElNeCA9PSBUSU00KSB8fChUSU14ID09IFRJTTUpKQorICB7CisgICAgLyogU2VsZWN0IHRoZSBQb2xhcml0eSBhbmQgc2V0IHRoZSBDQzRFIEJpdCAqLworICAgIHRtcGNjZXIgJj0gKHVpbnQxNl90KX4oKHVpbnQxNl90KShUSU1fQ0NFUl9DQzRQKSk7CisgICAgdG1wY2NlciB8PSAodWludDE2X3QpKHRtcCB8ICh1aW50MTZfdClUSU1fQ0NFUl9DQzRFKTsKKyAgfQorICBlbHNlCisgIHsKKyAgICAvKiBTZWxlY3QgdGhlIFBvbGFyaXR5IGFuZCBzZXQgdGhlIENDNEUgQml0ICovCisgICAgdG1wY2NlciAmPSAodWludDE2X3QpfigodWludDE2X3QpKFRJTV9DQ0VSX0NDM1AgfCBUSU1fQ0NFUl9DQzROUCkpOworICAgIHRtcGNjZXIgfD0gKHVpbnQxNl90KShUSU1fSUNQb2xhcml0eSB8ICh1aW50MTZfdClUSU1fQ0NFUl9DQzRFKTsKKyAgfQorICAvKiBXcml0ZSB0byBUSU14IENDTVIyIGFuZCBDQ0VSIHJlZ2lzdGVycyAqLworICBUSU14LT5DQ01SMiA9IHRtcGNjbXIyOworICBUSU14LT5DQ0VSID0gdG1wY2NlcjsKK30KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCAyMDExIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL3N0X2Z3X2xpYi9zcmMvc3RtMzJmMTB4X3VzYXJ0LmMgYi9zdF9md19saWIvc3JjL3N0bTMyZjEweF91c2FydC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3OTRlYWUKLS0tIC9kZXYvbnVsbAorKysgYi9zdF9md19saWIvc3JjL3N0bTMyZjEweF91c2FydC5jCkBAIC0wLDAgKzEsMTA1OCBAQAorLyoqCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqIEBmaWxlICAgIHN0bTMyZjEweF91c2FydC5jCisgICogQGF1dGhvciAgTUNEIEFwcGxpY2F0aW9uIFRlYW0KKyAgKiBAdmVyc2lvbiBWMy41LjAKKyAgKiBAZGF0ZSAgICAxMS1NYXJjaC0yMDExCisgICogQGJyaWVmICAgVGhpcyBmaWxlIHByb3ZpZGVzIGFsbCB0aGUgVVNBUlQgZmlybXdhcmUgZnVuY3Rpb25zLgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKiBAYXR0ZW50aW9uCisgICoKKyAgKiBUSEUgUFJFU0VOVCBGSVJNV0FSRSBXSElDSCBJUyBGT1IgR1VJREFOQ0UgT05MWSBBSU1TIEFUIFBST1ZJRElORyBDVVNUT01FUlMKKyAgKiBXSVRIIENPRElORyBJTkZPUk1BVElPTiBSRUdBUkRJTkcgVEhFSVIgUFJPRFVDVFMgSU4gT1JERVIgRk9SIFRIRU0gVE8gU0FWRQorICAqIFRJTUUuIEFTIEEgUkVTVUxULCBTVE1JQ1JPRUxFQ1RST05JQ1MgU0hBTEwgTk9UIEJFIEhFTEQgTElBQkxFIEZPUiBBTlkKKyAgKiBESVJFQ1QsIElORElSRUNUIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBXSVRIIFJFU1BFQ1QgVE8gQU5ZIENMQUlNUyBBUklTSU5HCisgICogRlJPTSBUSEUgQ09OVEVOVCBPRiBTVUNIIEZJUk1XQVJFIEFORC9PUiBUSEUgVVNFIE1BREUgQlkgQ1VTVE9NRVJTIE9GIFRIRQorICAqIENPRElORyBJTkZPUk1BVElPTiBDT05UQUlORUQgSEVSRUlOIElOIENPTk5FQ1RJT04gV0lUSCBUSEVJUiBQUk9EVUNUUy4KKyAgKgorICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDT1BZUklHSFQgMjAxMSBTVE1pY3JvZWxlY3Ryb25pY3M8L2NlbnRlcj48L2gyPgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKi8KKworLyogSW5jbHVkZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyNpbmNsdWRlICJzdG0zMmYxMHhfdXNhcnQuaCIKKyNpbmNsdWRlICJzdG0zMmYxMHhfcmNjLmgiCisKKy8qKiBAYWRkdG9ncm91cCBTVE0zMkYxMHhfU3RkUGVyaXBoX0RyaXZlcgorICAqIEB7CisgICovCisKKy8qKiBAZGVmZ3JvdXAgVVNBUlQgCisgICogQGJyaWVmIFVTQVJUIGRyaXZlciBtb2R1bGVzCisgICogQHsKKyAgKi8KKworLyoqIEBkZWZncm91cCBVU0FSVF9Qcml2YXRlX1R5cGVzRGVmaW5pdGlvbnMKKyAgKiBAeworICAqLworCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIFVTQVJUX1ByaXZhdGVfRGVmaW5lcworICAqIEB7CisgICovCisKKyNkZWZpbmUgQ1IxX1VFX1NldCAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MjAwMCkgIC8qITwgVVNBUlQgRW5hYmxlIE1hc2sgKi8KKyNkZWZpbmUgQ1IxX1VFX1Jlc2V0ICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4REZGRikgIC8qITwgVVNBUlQgRGlzYWJsZSBNYXNrICovCisKKyNkZWZpbmUgQ1IxX1dBS0VfTWFzayAgICAgICAgICAgICAoKHVpbnQxNl90KTB4RjdGRikgIC8qITwgVVNBUlQgV2FrZVVwIE1ldGhvZCBNYXNrICovCisKKyNkZWZpbmUgQ1IxX1JXVV9TZXQgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMikgIC8qITwgVVNBUlQgbXV0ZSBtb2RlIEVuYWJsZSBNYXNrICovCisjZGVmaW5lIENSMV9SV1VfUmVzZXQgICAgICAgICAgICAgKCh1aW50MTZfdCkweEZGRkQpICAvKiE8IFVTQVJUIG11dGUgbW9kZSBFbmFibGUgTWFzayAqLworI2RlZmluZSBDUjFfU0JLX1NldCAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAxKSAgLyohPCBVU0FSVCBCcmVhayBDaGFyYWN0ZXIgc2VuZCBNYXNrICovCisjZGVmaW5lIENSMV9DTEVBUl9NYXNrICAgICAgICAgICAgKCh1aW50MTZfdCkweEU5RjMpICAvKiE8IFVTQVJUIENSMSBNYXNrICovCisjZGVmaW5lIENSMl9BZGRyZXNzX01hc2sgICAgICAgICAgKCh1aW50MTZfdCkweEZGRjApICAvKiE8IFVTQVJUIGFkZHJlc3MgTWFzayAqLworCisjZGVmaW5lIENSMl9MSU5FTl9TZXQgICAgICAgICAgICAgICgodWludDE2X3QpMHg0MDAwKSAgLyohPCBVU0FSVCBMSU4gRW5hYmxlIE1hc2sgKi8KKyNkZWZpbmUgQ1IyX0xJTkVOX1Jlc2V0ICAgICAgICAgICAgKCh1aW50MTZfdCkweEJGRkYpICAvKiE8IFVTQVJUIExJTiBEaXNhYmxlIE1hc2sgKi8KKworI2RlZmluZSBDUjJfTEJETF9NYXNrICAgICAgICAgICAgICgodWludDE2X3QpMHhGRkRGKSAgLyohPCBVU0FSVCBMSU4gQnJlYWsgZGV0ZWN0aW9uIE1hc2sgKi8KKyNkZWZpbmUgQ1IyX1NUT1BfQ0xFQVJfTWFzayAgICAgICAoKHVpbnQxNl90KTB4Q0ZGRikgIC8qITwgVVNBUlQgQ1IyIFNUT1AgQml0cyBNYXNrICovCisjZGVmaW5lIENSMl9DTE9DS19DTEVBUl9NYXNrICAgICAgKCh1aW50MTZfdCkweEYwRkYpICAvKiE8IFVTQVJUIENSMiBDbG9jayBNYXNrICovCisKKyNkZWZpbmUgQ1IzX1NDRU5fU2V0ICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAyMCkgIC8qITwgVVNBUlQgU0MgRW5hYmxlIE1hc2sgKi8KKyNkZWZpbmUgQ1IzX1NDRU5fUmVzZXQgICAgICAgICAgICAoKHVpbnQxNl90KTB4RkZERikgIC8qITwgVVNBUlQgU0MgRGlzYWJsZSBNYXNrICovCisKKyNkZWZpbmUgQ1IzX05BQ0tfU2V0ICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAxMCkgIC8qITwgVVNBUlQgU0MgTkFDSyBFbmFibGUgTWFzayAqLworI2RlZmluZSBDUjNfTkFDS19SZXNldCAgICAgICAgICAgICgodWludDE2X3QpMHhGRkVGKSAgLyohPCBVU0FSVCBTQyBOQUNLIERpc2FibGUgTWFzayAqLworCisjZGVmaW5lIENSM19IRFNFTF9TZXQgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDgpICAvKiE8IFVTQVJUIEhhbGYtRHVwbGV4IEVuYWJsZSBNYXNrICovCisjZGVmaW5lIENSM19IRFNFTF9SZXNldCAgICAgICAgICAgKCh1aW50MTZfdCkweEZGRjcpICAvKiE8IFVTQVJUIEhhbGYtRHVwbGV4IERpc2FibGUgTWFzayAqLworCisjZGVmaW5lIENSM19JUkxQX01hc2sgICAgICAgICAgICAgKCh1aW50MTZfdCkweEZGRkIpICAvKiE8IFVTQVJUIElyREEgTG93UG93ZXIgbW9kZSBNYXNrICovCisjZGVmaW5lIENSM19DTEVBUl9NYXNrICAgICAgICAgICAgKCh1aW50MTZfdCkweEZDRkYpICAvKiE8IFVTQVJUIENSMyBNYXNrICovCisKKyNkZWZpbmUgQ1IzX0lSRU5fU2V0ICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMikgIC8qITwgVVNBUlQgSXJEQSBFbmFibGUgTWFzayAqLworI2RlZmluZSBDUjNfSVJFTl9SZXNldCAgICAgICAgICAgICgodWludDE2X3QpMHhGRkZEKSAgLyohPCBVU0FSVCBJckRBIERpc2FibGUgTWFzayAqLworI2RlZmluZSBHVFBSX0xTQl9NYXNrICAgICAgICAgICAgICgodWludDE2X3QpMHgwMEZGKSAgLyohPCBHdWFyZCBUaW1lIFJlZ2lzdGVyIExTQiBNYXNrICovCisjZGVmaW5lIEdUUFJfTVNCX01hc2sgICAgICAgICAgICAgKCh1aW50MTZfdCkweEZGMDApICAvKiE8IEd1YXJkIFRpbWUgUmVnaXN0ZXIgTVNCIE1hc2sgKi8KKyNkZWZpbmUgSVRfTWFzayAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAxRikgIC8qITwgVVNBUlQgSW50ZXJydXB0IE1hc2sgKi8KKworLyogVVNBUlQgT3ZlclNhbXBsaW5nLTggTWFzayAqLworI2RlZmluZSBDUjFfT1ZFUjhfU2V0ICAgICAgICAgICAgICgodTE2KTB4ODAwMCkgIC8qIFVTQVJUIE9WRVI4IG1vZGUgRW5hYmxlIE1hc2sgKi8KKyNkZWZpbmUgQ1IxX09WRVI4X1Jlc2V0ICAgICAgICAgICAoKHUxNikweDdGRkYpICAvKiBVU0FSVCBPVkVSOCBtb2RlIERpc2FibGUgTWFzayAqLworCisvKiBVU0FSVCBPbmUgQml0IFNhbXBsaW5nIE1hc2sgKi8KKyNkZWZpbmUgQ1IzX09ORUJJVEVfU2V0ICAgICAgICAgICAoKHUxNikweDA4MDApICAvKiBVU0FSVCBPTkVCSVRFIG1vZGUgRW5hYmxlIE1hc2sgKi8KKyNkZWZpbmUgQ1IzX09ORUJJVEVfUmVzZXQgICAgICAgICAoKHUxNikweEY3RkYpICAvKiBVU0FSVCBPTkVCSVRFIG1vZGUgRGlzYWJsZSBNYXNrICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgVVNBUlRfUHJpdmF0ZV9NYWNyb3MKKyAgKiBAeworICAqLworCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIFVTQVJUX1ByaXZhdGVfVmFyaWFibGVzCisgICogQHsKKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBkZWZncm91cCBVU0FSVF9Qcml2YXRlX0Z1bmN0aW9uUHJvdG90eXBlcworICAqIEB7CisgICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgVVNBUlRfUHJpdmF0ZV9GdW5jdGlvbnMKKyAgKiBAeworICAqLworCisvKioKKyAgKiBAYnJpZWYgIERlaW5pdGlhbGl6ZXMgdGhlIFVTQVJUeCBwZXJpcGhlcmFsIHJlZ2lzdGVycyB0byB0aGVpciBkZWZhdWx0IHJlc2V0IHZhbHVlcy4KKyAgKiBAcGFyYW0gIFVTQVJUeDogU2VsZWN0IHRoZSBVU0FSVCBvciB0aGUgVUFSVCBwZXJpcGhlcmFsLiAKKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6IAorICAqICAgICAgVVNBUlQxLCBVU0FSVDIsIFVTQVJUMywgVUFSVDQgb3IgVUFSVDUuCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFVTQVJUX0RlSW5pdChVU0FSVF9UeXBlRGVmKiBVU0FSVHgpCit7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19VU0FSVF9BTExfUEVSSVBIKFVTQVJUeCkpOworCisgIGlmIChVU0FSVHggPT0gVVNBUlQxKQorICB7CisgICAgUkNDX0FQQjJQZXJpcGhSZXNldENtZChSQ0NfQVBCMlBlcmlwaF9VU0FSVDEsIEVOQUJMRSk7CisgICAgUkNDX0FQQjJQZXJpcGhSZXNldENtZChSQ0NfQVBCMlBlcmlwaF9VU0FSVDEsIERJU0FCTEUpOworICB9CisgIGVsc2UgaWYgKFVTQVJUeCA9PSBVU0FSVDIpCisgIHsKKyAgICBSQ0NfQVBCMVBlcmlwaFJlc2V0Q21kKFJDQ19BUEIxUGVyaXBoX1VTQVJUMiwgRU5BQkxFKTsKKyAgICBSQ0NfQVBCMVBlcmlwaFJlc2V0Q21kKFJDQ19BUEIxUGVyaXBoX1VTQVJUMiwgRElTQUJMRSk7CisgIH0KKyAgZWxzZSBpZiAoVVNBUlR4ID09IFVTQVJUMykKKyAgeworICAgIFJDQ19BUEIxUGVyaXBoUmVzZXRDbWQoUkNDX0FQQjFQZXJpcGhfVVNBUlQzLCBFTkFCTEUpOworICAgIFJDQ19BUEIxUGVyaXBoUmVzZXRDbWQoUkNDX0FQQjFQZXJpcGhfVVNBUlQzLCBESVNBQkxFKTsKKyAgfSAgICAKKyAgZWxzZSBpZiAoVVNBUlR4ID09IFVBUlQ0KQorICB7CisgICAgUkNDX0FQQjFQZXJpcGhSZXNldENtZChSQ0NfQVBCMVBlcmlwaF9VQVJUNCwgRU5BQkxFKTsKKyAgICBSQ0NfQVBCMVBlcmlwaFJlc2V0Q21kKFJDQ19BUEIxUGVyaXBoX1VBUlQ0LCBESVNBQkxFKTsKKyAgfSAgICAKKyAgZWxzZQorICB7CisgICAgaWYgKFVTQVJUeCA9PSBVQVJUNSkKKyAgICB7IAorICAgICAgUkNDX0FQQjFQZXJpcGhSZXNldENtZChSQ0NfQVBCMVBlcmlwaF9VQVJUNSwgRU5BQkxFKTsKKyAgICAgIFJDQ19BUEIxUGVyaXBoUmVzZXRDbWQoUkNDX0FQQjFQZXJpcGhfVUFSVDUsIERJU0FCTEUpOworICAgIH0KKyAgfQorfQorCisvKioKKyAgKiBAYnJpZWYgIEluaXRpYWxpemVzIHRoZSBVU0FSVHggcGVyaXBoZXJhbCBhY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmllZAorICAqICAgICAgICAgcGFyYW1ldGVycyBpbiB0aGUgVVNBUlRfSW5pdFN0cnVjdCAuCisgICogQHBhcmFtICBVU0FSVHg6IFNlbGVjdCB0aGUgVVNBUlQgb3IgdGhlIFVBUlQgcGVyaXBoZXJhbC4gCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgVVNBUlQxLCBVU0FSVDIsIFVTQVJUMywgVUFSVDQgb3IgVUFSVDUuCisgICogQHBhcmFtICBVU0FSVF9Jbml0U3RydWN0OiBwb2ludGVyIHRvIGEgVVNBUlRfSW5pdFR5cGVEZWYgc3RydWN0dXJlCisgICogICAgICAgICB0aGF0IGNvbnRhaW5zIHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZvciB0aGUgc3BlY2lmaWVkIFVTQVJUIAorICAqICAgICAgICAgcGVyaXBoZXJhbC4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgVVNBUlRfSW5pdChVU0FSVF9UeXBlRGVmKiBVU0FSVHgsIFVTQVJUX0luaXRUeXBlRGVmKiBVU0FSVF9Jbml0U3RydWN0KQoreworICB1aW50MzJfdCB0bXByZWcgPSAweDAwLCBhcGJjbG9jayA9IDB4MDA7CisgIHVpbnQzMl90IGludGVnZXJkaXZpZGVyID0gMHgwMDsKKyAgdWludDMyX3QgZnJhY3Rpb25hbGRpdmlkZXIgPSAweDAwOworICB1aW50MzJfdCB1c2FydHhiYXNlID0gMDsKKyAgUkNDX0Nsb2Nrc1R5cGVEZWYgUkNDX0Nsb2Nrc1N0YXR1czsKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX1VTQVJUX0FMTF9QRVJJUEgoVVNBUlR4KSk7CisgIGFzc2VydF9wYXJhbShJU19VU0FSVF9CQVVEUkFURShVU0FSVF9Jbml0U3RydWN0LT5VU0FSVF9CYXVkUmF0ZSkpOyAgCisgIGFzc2VydF9wYXJhbShJU19VU0FSVF9XT1JEX0xFTkdUSChVU0FSVF9Jbml0U3RydWN0LT5VU0FSVF9Xb3JkTGVuZ3RoKSk7CisgIGFzc2VydF9wYXJhbShJU19VU0FSVF9TVE9QQklUUyhVU0FSVF9Jbml0U3RydWN0LT5VU0FSVF9TdG9wQml0cykpOworICBhc3NlcnRfcGFyYW0oSVNfVVNBUlRfUEFSSVRZKFVTQVJUX0luaXRTdHJ1Y3QtPlVTQVJUX1Bhcml0eSkpOworICBhc3NlcnRfcGFyYW0oSVNfVVNBUlRfTU9ERShVU0FSVF9Jbml0U3RydWN0LT5VU0FSVF9Nb2RlKSk7CisgIGFzc2VydF9wYXJhbShJU19VU0FSVF9IQVJEV0FSRV9GTE9XX0NPTlRST0woVVNBUlRfSW5pdFN0cnVjdC0+VVNBUlRfSGFyZHdhcmVGbG93Q29udHJvbCkpOworICAvKiBUaGUgaGFyZHdhcmUgZmxvdyBjb250cm9sIGlzIGF2YWlsYWJsZSBvbmx5IGZvciBVU0FSVDEsIFVTQVJUMiBhbmQgVVNBUlQzICovCisgIGlmIChVU0FSVF9Jbml0U3RydWN0LT5VU0FSVF9IYXJkd2FyZUZsb3dDb250cm9sICE9IFVTQVJUX0hhcmR3YXJlRmxvd0NvbnRyb2xfTm9uZSkKKyAgeworICAgIGFzc2VydF9wYXJhbShJU19VU0FSVF8xMjNfUEVSSVBIKFVTQVJUeCkpOworICB9CisKKyAgdXNhcnR4YmFzZSA9ICh1aW50MzJfdClVU0FSVHg7CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBVU0FSVCBDUjIgQ29uZmlndXJhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisgIHRtcHJlZyA9IFVTQVJUeC0+Q1IyOworICAvKiBDbGVhciBTVE9QWzEzOjEyXSBiaXRzICovCisgIHRtcHJlZyAmPSBDUjJfU1RPUF9DTEVBUl9NYXNrOworICAvKiBDb25maWd1cmUgdGhlIFVTQVJUIFN0b3AgQml0cywgQ2xvY2ssIENQT0wsIENQSEEgYW5kIExhc3RCaXQgLS0tLS0tLS0tLS0tKi8KKyAgLyogU2V0IFNUT1BbMTM6MTJdIGJpdHMgYWNjb3JkaW5nIHRvIFVTQVJUX1N0b3BCaXRzIHZhbHVlICovCisgIHRtcHJlZyB8PSAodWludDMyX3QpVVNBUlRfSW5pdFN0cnVjdC0+VVNBUlRfU3RvcEJpdHM7CisgIAorICAvKiBXcml0ZSB0byBVU0FSVCBDUjIgKi8KKyAgVVNBUlR4LT5DUjIgPSAodWludDE2X3QpdG1wcmVnOworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gVVNBUlQgQ1IxIENvbmZpZ3VyYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworICB0bXByZWcgPSBVU0FSVHgtPkNSMTsKKyAgLyogQ2xlYXIgTSwgUENFLCBQUywgVEUgYW5kIFJFIGJpdHMgKi8KKyAgdG1wcmVnICY9IENSMV9DTEVBUl9NYXNrOworICAvKiBDb25maWd1cmUgdGhlIFVTQVJUIFdvcmQgTGVuZ3RoLCBQYXJpdHkgYW5kIG1vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAgLyogU2V0IHRoZSBNIGJpdHMgYWNjb3JkaW5nIHRvIFVTQVJUX1dvcmRMZW5ndGggdmFsdWUgKi8KKyAgLyogU2V0IFBDRSBhbmQgUFMgYml0cyBhY2NvcmRpbmcgdG8gVVNBUlRfUGFyaXR5IHZhbHVlICovCisgIC8qIFNldCBURSBhbmQgUkUgYml0cyBhY2NvcmRpbmcgdG8gVVNBUlRfTW9kZSB2YWx1ZSAqLworICB0bXByZWcgfD0gKHVpbnQzMl90KVVTQVJUX0luaXRTdHJ1Y3QtPlVTQVJUX1dvcmRMZW5ndGggfCBVU0FSVF9Jbml0U3RydWN0LT5VU0FSVF9QYXJpdHkgfAorICAgICAgICAgICAgVVNBUlRfSW5pdFN0cnVjdC0+VVNBUlRfTW9kZTsKKyAgLyogV3JpdGUgdG8gVVNBUlQgQ1IxICovCisgIFVTQVJUeC0+Q1IxID0gKHVpbnQxNl90KXRtcHJlZzsKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFVTQVJUIENSMyBDb25maWd1cmF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gIAorICB0bXByZWcgPSBVU0FSVHgtPkNSMzsKKyAgLyogQ2xlYXIgQ1RTRSBhbmQgUlRTRSBiaXRzICovCisgIHRtcHJlZyAmPSBDUjNfQ0xFQVJfTWFzazsKKyAgLyogQ29uZmlndXJlIHRoZSBVU0FSVCBIRkMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisgIC8qIFNldCBDVFNFIGFuZCBSVFNFIGJpdHMgYWNjb3JkaW5nIHRvIFVTQVJUX0hhcmR3YXJlRmxvd0NvbnRyb2wgdmFsdWUgKi8KKyAgdG1wcmVnIHw9IFVTQVJUX0luaXRTdHJ1Y3QtPlVTQVJUX0hhcmR3YXJlRmxvd0NvbnRyb2w7CisgIC8qIFdyaXRlIHRvIFVTQVJUIENSMyAqLworICBVU0FSVHgtPkNSMyA9ICh1aW50MTZfdCl0bXByZWc7CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBVU0FSVCBCUlIgQ29uZmlndXJhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisgIC8qIENvbmZpZ3VyZSB0aGUgVVNBUlQgQmF1ZCBSYXRlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworICBSQ0NfR2V0Q2xvY2tzRnJlcSgmUkNDX0Nsb2Nrc1N0YXR1cyk7CisgIGlmICh1c2FydHhiYXNlID09IFVTQVJUMV9CQVNFKQorICB7CisgICAgYXBiY2xvY2sgPSBSQ0NfQ2xvY2tzU3RhdHVzLlBDTEsyX0ZyZXF1ZW5jeTsKKyAgfQorICBlbHNlCisgIHsKKyAgICBhcGJjbG9jayA9IFJDQ19DbG9ja3NTdGF0dXMuUENMSzFfRnJlcXVlbmN5OworICB9CisgIAorICAvKiBEZXRlcm1pbmUgdGhlIGludGVnZXIgcGFydCAqLworICBpZiAoKFVTQVJUeC0+Q1IxICYgQ1IxX09WRVI4X1NldCkgIT0gMCkKKyAgeworICAgIC8qIEludGVnZXIgcGFydCBjb21wdXRpbmcgaW4gY2FzZSBPdmVyc2FtcGxpbmcgbW9kZSBpcyA4IFNhbXBsZXMgKi8KKyAgICBpbnRlZ2VyZGl2aWRlciA9ICgoMjUgKiBhcGJjbG9jaykgLyAoMiAqIChVU0FSVF9Jbml0U3RydWN0LT5VU0FSVF9CYXVkUmF0ZSkpKTsgICAgCisgIH0KKyAgZWxzZSAvKiBpZiAoKFVTQVJUeC0+Q1IxICYgQ1IxX09WRVI4X1NldCkgPT0gMCkgKi8KKyAgeworICAgIC8qIEludGVnZXIgcGFydCBjb21wdXRpbmcgaW4gY2FzZSBPdmVyc2FtcGxpbmcgbW9kZSBpcyAxNiBTYW1wbGVzICovCisgICAgaW50ZWdlcmRpdmlkZXIgPSAoKDI1ICogYXBiY2xvY2spIC8gKDQgKiAoVVNBUlRfSW5pdFN0cnVjdC0+VVNBUlRfQmF1ZFJhdGUpKSk7ICAgIAorICB9CisgIHRtcHJlZyA9IChpbnRlZ2VyZGl2aWRlciAvIDEwMCkgPDwgNDsKKworICAvKiBEZXRlcm1pbmUgdGhlIGZyYWN0aW9uYWwgcGFydCAqLworICBmcmFjdGlvbmFsZGl2aWRlciA9IGludGVnZXJkaXZpZGVyIC0gKDEwMCAqICh0bXByZWcgPj4gNCkpOworCisgIC8qIEltcGxlbWVudCB0aGUgZnJhY3Rpb25hbCBwYXJ0IGluIHRoZSByZWdpc3RlciAqLworICBpZiAoKFVTQVJUeC0+Q1IxICYgQ1IxX09WRVI4X1NldCkgIT0gMCkKKyAgeworICAgIHRtcHJlZyB8PSAoKCgoZnJhY3Rpb25hbGRpdmlkZXIgKiA4KSArIDUwKSAvIDEwMCkpICYgKCh1aW50OF90KTB4MDcpOworICB9CisgIGVsc2UgLyogaWYgKChVU0FSVHgtPkNSMSAmIENSMV9PVkVSOF9TZXQpID09IDApICovCisgIHsKKyAgICB0bXByZWcgfD0gKCgoKGZyYWN0aW9uYWxkaXZpZGVyICogMTYpICsgNTApIC8gMTAwKSkgJiAoKHVpbnQ4X3QpMHgwRik7CisgIH0KKyAgCisgIC8qIFdyaXRlIHRvIFVTQVJUIEJSUiAqLworICBVU0FSVHgtPkJSUiA9ICh1aW50MTZfdCl0bXByZWc7Cit9CisKKy8qKgorICAqIEBicmllZiAgRmlsbHMgZWFjaCBVU0FSVF9Jbml0U3RydWN0IG1lbWJlciB3aXRoIGl0cyBkZWZhdWx0IHZhbHVlLgorICAqIEBwYXJhbSAgVVNBUlRfSW5pdFN0cnVjdDogcG9pbnRlciB0byBhIFVTQVJUX0luaXRUeXBlRGVmIHN0cnVjdHVyZQorICAqICAgICAgICAgd2hpY2ggd2lsbCBiZSBpbml0aWFsaXplZC4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgVVNBUlRfU3RydWN0SW5pdChVU0FSVF9Jbml0VHlwZURlZiogVVNBUlRfSW5pdFN0cnVjdCkKK3sKKyAgLyogVVNBUlRfSW5pdFN0cnVjdCBtZW1iZXJzIGRlZmF1bHQgdmFsdWUgKi8KKyAgVVNBUlRfSW5pdFN0cnVjdC0+VVNBUlRfQmF1ZFJhdGUgPSA5NjAwOworICBVU0FSVF9Jbml0U3RydWN0LT5VU0FSVF9Xb3JkTGVuZ3RoID0gVVNBUlRfV29yZExlbmd0aF84YjsKKyAgVVNBUlRfSW5pdFN0cnVjdC0+VVNBUlRfU3RvcEJpdHMgPSBVU0FSVF9TdG9wQml0c18xOworICBVU0FSVF9Jbml0U3RydWN0LT5VU0FSVF9QYXJpdHkgPSBVU0FSVF9QYXJpdHlfTm8gOworICBVU0FSVF9Jbml0U3RydWN0LT5VU0FSVF9Nb2RlID0gVVNBUlRfTW9kZV9SeCB8IFVTQVJUX01vZGVfVHg7CisgIFVTQVJUX0luaXRTdHJ1Y3QtPlVTQVJUX0hhcmR3YXJlRmxvd0NvbnRyb2wgPSBVU0FSVF9IYXJkd2FyZUZsb3dDb250cm9sX05vbmU7ICAKK30KKworLyoqCisgICogQGJyaWVmICBJbml0aWFsaXplcyB0aGUgVVNBUlR4IHBlcmlwaGVyYWwgQ2xvY2sgYWNjb3JkaW5nIHRvIHRoZSAKKyAgKiAgICAgICAgICBzcGVjaWZpZWQgcGFyYW1ldGVycyBpbiB0aGUgVVNBUlRfQ2xvY2tJbml0U3RydWN0IC4KKyAgKiBAcGFyYW0gIFVTQVJUeDogd2hlcmUgeCBjYW4gYmUgMSwgMiwgMyB0byBzZWxlY3QgdGhlIFVTQVJUIHBlcmlwaGVyYWwuCisgICogQHBhcmFtICBVU0FSVF9DbG9ja0luaXRTdHJ1Y3Q6IHBvaW50ZXIgdG8gYSBVU0FSVF9DbG9ja0luaXRUeXBlRGVmCisgICogICAgICAgICBzdHJ1Y3R1cmUgdGhhdCBjb250YWlucyB0aGUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBmb3IgdGhlIHNwZWNpZmllZCAKKyAgKiAgICAgICAgIFVTQVJUIHBlcmlwaGVyYWwuICAKKyAgKiBAbm90ZSBUaGUgU21hcnQgQ2FyZCBhbmQgU3luY2hyb25vdXMgbW9kZXMgYXJlIG5vdCBhdmFpbGFibGUgZm9yIFVBUlQ0IGFuZCBVQVJUNS4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgVVNBUlRfQ2xvY2tJbml0KFVTQVJUX1R5cGVEZWYqIFVTQVJUeCwgVVNBUlRfQ2xvY2tJbml0VHlwZURlZiogVVNBUlRfQ2xvY2tJbml0U3RydWN0KQoreworICB1aW50MzJfdCB0bXByZWcgPSAweDAwOworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfVVNBUlRfMTIzX1BFUklQSChVU0FSVHgpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX1VTQVJUX0NMT0NLKFVTQVJUX0Nsb2NrSW5pdFN0cnVjdC0+VVNBUlRfQ2xvY2spKTsKKyAgYXNzZXJ0X3BhcmFtKElTX1VTQVJUX0NQT0woVVNBUlRfQ2xvY2tJbml0U3RydWN0LT5VU0FSVF9DUE9MKSk7CisgIGFzc2VydF9wYXJhbShJU19VU0FSVF9DUEhBKFVTQVJUX0Nsb2NrSW5pdFN0cnVjdC0+VVNBUlRfQ1BIQSkpOworICBhc3NlcnRfcGFyYW0oSVNfVVNBUlRfTEFTVEJJVChVU0FSVF9DbG9ja0luaXRTdHJ1Y3QtPlVTQVJUX0xhc3RCaXQpKTsKKyAgCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gVVNBUlQgQ1IyIENvbmZpZ3VyYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworICB0bXByZWcgPSBVU0FSVHgtPkNSMjsKKyAgLyogQ2xlYXIgQ0xLRU4sIENQT0wsIENQSEEgYW5kIExCQ0wgYml0cyAqLworICB0bXByZWcgJj0gQ1IyX0NMT0NLX0NMRUFSX01hc2s7CisgIC8qIENvbmZpZ3VyZSB0aGUgVVNBUlQgQ2xvY2ssIENQT0wsIENQSEEgYW5kIExhc3RCaXQgLS0tLS0tLS0tLS0tKi8KKyAgLyogU2V0IENMS0VOIGJpdCBhY2NvcmRpbmcgdG8gVVNBUlRfQ2xvY2sgdmFsdWUgKi8KKyAgLyogU2V0IENQT0wgYml0IGFjY29yZGluZyB0byBVU0FSVF9DUE9MIHZhbHVlICovCisgIC8qIFNldCBDUEhBIGJpdCBhY2NvcmRpbmcgdG8gVVNBUlRfQ1BIQSB2YWx1ZSAqLworICAvKiBTZXQgTEJDTCBiaXQgYWNjb3JkaW5nIHRvIFVTQVJUX0xhc3RCaXQgdmFsdWUgKi8KKyAgdG1wcmVnIHw9ICh1aW50MzJfdClVU0FSVF9DbG9ja0luaXRTdHJ1Y3QtPlVTQVJUX0Nsb2NrIHwgVVNBUlRfQ2xvY2tJbml0U3RydWN0LT5VU0FSVF9DUE9MIHwgCisgICAgICAgICAgICAgICAgIFVTQVJUX0Nsb2NrSW5pdFN0cnVjdC0+VVNBUlRfQ1BIQSB8IFVTQVJUX0Nsb2NrSW5pdFN0cnVjdC0+VVNBUlRfTGFzdEJpdDsKKyAgLyogV3JpdGUgdG8gVVNBUlQgQ1IyICovCisgIFVTQVJUeC0+Q1IyID0gKHVpbnQxNl90KXRtcHJlZzsKK30KKworLyoqCisgICogQGJyaWVmICBGaWxscyBlYWNoIFVTQVJUX0Nsb2NrSW5pdFN0cnVjdCBtZW1iZXIgd2l0aCBpdHMgZGVmYXVsdCB2YWx1ZS4KKyAgKiBAcGFyYW0gIFVTQVJUX0Nsb2NrSW5pdFN0cnVjdDogcG9pbnRlciB0byBhIFVTQVJUX0Nsb2NrSW5pdFR5cGVEZWYKKyAgKiAgICAgICAgIHN0cnVjdHVyZSB3aGljaCB3aWxsIGJlIGluaXRpYWxpemVkLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBVU0FSVF9DbG9ja1N0cnVjdEluaXQoVVNBUlRfQ2xvY2tJbml0VHlwZURlZiogVVNBUlRfQ2xvY2tJbml0U3RydWN0KQoreworICAvKiBVU0FSVF9DbG9ja0luaXRTdHJ1Y3QgbWVtYmVycyBkZWZhdWx0IHZhbHVlICovCisgIFVTQVJUX0Nsb2NrSW5pdFN0cnVjdC0+VVNBUlRfQ2xvY2sgPSBVU0FSVF9DbG9ja19EaXNhYmxlOworICBVU0FSVF9DbG9ja0luaXRTdHJ1Y3QtPlVTQVJUX0NQT0wgPSBVU0FSVF9DUE9MX0xvdzsKKyAgVVNBUlRfQ2xvY2tJbml0U3RydWN0LT5VU0FSVF9DUEhBID0gVVNBUlRfQ1BIQV8xRWRnZTsKKyAgVVNBUlRfQ2xvY2tJbml0U3RydWN0LT5VU0FSVF9MYXN0Qml0ID0gVVNBUlRfTGFzdEJpdF9EaXNhYmxlOworfQorCisvKioKKyAgKiBAYnJpZWYgIEVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIHNwZWNpZmllZCBVU0FSVCBwZXJpcGhlcmFsLgorICAqIEBwYXJhbSAgVVNBUlR4OiBTZWxlY3QgdGhlIFVTQVJUIG9yIHRoZSBVQVJUIHBlcmlwaGVyYWwuIAorICAqICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgICAgICAgVVNBUlQxLCBVU0FSVDIsIFVTQVJUMywgVUFSVDQgb3IgVUFSVDUuCisgICogQHBhcmFtICBOZXdTdGF0ZTogbmV3IHN0YXRlIG9mIHRoZSBVU0FSVHggcGVyaXBoZXJhbC4KKyAgKiAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZTogRU5BQkxFIG9yIERJU0FCTEUuCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFVTQVJUX0NtZChVU0FSVF9UeXBlRGVmKiBVU0FSVHgsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSkKK3sKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX1VTQVJUX0FMTF9QRVJJUEgoVVNBUlR4KSk7CisgIGFzc2VydF9wYXJhbShJU19GVU5DVElPTkFMX1NUQVRFKE5ld1N0YXRlKSk7CisgIAorICBpZiAoTmV3U3RhdGUgIT0gRElTQUJMRSkKKyAgeworICAgIC8qIEVuYWJsZSB0aGUgc2VsZWN0ZWQgVVNBUlQgYnkgc2V0dGluZyB0aGUgVUUgYml0IGluIHRoZSBDUjEgcmVnaXN0ZXIgKi8KKyAgICBVU0FSVHgtPkNSMSB8PSBDUjFfVUVfU2V0OworICB9CisgIGVsc2UKKyAgeworICAgIC8qIERpc2FibGUgdGhlIHNlbGVjdGVkIFVTQVJUIGJ5IGNsZWFyaW5nIHRoZSBVRSBiaXQgaW4gdGhlIENSMSByZWdpc3RlciAqLworICAgIFVTQVJUeC0+Q1IxICY9IENSMV9VRV9SZXNldDsKKyAgfQorfQorCisvKioKKyAgKiBAYnJpZWYgIEVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIHNwZWNpZmllZCBVU0FSVCBpbnRlcnJ1cHRzLgorICAqIEBwYXJhbSAgVVNBUlR4OiBTZWxlY3QgdGhlIFVTQVJUIG9yIHRoZSBVQVJUIHBlcmlwaGVyYWwuIAorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgIFVTQVJUMSwgVVNBUlQyLCBVU0FSVDMsIFVBUlQ0IG9yIFVBUlQ1LgorICAqIEBwYXJhbSAgVVNBUlRfSVQ6IHNwZWNpZmllcyB0aGUgVVNBUlQgaW50ZXJydXB0IHNvdXJjZXMgdG8gYmUgZW5hYmxlZCBvciBkaXNhYmxlZC4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICAgIEBhcmcgVVNBUlRfSVRfQ1RTOiAgQ1RTIGNoYW5nZSBpbnRlcnJ1cHQgKG5vdCBhdmFpbGFibGUgZm9yIFVBUlQ0IGFuZCBVQVJUNSkKKyAgKiAgICAgQGFyZyBVU0FSVF9JVF9MQkQ6ICBMSU4gQnJlYWsgZGV0ZWN0aW9uIGludGVycnVwdAorICAqICAgICBAYXJnIFVTQVJUX0lUX1RYRTogIFRyYW5zbWl0IERhdGEgUmVnaXN0ZXIgZW1wdHkgaW50ZXJydXB0CisgICogICAgIEBhcmcgVVNBUlRfSVRfVEM6ICAgVHJhbnNtaXNzaW9uIGNvbXBsZXRlIGludGVycnVwdAorICAqICAgICBAYXJnIFVTQVJUX0lUX1JYTkU6IFJlY2VpdmUgRGF0YSByZWdpc3RlciBub3QgZW1wdHkgaW50ZXJydXB0CisgICogICAgIEBhcmcgVVNBUlRfSVRfSURMRTogSWRsZSBsaW5lIGRldGVjdGlvbiBpbnRlcnJ1cHQKKyAgKiAgICAgQGFyZyBVU0FSVF9JVF9QRTogICBQYXJpdHkgRXJyb3IgaW50ZXJydXB0CisgICogICAgIEBhcmcgVVNBUlRfSVRfRVJSOiAgRXJyb3IgaW50ZXJydXB0KEZyYW1lIGVycm9yLCBub2lzZSBlcnJvciwgb3ZlcnJ1biBlcnJvcikKKyAgKiBAcGFyYW0gIE5ld1N0YXRlOiBuZXcgc3RhdGUgb2YgdGhlIHNwZWNpZmllZCBVU0FSVHggaW50ZXJydXB0cy4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZTogRU5BQkxFIG9yIERJU0FCTEUuCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFVTQVJUX0lUQ29uZmlnKFVTQVJUX1R5cGVEZWYqIFVTQVJUeCwgdWludDE2X3QgVVNBUlRfSVQsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSkKK3sKKyAgdWludDMyX3QgdXNhcnRyZWcgPSAweDAwLCBpdHBvcyA9IDB4MDAsIGl0bWFzayA9IDB4MDA7CisgIHVpbnQzMl90IHVzYXJ0eGJhc2UgPSAweDAwOworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfVVNBUlRfQUxMX1BFUklQSChVU0FSVHgpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX1VTQVJUX0NPTkZJR19JVChVU0FSVF9JVCkpOworICBhc3NlcnRfcGFyYW0oSVNfRlVOQ1RJT05BTF9TVEFURShOZXdTdGF0ZSkpOworICAvKiBUaGUgQ1RTIGludGVycnVwdCBpcyBub3QgYXZhaWxhYmxlIGZvciBVQVJUNCBhbmQgVUFSVDUgKi8KKyAgaWYgKFVTQVJUX0lUID09IFVTQVJUX0lUX0NUUykKKyAgeworICAgIGFzc2VydF9wYXJhbShJU19VU0FSVF8xMjNfUEVSSVBIKFVTQVJUeCkpOworICB9ICAgCisgIAorICB1c2FydHhiYXNlID0gKHVpbnQzMl90KVVTQVJUeDsKKworICAvKiBHZXQgdGhlIFVTQVJUIHJlZ2lzdGVyIGluZGV4ICovCisgIHVzYXJ0cmVnID0gKCgodWludDhfdClVU0FSVF9JVCkgPj4gMHgwNSk7CisKKyAgLyogR2V0IHRoZSBpbnRlcnJ1cHQgcG9zaXRpb24gKi8KKyAgaXRwb3MgPSBVU0FSVF9JVCAmIElUX01hc2s7CisgIGl0bWFzayA9ICgoKHVpbnQzMl90KTB4MDEpIDw8IGl0cG9zKTsKKyAgICAKKyAgaWYgKHVzYXJ0cmVnID09IDB4MDEpIC8qIFRoZSBJVCBpcyBpbiBDUjEgcmVnaXN0ZXIgKi8KKyAgeworICAgIHVzYXJ0eGJhc2UgKz0gMHgwQzsKKyAgfQorICBlbHNlIGlmICh1c2FydHJlZyA9PSAweDAyKSAvKiBUaGUgSVQgaXMgaW4gQ1IyIHJlZ2lzdGVyICovCisgIHsKKyAgICB1c2FydHhiYXNlICs9IDB4MTA7CisgIH0KKyAgZWxzZSAvKiBUaGUgSVQgaXMgaW4gQ1IzIHJlZ2lzdGVyICovCisgIHsKKyAgICB1c2FydHhiYXNlICs9IDB4MTQ7IAorICB9CisgIGlmIChOZXdTdGF0ZSAhPSBESVNBQkxFKQorICB7CisgICAgKihfX0lPIHVpbnQzMl90Kil1c2FydHhiYXNlICB8PSBpdG1hc2s7CisgIH0KKyAgZWxzZQorICB7CisgICAgKihfX0lPIHVpbnQzMl90Kil1c2FydHhiYXNlICY9IH5pdG1hc2s7CisgIH0KK30KKworLyoqCisgICogQGJyaWVmICBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBVU0FSVJJzIERNQSBpbnRlcmZhY2UuCisgICogQHBhcmFtICBVU0FSVHg6IFNlbGVjdCB0aGUgVVNBUlQgb3IgdGhlIFVBUlQgcGVyaXBoZXJhbC4gCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgVVNBUlQxLCBVU0FSVDIsIFVTQVJUMywgVUFSVDQgb3IgVUFSVDUuCisgICogQHBhcmFtICBVU0FSVF9ETUFSZXE6IHNwZWNpZmllcyB0aGUgRE1BIHJlcXVlc3QuCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYW55IGNvbWJpbmF0aW9uIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIFVTQVJUX0RNQVJlcV9UeDogVVNBUlQgRE1BIHRyYW5zbWl0IHJlcXVlc3QKKyAgKiAgICAgQGFyZyBVU0FSVF9ETUFSZXFfUng6IFVTQVJUIERNQSByZWNlaXZlIHJlcXVlc3QKKyAgKiBAcGFyYW0gIE5ld1N0YXRlOiBuZXcgc3RhdGUgb2YgdGhlIERNQSBSZXF1ZXN0IHNvdXJjZXMuCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmU6IEVOQUJMRSBvciBESVNBQkxFLgorICAqIEBub3RlIFRoZSBETUEgbW9kZSBpcyBub3QgYXZhaWxhYmxlIGZvciBVQVJUNSBleGNlcHQgaW4gdGhlIFNUTTMyCisgICogICAgICAgSGlnaCBkZW5zaXR5IHZhbHVlIGxpbmUgZGV2aWNlcyhTVE0zMkYxMFhfSERfVkwpLiAgCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFVTQVJUX0RNQUNtZChVU0FSVF9UeXBlRGVmKiBVU0FSVHgsIHVpbnQxNl90IFVTQVJUX0RNQVJlcSwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfVVNBUlRfQUxMX1BFUklQSChVU0FSVHgpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX1VTQVJUX0RNQVJFUShVU0FSVF9ETUFSZXEpKTsgIAorICBhc3NlcnRfcGFyYW0oSVNfRlVOQ1RJT05BTF9TVEFURShOZXdTdGF0ZSkpOyAKKyAgaWYgKE5ld1N0YXRlICE9IERJU0FCTEUpCisgIHsKKyAgICAvKiBFbmFibGUgdGhlIERNQSB0cmFuc2ZlciBmb3Igc2VsZWN0ZWQgcmVxdWVzdHMgYnkgc2V0dGluZyB0aGUgRE1BVCBhbmQvb3IKKyAgICAgICBETUFSIGJpdHMgaW4gdGhlIFVTQVJUIENSMyByZWdpc3RlciAqLworICAgIFVTQVJUeC0+Q1IzIHw9IFVTQVJUX0RNQVJlcTsKKyAgfQorICBlbHNlCisgIHsKKyAgICAvKiBEaXNhYmxlIHRoZSBETUEgdHJhbnNmZXIgZm9yIHNlbGVjdGVkIHJlcXVlc3RzIGJ5IGNsZWFyaW5nIHRoZSBETUFUIGFuZC9vcgorICAgICAgIERNQVIgYml0cyBpbiB0aGUgVVNBUlQgQ1IzIHJlZ2lzdGVyICovCisgICAgVVNBUlR4LT5DUjMgJj0gKHVpbnQxNl90KX5VU0FSVF9ETUFSZXE7CisgIH0KK30KKworLyoqCisgICogQGJyaWVmICBTZXRzIHRoZSBhZGRyZXNzIG9mIHRoZSBVU0FSVCBub2RlLgorICAqIEBwYXJhbSAgVVNBUlR4OiBTZWxlY3QgdGhlIFVTQVJUIG9yIHRoZSBVQVJUIHBlcmlwaGVyYWwuIAorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgIFVTQVJUMSwgVVNBUlQyLCBVU0FSVDMsIFVBUlQ0IG9yIFVBUlQ1LgorICAqIEBwYXJhbSAgVVNBUlRfQWRkcmVzczogSW5kaWNhdGVzIHRoZSBhZGRyZXNzIG9mIHRoZSBVU0FSVCBub2RlLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBVU0FSVF9TZXRBZGRyZXNzKFVTQVJUX1R5cGVEZWYqIFVTQVJUeCwgdWludDhfdCBVU0FSVF9BZGRyZXNzKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfVVNBUlRfQUxMX1BFUklQSChVU0FSVHgpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX1VTQVJUX0FERFJFU1MoVVNBUlRfQWRkcmVzcykpOyAKKyAgICAKKyAgLyogQ2xlYXIgdGhlIFVTQVJUIGFkZHJlc3MgKi8KKyAgVVNBUlR4LT5DUjIgJj0gQ1IyX0FkZHJlc3NfTWFzazsKKyAgLyogU2V0IHRoZSBVU0FSVCBhZGRyZXNzIG5vZGUgKi8KKyAgVVNBUlR4LT5DUjIgfD0gVVNBUlRfQWRkcmVzczsKK30KKworLyoqCisgICogQGJyaWVmICBTZWxlY3RzIHRoZSBVU0FSVCBXYWtlVXAgbWV0aG9kLgorICAqIEBwYXJhbSAgVVNBUlR4OiBTZWxlY3QgdGhlIFVTQVJUIG9yIHRoZSBVQVJUIHBlcmlwaGVyYWwuIAorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgIFVTQVJUMSwgVVNBUlQyLCBVU0FSVDMsIFVBUlQ0IG9yIFVBUlQ1LgorICAqIEBwYXJhbSAgVVNBUlRfV2FrZVVwOiBzcGVjaWZpZXMgdGhlIFVTQVJUIHdha2V1cCBtZXRob2QuCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIFVTQVJUX1dha2VVcF9JZGxlTGluZTogV2FrZVVwIGJ5IGFuIGlkbGUgbGluZSBkZXRlY3Rpb24KKyAgKiAgICAgQGFyZyBVU0FSVF9XYWtlVXBfQWRkcmVzc01hcms6IFdha2VVcCBieSBhbiBhZGRyZXNzIG1hcmsKKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgVVNBUlRfV2FrZVVwQ29uZmlnKFVTQVJUX1R5cGVEZWYqIFVTQVJUeCwgdWludDE2X3QgVVNBUlRfV2FrZVVwKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfVVNBUlRfQUxMX1BFUklQSChVU0FSVHgpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX1VTQVJUX1dBS0VVUChVU0FSVF9XYWtlVXApKTsKKyAgCisgIFVTQVJUeC0+Q1IxICY9IENSMV9XQUtFX01hc2s7CisgIFVTQVJUeC0+Q1IxIHw9IFVTQVJUX1dha2VVcDsKK30KKworLyoqCisgICogQGJyaWVmICBEZXRlcm1pbmVzIGlmIHRoZSBVU0FSVCBpcyBpbiBtdXRlIG1vZGUgb3Igbm90LgorICAqIEBwYXJhbSAgVVNBUlR4OiBTZWxlY3QgdGhlIFVTQVJUIG9yIHRoZSBVQVJUIHBlcmlwaGVyYWwuIAorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgIFVTQVJUMSwgVVNBUlQyLCBVU0FSVDMsIFVBUlQ0IG9yIFVBUlQ1LgorICAqIEBwYXJhbSAgTmV3U3RhdGU6IG5ldyBzdGF0ZSBvZiB0aGUgVVNBUlQgbXV0ZSBtb2RlLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlOiBFTkFCTEUgb3IgRElTQUJMRS4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgVVNBUlRfUmVjZWl2ZXJXYWtlVXBDbWQoVVNBUlRfVHlwZURlZiogVVNBUlR4LCBGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpCit7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19VU0FSVF9BTExfUEVSSVBIKFVTQVJUeCkpOworICBhc3NlcnRfcGFyYW0oSVNfRlVOQ1RJT05BTF9TVEFURShOZXdTdGF0ZSkpOyAKKyAgCisgIGlmIChOZXdTdGF0ZSAhPSBESVNBQkxFKQorICB7CisgICAgLyogRW5hYmxlIHRoZSBVU0FSVCBtdXRlIG1vZGUgIGJ5IHNldHRpbmcgdGhlIFJXVSBiaXQgaW4gdGhlIENSMSByZWdpc3RlciAqLworICAgIFVTQVJUeC0+Q1IxIHw9IENSMV9SV1VfU2V0OworICB9CisgIGVsc2UKKyAgeworICAgIC8qIERpc2FibGUgdGhlIFVTQVJUIG11dGUgbW9kZSBieSBjbGVhcmluZyB0aGUgUldVIGJpdCBpbiB0aGUgQ1IxIHJlZ2lzdGVyICovCisgICAgVVNBUlR4LT5DUjEgJj0gQ1IxX1JXVV9SZXNldDsKKyAgfQorfQorCisvKioKKyAgKiBAYnJpZWYgIFNldHMgdGhlIFVTQVJUIExJTiBCcmVhayBkZXRlY3Rpb24gbGVuZ3RoLgorICAqIEBwYXJhbSAgVVNBUlR4OiBTZWxlY3QgdGhlIFVTQVJUIG9yIHRoZSBVQVJUIHBlcmlwaGVyYWwuIAorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgIFVTQVJUMSwgVVNBUlQyLCBVU0FSVDMsIFVBUlQ0IG9yIFVBUlQ1LgorICAqIEBwYXJhbSAgVVNBUlRfTElOQnJlYWtEZXRlY3RMZW5ndGg6IHNwZWNpZmllcyB0aGUgTElOIGJyZWFrIGRldGVjdGlvbiBsZW5ndGguCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICBAYXJnIFVTQVJUX0xJTkJyZWFrRGV0ZWN0TGVuZ3RoXzEwYjogMTAtYml0IGJyZWFrIGRldGVjdGlvbgorICAqICAgICBAYXJnIFVTQVJUX0xJTkJyZWFrRGV0ZWN0TGVuZ3RoXzExYjogMTEtYml0IGJyZWFrIGRldGVjdGlvbgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBVU0FSVF9MSU5CcmVha0RldGVjdExlbmd0aENvbmZpZyhVU0FSVF9UeXBlRGVmKiBVU0FSVHgsIHVpbnQxNl90IFVTQVJUX0xJTkJyZWFrRGV0ZWN0TGVuZ3RoKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfVVNBUlRfQUxMX1BFUklQSChVU0FSVHgpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX1VTQVJUX0xJTl9CUkVBS19ERVRFQ1RfTEVOR1RIKFVTQVJUX0xJTkJyZWFrRGV0ZWN0TGVuZ3RoKSk7CisgIAorICBVU0FSVHgtPkNSMiAmPSBDUjJfTEJETF9NYXNrOworICBVU0FSVHgtPkNSMiB8PSBVU0FSVF9MSU5CcmVha0RldGVjdExlbmd0aDsgIAorfQorCisvKioKKyAgKiBAYnJpZWYgIEVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIFVTQVJUknMgTElOIG1vZGUuCisgICogQHBhcmFtICBVU0FSVHg6IFNlbGVjdCB0aGUgVVNBUlQgb3IgdGhlIFVBUlQgcGVyaXBoZXJhbC4gCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgVVNBUlQxLCBVU0FSVDIsIFVTQVJUMywgVUFSVDQgb3IgVUFSVDUuCisgICogQHBhcmFtICBOZXdTdGF0ZTogbmV3IHN0YXRlIG9mIHRoZSBVU0FSVCBMSU4gbW9kZS4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZTogRU5BQkxFIG9yIERJU0FCTEUuCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFVTQVJUX0xJTkNtZChVU0FSVF9UeXBlRGVmKiBVU0FSVHgsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSkKK3sKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX1VTQVJUX0FMTF9QRVJJUEgoVVNBUlR4KSk7CisgIGFzc2VydF9wYXJhbShJU19GVU5DVElPTkFMX1NUQVRFKE5ld1N0YXRlKSk7CisgIAorICBpZiAoTmV3U3RhdGUgIT0gRElTQUJMRSkKKyAgeworICAgIC8qIEVuYWJsZSB0aGUgTElOIG1vZGUgYnkgc2V0dGluZyB0aGUgTElORU4gYml0IGluIHRoZSBDUjIgcmVnaXN0ZXIgKi8KKyAgICBVU0FSVHgtPkNSMiB8PSBDUjJfTElORU5fU2V0OworICB9CisgIGVsc2UKKyAgeworICAgIC8qIERpc2FibGUgdGhlIExJTiBtb2RlIGJ5IGNsZWFyaW5nIHRoZSBMSU5FTiBiaXQgaW4gdGhlIENSMiByZWdpc3RlciAqLworICAgIFVTQVJUeC0+Q1IyICY9IENSMl9MSU5FTl9SZXNldDsKKyAgfQorfQorCisvKioKKyAgKiBAYnJpZWYgIFRyYW5zbWl0cyBzaW5nbGUgZGF0YSB0aHJvdWdoIHRoZSBVU0FSVHggcGVyaXBoZXJhbC4KKyAgKiBAcGFyYW0gIFVTQVJUeDogU2VsZWN0IHRoZSBVU0FSVCBvciB0aGUgVUFSVCBwZXJpcGhlcmFsLiAKKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICBVU0FSVDEsIFVTQVJUMiwgVVNBUlQzLCBVQVJUNCBvciBVQVJUNS4KKyAgKiBAcGFyYW0gIERhdGE6IHRoZSBkYXRhIHRvIHRyYW5zbWl0LgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBVU0FSVF9TZW5kRGF0YShVU0FSVF9UeXBlRGVmKiBVU0FSVHgsIHVpbnQxNl90IERhdGEpCit7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19VU0FSVF9BTExfUEVSSVBIKFVTQVJUeCkpOworICBhc3NlcnRfcGFyYW0oSVNfVVNBUlRfREFUQShEYXRhKSk7IAorICAgIAorICAvKiBUcmFuc21pdCBEYXRhICovCisgIFVTQVJUeC0+RFIgPSAoRGF0YSAmICh1aW50MTZfdCkweDAxRkYpOworfQorCisvKioKKyAgKiBAYnJpZWYgIFJldHVybnMgdGhlIG1vc3QgcmVjZW50IHJlY2VpdmVkIGRhdGEgYnkgdGhlIFVTQVJUeCBwZXJpcGhlcmFsLgorICAqIEBwYXJhbSAgVVNBUlR4OiBTZWxlY3QgdGhlIFVTQVJUIG9yIHRoZSBVQVJUIHBlcmlwaGVyYWwuIAorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgIFVTQVJUMSwgVVNBUlQyLCBVU0FSVDMsIFVBUlQ0IG9yIFVBUlQ1LgorICAqIEByZXR2YWwgVGhlIHJlY2VpdmVkIGRhdGEuCisgICovCit1aW50MTZfdCBVU0FSVF9SZWNlaXZlRGF0YShVU0FSVF9UeXBlRGVmKiBVU0FSVHgpCit7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19VU0FSVF9BTExfUEVSSVBIKFVTQVJUeCkpOworICAKKyAgLyogUmVjZWl2ZSBEYXRhICovCisgIHJldHVybiAodWludDE2X3QpKFVTQVJUeC0+RFIgJiAodWludDE2X3QpMHgwMUZGKTsKK30KKworLyoqCisgICogQGJyaWVmICBUcmFuc21pdHMgYnJlYWsgY2hhcmFjdGVycy4KKyAgKiBAcGFyYW0gIFVTQVJUeDogU2VsZWN0IHRoZSBVU0FSVCBvciB0aGUgVUFSVCBwZXJpcGhlcmFsLiAKKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICBVU0FSVDEsIFVTQVJUMiwgVVNBUlQzLCBVQVJUNCBvciBVQVJUNS4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgVVNBUlRfU2VuZEJyZWFrKFVTQVJUX1R5cGVEZWYqIFVTQVJUeCkKK3sKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX1VTQVJUX0FMTF9QRVJJUEgoVVNBUlR4KSk7CisgIAorICAvKiBTZW5kIGJyZWFrIGNoYXJhY3RlcnMgKi8KKyAgVVNBUlR4LT5DUjEgfD0gQ1IxX1NCS19TZXQ7Cit9CisKKy8qKgorICAqIEBicmllZiAgU2V0cyB0aGUgc3BlY2lmaWVkIFVTQVJUIGd1YXJkIHRpbWUuCisgICogQHBhcmFtICBVU0FSVHg6IHdoZXJlIHggY2FuIGJlIDEsIDIgb3IgMyB0byBzZWxlY3QgdGhlIFVTQVJUIHBlcmlwaGVyYWwuCisgICogQHBhcmFtICBVU0FSVF9HdWFyZFRpbWU6IHNwZWNpZmllcyB0aGUgZ3VhcmQgdGltZS4KKyAgKiBAbm90ZSBUaGUgZ3VhcmQgdGltZSBiaXRzIGFyZSBub3QgYXZhaWxhYmxlIGZvciBVQVJUNCBhbmQgVUFSVDUuICAgCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFVTQVJUX1NldEd1YXJkVGltZShVU0FSVF9UeXBlRGVmKiBVU0FSVHgsIHVpbnQ4X3QgVVNBUlRfR3VhcmRUaW1lKQoreyAgICAKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX1VTQVJUXzEyM19QRVJJUEgoVVNBUlR4KSk7CisgIAorICAvKiBDbGVhciB0aGUgVVNBUlQgR3VhcmQgdGltZSAqLworICBVU0FSVHgtPkdUUFIgJj0gR1RQUl9MU0JfTWFzazsKKyAgLyogU2V0IHRoZSBVU0FSVCBndWFyZCB0aW1lICovCisgIFVTQVJUeC0+R1RQUiB8PSAodWludDE2X3QpKCh1aW50MTZfdClVU0FSVF9HdWFyZFRpbWUgPDwgMHgwOCk7Cit9CisKKy8qKgorICAqIEBicmllZiAgU2V0cyB0aGUgc3lzdGVtIGNsb2NrIHByZXNjYWxlci4KKyAgKiBAcGFyYW0gIFVTQVJUeDogU2VsZWN0IHRoZSBVU0FSVCBvciB0aGUgVUFSVCBwZXJpcGhlcmFsLiAKKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICBVU0FSVDEsIFVTQVJUMiwgVVNBUlQzLCBVQVJUNCBvciBVQVJUNS4KKyAgKiBAcGFyYW0gIFVTQVJUX1ByZXNjYWxlcjogc3BlY2lmaWVzIHRoZSBwcmVzY2FsZXIgY2xvY2suICAKKyAgKiBAbm90ZSAgIFRoZSBmdW5jdGlvbiBpcyB1c2VkIGZvciBJckRBIG1vZGUgd2l0aCBVQVJUNCBhbmQgVUFSVDUuCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFVTQVJUX1NldFByZXNjYWxlcihVU0FSVF9UeXBlRGVmKiBVU0FSVHgsIHVpbnQ4X3QgVVNBUlRfUHJlc2NhbGVyKQoreyAKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX1VTQVJUX0FMTF9QRVJJUEgoVVNBUlR4KSk7CisgIAorICAvKiBDbGVhciB0aGUgVVNBUlQgcHJlc2NhbGVyICovCisgIFVTQVJUeC0+R1RQUiAmPSBHVFBSX01TQl9NYXNrOworICAvKiBTZXQgdGhlIFVTQVJUIHByZXNjYWxlciAqLworICBVU0FSVHgtPkdUUFIgfD0gVVNBUlRfUHJlc2NhbGVyOworfQorCisvKioKKyAgKiBAYnJpZWYgIEVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIFVTQVJUknMgU21hcnQgQ2FyZCBtb2RlLgorICAqIEBwYXJhbSAgVVNBUlR4OiB3aGVyZSB4IGNhbiBiZSAxLCAyIG9yIDMgdG8gc2VsZWN0IHRoZSBVU0FSVCBwZXJpcGhlcmFsLgorICAqIEBwYXJhbSAgTmV3U3RhdGU6IG5ldyBzdGF0ZSBvZiB0aGUgU21hcnQgQ2FyZCBtb2RlLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlOiBFTkFCTEUgb3IgRElTQUJMRS4gICAgIAorICAqIEBub3RlIFRoZSBTbWFydCBDYXJkIG1vZGUgaXMgbm90IGF2YWlsYWJsZSBmb3IgVUFSVDQgYW5kIFVBUlQ1LiAKKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgVVNBUlRfU21hcnRDYXJkQ21kKFVTQVJUX1R5cGVEZWYqIFVTQVJUeCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfVVNBUlRfMTIzX1BFUklQSChVU0FSVHgpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0ZVTkNUSU9OQUxfU1RBVEUoTmV3U3RhdGUpKTsKKyAgaWYgKE5ld1N0YXRlICE9IERJU0FCTEUpCisgIHsKKyAgICAvKiBFbmFibGUgdGhlIFNDIG1vZGUgYnkgc2V0dGluZyB0aGUgU0NFTiBiaXQgaW4gdGhlIENSMyByZWdpc3RlciAqLworICAgIFVTQVJUeC0+Q1IzIHw9IENSM19TQ0VOX1NldDsKKyAgfQorICBlbHNlCisgIHsKKyAgICAvKiBEaXNhYmxlIHRoZSBTQyBtb2RlIGJ5IGNsZWFyaW5nIHRoZSBTQ0VOIGJpdCBpbiB0aGUgQ1IzIHJlZ2lzdGVyICovCisgICAgVVNBUlR4LT5DUjMgJj0gQ1IzX1NDRU5fUmVzZXQ7CisgIH0KK30KKworLyoqCisgICogQGJyaWVmICBFbmFibGVzIG9yIGRpc2FibGVzIE5BQ0sgdHJhbnNtaXNzaW9uLgorICAqIEBwYXJhbSAgVVNBUlR4OiB3aGVyZSB4IGNhbiBiZSAxLCAyIG9yIDMgdG8gc2VsZWN0IHRoZSBVU0FSVCBwZXJpcGhlcmFsLiAKKyAgKiBAcGFyYW0gIE5ld1N0YXRlOiBuZXcgc3RhdGUgb2YgdGhlIE5BQ0sgdHJhbnNtaXNzaW9uLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlOiBFTkFCTEUgb3IgRElTQUJMRS4gIAorICAqIEBub3RlIFRoZSBTbWFydCBDYXJkIG1vZGUgaXMgbm90IGF2YWlsYWJsZSBmb3IgVUFSVDQgYW5kIFVBUlQ1LgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBVU0FSVF9TbWFydENhcmROQUNLQ21kKFVTQVJUX1R5cGVEZWYqIFVTQVJUeCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfVVNBUlRfMTIzX1BFUklQSChVU0FSVHgpKTsgIAorICBhc3NlcnRfcGFyYW0oSVNfRlVOQ1RJT05BTF9TVEFURShOZXdTdGF0ZSkpOworICBpZiAoTmV3U3RhdGUgIT0gRElTQUJMRSkKKyAgeworICAgIC8qIEVuYWJsZSB0aGUgTkFDSyB0cmFuc21pc3Npb24gYnkgc2V0dGluZyB0aGUgTkFDSyBiaXQgaW4gdGhlIENSMyByZWdpc3RlciAqLworICAgIFVTQVJUeC0+Q1IzIHw9IENSM19OQUNLX1NldDsKKyAgfQorICBlbHNlCisgIHsKKyAgICAvKiBEaXNhYmxlIHRoZSBOQUNLIHRyYW5zbWlzc2lvbiBieSBjbGVhcmluZyB0aGUgTkFDSyBiaXQgaW4gdGhlIENSMyByZWdpc3RlciAqLworICAgIFVTQVJUeC0+Q1IzICY9IENSM19OQUNLX1Jlc2V0OworICB9Cit9CisKKy8qKgorICAqIEBicmllZiAgRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgVVNBUlSScyBIYWxmIER1cGxleCBjb21tdW5pY2F0aW9uLgorICAqIEBwYXJhbSAgVVNBUlR4OiBTZWxlY3QgdGhlIFVTQVJUIG9yIHRoZSBVQVJUIHBlcmlwaGVyYWwuIAorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgIFVTQVJUMSwgVVNBUlQyLCBVU0FSVDMsIFVBUlQ0IG9yIFVBUlQ1LgorICAqIEBwYXJhbSAgTmV3U3RhdGU6IG5ldyBzdGF0ZSBvZiB0aGUgVVNBUlQgQ29tbXVuaWNhdGlvbi4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZTogRU5BQkxFIG9yIERJU0FCTEUuCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFVTQVJUX0hhbGZEdXBsZXhDbWQoVVNBUlRfVHlwZURlZiogVVNBUlR4LCBGdW5jdGlvbmFsU3RhdGUgTmV3U3RhdGUpCit7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19VU0FSVF9BTExfUEVSSVBIKFVTQVJUeCkpOworICBhc3NlcnRfcGFyYW0oSVNfRlVOQ1RJT05BTF9TVEFURShOZXdTdGF0ZSkpOworICAKKyAgaWYgKE5ld1N0YXRlICE9IERJU0FCTEUpCisgIHsKKyAgICAvKiBFbmFibGUgdGhlIEhhbGYtRHVwbGV4IG1vZGUgYnkgc2V0dGluZyB0aGUgSERTRUwgYml0IGluIHRoZSBDUjMgcmVnaXN0ZXIgKi8KKyAgICBVU0FSVHgtPkNSMyB8PSBDUjNfSERTRUxfU2V0OworICB9CisgIGVsc2UKKyAgeworICAgIC8qIERpc2FibGUgdGhlIEhhbGYtRHVwbGV4IG1vZGUgYnkgY2xlYXJpbmcgdGhlIEhEU0VMIGJpdCBpbiB0aGUgQ1IzIHJlZ2lzdGVyICovCisgICAgVVNBUlR4LT5DUjMgJj0gQ1IzX0hEU0VMX1Jlc2V0OworICB9Cit9CisKKworLyoqCisgICogQGJyaWVmICBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBVU0FSVCdzIDh4IG92ZXJzYW1wbGluZyBtb2RlLgorICAqIEBwYXJhbSAgVVNBUlR4OiBTZWxlY3QgdGhlIFVTQVJUIG9yIHRoZSBVQVJUIHBlcmlwaGVyYWwuCisgICogICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgVVNBUlQxLCBVU0FSVDIsIFVTQVJUMywgVUFSVDQgb3IgVUFSVDUuCisgICogQHBhcmFtICBOZXdTdGF0ZTogbmV3IHN0YXRlIG9mIHRoZSBVU0FSVCBvbmUgYml0IHNhbXBsaW5nIG1ldGhvZC4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZTogRU5BQkxFIG9yIERJU0FCTEUuCisgICogQG5vdGUKKyAgKiAgICAgVGhpcyBmdW5jdGlvbiBoYXMgdG8gYmUgY2FsbGVkIGJlZm9yZSBjYWxsaW5nIFVTQVJUX0luaXQoKQorICAqICAgICBmdW5jdGlvbiBpbiBvcmRlciB0byBoYXZlIGNvcnJlY3QgYmF1ZHJhdGUgRGl2aWRlciB2YWx1ZS4gICAKKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgVVNBUlRfT3ZlclNhbXBsaW5nOENtZChVU0FSVF9UeXBlRGVmKiBVU0FSVHgsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSkKK3sKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX1VTQVJUX0FMTF9QRVJJUEgoVVNBUlR4KSk7CisgIGFzc2VydF9wYXJhbShJU19GVU5DVElPTkFMX1NUQVRFKE5ld1N0YXRlKSk7CisgIAorICBpZiAoTmV3U3RhdGUgIT0gRElTQUJMRSkKKyAgeworICAgIC8qIEVuYWJsZSB0aGUgOHggT3ZlcnNhbXBsaW5nIG1vZGUgYnkgc2V0dGluZyB0aGUgT1ZFUjggYml0IGluIHRoZSBDUjEgcmVnaXN0ZXIgKi8KKyAgICBVU0FSVHgtPkNSMSB8PSBDUjFfT1ZFUjhfU2V0OworICB9CisgIGVsc2UKKyAgeworICAgIC8qIERpc2FibGUgdGhlIDh4IE92ZXJzYW1wbGluZyBtb2RlIGJ5IGNsZWFyaW5nIHRoZSBPVkVSOCBiaXQgaW4gdGhlIENSMSByZWdpc3RlciAqLworICAgIFVTQVJUeC0+Q1IxICY9IENSMV9PVkVSOF9SZXNldDsKKyAgfQorfQorCisvKioKKyAgKiBAYnJpZWYgIEVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIFVTQVJUJ3Mgb25lIGJpdCBzYW1wbGluZyBtZXRob2QuCisgICogQHBhcmFtICBVU0FSVHg6IFNlbGVjdCB0aGUgVVNBUlQgb3IgdGhlIFVBUlQgcGVyaXBoZXJhbC4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICBVU0FSVDEsIFVTQVJUMiwgVVNBUlQzLCBVQVJUNCBvciBVQVJUNS4KKyAgKiBAcGFyYW0gIE5ld1N0YXRlOiBuZXcgc3RhdGUgb2YgdGhlIFVTQVJUIG9uZSBiaXQgc2FtcGxpbmcgbWV0aG9kLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlOiBFTkFCTEUgb3IgRElTQUJMRS4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgVVNBUlRfT25lQml0TWV0aG9kQ21kKFVTQVJUX1R5cGVEZWYqIFVTQVJUeCwgRnVuY3Rpb25hbFN0YXRlIE5ld1N0YXRlKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfVVNBUlRfQUxMX1BFUklQSChVU0FSVHgpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0ZVTkNUSU9OQUxfU1RBVEUoTmV3U3RhdGUpKTsKKyAgCisgIGlmIChOZXdTdGF0ZSAhPSBESVNBQkxFKQorICB7CisgICAgLyogRW5hYmxlIHRoZSBvbmUgYml0IG1ldGhvZCBieSBzZXR0aW5nIHRoZSBPTkVCSVRFIGJpdCBpbiB0aGUgQ1IzIHJlZ2lzdGVyICovCisgICAgVVNBUlR4LT5DUjMgfD0gQ1IzX09ORUJJVEVfU2V0OworICB9CisgIGVsc2UKKyAgeworICAgIC8qIERpc2FibGUgdHRoZSBvbmUgYml0IG1ldGhvZCBieSBjbGVhcmluZyB0aGUgT05FQklURSBiaXQgaW4gdGhlIENSMyByZWdpc3RlciAqLworICAgIFVTQVJUeC0+Q1IzICY9IENSM19PTkVCSVRFX1Jlc2V0OworICB9Cit9CisKKy8qKgorICAqIEBicmllZiAgQ29uZmlndXJlcyB0aGUgVVNBUlQncyBJckRBIGludGVyZmFjZS4KKyAgKiBAcGFyYW0gIFVTQVJUeDogU2VsZWN0IHRoZSBVU0FSVCBvciB0aGUgVUFSVCBwZXJpcGhlcmFsLiAKKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICBVU0FSVDEsIFVTQVJUMiwgVVNBUlQzLCBVQVJUNCBvciBVQVJUNS4KKyAgKiBAcGFyYW0gIFVTQVJUX0lyREFNb2RlOiBzcGVjaWZpZXMgdGhlIElyREEgbW9kZS4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICAgIEBhcmcgVVNBUlRfSXJEQU1vZGVfTG93UG93ZXIKKyAgKiAgICAgQGFyZyBVU0FSVF9JckRBTW9kZV9Ob3JtYWwKKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgVVNBUlRfSXJEQUNvbmZpZyhVU0FSVF9UeXBlRGVmKiBVU0FSVHgsIHVpbnQxNl90IFVTQVJUX0lyREFNb2RlKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfVVNBUlRfQUxMX1BFUklQSChVU0FSVHgpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX1VTQVJUX0lSREFfTU9ERShVU0FSVF9JckRBTW9kZSkpOworICAgIAorICBVU0FSVHgtPkNSMyAmPSBDUjNfSVJMUF9NYXNrOworICBVU0FSVHgtPkNSMyB8PSBVU0FSVF9JckRBTW9kZTsKK30KKworLyoqCisgICogQGJyaWVmICBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBVU0FSVCdzIElyREEgaW50ZXJmYWNlLgorICAqIEBwYXJhbSAgVVNBUlR4OiBTZWxlY3QgdGhlIFVTQVJUIG9yIHRoZSBVQVJUIHBlcmlwaGVyYWwuIAorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgIFVTQVJUMSwgVVNBUlQyLCBVU0FSVDMsIFVBUlQ0IG9yIFVBUlQ1LgorICAqIEBwYXJhbSAgTmV3U3RhdGU6IG5ldyBzdGF0ZSBvZiB0aGUgSXJEQSBtb2RlLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlOiBFTkFCTEUgb3IgRElTQUJMRS4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgVVNBUlRfSXJEQUNtZChVU0FSVF9UeXBlRGVmKiBVU0FSVHgsIEZ1bmN0aW9uYWxTdGF0ZSBOZXdTdGF0ZSkKK3sKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX1VTQVJUX0FMTF9QRVJJUEgoVVNBUlR4KSk7CisgIGFzc2VydF9wYXJhbShJU19GVU5DVElPTkFMX1NUQVRFKE5ld1N0YXRlKSk7CisgICAgCisgIGlmIChOZXdTdGF0ZSAhPSBESVNBQkxFKQorICB7CisgICAgLyogRW5hYmxlIHRoZSBJckRBIG1vZGUgYnkgc2V0dGluZyB0aGUgSVJFTiBiaXQgaW4gdGhlIENSMyByZWdpc3RlciAqLworICAgIFVTQVJUeC0+Q1IzIHw9IENSM19JUkVOX1NldDsKKyAgfQorICBlbHNlCisgIHsKKyAgICAvKiBEaXNhYmxlIHRoZSBJckRBIG1vZGUgYnkgY2xlYXJpbmcgdGhlIElSRU4gYml0IGluIHRoZSBDUjMgcmVnaXN0ZXIgKi8KKyAgICBVU0FSVHgtPkNSMyAmPSBDUjNfSVJFTl9SZXNldDsKKyAgfQorfQorCisvKioKKyAgKiBAYnJpZWYgIENoZWNrcyB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgVVNBUlQgZmxhZyBpcyBzZXQgb3Igbm90LgorICAqIEBwYXJhbSAgVVNBUlR4OiBTZWxlY3QgdGhlIFVTQVJUIG9yIHRoZSBVQVJUIHBlcmlwaGVyYWwuIAorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgIFVTQVJUMSwgVVNBUlQyLCBVU0FSVDMsIFVBUlQ0IG9yIFVBUlQ1LgorICAqIEBwYXJhbSAgVVNBUlRfRkxBRzogc3BlY2lmaWVzIHRoZSBmbGFnIHRvIGNoZWNrLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBVU0FSVF9GTEFHX0NUUzogIENUUyBDaGFuZ2UgZmxhZyAobm90IGF2YWlsYWJsZSBmb3IgVUFSVDQgYW5kIFVBUlQ1KQorICAqICAgICBAYXJnIFVTQVJUX0ZMQUdfTEJEOiAgTElOIEJyZWFrIGRldGVjdGlvbiBmbGFnCisgICogICAgIEBhcmcgVVNBUlRfRkxBR19UWEU6ICBUcmFuc21pdCBkYXRhIHJlZ2lzdGVyIGVtcHR5IGZsYWcKKyAgKiAgICAgQGFyZyBVU0FSVF9GTEFHX1RDOiAgIFRyYW5zbWlzc2lvbiBDb21wbGV0ZSBmbGFnCisgICogICAgIEBhcmcgVVNBUlRfRkxBR19SWE5FOiBSZWNlaXZlIGRhdGEgcmVnaXN0ZXIgbm90IGVtcHR5IGZsYWcKKyAgKiAgICAgQGFyZyBVU0FSVF9GTEFHX0lETEU6IElkbGUgTGluZSBkZXRlY3Rpb24gZmxhZworICAqICAgICBAYXJnIFVTQVJUX0ZMQUdfT1JFOiAgT3ZlclJ1biBFcnJvciBmbGFnCisgICogICAgIEBhcmcgVVNBUlRfRkxBR19ORTogICBOb2lzZSBFcnJvciBmbGFnCisgICogICAgIEBhcmcgVVNBUlRfRkxBR19GRTogICBGcmFtaW5nIEVycm9yIGZsYWcKKyAgKiAgICAgQGFyZyBVU0FSVF9GTEFHX1BFOiAgIFBhcml0eSBFcnJvciBmbGFnCisgICogQHJldHZhbCBUaGUgbmV3IHN0YXRlIG9mIFVTQVJUX0ZMQUcgKFNFVCBvciBSRVNFVCkuCisgICovCitGbGFnU3RhdHVzIFVTQVJUX0dldEZsYWdTdGF0dXMoVVNBUlRfVHlwZURlZiogVVNBUlR4LCB1aW50MTZfdCBVU0FSVF9GTEFHKQoreworICBGbGFnU3RhdHVzIGJpdHN0YXR1cyA9IFJFU0VUOworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfVVNBUlRfQUxMX1BFUklQSChVU0FSVHgpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX1VTQVJUX0ZMQUcoVVNBUlRfRkxBRykpOworICAvKiBUaGUgQ1RTIGZsYWcgaXMgbm90IGF2YWlsYWJsZSBmb3IgVUFSVDQgYW5kIFVBUlQ1ICovCisgIGlmIChVU0FSVF9GTEFHID09IFVTQVJUX0ZMQUdfQ1RTKQorICB7CisgICAgYXNzZXJ0X3BhcmFtKElTX1VTQVJUXzEyM19QRVJJUEgoVVNBUlR4KSk7CisgIH0gIAorICAKKyAgaWYgKChVU0FSVHgtPlNSICYgVVNBUlRfRkxBRykgIT0gKHVpbnQxNl90KVJFU0VUKQorICB7CisgICAgYml0c3RhdHVzID0gU0VUOworICB9CisgIGVsc2UKKyAgeworICAgIGJpdHN0YXR1cyA9IFJFU0VUOworICB9CisgIHJldHVybiBiaXRzdGF0dXM7Cit9CisKKy8qKgorICAqIEBicmllZiAgQ2xlYXJzIHRoZSBVU0FSVHgncyBwZW5kaW5nIGZsYWdzLgorICAqIEBwYXJhbSAgVVNBUlR4OiBTZWxlY3QgdGhlIFVTQVJUIG9yIHRoZSBVQVJUIHBlcmlwaGVyYWwuIAorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgIFVTQVJUMSwgVVNBUlQyLCBVU0FSVDMsIFVBUlQ0IG9yIFVBUlQ1LgorICAqIEBwYXJhbSAgVVNBUlRfRkxBRzogc3BlY2lmaWVzIHRoZSBmbGFnIHRvIGNsZWFyLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGFueSBjb21iaW5hdGlvbiBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBVU0FSVF9GTEFHX0NUUzogIENUUyBDaGFuZ2UgZmxhZyAobm90IGF2YWlsYWJsZSBmb3IgVUFSVDQgYW5kIFVBUlQ1KS4KKyAgKiAgICAgQGFyZyBVU0FSVF9GTEFHX0xCRDogIExJTiBCcmVhayBkZXRlY3Rpb24gZmxhZy4KKyAgKiAgICAgQGFyZyBVU0FSVF9GTEFHX1RDOiAgIFRyYW5zbWlzc2lvbiBDb21wbGV0ZSBmbGFnLgorICAqICAgICBAYXJnIFVTQVJUX0ZMQUdfUlhORTogUmVjZWl2ZSBkYXRhIHJlZ2lzdGVyIG5vdCBlbXB0eSBmbGFnLgorICAqICAgCisgICogQG5vdGUKKyAgKiAgIC0gUEUgKFBhcml0eSBlcnJvciksIEZFIChGcmFtaW5nIGVycm9yKSwgTkUgKE5vaXNlIGVycm9yKSwgT1JFIChPdmVyUnVuIAorICAqICAgICBlcnJvcikgYW5kIElETEUgKElkbGUgbGluZSBkZXRlY3RlZCkgZmxhZ3MgYXJlIGNsZWFyZWQgYnkgc29mdHdhcmUgCisgICogICAgIHNlcXVlbmNlOiBhIHJlYWQgb3BlcmF0aW9uIHRvIFVTQVJUX1NSIHJlZ2lzdGVyIChVU0FSVF9HZXRGbGFnU3RhdHVzKCkpIAorICAqICAgICBmb2xsb3dlZCBieSBhIHJlYWQgb3BlcmF0aW9uIHRvIFVTQVJUX0RSIHJlZ2lzdGVyIChVU0FSVF9SZWNlaXZlRGF0YSgpKS4KKyAgKiAgIC0gUlhORSBmbGFnIGNhbiBiZSBhbHNvIGNsZWFyZWQgYnkgYSByZWFkIHRvIHRoZSBVU0FSVF9EUiByZWdpc3RlciAKKyAgKiAgICAgKFVTQVJUX1JlY2VpdmVEYXRhKCkpLgorICAqICAgLSBUQyBmbGFnIGNhbiBiZSBhbHNvIGNsZWFyZWQgYnkgc29mdHdhcmUgc2VxdWVuY2U6IGEgcmVhZCBvcGVyYXRpb24gdG8gCisgICogICAgIFVTQVJUX1NSIHJlZ2lzdGVyIChVU0FSVF9HZXRGbGFnU3RhdHVzKCkpIGZvbGxvd2VkIGJ5IGEgd3JpdGUgb3BlcmF0aW9uCisgICogICAgIHRvIFVTQVJUX0RSIHJlZ2lzdGVyIChVU0FSVF9TZW5kRGF0YSgpKS4KKyAgKiAgIC0gVFhFIGZsYWcgaXMgY2xlYXJlZCBvbmx5IGJ5IGEgd3JpdGUgdG8gdGhlIFVTQVJUX0RSIHJlZ2lzdGVyIAorICAqICAgICAoVVNBUlRfU2VuZERhdGEoKSkuCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFVTQVJUX0NsZWFyRmxhZyhVU0FSVF9UeXBlRGVmKiBVU0FSVHgsIHVpbnQxNl90IFVTQVJUX0ZMQUcpCit7CisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19VU0FSVF9BTExfUEVSSVBIKFVTQVJUeCkpOworICBhc3NlcnRfcGFyYW0oSVNfVVNBUlRfQ0xFQVJfRkxBRyhVU0FSVF9GTEFHKSk7CisgIC8qIFRoZSBDVFMgZmxhZyBpcyBub3QgYXZhaWxhYmxlIGZvciBVQVJUNCBhbmQgVUFSVDUgKi8KKyAgaWYgKChVU0FSVF9GTEFHICYgVVNBUlRfRkxBR19DVFMpID09IFVTQVJUX0ZMQUdfQ1RTKQorICB7CisgICAgYXNzZXJ0X3BhcmFtKElTX1VTQVJUXzEyM19QRVJJUEgoVVNBUlR4KSk7CisgIH0gCisgICAKKyAgVVNBUlR4LT5TUiA9ICh1aW50MTZfdCl+VVNBUlRfRkxBRzsKK30KKworLyoqCisgICogQGJyaWVmICBDaGVja3Mgd2hldGhlciB0aGUgc3BlY2lmaWVkIFVTQVJUIGludGVycnVwdCBoYXMgb2NjdXJyZWQgb3Igbm90LgorICAqIEBwYXJhbSAgVVNBUlR4OiBTZWxlY3QgdGhlIFVTQVJUIG9yIHRoZSBVQVJUIHBlcmlwaGVyYWwuIAorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgIFVTQVJUMSwgVVNBUlQyLCBVU0FSVDMsIFVBUlQ0IG9yIFVBUlQ1LgorICAqIEBwYXJhbSAgVVNBUlRfSVQ6IHNwZWNpZmllcyB0aGUgVVNBUlQgaW50ZXJydXB0IHNvdXJjZSB0byBjaGVjay4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICAgIEBhcmcgVVNBUlRfSVRfQ1RTOiAgQ1RTIGNoYW5nZSBpbnRlcnJ1cHQgKG5vdCBhdmFpbGFibGUgZm9yIFVBUlQ0IGFuZCBVQVJUNSkKKyAgKiAgICAgQGFyZyBVU0FSVF9JVF9MQkQ6ICBMSU4gQnJlYWsgZGV0ZWN0aW9uIGludGVycnVwdAorICAqICAgICBAYXJnIFVTQVJUX0lUX1RYRTogIFRhbnNtaXQgRGF0YSBSZWdpc3RlciBlbXB0eSBpbnRlcnJ1cHQKKyAgKiAgICAgQGFyZyBVU0FSVF9JVF9UQzogICBUcmFuc21pc3Npb24gY29tcGxldGUgaW50ZXJydXB0CisgICogICAgIEBhcmcgVVNBUlRfSVRfUlhORTogUmVjZWl2ZSBEYXRhIHJlZ2lzdGVyIG5vdCBlbXB0eSBpbnRlcnJ1cHQKKyAgKiAgICAgQGFyZyBVU0FSVF9JVF9JRExFOiBJZGxlIGxpbmUgZGV0ZWN0aW9uIGludGVycnVwdAorICAqICAgICBAYXJnIFVTQVJUX0lUX09SRTogIE92ZXJSdW4gRXJyb3IgaW50ZXJydXB0CisgICogICAgIEBhcmcgVVNBUlRfSVRfTkU6ICAgTm9pc2UgRXJyb3IgaW50ZXJydXB0CisgICogICAgIEBhcmcgVVNBUlRfSVRfRkU6ICAgRnJhbWluZyBFcnJvciBpbnRlcnJ1cHQKKyAgKiAgICAgQGFyZyBVU0FSVF9JVF9QRTogICBQYXJpdHkgRXJyb3IgaW50ZXJydXB0CisgICogQHJldHZhbCBUaGUgbmV3IHN0YXRlIG9mIFVTQVJUX0lUIChTRVQgb3IgUkVTRVQpLgorICAqLworSVRTdGF0dXMgVVNBUlRfR2V0SVRTdGF0dXMoVVNBUlRfVHlwZURlZiogVVNBUlR4LCB1aW50MTZfdCBVU0FSVF9JVCkKK3sKKyAgdWludDMyX3QgYml0cG9zID0gMHgwMCwgaXRtYXNrID0gMHgwMCwgdXNhcnRyZWcgPSAweDAwOworICBJVFN0YXR1cyBiaXRzdGF0dXMgPSBSRVNFVDsKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX1VTQVJUX0FMTF9QRVJJUEgoVVNBUlR4KSk7CisgIGFzc2VydF9wYXJhbShJU19VU0FSVF9HRVRfSVQoVVNBUlRfSVQpKTsKKyAgLyogVGhlIENUUyBpbnRlcnJ1cHQgaXMgbm90IGF2YWlsYWJsZSBmb3IgVUFSVDQgYW5kIFVBUlQ1ICovIAorICBpZiAoVVNBUlRfSVQgPT0gVVNBUlRfSVRfQ1RTKQorICB7CisgICAgYXNzZXJ0X3BhcmFtKElTX1VTQVJUXzEyM19QRVJJUEgoVVNBUlR4KSk7CisgIH0gICAKKyAgCisgIC8qIEdldCB0aGUgVVNBUlQgcmVnaXN0ZXIgaW5kZXggKi8KKyAgdXNhcnRyZWcgPSAoKCh1aW50OF90KVVTQVJUX0lUKSA+PiAweDA1KTsKKyAgLyogR2V0IHRoZSBpbnRlcnJ1cHQgcG9zaXRpb24gKi8KKyAgaXRtYXNrID0gVVNBUlRfSVQgJiBJVF9NYXNrOworICBpdG1hc2sgPSAodWludDMyX3QpMHgwMSA8PCBpdG1hc2s7CisgIAorICBpZiAodXNhcnRyZWcgPT0gMHgwMSkgLyogVGhlIElUICBpcyBpbiBDUjEgcmVnaXN0ZXIgKi8KKyAgeworICAgIGl0bWFzayAmPSBVU0FSVHgtPkNSMTsKKyAgfQorICBlbHNlIGlmICh1c2FydHJlZyA9PSAweDAyKSAvKiBUaGUgSVQgIGlzIGluIENSMiByZWdpc3RlciAqLworICB7CisgICAgaXRtYXNrICY9IFVTQVJUeC0+Q1IyOworICB9CisgIGVsc2UgLyogVGhlIElUICBpcyBpbiBDUjMgcmVnaXN0ZXIgKi8KKyAgeworICAgIGl0bWFzayAmPSBVU0FSVHgtPkNSMzsKKyAgfQorICAKKyAgYml0cG9zID0gVVNBUlRfSVQgPj4gMHgwODsKKyAgYml0cG9zID0gKHVpbnQzMl90KTB4MDEgPDwgYml0cG9zOworICBiaXRwb3MgJj0gVVNBUlR4LT5TUjsKKyAgaWYgKChpdG1hc2sgIT0gKHVpbnQxNl90KVJFU0VUKSYmKGJpdHBvcyAhPSAodWludDE2X3QpUkVTRVQpKQorICB7CisgICAgYml0c3RhdHVzID0gU0VUOworICB9CisgIGVsc2UKKyAgeworICAgIGJpdHN0YXR1cyA9IFJFU0VUOworICB9CisgIAorICByZXR1cm4gYml0c3RhdHVzOyAgCit9CisKKy8qKgorICAqIEBicmllZiAgQ2xlYXJzIHRoZSBVU0FSVHgncyBpbnRlcnJ1cHQgcGVuZGluZyBiaXRzLgorICAqIEBwYXJhbSAgVVNBUlR4OiBTZWxlY3QgdGhlIFVTQVJUIG9yIHRoZSBVQVJUIHBlcmlwaGVyYWwuIAorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgIFVTQVJUMSwgVVNBUlQyLCBVU0FSVDMsIFVBUlQ0IG9yIFVBUlQ1LgorICAqIEBwYXJhbSAgVVNBUlRfSVQ6IHNwZWNpZmllcyB0aGUgaW50ZXJydXB0IHBlbmRpbmcgYml0IHRvIGNsZWFyLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBVU0FSVF9JVF9DVFM6ICBDVFMgY2hhbmdlIGludGVycnVwdCAobm90IGF2YWlsYWJsZSBmb3IgVUFSVDQgYW5kIFVBUlQ1KQorICAqICAgICBAYXJnIFVTQVJUX0lUX0xCRDogIExJTiBCcmVhayBkZXRlY3Rpb24gaW50ZXJydXB0CisgICogICAgIEBhcmcgVVNBUlRfSVRfVEM6ICAgVHJhbnNtaXNzaW9uIGNvbXBsZXRlIGludGVycnVwdC4gCisgICogICAgIEBhcmcgVVNBUlRfSVRfUlhORTogUmVjZWl2ZSBEYXRhIHJlZ2lzdGVyIG5vdCBlbXB0eSBpbnRlcnJ1cHQuCisgICogICAKKyAgKiBAbm90ZQorICAqICAgLSBQRSAoUGFyaXR5IGVycm9yKSwgRkUgKEZyYW1pbmcgZXJyb3IpLCBORSAoTm9pc2UgZXJyb3IpLCBPUkUgKE92ZXJSdW4gCisgICogICAgIGVycm9yKSBhbmQgSURMRSAoSWRsZSBsaW5lIGRldGVjdGVkKSBwZW5kaW5nIGJpdHMgYXJlIGNsZWFyZWQgYnkgCisgICogICAgIHNvZnR3YXJlIHNlcXVlbmNlOiBhIHJlYWQgb3BlcmF0aW9uIHRvIFVTQVJUX1NSIHJlZ2lzdGVyIAorICAqICAgICAoVVNBUlRfR2V0SVRTdGF0dXMoKSkgZm9sbG93ZWQgYnkgYSByZWFkIG9wZXJhdGlvbiB0byBVU0FSVF9EUiByZWdpc3RlciAKKyAgKiAgICAgKFVTQVJUX1JlY2VpdmVEYXRhKCkpLgorICAqICAgLSBSWE5FIHBlbmRpbmcgYml0IGNhbiBiZSBhbHNvIGNsZWFyZWQgYnkgYSByZWFkIHRvIHRoZSBVU0FSVF9EUiByZWdpc3RlciAKKyAgKiAgICAgKFVTQVJUX1JlY2VpdmVEYXRhKCkpLgorICAqICAgLSBUQyBwZW5kaW5nIGJpdCBjYW4gYmUgYWxzbyBjbGVhcmVkIGJ5IHNvZnR3YXJlIHNlcXVlbmNlOiBhIHJlYWQgCisgICogICAgIG9wZXJhdGlvbiB0byBVU0FSVF9TUiByZWdpc3RlciAoVVNBUlRfR2V0SVRTdGF0dXMoKSkgZm9sbG93ZWQgYnkgYSB3cml0ZSAKKyAgKiAgICAgb3BlcmF0aW9uIHRvIFVTQVJUX0RSIHJlZ2lzdGVyIChVU0FSVF9TZW5kRGF0YSgpKS4KKyAgKiAgIC0gVFhFIHBlbmRpbmcgYml0IGlzIGNsZWFyZWQgb25seSBieSBhIHdyaXRlIHRvIHRoZSBVU0FSVF9EUiByZWdpc3RlciAKKyAgKiAgICAgKFVTQVJUX1NlbmREYXRhKCkpLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBVU0FSVF9DbGVhcklUUGVuZGluZ0JpdChVU0FSVF9UeXBlRGVmKiBVU0FSVHgsIHVpbnQxNl90IFVTQVJUX0lUKQoreworICB1aW50MTZfdCBiaXRwb3MgPSAweDAwLCBpdG1hc2sgPSAweDAwOworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfVVNBUlRfQUxMX1BFUklQSChVU0FSVHgpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX1VTQVJUX0NMRUFSX0lUKFVTQVJUX0lUKSk7CisgIC8qIFRoZSBDVFMgaW50ZXJydXB0IGlzIG5vdCBhdmFpbGFibGUgZm9yIFVBUlQ0IGFuZCBVQVJUNSAqLworICBpZiAoVVNBUlRfSVQgPT0gVVNBUlRfSVRfQ1RTKQorICB7CisgICAgYXNzZXJ0X3BhcmFtKElTX1VTQVJUXzEyM19QRVJJUEgoVVNBUlR4KSk7CisgIH0gICAKKyAgCisgIGJpdHBvcyA9IFVTQVJUX0lUID4+IDB4MDg7CisgIGl0bWFzayA9ICgodWludDE2X3QpMHgwMSA8PCAodWludDE2X3QpYml0cG9zKTsKKyAgVVNBUlR4LT5TUiA9ICh1aW50MTZfdCl+aXRtYXNrOworfQorLyoqCisgICogQH0KKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCAyMDExIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL3N0X2Z3X2xpYi9zcmMvc3RtMzJmMTB4X3d3ZGcuYyBiL3N0X2Z3X2xpYi9zcmMvc3RtMzJmMTB4X3d3ZGcuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YTkwMWU0Ci0tLSAvZGV2L251bGwKKysrIGIvc3RfZndfbGliL3NyYy9zdG0zMmYxMHhfd3dkZy5jCkBAIC0wLDAgKzEsMjI0IEBACisvKioKKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICogQGZpbGUgICAgc3RtMzJmMTB4X3d3ZGcuYworICAqIEBhdXRob3IgIE1DRCBBcHBsaWNhdGlvbiBUZWFtCisgICogQHZlcnNpb24gVjMuNS4wCisgICogQGRhdGUgICAgMTEtTWFyY2gtMjAxMQorICAqIEBicmllZiAgIFRoaXMgZmlsZSBwcm92aWRlcyBhbGwgdGhlIFdXREcgZmlybXdhcmUgZnVuY3Rpb25zLgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKiBAYXR0ZW50aW9uCisgICoKKyAgKiBUSEUgUFJFU0VOVCBGSVJNV0FSRSBXSElDSCBJUyBGT1IgR1VJREFOQ0UgT05MWSBBSU1TIEFUIFBST1ZJRElORyBDVVNUT01FUlMKKyAgKiBXSVRIIENPRElORyBJTkZPUk1BVElPTiBSRUdBUkRJTkcgVEhFSVIgUFJPRFVDVFMgSU4gT1JERVIgRk9SIFRIRU0gVE8gU0FWRQorICAqIFRJTUUuIEFTIEEgUkVTVUxULCBTVE1JQ1JPRUxFQ1RST05JQ1MgU0hBTEwgTk9UIEJFIEhFTEQgTElBQkxFIEZPUiBBTlkKKyAgKiBESVJFQ1QsIElORElSRUNUIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBXSVRIIFJFU1BFQ1QgVE8gQU5ZIENMQUlNUyBBUklTSU5HCisgICogRlJPTSBUSEUgQ09OVEVOVCBPRiBTVUNIIEZJUk1XQVJFIEFORC9PUiBUSEUgVVNFIE1BREUgQlkgQ1VTVE9NRVJTIE9GIFRIRQorICAqIENPRElORyBJTkZPUk1BVElPTiBDT05UQUlORUQgSEVSRUlOIElOIENPTk5FQ1RJT04gV0lUSCBUSEVJUiBQUk9EVUNUUy4KKyAgKgorICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDT1BZUklHSFQgMjAxMSBTVE1pY3JvZWxlY3Ryb25pY3M8L2NlbnRlcj48L2gyPgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKi8KKworLyogSW5jbHVkZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyNpbmNsdWRlICJzdG0zMmYxMHhfd3dkZy5oIgorI2luY2x1ZGUgInN0bTMyZjEweF9yY2MuaCIKKworLyoqIEBhZGR0b2dyb3VwIFNUTTMyRjEweF9TdGRQZXJpcGhfRHJpdmVyCisgICogQHsKKyAgKi8KKworLyoqIEBkZWZncm91cCBXV0RHIAorICAqIEBicmllZiBXV0RHIGRyaXZlciBtb2R1bGVzCisgICogQHsKKyAgKi8KKworLyoqIEBkZWZncm91cCBXV0RHX1ByaXZhdGVfVHlwZXNEZWZpbml0aW9ucworICAqIEB7CisgICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAZGVmZ3JvdXAgV1dER19Qcml2YXRlX0RlZmluZXMKKyAgKiBAeworICAqLworCisvKiAtLS0tLS0tLS0tLSBXV0RHIHJlZ2lzdGVycyBiaXQgYWRkcmVzcyBpbiB0aGUgYWxpYXMgcmVnaW9uIC0tLS0tLS0tLS0tICovCisjZGVmaW5lIFdXREdfT0ZGU0VUICAgICAgIChXV0RHX0JBU0UgLSBQRVJJUEhfQkFTRSkKKworLyogQWxpYXMgd29yZCBhZGRyZXNzIG9mIEVXSSBiaXQgKi8KKyNkZWZpbmUgQ0ZSX09GRlNFVCAgICAgICAgKFdXREdfT0ZGU0VUICsgMHgwNCkKKyNkZWZpbmUgRVdJX0JpdE51bWJlciAgICAgMHgwOQorI2RlZmluZSBDRlJfRVdJX0JCICAgICAgICAoUEVSSVBIX0JCX0JBU0UgKyAoQ0ZSX09GRlNFVCAqIDMyKSArIChFV0lfQml0TnVtYmVyICogNCkpCisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLSBXV0RHIHJlZ2lzdGVycyBiaXQgbWFzayAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworLyogQ1IgcmVnaXN0ZXIgYml0IG1hc2sgKi8KKyNkZWZpbmUgQ1JfV0RHQV9TZXQgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDgwKQorCisvKiBDRlIgcmVnaXN0ZXIgYml0IG1hc2sgKi8KKyNkZWZpbmUgQ0ZSX1dER1RCX01hc2sgICAgKCh1aW50MzJfdCkweEZGRkZGRTdGKQorI2RlZmluZSBDRlJfV19NYXNrICAgICAgICAoKHVpbnQzMl90KTB4RkZGRkZGODApCisjZGVmaW5lIEJJVF9NYXNrICAgICAgICAgICgodWludDhfdCkweDdGKQorCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIFdXREdfUHJpdmF0ZV9NYWNyb3MKKyAgKiBAeworICAqLworCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIFdXREdfUHJpdmF0ZV9WYXJpYWJsZXMKKyAgKiBAeworICAqLworCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIFdXREdfUHJpdmF0ZV9GdW5jdGlvblByb3RvdHlwZXMKKyAgKiBAeworICAqLworCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIFdXREdfUHJpdmF0ZV9GdW5jdGlvbnMKKyAgKiBAeworICAqLworCisvKioKKyAgKiBAYnJpZWYgIERlaW5pdGlhbGl6ZXMgdGhlIFdXREcgcGVyaXBoZXJhbCByZWdpc3RlcnMgdG8gdGhlaXIgZGVmYXVsdCByZXNldCB2YWx1ZXMuCisgICogQHBhcmFtICBOb25lCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFdXREdfRGVJbml0KHZvaWQpCit7CisgIFJDQ19BUEIxUGVyaXBoUmVzZXRDbWQoUkNDX0FQQjFQZXJpcGhfV1dERywgRU5BQkxFKTsKKyAgUkNDX0FQQjFQZXJpcGhSZXNldENtZChSQ0NfQVBCMVBlcmlwaF9XV0RHLCBESVNBQkxFKTsKK30KKworLyoqCisgICogQGJyaWVmICBTZXRzIHRoZSBXV0RHIFByZXNjYWxlci4KKyAgKiBAcGFyYW0gIFdXREdfUHJlc2NhbGVyOiBzcGVjaWZpZXMgdGhlIFdXREcgUHJlc2NhbGVyLgorICAqICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgQGFyZyBXV0RHX1ByZXNjYWxlcl8xOiBXV0RHIGNvdW50ZXIgY2xvY2sgPSAoUENMSzEvNDA5NikvMQorICAqICAgICBAYXJnIFdXREdfUHJlc2NhbGVyXzI6IFdXREcgY291bnRlciBjbG9jayA9IChQQ0xLMS80MDk2KS8yCisgICogICAgIEBhcmcgV1dER19QcmVzY2FsZXJfNDogV1dERyBjb3VudGVyIGNsb2NrID0gKFBDTEsxLzQwOTYpLzQKKyAgKiAgICAgQGFyZyBXV0RHX1ByZXNjYWxlcl84OiBXV0RHIGNvdW50ZXIgY2xvY2sgPSAoUENMSzEvNDA5NikvOAorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBXV0RHX1NldFByZXNjYWxlcih1aW50MzJfdCBXV0RHX1ByZXNjYWxlcikKK3sKKyAgdWludDMyX3QgdG1wcmVnID0gMDsKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX1dXREdfUFJFU0NBTEVSKFdXREdfUHJlc2NhbGVyKSk7CisgIC8qIENsZWFyIFdER1RCWzE6MF0gYml0cyAqLworICB0bXByZWcgPSBXV0RHLT5DRlIgJiBDRlJfV0RHVEJfTWFzazsKKyAgLyogU2V0IFdER1RCWzE6MF0gYml0cyBhY2NvcmRpbmcgdG8gV1dER19QcmVzY2FsZXIgdmFsdWUgKi8KKyAgdG1wcmVnIHw9IFdXREdfUHJlc2NhbGVyOworICAvKiBTdG9yZSB0aGUgbmV3IHZhbHVlICovCisgIFdXREctPkNGUiA9IHRtcHJlZzsKK30KKworLyoqCisgICogQGJyaWVmICBTZXRzIHRoZSBXV0RHIHdpbmRvdyB2YWx1ZS4KKyAgKiBAcGFyYW0gIFdpbmRvd1ZhbHVlOiBzcGVjaWZpZXMgdGhlIHdpbmRvdyB2YWx1ZSB0byBiZSBjb21wYXJlZCB0byB0aGUgZG93bmNvdW50ZXIuCisgICogICBUaGlzIHBhcmFtZXRlciB2YWx1ZSBtdXN0IGJlIGxvd2VyIHRoYW4gMHg4MC4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgV1dER19TZXRXaW5kb3dWYWx1ZSh1aW50OF90IFdpbmRvd1ZhbHVlKQoreworICBfX0lPIHVpbnQzMl90IHRtcHJlZyA9IDA7CisKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX1dXREdfV0lORE9XX1ZBTFVFKFdpbmRvd1ZhbHVlKSk7CisgIC8qIENsZWFyIFdbNjowXSBiaXRzICovCisKKyAgdG1wcmVnID0gV1dERy0+Q0ZSICYgQ0ZSX1dfTWFzazsKKworICAvKiBTZXQgV1s2OjBdIGJpdHMgYWNjb3JkaW5nIHRvIFdpbmRvd1ZhbHVlIHZhbHVlICovCisgIHRtcHJlZyB8PSBXaW5kb3dWYWx1ZSAmICh1aW50MzJfdCkgQklUX01hc2s7CisKKyAgLyogU3RvcmUgdGhlIG5ldyB2YWx1ZSAqLworICBXV0RHLT5DRlIgPSB0bXByZWc7Cit9CisKKy8qKgorICAqIEBicmllZiAgRW5hYmxlcyB0aGUgV1dERyBFYXJseSBXYWtldXAgaW50ZXJydXB0KEVXSSkuCisgICogQHBhcmFtICBOb25lCisgICogQHJldHZhbCBOb25lCisgICovCit2b2lkIFdXREdfRW5hYmxlSVQodm9pZCkKK3sKKyAgKihfX0lPIHVpbnQzMl90ICopIENGUl9FV0lfQkIgPSAodWludDMyX3QpRU5BQkxFOworfQorCisvKioKKyAgKiBAYnJpZWYgIFNldHMgdGhlIFdXREcgY291bnRlciB2YWx1ZS4KKyAgKiBAcGFyYW0gIENvdW50ZXI6IHNwZWNpZmllcyB0aGUgd2F0Y2hkb2cgY291bnRlciB2YWx1ZS4KKyAgKiAgIFRoaXMgcGFyYW1ldGVyIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbiAweDQwIGFuZCAweDdGLgorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBXV0RHX1NldENvdW50ZXIodWludDhfdCBDb3VudGVyKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfV1dER19DT1VOVEVSKENvdW50ZXIpKTsKKyAgLyogV3JpdGUgdG8gVFs2OjBdIGJpdHMgdG8gY29uZmlndXJlIHRoZSBjb3VudGVyIHZhbHVlLCBubyBuZWVkIHRvIGRvCisgICAgIGEgcmVhZC1tb2RpZnktd3JpdGU7IHdyaXRpbmcgYSAwIHRvIFdER0EgYml0IGRvZXMgbm90aGluZyAqLworICBXV0RHLT5DUiA9IENvdW50ZXIgJiBCSVRfTWFzazsKK30KKworLyoqCisgICogQGJyaWVmICBFbmFibGVzIFdXREcgYW5kIGxvYWQgdGhlIGNvdW50ZXIgdmFsdWUuICAgICAgICAgICAgICAgICAgCisgICogQHBhcmFtICBDb3VudGVyOiBzcGVjaWZpZXMgdGhlIHdhdGNoZG9nIGNvdW50ZXIgdmFsdWUuCisgICogICBUaGlzIHBhcmFtZXRlciBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW4gMHg0MCBhbmQgMHg3Ri4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3ZvaWQgV1dER19FbmFibGUodWludDhfdCBDb3VudGVyKQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfV1dER19DT1VOVEVSKENvdW50ZXIpKTsKKyAgV1dERy0+Q1IgPSBDUl9XREdBX1NldCB8IENvdW50ZXI7Cit9CisKKy8qKgorICAqIEBicmllZiAgQ2hlY2tzIHdoZXRoZXIgdGhlIEVhcmx5IFdha2V1cCBpbnRlcnJ1cHQgZmxhZyBpcyBzZXQgb3Igbm90LgorICAqIEBwYXJhbSAgTm9uZQorICAqIEByZXR2YWwgVGhlIG5ldyBzdGF0ZSBvZiB0aGUgRWFybHkgV2FrZXVwIGludGVycnVwdCBmbGFnIChTRVQgb3IgUkVTRVQpCisgICovCitGbGFnU3RhdHVzIFdXREdfR2V0RmxhZ1N0YXR1cyh2b2lkKQoreworICByZXR1cm4gKEZsYWdTdGF0dXMpKFdXREctPlNSKTsKK30KKworLyoqCisgICogQGJyaWVmICBDbGVhcnMgRWFybHkgV2FrZXVwIGludGVycnVwdCBmbGFnLgorICAqIEBwYXJhbSAgTm9uZQorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBXV0RHX0NsZWFyRmxhZyh2b2lkKQoreworICBXV0RHLT5TUiA9ICh1aW50MzJfdClSRVNFVDsKK30KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCAyMDExIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL3N0X2Z3X2xpYi9zdGFydHVwX3N0bTMyZjEweF9oZC5zIGIvc3RfZndfbGliL3N0YXJ0dXBfc3RtMzJmMTB4X2hkLnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmFhYjI4YQotLS0gL2Rldi9udWxsCisrKyBiL3N0X2Z3X2xpYi9zdGFydHVwX3N0bTMyZjEweF9oZC5zCkBAIC0wLDAgKzEsMzU4IEBACis7KioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCAyMDExIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKioqKioqKioqKioqKioqKgorOyogRmlsZSBOYW1lICAgICAgICAgIDogc3RhcnR1cF9zdG0zMmYxMHhfaGQucworOyogQXV0aG9yICAgICAgICAgICAgIDogTUNEIEFwcGxpY2F0aW9uIFRlYW0KKzsqIFZlcnNpb24gICAgICAgICAgICA6IFYzLjUuMAorOyogRGF0ZSAgICAgICAgICAgICAgIDogMTEtTWFyY2gtMjAxMQorOyogRGVzY3JpcHRpb24gICAgICAgIDogU1RNMzJGMTB4IEhpZ2ggRGVuc2l0eSBEZXZpY2VzIHZlY3RvciB0YWJsZSBmb3IgTURLLUFSTSAKKzsqICAgICAgICAgICAgICAgICAgICAgIHRvb2xjaGFpbi4gCis7KiAgICAgICAgICAgICAgICAgICAgICBUaGlzIG1vZHVsZSBwZXJmb3JtczoKKzsqICAgICAgICAgICAgICAgICAgICAgIC0gU2V0IHRoZSBpbml0aWFsIFNQCis7KiAgICAgICAgICAgICAgICAgICAgICAtIFNldCB0aGUgaW5pdGlhbCBQQyA9PSBSZXNldF9IYW5kbGVyCis7KiAgICAgICAgICAgICAgICAgICAgICAtIFNldCB0aGUgdmVjdG9yIHRhYmxlIGVudHJpZXMgd2l0aCB0aGUgZXhjZXB0aW9ucyBJU1IgYWRkcmVzcworOyogICAgICAgICAgICAgICAgICAgICAgLSBDb25maWd1cmUgdGhlIGNsb2NrIHN5c3RlbSBhbmQgYWxzbyBjb25maWd1cmUgdGhlIGV4dGVybmFsIAorOyogICAgICAgICAgICAgICAgICAgICAgICBTUkFNIG1vdW50ZWQgb24gU1RNMzIxMEUtRVZBTCBib2FyZCB0byBiZSB1c2VkIGFzIGRhdGEgCis7KiAgICAgICAgICAgICAgICAgICAgICAgIG1lbW9yeSAob3B0aW9uYWwsIHRvIGJlIGVuYWJsZWQgYnkgdXNlcikKKzsqICAgICAgICAgICAgICAgICAgICAgIC0gQnJhbmNoZXMgdG8gX19tYWluIGluIHRoZSBDIGxpYnJhcnkgKHdoaWNoIGV2ZW50dWFsbHkKKzsqICAgICAgICAgICAgICAgICAgICAgICAgY2FsbHMgbWFpbigpKS4KKzsqICAgICAgICAgICAgICAgICAgICAgIEFmdGVyIFJlc2V0IHRoZSBDb3J0ZXhNMyBwcm9jZXNzb3IgaXMgaW4gVGhyZWFkIG1vZGUsCis7KiAgICAgICAgICAgICAgICAgICAgICBwcmlvcml0eSBpcyBQcml2aWxlZ2VkLCBhbmQgdGhlIFN0YWNrIGlzIHNldCB0byBNYWluLgorOyogPDw8IFVzZSBDb25maWd1cmF0aW9uIFdpemFyZCBpbiBDb250ZXh0IE1lbnUgPj4+ICAgCis7KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorOyBUSEUgUFJFU0VOVCBGSVJNV0FSRSBXSElDSCBJUyBGT1IgR1VJREFOQ0UgT05MWSBBSU1TIEFUIFBST1ZJRElORyBDVVNUT01FUlMKKzsgV0lUSCBDT0RJTkcgSU5GT1JNQVRJT04gUkVHQVJESU5HIFRIRUlSIFBST0RVQ1RTIElOIE9SREVSIEZPUiBUSEVNIFRPIFNBVkUgVElNRS4KKzsgQVMgQSBSRVNVTFQsIFNUTUlDUk9FTEVDVFJPTklDUyBTSEFMTCBOT1QgQkUgSEVMRCBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsCis7IElORElSRUNUIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBXSVRIIFJFU1BFQ1QgVE8gQU5ZIENMQUlNUyBBUklTSU5HIEZST00gVEhFCis7IENPTlRFTlQgT0YgU1VDSCBGSVJNV0FSRSBBTkQvT1IgVEhFIFVTRSBNQURFIEJZIENVU1RPTUVSUyBPRiBUSEUgQ09ESU5HCis7IElORk9STUFUSU9OIENPTlRBSU5FRCBIRVJFSU4gSU4gQ09OTkVDVElPTiBXSVRIIFRIRUlSIFBST0RVQ1RTLgorOyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworOyBBbW91bnQgb2YgbWVtb3J5IChpbiBieXRlcykgYWxsb2NhdGVkIGZvciBTdGFjaworOyBUYWlsb3IgdGhpcyB2YWx1ZSB0byB5b3VyIGFwcGxpY2F0aW9uIG5lZWRzCis7IDxoPiBTdGFjayBDb25maWd1cmF0aW9uCis7ICAgPG8+IFN0YWNrIFNpemUgKGluIEJ5dGVzKSA8MHgwLTB4RkZGRkZGRkY6OD4KKzsgPC9oPgorCitTdGFja19TaXplICAgICAgRVFVICAgICAweDAwMDAzMDAwCisKKyAgICAgICAgICAgICAgICBBUkVBICAgIFNUQUNLLCBOT0lOSVQsIFJFQURXUklURSwgQUxJR049MworU3RhY2tfTWVtICAgICAgIFNQQUNFICAgU3RhY2tfU2l6ZQorX19pbml0aWFsX3NwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorOyA8aD4gSGVhcCBDb25maWd1cmF0aW9uCis7ICAgPG8+ICBIZWFwIFNpemUgKGluIEJ5dGVzKSA8MHgwLTB4RkZGRkZGRkY6OD4KKzsgPC9oPgorCitIZWFwX1NpemUgICAgICAgRVFVICAgICAweDAwMDAwMDAwCisKKyAgICAgICAgICAgICAgICBBUkVBICAgIEhFQVAsIE5PSU5JVCwgUkVBRFdSSVRFLCBBTElHTj0zCitfX2hlYXBfYmFzZQorSGVhcF9NZW0gICAgICAgIFNQQUNFICAgSGVhcF9TaXplCitfX2hlYXBfbGltaXQKKworICAgICAgICAgICAgICAgIFBSRVNFUlZFOAorICAgICAgICAgICAgICAgIFRIVU1CCisKKworOyBWZWN0b3IgVGFibGUgTWFwcGVkIHRvIEFkZHJlc3MgMCBhdCBSZXNldAorICAgICAgICAgICAgICAgIEFSRUEgICAgUkVTRVQsIERBVEEsIFJFQURPTkxZCisgICAgICAgICAgICAgICAgRVhQT1JUICBfX1ZlY3RvcnMKKyAgICAgICAgICAgICAgICBFWFBPUlQgIF9fVmVjdG9yc19FbmQKKyAgICAgICAgICAgICAgICBFWFBPUlQgIF9fVmVjdG9yc19TaXplCisKK19fVmVjdG9ycyAgICAgICBEQ0QgICAgIF9faW5pdGlhbF9zcCAgICAgICAgICAgICAgIDsgVG9wIG9mIFN0YWNrCisgICAgICAgICAgICAgICAgRENEICAgICBSZXNldF9IYW5kbGVyICAgICAgICAgICAgICA7IFJlc2V0IEhhbmRsZXIKKyAgICAgICAgICAgICAgICBEQ0QgICAgIE5NSV9IYW5kbGVyICAgICAgICAgICAgICAgIDsgTk1JIEhhbmRsZXIKKyAgICAgICAgICAgICAgICBEQ0QgICAgIEhhcmRGYXVsdF9IYW5kbGVyICAgICAgICAgIDsgSGFyZCBGYXVsdCBIYW5kbGVyCisgICAgICAgICAgICAgICAgRENEICAgICBNZW1NYW5hZ2VfSGFuZGxlciAgICAgICAgICA7IE1QVSBGYXVsdCBIYW5kbGVyCisgICAgICAgICAgICAgICAgRENEICAgICBCdXNGYXVsdF9IYW5kbGVyICAgICAgICAgICA7IEJ1cyBGYXVsdCBIYW5kbGVyCisgICAgICAgICAgICAgICAgRENEICAgICBVc2FnZUZhdWx0X0hhbmRsZXIgICAgICAgICA7IFVzYWdlIEZhdWx0IEhhbmRsZXIKKyAgICAgICAgICAgICAgICBEQ0QgICAgIDAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgUmVzZXJ2ZWQKKyAgICAgICAgICAgICAgICBEQ0QgICAgIDAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgUmVzZXJ2ZWQKKyAgICAgICAgICAgICAgICBEQ0QgICAgIDAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgUmVzZXJ2ZWQKKyAgICAgICAgICAgICAgICBEQ0QgICAgIDAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgUmVzZXJ2ZWQKKyAgICAgICAgICAgICAgICBEQ0QgICAgIFNWQ19IYW5kbGVyICAgICAgICAgICAgICAgIDsgU1ZDYWxsIEhhbmRsZXIKKyAgICAgICAgICAgICAgICBEQ0QgICAgIERlYnVnTW9uX0hhbmRsZXIgICAgICAgICAgIDsgRGVidWcgTW9uaXRvciBIYW5kbGVyCisgICAgICAgICAgICAgICAgRENEICAgICAwICAgICAgICAgICAgICAgICAgICAgICAgICA7IFJlc2VydmVkCisgICAgICAgICAgICAgICAgRENEICAgICBQZW5kU1ZfSGFuZGxlciAgICAgICAgICAgICA7IFBlbmRTViBIYW5kbGVyCisgICAgICAgICAgICAgICAgRENEICAgICBTeXNUaWNrX0hhbmRsZXIgICAgICAgICAgICA7IFN5c1RpY2sgSGFuZGxlcgorCisgICAgICAgICAgICAgICAgOyBFeHRlcm5hbCBJbnRlcnJ1cHRzCisgICAgICAgICAgICAgICAgRENEICAgICBXV0RHX0lSUUhhbmRsZXIgICAgICAgICAgICA7IFdpbmRvdyBXYXRjaGRvZworICAgICAgICAgICAgICAgIERDRCAgICAgUFZEX0lSUUhhbmRsZXIgICAgICAgICAgICAgOyBQVkQgdGhyb3VnaCBFWFRJIExpbmUgZGV0ZWN0CisgICAgICAgICAgICAgICAgRENEICAgICBUQU1QRVJfSVJRSGFuZGxlciAgICAgICAgICA7IFRhbXBlcgorICAgICAgICAgICAgICAgIERDRCAgICAgUlRDX0lSUUhhbmRsZXIgICAgICAgICAgICAgOyBSVEMKKyAgICAgICAgICAgICAgICBEQ0QgICAgIEZMQVNIX0lSUUhhbmRsZXIgICAgICAgICAgIDsgRmxhc2gKKyAgICAgICAgICAgICAgICBEQ0QgICAgIFJDQ19JUlFIYW5kbGVyICAgICAgICAgICAgIDsgUkNDCisgICAgICAgICAgICAgICAgRENEICAgICBFWFRJMF9JUlFIYW5kbGVyICAgICAgICAgICA7IEVYVEkgTGluZSAwCisgICAgICAgICAgICAgICAgRENEICAgICBFWFRJMV9JUlFIYW5kbGVyICAgICAgICAgICA7IEVYVEkgTGluZSAxCisgICAgICAgICAgICAgICAgRENEICAgICBFWFRJMl9JUlFIYW5kbGVyICAgICAgICAgICA7IEVYVEkgTGluZSAyCisgICAgICAgICAgICAgICAgRENEICAgICBFWFRJM19JUlFIYW5kbGVyICAgICAgICAgICA7IEVYVEkgTGluZSAzCisgICAgICAgICAgICAgICAgRENEICAgICBFWFRJNF9JUlFIYW5kbGVyICAgICAgICAgICA7IEVYVEkgTGluZSA0CisgICAgICAgICAgICAgICAgRENEICAgICBETUExX0NoYW5uZWwxX0lSUUhhbmRsZXIgICA7IERNQTEgQ2hhbm5lbCAxCisgICAgICAgICAgICAgICAgRENEICAgICBETUExX0NoYW5uZWwyX0lSUUhhbmRsZXIgICA7IERNQTEgQ2hhbm5lbCAyCisgICAgICAgICAgICAgICAgRENEICAgICBETUExX0NoYW5uZWwzX0lSUUhhbmRsZXIgICA7IERNQTEgQ2hhbm5lbCAzCisgICAgICAgICAgICAgICAgRENEICAgICBETUExX0NoYW5uZWw0X0lSUUhhbmRsZXIgICA7IERNQTEgQ2hhbm5lbCA0CisgICAgICAgICAgICAgICAgRENEICAgICBETUExX0NoYW5uZWw1X0lSUUhhbmRsZXIgICA7IERNQTEgQ2hhbm5lbCA1CisgICAgICAgICAgICAgICAgRENEICAgICBETUExX0NoYW5uZWw2X0lSUUhhbmRsZXIgICA7IERNQTEgQ2hhbm5lbCA2CisgICAgICAgICAgICAgICAgRENEICAgICBETUExX0NoYW5uZWw3X0lSUUhhbmRsZXIgICA7IERNQTEgQ2hhbm5lbCA3CisgICAgICAgICAgICAgICAgRENEICAgICBBREMxXzJfSVJRSGFuZGxlciAgICAgICAgICA7IEFEQzEgJiBBREMyCisgICAgICAgICAgICAgICAgRENEICAgICBVU0JfSFBfQ0FOMV9UWF9JUlFIYW5kbGVyICA7IFVTQiBIaWdoIFByaW9yaXR5IG9yIENBTjEgVFgKKyAgICAgICAgICAgICAgICBEQ0QgICAgIFVTQl9MUF9DQU4xX1JYMF9JUlFIYW5kbGVyIDsgVVNCIExvdyAgUHJpb3JpdHkgb3IgQ0FOMSBSWDAKKyAgICAgICAgICAgICAgICBEQ0QgICAgIENBTjFfUlgxX0lSUUhhbmRsZXIgICAgICAgIDsgQ0FOMSBSWDEKKyAgICAgICAgICAgICAgICBEQ0QgICAgIENBTjFfU0NFX0lSUUhhbmRsZXIgICAgICAgIDsgQ0FOMSBTQ0UKKyAgICAgICAgICAgICAgICBEQ0QgICAgIEVYVEk5XzVfSVJRSGFuZGxlciAgICAgICAgIDsgRVhUSSBMaW5lIDkuLjUKKyAgICAgICAgICAgICAgICBEQ0QgICAgIFRJTTFfQlJLX0lSUUhhbmRsZXIgICAgICAgIDsgVElNMSBCcmVhaworICAgICAgICAgICAgICAgIERDRCAgICAgVElNMV9VUF9JUlFIYW5kbGVyICAgICAgICAgOyBUSU0xIFVwZGF0ZQorICAgICAgICAgICAgICAgIERDRCAgICAgVElNMV9UUkdfQ09NX0lSUUhhbmRsZXIgICAgOyBUSU0xIFRyaWdnZXIgYW5kIENvbW11dGF0aW9uCisgICAgICAgICAgICAgICAgRENEICAgICBUSU0xX0NDX0lSUUhhbmRsZXIgICAgICAgICA7IFRJTTEgQ2FwdHVyZSBDb21wYXJlCisgICAgICAgICAgICAgICAgRENEICAgICBUSU0yX0lSUUhhbmRsZXIgICAgICAgICAgICA7IFRJTTIKKyAgICAgICAgICAgICAgICBEQ0QgICAgIFRJTTNfSVJRSGFuZGxlciAgICAgICAgICAgIDsgVElNMworICAgICAgICAgICAgICAgIERDRCAgICAgVElNNF9JUlFIYW5kbGVyICAgICAgICAgICAgOyBUSU00CisgICAgICAgICAgICAgICAgRENEICAgICBJMkMxX0VWX0lSUUhhbmRsZXIgICAgICAgICA7IEkyQzEgRXZlbnQKKyAgICAgICAgICAgICAgICBEQ0QgICAgIEkyQzFfRVJfSVJRSGFuZGxlciAgICAgICAgIDsgSTJDMSBFcnJvcgorICAgICAgICAgICAgICAgIERDRCAgICAgSTJDMl9FVl9JUlFIYW5kbGVyICAgICAgICAgOyBJMkMyIEV2ZW50CisgICAgICAgICAgICAgICAgRENEICAgICBJMkMyX0VSX0lSUUhhbmRsZXIgICAgICAgICA7IEkyQzIgRXJyb3IKKyAgICAgICAgICAgICAgICBEQ0QgICAgIFNQSTFfSVJRSGFuZGxlciAgICAgICAgICAgIDsgU1BJMQorICAgICAgICAgICAgICAgIERDRCAgICAgU1BJMl9JUlFIYW5kbGVyICAgICAgICAgICAgOyBTUEkyCisgICAgICAgICAgICAgICAgRENEICAgICBVU0FSVDFfSVJRSGFuZGxlciAgICAgICAgICA7IFVTQVJUMQorICAgICAgICAgICAgICAgIERDRCAgICAgVVNBUlQyX0lSUUhhbmRsZXIgICAgICAgICAgOyBVU0FSVDIKKyAgICAgICAgICAgICAgICBEQ0QgICAgIFVTQVJUM19JUlFIYW5kbGVyICAgICAgICAgIDsgVVNBUlQzCisgICAgICAgICAgICAgICAgRENEICAgICBFWFRJMTVfMTBfSVJRSGFuZGxlciAgICAgICA7IEVYVEkgTGluZSAxNS4uMTAKKyAgICAgICAgICAgICAgICBEQ0QgICAgIFJUQ0FsYXJtX0lSUUhhbmRsZXIgICAgICAgIDsgUlRDIEFsYXJtIHRocm91Z2ggRVhUSSBMaW5lCisgICAgICAgICAgICAgICAgRENEICAgICBVU0JXYWtlVXBfSVJRSGFuZGxlciAgICAgICA7IFVTQiBXYWtldXAgZnJvbSBzdXNwZW5kCisgICAgICAgICAgICAgICAgRENEICAgICBUSU04X0JSS19JUlFIYW5kbGVyICAgICAgICA7IFRJTTggQnJlYWsKKyAgICAgICAgICAgICAgICBEQ0QgICAgIFRJTThfVVBfSVJRSGFuZGxlciAgICAgICAgIDsgVElNOCBVcGRhdGUKKyAgICAgICAgICAgICAgICBEQ0QgICAgIFRJTThfVFJHX0NPTV9JUlFIYW5kbGVyICAgIDsgVElNOCBUcmlnZ2VyIGFuZCBDb21tdXRhdGlvbgorICAgICAgICAgICAgICAgIERDRCAgICAgVElNOF9DQ19JUlFIYW5kbGVyICAgICAgICAgOyBUSU04IENhcHR1cmUgQ29tcGFyZQorICAgICAgICAgICAgICAgIERDRCAgICAgQURDM19JUlFIYW5kbGVyICAgICAgICAgICAgOyBBREMzCisgICAgICAgICAgICAgICAgRENEICAgICBGU01DX0lSUUhhbmRsZXIgICAgICAgICAgICA7IEZTTUMKKyAgICAgICAgICAgICAgICBEQ0QgICAgIFNESU9fSVJRSGFuZGxlciAgICAgICAgICAgIDsgU0RJTworICAgICAgICAgICAgICAgIERDRCAgICAgVElNNV9JUlFIYW5kbGVyICAgICAgICAgICAgOyBUSU01CisgICAgICAgICAgICAgICAgRENEICAgICBTUEkzX0lSUUhhbmRsZXIgICAgICAgICAgICA7IFNQSTMKKyAgICAgICAgICAgICAgICBEQ0QgICAgIFVBUlQ0X0lSUUhhbmRsZXIgICAgICAgICAgIDsgVUFSVDQKKyAgICAgICAgICAgICAgICBEQ0QgICAgIFVBUlQ1X0lSUUhhbmRsZXIgICAgICAgICAgIDsgVUFSVDUKKyAgICAgICAgICAgICAgICBEQ0QgICAgIFRJTTZfSVJRSGFuZGxlciAgICAgICAgICAgIDsgVElNNgorICAgICAgICAgICAgICAgIERDRCAgICAgVElNN19JUlFIYW5kbGVyICAgICAgICAgICAgOyBUSU03CisgICAgICAgICAgICAgICAgRENEICAgICBETUEyX0NoYW5uZWwxX0lSUUhhbmRsZXIgICA7IERNQTIgQ2hhbm5lbDEKKyAgICAgICAgICAgICAgICBEQ0QgICAgIERNQTJfQ2hhbm5lbDJfSVJRSGFuZGxlciAgIDsgRE1BMiBDaGFubmVsMgorICAgICAgICAgICAgICAgIERDRCAgICAgRE1BMl9DaGFubmVsM19JUlFIYW5kbGVyICAgOyBETUEyIENoYW5uZWwzCisgICAgICAgICAgICAgICAgRENEICAgICBETUEyX0NoYW5uZWw0XzVfSVJRSGFuZGxlciA7IERNQTIgQ2hhbm5lbDQgJiBDaGFubmVsNQorX19WZWN0b3JzX0VuZAorCitfX1ZlY3RvcnNfU2l6ZSAgRVFVICBfX1ZlY3RvcnNfRW5kIC0gX19WZWN0b3JzCisKKyAgICAgICAgICAgICAgICBBUkVBICAgIHwudGV4dHwsIENPREUsIFJFQURPTkxZCisgICAgICAgICAgICAgICAgCis7IFJlc2V0IGhhbmRsZXIKK1Jlc2V0X0hhbmRsZXIgICBQUk9DCisgICAgICAgICAgICAgICAgRVhQT1JUICBSZXNldF9IYW5kbGVyICAgICAgICAgICAgIFtXRUFLXQorICAgICAgICAgICAgICAgIElNUE9SVCAgX19tYWluCisgICAgICAgICAgICAgICAgSU1QT1JUICBTeXN0ZW1Jbml0CisgICAgICAgICAgICAgICAgTERSICAgICBSMCwgPVN5c3RlbUluaXQKKyAgICAgICAgICAgICAgICBCTFggICAgIFIwICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgTERSICAgICBSMCwgPV9fbWFpbgorICAgICAgICAgICAgICAgIEJYICAgICAgUjAKKyAgICAgICAgICAgICAgICBFTkRQCisgICAgICAgICAgICAgICAgCis7IER1bW15IEV4Y2VwdGlvbiBIYW5kbGVycyAoaW5maW5pdGUgbG9vcHMgd2hpY2ggY2FuIGJlIG1vZGlmaWVkKQorCitOTUlfSGFuZGxlciAgICAgUFJPQworICAgICAgICAgICAgICAgIEVYUE9SVCAgTk1JX0hhbmRsZXIgICAgICAgICAgICAgICAgW1dFQUtdCisgICAgICAgICAgICAgICAgQiAgICAgICAuCisgICAgICAgICAgICAgICAgRU5EUAorSGFyZEZhdWx0X0hhbmRsZXJcCisgICAgICAgICAgICAgICAgUFJPQworICAgICAgICAgICAgICAgIEVYUE9SVCAgSGFyZEZhdWx0X0hhbmRsZXIgICAgICAgICAgW1dFQUtdCisgICAgICAgICAgICAgICAgQiAgICAgICAuCisgICAgICAgICAgICAgICAgRU5EUAorTWVtTWFuYWdlX0hhbmRsZXJcCisgICAgICAgICAgICAgICAgUFJPQworICAgICAgICAgICAgICAgIEVYUE9SVCAgTWVtTWFuYWdlX0hhbmRsZXIgICAgICAgICAgW1dFQUtdCisgICAgICAgICAgICAgICAgQiAgICAgICAuCisgICAgICAgICAgICAgICAgRU5EUAorQnVzRmF1bHRfSGFuZGxlclwKKyAgICAgICAgICAgICAgICBQUk9DCisgICAgICAgICAgICAgICAgRVhQT1JUICBCdXNGYXVsdF9IYW5kbGVyICAgICAgICAgICBbV0VBS10KKyAgICAgICAgICAgICAgICBCICAgICAgIC4KKyAgICAgICAgICAgICAgICBFTkRQCitVc2FnZUZhdWx0X0hhbmRsZXJcCisgICAgICAgICAgICAgICAgUFJPQworICAgICAgICAgICAgICAgIEVYUE9SVCAgVXNhZ2VGYXVsdF9IYW5kbGVyICAgICAgICAgW1dFQUtdCisgICAgICAgICAgICAgICAgQiAgICAgICAuCisgICAgICAgICAgICAgICAgRU5EUAorU1ZDX0hhbmRsZXIgICAgIFBST0MKKyAgICAgICAgICAgICAgICBFWFBPUlQgIFNWQ19IYW5kbGVyICAgICAgICAgICAgICAgIFtXRUFLXQorICAgICAgICAgICAgICAgIEIgICAgICAgLgorICAgICAgICAgICAgICAgIEVORFAKK0RlYnVnTW9uX0hhbmRsZXJcCisgICAgICAgICAgICAgICAgUFJPQworICAgICAgICAgICAgICAgIEVYUE9SVCAgRGVidWdNb25fSGFuZGxlciAgICAgICAgICAgW1dFQUtdCisgICAgICAgICAgICAgICAgQiAgICAgICAuCisgICAgICAgICAgICAgICAgRU5EUAorUGVuZFNWX0hhbmRsZXIgIFBST0MKKyAgICAgICAgICAgICAgICBFWFBPUlQgIFBlbmRTVl9IYW5kbGVyICAgICAgICAgICAgIFtXRUFLXQorICAgICAgICAgICAgICAgIEIgICAgICAgLgorICAgICAgICAgICAgICAgIEVORFAKK1N5c1RpY2tfSGFuZGxlciBQUk9DCisgICAgICAgICAgICAgICAgRVhQT1JUICBTeXNUaWNrX0hhbmRsZXIgICAgICAgICAgICBbV0VBS10KKyAgICAgICAgICAgICAgICBCICAgICAgIC4KKyAgICAgICAgICAgICAgICBFTkRQCisKK0RlZmF1bHRfSGFuZGxlciBQUk9DCisKKyAgICAgICAgICAgICAgICBFWFBPUlQgIFdXREdfSVJRSGFuZGxlciAgICAgICAgICAgIFtXRUFLXQorICAgICAgICAgICAgICAgIEVYUE9SVCAgUFZEX0lSUUhhbmRsZXIgICAgICAgICAgICAgW1dFQUtdCisgICAgICAgICAgICAgICAgRVhQT1JUICBUQU1QRVJfSVJRSGFuZGxlciAgICAgICAgICBbV0VBS10KKyAgICAgICAgICAgICAgICBFWFBPUlQgIFJUQ19JUlFIYW5kbGVyICAgICAgICAgICAgIFtXRUFLXQorICAgICAgICAgICAgICAgIEVYUE9SVCAgRkxBU0hfSVJRSGFuZGxlciAgICAgICAgICAgW1dFQUtdCisgICAgICAgICAgICAgICAgRVhQT1JUICBSQ0NfSVJRSGFuZGxlciAgICAgICAgICAgICBbV0VBS10KKyAgICAgICAgICAgICAgICBFWFBPUlQgIEVYVEkwX0lSUUhhbmRsZXIgICAgICAgICAgIFtXRUFLXQorICAgICAgICAgICAgICAgIEVYUE9SVCAgRVhUSTFfSVJRSGFuZGxlciAgICAgICAgICAgW1dFQUtdCisgICAgICAgICAgICAgICAgRVhQT1JUICBFWFRJMl9JUlFIYW5kbGVyICAgICAgICAgICBbV0VBS10KKyAgICAgICAgICAgICAgICBFWFBPUlQgIEVYVEkzX0lSUUhhbmRsZXIgICAgICAgICAgIFtXRUFLXQorICAgICAgICAgICAgICAgIEVYUE9SVCAgRVhUSTRfSVJRSGFuZGxlciAgICAgICAgICAgW1dFQUtdCisgICAgICAgICAgICAgICAgRVhQT1JUICBETUExX0NoYW5uZWwxX0lSUUhhbmRsZXIgICBbV0VBS10KKyAgICAgICAgICAgICAgICBFWFBPUlQgIERNQTFfQ2hhbm5lbDJfSVJRSGFuZGxlciAgIFtXRUFLXQorICAgICAgICAgICAgICAgIEVYUE9SVCAgRE1BMV9DaGFubmVsM19JUlFIYW5kbGVyICAgW1dFQUtdCisgICAgICAgICAgICAgICAgRVhQT1JUICBETUExX0NoYW5uZWw0X0lSUUhhbmRsZXIgICBbV0VBS10KKyAgICAgICAgICAgICAgICBFWFBPUlQgIERNQTFfQ2hhbm5lbDVfSVJRSGFuZGxlciAgIFtXRUFLXQorICAgICAgICAgICAgICAgIEVYUE9SVCAgRE1BMV9DaGFubmVsNl9JUlFIYW5kbGVyICAgW1dFQUtdCisgICAgICAgICAgICAgICAgRVhQT1JUICBETUExX0NoYW5uZWw3X0lSUUhhbmRsZXIgICBbV0VBS10KKyAgICAgICAgICAgICAgICBFWFBPUlQgIEFEQzFfMl9JUlFIYW5kbGVyICAgICAgICAgIFtXRUFLXQorICAgICAgICAgICAgICAgIEVYUE9SVCAgVVNCX0hQX0NBTjFfVFhfSVJRSGFuZGxlciAgW1dFQUtdCisgICAgICAgICAgICAgICAgRVhQT1JUICBVU0JfTFBfQ0FOMV9SWDBfSVJRSGFuZGxlciBbV0VBS10KKyAgICAgICAgICAgICAgICBFWFBPUlQgIENBTjFfUlgxX0lSUUhhbmRsZXIgICAgICAgIFtXRUFLXQorICAgICAgICAgICAgICAgIEVYUE9SVCAgQ0FOMV9TQ0VfSVJRSGFuZGxlciAgICAgICAgW1dFQUtdCisgICAgICAgICAgICAgICAgRVhQT1JUICBFWFRJOV81X0lSUUhhbmRsZXIgICAgICAgICBbV0VBS10KKyAgICAgICAgICAgICAgICBFWFBPUlQgIFRJTTFfQlJLX0lSUUhhbmRsZXIgICAgICAgIFtXRUFLXQorICAgICAgICAgICAgICAgIEVYUE9SVCAgVElNMV9VUF9JUlFIYW5kbGVyICAgICAgICAgW1dFQUtdCisgICAgICAgICAgICAgICAgRVhQT1JUICBUSU0xX1RSR19DT01fSVJRSGFuZGxlciAgICBbV0VBS10KKyAgICAgICAgICAgICAgICBFWFBPUlQgIFRJTTFfQ0NfSVJRSGFuZGxlciAgICAgICAgIFtXRUFLXQorICAgICAgICAgICAgICAgIEVYUE9SVCAgVElNMl9JUlFIYW5kbGVyICAgICAgICAgICAgW1dFQUtdCisgICAgICAgICAgICAgICAgRVhQT1JUICBUSU0zX0lSUUhhbmRsZXIgICAgICAgICAgICBbV0VBS10KKyAgICAgICAgICAgICAgICBFWFBPUlQgIFRJTTRfSVJRSGFuZGxlciAgICAgICAgICAgIFtXRUFLXQorICAgICAgICAgICAgICAgIEVYUE9SVCAgSTJDMV9FVl9JUlFIYW5kbGVyICAgICAgICAgW1dFQUtdCisgICAgICAgICAgICAgICAgRVhQT1JUICBJMkMxX0VSX0lSUUhhbmRsZXIgICAgICAgICBbV0VBS10KKyAgICAgICAgICAgICAgICBFWFBPUlQgIEkyQzJfRVZfSVJRSGFuZGxlciAgICAgICAgIFtXRUFLXQorICAgICAgICAgICAgICAgIEVYUE9SVCAgSTJDMl9FUl9JUlFIYW5kbGVyICAgICAgICAgW1dFQUtdCisgICAgICAgICAgICAgICAgRVhQT1JUICBTUEkxX0lSUUhhbmRsZXIgICAgICAgICAgICBbV0VBS10KKyAgICAgICAgICAgICAgICBFWFBPUlQgIFNQSTJfSVJRSGFuZGxlciAgICAgICAgICAgIFtXRUFLXQorICAgICAgICAgICAgICAgIEVYUE9SVCAgVVNBUlQxX0lSUUhhbmRsZXIgICAgICAgICAgW1dFQUtdCisgICAgICAgICAgICAgICAgRVhQT1JUICBVU0FSVDJfSVJRSGFuZGxlciAgICAgICAgICBbV0VBS10KKyAgICAgICAgICAgICAgICBFWFBPUlQgIFVTQVJUM19JUlFIYW5kbGVyICAgICAgICAgIFtXRUFLXQorICAgICAgICAgICAgICAgIEVYUE9SVCAgRVhUSTE1XzEwX0lSUUhhbmRsZXIgICAgICAgW1dFQUtdCisgICAgICAgICAgICAgICAgRVhQT1JUICBSVENBbGFybV9JUlFIYW5kbGVyICAgICAgICBbV0VBS10KKyAgICAgICAgICAgICAgICBFWFBPUlQgIFVTQldha2VVcF9JUlFIYW5kbGVyICAgICAgIFtXRUFLXQorICAgICAgICAgICAgICAgIEVYUE9SVCAgVElNOF9CUktfSVJRSGFuZGxlciAgICAgICAgW1dFQUtdCisgICAgICAgICAgICAgICAgRVhQT1JUICBUSU04X1VQX0lSUUhhbmRsZXIgICAgICAgICBbV0VBS10KKyAgICAgICAgICAgICAgICBFWFBPUlQgIFRJTThfVFJHX0NPTV9JUlFIYW5kbGVyICAgIFtXRUFLXQorICAgICAgICAgICAgICAgIEVYUE9SVCAgVElNOF9DQ19JUlFIYW5kbGVyICAgICAgICAgW1dFQUtdCisgICAgICAgICAgICAgICAgRVhQT1JUICBBREMzX0lSUUhhbmRsZXIgICAgICAgICAgICBbV0VBS10KKyAgICAgICAgICAgICAgICBFWFBPUlQgIEZTTUNfSVJRSGFuZGxlciAgICAgICAgICAgIFtXRUFLXQorICAgICAgICAgICAgICAgIEVYUE9SVCAgU0RJT19JUlFIYW5kbGVyICAgICAgICAgICAgW1dFQUtdCisgICAgICAgICAgICAgICAgRVhQT1JUICBUSU01X0lSUUhhbmRsZXIgICAgICAgICAgICBbV0VBS10KKyAgICAgICAgICAgICAgICBFWFBPUlQgIFNQSTNfSVJRSGFuZGxlciAgICAgICAgICAgIFtXRUFLXQorICAgICAgICAgICAgICAgIEVYUE9SVCAgVUFSVDRfSVJRSGFuZGxlciAgICAgICAgICAgW1dFQUtdCisgICAgICAgICAgICAgICAgRVhQT1JUICBVQVJUNV9JUlFIYW5kbGVyICAgICAgICAgICBbV0VBS10KKyAgICAgICAgICAgICAgICBFWFBPUlQgIFRJTTZfSVJRSGFuZGxlciAgICAgICAgICAgIFtXRUFLXQorICAgICAgICAgICAgICAgIEVYUE9SVCAgVElNN19JUlFIYW5kbGVyICAgICAgICAgICAgW1dFQUtdCisgICAgICAgICAgICAgICAgRVhQT1JUICBETUEyX0NoYW5uZWwxX0lSUUhhbmRsZXIgICBbV0VBS10KKyAgICAgICAgICAgICAgICBFWFBPUlQgIERNQTJfQ2hhbm5lbDJfSVJRSGFuZGxlciAgIFtXRUFLXQorICAgICAgICAgICAgICAgIEVYUE9SVCAgRE1BMl9DaGFubmVsM19JUlFIYW5kbGVyICAgW1dFQUtdCisgICAgICAgICAgICAgICAgRVhQT1JUICBETUEyX0NoYW5uZWw0XzVfSVJRSGFuZGxlciBbV0VBS10KKworV1dER19JUlFIYW5kbGVyCitQVkRfSVJRSGFuZGxlcgorVEFNUEVSX0lSUUhhbmRsZXIKK1JUQ19JUlFIYW5kbGVyCitGTEFTSF9JUlFIYW5kbGVyCitSQ0NfSVJRSGFuZGxlcgorRVhUSTBfSVJRSGFuZGxlcgorRVhUSTFfSVJRSGFuZGxlcgorRVhUSTJfSVJRSGFuZGxlcgorRVhUSTNfSVJRSGFuZGxlcgorRVhUSTRfSVJRSGFuZGxlcgorRE1BMV9DaGFubmVsMV9JUlFIYW5kbGVyCitETUExX0NoYW5uZWwyX0lSUUhhbmRsZXIKK0RNQTFfQ2hhbm5lbDNfSVJRSGFuZGxlcgorRE1BMV9DaGFubmVsNF9JUlFIYW5kbGVyCitETUExX0NoYW5uZWw1X0lSUUhhbmRsZXIKK0RNQTFfQ2hhbm5lbDZfSVJRSGFuZGxlcgorRE1BMV9DaGFubmVsN19JUlFIYW5kbGVyCitBREMxXzJfSVJRSGFuZGxlcgorVVNCX0hQX0NBTjFfVFhfSVJRSGFuZGxlcgorVVNCX0xQX0NBTjFfUlgwX0lSUUhhbmRsZXIKK0NBTjFfUlgxX0lSUUhhbmRsZXIKK0NBTjFfU0NFX0lSUUhhbmRsZXIKK0VYVEk5XzVfSVJRSGFuZGxlcgorVElNMV9CUktfSVJRSGFuZGxlcgorVElNMV9VUF9JUlFIYW5kbGVyCitUSU0xX1RSR19DT01fSVJRSGFuZGxlcgorVElNMV9DQ19JUlFIYW5kbGVyCitUSU0yX0lSUUhhbmRsZXIKK1RJTTNfSVJRSGFuZGxlcgorVElNNF9JUlFIYW5kbGVyCitJMkMxX0VWX0lSUUhhbmRsZXIKK0kyQzFfRVJfSVJRSGFuZGxlcgorSTJDMl9FVl9JUlFIYW5kbGVyCitJMkMyX0VSX0lSUUhhbmRsZXIKK1NQSTFfSVJRSGFuZGxlcgorU1BJMl9JUlFIYW5kbGVyCitVU0FSVDFfSVJRSGFuZGxlcgorVVNBUlQyX0lSUUhhbmRsZXIKK1VTQVJUM19JUlFIYW5kbGVyCitFWFRJMTVfMTBfSVJRSGFuZGxlcgorUlRDQWxhcm1fSVJRSGFuZGxlcgorVVNCV2FrZVVwX0lSUUhhbmRsZXIKK1RJTThfQlJLX0lSUUhhbmRsZXIKK1RJTThfVVBfSVJRSGFuZGxlcgorVElNOF9UUkdfQ09NX0lSUUhhbmRsZXIKK1RJTThfQ0NfSVJRSGFuZGxlcgorQURDM19JUlFIYW5kbGVyCitGU01DX0lSUUhhbmRsZXIKK1NESU9fSVJRSGFuZGxlcgorVElNNV9JUlFIYW5kbGVyCitTUEkzX0lSUUhhbmRsZXIKK1VBUlQ0X0lSUUhhbmRsZXIKK1VBUlQ1X0lSUUhhbmRsZXIKK1RJTTZfSVJRSGFuZGxlcgorVElNN19JUlFIYW5kbGVyCitETUEyX0NoYW5uZWwxX0lSUUhhbmRsZXIKK0RNQTJfQ2hhbm5lbDJfSVJRSGFuZGxlcgorRE1BMl9DaGFubmVsM19JUlFIYW5kbGVyCitETUEyX0NoYW5uZWw0XzVfSVJRSGFuZGxlcgorICAgICAgICAgICAgICAgIEIgICAgICAgLgorCisgICAgICAgICAgICAgICAgRU5EUAorCisgICAgICAgICAgICAgICAgQUxJR04KKworOyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKzsgVXNlciBTdGFjayBhbmQgSGVhcCBpbml0aWFsaXphdGlvbgorOyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgICAgICAgICAgICAgSUYgICAgICA6REVGOl9fTUlDUk9MSUIKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgRVhQT1JUICBfX2luaXRpYWxfc3AKKyAgICAgICAgICAgICAgICAgRVhQT1JUICBfX2hlYXBfYmFzZQorICAgICAgICAgICAgICAgICBFWFBPUlQgIF9faGVhcF9saW1pdAorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICBFTFNFCisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgIElNUE9SVCAgX191c2VfdHdvX3JlZ2lvbl9tZW1vcnkKKyAgICAgICAgICAgICAgICAgRVhQT1JUICBfX3VzZXJfaW5pdGlhbF9zdGFja2hlYXAKKyAgICAgICAgICAgICAgICAgCitfX3VzZXJfaW5pdGlhbF9zdGFja2hlYXAKKworICAgICAgICAgICAgICAgICBMRFIgICAgIFIwLCA9ICBIZWFwX01lbQorICAgICAgICAgICAgICAgICBMRFIgICAgIFIxLCA9KFN0YWNrX01lbSArIFN0YWNrX1NpemUpCisgICAgICAgICAgICAgICAgIExEUiAgICAgUjIsID0gKEhlYXBfTWVtICsgIEhlYXBfU2l6ZSkKKyAgICAgICAgICAgICAgICAgTERSICAgICBSMywgPSBTdGFja19NZW0KKyAgICAgICAgICAgICAgICAgQlggICAgICBMUgorCisgICAgICAgICAgICAgICAgIEFMSUdOCisKKyAgICAgICAgICAgICAgICAgRU5ESUYKKworICAgICAgICAgICAgICAgICBFTkQKKworOyoqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCAyMDExIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKioKZGlmZiAtLWdpdCBhL3N0X2Z3X2xpYi9zdG0zMmYxMHguaCBiL3N0X2Z3X2xpYi9zdG0zMmYxMHguaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YmY3NjI0Ci0tLSAvZGV2L251bGwKKysrIGIvc3RfZndfbGliL3N0bTMyZjEweC5oCkBAIC0wLDAgKzEsODMzNiBAQAorLyoqCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqIEBmaWxlICAgIHN0bTMyZjEweC5oCisgICogQGF1dGhvciAgTUNEIEFwcGxpY2F0aW9uIFRlYW0KKyAgKiBAdmVyc2lvbiBWMy41LjAKKyAgKiBAZGF0ZSAgICAxMS1NYXJjaC0yMDExCisgICogQGJyaWVmICAgQ01TSVMgQ29ydGV4LU0zIERldmljZSBQZXJpcGhlcmFsIEFjY2VzcyBMYXllciBIZWFkZXIgRmlsZS4gCisgICogICAgICAgICAgVGhpcyBmaWxlIGNvbnRhaW5zIGFsbCB0aGUgcGVyaXBoZXJhbCByZWdpc3RlcidzIGRlZmluaXRpb25zLCBiaXRzIAorICAqICAgICAgICAgIGRlZmluaXRpb25zIGFuZCBtZW1vcnkgbWFwcGluZyBmb3IgU1RNMzJGMTB4IENvbm5lY3Rpdml0eSBsaW5lLCAKKyAgKiAgICAgICAgICBIaWdoIGRlbnNpdHksIEhpZ2ggZGVuc2l0eSB2YWx1ZSBsaW5lLCBNZWRpdW0gZGVuc2l0eSwgCisgICogICAgICAgICAgTWVkaXVtIGRlbnNpdHkgVmFsdWUgbGluZSwgTG93IGRlbnNpdHksIExvdyBkZW5zaXR5IFZhbHVlIGxpbmUgCisgICogICAgICAgICAgYW5kIFhMLWRlbnNpdHkgZGV2aWNlcy4KKyAgKgorICAqICAgICAgICAgIFRoZSBmaWxlIGlzIHRoZSB1bmlxdWUgaW5jbHVkZSBmaWxlIHRoYXQgdGhlIGFwcGxpY2F0aW9uIHByb2dyYW1tZXIKKyAgKiAgICAgICAgICBpcyB1c2luZyBpbiB0aGUgQyBzb3VyY2UgY29kZSwgdXN1YWxseSBpbiBtYWluLmMuIFRoaXMgZmlsZSBjb250YWluczoKKyAgKiAgICAgICAgICAgLSBDb25maWd1cmF0aW9uIHNlY3Rpb24gdGhhdCBhbGxvd3MgdG8gc2VsZWN0OgorICAqICAgICAgICAgICAgICAtIFRoZSBkZXZpY2UgdXNlZCBpbiB0aGUgdGFyZ2V0IGFwcGxpY2F0aW9uCisgICogICAgICAgICAgICAgIC0gVG8gdXNlIG9yIG5vdCB0aGUgcGVyaXBoZXJhbJJzIGRyaXZlcnMgaW4gYXBwbGljYXRpb24gY29kZShpLmUuIAorICAqICAgICAgICAgICAgICAgIGNvZGUgd2lsbCBiZSBiYXNlZCBvbiBkaXJlY3QgYWNjZXNzIHRvIHBlcmlwaGVyYWyScyByZWdpc3RlcnMgCisgICogICAgICAgICAgICAgICAgcmF0aGVyIHRoYW4gZHJpdmVycyBBUEkpLCB0aGlzIG9wdGlvbiBpcyBjb250cm9sbGVkIGJ5IAorICAqICAgICAgICAgICAgICAgICIjZGVmaW5lIFVTRV9TVERQRVJJUEhfRFJJVkVSIgorICAqICAgICAgICAgICAgICAtIFRvIGNoYW5nZSBmZXcgYXBwbGljYXRpb24tc3BlY2lmaWMgcGFyYW1ldGVycyBzdWNoIGFzIHRoZSBIU0UgCisgICogICAgICAgICAgICAgICAgY3J5c3RhbCBmcmVxdWVuY3kKKyAgKiAgICAgICAgICAgLSBEYXRhIHN0cnVjdHVyZXMgYW5kIHRoZSBhZGRyZXNzIG1hcHBpbmcgZm9yIGFsbCBwZXJpcGhlcmFscworICAqICAgICAgICAgICAtIFBlcmlwaGVyYWwncyByZWdpc3RlcnMgZGVjbGFyYXRpb25zIGFuZCBiaXRzIGRlZmluaXRpb24KKyAgKiAgICAgICAgICAgLSBNYWNyb3MgdG8gYWNjZXNzIHBlcmlwaGVyYWyScyByZWdpc3RlcnMgaGFyZHdhcmUKKyAgKgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKiBAYXR0ZW50aW9uCisgICoKKyAgKiBUSEUgUFJFU0VOVCBGSVJNV0FSRSBXSElDSCBJUyBGT1IgR1VJREFOQ0UgT05MWSBBSU1TIEFUIFBST1ZJRElORyBDVVNUT01FUlMKKyAgKiBXSVRIIENPRElORyBJTkZPUk1BVElPTiBSRUdBUkRJTkcgVEhFSVIgUFJPRFVDVFMgSU4gT1JERVIgRk9SIFRIRU0gVE8gU0FWRQorICAqIFRJTUUuIEFTIEEgUkVTVUxULCBTVE1JQ1JPRUxFQ1RST05JQ1MgU0hBTEwgTk9UIEJFIEhFTEQgTElBQkxFIEZPUiBBTlkKKyAgKiBESVJFQ1QsIElORElSRUNUIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBXSVRIIFJFU1BFQ1QgVE8gQU5ZIENMQUlNUyBBUklTSU5HCisgICogRlJPTSBUSEUgQ09OVEVOVCBPRiBTVUNIIEZJUk1XQVJFIEFORC9PUiBUSEUgVVNFIE1BREUgQlkgQ1VTVE9NRVJTIE9GIFRIRQorICAqIENPRElORyBJTkZPUk1BVElPTiBDT05UQUlORUQgSEVSRUlOIElOIENPTk5FQ1RJT04gV0lUSCBUSEVJUiBQUk9EVUNUUy4KKyAgKgorICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDT1BZUklHSFQgMjAxMSBTVE1pY3JvZWxlY3Ryb25pY3M8L2NlbnRlcj48L2gyPgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKi8KKworLyoqIEBhZGR0b2dyb3VwIENNU0lTCisgICogQHsKKyAgKi8KKworLyoqIEBhZGR0b2dyb3VwIHN0bTMyZjEweAorICAqIEB7CisgICovCisgICAgCisjaWZuZGVmIF9fU1RNMzJGMTB4X0gKKyNkZWZpbmUgX19TVE0zMkYxMHhfSAorCisjaWZkZWYgX19jcGx1c3BsdXMKKyBleHRlcm4gIkMiIHsKKyNlbmRpZiAKKyAgCisvKiogQGFkZHRvZ3JvdXAgTGlicmFyeV9jb25maWd1cmF0aW9uX3NlY3Rpb24KKyAgKiBAeworICAqLworICAKKy8qIFVuY29tbWVudCB0aGUgbGluZSBiZWxvdyBhY2NvcmRpbmcgdG8gdGhlIHRhcmdldCBTVE0zMiBkZXZpY2UgdXNlZCBpbiB5b3VyCisgICBhcHBsaWNhdGlvbiAKKyAgKi8KKworI2lmICFkZWZpbmVkIChTVE0zMkYxMFhfTEQpICYmICFkZWZpbmVkIChTVE0zMkYxMFhfTERfVkwpICYmICFkZWZpbmVkIChTVE0zMkYxMFhfTUQpICYmICFkZWZpbmVkIChTVE0zMkYxMFhfTURfVkwpICYmICFkZWZpbmVkIChTVE0zMkYxMFhfSEQpICYmICFkZWZpbmVkIChTVE0zMkYxMFhfSERfVkwpICYmICFkZWZpbmVkIChTVE0zMkYxMFhfWEwpICYmICFkZWZpbmVkIChTVE0zMkYxMFhfQ0wpIAorICAvKiAjZGVmaW5lIFNUTTMyRjEwWF9MRCAqLyAgICAgLyohPCBTVE0zMkYxMFhfTEQ6IFNUTTMyIExvdyBkZW5zaXR5IGRldmljZXMgKi8KKyAgLyogI2RlZmluZSBTVE0zMkYxMFhfTERfVkwgKi8gIC8qITwgU1RNMzJGMTBYX0xEX1ZMOiBTVE0zMiBMb3cgZGVuc2l0eSBWYWx1ZSBMaW5lIGRldmljZXMgKi8gIAorICAvKiAjZGVmaW5lIFNUTTMyRjEwWF9NRCAqLyAgICAgLyohPCBTVE0zMkYxMFhfTUQ6IFNUTTMyIE1lZGl1bSBkZW5zaXR5IGRldmljZXMgKi8KKyAgLyogI2RlZmluZSBTVE0zMkYxMFhfTURfVkwgKi8gIC8qITwgU1RNMzJGMTBYX01EX1ZMOiBTVE0zMiBNZWRpdW0gZGVuc2l0eSBWYWx1ZSBMaW5lIGRldmljZXMgKi8gIAorICAvKiAjZGVmaW5lIFNUTTMyRjEwWF9IRCAqLyAgICAgLyohPCBTVE0zMkYxMFhfSEQ6IFNUTTMyIEhpZ2ggZGVuc2l0eSBkZXZpY2VzICovCisgIC8qICNkZWZpbmUgU1RNMzJGMTBYX0hEX1ZMICovICAvKiE8IFNUTTMyRjEwWF9IRF9WTDogU1RNMzIgSGlnaCBkZW5zaXR5IHZhbHVlIGxpbmUgZGV2aWNlcyAqLyAgCisgIC8qICNkZWZpbmUgU1RNMzJGMTBYX1hMICovICAgICAvKiE8IFNUTTMyRjEwWF9YTDogU1RNMzIgWEwtZGVuc2l0eSBkZXZpY2VzICovCisgIC8qICNkZWZpbmUgU1RNMzJGMTBYX0NMICovICAgICAvKiE8IFNUTTMyRjEwWF9DTDogU1RNMzIgQ29ubmVjdGl2aXR5IGxpbmUgZGV2aWNlcyAqLworI2VuZGlmCisvKiAgVGlwOiBUbyBhdm9pZCBtb2RpZnlpbmcgdGhpcyBmaWxlIGVhY2ggdGltZSB5b3UgbmVlZCB0byBzd2l0Y2ggYmV0d2VlbiB0aGVzZQorICAgICAgICBkZXZpY2VzLCB5b3UgY2FuIGRlZmluZSB0aGUgZGV2aWNlIGluIHlvdXIgdG9vbGNoYWluIGNvbXBpbGVyIHByZXByb2Nlc3Nvci4KKworIC0gTG93LWRlbnNpdHkgZGV2aWNlcyBhcmUgU1RNMzJGMTAxeHgsIFNUTTMyRjEwMnh4IGFuZCBTVE0zMkYxMDN4eCBtaWNyb2NvbnRyb2xsZXJzCisgICB3aGVyZSB0aGUgRmxhc2ggbWVtb3J5IGRlbnNpdHkgcmFuZ2VzIGJldHdlZW4gMTYgYW5kIDMyIEtieXRlcy4KKyAtIExvdy1kZW5zaXR5IHZhbHVlIGxpbmUgZGV2aWNlcyBhcmUgU1RNMzJGMTAweHggbWljcm9jb250cm9sbGVycyB3aGVyZSB0aGUgRmxhc2gKKyAgIG1lbW9yeSBkZW5zaXR5IHJhbmdlcyBiZXR3ZWVuIDE2IGFuZCAzMiBLYnl0ZXMuCisgLSBNZWRpdW0tZGVuc2l0eSBkZXZpY2VzIGFyZSBTVE0zMkYxMDF4eCwgU1RNMzJGMTAyeHggYW5kIFNUTTMyRjEwM3h4IG1pY3JvY29udHJvbGxlcnMKKyAgIHdoZXJlIHRoZSBGbGFzaCBtZW1vcnkgZGVuc2l0eSByYW5nZXMgYmV0d2VlbiA2NCBhbmQgMTI4IEtieXRlcy4KKyAtIE1lZGl1bS1kZW5zaXR5IHZhbHVlIGxpbmUgZGV2aWNlcyBhcmUgU1RNMzJGMTAweHggbWljcm9jb250cm9sbGVycyB3aGVyZSB0aGUgCisgICBGbGFzaCBtZW1vcnkgZGVuc2l0eSByYW5nZXMgYmV0d2VlbiA2NCBhbmQgMTI4IEtieXRlcy4gICAKKyAtIEhpZ2gtZGVuc2l0eSBkZXZpY2VzIGFyZSBTVE0zMkYxMDF4eCBhbmQgU1RNMzJGMTAzeHggbWljcm9jb250cm9sbGVycyB3aGVyZQorICAgdGhlIEZsYXNoIG1lbW9yeSBkZW5zaXR5IHJhbmdlcyBiZXR3ZWVuIDI1NiBhbmQgNTEyIEtieXRlcy4KKyAtIEhpZ2gtZGVuc2l0eSB2YWx1ZSBsaW5lIGRldmljZXMgYXJlIFNUTTMyRjEwMHh4IG1pY3JvY29udHJvbGxlcnMgd2hlcmUgdGhlIAorICAgRmxhc2ggbWVtb3J5IGRlbnNpdHkgcmFuZ2VzIGJldHdlZW4gMjU2IGFuZCA1MTIgS2J5dGVzLiAgIAorIC0gWEwtZGVuc2l0eSBkZXZpY2VzIGFyZSBTVE0zMkYxMDF4eCBhbmQgU1RNMzJGMTAzeHggbWljcm9jb250cm9sbGVycyB3aGVyZQorICAgdGhlIEZsYXNoIG1lbW9yeSBkZW5zaXR5IHJhbmdlcyBiZXR3ZWVuIDUxMiBhbmQgMTAyNCBLYnl0ZXMuCisgLSBDb25uZWN0aXZpdHkgbGluZSBkZXZpY2VzIGFyZSBTVE0zMkYxMDV4eCBhbmQgU1RNMzJGMTA3eHggbWljcm9jb250cm9sbGVycy4KKyAgKi8KKworI2lmICFkZWZpbmVkIChTVE0zMkYxMFhfTEQpICYmICFkZWZpbmVkIChTVE0zMkYxMFhfTERfVkwpICYmICFkZWZpbmVkIChTVE0zMkYxMFhfTUQpICYmICFkZWZpbmVkIChTVE0zMkYxMFhfTURfVkwpICYmICFkZWZpbmVkIChTVE0zMkYxMFhfSEQpICYmICFkZWZpbmVkIChTVE0zMkYxMFhfSERfVkwpICYmICFkZWZpbmVkIChTVE0zMkYxMFhfWEwpICYmICFkZWZpbmVkIChTVE0zMkYxMFhfQ0wpCisgI2Vycm9yICJQbGVhc2Ugc2VsZWN0IGZpcnN0IHRoZSB0YXJnZXQgU1RNMzJGMTB4IGRldmljZSB1c2VkIGluIHlvdXIgYXBwbGljYXRpb24gKGluIHN0bTMyZjEweC5oIGZpbGUpIgorI2VuZGlmCisKKyNpZiAhZGVmaW5lZCAgVVNFX1NURFBFUklQSF9EUklWRVIKKy8qKgorICogQGJyaWVmIENvbW1lbnQgdGhlIGxpbmUgYmVsb3cgaWYgeW91IHdpbGwgbm90IHVzZSB0aGUgcGVyaXBoZXJhbHMgZHJpdmVycy4KKyAgIEluIHRoaXMgY2FzZSwgdGhlc2UgZHJpdmVycyB3aWxsIG5vdCBiZSBpbmNsdWRlZCBhbmQgdGhlIGFwcGxpY2F0aW9uIGNvZGUgd2lsbCAKKyAgIGJlIGJhc2VkIG9uIGRpcmVjdCBhY2Nlc3MgdG8gcGVyaXBoZXJhbHMgcmVnaXN0ZXJzIAorICAgKi8KKyAgLyojZGVmaW5lIFVTRV9TVERQRVJJUEhfRFJJVkVSKi8KKyNlbmRpZgorCisvKioKKyAqIEBicmllZiBJbiB0aGUgZm9sbG93aW5nIGxpbmUgYWRqdXN0IHRoZSB2YWx1ZSBvZiBFeHRlcm5hbCBIaWdoIFNwZWVkIG9zY2lsbGF0b3IgKEhTRSkKKyAgIHVzZWQgaW4geW91ciBhcHBsaWNhdGlvbiAKKyAgIAorICAgVGlwOiBUbyBhdm9pZCBtb2RpZnlpbmcgdGhpcyBmaWxlIGVhY2ggdGltZSB5b3UgbmVlZCB0byB1c2UgZGlmZmVyZW50IEhTRSwgeW91CisgICAgICAgIGNhbiBkZWZpbmUgdGhlIEhTRSB2YWx1ZSBpbiB5b3VyIHRvb2xjaGFpbiBjb21waWxlciBwcmVwcm9jZXNzb3IuCisgICovICAgICAgICAgICAKKyNpZiAhZGVmaW5lZCAgSFNFX1ZBTFVFCisgI2lmZGVmIFNUTTMyRjEwWF9DTCAgIAorICAjZGVmaW5lIEhTRV9WQUxVRSAgICAoKHVpbnQzMl90KTI1MDAwMDAwKSAvKiE8IFZhbHVlIG9mIHRoZSBFeHRlcm5hbCBvc2NpbGxhdG9yIGluIEh6ICovCisgI2Vsc2UgCisgICNkZWZpbmUgSFNFX1ZBTFVFICAgICgodWludDMyX3QpODAwMDAwMCkgLyohPCBWYWx1ZSBvZiB0aGUgRXh0ZXJuYWwgb3NjaWxsYXRvciBpbiBIeiAqLworICNlbmRpZiAvKiBTVE0zMkYxMFhfQ0wgKi8KKyNlbmRpZiAvKiBIU0VfVkFMVUUgKi8KKworCisvKioKKyAqIEBicmllZiBJbiB0aGUgZm9sbG93aW5nIGxpbmUgYWRqdXN0IHRoZSBFeHRlcm5hbCBIaWdoIFNwZWVkIG9zY2lsbGF0b3IgKEhTRSkgU3RhcnR1cCAKKyAgIFRpbWVvdXQgdmFsdWUgCisgICAqLworI2RlZmluZSBIU0VfU1RBUlRVUF9USU1FT1VUICAgKCh1aW50MTZfdCkweDA1MDApIC8qITwgVGltZSBvdXQgZm9yIEhTRSBzdGFydCB1cCAqLworCisjZGVmaW5lIEhTSV9WQUxVRSAgICAoKHVpbnQzMl90KTgwMDAwMDApIC8qITwgVmFsdWUgb2YgdGhlIEludGVybmFsIG9zY2lsbGF0b3IgaW4gSHoqLworCisvKioKKyAqIEBicmllZiBTVE0zMkYxMHggU3RhbmRhcmQgUGVyaXBoZXJhbCBMaWJyYXJ5IHZlcnNpb24gbnVtYmVyCisgICAqLworI2RlZmluZSBfX1NUTTMyRjEwWF9TVERQRVJJUEhfVkVSU0lPTl9NQUlOICAgKDB4MDMpIC8qITwgWzMxOjI0XSBtYWluIHZlcnNpb24gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisjZGVmaW5lIF9fU1RNMzJGMTBYX1NURFBFUklQSF9WRVJTSU9OX1NVQjEgICAoMHgwNSkgLyohPCBbMjM6MTZdIHN1YjEgdmVyc2lvbiAqLworI2RlZmluZSBfX1NUTTMyRjEwWF9TVERQRVJJUEhfVkVSU0lPTl9TVUIyICAgKDB4MDApIC8qITwgWzE1OjhdICBzdWIyIHZlcnNpb24gKi8KKyNkZWZpbmUgX19TVE0zMkYxMFhfU1REUEVSSVBIX1ZFUlNJT05fUkMgICAgICgweDAwKSAvKiE8IFs3OjBdICByZWxlYXNlIGNhbmRpZGF0ZSAqLyAKKyNkZWZpbmUgX19TVE0zMkYxMFhfU1REUEVSSVBIX1ZFUlNJT04gICAgICAgKCAoX19TVE0zMkYxMFhfU1REUEVSSVBIX1ZFUlNJT05fTUFJTiA8PCAyNClcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8KF9fU1RNMzJGMTBYX1NURFBFUklQSF9WRVJTSU9OX1NVQjEgPDwgMTYpXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfChfX1NUTTMyRjEwWF9TVERQRVJJUEhfVkVSU0lPTl9TVUIyIDw8IDgpXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfChfX1NUTTMyRjEwWF9TVERQRVJJUEhfVkVSU0lPTl9SQykpCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAYWRkdG9ncm91cCBDb25maWd1cmF0aW9uX3NlY3Rpb25fZm9yX0NNU0lTCisgICogQHsKKyAgKi8KKworLyoqCisgKiBAYnJpZWYgQ29uZmlndXJhdGlvbiBvZiB0aGUgQ29ydGV4LU0zIFByb2Nlc3NvciBhbmQgQ29yZSBQZXJpcGhlcmFscyAKKyAqLworI2lmZGVmIFNUTTMyRjEwWF9YTAorICNkZWZpbmUgX19NUFVfUFJFU0VOVCAgICAgICAgICAgICAxIC8qITwgU1RNMzIgWEwtZGVuc2l0eSBkZXZpY2VzIHByb3ZpZGUgYW4gTVBVICovCisjZWxzZQorICNkZWZpbmUgX19NUFVfUFJFU0VOVCAgICAgICAgICAgICAwIC8qITwgT3RoZXIgU1RNMzIgZGV2aWNlcyBkb2VzIG5vdCBwcm92aWRlIGFuIE1QVSAqLworI2VuZGlmIC8qIFNUTTMyRjEwWF9YTCAqLworI2RlZmluZSBfX05WSUNfUFJJT19CSVRTICAgICAgICAgIDQgLyohPCBTVE0zMiB1c2VzIDQgQml0cyBmb3IgdGhlIFByaW9yaXR5IExldmVscyAgICAqLworI2RlZmluZSBfX1ZlbmRvcl9TeXNUaWNrQ29uZmlnICAgIDAgLyohPCBTZXQgdG8gMSBpZiBkaWZmZXJlbnQgU3lzVGljayBDb25maWcgaXMgdXNlZCAqLworCisvKioKKyAqIEBicmllZiBTVE0zMkYxMHggSW50ZXJydXB0IE51bWJlciBEZWZpbml0aW9uLCBhY2NvcmRpbmcgdG8gdGhlIHNlbGVjdGVkIGRldmljZSAKKyAqICAgICAgICBpbiBAcmVmIExpYnJhcnlfY29uZmlndXJhdGlvbl9zZWN0aW9uIAorICovCit0eXBlZGVmIGVudW0gSVJRbgoreworLyoqKioqKiAgQ29ydGV4LU0zIFByb2Nlc3NvciBFeGNlcHRpb25zIE51bWJlcnMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICBOb25NYXNrYWJsZUludF9JUlFuICAgICAgICAgPSAtMTQsICAgIC8qITwgMiBOb24gTWFza2FibGUgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBNZW1vcnlNYW5hZ2VtZW50X0lSUW4gICAgICAgPSAtMTIsICAgIC8qITwgNCBDb3J0ZXgtTTMgTWVtb3J5IE1hbmFnZW1lbnQgSW50ZXJydXB0ICAgICAgICAgICAgICAqLworICBCdXNGYXVsdF9JUlFuICAgICAgICAgICAgICAgPSAtMTEsICAgIC8qITwgNSBDb3J0ZXgtTTMgQnVzIEZhdWx0IEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAqLworICBVc2FnZUZhdWx0X0lSUW4gICAgICAgICAgICAgPSAtMTAsICAgIC8qITwgNiBDb3J0ZXgtTTMgVXNhZ2UgRmF1bHQgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAqLworICBTVkNhbGxfSVJRbiAgICAgICAgICAgICAgICAgPSAtNSwgICAgIC8qITwgMTEgQ29ydGV4LU0zIFNWIENhbGwgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAqLworICBEZWJ1Z01vbml0b3JfSVJRbiAgICAgICAgICAgPSAtNCwgICAgIC8qITwgMTIgQ29ydGV4LU0zIERlYnVnIE1vbml0b3IgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAqLworICBQZW5kU1ZfSVJRbiAgICAgICAgICAgICAgICAgPSAtMiwgICAgIC8qITwgMTQgQ29ydGV4LU0zIFBlbmQgU1YgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAqLworICBTeXNUaWNrX0lSUW4gICAgICAgICAgICAgICAgPSAtMSwgICAgIC8qITwgMTUgQ29ydGV4LU0zIFN5c3RlbSBUaWNrIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAqLworCisvKioqKioqICBTVE0zMiBzcGVjaWZpYyBJbnRlcnJ1cHQgTnVtYmVycyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIFdXREdfSVJRbiAgICAgICAgICAgICAgICAgICA9IDAsICAgICAgLyohPCBXaW5kb3cgV2F0Y2hEb2cgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIFBWRF9JUlFuICAgICAgICAgICAgICAgICAgICA9IDEsICAgICAgLyohPCBQVkQgdGhyb3VnaCBFWFRJIExpbmUgZGV0ZWN0aW9uIEludGVycnVwdCAgICAgICAgICAgICovCisgIFRBTVBFUl9JUlFuICAgICAgICAgICAgICAgICA9IDIsICAgICAgLyohPCBUYW1wZXIgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIFJUQ19JUlFuICAgICAgICAgICAgICAgICAgICA9IDMsICAgICAgLyohPCBSVEMgZ2xvYmFsIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEZMQVNIX0lSUW4gICAgICAgICAgICAgICAgICA9IDQsICAgICAgLyohPCBGTEFTSCBnbG9iYWwgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIFJDQ19JUlFuICAgICAgICAgICAgICAgICAgICA9IDUsICAgICAgLyohPCBSQ0MgZ2xvYmFsIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEVYVEkwX0lSUW4gICAgICAgICAgICAgICAgICA9IDYsICAgICAgLyohPCBFWFRJIExpbmUwIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEVYVEkxX0lSUW4gICAgICAgICAgICAgICAgICA9IDcsICAgICAgLyohPCBFWFRJIExpbmUxIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEVYVEkyX0lSUW4gICAgICAgICAgICAgICAgICA9IDgsICAgICAgLyohPCBFWFRJIExpbmUyIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEVYVEkzX0lSUW4gICAgICAgICAgICAgICAgICA9IDksICAgICAgLyohPCBFWFRJIExpbmUzIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEVYVEk0X0lSUW4gICAgICAgICAgICAgICAgICA9IDEwLCAgICAgLyohPCBFWFRJIExpbmU0IEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIERNQTFfQ2hhbm5lbDFfSVJRbiAgICAgICAgICA9IDExLCAgICAgLyohPCBETUExIENoYW5uZWwgMSBnbG9iYWwgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICovCisgIERNQTFfQ2hhbm5lbDJfSVJRbiAgICAgICAgICA9IDEyLCAgICAgLyohPCBETUExIENoYW5uZWwgMiBnbG9iYWwgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICovCisgIERNQTFfQ2hhbm5lbDNfSVJRbiAgICAgICAgICA9IDEzLCAgICAgLyohPCBETUExIENoYW5uZWwgMyBnbG9iYWwgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICovCisgIERNQTFfQ2hhbm5lbDRfSVJRbiAgICAgICAgICA9IDE0LCAgICAgLyohPCBETUExIENoYW5uZWwgNCBnbG9iYWwgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICovCisgIERNQTFfQ2hhbm5lbDVfSVJRbiAgICAgICAgICA9IDE1LCAgICAgLyohPCBETUExIENoYW5uZWwgNSBnbG9iYWwgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICovCisgIERNQTFfQ2hhbm5lbDZfSVJRbiAgICAgICAgICA9IDE2LCAgICAgLyohPCBETUExIENoYW5uZWwgNiBnbG9iYWwgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICovCisgIERNQTFfQ2hhbm5lbDdfSVJRbiAgICAgICAgICA9IDE3LCAgICAgLyohPCBETUExIENoYW5uZWwgNyBnbG9iYWwgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICovCisKKyNpZmRlZiBTVE0zMkYxMFhfTEQKKyAgQURDMV8yX0lSUW4gICAgICAgICAgICAgICAgID0gMTgsICAgICAvKiE8IEFEQzEgYW5kIEFEQzIgZ2xvYmFsIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgVVNCX0hQX0NBTjFfVFhfSVJRbiAgICAgICAgID0gMTksICAgICAvKiE8IFVTQiBEZXZpY2UgSGlnaCBQcmlvcml0eSBvciBDQU4xIFRYIEludGVycnVwdHMgICAgICAgKi8KKyAgVVNCX0xQX0NBTjFfUlgwX0lSUW4gICAgICAgID0gMjAsICAgICAvKiE8IFVTQiBEZXZpY2UgTG93IFByaW9yaXR5IG9yIENBTjEgUlgwIEludGVycnVwdHMgICAgICAgKi8KKyAgQ0FOMV9SWDFfSVJRbiAgICAgICAgICAgICAgID0gMjEsICAgICAvKiE8IENBTjEgUlgxIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgQ0FOMV9TQ0VfSVJRbiAgICAgICAgICAgICAgID0gMjIsICAgICAvKiE8IENBTjEgU0NFIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRVhUSTlfNV9JUlFuICAgICAgICAgICAgICAgID0gMjMsICAgICAvKiE8IEV4dGVybmFsIExpbmVbOTo1XSBJbnRlcnJ1cHRzICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgVElNMV9CUktfSVJRbiAgICAgICAgICAgICAgID0gMjQsICAgICAvKiE8IFRJTTEgQnJlYWsgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgVElNMV9VUF9JUlFuICAgICAgICAgICAgICAgID0gMjUsICAgICAvKiE8IFRJTTEgVXBkYXRlIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgVElNMV9UUkdfQ09NX0lSUW4gICAgICAgICAgID0gMjYsICAgICAvKiE8IFRJTTEgVHJpZ2dlciBhbmQgQ29tbXV0YXRpb24gSW50ZXJydXB0ICAgICAgICAgICAgICAgKi8KKyAgVElNMV9DQ19JUlFuICAgICAgICAgICAgICAgID0gMjcsICAgICAvKiE8IFRJTTEgQ2FwdHVyZSBDb21wYXJlIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgVElNMl9JUlFuICAgICAgICAgICAgICAgICAgID0gMjgsICAgICAvKiE8IFRJTTIgZ2xvYmFsIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgVElNM19JUlFuICAgICAgICAgICAgICAgICAgID0gMjksICAgICAvKiE8IFRJTTMgZ2xvYmFsIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgSTJDMV9FVl9JUlFuICAgICAgICAgICAgICAgID0gMzEsICAgICAvKiE8IEkyQzEgRXZlbnQgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgSTJDMV9FUl9JUlFuICAgICAgICAgICAgICAgID0gMzIsICAgICAvKiE8IEkyQzEgRXJyb3IgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgU1BJMV9JUlFuICAgICAgICAgICAgICAgICAgID0gMzUsICAgICAvKiE8IFNQSTEgZ2xvYmFsIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgVVNBUlQxX0lSUW4gICAgICAgICAgICAgICAgID0gMzcsICAgICAvKiE8IFVTQVJUMSBnbG9iYWwgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgVVNBUlQyX0lSUW4gICAgICAgICAgICAgICAgID0gMzgsICAgICAvKiE8IFVTQVJUMiBnbG9iYWwgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRVhUSTE1XzEwX0lSUW4gICAgICAgICAgICAgID0gNDAsICAgICAvKiE8IEV4dGVybmFsIExpbmVbMTU6MTBdIEludGVycnVwdHMgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgUlRDQWxhcm1fSVJRbiAgICAgICAgICAgICAgID0gNDEsICAgICAvKiE8IFJUQyBBbGFybSB0aHJvdWdoIEVYVEkgTGluZSBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgKi8KKyAgVVNCV2FrZVVwX0lSUW4gICAgICAgICAgICAgID0gNDIgICAgICAvKiE8IFVTQiBEZXZpY2UgV2FrZVVwIGZyb20gc3VzcGVuZCB0aHJvdWdoIEVYVEkgTGluZSBJbnRlcnJ1cHQgKi8gICAgCisjZW5kaWYgLyogU1RNMzJGMTBYX0xEICovICAKKworI2lmZGVmIFNUTTMyRjEwWF9MRF9WTAorICBBREMxX0lSUW4gICAgICAgICAgICAgICAgICAgPSAxOCwgICAgIC8qITwgQURDMSBnbG9iYWwgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBFWFRJOV81X0lSUW4gICAgICAgICAgICAgICAgPSAyMywgICAgIC8qITwgRXh0ZXJuYWwgTGluZVs5OjVdIEludGVycnVwdHMgICAgICAgICAgICAgICAgICAgICAgICAqLworICBUSU0xX0JSS19USU0xNV9JUlFuICAgICAgICAgPSAyNCwgICAgIC8qITwgVElNMSBCcmVhayBhbmQgVElNMTUgSW50ZXJydXB0cyAgICAgICAgICAgICAgICAgICAgICAqLworICBUSU0xX1VQX1RJTTE2X0lSUW4gICAgICAgICAgPSAyNSwgICAgIC8qITwgVElNMSBVcGRhdGUgYW5kIFRJTTE2IEludGVycnVwdHMgICAgICAgICAgICAgICAgICAgICAqLworICBUSU0xX1RSR19DT01fVElNMTdfSVJRbiAgICAgPSAyNiwgICAgIC8qITwgVElNMSBUcmlnZ2VyIGFuZCBDb21tdXRhdGlvbiBhbmQgVElNMTcgSW50ZXJydXB0ICAgICAqLworICBUSU0xX0NDX0lSUW4gICAgICAgICAgICAgICAgPSAyNywgICAgIC8qITwgVElNMSBDYXB0dXJlIENvbXBhcmUgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAqLworICBUSU0yX0lSUW4gICAgICAgICAgICAgICAgICAgPSAyOCwgICAgIC8qITwgVElNMiBnbG9iYWwgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBUSU0zX0lSUW4gICAgICAgICAgICAgICAgICAgPSAyOSwgICAgIC8qITwgVElNMyBnbG9iYWwgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBJMkMxX0VWX0lSUW4gICAgICAgICAgICAgICAgPSAzMSwgICAgIC8qITwgSTJDMSBFdmVudCBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBJMkMxX0VSX0lSUW4gICAgICAgICAgICAgICAgPSAzMiwgICAgIC8qITwgSTJDMSBFcnJvciBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBTUEkxX0lSUW4gICAgICAgICAgICAgICAgICAgPSAzNSwgICAgIC8qITwgU1BJMSBnbG9iYWwgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBVU0FSVDFfSVJRbiAgICAgICAgICAgICAgICAgPSAzNywgICAgIC8qITwgVVNBUlQxIGdsb2JhbCBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBVU0FSVDJfSVJRbiAgICAgICAgICAgICAgICAgPSAzOCwgICAgIC8qITwgVVNBUlQyIGdsb2JhbCBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBFWFRJMTVfMTBfSVJRbiAgICAgICAgICAgICAgPSA0MCwgICAgIC8qITwgRXh0ZXJuYWwgTGluZVsxNToxMF0gSW50ZXJydXB0cyAgICAgICAgICAgICAgICAgICAgICAqLworICBSVENBbGFybV9JUlFuICAgICAgICAgICAgICAgPSA0MSwgICAgIC8qITwgUlRDIEFsYXJtIHRocm91Z2ggRVhUSSBMaW5lIEludGVycnVwdCAgICAgICAgICAgICAgICAqLworICBDRUNfSVJRbiAgICAgICAgICAgICAgICAgICAgPSA0MiwgICAgIC8qITwgSERNSS1DRUMgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBUSU02X0RBQ19JUlFuICAgICAgICAgICAgICAgPSA1NCwgICAgIC8qITwgVElNNiBhbmQgREFDIHVuZGVycnVuIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAqLworICBUSU03X0lSUW4gICAgICAgICAgICAgICAgICAgPSA1NSAgICAgIC8qITwgVElNNyBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLyAgICAgICAKKyNlbmRpZiAvKiBTVE0zMkYxMFhfTERfVkwgKi8KKworI2lmZGVmIFNUTTMyRjEwWF9NRAorICBBREMxXzJfSVJRbiAgICAgICAgICAgICAgICAgPSAxOCwgICAgIC8qITwgQURDMSBhbmQgQURDMiBnbG9iYWwgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAqLworICBVU0JfSFBfQ0FOMV9UWF9JUlFuICAgICAgICAgPSAxOSwgICAgIC8qITwgVVNCIERldmljZSBIaWdoIFByaW9yaXR5IG9yIENBTjEgVFggSW50ZXJydXB0cyAgICAgICAqLworICBVU0JfTFBfQ0FOMV9SWDBfSVJRbiAgICAgICAgPSAyMCwgICAgIC8qITwgVVNCIERldmljZSBMb3cgUHJpb3JpdHkgb3IgQ0FOMSBSWDAgSW50ZXJydXB0cyAgICAgICAqLworICBDQU4xX1JYMV9JUlFuICAgICAgICAgICAgICAgPSAyMSwgICAgIC8qITwgQ0FOMSBSWDEgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBDQU4xX1NDRV9JUlFuICAgICAgICAgICAgICAgPSAyMiwgICAgIC8qITwgQ0FOMSBTQ0UgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBFWFRJOV81X0lSUW4gICAgICAgICAgICAgICAgPSAyMywgICAgIC8qITwgRXh0ZXJuYWwgTGluZVs5OjVdIEludGVycnVwdHMgICAgICAgICAgICAgICAgICAgICAgICAqLworICBUSU0xX0JSS19JUlFuICAgICAgICAgICAgICAgPSAyNCwgICAgIC8qITwgVElNMSBCcmVhayBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBUSU0xX1VQX0lSUW4gICAgICAgICAgICAgICAgPSAyNSwgICAgIC8qITwgVElNMSBVcGRhdGUgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBUSU0xX1RSR19DT01fSVJRbiAgICAgICAgICAgPSAyNiwgICAgIC8qITwgVElNMSBUcmlnZ2VyIGFuZCBDb21tdXRhdGlvbiBJbnRlcnJ1cHQgICAgICAgICAgICAgICAqLworICBUSU0xX0NDX0lSUW4gICAgICAgICAgICAgICAgPSAyNywgICAgIC8qITwgVElNMSBDYXB0dXJlIENvbXBhcmUgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAqLworICBUSU0yX0lSUW4gICAgICAgICAgICAgICAgICAgPSAyOCwgICAgIC8qITwgVElNMiBnbG9iYWwgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBUSU0zX0lSUW4gICAgICAgICAgICAgICAgICAgPSAyOSwgICAgIC8qITwgVElNMyBnbG9iYWwgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBUSU00X0lSUW4gICAgICAgICAgICAgICAgICAgPSAzMCwgICAgIC8qITwgVElNNCBnbG9iYWwgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBJMkMxX0VWX0lSUW4gICAgICAgICAgICAgICAgPSAzMSwgICAgIC8qITwgSTJDMSBFdmVudCBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBJMkMxX0VSX0lSUW4gICAgICAgICAgICAgICAgPSAzMiwgICAgIC8qITwgSTJDMSBFcnJvciBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBJMkMyX0VWX0lSUW4gICAgICAgICAgICAgICAgPSAzMywgICAgIC8qITwgSTJDMiBFdmVudCBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBJMkMyX0VSX0lSUW4gICAgICAgICAgICAgICAgPSAzNCwgICAgIC8qITwgSTJDMiBFcnJvciBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBTUEkxX0lSUW4gICAgICAgICAgICAgICAgICAgPSAzNSwgICAgIC8qITwgU1BJMSBnbG9iYWwgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBTUEkyX0lSUW4gICAgICAgICAgICAgICAgICAgPSAzNiwgICAgIC8qITwgU1BJMiBnbG9iYWwgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBVU0FSVDFfSVJRbiAgICAgICAgICAgICAgICAgPSAzNywgICAgIC8qITwgVVNBUlQxIGdsb2JhbCBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBVU0FSVDJfSVJRbiAgICAgICAgICAgICAgICAgPSAzOCwgICAgIC8qITwgVVNBUlQyIGdsb2JhbCBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBVU0FSVDNfSVJRbiAgICAgICAgICAgICAgICAgPSAzOSwgICAgIC8qITwgVVNBUlQzIGdsb2JhbCBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBFWFRJMTVfMTBfSVJRbiAgICAgICAgICAgICAgPSA0MCwgICAgIC8qITwgRXh0ZXJuYWwgTGluZVsxNToxMF0gSW50ZXJydXB0cyAgICAgICAgICAgICAgICAgICAgICAqLworICBSVENBbGFybV9JUlFuICAgICAgICAgICAgICAgPSA0MSwgICAgIC8qITwgUlRDIEFsYXJtIHRocm91Z2ggRVhUSSBMaW5lIEludGVycnVwdCAgICAgICAgICAgICAgICAqLworICBVU0JXYWtlVXBfSVJRbiAgICAgICAgICAgICAgPSA0MiAgICAgIC8qITwgVVNCIERldmljZSBXYWtlVXAgZnJvbSBzdXNwZW5kIHRocm91Z2ggRVhUSSBMaW5lIEludGVycnVwdCAqLyAgCisjZW5kaWYgLyogU1RNMzJGMTBYX01EICovICAKKworI2lmZGVmIFNUTTMyRjEwWF9NRF9WTAorICBBREMxX0lSUW4gICAgICAgICAgICAgICAgICAgPSAxOCwgICAgIC8qITwgQURDMSBnbG9iYWwgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBFWFRJOV81X0lSUW4gICAgICAgICAgICAgICAgPSAyMywgICAgIC8qITwgRXh0ZXJuYWwgTGluZVs5OjVdIEludGVycnVwdHMgICAgICAgICAgICAgICAgICAgICAgICAqLworICBUSU0xX0JSS19USU0xNV9JUlFuICAgICAgICAgPSAyNCwgICAgIC8qITwgVElNMSBCcmVhayBhbmQgVElNMTUgSW50ZXJydXB0cyAgICAgICAgICAgICAgICAgICAgICAqLworICBUSU0xX1VQX1RJTTE2X0lSUW4gICAgICAgICAgPSAyNSwgICAgIC8qITwgVElNMSBVcGRhdGUgYW5kIFRJTTE2IEludGVycnVwdHMgICAgICAgICAgICAgICAgICAgICAqLworICBUSU0xX1RSR19DT01fVElNMTdfSVJRbiAgICAgPSAyNiwgICAgIC8qITwgVElNMSBUcmlnZ2VyIGFuZCBDb21tdXRhdGlvbiBhbmQgVElNMTcgSW50ZXJydXB0ICAgICAqLworICBUSU0xX0NDX0lSUW4gICAgICAgICAgICAgICAgPSAyNywgICAgIC8qITwgVElNMSBDYXB0dXJlIENvbXBhcmUgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAqLworICBUSU0yX0lSUW4gICAgICAgICAgICAgICAgICAgPSAyOCwgICAgIC8qITwgVElNMiBnbG9iYWwgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBUSU0zX0lSUW4gICAgICAgICAgICAgICAgICAgPSAyOSwgICAgIC8qITwgVElNMyBnbG9iYWwgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBUSU00X0lSUW4gICAgICAgICAgICAgICAgICAgPSAzMCwgICAgIC8qITwgVElNNCBnbG9iYWwgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBJMkMxX0VWX0lSUW4gICAgICAgICAgICAgICAgPSAzMSwgICAgIC8qITwgSTJDMSBFdmVudCBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBJMkMxX0VSX0lSUW4gICAgICAgICAgICAgICAgPSAzMiwgICAgIC8qITwgSTJDMSBFcnJvciBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBJMkMyX0VWX0lSUW4gICAgICAgICAgICAgICAgPSAzMywgICAgIC8qITwgSTJDMiBFdmVudCBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBJMkMyX0VSX0lSUW4gICAgICAgICAgICAgICAgPSAzNCwgICAgIC8qITwgSTJDMiBFcnJvciBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBTUEkxX0lSUW4gICAgICAgICAgICAgICAgICAgPSAzNSwgICAgIC8qITwgU1BJMSBnbG9iYWwgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBTUEkyX0lSUW4gICAgICAgICAgICAgICAgICAgPSAzNiwgICAgIC8qITwgU1BJMiBnbG9iYWwgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBVU0FSVDFfSVJRbiAgICAgICAgICAgICAgICAgPSAzNywgICAgIC8qITwgVVNBUlQxIGdsb2JhbCBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBVU0FSVDJfSVJRbiAgICAgICAgICAgICAgICAgPSAzOCwgICAgIC8qITwgVVNBUlQyIGdsb2JhbCBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBVU0FSVDNfSVJRbiAgICAgICAgICAgICAgICAgPSAzOSwgICAgIC8qITwgVVNBUlQzIGdsb2JhbCBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBFWFRJMTVfMTBfSVJRbiAgICAgICAgICAgICAgPSA0MCwgICAgIC8qITwgRXh0ZXJuYWwgTGluZVsxNToxMF0gSW50ZXJydXB0cyAgICAgICAgICAgICAgICAgICAgICAqLworICBSVENBbGFybV9JUlFuICAgICAgICAgICAgICAgPSA0MSwgICAgIC8qITwgUlRDIEFsYXJtIHRocm91Z2ggRVhUSSBMaW5lIEludGVycnVwdCAgICAgICAgICAgICAgICAqLworICBDRUNfSVJRbiAgICAgICAgICAgICAgICAgICAgPSA0MiwgICAgIC8qITwgSERNSS1DRUMgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBUSU02X0RBQ19JUlFuICAgICAgICAgICAgICAgPSA1NCwgICAgIC8qITwgVElNNiBhbmQgREFDIHVuZGVycnVuIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAqLworICBUSU03X0lSUW4gICAgICAgICAgICAgICAgICAgPSA1NSAgICAgIC8qITwgVElNNyBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLyAgICAgICAKKyNlbmRpZiAvKiBTVE0zMkYxMFhfTURfVkwgKi8KKworI2lmZGVmIFNUTTMyRjEwWF9IRAorICBBREMxXzJfSVJRbiAgICAgICAgICAgICAgICAgPSAxOCwgICAgIC8qITwgQURDMSBhbmQgQURDMiBnbG9iYWwgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAqLworICBVU0JfSFBfQ0FOMV9UWF9JUlFuICAgICAgICAgPSAxOSwgICAgIC8qITwgVVNCIERldmljZSBIaWdoIFByaW9yaXR5IG9yIENBTjEgVFggSW50ZXJydXB0cyAgICAgICAqLworICBVU0JfTFBfQ0FOMV9SWDBfSVJRbiAgICAgICAgPSAyMCwgICAgIC8qITwgVVNCIERldmljZSBMb3cgUHJpb3JpdHkgb3IgQ0FOMSBSWDAgSW50ZXJydXB0cyAgICAgICAqLworICBDQU4xX1JYMV9JUlFuICAgICAgICAgICAgICAgPSAyMSwgICAgIC8qITwgQ0FOMSBSWDEgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBDQU4xX1NDRV9JUlFuICAgICAgICAgICAgICAgPSAyMiwgICAgIC8qITwgQ0FOMSBTQ0UgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBFWFRJOV81X0lSUW4gICAgICAgICAgICAgICAgPSAyMywgICAgIC8qITwgRXh0ZXJuYWwgTGluZVs5OjVdIEludGVycnVwdHMgICAgICAgICAgICAgICAgICAgICAgICAqLworICBUSU0xX0JSS19JUlFuICAgICAgICAgICAgICAgPSAyNCwgICAgIC8qITwgVElNMSBCcmVhayBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBUSU0xX1VQX0lSUW4gICAgICAgICAgICAgICAgPSAyNSwgICAgIC8qITwgVElNMSBVcGRhdGUgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBUSU0xX1RSR19DT01fSVJRbiAgICAgICAgICAgPSAyNiwgICAgIC8qITwgVElNMSBUcmlnZ2VyIGFuZCBDb21tdXRhdGlvbiBJbnRlcnJ1cHQgICAgICAgICAgICAgICAqLworICBUSU0xX0NDX0lSUW4gICAgICAgICAgICAgICAgPSAyNywgICAgIC8qITwgVElNMSBDYXB0dXJlIENvbXBhcmUgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAqLworICBUSU0yX0lSUW4gICAgICAgICAgICAgICAgICAgPSAyOCwgICAgIC8qITwgVElNMiBnbG9iYWwgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBUSU0zX0lSUW4gICAgICAgICAgICAgICAgICAgPSAyOSwgICAgIC8qITwgVElNMyBnbG9iYWwgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBUSU00X0lSUW4gICAgICAgICAgICAgICAgICAgPSAzMCwgICAgIC8qITwgVElNNCBnbG9iYWwgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBJMkMxX0VWX0lSUW4gICAgICAgICAgICAgICAgPSAzMSwgICAgIC8qITwgSTJDMSBFdmVudCBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBJMkMxX0VSX0lSUW4gICAgICAgICAgICAgICAgPSAzMiwgICAgIC8qITwgSTJDMSBFcnJvciBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBJMkMyX0VWX0lSUW4gICAgICAgICAgICAgICAgPSAzMywgICAgIC8qITwgSTJDMiBFdmVudCBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBJMkMyX0VSX0lSUW4gICAgICAgICAgICAgICAgPSAzNCwgICAgIC8qITwgSTJDMiBFcnJvciBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBTUEkxX0lSUW4gICAgICAgICAgICAgICAgICAgPSAzNSwgICAgIC8qITwgU1BJMSBnbG9iYWwgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBTUEkyX0lSUW4gICAgICAgICAgICAgICAgICAgPSAzNiwgICAgIC8qITwgU1BJMiBnbG9iYWwgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBVU0FSVDFfSVJRbiAgICAgICAgICAgICAgICAgPSAzNywgICAgIC8qITwgVVNBUlQxIGdsb2JhbCBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBVU0FSVDJfSVJRbiAgICAgICAgICAgICAgICAgPSAzOCwgICAgIC8qITwgVVNBUlQyIGdsb2JhbCBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBVU0FSVDNfSVJRbiAgICAgICAgICAgICAgICAgPSAzOSwgICAgIC8qITwgVVNBUlQzIGdsb2JhbCBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBFWFRJMTVfMTBfSVJRbiAgICAgICAgICAgICAgPSA0MCwgICAgIC8qITwgRXh0ZXJuYWwgTGluZVsxNToxMF0gSW50ZXJydXB0cyAgICAgICAgICAgICAgICAgICAgICAqLworICBSVENBbGFybV9JUlFuICAgICAgICAgICAgICAgPSA0MSwgICAgIC8qITwgUlRDIEFsYXJtIHRocm91Z2ggRVhUSSBMaW5lIEludGVycnVwdCAgICAgICAgICAgICAgICAqLworICBVU0JXYWtlVXBfSVJRbiAgICAgICAgICAgICAgPSA0MiwgICAgIC8qITwgVVNCIERldmljZSBXYWtlVXAgZnJvbSBzdXNwZW5kIHRocm91Z2ggRVhUSSBMaW5lIEludGVycnVwdCAqLworICBUSU04X0JSS19JUlFuICAgICAgICAgICAgICAgPSA0MywgICAgIC8qITwgVElNOCBCcmVhayBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBUSU04X1VQX0lSUW4gICAgICAgICAgICAgICAgPSA0NCwgICAgIC8qITwgVElNOCBVcGRhdGUgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBUSU04X1RSR19DT01fSVJRbiAgICAgICAgICAgPSA0NSwgICAgIC8qITwgVElNOCBUcmlnZ2VyIGFuZCBDb21tdXRhdGlvbiBJbnRlcnJ1cHQgICAgICAgICAgICAgICAqLworICBUSU04X0NDX0lSUW4gICAgICAgICAgICAgICAgPSA0NiwgICAgIC8qITwgVElNOCBDYXB0dXJlIENvbXBhcmUgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAqLworICBBREMzX0lSUW4gICAgICAgICAgICAgICAgICAgPSA0NywgICAgIC8qITwgQURDMyBnbG9iYWwgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGU01DX0lSUW4gICAgICAgICAgICAgICAgICAgPSA0OCwgICAgIC8qITwgRlNNQyBnbG9iYWwgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBTRElPX0lSUW4gICAgICAgICAgICAgICAgICAgPSA0OSwgICAgIC8qITwgU0RJTyBnbG9iYWwgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBUSU01X0lSUW4gICAgICAgICAgICAgICAgICAgPSA1MCwgICAgIC8qITwgVElNNSBnbG9iYWwgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBTUEkzX0lSUW4gICAgICAgICAgICAgICAgICAgPSA1MSwgICAgIC8qITwgU1BJMyBnbG9iYWwgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBVQVJUNF9JUlFuICAgICAgICAgICAgICAgICAgPSA1MiwgICAgIC8qITwgVUFSVDQgZ2xvYmFsIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBVQVJUNV9JUlFuICAgICAgICAgICAgICAgICAgPSA1MywgICAgIC8qITwgVUFSVDUgZ2xvYmFsIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBUSU02X0lSUW4gICAgICAgICAgICAgICAgICAgPSA1NCwgICAgIC8qITwgVElNNiBnbG9iYWwgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBUSU03X0lSUW4gICAgICAgICAgICAgICAgICAgPSA1NSwgICAgIC8qITwgVElNNyBnbG9iYWwgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBETUEyX0NoYW5uZWwxX0lSUW4gICAgICAgICAgPSA1NiwgICAgIC8qITwgRE1BMiBDaGFubmVsIDEgZ2xvYmFsIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAqLworICBETUEyX0NoYW5uZWwyX0lSUW4gICAgICAgICAgPSA1NywgICAgIC8qITwgRE1BMiBDaGFubmVsIDIgZ2xvYmFsIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAqLworICBETUEyX0NoYW5uZWwzX0lSUW4gICAgICAgICAgPSA1OCwgICAgIC8qITwgRE1BMiBDaGFubmVsIDMgZ2xvYmFsIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAqLworICBETUEyX0NoYW5uZWw0XzVfSVJRbiAgICAgICAgPSA1OSAgICAgIC8qITwgRE1BMiBDaGFubmVsIDQgYW5kIENoYW5uZWwgNSBnbG9iYWwgSW50ZXJydXB0ICAgICAgICAqLworI2VuZGlmIC8qIFNUTTMyRjEwWF9IRCAqLyAgCisKKyNpZmRlZiBTVE0zMkYxMFhfSERfVkwKKyAgQURDMV9JUlFuICAgICAgICAgICAgICAgICAgID0gMTgsICAgICAvKiE8IEFEQzEgZ2xvYmFsIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRVhUSTlfNV9JUlFuICAgICAgICAgICAgICAgID0gMjMsICAgICAvKiE8IEV4dGVybmFsIExpbmVbOTo1XSBJbnRlcnJ1cHRzICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgVElNMV9CUktfVElNMTVfSVJRbiAgICAgICAgID0gMjQsICAgICAvKiE8IFRJTTEgQnJlYWsgYW5kIFRJTTE1IEludGVycnVwdHMgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgVElNMV9VUF9USU0xNl9JUlFuICAgICAgICAgID0gMjUsICAgICAvKiE8IFRJTTEgVXBkYXRlIGFuZCBUSU0xNiBJbnRlcnJ1cHRzICAgICAgICAgICAgICAgICAgICAgKi8KKyAgVElNMV9UUkdfQ09NX1RJTTE3X0lSUW4gICAgID0gMjYsICAgICAvKiE8IFRJTTEgVHJpZ2dlciBhbmQgQ29tbXV0YXRpb24gYW5kIFRJTTE3IEludGVycnVwdCAgICAgKi8KKyAgVElNMV9DQ19JUlFuICAgICAgICAgICAgICAgID0gMjcsICAgICAvKiE8IFRJTTEgQ2FwdHVyZSBDb21wYXJlIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgVElNMl9JUlFuICAgICAgICAgICAgICAgICAgID0gMjgsICAgICAvKiE8IFRJTTIgZ2xvYmFsIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgVElNM19JUlFuICAgICAgICAgICAgICAgICAgID0gMjksICAgICAvKiE8IFRJTTMgZ2xvYmFsIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgVElNNF9JUlFuICAgICAgICAgICAgICAgICAgID0gMzAsICAgICAvKiE8IFRJTTQgZ2xvYmFsIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgSTJDMV9FVl9JUlFuICAgICAgICAgICAgICAgID0gMzEsICAgICAvKiE8IEkyQzEgRXZlbnQgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgSTJDMV9FUl9JUlFuICAgICAgICAgICAgICAgID0gMzIsICAgICAvKiE8IEkyQzEgRXJyb3IgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgSTJDMl9FVl9JUlFuICAgICAgICAgICAgICAgID0gMzMsICAgICAvKiE8IEkyQzIgRXZlbnQgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgSTJDMl9FUl9JUlFuICAgICAgICAgICAgICAgID0gMzQsICAgICAvKiE8IEkyQzIgRXJyb3IgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgU1BJMV9JUlFuICAgICAgICAgICAgICAgICAgID0gMzUsICAgICAvKiE8IFNQSTEgZ2xvYmFsIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgU1BJMl9JUlFuICAgICAgICAgICAgICAgICAgID0gMzYsICAgICAvKiE8IFNQSTIgZ2xvYmFsIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgVVNBUlQxX0lSUW4gICAgICAgICAgICAgICAgID0gMzcsICAgICAvKiE8IFVTQVJUMSBnbG9iYWwgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgVVNBUlQyX0lSUW4gICAgICAgICAgICAgICAgID0gMzgsICAgICAvKiE8IFVTQVJUMiBnbG9iYWwgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgVVNBUlQzX0lSUW4gICAgICAgICAgICAgICAgID0gMzksICAgICAvKiE8IFVTQVJUMyBnbG9iYWwgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRVhUSTE1XzEwX0lSUW4gICAgICAgICAgICAgID0gNDAsICAgICAvKiE8IEV4dGVybmFsIExpbmVbMTU6MTBdIEludGVycnVwdHMgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgUlRDQWxhcm1fSVJRbiAgICAgICAgICAgICAgID0gNDEsICAgICAvKiE8IFJUQyBBbGFybSB0aHJvdWdoIEVYVEkgTGluZSBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgKi8KKyAgQ0VDX0lSUW4gICAgICAgICAgICAgICAgICAgID0gNDIsICAgICAvKiE8IEhETUktQ0VDIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgVElNMTJfSVJRbiAgICAgICAgICAgICAgICAgID0gNDMsICAgICAvKiE8IFRJTTEyIGdsb2JhbCBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgVElNMTNfSVJRbiAgICAgICAgICAgICAgICAgID0gNDQsICAgICAvKiE8IFRJTTEzIGdsb2JhbCBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgVElNMTRfSVJRbiAgICAgICAgICAgICAgICAgID0gNDUsICAgICAvKiE8IFRJTTE0IGdsb2JhbCBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgVElNNV9JUlFuICAgICAgICAgICAgICAgICAgID0gNTAsICAgICAvKiE8IFRJTTUgZ2xvYmFsIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgU1BJM19JUlFuICAgICAgICAgICAgICAgICAgID0gNTEsICAgICAvKiE8IFNQSTMgZ2xvYmFsIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgVUFSVDRfSVJRbiAgICAgICAgICAgICAgICAgID0gNTIsICAgICAvKiE8IFVBUlQ0IGdsb2JhbCBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgVUFSVDVfSVJRbiAgICAgICAgICAgICAgICAgID0gNTMsICAgICAvKiE8IFVBUlQ1IGdsb2JhbCBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8gIAorICBUSU02X0RBQ19JUlFuICAgICAgICAgICAgICAgPSA1NCwgICAgIC8qITwgVElNNiBhbmQgREFDIHVuZGVycnVuIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAqLworICBUSU03X0lSUW4gICAgICAgICAgICAgICAgICAgPSA1NSwgICAgIC8qITwgVElNNyBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLyAgCisgIERNQTJfQ2hhbm5lbDFfSVJRbiAgICAgICAgICA9IDU2LCAgICAgLyohPCBETUEyIENoYW5uZWwgMSBnbG9iYWwgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICovCisgIERNQTJfQ2hhbm5lbDJfSVJRbiAgICAgICAgICA9IDU3LCAgICAgLyohPCBETUEyIENoYW5uZWwgMiBnbG9iYWwgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICovCisgIERNQTJfQ2hhbm5lbDNfSVJRbiAgICAgICAgICA9IDU4LCAgICAgLyohPCBETUEyIENoYW5uZWwgMyBnbG9iYWwgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICovCisgIERNQTJfQ2hhbm5lbDRfNV9JUlFuICAgICAgICA9IDU5LCAgICAgLyohPCBETUEyIENoYW5uZWwgNCBhbmQgQ2hhbm5lbCA1IGdsb2JhbCBJbnRlcnJ1cHQgICAgICAgICovCisgIERNQTJfQ2hhbm5lbDVfSVJRbiAgICAgICAgICA9IDYwICAgICAgLyohPCBETUEyIENoYW5uZWwgNSBnbG9iYWwgSW50ZXJydXB0IChETUEyIENoYW5uZWwgNSBpcyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcHBlZCBhdCBwb3NpdGlvbiA2MCBvbmx5IGlmIHRoZSBNSVNDX1JFTUFQIGJpdCBpbiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBBRklPX01BUFIyIHJlZ2lzdGVyIGlzIHNldCkgICAgICAgICAgICAgICAgICAgICAgKi8gICAgICAgCisjZW5kaWYgLyogU1RNMzJGMTBYX0hEX1ZMICovCisKKyNpZmRlZiBTVE0zMkYxMFhfWEwKKyAgQURDMV8yX0lSUW4gICAgICAgICAgICAgICAgID0gMTgsICAgICAvKiE8IEFEQzEgYW5kIEFEQzIgZ2xvYmFsIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgVVNCX0hQX0NBTjFfVFhfSVJRbiAgICAgICAgID0gMTksICAgICAvKiE8IFVTQiBEZXZpY2UgSGlnaCBQcmlvcml0eSBvciBDQU4xIFRYIEludGVycnVwdHMgICAgICAgKi8KKyAgVVNCX0xQX0NBTjFfUlgwX0lSUW4gICAgICAgID0gMjAsICAgICAvKiE8IFVTQiBEZXZpY2UgTG93IFByaW9yaXR5IG9yIENBTjEgUlgwIEludGVycnVwdHMgICAgICAgKi8KKyAgQ0FOMV9SWDFfSVJRbiAgICAgICAgICAgICAgID0gMjEsICAgICAvKiE8IENBTjEgUlgxIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgQ0FOMV9TQ0VfSVJRbiAgICAgICAgICAgICAgID0gMjIsICAgICAvKiE8IENBTjEgU0NFIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRVhUSTlfNV9JUlFuICAgICAgICAgICAgICAgID0gMjMsICAgICAvKiE8IEV4dGVybmFsIExpbmVbOTo1XSBJbnRlcnJ1cHRzICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgVElNMV9CUktfVElNOV9JUlFuICAgICAgICAgID0gMjQsICAgICAvKiE8IFRJTTEgQnJlYWsgSW50ZXJydXB0IGFuZCBUSU05IGdsb2JhbCBJbnRlcnJ1cHQgICAgICAgKi8KKyAgVElNMV9VUF9USU0xMF9JUlFuICAgICAgICAgID0gMjUsICAgICAvKiE8IFRJTTEgVXBkYXRlIEludGVycnVwdCBhbmQgVElNMTAgZ2xvYmFsIEludGVycnVwdCAgICAgKi8KKyAgVElNMV9UUkdfQ09NX1RJTTExX0lSUW4gICAgID0gMjYsICAgICAvKiE8IFRJTTEgVHJpZ2dlciBhbmQgQ29tbXV0YXRpb24gSW50ZXJydXB0IGFuZCBUSU0xMSBnbG9iYWwgaW50ZXJydXB0ICovCisgIFRJTTFfQ0NfSVJRbiAgICAgICAgICAgICAgICA9IDI3LCAgICAgLyohPCBUSU0xIENhcHR1cmUgQ29tcGFyZSBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICovCisgIFRJTTJfSVJRbiAgICAgICAgICAgICAgICAgICA9IDI4LCAgICAgLyohPCBUSU0yIGdsb2JhbCBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIFRJTTNfSVJRbiAgICAgICAgICAgICAgICAgICA9IDI5LCAgICAgLyohPCBUSU0zIGdsb2JhbCBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIFRJTTRfSVJRbiAgICAgICAgICAgICAgICAgICA9IDMwLCAgICAgLyohPCBUSU00IGdsb2JhbCBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEkyQzFfRVZfSVJRbiAgICAgICAgICAgICAgICA9IDMxLCAgICAgLyohPCBJMkMxIEV2ZW50IEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEkyQzFfRVJfSVJRbiAgICAgICAgICAgICAgICA9IDMyLCAgICAgLyohPCBJMkMxIEVycm9yIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEkyQzJfRVZfSVJRbiAgICAgICAgICAgICAgICA9IDMzLCAgICAgLyohPCBJMkMyIEV2ZW50IEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEkyQzJfRVJfSVJRbiAgICAgICAgICAgICAgICA9IDM0LCAgICAgLyohPCBJMkMyIEVycm9yIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIFNQSTFfSVJRbiAgICAgICAgICAgICAgICAgICA9IDM1LCAgICAgLyohPCBTUEkxIGdsb2JhbCBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIFNQSTJfSVJRbiAgICAgICAgICAgICAgICAgICA9IDM2LCAgICAgLyohPCBTUEkyIGdsb2JhbCBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIFVTQVJUMV9JUlFuICAgICAgICAgICAgICAgICA9IDM3LCAgICAgLyohPCBVU0FSVDEgZ2xvYmFsIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIFVTQVJUMl9JUlFuICAgICAgICAgICAgICAgICA9IDM4LCAgICAgLyohPCBVU0FSVDIgZ2xvYmFsIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIFVTQVJUM19JUlFuICAgICAgICAgICAgICAgICA9IDM5LCAgICAgLyohPCBVU0FSVDMgZ2xvYmFsIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIEVYVEkxNV8xMF9JUlFuICAgICAgICAgICAgICA9IDQwLCAgICAgLyohPCBFeHRlcm5hbCBMaW5lWzE1OjEwXSBJbnRlcnJ1cHRzICAgICAgICAgICAgICAgICAgICAgICovCisgIFJUQ0FsYXJtX0lSUW4gICAgICAgICAgICAgICA9IDQxLCAgICAgLyohPCBSVEMgQWxhcm0gdGhyb3VnaCBFWFRJIExpbmUgSW50ZXJydXB0ICAgICAgICAgICAgICAgICovCisgIFVTQldha2VVcF9JUlFuICAgICAgICAgICAgICA9IDQyLCAgICAgLyohPCBVU0IgRGV2aWNlIFdha2VVcCBmcm9tIHN1c3BlbmQgdGhyb3VnaCBFWFRJIExpbmUgSW50ZXJydXB0ICovCisgIFRJTThfQlJLX1RJTTEyX0lSUW4gICAgICAgICA9IDQzLCAgICAgLyohPCBUSU04IEJyZWFrIEludGVycnVwdCBhbmQgVElNMTIgZ2xvYmFsIEludGVycnVwdCAgICAgICovCisgIFRJTThfVVBfVElNMTNfSVJRbiAgICAgICAgICA9IDQ0LCAgICAgLyohPCBUSU04IFVwZGF0ZSBJbnRlcnJ1cHQgYW5kIFRJTTEzIGdsb2JhbCBJbnRlcnJ1cHQgICAgICovCisgIFRJTThfVFJHX0NPTV9USU0xNF9JUlFuICAgICA9IDQ1LCAgICAgLyohPCBUSU04IFRyaWdnZXIgYW5kIENvbW11dGF0aW9uIEludGVycnVwdCBhbmQgVElNMTQgZ2xvYmFsIGludGVycnVwdCAqLworICBUSU04X0NDX0lSUW4gICAgICAgICAgICAgICAgPSA0NiwgICAgIC8qITwgVElNOCBDYXB0dXJlIENvbXBhcmUgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAqLworICBBREMzX0lSUW4gICAgICAgICAgICAgICAgICAgPSA0NywgICAgIC8qITwgQURDMyBnbG9iYWwgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBGU01DX0lSUW4gICAgICAgICAgICAgICAgICAgPSA0OCwgICAgIC8qITwgRlNNQyBnbG9iYWwgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBTRElPX0lSUW4gICAgICAgICAgICAgICAgICAgPSA0OSwgICAgIC8qITwgU0RJTyBnbG9iYWwgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBUSU01X0lSUW4gICAgICAgICAgICAgICAgICAgPSA1MCwgICAgIC8qITwgVElNNSBnbG9iYWwgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBTUEkzX0lSUW4gICAgICAgICAgICAgICAgICAgPSA1MSwgICAgIC8qITwgU1BJMyBnbG9iYWwgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBVQVJUNF9JUlFuICAgICAgICAgICAgICAgICAgPSA1MiwgICAgIC8qITwgVUFSVDQgZ2xvYmFsIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBVQVJUNV9JUlFuICAgICAgICAgICAgICAgICAgPSA1MywgICAgIC8qITwgVUFSVDUgZ2xvYmFsIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBUSU02X0lSUW4gICAgICAgICAgICAgICAgICAgPSA1NCwgICAgIC8qITwgVElNNiBnbG9iYWwgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBUSU03X0lSUW4gICAgICAgICAgICAgICAgICAgPSA1NSwgICAgIC8qITwgVElNNyBnbG9iYWwgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBETUEyX0NoYW5uZWwxX0lSUW4gICAgICAgICAgPSA1NiwgICAgIC8qITwgRE1BMiBDaGFubmVsIDEgZ2xvYmFsIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAqLworICBETUEyX0NoYW5uZWwyX0lSUW4gICAgICAgICAgPSA1NywgICAgIC8qITwgRE1BMiBDaGFubmVsIDIgZ2xvYmFsIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAqLworICBETUEyX0NoYW5uZWwzX0lSUW4gICAgICAgICAgPSA1OCwgICAgIC8qITwgRE1BMiBDaGFubmVsIDMgZ2xvYmFsIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAqLworICBETUEyX0NoYW5uZWw0XzVfSVJRbiAgICAgICAgPSA1OSAgICAgIC8qITwgRE1BMiBDaGFubmVsIDQgYW5kIENoYW5uZWwgNSBnbG9iYWwgSW50ZXJydXB0ICAgICAgICAqLworI2VuZGlmIC8qIFNUTTMyRjEwWF9YTCAqLyAgCisKKyNpZmRlZiBTVE0zMkYxMFhfQ0wKKyAgQURDMV8yX0lSUW4gICAgICAgICAgICAgICAgID0gMTgsICAgICAvKiE8IEFEQzEgYW5kIEFEQzIgZ2xvYmFsIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgQ0FOMV9UWF9JUlFuICAgICAgICAgICAgICAgID0gMTksICAgICAvKiE8IFVTQiBEZXZpY2UgSGlnaCBQcmlvcml0eSBvciBDQU4xIFRYIEludGVycnVwdHMgICAgICAgKi8KKyAgQ0FOMV9SWDBfSVJRbiAgICAgICAgICAgICAgID0gMjAsICAgICAvKiE8IFVTQiBEZXZpY2UgTG93IFByaW9yaXR5IG9yIENBTjEgUlgwIEludGVycnVwdHMgICAgICAgKi8KKyAgQ0FOMV9SWDFfSVJRbiAgICAgICAgICAgICAgID0gMjEsICAgICAvKiE8IENBTjEgUlgxIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgQ0FOMV9TQ0VfSVJRbiAgICAgICAgICAgICAgID0gMjIsICAgICAvKiE8IENBTjEgU0NFIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRVhUSTlfNV9JUlFuICAgICAgICAgICAgICAgID0gMjMsICAgICAvKiE8IEV4dGVybmFsIExpbmVbOTo1XSBJbnRlcnJ1cHRzICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgVElNMV9CUktfSVJRbiAgICAgICAgICAgICAgID0gMjQsICAgICAvKiE8IFRJTTEgQnJlYWsgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgVElNMV9VUF9JUlFuICAgICAgICAgICAgICAgID0gMjUsICAgICAvKiE8IFRJTTEgVXBkYXRlIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgVElNMV9UUkdfQ09NX0lSUW4gICAgICAgICAgID0gMjYsICAgICAvKiE8IFRJTTEgVHJpZ2dlciBhbmQgQ29tbXV0YXRpb24gSW50ZXJydXB0ICAgICAgICAgICAgICAgKi8KKyAgVElNMV9DQ19JUlFuICAgICAgICAgICAgICAgID0gMjcsICAgICAvKiE8IFRJTTEgQ2FwdHVyZSBDb21wYXJlIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgVElNMl9JUlFuICAgICAgICAgICAgICAgICAgID0gMjgsICAgICAvKiE8IFRJTTIgZ2xvYmFsIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgVElNM19JUlFuICAgICAgICAgICAgICAgICAgID0gMjksICAgICAvKiE8IFRJTTMgZ2xvYmFsIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgVElNNF9JUlFuICAgICAgICAgICAgICAgICAgID0gMzAsICAgICAvKiE8IFRJTTQgZ2xvYmFsIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgSTJDMV9FVl9JUlFuICAgICAgICAgICAgICAgID0gMzEsICAgICAvKiE8IEkyQzEgRXZlbnQgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgSTJDMV9FUl9JUlFuICAgICAgICAgICAgICAgID0gMzIsICAgICAvKiE8IEkyQzEgRXJyb3IgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgSTJDMl9FVl9JUlFuICAgICAgICAgICAgICAgID0gMzMsICAgICAvKiE8IEkyQzIgRXZlbnQgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgSTJDMl9FUl9JUlFuICAgICAgICAgICAgICAgID0gMzQsICAgICAvKiE8IEkyQzIgRXJyb3IgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgU1BJMV9JUlFuICAgICAgICAgICAgICAgICAgID0gMzUsICAgICAvKiE8IFNQSTEgZ2xvYmFsIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgU1BJMl9JUlFuICAgICAgICAgICAgICAgICAgID0gMzYsICAgICAvKiE8IFNQSTIgZ2xvYmFsIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgVVNBUlQxX0lSUW4gICAgICAgICAgICAgICAgID0gMzcsICAgICAvKiE8IFVTQVJUMSBnbG9iYWwgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgVVNBUlQyX0lSUW4gICAgICAgICAgICAgICAgID0gMzgsICAgICAvKiE8IFVTQVJUMiBnbG9iYWwgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgVVNBUlQzX0lSUW4gICAgICAgICAgICAgICAgID0gMzksICAgICAvKiE8IFVTQVJUMyBnbG9iYWwgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRVhUSTE1XzEwX0lSUW4gICAgICAgICAgICAgID0gNDAsICAgICAvKiE8IEV4dGVybmFsIExpbmVbMTU6MTBdIEludGVycnVwdHMgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgUlRDQWxhcm1fSVJRbiAgICAgICAgICAgICAgID0gNDEsICAgICAvKiE8IFJUQyBBbGFybSB0aHJvdWdoIEVYVEkgTGluZSBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgKi8KKyAgT1RHX0ZTX1dLVVBfSVJRbiAgICAgICAgICAgID0gNDIsICAgICAvKiE8IFVTQiBPVEcgRlMgV2FrZVVwIGZyb20gc3VzcGVuZCB0aHJvdWdoIEVYVEkgTGluZSBJbnRlcnJ1cHQgKi8KKyAgVElNNV9JUlFuICAgICAgICAgICAgICAgICAgID0gNTAsICAgICAvKiE8IFRJTTUgZ2xvYmFsIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgU1BJM19JUlFuICAgICAgICAgICAgICAgICAgID0gNTEsICAgICAvKiE8IFNQSTMgZ2xvYmFsIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgVUFSVDRfSVJRbiAgICAgICAgICAgICAgICAgID0gNTIsICAgICAvKiE8IFVBUlQ0IGdsb2JhbCBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgVUFSVDVfSVJRbiAgICAgICAgICAgICAgICAgID0gNTMsICAgICAvKiE8IFVBUlQ1IGdsb2JhbCBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgVElNNl9JUlFuICAgICAgICAgICAgICAgICAgID0gNTQsICAgICAvKiE8IFRJTTYgZ2xvYmFsIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgVElNN19JUlFuICAgICAgICAgICAgICAgICAgID0gNTUsICAgICAvKiE8IFRJTTcgZ2xvYmFsIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRE1BMl9DaGFubmVsMV9JUlFuICAgICAgICAgID0gNTYsICAgICAvKiE8IERNQTIgQ2hhbm5lbCAxIGdsb2JhbCBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRE1BMl9DaGFubmVsMl9JUlFuICAgICAgICAgID0gNTcsICAgICAvKiE8IERNQTIgQ2hhbm5lbCAyIGdsb2JhbCBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRE1BMl9DaGFubmVsM19JUlFuICAgICAgICAgID0gNTgsICAgICAvKiE8IERNQTIgQ2hhbm5lbCAzIGdsb2JhbCBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRE1BMl9DaGFubmVsNF9JUlFuICAgICAgICAgID0gNTksICAgICAvKiE8IERNQTIgQ2hhbm5lbCA0IGdsb2JhbCBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRE1BMl9DaGFubmVsNV9JUlFuICAgICAgICAgID0gNjAsICAgICAvKiE8IERNQTIgQ2hhbm5lbCA1IGdsb2JhbCBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRVRIX0lSUW4gICAgICAgICAgICAgICAgICAgID0gNjEsICAgICAvKiE8IEV0aGVybmV0IGdsb2JhbCBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRVRIX1dLVVBfSVJRbiAgICAgICAgICAgICAgID0gNjIsICAgICAvKiE8IEV0aGVybmV0IFdha2V1cCB0aHJvdWdoIEVYVEkgbGluZSBJbnRlcnJ1cHQgICAgICAgICAgKi8KKyAgQ0FOMl9UWF9JUlFuICAgICAgICAgICAgICAgID0gNjMsICAgICAvKiE8IENBTjIgVFggSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgQ0FOMl9SWDBfSVJRbiAgICAgICAgICAgICAgID0gNjQsICAgICAvKiE8IENBTjIgUlgwIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgQ0FOMl9SWDFfSVJRbiAgICAgICAgICAgICAgID0gNjUsICAgICAvKiE8IENBTjIgUlgxIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgQ0FOMl9TQ0VfSVJRbiAgICAgICAgICAgICAgID0gNjYsICAgICAvKiE8IENBTjIgU0NFIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgT1RHX0ZTX0lSUW4gICAgICAgICAgICAgICAgID0gNjcgICAgICAvKiE8IFVTQiBPVEcgRlMgZ2xvYmFsIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNlbmRpZiAvKiBTVE0zMkYxMFhfQ0wgKi8gICAgIAorfSBJUlFuX1R5cGU7CisKKy8qKgorICAqIEB9CisgICovCisKKyNpbmNsdWRlICJjb3JlX2NtMy5oIgorI2luY2x1ZGUgInN5c3RlbV9zdG0zMmYxMHguaCIKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKworLyoqIEBhZGR0b2dyb3VwIEV4cG9ydGVkX3R5cGVzCisgICogQHsKKyAgKi8gIAorCisvKiE8IFNUTTMyRjEweCBTdGFuZGFyZCBQZXJpcGhlcmFsIExpYnJhcnkgb2xkIHR5cGVzIChtYWludGFpbmVkIGZvciBsZWdhY3kgcHVycG9zZSkgKi8KK3R5cGVkZWYgaW50MzJfdCAgczMyOwordHlwZWRlZiBpbnQxNl90IHMxNjsKK3R5cGVkZWYgaW50OF90ICBzODsKKwordHlwZWRlZiBjb25zdCBpbnQzMl90IHNjMzI7ICAvKiE8IFJlYWQgT25seSAqLwordHlwZWRlZiBjb25zdCBpbnQxNl90IHNjMTY7ICAvKiE8IFJlYWQgT25seSAqLwordHlwZWRlZiBjb25zdCBpbnQ4X3Qgc2M4OyAgIC8qITwgUmVhZCBPbmx5ICovCisKK3R5cGVkZWYgX19JTyBpbnQzMl90ICB2czMyOwordHlwZWRlZiBfX0lPIGludDE2X3QgIHZzMTY7Cit0eXBlZGVmIF9fSU8gaW50OF90ICAgdnM4OworCit0eXBlZGVmIF9fSSBpbnQzMl90IHZzYzMyOyAgLyohPCBSZWFkIE9ubHkgKi8KK3R5cGVkZWYgX19JIGludDE2X3QgdnNjMTY7ICAvKiE8IFJlYWQgT25seSAqLwordHlwZWRlZiBfX0kgaW50OF90IHZzYzg7ICAgLyohPCBSZWFkIE9ubHkgKi8KKwordHlwZWRlZiB1aW50MzJfdCAgdTMyOwordHlwZWRlZiB1aW50MTZfdCB1MTY7Cit0eXBlZGVmIHVpbnQ4X3QgIHU4OworCit0eXBlZGVmIGNvbnN0IHVpbnQzMl90IHVjMzI7ICAvKiE8IFJlYWQgT25seSAqLwordHlwZWRlZiBjb25zdCB1aW50MTZfdCB1YzE2OyAgLyohPCBSZWFkIE9ubHkgKi8KK3R5cGVkZWYgY29uc3QgdWludDhfdCB1Yzg7ICAgLyohPCBSZWFkIE9ubHkgKi8KKwordHlwZWRlZiBfX0lPIHVpbnQzMl90ICB2dTMyOwordHlwZWRlZiBfX0lPIHVpbnQxNl90IHZ1MTY7Cit0eXBlZGVmIF9fSU8gdWludDhfdCAgdnU4OworCit0eXBlZGVmIF9fSSB1aW50MzJfdCB2dWMzMjsgIC8qITwgUmVhZCBPbmx5ICovCit0eXBlZGVmIF9fSSB1aW50MTZfdCB2dWMxNjsgIC8qITwgUmVhZCBPbmx5ICovCit0eXBlZGVmIF9fSSB1aW50OF90IHZ1Yzg7ICAgLyohPCBSZWFkIE9ubHkgKi8KKwordHlwZWRlZiBlbnVtIHtSRVNFVCA9IDAsIFNFVCA9ICFSRVNFVH0gRmxhZ1N0YXR1cywgSVRTdGF0dXM7CisKK3R5cGVkZWYgZW51bSB7RElTQUJMRSA9IDAsIEVOQUJMRSA9ICFESVNBQkxFfSBGdW5jdGlvbmFsU3RhdGU7CisjZGVmaW5lIElTX0ZVTkNUSU9OQUxfU1RBVEUoU1RBVEUpICgoKFNUQVRFKSA9PSBESVNBQkxFKSB8fCAoKFNUQVRFKSA9PSBFTkFCTEUpKQorCit0eXBlZGVmIGVudW0ge0VSUk9SID0gMCwgU1VDQ0VTUyA9ICFFUlJPUn0gRXJyb3JTdGF0dXM7CisKKy8qITwgU1RNMzJGMTB4IFN0YW5kYXJkIFBlcmlwaGVyYWwgTGlicmFyeSBvbGQgZGVmaW5pdGlvbnMgKG1haW50YWluZWQgZm9yIGxlZ2FjeSBwdXJwb3NlKSAqLworI2RlZmluZSBIU0VTdGFydFVwX1RpbWVPdXQgICBIU0VfU1RBUlRVUF9USU1FT1VUCisjZGVmaW5lIEhTRV9WYWx1ZSAgICAgICAgICAgIEhTRV9WQUxVRQorI2RlZmluZSBIU0lfVmFsdWUgICAgICAgICAgICBIU0lfVkFMVUUKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAYWRkdG9ncm91cCBQZXJpcGhlcmFsX3JlZ2lzdGVyc19zdHJ1Y3R1cmVzCisgICogQHsKKyAgKi8gICAKKworLyoqIAorICAqIEBicmllZiBBbmFsb2cgdG8gRGlnaXRhbCBDb252ZXJ0ZXIgIAorICAqLworCit0eXBlZGVmIHN0cnVjdAoreworICBfX0lPIHVpbnQzMl90IFNSOworICBfX0lPIHVpbnQzMl90IENSMTsKKyAgX19JTyB1aW50MzJfdCBDUjI7CisgIF9fSU8gdWludDMyX3QgU01QUjE7CisgIF9fSU8gdWludDMyX3QgU01QUjI7CisgIF9fSU8gdWludDMyX3QgSk9GUjE7CisgIF9fSU8gdWludDMyX3QgSk9GUjI7CisgIF9fSU8gdWludDMyX3QgSk9GUjM7CisgIF9fSU8gdWludDMyX3QgSk9GUjQ7CisgIF9fSU8gdWludDMyX3QgSFRSOworICBfX0lPIHVpbnQzMl90IExUUjsKKyAgX19JTyB1aW50MzJfdCBTUVIxOworICBfX0lPIHVpbnQzMl90IFNRUjI7CisgIF9fSU8gdWludDMyX3QgU1FSMzsKKyAgX19JTyB1aW50MzJfdCBKU1FSOworICBfX0lPIHVpbnQzMl90IEpEUjE7CisgIF9fSU8gdWludDMyX3QgSkRSMjsKKyAgX19JTyB1aW50MzJfdCBKRFIzOworICBfX0lPIHVpbnQzMl90IEpEUjQ7CisgIF9fSU8gdWludDMyX3QgRFI7Cit9IEFEQ19UeXBlRGVmOworCisvKiogCisgICogQGJyaWVmIEJhY2t1cCBSZWdpc3RlcnMgIAorICAqLworCit0eXBlZGVmIHN0cnVjdAoreworICB1aW50MzJfdCAgUkVTRVJWRUQwOworICBfX0lPIHVpbnQxNl90IERSMTsKKyAgdWludDE2X3QgIFJFU0VSVkVEMTsKKyAgX19JTyB1aW50MTZfdCBEUjI7CisgIHVpbnQxNl90ICBSRVNFUlZFRDI7CisgIF9fSU8gdWludDE2X3QgRFIzOworICB1aW50MTZfdCAgUkVTRVJWRUQzOworICBfX0lPIHVpbnQxNl90IERSNDsKKyAgdWludDE2X3QgIFJFU0VSVkVENDsKKyAgX19JTyB1aW50MTZfdCBEUjU7CisgIHVpbnQxNl90ICBSRVNFUlZFRDU7CisgIF9fSU8gdWludDE2X3QgRFI2OworICB1aW50MTZfdCAgUkVTRVJWRUQ2OworICBfX0lPIHVpbnQxNl90IERSNzsKKyAgdWludDE2X3QgIFJFU0VSVkVENzsKKyAgX19JTyB1aW50MTZfdCBEUjg7CisgIHVpbnQxNl90ICBSRVNFUlZFRDg7CisgIF9fSU8gdWludDE2X3QgRFI5OworICB1aW50MTZfdCAgUkVTRVJWRUQ5OworICBfX0lPIHVpbnQxNl90IERSMTA7CisgIHVpbnQxNl90ICBSRVNFUlZFRDEwOyAKKyAgX19JTyB1aW50MTZfdCBSVENDUjsKKyAgdWludDE2X3QgIFJFU0VSVkVEMTE7CisgIF9fSU8gdWludDE2X3QgQ1I7CisgIHVpbnQxNl90ICBSRVNFUlZFRDEyOworICBfX0lPIHVpbnQxNl90IENTUjsKKyAgdWludDE2X3QgIFJFU0VSVkVEMTNbNV07CisgIF9fSU8gdWludDE2X3QgRFIxMTsKKyAgdWludDE2X3QgIFJFU0VSVkVEMTQ7CisgIF9fSU8gdWludDE2X3QgRFIxMjsKKyAgdWludDE2X3QgIFJFU0VSVkVEMTU7CisgIF9fSU8gdWludDE2X3QgRFIxMzsKKyAgdWludDE2X3QgIFJFU0VSVkVEMTY7CisgIF9fSU8gdWludDE2X3QgRFIxNDsKKyAgdWludDE2X3QgIFJFU0VSVkVEMTc7CisgIF9fSU8gdWludDE2X3QgRFIxNTsKKyAgdWludDE2X3QgIFJFU0VSVkVEMTg7CisgIF9fSU8gdWludDE2X3QgRFIxNjsKKyAgdWludDE2X3QgIFJFU0VSVkVEMTk7CisgIF9fSU8gdWludDE2X3QgRFIxNzsKKyAgdWludDE2X3QgIFJFU0VSVkVEMjA7CisgIF9fSU8gdWludDE2X3QgRFIxODsKKyAgdWludDE2X3QgIFJFU0VSVkVEMjE7CisgIF9fSU8gdWludDE2X3QgRFIxOTsKKyAgdWludDE2X3QgIFJFU0VSVkVEMjI7CisgIF9fSU8gdWludDE2X3QgRFIyMDsKKyAgdWludDE2X3QgIFJFU0VSVkVEMjM7CisgIF9fSU8gdWludDE2X3QgRFIyMTsKKyAgdWludDE2X3QgIFJFU0VSVkVEMjQ7CisgIF9fSU8gdWludDE2X3QgRFIyMjsKKyAgdWludDE2X3QgIFJFU0VSVkVEMjU7CisgIF9fSU8gdWludDE2X3QgRFIyMzsKKyAgdWludDE2X3QgIFJFU0VSVkVEMjY7CisgIF9fSU8gdWludDE2X3QgRFIyNDsKKyAgdWludDE2X3QgIFJFU0VSVkVEMjc7CisgIF9fSU8gdWludDE2X3QgRFIyNTsKKyAgdWludDE2X3QgIFJFU0VSVkVEMjg7CisgIF9fSU8gdWludDE2X3QgRFIyNjsKKyAgdWludDE2X3QgIFJFU0VSVkVEMjk7CisgIF9fSU8gdWludDE2X3QgRFIyNzsKKyAgdWludDE2X3QgIFJFU0VSVkVEMzA7CisgIF9fSU8gdWludDE2X3QgRFIyODsKKyAgdWludDE2X3QgIFJFU0VSVkVEMzE7CisgIF9fSU8gdWludDE2X3QgRFIyOTsKKyAgdWludDE2X3QgIFJFU0VSVkVEMzI7CisgIF9fSU8gdWludDE2X3QgRFIzMDsKKyAgdWludDE2X3QgIFJFU0VSVkVEMzM7IAorICBfX0lPIHVpbnQxNl90IERSMzE7CisgIHVpbnQxNl90ICBSRVNFUlZFRDM0OworICBfX0lPIHVpbnQxNl90IERSMzI7CisgIHVpbnQxNl90ICBSRVNFUlZFRDM1OworICBfX0lPIHVpbnQxNl90IERSMzM7CisgIHVpbnQxNl90ICBSRVNFUlZFRDM2OworICBfX0lPIHVpbnQxNl90IERSMzQ7CisgIHVpbnQxNl90ICBSRVNFUlZFRDM3OworICBfX0lPIHVpbnQxNl90IERSMzU7CisgIHVpbnQxNl90ICBSRVNFUlZFRDM4OworICBfX0lPIHVpbnQxNl90IERSMzY7CisgIHVpbnQxNl90ICBSRVNFUlZFRDM5OworICBfX0lPIHVpbnQxNl90IERSMzc7CisgIHVpbnQxNl90ICBSRVNFUlZFRDQwOworICBfX0lPIHVpbnQxNl90IERSMzg7CisgIHVpbnQxNl90ICBSRVNFUlZFRDQxOworICBfX0lPIHVpbnQxNl90IERSMzk7CisgIHVpbnQxNl90ICBSRVNFUlZFRDQyOworICBfX0lPIHVpbnQxNl90IERSNDA7CisgIHVpbnQxNl90ICBSRVNFUlZFRDQzOworICBfX0lPIHVpbnQxNl90IERSNDE7CisgIHVpbnQxNl90ICBSRVNFUlZFRDQ0OworICBfX0lPIHVpbnQxNl90IERSNDI7CisgIHVpbnQxNl90ICBSRVNFUlZFRDQ1OyAgICAKK30gQktQX1R5cGVEZWY7CisgIAorLyoqIAorICAqIEBicmllZiBDb250cm9sbGVyIEFyZWEgTmV0d29yayBUeE1haWxCb3ggCisgICovCisKK3R5cGVkZWYgc3RydWN0Cit7CisgIF9fSU8gdWludDMyX3QgVElSOworICBfX0lPIHVpbnQzMl90IFREVFI7CisgIF9fSU8gdWludDMyX3QgVERMUjsKKyAgX19JTyB1aW50MzJfdCBUREhSOworfSBDQU5fVHhNYWlsQm94X1R5cGVEZWY7CisKKy8qKiAKKyAgKiBAYnJpZWYgQ29udHJvbGxlciBBcmVhIE5ldHdvcmsgRklGT01haWxCb3ggCisgICovCisgIAordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgX19JTyB1aW50MzJfdCBSSVI7CisgIF9fSU8gdWludDMyX3QgUkRUUjsKKyAgX19JTyB1aW50MzJfdCBSRExSOworICBfX0lPIHVpbnQzMl90IFJESFI7Cit9IENBTl9GSUZPTWFpbEJveF9UeXBlRGVmOworCisvKiogCisgICogQGJyaWVmIENvbnRyb2xsZXIgQXJlYSBOZXR3b3JrIEZpbHRlclJlZ2lzdGVyIAorICAqLworICAKK3R5cGVkZWYgc3RydWN0Cit7CisgIF9fSU8gdWludDMyX3QgRlIxOworICBfX0lPIHVpbnQzMl90IEZSMjsKK30gQ0FOX0ZpbHRlclJlZ2lzdGVyX1R5cGVEZWY7CisKKy8qKiAKKyAgKiBAYnJpZWYgQ29udHJvbGxlciBBcmVhIE5ldHdvcmsgCisgICovCisgIAordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgX19JTyB1aW50MzJfdCBNQ1I7CisgIF9fSU8gdWludDMyX3QgTVNSOworICBfX0lPIHVpbnQzMl90IFRTUjsKKyAgX19JTyB1aW50MzJfdCBSRjBSOworICBfX0lPIHVpbnQzMl90IFJGMVI7CisgIF9fSU8gdWludDMyX3QgSUVSOworICBfX0lPIHVpbnQzMl90IEVTUjsKKyAgX19JTyB1aW50MzJfdCBCVFI7CisgIHVpbnQzMl90ICBSRVNFUlZFRDBbODhdOworICBDQU5fVHhNYWlsQm94X1R5cGVEZWYgc1R4TWFpbEJveFszXTsKKyAgQ0FOX0ZJRk9NYWlsQm94X1R5cGVEZWYgc0ZJRk9NYWlsQm94WzJdOworICB1aW50MzJfdCAgUkVTRVJWRUQxWzEyXTsKKyAgX19JTyB1aW50MzJfdCBGTVI7CisgIF9fSU8gdWludDMyX3QgRk0xUjsKKyAgdWludDMyX3QgIFJFU0VSVkVEMjsKKyAgX19JTyB1aW50MzJfdCBGUzFSOworICB1aW50MzJfdCAgUkVTRVJWRUQzOworICBfX0lPIHVpbnQzMl90IEZGQTFSOworICB1aW50MzJfdCAgUkVTRVJWRUQ0OworICBfX0lPIHVpbnQzMl90IEZBMVI7CisgIHVpbnQzMl90ICBSRVNFUlZFRDVbOF07CisjaWZuZGVmIFNUTTMyRjEwWF9DTAorICBDQU5fRmlsdGVyUmVnaXN0ZXJfVHlwZURlZiBzRmlsdGVyUmVnaXN0ZXJbMTRdOworI2Vsc2UKKyAgQ0FOX0ZpbHRlclJlZ2lzdGVyX1R5cGVEZWYgc0ZpbHRlclJlZ2lzdGVyWzI4XTsKKyNlbmRpZiAvKiBTVE0zMkYxMFhfQ0wgKi8gIAorfSBDQU5fVHlwZURlZjsKKworLyoqIAorICAqIEBicmllZiBDb25zdW1lciBFbGVjdHJvbmljcyBDb250cm9sIChDRUMpCisgICovCit0eXBlZGVmIHN0cnVjdAoreworICBfX0lPIHVpbnQzMl90IENGR1I7CisgIF9fSU8gdWludDMyX3QgT0FSOworICBfX0lPIHVpbnQzMl90IFBSRVM7CisgIF9fSU8gdWludDMyX3QgRVNSOworICBfX0lPIHVpbnQzMl90IENTUjsKKyAgX19JTyB1aW50MzJfdCBUWEQ7CisgIF9fSU8gdWludDMyX3QgUlhEOyAgCit9IENFQ19UeXBlRGVmOworCisvKiogCisgICogQGJyaWVmIENSQyBjYWxjdWxhdGlvbiB1bml0IAorICAqLworCit0eXBlZGVmIHN0cnVjdAoreworICBfX0lPIHVpbnQzMl90IERSOworICBfX0lPIHVpbnQ4X3QgIElEUjsKKyAgdWludDhfdCAgIFJFU0VSVkVEMDsKKyAgdWludDE2X3QgIFJFU0VSVkVEMTsKKyAgX19JTyB1aW50MzJfdCBDUjsKK30gQ1JDX1R5cGVEZWY7CisKKy8qKiAKKyAgKiBAYnJpZWYgRGlnaXRhbCB0byBBbmFsb2cgQ29udmVydGVyCisgICovCisKK3R5cGVkZWYgc3RydWN0Cit7CisgIF9fSU8gdWludDMyX3QgQ1I7CisgIF9fSU8gdWludDMyX3QgU1dUUklHUjsKKyAgX19JTyB1aW50MzJfdCBESFIxMlIxOworICBfX0lPIHVpbnQzMl90IERIUjEyTDE7CisgIF9fSU8gdWludDMyX3QgREhSOFIxOworICBfX0lPIHVpbnQzMl90IERIUjEyUjI7CisgIF9fSU8gdWludDMyX3QgREhSMTJMMjsKKyAgX19JTyB1aW50MzJfdCBESFI4UjI7CisgIF9fSU8gdWludDMyX3QgREhSMTJSRDsKKyAgX19JTyB1aW50MzJfdCBESFIxMkxEOworICBfX0lPIHVpbnQzMl90IERIUjhSRDsKKyAgX19JTyB1aW50MzJfdCBET1IxOworICBfX0lPIHVpbnQzMl90IERPUjI7CisjaWYgZGVmaW5lZCAoU1RNMzJGMTBYX0xEX1ZMKSB8fCBkZWZpbmVkIChTVE0zMkYxMFhfTURfVkwpIHx8IGRlZmluZWQgKFNUTTMyRjEwWF9IRF9WTCkKKyAgX19JTyB1aW50MzJfdCBTUjsKKyNlbmRpZgorfSBEQUNfVHlwZURlZjsKKworLyoqIAorICAqIEBicmllZiBEZWJ1ZyBNQ1UKKyAgKi8KKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgX19JTyB1aW50MzJfdCBJRENPREU7CisgIF9fSU8gdWludDMyX3QgQ1I7CQorfURCR01DVV9UeXBlRGVmOworCisvKiogCisgICogQGJyaWVmIERNQSBDb250cm9sbGVyCisgICovCisKK3R5cGVkZWYgc3RydWN0Cit7CisgIF9fSU8gdWludDMyX3QgQ0NSOworICBfX0lPIHVpbnQzMl90IENORFRSOworICBfX0lPIHVpbnQzMl90IENQQVI7CisgIF9fSU8gdWludDMyX3QgQ01BUjsKK30gRE1BX0NoYW5uZWxfVHlwZURlZjsKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgX19JTyB1aW50MzJfdCBJU1I7CisgIF9fSU8gdWludDMyX3QgSUZDUjsKK30gRE1BX1R5cGVEZWY7CisKKy8qKiAKKyAgKiBAYnJpZWYgRXRoZXJuZXQgTUFDCisgICovCisKK3R5cGVkZWYgc3RydWN0Cit7CisgIF9fSU8gdWludDMyX3QgTUFDQ1I7CisgIF9fSU8gdWludDMyX3QgTUFDRkZSOworICBfX0lPIHVpbnQzMl90IE1BQ0hUSFI7CisgIF9fSU8gdWludDMyX3QgTUFDSFRMUjsKKyAgX19JTyB1aW50MzJfdCBNQUNNSUlBUjsKKyAgX19JTyB1aW50MzJfdCBNQUNNSUlEUjsKKyAgX19JTyB1aW50MzJfdCBNQUNGQ1I7CisgIF9fSU8gdWludDMyX3QgTUFDVkxBTlRSOyAgICAgICAgICAgICAvKiAgICA4ICovCisgICAgICAgdWludDMyX3QgUkVTRVJWRUQwWzJdOworICBfX0lPIHVpbnQzMl90IE1BQ1JXVUZGUjsgICAgICAgICAgICAgLyogICAxMSAqLworICBfX0lPIHVpbnQzMl90IE1BQ1BNVENTUjsKKyAgICAgICB1aW50MzJfdCBSRVNFUlZFRDFbMl07CisgIF9fSU8gdWludDMyX3QgTUFDU1I7ICAgICAgICAgICAgICAgICAvKiAgIDE1ICovCisgIF9fSU8gdWludDMyX3QgTUFDSU1SOworICBfX0lPIHVpbnQzMl90IE1BQ0EwSFI7CisgIF9fSU8gdWludDMyX3QgTUFDQTBMUjsKKyAgX19JTyB1aW50MzJfdCBNQUNBMUhSOworICBfX0lPIHVpbnQzMl90IE1BQ0ExTFI7CisgIF9fSU8gdWludDMyX3QgTUFDQTJIUjsKKyAgX19JTyB1aW50MzJfdCBNQUNBMkxSOworICBfX0lPIHVpbnQzMl90IE1BQ0EzSFI7CisgIF9fSU8gdWludDMyX3QgTUFDQTNMUjsgICAgICAgICAgICAgICAvKiAgIDI0ICovCisgICAgICAgdWludDMyX3QgUkVTRVJWRUQyWzQwXTsKKyAgX19JTyB1aW50MzJfdCBNTUNDUjsgICAgICAgICAgICAgICAgIC8qICAgNjUgKi8KKyAgX19JTyB1aW50MzJfdCBNTUNSSVI7CisgIF9fSU8gdWludDMyX3QgTU1DVElSOworICBfX0lPIHVpbnQzMl90IE1NQ1JJTVI7CisgIF9fSU8gdWludDMyX3QgTU1DVElNUjsgICAgICAgICAgICAgICAvKiAgIDY5ICovCisgICAgICAgdWludDMyX3QgUkVTRVJWRUQzWzE0XTsKKyAgX19JTyB1aW50MzJfdCBNTUNUR0ZTQ0NSOyAgICAgICAgICAgIC8qICAgODQgKi8KKyAgX19JTyB1aW50MzJfdCBNTUNUR0ZNU0NDUjsKKyAgICAgICB1aW50MzJfdCBSRVNFUlZFRDRbNV07CisgIF9fSU8gdWludDMyX3QgTU1DVEdGQ1I7CisgICAgICAgdWludDMyX3QgUkVTRVJWRUQ1WzEwXTsKKyAgX19JTyB1aW50MzJfdCBNTUNSRkNFQ1I7CisgIF9fSU8gdWludDMyX3QgTU1DUkZBRUNSOworICAgICAgIHVpbnQzMl90IFJFU0VSVkVENlsxMF07CisgIF9fSU8gdWludDMyX3QgTU1DUkdVRkNSOworICAgICAgIHVpbnQzMl90IFJFU0VSVkVEN1szMzRdOworICBfX0lPIHVpbnQzMl90IFBUUFRTQ1I7CisgIF9fSU8gdWludDMyX3QgUFRQU1NJUjsKKyAgX19JTyB1aW50MzJfdCBQVFBUU0hSOworICBfX0lPIHVpbnQzMl90IFBUUFRTTFI7CisgIF9fSU8gdWludDMyX3QgUFRQVFNIVVI7CisgIF9fSU8gdWludDMyX3QgUFRQVFNMVVI7CisgIF9fSU8gdWludDMyX3QgUFRQVFNBUjsKKyAgX19JTyB1aW50MzJfdCBQVFBUVEhSOworICBfX0lPIHVpbnQzMl90IFBUUFRUTFI7CisgICAgICAgdWludDMyX3QgUkVTRVJWRUQ4WzU2N107CisgIF9fSU8gdWludDMyX3QgRE1BQk1SOworICBfX0lPIHVpbnQzMl90IERNQVRQRFI7CisgIF9fSU8gdWludDMyX3QgRE1BUlBEUjsKKyAgX19JTyB1aW50MzJfdCBETUFSRExBUjsKKyAgX19JTyB1aW50MzJfdCBETUFURExBUjsKKyAgX19JTyB1aW50MzJfdCBETUFTUjsKKyAgX19JTyB1aW50MzJfdCBETUFPTVI7CisgIF9fSU8gdWludDMyX3QgRE1BSUVSOworICBfX0lPIHVpbnQzMl90IERNQU1GQk9DUjsKKyAgICAgICB1aW50MzJfdCBSRVNFUlZFRDlbOV07CisgIF9fSU8gdWludDMyX3QgRE1BQ0hURFI7CisgIF9fSU8gdWludDMyX3QgRE1BQ0hSRFI7CisgIF9fSU8gdWludDMyX3QgRE1BQ0hUQkFSOworICBfX0lPIHVpbnQzMl90IERNQUNIUkJBUjsKK30gRVRIX1R5cGVEZWY7CisKKy8qKiAKKyAgKiBAYnJpZWYgRXh0ZXJuYWwgSW50ZXJydXB0L0V2ZW50IENvbnRyb2xsZXIKKyAgKi8KKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgX19JTyB1aW50MzJfdCBJTVI7CisgIF9fSU8gdWludDMyX3QgRU1SOworICBfX0lPIHVpbnQzMl90IFJUU1I7CisgIF9fSU8gdWludDMyX3QgRlRTUjsKKyAgX19JTyB1aW50MzJfdCBTV0lFUjsKKyAgX19JTyB1aW50MzJfdCBQUjsKK30gRVhUSV9UeXBlRGVmOworCisvKiogCisgICogQGJyaWVmIEZMQVNIIFJlZ2lzdGVycworICAqLworCit0eXBlZGVmIHN0cnVjdAoreworICBfX0lPIHVpbnQzMl90IEFDUjsKKyAgX19JTyB1aW50MzJfdCBLRVlSOworICBfX0lPIHVpbnQzMl90IE9QVEtFWVI7CisgIF9fSU8gdWludDMyX3QgU1I7CisgIF9fSU8gdWludDMyX3QgQ1I7CisgIF9fSU8gdWludDMyX3QgQVI7CisgIF9fSU8gdWludDMyX3QgUkVTRVJWRUQ7CisgIF9fSU8gdWludDMyX3QgT0JSOworICBfX0lPIHVpbnQzMl90IFdSUFI7CisjaWZkZWYgU1RNMzJGMTBYX1hMCisgIHVpbnQzMl90IFJFU0VSVkVEMVs4XTsgCisgIF9fSU8gdWludDMyX3QgS0VZUjI7CisgIHVpbnQzMl90IFJFU0VSVkVEMjsgICAKKyAgX19JTyB1aW50MzJfdCBTUjI7CisgIF9fSU8gdWludDMyX3QgQ1IyOworICBfX0lPIHVpbnQzMl90IEFSMjsgCisjZW5kaWYgLyogU1RNMzJGMTBYX1hMICovICAKK30gRkxBU0hfVHlwZURlZjsKKworLyoqIAorICAqIEBicmllZiBPcHRpb24gQnl0ZXMgUmVnaXN0ZXJzCisgICovCisgIAordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgX19JTyB1aW50MTZfdCBSRFA7CisgIF9fSU8gdWludDE2X3QgVVNFUjsKKyAgX19JTyB1aW50MTZfdCBEYXRhMDsKKyAgX19JTyB1aW50MTZfdCBEYXRhMTsKKyAgX19JTyB1aW50MTZfdCBXUlAwOworICBfX0lPIHVpbnQxNl90IFdSUDE7CisgIF9fSU8gdWludDE2X3QgV1JQMjsKKyAgX19JTyB1aW50MTZfdCBXUlAzOworfSBPQl9UeXBlRGVmOworCisvKiogCisgICogQGJyaWVmIEZsZXhpYmxlIFN0YXRpYyBNZW1vcnkgQ29udHJvbGxlcgorICAqLworCit0eXBlZGVmIHN0cnVjdAoreworICBfX0lPIHVpbnQzMl90IEJUQ1JbOF07ICAgCit9IEZTTUNfQmFuazFfVHlwZURlZjsgCisKKy8qKiAKKyAgKiBAYnJpZWYgRmxleGlibGUgU3RhdGljIE1lbW9yeSBDb250cm9sbGVyIEJhbmsxRQorICAqLworICAKK3R5cGVkZWYgc3RydWN0Cit7CisgIF9fSU8gdWludDMyX3QgQldUUls3XTsKK30gRlNNQ19CYW5rMUVfVHlwZURlZjsKKworLyoqIAorICAqIEBicmllZiBGbGV4aWJsZSBTdGF0aWMgTWVtb3J5IENvbnRyb2xsZXIgQmFuazIKKyAgKi8KKyAgCit0eXBlZGVmIHN0cnVjdAoreworICBfX0lPIHVpbnQzMl90IFBDUjI7CisgIF9fSU8gdWludDMyX3QgU1IyOworICBfX0lPIHVpbnQzMl90IFBNRU0yOworICBfX0lPIHVpbnQzMl90IFBBVFQyOworICB1aW50MzJfdCAgUkVTRVJWRUQwOyAgIAorICBfX0lPIHVpbnQzMl90IEVDQ1IyOyAKK30gRlNNQ19CYW5rMl9UeXBlRGVmOyAgCisKKy8qKiAKKyAgKiBAYnJpZWYgRmxleGlibGUgU3RhdGljIE1lbW9yeSBDb250cm9sbGVyIEJhbmszCisgICovCisgIAordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgX19JTyB1aW50MzJfdCBQQ1IzOworICBfX0lPIHVpbnQzMl90IFNSMzsKKyAgX19JTyB1aW50MzJfdCBQTUVNMzsKKyAgX19JTyB1aW50MzJfdCBQQVRUMzsKKyAgdWludDMyX3QgIFJFU0VSVkVEMDsgICAKKyAgX19JTyB1aW50MzJfdCBFQ0NSMzsgCit9IEZTTUNfQmFuazNfVHlwZURlZjsgCisKKy8qKiAKKyAgKiBAYnJpZWYgRmxleGlibGUgU3RhdGljIE1lbW9yeSBDb250cm9sbGVyIEJhbms0CisgICovCisgIAordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgX19JTyB1aW50MzJfdCBQQ1I0OworICBfX0lPIHVpbnQzMl90IFNSNDsKKyAgX19JTyB1aW50MzJfdCBQTUVNNDsKKyAgX19JTyB1aW50MzJfdCBQQVRUNDsKKyAgX19JTyB1aW50MzJfdCBQSU80OyAKK30gRlNNQ19CYW5rNF9UeXBlRGVmOyAKKworLyoqIAorICAqIEBicmllZiBHZW5lcmFsIFB1cnBvc2UgSS9PCisgICovCisKK3R5cGVkZWYgc3RydWN0Cit7CisgIF9fSU8gdWludDMyX3QgQ1JMOworICBfX0lPIHVpbnQzMl90IENSSDsKKyAgX19JTyB1aW50MzJfdCBJRFI7CisgIF9fSU8gdWludDMyX3QgT0RSOworICBfX0lPIHVpbnQzMl90IEJTUlI7CisgIF9fSU8gdWludDMyX3QgQlJSOworICBfX0lPIHVpbnQzMl90IExDS1I7Cit9IEdQSU9fVHlwZURlZjsKKworLyoqIAorICAqIEBicmllZiBBbHRlcm5hdGUgRnVuY3Rpb24gSS9PCisgICovCisKK3R5cGVkZWYgc3RydWN0Cit7CisgIF9fSU8gdWludDMyX3QgRVZDUjsKKyAgX19JTyB1aW50MzJfdCBNQVBSOworICBfX0lPIHVpbnQzMl90IEVYVElDUls0XTsKKyAgdWludDMyX3QgUkVTRVJWRUQwOworICBfX0lPIHVpbnQzMl90IE1BUFIyOyAgCit9IEFGSU9fVHlwZURlZjsKKy8qKiAKKyAgKiBAYnJpZWYgSW50ZXIgSW50ZWdyYXRlZCBDaXJjdWl0IEludGVyZmFjZQorICAqLworCit0eXBlZGVmIHN0cnVjdAoreworICBfX0lPIHVpbnQxNl90IENSMTsKKyAgdWludDE2X3QgIFJFU0VSVkVEMDsKKyAgX19JTyB1aW50MTZfdCBDUjI7CisgIHVpbnQxNl90ICBSRVNFUlZFRDE7CisgIF9fSU8gdWludDE2X3QgT0FSMTsKKyAgdWludDE2X3QgIFJFU0VSVkVEMjsKKyAgX19JTyB1aW50MTZfdCBPQVIyOworICB1aW50MTZfdCAgUkVTRVJWRUQzOworICBfX0lPIHVpbnQxNl90IERSOworICB1aW50MTZfdCAgUkVTRVJWRUQ0OworICBfX0lPIHVpbnQxNl90IFNSMTsKKyAgdWludDE2X3QgIFJFU0VSVkVENTsKKyAgX19JTyB1aW50MTZfdCBTUjI7CisgIHVpbnQxNl90ICBSRVNFUlZFRDY7CisgIF9fSU8gdWludDE2X3QgQ0NSOworICB1aW50MTZfdCAgUkVTRVJWRUQ3OworICBfX0lPIHVpbnQxNl90IFRSSVNFOworICB1aW50MTZfdCAgUkVTRVJWRUQ4OworfSBJMkNfVHlwZURlZjsKKworLyoqIAorICAqIEBicmllZiBJbmRlcGVuZGVudCBXQVRDSERPRworICAqLworCit0eXBlZGVmIHN0cnVjdAoreworICBfX0lPIHVpbnQzMl90IEtSOworICBfX0lPIHVpbnQzMl90IFBSOworICBfX0lPIHVpbnQzMl90IFJMUjsKKyAgX19JTyB1aW50MzJfdCBTUjsKK30gSVdER19UeXBlRGVmOworCisvKiogCisgICogQGJyaWVmIFBvd2VyIENvbnRyb2wKKyAgKi8KKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgX19JTyB1aW50MzJfdCBDUjsKKyAgX19JTyB1aW50MzJfdCBDU1I7Cit9IFBXUl9UeXBlRGVmOworCisvKiogCisgICogQGJyaWVmIFJlc2V0IGFuZCBDbG9jayBDb250cm9sCisgICovCisKK3R5cGVkZWYgc3RydWN0Cit7CisgIF9fSU8gdWludDMyX3QgQ1I7CisgIF9fSU8gdWludDMyX3QgQ0ZHUjsKKyAgX19JTyB1aW50MzJfdCBDSVI7CisgIF9fSU8gdWludDMyX3QgQVBCMlJTVFI7CisgIF9fSU8gdWludDMyX3QgQVBCMVJTVFI7CisgIF9fSU8gdWludDMyX3QgQUhCRU5SOworICBfX0lPIHVpbnQzMl90IEFQQjJFTlI7CisgIF9fSU8gdWludDMyX3QgQVBCMUVOUjsKKyAgX19JTyB1aW50MzJfdCBCRENSOworICBfX0lPIHVpbnQzMl90IENTUjsKKworI2lmZGVmIFNUTTMyRjEwWF9DTCAgCisgIF9fSU8gdWludDMyX3QgQUhCUlNUUjsKKyAgX19JTyB1aW50MzJfdCBDRkdSMjsKKyNlbmRpZiAvKiBTVE0zMkYxMFhfQ0wgKi8gCisKKyNpZiBkZWZpbmVkIChTVE0zMkYxMFhfTERfVkwpIHx8IGRlZmluZWQgKFNUTTMyRjEwWF9NRF9WTCkgfHwgZGVmaW5lZCAoU1RNMzJGMTBYX0hEX1ZMKSAgIAorICB1aW50MzJfdCBSRVNFUlZFRDA7CisgIF9fSU8gdWludDMyX3QgQ0ZHUjI7CisjZW5kaWYgLyogU1RNMzJGMTBYX0xEX1ZMIHx8IFNUTTMyRjEwWF9NRF9WTCB8fCBTVE0zMkYxMFhfSERfVkwgKi8gCit9IFJDQ19UeXBlRGVmOworCisvKiogCisgICogQGJyaWVmIFJlYWwtVGltZSBDbG9jaworICAqLworCit0eXBlZGVmIHN0cnVjdAoreworICBfX0lPIHVpbnQxNl90IENSSDsKKyAgdWludDE2X3QgIFJFU0VSVkVEMDsKKyAgX19JTyB1aW50MTZfdCBDUkw7CisgIHVpbnQxNl90ICBSRVNFUlZFRDE7CisgIF9fSU8gdWludDE2X3QgUFJMSDsKKyAgdWludDE2X3QgIFJFU0VSVkVEMjsKKyAgX19JTyB1aW50MTZfdCBQUkxMOworICB1aW50MTZfdCAgUkVTRVJWRUQzOworICBfX0lPIHVpbnQxNl90IERJVkg7CisgIHVpbnQxNl90ICBSRVNFUlZFRDQ7CisgIF9fSU8gdWludDE2X3QgRElWTDsKKyAgdWludDE2X3QgIFJFU0VSVkVENTsKKyAgX19JTyB1aW50MTZfdCBDTlRIOworICB1aW50MTZfdCAgUkVTRVJWRUQ2OworICBfX0lPIHVpbnQxNl90IENOVEw7CisgIHVpbnQxNl90ICBSRVNFUlZFRDc7CisgIF9fSU8gdWludDE2X3QgQUxSSDsKKyAgdWludDE2X3QgIFJFU0VSVkVEODsKKyAgX19JTyB1aW50MTZfdCBBTFJMOworICB1aW50MTZfdCAgUkVTRVJWRUQ5OworfSBSVENfVHlwZURlZjsKKworLyoqIAorICAqIEBicmllZiBTRCBob3N0IEludGVyZmFjZQorICAqLworCit0eXBlZGVmIHN0cnVjdAoreworICBfX0lPIHVpbnQzMl90IFBPV0VSOworICBfX0lPIHVpbnQzMl90IENMS0NSOworICBfX0lPIHVpbnQzMl90IEFSRzsKKyAgX19JTyB1aW50MzJfdCBDTUQ7CisgIF9fSSB1aW50MzJfdCBSRVNQQ01EOworICBfX0kgdWludDMyX3QgUkVTUDE7CisgIF9fSSB1aW50MzJfdCBSRVNQMjsKKyAgX19JIHVpbnQzMl90IFJFU1AzOworICBfX0kgdWludDMyX3QgUkVTUDQ7CisgIF9fSU8gdWludDMyX3QgRFRJTUVSOworICBfX0lPIHVpbnQzMl90IERMRU47CisgIF9fSU8gdWludDMyX3QgRENUUkw7CisgIF9fSSB1aW50MzJfdCBEQ09VTlQ7CisgIF9fSSB1aW50MzJfdCBTVEE7CisgIF9fSU8gdWludDMyX3QgSUNSOworICBfX0lPIHVpbnQzMl90IE1BU0s7CisgIHVpbnQzMl90ICBSRVNFUlZFRDBbMl07CisgIF9fSSB1aW50MzJfdCBGSUZPQ05UOworICB1aW50MzJfdCAgUkVTRVJWRUQxWzEzXTsKKyAgX19JTyB1aW50MzJfdCBGSUZPOworfSBTRElPX1R5cGVEZWY7CisKKy8qKiAKKyAgKiBAYnJpZWYgU2VyaWFsIFBlcmlwaGVyYWwgSW50ZXJmYWNlCisgICovCisKK3R5cGVkZWYgc3RydWN0Cit7CisgIF9fSU8gdWludDE2X3QgQ1IxOworICB1aW50MTZfdCAgUkVTRVJWRUQwOworICBfX0lPIHVpbnQxNl90IENSMjsKKyAgdWludDE2X3QgIFJFU0VSVkVEMTsKKyAgX19JTyB1aW50MTZfdCBTUjsKKyAgdWludDE2X3QgIFJFU0VSVkVEMjsKKyAgX19JTyB1aW50MTZfdCBEUjsKKyAgdWludDE2X3QgIFJFU0VSVkVEMzsKKyAgX19JTyB1aW50MTZfdCBDUkNQUjsKKyAgdWludDE2X3QgIFJFU0VSVkVENDsKKyAgX19JTyB1aW50MTZfdCBSWENSQ1I7CisgIHVpbnQxNl90ICBSRVNFUlZFRDU7CisgIF9fSU8gdWludDE2X3QgVFhDUkNSOworICB1aW50MTZfdCAgUkVTRVJWRUQ2OworICBfX0lPIHVpbnQxNl90IEkyU0NGR1I7CisgIHVpbnQxNl90ICBSRVNFUlZFRDc7CisgIF9fSU8gdWludDE2X3QgSTJTUFI7CisgIHVpbnQxNl90ICBSRVNFUlZFRDg7ICAKK30gU1BJX1R5cGVEZWY7CisKKy8qKiAKKyAgKiBAYnJpZWYgVElNCisgICovCisKK3R5cGVkZWYgc3RydWN0Cit7CisgIF9fSU8gdWludDE2X3QgQ1IxOworICB1aW50MTZfdCAgUkVTRVJWRUQwOworICBfX0lPIHVpbnQxNl90IENSMjsKKyAgdWludDE2X3QgIFJFU0VSVkVEMTsKKyAgX19JTyB1aW50MTZfdCBTTUNSOworICB1aW50MTZfdCAgUkVTRVJWRUQyOworICBfX0lPIHVpbnQxNl90IERJRVI7CisgIHVpbnQxNl90ICBSRVNFUlZFRDM7CisgIF9fSU8gdWludDE2X3QgU1I7CisgIHVpbnQxNl90ICBSRVNFUlZFRDQ7CisgIF9fSU8gdWludDE2X3QgRUdSOworICB1aW50MTZfdCAgUkVTRVJWRUQ1OworICBfX0lPIHVpbnQxNl90IENDTVIxOworICB1aW50MTZfdCAgUkVTRVJWRUQ2OworICBfX0lPIHVpbnQxNl90IENDTVIyOworICB1aW50MTZfdCAgUkVTRVJWRUQ3OworICBfX0lPIHVpbnQxNl90IENDRVI7CisgIHVpbnQxNl90ICBSRVNFUlZFRDg7CisgIF9fSU8gdWludDE2X3QgQ05UOworICB1aW50MTZfdCAgUkVTRVJWRUQ5OworICBfX0lPIHVpbnQxNl90IFBTQzsKKyAgdWludDE2X3QgIFJFU0VSVkVEMTA7CisgIF9fSU8gdWludDE2X3QgQVJSOworICB1aW50MTZfdCAgUkVTRVJWRUQxMTsKKyAgX19JTyB1aW50MTZfdCBSQ1I7CisgIHVpbnQxNl90ICBSRVNFUlZFRDEyOworICBfX0lPIHVpbnQxNl90IENDUjE7CisgIHVpbnQxNl90ICBSRVNFUlZFRDEzOworICBfX0lPIHVpbnQxNl90IENDUjI7CisgIHVpbnQxNl90ICBSRVNFUlZFRDE0OworICBfX0lPIHVpbnQxNl90IENDUjM7CisgIHVpbnQxNl90ICBSRVNFUlZFRDE1OworICBfX0lPIHVpbnQxNl90IENDUjQ7CisgIHVpbnQxNl90ICBSRVNFUlZFRDE2OworICBfX0lPIHVpbnQxNl90IEJEVFI7CisgIHVpbnQxNl90ICBSRVNFUlZFRDE3OworICBfX0lPIHVpbnQxNl90IERDUjsKKyAgdWludDE2X3QgIFJFU0VSVkVEMTg7CisgIF9fSU8gdWludDE2X3QgRE1BUjsKKyAgdWludDE2X3QgIFJFU0VSVkVEMTk7Cit9IFRJTV9UeXBlRGVmOworCisvKiogCisgICogQGJyaWVmIFVuaXZlcnNhbCBTeW5jaHJvbm91cyBBc3luY2hyb25vdXMgUmVjZWl2ZXIgVHJhbnNtaXR0ZXIKKyAgKi8KKyAKK3R5cGVkZWYgc3RydWN0Cit7CisgIF9fSU8gdWludDE2X3QgU1I7CisgIHVpbnQxNl90ICBSRVNFUlZFRDA7CisgIF9fSU8gdWludDE2X3QgRFI7CisgIHVpbnQxNl90ICBSRVNFUlZFRDE7CisgIF9fSU8gdWludDE2X3QgQlJSOworICB1aW50MTZfdCAgUkVTRVJWRUQyOworICBfX0lPIHVpbnQxNl90IENSMTsKKyAgdWludDE2X3QgIFJFU0VSVkVEMzsKKyAgX19JTyB1aW50MTZfdCBDUjI7CisgIHVpbnQxNl90ICBSRVNFUlZFRDQ7CisgIF9fSU8gdWludDE2X3QgQ1IzOworICB1aW50MTZfdCAgUkVTRVJWRUQ1OworICBfX0lPIHVpbnQxNl90IEdUUFI7CisgIHVpbnQxNl90ICBSRVNFUlZFRDY7Cit9IFVTQVJUX1R5cGVEZWY7CisKKy8qKiAKKyAgKiBAYnJpZWYgV2luZG93IFdBVENIRE9HCisgICovCisKK3R5cGVkZWYgc3RydWN0Cit7CisgIF9fSU8gdWludDMyX3QgQ1I7CisgIF9fSU8gdWludDMyX3QgQ0ZSOworICBfX0lPIHVpbnQzMl90IFNSOworfSBXV0RHX1R5cGVEZWY7CisKKy8qKgorICAqIEB9CisgICovCisgIAorLyoqIEBhZGR0b2dyb3VwIFBlcmlwaGVyYWxfbWVtb3J5X21hcAorICAqIEB7CisgICovCisKKworI2RlZmluZSBGTEFTSF9CQVNFICAgICAgICAgICAgKCh1aW50MzJfdCkweDA4MDAwMDAwKSAvKiE8IEZMQVNIIGJhc2UgYWRkcmVzcyBpbiB0aGUgYWxpYXMgcmVnaW9uICovCisjZGVmaW5lIFNSQU1fQkFTRSAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MjAwMDAwMDApIC8qITwgU1JBTSBiYXNlIGFkZHJlc3MgaW4gdGhlIGFsaWFzIHJlZ2lvbiAqLworI2RlZmluZSBQRVJJUEhfQkFTRSAgICAgICAgICAgKCh1aW50MzJfdCkweDQwMDAwMDAwKSAvKiE8IFBlcmlwaGVyYWwgYmFzZSBhZGRyZXNzIGluIHRoZSBhbGlhcyByZWdpb24gKi8KKworI2RlZmluZSBTUkFNX0JCX0JBU0UgICAgICAgICAgKCh1aW50MzJfdCkweDIyMDAwMDAwKSAvKiE8IFNSQU0gYmFzZSBhZGRyZXNzIGluIHRoZSBiaXQtYmFuZCByZWdpb24gKi8KKyNkZWZpbmUgUEVSSVBIX0JCX0JBU0UgICAgICAgICgodWludDMyX3QpMHg0MjAwMDAwMCkgLyohPCBQZXJpcGhlcmFsIGJhc2UgYWRkcmVzcyBpbiB0aGUgYml0LWJhbmQgcmVnaW9uICovCisKKyNkZWZpbmUgRlNNQ19SX0JBU0UgICAgICAgICAgICgodWludDMyX3QpMHhBMDAwMDAwMCkgLyohPCBGU01DIHJlZ2lzdGVycyBiYXNlIGFkZHJlc3MgKi8KKworLyohPCBQZXJpcGhlcmFsIG1lbW9yeSBtYXAgKi8KKyNkZWZpbmUgQVBCMVBFUklQSF9CQVNFICAgICAgIFBFUklQSF9CQVNFCisjZGVmaW5lIEFQQjJQRVJJUEhfQkFTRSAgICAgICAoUEVSSVBIX0JBU0UgKyAweDEwMDAwKQorI2RlZmluZSBBSEJQRVJJUEhfQkFTRSAgICAgICAgKFBFUklQSF9CQVNFICsgMHgyMDAwMCkKKworI2RlZmluZSBUSU0yX0JBU0UgICAgICAgICAgICAgKEFQQjFQRVJJUEhfQkFTRSArIDB4MDAwMCkKKyNkZWZpbmUgVElNM19CQVNFICAgICAgICAgICAgIChBUEIxUEVSSVBIX0JBU0UgKyAweDA0MDApCisjZGVmaW5lIFRJTTRfQkFTRSAgICAgICAgICAgICAoQVBCMVBFUklQSF9CQVNFICsgMHgwODAwKQorI2RlZmluZSBUSU01X0JBU0UgICAgICAgICAgICAgKEFQQjFQRVJJUEhfQkFTRSArIDB4MEMwMCkKKyNkZWZpbmUgVElNNl9CQVNFICAgICAgICAgICAgIChBUEIxUEVSSVBIX0JBU0UgKyAweDEwMDApCisjZGVmaW5lIFRJTTdfQkFTRSAgICAgICAgICAgICAoQVBCMVBFUklQSF9CQVNFICsgMHgxNDAwKQorI2RlZmluZSBUSU0xMl9CQVNFICAgICAgICAgICAgKEFQQjFQRVJJUEhfQkFTRSArIDB4MTgwMCkKKyNkZWZpbmUgVElNMTNfQkFTRSAgICAgICAgICAgIChBUEIxUEVSSVBIX0JBU0UgKyAweDFDMDApCisjZGVmaW5lIFRJTTE0X0JBU0UgICAgICAgICAgICAoQVBCMVBFUklQSF9CQVNFICsgMHgyMDAwKQorI2RlZmluZSBSVENfQkFTRSAgICAgICAgICAgICAgKEFQQjFQRVJJUEhfQkFTRSArIDB4MjgwMCkKKyNkZWZpbmUgV1dER19CQVNFICAgICAgICAgICAgIChBUEIxUEVSSVBIX0JBU0UgKyAweDJDMDApCisjZGVmaW5lIElXREdfQkFTRSAgICAgICAgICAgICAoQVBCMVBFUklQSF9CQVNFICsgMHgzMDAwKQorI2RlZmluZSBTUEkyX0JBU0UgICAgICAgICAgICAgKEFQQjFQRVJJUEhfQkFTRSArIDB4MzgwMCkKKyNkZWZpbmUgU1BJM19CQVNFICAgICAgICAgICAgIChBUEIxUEVSSVBIX0JBU0UgKyAweDNDMDApCisjZGVmaW5lIFVTQVJUMl9CQVNFICAgICAgICAgICAoQVBCMVBFUklQSF9CQVNFICsgMHg0NDAwKQorI2RlZmluZSBVU0FSVDNfQkFTRSAgICAgICAgICAgKEFQQjFQRVJJUEhfQkFTRSArIDB4NDgwMCkKKyNkZWZpbmUgVUFSVDRfQkFTRSAgICAgICAgICAgIChBUEIxUEVSSVBIX0JBU0UgKyAweDRDMDApCisjZGVmaW5lIFVBUlQ1X0JBU0UgICAgICAgICAgICAoQVBCMVBFUklQSF9CQVNFICsgMHg1MDAwKQorI2RlZmluZSBJMkMxX0JBU0UgICAgICAgICAgICAgKEFQQjFQRVJJUEhfQkFTRSArIDB4NTQwMCkKKyNkZWZpbmUgSTJDMl9CQVNFICAgICAgICAgICAgIChBUEIxUEVSSVBIX0JBU0UgKyAweDU4MDApCisjZGVmaW5lIENBTjFfQkFTRSAgICAgICAgICAgICAoQVBCMVBFUklQSF9CQVNFICsgMHg2NDAwKQorI2RlZmluZSBDQU4yX0JBU0UgICAgICAgICAgICAgKEFQQjFQRVJJUEhfQkFTRSArIDB4NjgwMCkKKyNkZWZpbmUgQktQX0JBU0UgICAgICAgICAgICAgIChBUEIxUEVSSVBIX0JBU0UgKyAweDZDMDApCisjZGVmaW5lIFBXUl9CQVNFICAgICAgICAgICAgICAoQVBCMVBFUklQSF9CQVNFICsgMHg3MDAwKQorI2RlZmluZSBEQUNfQkFTRSAgICAgICAgICAgICAgKEFQQjFQRVJJUEhfQkFTRSArIDB4NzQwMCkKKyNkZWZpbmUgQ0VDX0JBU0UgICAgICAgICAgICAgIChBUEIxUEVSSVBIX0JBU0UgKyAweDc4MDApCisKKyNkZWZpbmUgQUZJT19CQVNFICAgICAgICAgICAgIChBUEIyUEVSSVBIX0JBU0UgKyAweDAwMDApCisjZGVmaW5lIEVYVElfQkFTRSAgICAgICAgICAgICAoQVBCMlBFUklQSF9CQVNFICsgMHgwNDAwKQorI2RlZmluZSBHUElPQV9CQVNFICAgICAgICAgICAgKEFQQjJQRVJJUEhfQkFTRSArIDB4MDgwMCkKKyNkZWZpbmUgR1BJT0JfQkFTRSAgICAgICAgICAgIChBUEIyUEVSSVBIX0JBU0UgKyAweDBDMDApCisjZGVmaW5lIEdQSU9DX0JBU0UgICAgICAgICAgICAoQVBCMlBFUklQSF9CQVNFICsgMHgxMDAwKQorI2RlZmluZSBHUElPRF9CQVNFICAgICAgICAgICAgKEFQQjJQRVJJUEhfQkFTRSArIDB4MTQwMCkKKyNkZWZpbmUgR1BJT0VfQkFTRSAgICAgICAgICAgIChBUEIyUEVSSVBIX0JBU0UgKyAweDE4MDApCisjZGVmaW5lIEdQSU9GX0JBU0UgICAgICAgICAgICAoQVBCMlBFUklQSF9CQVNFICsgMHgxQzAwKQorI2RlZmluZSBHUElPR19CQVNFICAgICAgICAgICAgKEFQQjJQRVJJUEhfQkFTRSArIDB4MjAwMCkKKyNkZWZpbmUgQURDMV9CQVNFICAgICAgICAgICAgIChBUEIyUEVSSVBIX0JBU0UgKyAweDI0MDApCisjZGVmaW5lIEFEQzJfQkFTRSAgICAgICAgICAgICAoQVBCMlBFUklQSF9CQVNFICsgMHgyODAwKQorI2RlZmluZSBUSU0xX0JBU0UgICAgICAgICAgICAgKEFQQjJQRVJJUEhfQkFTRSArIDB4MkMwMCkKKyNkZWZpbmUgU1BJMV9CQVNFICAgICAgICAgICAgIChBUEIyUEVSSVBIX0JBU0UgKyAweDMwMDApCisjZGVmaW5lIFRJTThfQkFTRSAgICAgICAgICAgICAoQVBCMlBFUklQSF9CQVNFICsgMHgzNDAwKQorI2RlZmluZSBVU0FSVDFfQkFTRSAgICAgICAgICAgKEFQQjJQRVJJUEhfQkFTRSArIDB4MzgwMCkKKyNkZWZpbmUgQURDM19CQVNFICAgICAgICAgICAgIChBUEIyUEVSSVBIX0JBU0UgKyAweDNDMDApCisjZGVmaW5lIFRJTTE1X0JBU0UgICAgICAgICAgICAoQVBCMlBFUklQSF9CQVNFICsgMHg0MDAwKQorI2RlZmluZSBUSU0xNl9CQVNFICAgICAgICAgICAgKEFQQjJQRVJJUEhfQkFTRSArIDB4NDQwMCkKKyNkZWZpbmUgVElNMTdfQkFTRSAgICAgICAgICAgIChBUEIyUEVSSVBIX0JBU0UgKyAweDQ4MDApCisjZGVmaW5lIFRJTTlfQkFTRSAgICAgICAgICAgICAoQVBCMlBFUklQSF9CQVNFICsgMHg0QzAwKQorI2RlZmluZSBUSU0xMF9CQVNFICAgICAgICAgICAgKEFQQjJQRVJJUEhfQkFTRSArIDB4NTAwMCkKKyNkZWZpbmUgVElNMTFfQkFTRSAgICAgICAgICAgIChBUEIyUEVSSVBIX0JBU0UgKyAweDU0MDApCisKKyNkZWZpbmUgU0RJT19CQVNFICAgICAgICAgICAgIChQRVJJUEhfQkFTRSArIDB4MTgwMDApCisKKyNkZWZpbmUgRE1BMV9CQVNFICAgICAgICAgICAgIChBSEJQRVJJUEhfQkFTRSArIDB4MDAwMCkKKyNkZWZpbmUgRE1BMV9DaGFubmVsMV9CQVNFICAgIChBSEJQRVJJUEhfQkFTRSArIDB4MDAwOCkKKyNkZWZpbmUgRE1BMV9DaGFubmVsMl9CQVNFICAgIChBSEJQRVJJUEhfQkFTRSArIDB4MDAxQykKKyNkZWZpbmUgRE1BMV9DaGFubmVsM19CQVNFICAgIChBSEJQRVJJUEhfQkFTRSArIDB4MDAzMCkKKyNkZWZpbmUgRE1BMV9DaGFubmVsNF9CQVNFICAgIChBSEJQRVJJUEhfQkFTRSArIDB4MDA0NCkKKyNkZWZpbmUgRE1BMV9DaGFubmVsNV9CQVNFICAgIChBSEJQRVJJUEhfQkFTRSArIDB4MDA1OCkKKyNkZWZpbmUgRE1BMV9DaGFubmVsNl9CQVNFICAgIChBSEJQRVJJUEhfQkFTRSArIDB4MDA2QykKKyNkZWZpbmUgRE1BMV9DaGFubmVsN19CQVNFICAgIChBSEJQRVJJUEhfQkFTRSArIDB4MDA4MCkKKyNkZWZpbmUgRE1BMl9CQVNFICAgICAgICAgICAgIChBSEJQRVJJUEhfQkFTRSArIDB4MDQwMCkKKyNkZWZpbmUgRE1BMl9DaGFubmVsMV9CQVNFICAgIChBSEJQRVJJUEhfQkFTRSArIDB4MDQwOCkKKyNkZWZpbmUgRE1BMl9DaGFubmVsMl9CQVNFICAgIChBSEJQRVJJUEhfQkFTRSArIDB4MDQxQykKKyNkZWZpbmUgRE1BMl9DaGFubmVsM19CQVNFICAgIChBSEJQRVJJUEhfQkFTRSArIDB4MDQzMCkKKyNkZWZpbmUgRE1BMl9DaGFubmVsNF9CQVNFICAgIChBSEJQRVJJUEhfQkFTRSArIDB4MDQ0NCkKKyNkZWZpbmUgRE1BMl9DaGFubmVsNV9CQVNFICAgIChBSEJQRVJJUEhfQkFTRSArIDB4MDQ1OCkKKyNkZWZpbmUgUkNDX0JBU0UgICAgICAgICAgICAgIChBSEJQRVJJUEhfQkFTRSArIDB4MTAwMCkKKyNkZWZpbmUgQ1JDX0JBU0UgICAgICAgICAgICAgIChBSEJQRVJJUEhfQkFTRSArIDB4MzAwMCkKKworI2RlZmluZSBGTEFTSF9SX0JBU0UgICAgICAgICAgKEFIQlBFUklQSF9CQVNFICsgMHgyMDAwKSAvKiE8IEZsYXNoIHJlZ2lzdGVycyBiYXNlIGFkZHJlc3MgKi8KKyNkZWZpbmUgT0JfQkFTRSAgICAgICAgICAgICAgICgodWludDMyX3QpMHgxRkZGRjgwMCkgICAgLyohPCBGbGFzaCBPcHRpb24gQnl0ZXMgYmFzZSBhZGRyZXNzICovCisKKyNkZWZpbmUgRVRIX0JBU0UgICAgICAgICAgICAgIChBSEJQRVJJUEhfQkFTRSArIDB4ODAwMCkKKyNkZWZpbmUgRVRIX01BQ19CQVNFICAgICAgICAgIChFVEhfQkFTRSkKKyNkZWZpbmUgRVRIX01NQ19CQVNFICAgICAgICAgIChFVEhfQkFTRSArIDB4MDEwMCkKKyNkZWZpbmUgRVRIX1BUUF9CQVNFICAgICAgICAgIChFVEhfQkFTRSArIDB4MDcwMCkKKyNkZWZpbmUgRVRIX0RNQV9CQVNFICAgICAgICAgIChFVEhfQkFTRSArIDB4MTAwMCkKKworI2RlZmluZSBGU01DX0JhbmsxX1JfQkFTRSAgICAgKEZTTUNfUl9CQVNFICsgMHgwMDAwKSAvKiE8IEZTTUMgQmFuazEgcmVnaXN0ZXJzIGJhc2UgYWRkcmVzcyAqLworI2RlZmluZSBGU01DX0JhbmsxRV9SX0JBU0UgICAgKEZTTUNfUl9CQVNFICsgMHgwMTA0KSAvKiE8IEZTTUMgQmFuazFFIHJlZ2lzdGVycyBiYXNlIGFkZHJlc3MgKi8KKyNkZWZpbmUgRlNNQ19CYW5rMl9SX0JBU0UgICAgIChGU01DX1JfQkFTRSArIDB4MDA2MCkgLyohPCBGU01DIEJhbmsyIHJlZ2lzdGVycyBiYXNlIGFkZHJlc3MgKi8KKyNkZWZpbmUgRlNNQ19CYW5rM19SX0JBU0UgICAgIChGU01DX1JfQkFTRSArIDB4MDA4MCkgLyohPCBGU01DIEJhbmszIHJlZ2lzdGVycyBiYXNlIGFkZHJlc3MgKi8KKyNkZWZpbmUgRlNNQ19CYW5rNF9SX0JBU0UgICAgIChGU01DX1JfQkFTRSArIDB4MDBBMCkgLyohPCBGU01DIEJhbms0IHJlZ2lzdGVycyBiYXNlIGFkZHJlc3MgKi8KKworI2RlZmluZSBEQkdNQ1VfQkFTRSAgICAgICAgICAoKHVpbnQzMl90KTB4RTAwNDIwMDApIC8qITwgRGVidWcgTUNVIHJlZ2lzdGVycyBiYXNlIGFkZHJlc3MgKi8KKworLyoqCisgICogQH0KKyAgKi8KKyAgCisvKiogQGFkZHRvZ3JvdXAgUGVyaXBoZXJhbF9kZWNsYXJhdGlvbgorICAqIEB7CisgICovICAKKworI2RlZmluZSBUSU0yICAgICAgICAgICAgICAgICgoVElNX1R5cGVEZWYgKikgVElNMl9CQVNFKQorI2RlZmluZSBUSU0zICAgICAgICAgICAgICAgICgoVElNX1R5cGVEZWYgKikgVElNM19CQVNFKQorI2RlZmluZSBUSU00ICAgICAgICAgICAgICAgICgoVElNX1R5cGVEZWYgKikgVElNNF9CQVNFKQorI2RlZmluZSBUSU01ICAgICAgICAgICAgICAgICgoVElNX1R5cGVEZWYgKikgVElNNV9CQVNFKQorI2RlZmluZSBUSU02ICAgICAgICAgICAgICAgICgoVElNX1R5cGVEZWYgKikgVElNNl9CQVNFKQorI2RlZmluZSBUSU03ICAgICAgICAgICAgICAgICgoVElNX1R5cGVEZWYgKikgVElNN19CQVNFKQorI2RlZmluZSBUSU0xMiAgICAgICAgICAgICAgICgoVElNX1R5cGVEZWYgKikgVElNMTJfQkFTRSkKKyNkZWZpbmUgVElNMTMgICAgICAgICAgICAgICAoKFRJTV9UeXBlRGVmICopIFRJTTEzX0JBU0UpCisjZGVmaW5lIFRJTTE0ICAgICAgICAgICAgICAgKChUSU1fVHlwZURlZiAqKSBUSU0xNF9CQVNFKQorI2RlZmluZSBSVEMgICAgICAgICAgICAgICAgICgoUlRDX1R5cGVEZWYgKikgUlRDX0JBU0UpCisjZGVmaW5lIFdXREcgICAgICAgICAgICAgICAgKChXV0RHX1R5cGVEZWYgKikgV1dER19CQVNFKQorI2RlZmluZSBJV0RHICAgICAgICAgICAgICAgICgoSVdER19UeXBlRGVmICopIElXREdfQkFTRSkKKyNkZWZpbmUgU1BJMiAgICAgICAgICAgICAgICAoKFNQSV9UeXBlRGVmICopIFNQSTJfQkFTRSkKKyNkZWZpbmUgU1BJMyAgICAgICAgICAgICAgICAoKFNQSV9UeXBlRGVmICopIFNQSTNfQkFTRSkKKyNkZWZpbmUgVVNBUlQyICAgICAgICAgICAgICAoKFVTQVJUX1R5cGVEZWYgKikgVVNBUlQyX0JBU0UpCisjZGVmaW5lIFVTQVJUMyAgICAgICAgICAgICAgKChVU0FSVF9UeXBlRGVmICopIFVTQVJUM19CQVNFKQorI2RlZmluZSBVQVJUNCAgICAgICAgICAgICAgICgoVVNBUlRfVHlwZURlZiAqKSBVQVJUNF9CQVNFKQorI2RlZmluZSBVQVJUNSAgICAgICAgICAgICAgICgoVVNBUlRfVHlwZURlZiAqKSBVQVJUNV9CQVNFKQorI2RlZmluZSBJMkMxICAgICAgICAgICAgICAgICgoSTJDX1R5cGVEZWYgKikgSTJDMV9CQVNFKQorI2RlZmluZSBJMkMyICAgICAgICAgICAgICAgICgoSTJDX1R5cGVEZWYgKikgSTJDMl9CQVNFKQorI2RlZmluZSBDQU4xICAgICAgICAgICAgICAgICgoQ0FOX1R5cGVEZWYgKikgQ0FOMV9CQVNFKQorI2RlZmluZSBDQU4yICAgICAgICAgICAgICAgICgoQ0FOX1R5cGVEZWYgKikgQ0FOMl9CQVNFKQorI2RlZmluZSBCS1AgICAgICAgICAgICAgICAgICgoQktQX1R5cGVEZWYgKikgQktQX0JBU0UpCisjZGVmaW5lIFBXUiAgICAgICAgICAgICAgICAgKChQV1JfVHlwZURlZiAqKSBQV1JfQkFTRSkKKyNkZWZpbmUgREFDICAgICAgICAgICAgICAgICAoKERBQ19UeXBlRGVmICopIERBQ19CQVNFKQorI2RlZmluZSBDRUMgICAgICAgICAgICAgICAgICgoQ0VDX1R5cGVEZWYgKikgQ0VDX0JBU0UpCisjZGVmaW5lIEFGSU8gICAgICAgICAgICAgICAgKChBRklPX1R5cGVEZWYgKikgQUZJT19CQVNFKQorI2RlZmluZSBFWFRJICAgICAgICAgICAgICAgICgoRVhUSV9UeXBlRGVmICopIEVYVElfQkFTRSkKKyNkZWZpbmUgR1BJT0EgICAgICAgICAgICAgICAoKEdQSU9fVHlwZURlZiAqKSBHUElPQV9CQVNFKQorI2RlZmluZSBHUElPQiAgICAgICAgICAgICAgICgoR1BJT19UeXBlRGVmICopIEdQSU9CX0JBU0UpCisjZGVmaW5lIEdQSU9DICAgICAgICAgICAgICAgKChHUElPX1R5cGVEZWYgKikgR1BJT0NfQkFTRSkKKyNkZWZpbmUgR1BJT0QgICAgICAgICAgICAgICAoKEdQSU9fVHlwZURlZiAqKSBHUElPRF9CQVNFKQorI2RlZmluZSBHUElPRSAgICAgICAgICAgICAgICgoR1BJT19UeXBlRGVmICopIEdQSU9FX0JBU0UpCisjZGVmaW5lIEdQSU9GICAgICAgICAgICAgICAgKChHUElPX1R5cGVEZWYgKikgR1BJT0ZfQkFTRSkKKyNkZWZpbmUgR1BJT0cgICAgICAgICAgICAgICAoKEdQSU9fVHlwZURlZiAqKSBHUElPR19CQVNFKQorI2RlZmluZSBBREMxICAgICAgICAgICAgICAgICgoQURDX1R5cGVEZWYgKikgQURDMV9CQVNFKQorI2RlZmluZSBBREMyICAgICAgICAgICAgICAgICgoQURDX1R5cGVEZWYgKikgQURDMl9CQVNFKQorI2RlZmluZSBUSU0xICAgICAgICAgICAgICAgICgoVElNX1R5cGVEZWYgKikgVElNMV9CQVNFKQorI2RlZmluZSBTUEkxICAgICAgICAgICAgICAgICgoU1BJX1R5cGVEZWYgKikgU1BJMV9CQVNFKQorI2RlZmluZSBUSU04ICAgICAgICAgICAgICAgICgoVElNX1R5cGVEZWYgKikgVElNOF9CQVNFKQorI2RlZmluZSBVU0FSVDEgICAgICAgICAgICAgICgoVVNBUlRfVHlwZURlZiAqKSBVU0FSVDFfQkFTRSkKKyNkZWZpbmUgQURDMyAgICAgICAgICAgICAgICAoKEFEQ19UeXBlRGVmICopIEFEQzNfQkFTRSkKKyNkZWZpbmUgVElNMTUgICAgICAgICAgICAgICAoKFRJTV9UeXBlRGVmICopIFRJTTE1X0JBU0UpCisjZGVmaW5lIFRJTTE2ICAgICAgICAgICAgICAgKChUSU1fVHlwZURlZiAqKSBUSU0xNl9CQVNFKQorI2RlZmluZSBUSU0xNyAgICAgICAgICAgICAgICgoVElNX1R5cGVEZWYgKikgVElNMTdfQkFTRSkKKyNkZWZpbmUgVElNOSAgICAgICAgICAgICAgICAoKFRJTV9UeXBlRGVmICopIFRJTTlfQkFTRSkKKyNkZWZpbmUgVElNMTAgICAgICAgICAgICAgICAoKFRJTV9UeXBlRGVmICopIFRJTTEwX0JBU0UpCisjZGVmaW5lIFRJTTExICAgICAgICAgICAgICAgKChUSU1fVHlwZURlZiAqKSBUSU0xMV9CQVNFKQorI2RlZmluZSBTRElPICAgICAgICAgICAgICAgICgoU0RJT19UeXBlRGVmICopIFNESU9fQkFTRSkKKyNkZWZpbmUgRE1BMSAgICAgICAgICAgICAgICAoKERNQV9UeXBlRGVmICopIERNQTFfQkFTRSkKKyNkZWZpbmUgRE1BMiAgICAgICAgICAgICAgICAoKERNQV9UeXBlRGVmICopIERNQTJfQkFTRSkKKyNkZWZpbmUgRE1BMV9DaGFubmVsMSAgICAgICAoKERNQV9DaGFubmVsX1R5cGVEZWYgKikgRE1BMV9DaGFubmVsMV9CQVNFKQorI2RlZmluZSBETUExX0NoYW5uZWwyICAgICAgICgoRE1BX0NoYW5uZWxfVHlwZURlZiAqKSBETUExX0NoYW5uZWwyX0JBU0UpCisjZGVmaW5lIERNQTFfQ2hhbm5lbDMgICAgICAgKChETUFfQ2hhbm5lbF9UeXBlRGVmICopIERNQTFfQ2hhbm5lbDNfQkFTRSkKKyNkZWZpbmUgRE1BMV9DaGFubmVsNCAgICAgICAoKERNQV9DaGFubmVsX1R5cGVEZWYgKikgRE1BMV9DaGFubmVsNF9CQVNFKQorI2RlZmluZSBETUExX0NoYW5uZWw1ICAgICAgICgoRE1BX0NoYW5uZWxfVHlwZURlZiAqKSBETUExX0NoYW5uZWw1X0JBU0UpCisjZGVmaW5lIERNQTFfQ2hhbm5lbDYgICAgICAgKChETUFfQ2hhbm5lbF9UeXBlRGVmICopIERNQTFfQ2hhbm5lbDZfQkFTRSkKKyNkZWZpbmUgRE1BMV9DaGFubmVsNyAgICAgICAoKERNQV9DaGFubmVsX1R5cGVEZWYgKikgRE1BMV9DaGFubmVsN19CQVNFKQorI2RlZmluZSBETUEyX0NoYW5uZWwxICAgICAgICgoRE1BX0NoYW5uZWxfVHlwZURlZiAqKSBETUEyX0NoYW5uZWwxX0JBU0UpCisjZGVmaW5lIERNQTJfQ2hhbm5lbDIgICAgICAgKChETUFfQ2hhbm5lbF9UeXBlRGVmICopIERNQTJfQ2hhbm5lbDJfQkFTRSkKKyNkZWZpbmUgRE1BMl9DaGFubmVsMyAgICAgICAoKERNQV9DaGFubmVsX1R5cGVEZWYgKikgRE1BMl9DaGFubmVsM19CQVNFKQorI2RlZmluZSBETUEyX0NoYW5uZWw0ICAgICAgICgoRE1BX0NoYW5uZWxfVHlwZURlZiAqKSBETUEyX0NoYW5uZWw0X0JBU0UpCisjZGVmaW5lIERNQTJfQ2hhbm5lbDUgICAgICAgKChETUFfQ2hhbm5lbF9UeXBlRGVmICopIERNQTJfQ2hhbm5lbDVfQkFTRSkKKyNkZWZpbmUgUkNDICAgICAgICAgICAgICAgICAoKFJDQ19UeXBlRGVmICopIFJDQ19CQVNFKQorI2RlZmluZSBDUkMgICAgICAgICAgICAgICAgICgoQ1JDX1R5cGVEZWYgKikgQ1JDX0JBU0UpCisjZGVmaW5lIEZMQVNIICAgICAgICAgICAgICAgKChGTEFTSF9UeXBlRGVmICopIEZMQVNIX1JfQkFTRSkKKyNkZWZpbmUgT0IgICAgICAgICAgICAgICAgICAoKE9CX1R5cGVEZWYgKikgT0JfQkFTRSkgCisjZGVmaW5lIEVUSCAgICAgICAgICAgICAgICAgKChFVEhfVHlwZURlZiAqKSBFVEhfQkFTRSkKKyNkZWZpbmUgRlNNQ19CYW5rMSAgICAgICAgICAoKEZTTUNfQmFuazFfVHlwZURlZiAqKSBGU01DX0JhbmsxX1JfQkFTRSkKKyNkZWZpbmUgRlNNQ19CYW5rMUUgICAgICAgICAoKEZTTUNfQmFuazFFX1R5cGVEZWYgKikgRlNNQ19CYW5rMUVfUl9CQVNFKQorI2RlZmluZSBGU01DX0JhbmsyICAgICAgICAgICgoRlNNQ19CYW5rMl9UeXBlRGVmICopIEZTTUNfQmFuazJfUl9CQVNFKQorI2RlZmluZSBGU01DX0JhbmszICAgICAgICAgICgoRlNNQ19CYW5rM19UeXBlRGVmICopIEZTTUNfQmFuazNfUl9CQVNFKQorI2RlZmluZSBGU01DX0Jhbms0ICAgICAgICAgICgoRlNNQ19CYW5rNF9UeXBlRGVmICopIEZTTUNfQmFuazRfUl9CQVNFKQorI2RlZmluZSBEQkdNQ1UgICAgICAgICAgICAgICgoREJHTUNVX1R5cGVEZWYgKikgREJHTUNVX0JBU0UpCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAYWRkdG9ncm91cCBFeHBvcnRlZF9jb25zdGFudHMKKyAgKiBAeworICAqLworICAKKyAgLyoqIEBhZGR0b2dyb3VwIFBlcmlwaGVyYWxfUmVnaXN0ZXJzX0JpdHNfRGVmaW5pdGlvbgorICAqIEB7CisgICovCisgICAgCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgUGVyaXBoZXJhbCBSZWdpc3RlcnNfQml0c19EZWZpbml0aW9uICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgIENSQyBjYWxjdWxhdGlvbiB1bml0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIENSQ19EUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgQ1JDX0RSX0RSICAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGRkZGRkZGKSAvKiE8IERhdGEgcmVnaXN0ZXIgYml0cyAqLworCisKKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgQ1JDX0lEUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBDUkNfSURSX0lEUiAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHhGRikgICAgICAgIC8qITwgR2VuZXJhbC1wdXJwb3NlIDgtYml0IGRhdGEgcmVnaXN0ZXIgYml0cyAqLworCisKKy8qKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIENSQ19DUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBDUkNfQ1JfUkVTRVQgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwMSkgICAgICAgIC8qITwgUkVTRVQgYml0ICovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvd2VyIENvbnRyb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKioqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBQV1JfQ1IgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgUFdSX0NSX0xQRFMgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDEpICAgICAvKiE8IExvdy1Qb3dlciBEZWVwc2xlZXAgKi8KKyNkZWZpbmUgIFBXUl9DUl9QRERTICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAyKSAgICAgLyohPCBQb3dlciBEb3duIERlZXBzbGVlcCAqLworI2RlZmluZSAgUFdSX0NSX0NXVUYgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDQpICAgICAvKiE8IENsZWFyIFdha2V1cCBGbGFnICovCisjZGVmaW5lICBQV1JfQ1JfQ1NCRiAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwOCkgICAgIC8qITwgQ2xlYXIgU3RhbmRieSBGbGFnICovCisjZGVmaW5lICBQV1JfQ1JfUFZERSAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAxMCkgICAgIC8qITwgUG93ZXIgVm9sdGFnZSBEZXRlY3RvciBFbmFibGUgKi8KKworI2RlZmluZSAgUFdSX0NSX1BMUyAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwRTApICAgICAvKiE8IFBMU1syOjBdIGJpdHMgKFBWRCBMZXZlbCBTZWxlY3Rpb24pICovCisjZGVmaW5lICBQV1JfQ1JfUExTXzAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAyMCkgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIFBXUl9DUl9QTFNfMSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDQwKSAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgUFdSX0NSX1BMU18yICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwODApICAgICAvKiE8IEJpdCAyICovCisKKy8qITwgUFZEIGxldmVsIGNvbmZpZ3VyYXRpb24gKi8KKyNkZWZpbmUgIFBXUl9DUl9QTFNfMlYyICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAwKSAgICAgLyohPCBQVkQgbGV2ZWwgMi4yViAqLworI2RlZmluZSAgUFdSX0NSX1BMU18yVjMgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMjApICAgICAvKiE8IFBWRCBsZXZlbCAyLjNWICovCisjZGVmaW5lICBQV1JfQ1JfUExTXzJWNCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA0MCkgICAgIC8qITwgUFZEIGxldmVsIDIuNFYgKi8KKyNkZWZpbmUgIFBXUl9DUl9QTFNfMlY1ICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDYwKSAgICAgLyohPCBQVkQgbGV2ZWwgMi41ViAqLworI2RlZmluZSAgUFdSX0NSX1BMU18yVjYgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwODApICAgICAvKiE8IFBWRCBsZXZlbCAyLjZWICovCisjZGVmaW5lICBQV1JfQ1JfUExTXzJWNyAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDBBMCkgICAgIC8qITwgUFZEIGxldmVsIDIuN1YgKi8KKyNkZWZpbmUgIFBXUl9DUl9QTFNfMlY4ICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMEMwKSAgICAgLyohPCBQVkQgbGV2ZWwgMi44ViAqLworI2RlZmluZSAgUFdSX0NSX1BMU18yVjkgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwRTApICAgICAvKiE8IFBWRCBsZXZlbCAyLjlWICovCisKKyNkZWZpbmUgIFBXUl9DUl9EQlAgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMTAwKSAgICAgLyohPCBEaXNhYmxlIEJhY2t1cCBEb21haW4gd3JpdGUgcHJvdGVjdGlvbiAqLworCisKKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgUFdSX0NTUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBQV1JfQ1NSX1dVRiAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMSkgICAgIC8qITwgV2FrZXVwIEZsYWcgKi8KKyNkZWZpbmUgIFBXUl9DU1JfU0JGICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAyKSAgICAgLyohPCBTdGFuZGJ5IEZsYWcgKi8KKyNkZWZpbmUgIFBXUl9DU1JfUFZETyAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA0KSAgICAgLyohPCBQVkQgT3V0cHV0ICovCisjZGVmaW5lICBQV1JfQ1NSX0VXVVAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDEwMCkgICAgIC8qITwgRW5hYmxlIFdLVVAgcGluICovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFja3VwIHJlZ2lzdGVycyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIEJLUF9EUjEgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgQktQX0RSMV9EICAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweEZGRkYpICAgICAvKiE8IEJhY2t1cCBkYXRhICovCisKKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgQktQX0RSMiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBCS1BfRFIyX0QgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4RkZGRikgICAgIC8qITwgQmFja3VwIGRhdGEgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBCS1BfRFIzIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIEJLUF9EUjNfRCAgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHhGRkZGKSAgICAgLyohPCBCYWNrdXAgZGF0YSAqLworCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIEJLUF9EUjQgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgQktQX0RSNF9EICAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweEZGRkYpICAgICAvKiE8IEJhY2t1cCBkYXRhICovCisKKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgQktQX0RSNSByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBCS1BfRFI1X0QgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4RkZGRikgICAgIC8qITwgQmFja3VwIGRhdGEgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBCS1BfRFI2IHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIEJLUF9EUjZfRCAgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHhGRkZGKSAgICAgLyohPCBCYWNrdXAgZGF0YSAqLworCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIEJLUF9EUjcgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgQktQX0RSN19EICAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweEZGRkYpICAgICAvKiE8IEJhY2t1cCBkYXRhICovCisKKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgQktQX0RSOCByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBCS1BfRFI4X0QgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4RkZGRikgICAgIC8qITwgQmFja3VwIGRhdGEgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBCS1BfRFI5IHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIEJLUF9EUjlfRCAgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHhGRkZGKSAgICAgLyohPCBCYWNrdXAgZGF0YSAqLworCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIEJLUF9EUjEwIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgQktQX0RSMTBfRCAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweEZGRkYpICAgICAvKiE8IEJhY2t1cCBkYXRhICovCisKKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgQktQX0RSMTEgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBCS1BfRFIxMV9EICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4RkZGRikgICAgIC8qITwgQmFja3VwIGRhdGEgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBCS1BfRFIxMiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIEJLUF9EUjEyX0QgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHhGRkZGKSAgICAgLyohPCBCYWNrdXAgZGF0YSAqLworCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIEJLUF9EUjEzIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgQktQX0RSMTNfRCAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweEZGRkYpICAgICAvKiE8IEJhY2t1cCBkYXRhICovCisKKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgQktQX0RSMTQgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBCS1BfRFIxNF9EICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4RkZGRikgICAgIC8qITwgQmFja3VwIGRhdGEgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBCS1BfRFIxNSByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIEJLUF9EUjE1X0QgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHhGRkZGKSAgICAgLyohPCBCYWNrdXAgZGF0YSAqLworCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIEJLUF9EUjE2IHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgQktQX0RSMTZfRCAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweEZGRkYpICAgICAvKiE8IEJhY2t1cCBkYXRhICovCisKKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgQktQX0RSMTcgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBCS1BfRFIxN19EICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4RkZGRikgICAgIC8qITwgQmFja3VwIGRhdGEgKi8KKworLyoqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIEJLUF9EUjE4IHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIEJLUF9EUjE4X0QgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHhGRkZGKSAgICAgLyohPCBCYWNrdXAgZGF0YSAqLworCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIEJLUF9EUjE5IHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgQktQX0RSMTlfRCAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweEZGRkYpICAgICAvKiE8IEJhY2t1cCBkYXRhICovCisKKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgQktQX0RSMjAgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBCS1BfRFIyMF9EICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4RkZGRikgICAgIC8qITwgQmFja3VwIGRhdGEgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBCS1BfRFIyMSByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIEJLUF9EUjIxX0QgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHhGRkZGKSAgICAgLyohPCBCYWNrdXAgZGF0YSAqLworCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIEJLUF9EUjIyIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgQktQX0RSMjJfRCAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweEZGRkYpICAgICAvKiE8IEJhY2t1cCBkYXRhICovCisKKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgQktQX0RSMjMgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBCS1BfRFIyM19EICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4RkZGRikgICAgIC8qITwgQmFja3VwIGRhdGEgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBCS1BfRFIyNCByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIEJLUF9EUjI0X0QgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHhGRkZGKSAgICAgLyohPCBCYWNrdXAgZGF0YSAqLworCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIEJLUF9EUjI1IHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgQktQX0RSMjVfRCAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweEZGRkYpICAgICAvKiE8IEJhY2t1cCBkYXRhICovCisKKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgQktQX0RSMjYgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBCS1BfRFIyNl9EICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4RkZGRikgICAgIC8qITwgQmFja3VwIGRhdGEgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBCS1BfRFIyNyByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIEJLUF9EUjI3X0QgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHhGRkZGKSAgICAgLyohPCBCYWNrdXAgZGF0YSAqLworCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIEJLUF9EUjI4IHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgQktQX0RSMjhfRCAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweEZGRkYpICAgICAvKiE8IEJhY2t1cCBkYXRhICovCisKKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgQktQX0RSMjkgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBCS1BfRFIyOV9EICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4RkZGRikgICAgIC8qITwgQmFja3VwIGRhdGEgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBCS1BfRFIzMCByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIEJLUF9EUjMwX0QgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHhGRkZGKSAgICAgLyohPCBCYWNrdXAgZGF0YSAqLworCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIEJLUF9EUjMxIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgQktQX0RSMzFfRCAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweEZGRkYpICAgICAvKiE8IEJhY2t1cCBkYXRhICovCisKKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgQktQX0RSMzIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBCS1BfRFIzMl9EICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4RkZGRikgICAgIC8qITwgQmFja3VwIGRhdGEgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBCS1BfRFIzMyByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIEJLUF9EUjMzX0QgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHhGRkZGKSAgICAgLyohPCBCYWNrdXAgZGF0YSAqLworCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIEJLUF9EUjM0IHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgQktQX0RSMzRfRCAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweEZGRkYpICAgICAvKiE8IEJhY2t1cCBkYXRhICovCisKKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgQktQX0RSMzUgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBCS1BfRFIzNV9EICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4RkZGRikgICAgIC8qITwgQmFja3VwIGRhdGEgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBCS1BfRFIzNiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIEJLUF9EUjM2X0QgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHhGRkZGKSAgICAgLyohPCBCYWNrdXAgZGF0YSAqLworCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIEJLUF9EUjM3IHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgQktQX0RSMzdfRCAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweEZGRkYpICAgICAvKiE8IEJhY2t1cCBkYXRhICovCisKKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgQktQX0RSMzggcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBCS1BfRFIzOF9EICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4RkZGRikgICAgIC8qITwgQmFja3VwIGRhdGEgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBCS1BfRFIzOSByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIEJLUF9EUjM5X0QgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHhGRkZGKSAgICAgLyohPCBCYWNrdXAgZGF0YSAqLworCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIEJLUF9EUjQwIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgQktQX0RSNDBfRCAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweEZGRkYpICAgICAvKiE8IEJhY2t1cCBkYXRhICovCisKKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgQktQX0RSNDEgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBCS1BfRFI0MV9EICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4RkZGRikgICAgIC8qITwgQmFja3VwIGRhdGEgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBCS1BfRFI0MiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIEJLUF9EUjQyX0QgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHhGRkZGKSAgICAgLyohPCBCYWNrdXAgZGF0YSAqLworCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgQktQX1JUQ0NSIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgQktQX1JUQ0NSX0NBTCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwN0YpICAgICAvKiE8IENhbGlicmF0aW9uIHZhbHVlICovCisjZGVmaW5lICBCS1BfUlRDQ1JfQ0NPICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA4MCkgICAgIC8qITwgQ2FsaWJyYXRpb24gQ2xvY2sgT3V0cHV0ICovCisjZGVmaW5lICBCS1BfUlRDQ1JfQVNPRSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDEwMCkgICAgIC8qITwgQWxhcm0gb3IgU2Vjb25kIE91dHB1dCBFbmFibGUgKi8KKyNkZWZpbmUgIEJLUF9SVENDUl9BU09TICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMjAwKSAgICAgLyohPCBBbGFybSBvciBTZWNvbmQgT3V0cHV0IFNlbGVjdGlvbiAqLworCisvKioqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBCS1BfQ1IgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgQktQX0NSX1RQRSAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MDEpICAgICAgICAvKiE8IFRBTVBFUiBwaW4gZW5hYmxlICovCisjZGVmaW5lICBCS1BfQ1JfVFBBTCAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwMikgICAgICAgIC8qITwgVEFNUEVSIHBpbiBhY3RpdmUgbGV2ZWwgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBCS1BfQ1NSIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIEJLUF9DU1JfQ1RFICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAxKSAgICAgLyohPCBDbGVhciBUYW1wZXIgZXZlbnQgKi8KKyNkZWZpbmUgIEJLUF9DU1JfQ1RJICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAyKSAgICAgLyohPCBDbGVhciBUYW1wZXIgSW50ZXJydXB0ICovCisjZGVmaW5lICBCS1BfQ1NSX1RQSUUgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwNCkgICAgIC8qITwgVEFNUEVSIFBpbiBpbnRlcnJ1cHQgZW5hYmxlICovCisjZGVmaW5lICBCS1BfQ1NSX1RFRiAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDEwMCkgICAgIC8qITwgVGFtcGVyIEV2ZW50IEZsYWcgKi8KKyNkZWZpbmUgIEJLUF9DU1JfVElGICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMjAwKSAgICAgLyohPCBUYW1wZXIgSW50ZXJydXB0IEZsYWcgKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICBSZXNldCBhbmQgQ2xvY2sgQ29udHJvbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFJDQ19DUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBSQ0NfQ1JfSFNJT04gICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDEpICAgICAgICAvKiE8IEludGVybmFsIEhpZ2ggU3BlZWQgY2xvY2sgZW5hYmxlICovCisjZGVmaW5lICBSQ0NfQ1JfSFNJUkRZICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IEludGVybmFsIEhpZ2ggU3BlZWQgY2xvY2sgcmVhZHkgZmxhZyAqLworI2RlZmluZSAgUkNDX0NSX0hTSVRSSU0gICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMEY4KSAgICAgICAgLyohPCBJbnRlcm5hbCBIaWdoIFNwZWVkIGNsb2NrIHRyaW1taW5nICovCisjZGVmaW5lICBSQ0NfQ1JfSFNJQ0FMICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMEZGMDApICAgICAgICAvKiE8IEludGVybmFsIEhpZ2ggU3BlZWQgY2xvY2sgQ2FsaWJyYXRpb24gKi8KKyNkZWZpbmUgIFJDQ19DUl9IU0VPTiAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAxMDAwMCkgICAgICAgIC8qITwgRXh0ZXJuYWwgSGlnaCBTcGVlZCBjbG9jayBlbmFibGUgKi8KKyNkZWZpbmUgIFJDQ19DUl9IU0VSRFkgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkgICAgICAgIC8qITwgRXh0ZXJuYWwgSGlnaCBTcGVlZCBjbG9jayByZWFkeSBmbGFnICovCisjZGVmaW5lICBSQ0NfQ1JfSFNFQllQICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwNDAwMDApICAgICAgICAvKiE8IEV4dGVybmFsIEhpZ2ggU3BlZWQgY2xvY2sgQnlwYXNzICovCisjZGVmaW5lICBSQ0NfQ1JfQ1NTT04gICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAgICAgICAvKiE8IENsb2NrIFNlY3VyaXR5IFN5c3RlbSBlbmFibGUgKi8KKyNkZWZpbmUgIFJDQ19DUl9QTExPTiAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMTAwMDAwMCkgICAgICAgIC8qITwgUExMIGVuYWJsZSAqLworI2RlZmluZSAgUkNDX0NSX1BMTFJEWSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAyMDAwMDAwKSAgICAgICAgLyohPCBQTEwgY2xvY2sgcmVhZHkgZmxhZyAqLworCisjaWZkZWYgU1RNMzJGMTBYX0NMCisgI2RlZmluZSAgUkNDX0NSX1BMTDJPTiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA0MDAwMDAwKSAgICAgICAgLyohPCBQTEwyIGVuYWJsZSAqLworICNkZWZpbmUgIFJDQ19DUl9QTEwyUkRZICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwODAwMDAwMCkgICAgICAgIC8qITwgUExMMiBjbG9jayByZWFkeSBmbGFnICovCisgI2RlZmluZSAgUkNDX0NSX1BMTDNPTiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDEwMDAwMDAwKSAgICAgICAgLyohPCBQTEwzIGVuYWJsZSAqLworICNkZWZpbmUgIFJDQ19DUl9QTEwzUkRZICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgyMDAwMDAwMCkgICAgICAgIC8qITwgUExMMyBjbG9jayByZWFkeSBmbGFnICovCisjZW5kaWYgLyogU1RNMzJGMTBYX0NMICovCisKKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgUkNDX0NGR1IgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovCisvKiE8IFNXIGNvbmZpZ3VyYXRpb24gKi8KKyNkZWZpbmUgIFJDQ19DRkdSX1NXICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMykgICAgICAgIC8qITwgU1dbMTowXSBiaXRzIChTeXN0ZW0gY2xvY2sgU3dpdGNoKSAqLworI2RlZmluZSAgUkNDX0NGR1JfU1dfMCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxKSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgUkNDX0NGR1JfU1dfMSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAyKSAgICAgICAgLyohPCBCaXQgMSAqLworCisjZGVmaW5lICBSQ0NfQ0ZHUl9TV19IU0kgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDApICAgICAgICAvKiE8IEhTSSBzZWxlY3RlZCBhcyBzeXN0ZW0gY2xvY2sgKi8KKyNkZWZpbmUgIFJDQ19DRkdSX1NXX0hTRSAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgICAgICAgIC8qITwgSFNFIHNlbGVjdGVkIGFzIHN5c3RlbSBjbG9jayAqLworI2RlZmluZSAgUkNDX0NGR1JfU1dfUExMICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAyKSAgICAgICAgLyohPCBQTEwgc2VsZWN0ZWQgYXMgc3lzdGVtIGNsb2NrICovCisKKy8qITwgU1dTIGNvbmZpZ3VyYXRpb24gKi8KKyNkZWZpbmUgIFJDQ19DRkdSX1NXUyAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwQykgICAgICAgIC8qITwgU1dTWzE6MF0gYml0cyAoU3lzdGVtIENsb2NrIFN3aXRjaCBTdGF0dXMpICovCisjZGVmaW5lICBSQ0NfQ0ZHUl9TV1NfMCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDQpICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBSQ0NfQ0ZHUl9TV1NfMSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDgpICAgICAgICAvKiE8IEJpdCAxICovCisKKyNkZWZpbmUgIFJDQ19DRkdSX1NXU19IU0kgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMCkgICAgICAgIC8qITwgSFNJIG9zY2lsbGF0b3IgdXNlZCBhcyBzeXN0ZW0gY2xvY2sgKi8KKyNkZWZpbmUgIFJDQ19DRkdSX1NXU19IU0UgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNCkgICAgICAgIC8qITwgSFNFIG9zY2lsbGF0b3IgdXNlZCBhcyBzeXN0ZW0gY2xvY2sgKi8KKyNkZWZpbmUgIFJDQ19DRkdSX1NXU19QTEwgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgICAgICAgIC8qITwgUExMIHVzZWQgYXMgc3lzdGVtIGNsb2NrICovCisKKy8qITwgSFBSRSBjb25maWd1cmF0aW9uICovCisjZGVmaW5lICBSQ0NfQ0ZHUl9IUFJFICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwRjApICAgICAgICAvKiE8IEhQUkVbMzowXSBiaXRzIChBSEIgcHJlc2NhbGVyKSAqLworI2RlZmluZSAgUkNDX0NGR1JfSFBSRV8wICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDEwKSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgUkNDX0NGR1JfSFBSRV8xICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKSAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgUkNDX0NGR1JfSFBSRV8yICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDQwKSAgICAgICAgLyohPCBCaXQgMiAqLworI2RlZmluZSAgUkNDX0NGR1JfSFBSRV8zICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDgwKSAgICAgICAgLyohPCBCaXQgMyAqLworCisjZGVmaW5lICBSQ0NfQ0ZHUl9IUFJFX0RJVjEgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDApICAgICAgICAvKiE8IFNZU0NMSyBub3QgZGl2aWRlZCAqLworI2RlZmluZSAgUkNDX0NGR1JfSFBSRV9ESVYyICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDgwKSAgICAgICAgLyohPCBTWVNDTEsgZGl2aWRlZCBieSAyICovCisjZGVmaW5lICBSQ0NfQ0ZHUl9IUFJFX0RJVjQgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwOTApICAgICAgICAvKiE8IFNZU0NMSyBkaXZpZGVkIGJ5IDQgKi8KKyNkZWZpbmUgIFJDQ19DRkdSX0hQUkVfRElWOCAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDBBMCkgICAgICAgIC8qITwgU1lTQ0xLIGRpdmlkZWQgYnkgOCAqLworI2RlZmluZSAgUkNDX0NGR1JfSFBSRV9ESVYxNiAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMEIwKSAgICAgICAgLyohPCBTWVNDTEsgZGl2aWRlZCBieSAxNiAqLworI2RlZmluZSAgUkNDX0NGR1JfSFBSRV9ESVY2NCAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMEMwKSAgICAgICAgLyohPCBTWVNDTEsgZGl2aWRlZCBieSA2NCAqLworI2RlZmluZSAgUkNDX0NGR1JfSFBSRV9ESVYxMjggICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMEQwKSAgICAgICAgLyohPCBTWVNDTEsgZGl2aWRlZCBieSAxMjggKi8KKyNkZWZpbmUgIFJDQ19DRkdSX0hQUkVfRElWMjU2ICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDBFMCkgICAgICAgIC8qITwgU1lTQ0xLIGRpdmlkZWQgYnkgMjU2ICovCisjZGVmaW5lICBSQ0NfQ0ZHUl9IUFJFX0RJVjUxMiAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwRjApICAgICAgICAvKiE8IFNZU0NMSyBkaXZpZGVkIGJ5IDUxMiAqLworCisvKiE8IFBQUkUxIGNvbmZpZ3VyYXRpb24gKi8KKyNkZWZpbmUgIFJDQ19DRkdSX1BQUkUxICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDcwMCkgICAgICAgIC8qITwgUFJFMVsyOjBdIGJpdHMgKEFQQjEgcHJlc2NhbGVyKSAqLworI2RlZmluZSAgUkNDX0NGR1JfUFBSRTFfMCAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgUkNDX0NGR1JfUFBSRTFfMSAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMjAwKSAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgUkNDX0NGR1JfUFBSRTFfMiAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwNDAwKSAgICAgICAgLyohPCBCaXQgMiAqLworCisjZGVmaW5lICBSQ0NfQ0ZHUl9QUFJFMV9ESVYxICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDApICAgICAgICAvKiE8IEhDTEsgbm90IGRpdmlkZWQgKi8KKyNkZWZpbmUgIFJDQ19DRkdSX1BQUkUxX0RJVjIgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDQwMCkgICAgICAgIC8qITwgSENMSyBkaXZpZGVkIGJ5IDIgKi8KKyNkZWZpbmUgIFJDQ19DRkdSX1BQUkUxX0RJVjQgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDUwMCkgICAgICAgIC8qITwgSENMSyBkaXZpZGVkIGJ5IDQgKi8KKyNkZWZpbmUgIFJDQ19DRkdSX1BQUkUxX0RJVjggICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDYwMCkgICAgICAgIC8qITwgSENMSyBkaXZpZGVkIGJ5IDggKi8KKyNkZWZpbmUgIFJDQ19DRkdSX1BQUkUxX0RJVjE2ICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDcwMCkgICAgICAgIC8qITwgSENMSyBkaXZpZGVkIGJ5IDE2ICovCisKKy8qITwgUFBSRTIgY29uZmlndXJhdGlvbiAqLworI2RlZmluZSAgUkNDX0NGR1JfUFBSRTIgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAzODAwKSAgICAgICAgLyohPCBQUkUyWzI6MF0gYml0cyAoQVBCMiBwcmVzY2FsZXIpICovCisjZGVmaW5lICBSQ0NfQ0ZHUl9QUFJFMl8wICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA4MDApICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBSQ0NfQ0ZHUl9QUFJFMl8xICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDEwMDApICAgICAgICAvKiE8IEJpdCAxICovCisjZGVmaW5lICBSQ0NfQ0ZHUl9QUFJFMl8yICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAgICAgICAvKiE8IEJpdCAyICovCisKKyNkZWZpbmUgIFJDQ19DRkdSX1BQUkUyX0RJVjEgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMCkgICAgICAgIC8qITwgSENMSyBub3QgZGl2aWRlZCAqLworI2RlZmluZSAgUkNDX0NGR1JfUFBSRTJfRElWMiAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAyMDAwKSAgICAgICAgLyohPCBIQ0xLIGRpdmlkZWQgYnkgMiAqLworI2RlZmluZSAgUkNDX0NGR1JfUFBSRTJfRElWNCAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAyODAwKSAgICAgICAgLyohPCBIQ0xLIGRpdmlkZWQgYnkgNCAqLworI2RlZmluZSAgUkNDX0NGR1JfUFBSRTJfRElWOCAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAzMDAwKSAgICAgICAgLyohPCBIQ0xLIGRpdmlkZWQgYnkgOCAqLworI2RlZmluZSAgUkNDX0NGR1JfUFBSRTJfRElWMTYgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAzODAwKSAgICAgICAgLyohPCBIQ0xLIGRpdmlkZWQgYnkgMTYgKi8KKworLyohPCBBRENQUFJFIGNvbmZpZ3VyYXRpb24gKi8KKyNkZWZpbmUgIFJDQ19DRkdSX0FEQ1BSRSAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwQzAwMCkgICAgICAgIC8qITwgQURDUFJFWzE6MF0gYml0cyAoQURDIHByZXNjYWxlcikgKi8KKyNkZWZpbmUgIFJDQ19DRkdSX0FEQ1BSRV8wICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIFJDQ19DRkdSX0FEQ1BSRV8xICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwODAwMCkgICAgICAgIC8qITwgQml0IDEgKi8KKworI2RlZmluZSAgUkNDX0NGR1JfQURDUFJFX0RJVjIgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAwKSAgICAgICAgLyohPCBQQ0xLMiBkaXZpZGVkIGJ5IDIgKi8KKyNkZWZpbmUgIFJDQ19DRkdSX0FEQ1BSRV9ESVY0ICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgICAgICAgIC8qITwgUENMSzIgZGl2aWRlZCBieSA0ICovCisjZGVmaW5lICBSQ0NfQ0ZHUl9BRENQUkVfRElWNiAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDgwMDApICAgICAgICAvKiE8IFBDTEsyIGRpdmlkZWQgYnkgNiAqLworI2RlZmluZSAgUkNDX0NGR1JfQURDUFJFX0RJVjggICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDBDMDAwKSAgICAgICAgLyohPCBQQ0xLMiBkaXZpZGVkIGJ5IDggKi8KKworI2RlZmluZSAgUkNDX0NGR1JfUExMU1JDICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDEwMDAwKSAgICAgICAgLyohPCBQTEwgZW50cnkgY2xvY2sgc291cmNlICovCisKKyNkZWZpbmUgIFJDQ19DRkdSX1BMTFhUUFJFICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkgICAgICAgIC8qITwgSFNFIGRpdmlkZXIgZm9yIFBMTCBlbnRyeSAqLworCisvKiE8IFBMTE1VTCBjb25maWd1cmF0aW9uICovCisjZGVmaW5lICBSQ0NfQ0ZHUl9QTExNVUxMICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAzQzAwMDApICAgICAgICAvKiE8IFBMTE1VTFszOjBdIGJpdHMgKFBMTCBtdWx0aXBsaWNhdGlvbiBmYWN0b3IpICovCisjZGVmaW5lICBSQ0NfQ0ZHUl9QTExNVUxMXzAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwNDAwMDApICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBSQ0NfQ0ZHUl9QTExNVUxMXzEgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAgICAgICAvKiE8IEJpdCAxICovCisjZGVmaW5lICBSQ0NfQ0ZHUl9QTExNVUxMXzIgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAxMDAwMDApICAgICAgICAvKiE8IEJpdCAyICovCisjZGVmaW5lICBSQ0NfQ0ZHUl9QTExNVUxMXzMgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAyMDAwMDApICAgICAgICAvKiE8IEJpdCAzICovCisKKyNpZmRlZiBTVE0zMkYxMFhfQ0wKKyAjZGVmaW5lICBSQ0NfQ0ZHUl9QTExTUkNfSFNJX0RpdjIgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMCkgICAgICAgIC8qITwgSFNJIGNsb2NrIGRpdmlkZWQgYnkgMiBzZWxlY3RlZCBhcyBQTEwgZW50cnkgY2xvY2sgc291cmNlICovCisgI2RlZmluZSAgUkNDX0NGR1JfUExMU1JDX1BSRURJVjEgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMTAwMDApICAgICAgICAvKiE8IFBSRURJVjEgY2xvY2sgc2VsZWN0ZWQgYXMgUExMIGVudHJ5IGNsb2NrIHNvdXJjZSAqLworCisgI2RlZmluZSAgUkNDX0NGR1JfUExMWFRQUkVfUFJFRElWMSAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDApICAgICAgICAvKiE8IFBSRURJVjEgY2xvY2sgbm90IGRpdmlkZWQgZm9yIFBMTCBlbnRyeSAqLworICNkZWZpbmUgIFJDQ19DRkdSX1BMTFhUUFJFX1BSRURJVjFfRGl2MiAgICAgKCh1aW50MzJfdCkweDAwMDIwMDAwKSAgICAgICAgLyohPCBQUkVESVYxIGNsb2NrIGRpdmlkZWQgYnkgMiBmb3IgUExMIGVudHJ5ICovCisKKyAjZGVmaW5lICBSQ0NfQ0ZHUl9QTExNVUxMNCAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA4MDAwMCkgICAgICAgIC8qITwgUExMIGlucHV0IGNsb2NrICogNCAqLworICNkZWZpbmUgIFJDQ19DRkdSX1BMTE1VTEw1ICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMEMwMDAwKSAgICAgICAgLyohPCBQTEwgaW5wdXQgY2xvY2sgKiA1ICovCisgI2RlZmluZSAgUkNDX0NGR1JfUExMTVVMTDYgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAxMDAwMDApICAgICAgICAvKiE8IFBMTCBpbnB1dCBjbG9jayAqIDYgKi8KKyAjZGVmaW5lICBSQ0NfQ0ZHUl9QTExNVUxMNyAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDE0MDAwMCkgICAgICAgIC8qITwgUExMIGlucHV0IGNsb2NrICogNyAqLworICNkZWZpbmUgIFJDQ19DRkdSX1BMTE1VTEw4ICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMTgwMDAwKSAgICAgICAgLyohPCBQTEwgaW5wdXQgY2xvY2sgKiA4ICovCisgI2RlZmluZSAgUkNDX0NGR1JfUExMTVVMTDkgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAxQzAwMDApICAgICAgICAvKiE8IFBMTCBpbnB1dCBjbG9jayAqIDkgKi8KKyAjZGVmaW5lICBSQ0NfQ0ZHUl9QTExNVUxMNl81ICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDM0MDAwMCkgICAgICAgIC8qITwgUExMIGlucHV0IGNsb2NrICogNi41ICovCisgCisgI2RlZmluZSAgUkNDX0NGR1JfT1RHRlNQUkUgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApICAgICAgICAvKiE8IFVTQiBPVEcgRlMgcHJlc2NhbGVyICovCisgCisvKiE8IE1DTyBjb25maWd1cmF0aW9uICovCisgI2RlZmluZSAgUkNDX0NGR1JfTUNPICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MEYwMDAwMDApICAgICAgICAvKiE8IE1DT1szOjBdIGJpdHMgKE1pY3JvY29udHJvbGxlciBDbG9jayBPdXRwdXQpICovCisgI2RlZmluZSAgUkNDX0NGR1JfTUNPXzAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDEwMDAwMDApICAgICAgICAvKiE8IEJpdCAwICovCisgI2RlZmluZSAgUkNDX0NGR1JfTUNPXzEgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDIwMDAwMDApICAgICAgICAvKiE8IEJpdCAxICovCisgI2RlZmluZSAgUkNDX0NGR1JfTUNPXzIgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDQwMDAwMDApICAgICAgICAvKiE8IEJpdCAyICovCisgI2RlZmluZSAgUkNDX0NGR1JfTUNPXzMgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDgwMDAwMDApICAgICAgICAvKiE8IEJpdCAzICovCisKKyAjZGVmaW5lICBSQ0NfQ0ZHUl9NQ09fTk9DTE9DSyAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMCkgICAgICAgIC8qITwgTm8gY2xvY2sgKi8KKyAjZGVmaW5lICBSQ0NfQ0ZHUl9NQ09fU1lTQ0xLICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwNDAwMDAwMCkgICAgICAgIC8qITwgU3lzdGVtIGNsb2NrIHNlbGVjdGVkIGFzIE1DTyBzb3VyY2UgKi8KKyAjZGVmaW5lICBSQ0NfQ0ZHUl9NQ09fSFNJICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwNTAwMDAwMCkgICAgICAgIC8qITwgSFNJIGNsb2NrIHNlbGVjdGVkIGFzIE1DTyBzb3VyY2UgKi8KKyAjZGVmaW5lICBSQ0NfQ0ZHUl9NQ09fSFNFICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwNjAwMDAwMCkgICAgICAgIC8qITwgSFNFIGNsb2NrIHNlbGVjdGVkIGFzIE1DTyBzb3VyY2UgKi8KKyAjZGVmaW5lICBSQ0NfQ0ZHUl9NQ09fUExMQ0xLX0RpdjIgICAgICAgICAgICgodWludDMyX3QpMHgwNzAwMDAwMCkgICAgICAgIC8qITwgUExMIGNsb2NrIGRpdmlkZWQgYnkgMiBzZWxlY3RlZCBhcyBNQ08gc291cmNlICovCisgI2RlZmluZSAgUkNDX0NGR1JfTUNPX1BMTDJDTEsgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDgwMDAwMDApICAgICAgICAvKiE8IFBMTDIgY2xvY2sgc2VsZWN0ZWQgYXMgTUNPIHNvdXJjZSovCisgI2RlZmluZSAgUkNDX0NGR1JfTUNPX1BMTDNDTEtfRGl2MiAgICAgICAgICAoKHVpbnQzMl90KTB4MDkwMDAwMDApICAgICAgICAvKiE8IFBMTDMgY2xvY2sgZGl2aWRlZCBieSAyIHNlbGVjdGVkIGFzIE1DTyBzb3VyY2UqLworICNkZWZpbmUgIFJDQ19DRkdSX01DT19FeHRfSFNFICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDBBMDAwMDAwKSAgICAgICAgLyohPCBYVDEgZXh0ZXJuYWwgMy0yNSBNSHogb3NjaWxsYXRvciBjbG9jayBzZWxlY3RlZCBhcyBNQ08gc291cmNlICovCisgI2RlZmluZSAgUkNDX0NGR1JfTUNPX1BMTDNDTEsgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MEIwMDAwMDApICAgICAgICAvKiE8IFBMTDMgY2xvY2sgc2VsZWN0ZWQgYXMgTUNPIHNvdXJjZSAqLworI2VsaWYgZGVmaW5lZCAoU1RNMzJGMTBYX0xEX1ZMKSB8fCBkZWZpbmVkIChTVE0zMkYxMFhfTURfVkwpIHx8IGRlZmluZWQgKFNUTTMyRjEwWF9IRF9WTCkKKyAjZGVmaW5lICBSQ0NfQ0ZHUl9QTExTUkNfSFNJX0RpdjIgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMCkgICAgICAgIC8qITwgSFNJIGNsb2NrIGRpdmlkZWQgYnkgMiBzZWxlY3RlZCBhcyBQTEwgZW50cnkgY2xvY2sgc291cmNlICovCisgI2RlZmluZSAgUkNDX0NGR1JfUExMU1JDX1BSRURJVjEgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMTAwMDApICAgICAgICAvKiE8IFBSRURJVjEgY2xvY2sgc2VsZWN0ZWQgYXMgUExMIGVudHJ5IGNsb2NrIHNvdXJjZSAqLworCisgI2RlZmluZSAgUkNDX0NGR1JfUExMWFRQUkVfUFJFRElWMSAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDApICAgICAgICAvKiE8IFBSRURJVjEgY2xvY2sgbm90IGRpdmlkZWQgZm9yIFBMTCBlbnRyeSAqLworICNkZWZpbmUgIFJDQ19DRkdSX1BMTFhUUFJFX1BSRURJVjFfRGl2MiAgICAgKCh1aW50MzJfdCkweDAwMDIwMDAwKSAgICAgICAgLyohPCBQUkVESVYxIGNsb2NrIGRpdmlkZWQgYnkgMiBmb3IgUExMIGVudHJ5ICovCisKKyAjZGVmaW5lICBSQ0NfQ0ZHUl9QTExNVUxMMiAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMCkgICAgICAgIC8qITwgUExMIGlucHV0IGNsb2NrKjIgKi8KKyAjZGVmaW5lICBSQ0NfQ0ZHUl9QTExNVUxMMyAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA0MDAwMCkgICAgICAgIC8qITwgUExMIGlucHV0IGNsb2NrKjMgKi8KKyAjZGVmaW5lICBSQ0NfQ0ZHUl9QTExNVUxMNCAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA4MDAwMCkgICAgICAgIC8qITwgUExMIGlucHV0IGNsb2NrKjQgKi8KKyAjZGVmaW5lICBSQ0NfQ0ZHUl9QTExNVUxMNSAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDBDMDAwMCkgICAgICAgIC8qITwgUExMIGlucHV0IGNsb2NrKjUgKi8KKyAjZGVmaW5lICBSQ0NfQ0ZHUl9QTExNVUxMNiAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDEwMDAwMCkgICAgICAgIC8qITwgUExMIGlucHV0IGNsb2NrKjYgKi8KKyAjZGVmaW5lICBSQ0NfQ0ZHUl9QTExNVUxMNyAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDE0MDAwMCkgICAgICAgIC8qITwgUExMIGlucHV0IGNsb2NrKjcgKi8KKyAjZGVmaW5lICBSQ0NfQ0ZHUl9QTExNVUxMOCAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDE4MDAwMCkgICAgICAgIC8qITwgUExMIGlucHV0IGNsb2NrKjggKi8KKyAjZGVmaW5lICBSQ0NfQ0ZHUl9QTExNVUxMOSAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDFDMDAwMCkgICAgICAgIC8qITwgUExMIGlucHV0IGNsb2NrKjkgKi8KKyAjZGVmaW5lICBSQ0NfQ0ZHUl9QTExNVUxMMTAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDIwMDAwMCkgICAgICAgIC8qITwgUExMIGlucHV0IGNsb2NrMTAgKi8KKyAjZGVmaW5lICBSQ0NfQ0ZHUl9QTExNVUxMMTEgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDI0MDAwMCkgICAgICAgIC8qITwgUExMIGlucHV0IGNsb2NrKjExICovCisgI2RlZmluZSAgUkNDX0NGR1JfUExMTVVMTDEyICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAyODAwMDApICAgICAgICAvKiE8IFBMTCBpbnB1dCBjbG9jayoxMiAqLworICNkZWZpbmUgIFJDQ19DRkdSX1BMTE1VTEwxMyAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMkMwMDAwKSAgICAgICAgLyohPCBQTEwgaW5wdXQgY2xvY2sqMTMgKi8KKyAjZGVmaW5lICBSQ0NfQ0ZHUl9QTExNVUxMMTQgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDMwMDAwMCkgICAgICAgIC8qITwgUExMIGlucHV0IGNsb2NrKjE0ICovCisgI2RlZmluZSAgUkNDX0NGR1JfUExMTVVMTDE1ICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAzNDAwMDApICAgICAgICAvKiE8IFBMTCBpbnB1dCBjbG9jayoxNSAqLworICNkZWZpbmUgIFJDQ19DRkdSX1BMTE1VTEwxNiAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMzgwMDAwKSAgICAgICAgLyohPCBQTEwgaW5wdXQgY2xvY2sqMTYgKi8KKworLyohPCBNQ08gY29uZmlndXJhdGlvbiAqLworICNkZWZpbmUgIFJDQ19DRkdSX01DTyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA3MDAwMDAwKSAgICAgICAgLyohPCBNQ09bMjowXSBiaXRzIChNaWNyb2NvbnRyb2xsZXIgQ2xvY2sgT3V0cHV0KSAqLworICNkZWZpbmUgIFJDQ19DRkdSX01DT18wICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAxMDAwMDAwKSAgICAgICAgLyohPCBCaXQgMCAqLworICNkZWZpbmUgIFJDQ19DRkdSX01DT18xICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAyMDAwMDAwKSAgICAgICAgLyohPCBCaXQgMSAqLworICNkZWZpbmUgIFJDQ19DRkdSX01DT18yICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA0MDAwMDAwKSAgICAgICAgLyohPCBCaXQgMiAqLworCisgI2RlZmluZSAgUkNDX0NGR1JfTUNPX05PQ0xPQ0sgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDApICAgICAgICAvKiE8IE5vIGNsb2NrICovCisgI2RlZmluZSAgUkNDX0NGR1JfTUNPX1NZU0NMSyAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDQwMDAwMDApICAgICAgICAvKiE8IFN5c3RlbSBjbG9jayBzZWxlY3RlZCBhcyBNQ08gc291cmNlICovCisgI2RlZmluZSAgUkNDX0NGR1JfTUNPX0hTSSAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDUwMDAwMDApICAgICAgICAvKiE8IEhTSSBjbG9jayBzZWxlY3RlZCBhcyBNQ08gc291cmNlICovCisgI2RlZmluZSAgUkNDX0NGR1JfTUNPX0hTRSAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDYwMDAwMDApICAgICAgICAvKiE8IEhTRSBjbG9jayBzZWxlY3RlZCBhcyBNQ08gc291cmNlICAqLworICNkZWZpbmUgIFJDQ19DRkdSX01DT19QTEwgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA3MDAwMDAwKSAgICAgICAgLyohPCBQTEwgY2xvY2sgZGl2aWRlZCBieSAyIHNlbGVjdGVkIGFzIE1DTyBzb3VyY2UgKi8KKyNlbHNlCisgI2RlZmluZSAgUkNDX0NGR1JfUExMU1JDX0hTSV9EaXYyICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDApICAgICAgICAvKiE8IEhTSSBjbG9jayBkaXZpZGVkIGJ5IDIgc2VsZWN0ZWQgYXMgUExMIGVudHJ5IGNsb2NrIHNvdXJjZSAqLworICNkZWZpbmUgIFJDQ19DRkdSX1BMTFNSQ19IU0UgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDEwMDAwKSAgICAgICAgLyohPCBIU0UgY2xvY2sgc2VsZWN0ZWQgYXMgUExMIGVudHJ5IGNsb2NrIHNvdXJjZSAqLworCisgI2RlZmluZSAgUkNDX0NGR1JfUExMWFRQUkVfSFNFICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDApICAgICAgICAvKiE8IEhTRSBjbG9jayBub3QgZGl2aWRlZCBmb3IgUExMIGVudHJ5ICovCisgI2RlZmluZSAgUkNDX0NGR1JfUExMWFRQUkVfSFNFX0RpdjIgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMjAwMDApICAgICAgICAvKiE8IEhTRSBjbG9jayBkaXZpZGVkIGJ5IDIgZm9yIFBMTCBlbnRyeSAqLworCisgI2RlZmluZSAgUkNDX0NGR1JfUExMTVVMTDIgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDApICAgICAgICAvKiE8IFBMTCBpbnB1dCBjbG9jayoyICovCisgI2RlZmluZSAgUkNDX0NGR1JfUExMTVVMTDMgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwNDAwMDApICAgICAgICAvKiE8IFBMTCBpbnB1dCBjbG9jayozICovCisgI2RlZmluZSAgUkNDX0NGR1JfUExMTVVMTDQgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAgICAgICAvKiE8IFBMTCBpbnB1dCBjbG9jayo0ICovCisgI2RlZmluZSAgUkNDX0NGR1JfUExMTVVMTDUgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwQzAwMDApICAgICAgICAvKiE8IFBMTCBpbnB1dCBjbG9jayo1ICovCisgI2RlZmluZSAgUkNDX0NGR1JfUExMTVVMTDYgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAxMDAwMDApICAgICAgICAvKiE8IFBMTCBpbnB1dCBjbG9jayo2ICovCisgI2RlZmluZSAgUkNDX0NGR1JfUExMTVVMTDcgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAxNDAwMDApICAgICAgICAvKiE8IFBMTCBpbnB1dCBjbG9jayo3ICovCisgI2RlZmluZSAgUkNDX0NGR1JfUExMTVVMTDggICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAxODAwMDApICAgICAgICAvKiE8IFBMTCBpbnB1dCBjbG9jayo4ICovCisgI2RlZmluZSAgUkNDX0NGR1JfUExMTVVMTDkgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAxQzAwMDApICAgICAgICAvKiE8IFBMTCBpbnB1dCBjbG9jayo5ICovCisgI2RlZmluZSAgUkNDX0NGR1JfUExMTVVMTDEwICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAyMDAwMDApICAgICAgICAvKiE8IFBMTCBpbnB1dCBjbG9jazEwICovCisgI2RlZmluZSAgUkNDX0NGR1JfUExMTVVMTDExICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAyNDAwMDApICAgICAgICAvKiE8IFBMTCBpbnB1dCBjbG9jayoxMSAqLworICNkZWZpbmUgIFJDQ19DRkdSX1BMTE1VTEwxMiAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMjgwMDAwKSAgICAgICAgLyohPCBQTEwgaW5wdXQgY2xvY2sqMTIgKi8KKyAjZGVmaW5lICBSQ0NfQ0ZHUl9QTExNVUxMMTMgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDJDMDAwMCkgICAgICAgIC8qITwgUExMIGlucHV0IGNsb2NrKjEzICovCisgI2RlZmluZSAgUkNDX0NGR1JfUExMTVVMTDE0ICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAzMDAwMDApICAgICAgICAvKiE8IFBMTCBpbnB1dCBjbG9jayoxNCAqLworICNkZWZpbmUgIFJDQ19DRkdSX1BMTE1VTEwxNSAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMzQwMDAwKSAgICAgICAgLyohPCBQTEwgaW5wdXQgY2xvY2sqMTUgKi8KKyAjZGVmaW5lICBSQ0NfQ0ZHUl9QTExNVUxMMTYgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDM4MDAwMCkgICAgICAgIC8qITwgUExMIGlucHV0IGNsb2NrKjE2ICovCisgI2RlZmluZSAgUkNDX0NGR1JfVVNCUFJFICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApICAgICAgICAvKiE8IFVTQiBEZXZpY2UgcHJlc2NhbGVyICovCisKKy8qITwgTUNPIGNvbmZpZ3VyYXRpb24gKi8KKyAjZGVmaW5lICBSQ0NfQ0ZHUl9NQ08gICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwNzAwMDAwMCkgICAgICAgIC8qITwgTUNPWzI6MF0gYml0cyAoTWljcm9jb250cm9sbGVyIENsb2NrIE91dHB1dCkgKi8KKyAjZGVmaW5lICBSQ0NfQ0ZHUl9NQ09fMCAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMTAwMDAwMCkgICAgICAgIC8qITwgQml0IDAgKi8KKyAjZGVmaW5lICBSQ0NfQ0ZHUl9NQ09fMSAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMjAwMDAwMCkgICAgICAgIC8qITwgQml0IDEgKi8KKyAjZGVmaW5lICBSQ0NfQ0ZHUl9NQ09fMiAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwNDAwMDAwMCkgICAgICAgIC8qITwgQml0IDIgKi8KKworICNkZWZpbmUgIFJDQ19DRkdSX01DT19OT0NMT0NLICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAwKSAgICAgICAgLyohPCBObyBjbG9jayAqLworICNkZWZpbmUgIFJDQ19DRkdSX01DT19TWVNDTEsgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA0MDAwMDAwKSAgICAgICAgLyohPCBTeXN0ZW0gY2xvY2sgc2VsZWN0ZWQgYXMgTUNPIHNvdXJjZSAqLworICNkZWZpbmUgIFJDQ19DRkdSX01DT19IU0kgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA1MDAwMDAwKSAgICAgICAgLyohPCBIU0kgY2xvY2sgc2VsZWN0ZWQgYXMgTUNPIHNvdXJjZSAqLworICNkZWZpbmUgIFJDQ19DRkdSX01DT19IU0UgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA2MDAwMDAwKSAgICAgICAgLyohPCBIU0UgY2xvY2sgc2VsZWN0ZWQgYXMgTUNPIHNvdXJjZSAgKi8KKyAjZGVmaW5lICBSQ0NfQ0ZHUl9NQ09fUExMICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwNzAwMDAwMCkgICAgICAgIC8qITwgUExMIGNsb2NrIGRpdmlkZWQgYnkgMiBzZWxlY3RlZCBhcyBNQ08gc291cmNlICovCisjZW5kaWYgLyogU1RNMzJGMTBYX0NMICovCisKKy8qITwqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBSQ0NfQ0lSIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIFJDQ19DSVJfTFNJUkRZRiAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgICAgICAgIC8qITwgTFNJIFJlYWR5IEludGVycnVwdCBmbGFnICovCisjZGVmaW5lICBSQ0NfQ0lSX0xTRVJEWUYgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IExTRSBSZWFkeSBJbnRlcnJ1cHQgZmxhZyAqLworI2RlZmluZSAgUkNDX0NJUl9IU0lSRFlGICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgICAgICAgLyohPCBIU0kgUmVhZHkgSW50ZXJydXB0IGZsYWcgKi8KKyNkZWZpbmUgIFJDQ19DSVJfSFNFUkRZRiAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgICAgICAgIC8qITwgSFNFIFJlYWR5IEludGVycnVwdCBmbGFnICovCisjZGVmaW5lICBSQ0NfQ0lSX1BMTFJEWUYgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAgICAgICAvKiE8IFBMTCBSZWFkeSBJbnRlcnJ1cHQgZmxhZyAqLworI2RlZmluZSAgUkNDX0NJUl9DU1NGICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDgwKSAgICAgICAgLyohPCBDbG9jayBTZWN1cml0eSBTeXN0ZW0gSW50ZXJydXB0IGZsYWcgKi8KKyNkZWZpbmUgIFJDQ19DSVJfTFNJUkRZSUUgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDEwMCkgICAgICAgIC8qITwgTFNJIFJlYWR5IEludGVycnVwdCBFbmFibGUgKi8KKyNkZWZpbmUgIFJDQ19DSVJfTFNFUkRZSUUgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkgICAgICAgIC8qITwgTFNFIFJlYWR5IEludGVycnVwdCBFbmFibGUgKi8KKyNkZWZpbmUgIFJDQ19DSVJfSFNJUkRZSUUgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDQwMCkgICAgICAgIC8qITwgSFNJIFJlYWR5IEludGVycnVwdCBFbmFibGUgKi8KKyNkZWZpbmUgIFJDQ19DSVJfSFNFUkRZSUUgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgICAgICAgIC8qITwgSFNFIFJlYWR5IEludGVycnVwdCBFbmFibGUgKi8KKyNkZWZpbmUgIFJDQ19DSVJfUExMUkRZSUUgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMTAwMCkgICAgICAgIC8qITwgUExMIFJlYWR5IEludGVycnVwdCBFbmFibGUgKi8KKyNkZWZpbmUgIFJDQ19DSVJfTFNJUkRZQyAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAxMDAwMCkgICAgICAgIC8qITwgTFNJIFJlYWR5IEludGVycnVwdCBDbGVhciAqLworI2RlZmluZSAgUkNDX0NJUl9MU0VSRFlDICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDIwMDAwKSAgICAgICAgLyohPCBMU0UgUmVhZHkgSW50ZXJydXB0IENsZWFyICovCisjZGVmaW5lICBSQ0NfQ0lSX0hTSVJEWUMgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwNDAwMDApICAgICAgICAvKiE8IEhTSSBSZWFkeSBJbnRlcnJ1cHQgQ2xlYXIgKi8KKyNkZWZpbmUgIFJDQ19DSVJfSFNFUkRZQyAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA4MDAwMCkgICAgICAgIC8qITwgSFNFIFJlYWR5IEludGVycnVwdCBDbGVhciAqLworI2RlZmluZSAgUkNDX0NJUl9QTExSRFlDICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMTAwMDAwKSAgICAgICAgLyohPCBQTEwgUmVhZHkgSW50ZXJydXB0IENsZWFyICovCisjZGVmaW5lICBSQ0NfQ0lSX0NTU0MgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA4MDAwMDApICAgICAgICAvKiE8IENsb2NrIFNlY3VyaXR5IFN5c3RlbSBJbnRlcnJ1cHQgQ2xlYXIgKi8KKworI2lmZGVmIFNUTTMyRjEwWF9DTAorICNkZWZpbmUgIFJDQ19DSVJfUExMMlJEWUYgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAyMCkgICAgICAgIC8qITwgUExMMiBSZWFkeSBJbnRlcnJ1cHQgZmxhZyAqLworICNkZWZpbmUgIFJDQ19DSVJfUExMM1JEWUYgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgICAgICAgIC8qITwgUExMMyBSZWFkeSBJbnRlcnJ1cHQgZmxhZyAqLworICNkZWZpbmUgIFJDQ19DSVJfUExMMlJEWUlFICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMjAwMCkgICAgICAgIC8qITwgUExMMiBSZWFkeSBJbnRlcnJ1cHQgRW5hYmxlICovCisgI2RlZmluZSAgUkNDX0NJUl9QTEwzUkRZSUUgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA0MDAwKSAgICAgICAgLyohPCBQTEwzIFJlYWR5IEludGVycnVwdCBFbmFibGUgKi8KKyAjZGVmaW5lICBSQ0NfQ0lSX1BMTDJSRFlDICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAyMDAwMDApICAgICAgICAvKiE8IFBMTDIgUmVhZHkgSW50ZXJydXB0IENsZWFyICovCisgI2RlZmluZSAgUkNDX0NJUl9QTEwzUkRZQyAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwNDAwMDAwKSAgICAgICAgLyohPCBQTEwzIFJlYWR5IEludGVycnVwdCBDbGVhciAqLworI2VuZGlmIC8qIFNUTTMyRjEwWF9DTCAqLworCisvKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBSQ0NfQVBCMlJTVFIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqLworI2RlZmluZSAgUkNDX0FQQjJSU1RSX0FGSU9SU1QgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxKSAgICAgICAgLyohPCBBbHRlcm5hdGUgRnVuY3Rpb24gSS9PIHJlc2V0ICovCisjZGVmaW5lICBSQ0NfQVBCMlJTVFJfSU9QQVJTVCAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDQpICAgICAgICAvKiE8IEkvTyBwb3J0IEEgcmVzZXQgKi8KKyNkZWZpbmUgIFJDQ19BUEIyUlNUUl9JT1BCUlNUICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgICAgICAgIC8qITwgSS9PIHBvcnQgQiByZXNldCAqLworI2RlZmluZSAgUkNDX0FQQjJSU1RSX0lPUENSU1QgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDEwKSAgICAgICAgLyohPCBJL08gcG9ydCBDIHJlc2V0ICovCisjZGVmaW5lICBSQ0NfQVBCMlJTVFJfSU9QRFJTVCAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMjApICAgICAgICAvKiE8IEkvTyBwb3J0IEQgcmVzZXQgKi8KKyNkZWZpbmUgIFJDQ19BUEIyUlNUUl9BREMxUlNUICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkgICAgICAgIC8qITwgQURDIDEgaW50ZXJmYWNlIHJlc2V0ICovCisKKyNpZiAhZGVmaW5lZCAoU1RNMzJGMTBYX0xEX1ZMKSAmJiAhZGVmaW5lZCAoU1RNMzJGMTBYX01EX1ZMKSAmJiAhZGVmaW5lZCAoU1RNMzJGMTBYX0hEX1ZMKQorI2RlZmluZSAgUkNDX0FQQjJSU1RSX0FEQzJSU1QgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwNDAwKSAgICAgICAgLyohPCBBREMgMiBpbnRlcmZhY2UgcmVzZXQgKi8KKyNlbmRpZgorCisjZGVmaW5lICBSQ0NfQVBCMlJTVFJfVElNMVJTVCAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA4MDApICAgICAgICAvKiE8IFRJTTEgVGltZXIgcmVzZXQgKi8KKyNkZWZpbmUgIFJDQ19BUEIyUlNUUl9TUEkxUlNUICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMTAwMCkgICAgICAgIC8qITwgU1BJIDEgcmVzZXQgKi8KKyNkZWZpbmUgIFJDQ19BUEIyUlNUUl9VU0FSVDFSU1QgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgICAgICAgIC8qITwgVVNBUlQxIHJlc2V0ICovCisKKyNpZiBkZWZpbmVkIChTVE0zMkYxMFhfTERfVkwpIHx8IGRlZmluZWQgKFNUTTMyRjEwWF9NRF9WTCkgfHwgZGVmaW5lZCAoU1RNMzJGMTBYX0hEX1ZMKQorI2RlZmluZSAgUkNDX0FQQjJSU1RSX1RJTTE1UlNUICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDEwMDAwKSAgICAgICAgLyohPCBUSU0xNSBUaW1lciByZXNldCAqLworI2RlZmluZSAgUkNDX0FQQjJSU1RSX1RJTTE2UlNUICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDIwMDAwKSAgICAgICAgLyohPCBUSU0xNiBUaW1lciByZXNldCAqLworI2RlZmluZSAgUkNDX0FQQjJSU1RSX1RJTTE3UlNUICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDQwMDAwKSAgICAgICAgLyohPCBUSU0xNyBUaW1lciByZXNldCAqLworI2VuZGlmCisKKyNpZiAhZGVmaW5lZCAoU1RNMzJGMTBYX0xEKSAmJiAhZGVmaW5lZCAoU1RNMzJGMTBYX0xEX1ZMKQorICNkZWZpbmUgIFJDQ19BUEIyUlNUUl9JT1BFUlNUICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDQwKSAgICAgICAgLyohPCBJL08gcG9ydCBFIHJlc2V0ICovCisjZW5kaWYgLyogU1RNMzJGMTBYX0xEICYmIFNUTTMyRjEwWF9MRF9WTCAqLworCisjaWYgZGVmaW5lZCAoU1RNMzJGMTBYX0hEKSB8fCBkZWZpbmVkIChTVE0zMkYxMFhfWEwpCisgI2RlZmluZSAgUkNDX0FQQjJSU1RSX0lPUEZSU1QgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApICAgICAgICAvKiE8IEkvTyBwb3J0IEYgcmVzZXQgKi8KKyAjZGVmaW5lICBSQ0NfQVBCMlJTVFJfSU9QR1JTVCAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDEwMCkgICAgICAgIC8qITwgSS9PIHBvcnQgRyByZXNldCAqLworICNkZWZpbmUgIFJDQ19BUEIyUlNUUl9USU04UlNUICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAyMDAwKSAgICAgICAgLyohPCBUSU04IFRpbWVyIHJlc2V0ICovCisgI2RlZmluZSAgUkNDX0FQQjJSU1RSX0FEQzNSU1QgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDgwMDApICAgICAgICAvKiE8IEFEQzMgaW50ZXJmYWNlIHJlc2V0ICovCisjZW5kaWYKKworI2lmIGRlZmluZWQgKFNUTTMyRjEwWF9IRF9WTCkKKyAjZGVmaW5lICBSQ0NfQVBCMlJTVFJfSU9QRlJTVCAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA4MCkgICAgICAgIC8qITwgSS9PIHBvcnQgRiByZXNldCAqLworICNkZWZpbmUgIFJDQ19BUEIyUlNUUl9JT1BHUlNUICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKSAgICAgICAgLyohPCBJL08gcG9ydCBHIHJlc2V0ICovCisjZW5kaWYKKworI2lmZGVmIFNUTTMyRjEwWF9YTAorICNkZWZpbmUgIFJDQ19BUEIyUlNUUl9USU05UlNUICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDgwMDAwKSAgICAgICAgIC8qITwgVElNOSBUaW1lciByZXNldCAqLworICNkZWZpbmUgIFJDQ19BUEIyUlNUUl9USU0xMFJTVCAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMTAwMDAwKSAgICAgICAgIC8qITwgVElNMTAgVGltZXIgcmVzZXQgKi8KKyAjZGVmaW5lICBSQ0NfQVBCMlJTVFJfVElNMTFSU1QgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDIwMDAwMCkgICAgICAgICAvKiE8IFRJTTExIFRpbWVyIHJlc2V0ICovCisjZW5kaWYgLyogU1RNMzJGMTBYX1hMICovCisKKy8qKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFJDQ19BUEIxUlNUUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBSQ0NfQVBCMVJTVFJfVElNMlJTVCAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDEpICAgICAgICAvKiE8IFRpbWVyIDIgcmVzZXQgKi8KKyNkZWZpbmUgIFJDQ19BUEIxUlNUUl9USU0zUlNUICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMikgICAgICAgIC8qITwgVGltZXIgMyByZXNldCAqLworI2RlZmluZSAgUkNDX0FQQjFSU1RSX1dXREdSU1QgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwODAwKSAgICAgICAgLyohPCBXaW5kb3cgV2F0Y2hkb2cgcmVzZXQgKi8KKyNkZWZpbmUgIFJDQ19BUEIxUlNUUl9VU0FSVDJSU1QgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkgICAgICAgIC8qITwgVVNBUlQgMiByZXNldCAqLworI2RlZmluZSAgUkNDX0FQQjFSU1RSX0kyQzFSU1QgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMjAwMDAwKSAgICAgICAgLyohPCBJMkMgMSByZXNldCAqLworCisjaWYgIWRlZmluZWQgKFNUTTMyRjEwWF9MRF9WTCkgJiYgIWRlZmluZWQgKFNUTTMyRjEwWF9NRF9WTCkgJiYgIWRlZmluZWQgKFNUTTMyRjEwWF9IRF9WTCkKKyNkZWZpbmUgIFJDQ19BUEIxUlNUUl9DQU4xUlNUICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMjAwMDAwMCkgICAgICAgIC8qITwgQ0FOMSByZXNldCAqLworI2VuZGlmCisKKyNkZWZpbmUgIFJDQ19BUEIxUlNUUl9CS1BSU1QgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwODAwMDAwMCkgICAgICAgIC8qITwgQmFja3VwIGludGVyZmFjZSByZXNldCAqLworI2RlZmluZSAgUkNDX0FQQjFSU1RSX1BXUlJTVCAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDEwMDAwMDAwKSAgICAgICAgLyohPCBQb3dlciBpbnRlcmZhY2UgcmVzZXQgKi8KKworI2lmICFkZWZpbmVkIChTVE0zMkYxMFhfTEQpICYmICFkZWZpbmVkIChTVE0zMkYxMFhfTERfVkwpCisgI2RlZmluZSAgUkNDX0FQQjFSU1RSX1RJTTRSU1QgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDQpICAgICAgICAvKiE8IFRpbWVyIDQgcmVzZXQgKi8KKyAjZGVmaW5lICBSQ0NfQVBCMVJTVFJfU1BJMlJTVCAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgICAgICAgIC8qITwgU1BJIDIgcmVzZXQgKi8KKyAjZGVmaW5lICBSQ0NfQVBCMVJTVFJfVVNBUlQzUlNUICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA0MDAwMCkgICAgICAgIC8qITwgVVNBUlQgMyByZXNldCAqLworICNkZWZpbmUgIFJDQ19BUEIxUlNUUl9JMkMyUlNUICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwNDAwMDAwKSAgICAgICAgLyohPCBJMkMgMiByZXNldCAqLworI2VuZGlmIC8qIFNUTTMyRjEwWF9MRCAmJiBTVE0zMkYxMFhfTERfVkwgKi8KKworI2lmIGRlZmluZWQgKFNUTTMyRjEwWF9IRCkgfHwgZGVmaW5lZCAoU1RNMzJGMTBYX01EKSB8fCBkZWZpbmVkIChTVE0zMkYxMFhfTEQpIHx8IGRlZmluZWQgIChTVE0zMkYxMFhfWEwpCisgI2RlZmluZSAgUkNDX0FQQjFSU1RSX1VTQlJTVCAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA4MDAwMDApICAgICAgICAvKiE8IFVTQiBEZXZpY2UgcmVzZXQgKi8KKyNlbmRpZgorCisjaWYgZGVmaW5lZCAoU1RNMzJGMTBYX0hEKSB8fCBkZWZpbmVkICAoU1RNMzJGMTBYX0NMKSB8fCBkZWZpbmVkICAoU1RNMzJGMTBYX1hMKQorICNkZWZpbmUgIFJDQ19BUEIxUlNUUl9USU01UlNUICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgICAgICAgIC8qITwgVGltZXIgNSByZXNldCAqLworICNkZWZpbmUgIFJDQ19BUEIxUlNUUl9USU02UlNUICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAxMCkgICAgICAgIC8qITwgVGltZXIgNiByZXNldCAqLworICNkZWZpbmUgIFJDQ19BUEIxUlNUUl9USU03UlNUICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAyMCkgICAgICAgIC8qITwgVGltZXIgNyByZXNldCAqLworICNkZWZpbmUgIFJDQ19BUEIxUlNUUl9TUEkzUlNUICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwODAwMCkgICAgICAgIC8qITwgU1BJIDMgcmVzZXQgKi8KKyAjZGVmaW5lICBSQ0NfQVBCMVJTVFJfVUFSVDRSU1QgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAgICAgICAvKiE8IFVBUlQgNCByZXNldCAqLworICNkZWZpbmUgIFJDQ19BUEIxUlNUUl9VQVJUNVJTVCAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDEwMDAwMCkgICAgICAgIC8qITwgVUFSVCA1IHJlc2V0ICovCisgI2RlZmluZSAgUkNDX0FQQjFSU1RSX0RBQ1JTVCAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDIwMDAwMDAwKSAgICAgICAgLyohPCBEQUMgaW50ZXJmYWNlIHJlc2V0ICovCisjZW5kaWYKKworI2lmIGRlZmluZWQgKFNUTTMyRjEwWF9MRF9WTCkgfHwgZGVmaW5lZCAgKFNUTTMyRjEwWF9NRF9WTCkgfHwgZGVmaW5lZCAgKFNUTTMyRjEwWF9IRF9WTCkKKyAjZGVmaW5lICBSQ0NfQVBCMVJTVFJfVElNNlJTVCAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAgICAgICAvKiE8IFRpbWVyIDYgcmVzZXQgKi8KKyAjZGVmaW5lICBSQ0NfQVBCMVJTVFJfVElNN1JTVCAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMjApICAgICAgICAvKiE8IFRpbWVyIDcgcmVzZXQgKi8KKyAjZGVmaW5lICBSQ0NfQVBCMVJTVFJfREFDUlNUICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MjAwMDAwMDApICAgICAgICAvKiE8IERBQyBpbnRlcmZhY2UgcmVzZXQgKi8KKyAjZGVmaW5lICBSQ0NfQVBCMVJTVFJfQ0VDUlNUICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4NDAwMDAwMDApICAgICAgICAvKiE8IENFQyBpbnRlcmZhY2UgcmVzZXQgKi8gCisjZW5kaWYKKworI2lmIGRlZmluZWQgIChTVE0zMkYxMFhfSERfVkwpCisgI2RlZmluZSAgUkNDX0FQQjFSU1RSX1RJTTVSU1QgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA4KSAgICAgICAgLyohPCBUaW1lciA1IHJlc2V0ICovCisgI2RlZmluZSAgUkNDX0FQQjFSU1RSX1RJTTEyUlNUICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDQwKSAgICAgICAgLyohPCBUSU0xMiBUaW1lciByZXNldCAqLworICNkZWZpbmUgIFJDQ19BUEIxUlNUUl9USU0xM1JTVCAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA4MCkgICAgICAgIC8qITwgVElNMTMgVGltZXIgcmVzZXQgKi8KKyAjZGVmaW5lICBSQ0NfQVBCMVJTVFJfVElNMTRSU1QgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAxMDApICAgICAgICAvKiE8IFRJTTE0IFRpbWVyIHJlc2V0ICovCisgI2RlZmluZSAgUkNDX0FQQjFSU1RSX1NQSTNSU1QgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKSAgICAgICAgLyohPCBTUEkgMyByZXNldCAqLyAKKyAjZGVmaW5lICBSQ0NfQVBCMVJTVFJfVUFSVDRSU1QgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAgICAgICAvKiE8IFVBUlQgNCByZXNldCAqLworICNkZWZpbmUgIFJDQ19BUEIxUlNUUl9VQVJUNVJTVCAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDEwMDAwMCkgICAgICAgIC8qITwgVUFSVCA1IHJlc2V0ICovIAorI2VuZGlmCisKKyNpZmRlZiBTVE0zMkYxMFhfQ0wKKyAjZGVmaW5lICBSQ0NfQVBCMVJTVFJfQ0FOMlJTVCAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDQwMDAwMDApICAgICAgICAvKiE8IENBTjIgcmVzZXQgKi8KKyNlbmRpZiAvKiBTVE0zMkYxMFhfQ0wgKi8KKworI2lmZGVmIFNUTTMyRjEwWF9YTAorICNkZWZpbmUgIFJDQ19BUEIxUlNUUl9USU0xMlJTVCAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgICAgICAgICAvKiE8IFRJTTEyIFRpbWVyIHJlc2V0ICovCisgI2RlZmluZSAgUkNDX0FQQjFSU1RSX1RJTTEzUlNUICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDgwKSAgICAgICAgIC8qITwgVElNMTMgVGltZXIgcmVzZXQgKi8KKyAjZGVmaW5lICBSQ0NfQVBCMVJTVFJfVElNMTRSU1QgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAxMDApICAgICAgICAgLyohPCBUSU0xNCBUaW1lciByZXNldCAqLworI2VuZGlmIC8qIFNUTTMyRjEwWF9YTCAqLworCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgUkNDX0FIQkVOUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgUkNDX0FIQkVOUl9ETUExRU4gICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDEpICAgICAgICAgICAgLyohPCBETUExIGNsb2NrIGVuYWJsZSAqLworI2RlZmluZSAgUkNDX0FIQkVOUl9TUkFNRU4gICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDQpICAgICAgICAgICAgLyohPCBTUkFNIGludGVyZmFjZSBjbG9jayBlbmFibGUgKi8KKyNkZWZpbmUgIFJDQ19BSEJFTlJfRkxJVEZFTiAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDEwKSAgICAgICAgICAgIC8qITwgRkxJVEYgY2xvY2sgZW5hYmxlICovCisjZGVmaW5lICBSQ0NfQUhCRU5SX0NSQ0VOICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA0MCkgICAgICAgICAgICAvKiE8IENSQyBjbG9jayBlbmFibGUgKi8KKworI2lmIGRlZmluZWQgKFNUTTMyRjEwWF9IRCkgfHwgZGVmaW5lZCAgKFNUTTMyRjEwWF9DTCkgfHwgZGVmaW5lZCAgKFNUTTMyRjEwWF9IRF9WTCkKKyAjZGVmaW5lICBSQ0NfQUhCRU5SX0RNQTJFTiAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAyKSAgICAgICAgICAgIC8qITwgRE1BMiBjbG9jayBlbmFibGUgKi8KKyNlbmRpZgorCisjaWYgZGVmaW5lZCAoU1RNMzJGMTBYX0hEKSB8fCBkZWZpbmVkIChTVE0zMkYxMFhfWEwpCisgI2RlZmluZSAgUkNDX0FIQkVOUl9GU01DRU4gICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDEwMCkgICAgICAgICAgICAvKiE8IEZTTUMgY2xvY2sgZW5hYmxlICovCisgI2RlZmluZSAgUkNDX0FIQkVOUl9TRElPRU4gICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDQwMCkgICAgICAgICAgICAvKiE8IFNESU8gY2xvY2sgZW5hYmxlICovCisjZW5kaWYKKworI2lmIGRlZmluZWQgKFNUTTMyRjEwWF9IRF9WTCkKKyAjZGVmaW5lICBSQ0NfQUhCRU5SX0ZTTUNFTiAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMTAwKSAgICAgICAgICAgIC8qITwgRlNNQyBjbG9jayBlbmFibGUgKi8KKyNlbmRpZgorCisjaWZkZWYgU1RNMzJGMTBYX0NMCisgI2RlZmluZSAgUkNDX0FIQkVOUl9PVEdGU0VOICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDEwMDApICAgICAgICAgLyohPCBVU0IgT1RHIEZTIGNsb2NrIGVuYWJsZSAqLworICNkZWZpbmUgIFJDQ19BSEJFTlJfRVRITUFDRU4gICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA0MDAwKSAgICAgICAgIC8qITwgRVRIRVJORVQgTUFDIGNsb2NrIGVuYWJsZSAqLworICNkZWZpbmUgIFJDQ19BSEJFTlJfRVRITUFDVFhFTiAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKSAgICAgICAgIC8qITwgRVRIRVJORVQgTUFDIFR4IGNsb2NrIGVuYWJsZSAqLworICNkZWZpbmUgIFJDQ19BSEJFTlJfRVRITUFDUlhFTiAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDEwMDAwKSAgICAgICAgIC8qITwgRVRIRVJORVQgTUFDIFJ4IGNsb2NrIGVuYWJsZSAqLworI2VuZGlmIC8qIFNUTTMyRjEwWF9DTCAqLworCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgUkNDX0FQQjJFTlIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqLworI2RlZmluZSAgUkNDX0FQQjJFTlJfQUZJT0VOICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxKSAgICAgICAgIC8qITwgQWx0ZXJuYXRlIEZ1bmN0aW9uIEkvTyBjbG9jayBlbmFibGUgKi8KKyNkZWZpbmUgIFJDQ19BUEIyRU5SX0lPUEFFTiAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNCkgICAgICAgICAvKiE8IEkvTyBwb3J0IEEgY2xvY2sgZW5hYmxlICovCisjZGVmaW5lICBSQ0NfQVBCMkVOUl9JT1BCRU4gICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDgpICAgICAgICAgLyohPCBJL08gcG9ydCBCIGNsb2NrIGVuYWJsZSAqLworI2RlZmluZSAgUkNDX0FQQjJFTlJfSU9QQ0VOICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDEwKSAgICAgICAgIC8qITwgSS9PIHBvcnQgQyBjbG9jayBlbmFibGUgKi8KKyNkZWZpbmUgIFJDQ19BUEIyRU5SX0lPUERFTiAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAyMCkgICAgICAgICAvKiE8IEkvTyBwb3J0IEQgY2xvY2sgZW5hYmxlICovCisjZGVmaW5lICBSQ0NfQVBCMkVOUl9BREMxRU4gICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAyMDApICAgICAgICAgLyohPCBBREMgMSBpbnRlcmZhY2UgY2xvY2sgZW5hYmxlICovCisKKyNpZiAhZGVmaW5lZCAoU1RNMzJGMTBYX0xEX1ZMKSAmJiAhZGVmaW5lZCAoU1RNMzJGMTBYX01EX1ZMKSAmJiAhZGVmaW5lZCAoU1RNMzJGMTBYX0hEX1ZMKQorI2RlZmluZSAgUkNDX0FQQjJFTlJfQURDMkVOICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwNDAwKSAgICAgICAgIC8qITwgQURDIDIgaW50ZXJmYWNlIGNsb2NrIGVuYWJsZSAqLworI2VuZGlmCisKKyNkZWZpbmUgIFJDQ19BUEIyRU5SX1RJTTFFTiAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgICAgICAgICAvKiE8IFRJTTEgVGltZXIgY2xvY2sgZW5hYmxlICovCisjZGVmaW5lICBSQ0NfQVBCMkVOUl9TUEkxRU4gICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDEwMDApICAgICAgICAgLyohPCBTUEkgMSBjbG9jayBlbmFibGUgKi8KKyNkZWZpbmUgIFJDQ19BUEIyRU5SX1VTQVJUMUVOICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgICAgICAgICAvKiE8IFVTQVJUMSBjbG9jayBlbmFibGUgKi8KKworI2lmIGRlZmluZWQgKFNUTTMyRjEwWF9MRF9WTCkgfHwgZGVmaW5lZCAoU1RNMzJGMTBYX01EX1ZMKSB8fCBkZWZpbmVkIChTVE0zMkYxMFhfSERfVkwpCisjZGVmaW5lICBSQ0NfQVBCMkVOUl9USU0xNUVOICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMTAwMDApICAgICAgICAgLyohPCBUSU0xNSBUaW1lciBjbG9jayBlbmFibGUgKi8KKyNkZWZpbmUgIFJDQ19BUEIyRU5SX1RJTTE2RU4gICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkgICAgICAgICAvKiE8IFRJTTE2IFRpbWVyIGNsb2NrIGVuYWJsZSAqLworI2RlZmluZSAgUkNDX0FQQjJFTlJfVElNMTdFTiAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDQwMDAwKSAgICAgICAgIC8qITwgVElNMTcgVGltZXIgY2xvY2sgZW5hYmxlICovCisjZW5kaWYKKworI2lmICFkZWZpbmVkIChTVE0zMkYxMFhfTEQpICYmICFkZWZpbmVkIChTVE0zMkYxMFhfTERfVkwpCisgI2RlZmluZSAgUkNDX0FQQjJFTlJfSU9QRUVOICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwNDApICAgICAgICAgLyohPCBJL08gcG9ydCBFIGNsb2NrIGVuYWJsZSAqLworI2VuZGlmIC8qIFNUTTMyRjEwWF9MRCAmJiBTVE0zMkYxMFhfTERfVkwgKi8KKworI2lmIGRlZmluZWQgKFNUTTMyRjEwWF9IRCkgfHwgZGVmaW5lZCAoU1RNMzJGMTBYX1hMKQorICNkZWZpbmUgIFJDQ19BUEIyRU5SX0lPUEZFTiAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDgwKSAgICAgICAgIC8qITwgSS9PIHBvcnQgRiBjbG9jayBlbmFibGUgKi8KKyAjZGVmaW5lICBSQ0NfQVBCMkVOUl9JT1BHRU4gICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDEwMCkgICAgICAgICAvKiE8IEkvTyBwb3J0IEcgY2xvY2sgZW5hYmxlICovCisgI2RlZmluZSAgUkNDX0FQQjJFTlJfVElNOEVOICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAgICAgICAgLyohPCBUSU04IFRpbWVyIGNsb2NrIGVuYWJsZSAqLworICNkZWZpbmUgIFJDQ19BUEIyRU5SX0FEQzNFTiAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKSAgICAgICAgIC8qITwgRE1BMSBjbG9jayBlbmFibGUgKi8KKyNlbmRpZgorCisjaWYgZGVmaW5lZCAoU1RNMzJGMTBYX0hEX1ZMKQorICNkZWZpbmUgIFJDQ19BUEIyRU5SX0lPUEZFTiAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDgwKSAgICAgICAgIC8qITwgSS9PIHBvcnQgRiBjbG9jayBlbmFibGUgKi8KKyAjZGVmaW5lICBSQ0NfQVBCMkVOUl9JT1BHRU4gICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDEwMCkgICAgICAgICAvKiE8IEkvTyBwb3J0IEcgY2xvY2sgZW5hYmxlICovCisjZW5kaWYKKworI2lmZGVmIFNUTTMyRjEwWF9YTAorICNkZWZpbmUgIFJDQ19BUEIyRU5SX1RJTTlFTiAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDgwMDAwKSAgICAgICAgIC8qITwgVElNOSBUaW1lciBjbG9jayBlbmFibGUgICovCisgI2RlZmluZSAgUkNDX0FQQjJFTlJfVElNMTBFTiAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAxMDAwMDApICAgICAgICAgLyohPCBUSU0xMCBUaW1lciBjbG9jayBlbmFibGUgICovCisgI2RlZmluZSAgUkNDX0FQQjJFTlJfVElNMTFFTiAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAyMDAwMDApICAgICAgICAgLyohPCBUSU0xMSBUaW1lciBjbG9jayBlbmFibGUgKi8KKyNlbmRpZgorCisvKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBSQ0NfQVBCMUVOUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgUkNDX0FQQjFFTlJfVElNMkVOICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxKSAgICAgICAgLyohPCBUaW1lciAyIGNsb2NrIGVuYWJsZWQqLworI2RlZmluZSAgUkNDX0FQQjFFTlJfVElNM0VOICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAyKSAgICAgICAgLyohPCBUaW1lciAzIGNsb2NrIGVuYWJsZSAqLworI2RlZmluZSAgUkNDX0FQQjFFTlJfV1dER0VOICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwODAwKSAgICAgICAgLyohPCBXaW5kb3cgV2F0Y2hkb2cgY2xvY2sgZW5hYmxlICovCisjZGVmaW5lICBSQ0NfQVBCMUVOUl9VU0FSVDJFTiAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMjAwMDApICAgICAgICAvKiE8IFVTQVJUIDIgY2xvY2sgZW5hYmxlICovCisjZGVmaW5lICBSQ0NfQVBCMUVOUl9JMkMxRU4gICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAyMDAwMDApICAgICAgICAvKiE8IEkyQyAxIGNsb2NrIGVuYWJsZSAqLworCisjaWYgIWRlZmluZWQgKFNUTTMyRjEwWF9MRF9WTCkgJiYgIWRlZmluZWQgKFNUTTMyRjEwWF9NRF9WTCkgJiYgIWRlZmluZWQgKFNUTTMyRjEwWF9IRF9WTCkKKyNkZWZpbmUgIFJDQ19BUEIxRU5SX0NBTjFFTiAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMjAwMDAwMCkgICAgICAgIC8qITwgQ0FOMSBjbG9jayBlbmFibGUgKi8KKyNlbmRpZgorCisjZGVmaW5lICBSQ0NfQVBCMUVOUl9CS1BFTiAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDgwMDAwMDApICAgICAgICAvKiE8IEJhY2t1cCBpbnRlcmZhY2UgY2xvY2sgZW5hYmxlICovCisjZGVmaW5lICBSQ0NfQVBCMUVOUl9QV1JFTiAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwMDApICAgICAgICAvKiE8IFBvd2VyIGludGVyZmFjZSBjbG9jayBlbmFibGUgKi8KKworI2lmICFkZWZpbmVkIChTVE0zMkYxMFhfTEQpICYmICFkZWZpbmVkIChTVE0zMkYxMFhfTERfVkwpCisgI2RlZmluZSAgUkNDX0FQQjFFTlJfVElNNEVOICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDQpICAgICAgICAvKiE8IFRpbWVyIDQgY2xvY2sgZW5hYmxlICovCisgI2RlZmluZSAgUkNDX0FQQjFFTlJfU1BJMkVOICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDQwMDApICAgICAgICAvKiE8IFNQSSAyIGNsb2NrIGVuYWJsZSAqLworICNkZWZpbmUgIFJDQ19BUEIxRU5SX1VTQVJUM0VOICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDQwMDAwKSAgICAgICAgLyohPCBVU0FSVCAzIGNsb2NrIGVuYWJsZSAqLworICNkZWZpbmUgIFJDQ19BUEIxRU5SX0kyQzJFTiAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwNDAwMDAwKSAgICAgICAgLyohPCBJMkMgMiBjbG9jayBlbmFibGUgKi8KKyNlbmRpZiAvKiBTVE0zMkYxMFhfTEQgJiYgU1RNMzJGMTBYX0xEX1ZMICovCisKKyNpZiBkZWZpbmVkIChTVE0zMkYxMFhfSEQpIHx8IGRlZmluZWQgKFNUTTMyRjEwWF9NRCkgfHwgZGVmaW5lZCAgKFNUTTMyRjEwWF9MRCkKKyAjZGVmaW5lICBSQ0NfQVBCMUVOUl9VU0JFTiAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDgwMDAwMCkgICAgICAgIC8qITwgVVNCIERldmljZSBjbG9jayBlbmFibGUgKi8KKyNlbmRpZgorCisjaWYgZGVmaW5lZCAoU1RNMzJGMTBYX0hEKSB8fCBkZWZpbmVkICAoU1RNMzJGMTBYX0NMKQorICNkZWZpbmUgIFJDQ19BUEIxRU5SX1RJTTVFTiAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA4KSAgICAgICAgLyohPCBUaW1lciA1IGNsb2NrIGVuYWJsZSAqLworICNkZWZpbmUgIFJDQ19BUEIxRU5SX1RJTTZFTiAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDEwKSAgICAgICAgLyohPCBUaW1lciA2IGNsb2NrIGVuYWJsZSAqLworICNkZWZpbmUgIFJDQ19BUEIxRU5SX1RJTTdFTiAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKSAgICAgICAgLyohPCBUaW1lciA3IGNsb2NrIGVuYWJsZSAqLworICNkZWZpbmUgIFJDQ19BUEIxRU5SX1NQSTNFTiAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKSAgICAgICAgLyohPCBTUEkgMyBjbG9jayBlbmFibGUgKi8KKyAjZGVmaW5lICBSQ0NfQVBCMUVOUl9VQVJUNEVOICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA4MDAwMCkgICAgICAgIC8qITwgVUFSVCA0IGNsb2NrIGVuYWJsZSAqLworICNkZWZpbmUgIFJDQ19BUEIxRU5SX1VBUlQ1RU4gICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMTAwMDAwKSAgICAgICAgLyohPCBVQVJUIDUgY2xvY2sgZW5hYmxlICovCisgI2RlZmluZSAgUkNDX0FQQjFFTlJfREFDRU4gICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MjAwMDAwMDApICAgICAgICAvKiE8IERBQyBpbnRlcmZhY2UgY2xvY2sgZW5hYmxlICovCisjZW5kaWYKKworI2lmIGRlZmluZWQgKFNUTTMyRjEwWF9MRF9WTCkgfHwgZGVmaW5lZCAgKFNUTTMyRjEwWF9NRF9WTCkgfHwgZGVmaW5lZCAgKFNUTTMyRjEwWF9IRF9WTCkKKyAjZGVmaW5lICBSQ0NfQVBCMUVOUl9USU02RU4gICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAxMCkgICAgICAgIC8qITwgVGltZXIgNiBjbG9jayBlbmFibGUgKi8KKyAjZGVmaW5lICBSQ0NfQVBCMUVOUl9USU03RU4gICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAyMCkgICAgICAgIC8qITwgVGltZXIgNyBjbG9jayBlbmFibGUgKi8KKyAjZGVmaW5lICBSQ0NfQVBCMUVOUl9EQUNFTiAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgyMDAwMDAwMCkgICAgICAgIC8qITwgREFDIGludGVyZmFjZSBjbG9jayBlbmFibGUgKi8KKyAjZGVmaW5lICBSQ0NfQVBCMUVOUl9DRUNFTiAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHg0MDAwMDAwMCkgICAgICAgIC8qITwgQ0VDIGludGVyZmFjZSBjbG9jayBlbmFibGUgKi8gCisjZW5kaWYKKworI2lmZGVmIFNUTTMyRjEwWF9IRF9WTAorICNkZWZpbmUgIFJDQ19BUEIxRU5SX1RJTTVFTiAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA4KSAgICAgICAgLyohPCBUaW1lciA1IGNsb2NrIGVuYWJsZSAqLworICNkZWZpbmUgIFJDQ19BUEIxRU5SX1RJTTEyRU4gICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDQwKSAgICAgICAgIC8qITwgVElNMTIgVGltZXIgY2xvY2sgZW5hYmxlICAqLworICNkZWZpbmUgIFJDQ19BUEIxRU5SX1RJTTEzRU4gICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDgwKSAgICAgICAgIC8qITwgVElNMTMgVGltZXIgY2xvY2sgZW5hYmxlICAqLworICNkZWZpbmUgIFJDQ19BUEIxRU5SX1RJTTE0RU4gICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKSAgICAgICAgIC8qITwgVElNMTQgVGltZXIgY2xvY2sgZW5hYmxlICovCisgI2RlZmluZSAgUkNDX0FQQjFFTlJfU1BJM0VOICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDgwMDApICAgICAgICAvKiE8IFNQSSAzIGNsb2NrIGVuYWJsZSAqLworICNkZWZpbmUgIFJDQ19BUEIxRU5SX1VBUlQ0RU4gICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDgwMDAwKSAgICAgICAgLyohPCBVQVJUIDQgY2xvY2sgZW5hYmxlICovCisgI2RlZmluZSAgUkNDX0FQQjFFTlJfVUFSVDVFTiAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAxMDAwMDApICAgICAgICAvKiE8IFVBUlQgNSBjbG9jayBlbmFibGUgKi8gCisjZW5kaWYgLyogU1RNMzJGMTBYX0hEX1ZMICovCisKKyNpZmRlZiBTVE0zMkYxMFhfQ0wKKyAjZGVmaW5lICBSQ0NfQVBCMUVOUl9DQU4yRU4gICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDQwMDAwMDApICAgICAgICAvKiE8IENBTjIgY2xvY2sgZW5hYmxlICovCisjZW5kaWYgLyogU1RNMzJGMTBYX0NMICovCisKKyNpZmRlZiBTVE0zMkYxMFhfWEwKKyAjZGVmaW5lICBSQ0NfQVBCMUVOUl9USU0xMkVOICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgICAgICAgICAvKiE8IFRJTTEyIFRpbWVyIGNsb2NrIGVuYWJsZSAgKi8KKyAjZGVmaW5lICBSQ0NfQVBCMUVOUl9USU0xM0VOICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA4MCkgICAgICAgICAvKiE8IFRJTTEzIFRpbWVyIGNsb2NrIGVuYWJsZSAgKi8KKyAjZGVmaW5lICBSQ0NfQVBCMUVOUl9USU0xNEVOICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDEwMCkgICAgICAgICAvKiE8IFRJTTE0IFRpbWVyIGNsb2NrIGVuYWJsZSAqLworI2VuZGlmIC8qIFNUTTMyRjEwWF9YTCAqLworCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFJDQ19CRENSIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgUkNDX0JEQ1JfTFNFT04gICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxKSAgICAgICAgLyohPCBFeHRlcm5hbCBMb3cgU3BlZWQgb3NjaWxsYXRvciBlbmFibGUgKi8KKyNkZWZpbmUgIFJDQ19CRENSX0xTRVJEWSAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMikgICAgICAgIC8qITwgRXh0ZXJuYWwgTG93IFNwZWVkIG9zY2lsbGF0b3IgUmVhZHkgKi8KKyNkZWZpbmUgIFJDQ19CRENSX0xTRUJZUCAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNCkgICAgICAgIC8qITwgRXh0ZXJuYWwgTG93IFNwZWVkIG9zY2lsbGF0b3IgQnlwYXNzICovCisKKyNkZWZpbmUgIFJDQ19CRENSX1JUQ1NFTCAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDMwMCkgICAgICAgIC8qITwgUlRDU0VMWzE6MF0gYml0cyAoUlRDIGNsb2NrIHNvdXJjZSBzZWxlY3Rpb24pICovCisjZGVmaW5lICBSQ0NfQkRDUl9SVENTRUxfMCAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAxMDApICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBSQ0NfQkRDUl9SVENTRUxfMSAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAyMDApICAgICAgICAvKiE8IEJpdCAxICovCisKKy8qITwgUlRDIGNvbmdpZ3VyYXRpb24gKi8KKyNkZWZpbmUgIFJDQ19CRENSX1JUQ1NFTF9OT0NMT0NLICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMCkgICAgICAgIC8qITwgTm8gY2xvY2sgKi8KKyNkZWZpbmUgIFJDQ19CRENSX1JUQ1NFTF9MU0UgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDEwMCkgICAgICAgIC8qITwgTFNFIG9zY2lsbGF0b3IgY2xvY2sgdXNlZCBhcyBSVEMgY2xvY2sgKi8KKyNkZWZpbmUgIFJDQ19CRENSX1JUQ1NFTF9MU0kgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkgICAgICAgIC8qITwgTFNJIG9zY2lsbGF0b3IgY2xvY2sgdXNlZCBhcyBSVEMgY2xvY2sgKi8KKyNkZWZpbmUgIFJDQ19CRENSX1JUQ1NFTF9IU0UgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDMwMCkgICAgICAgIC8qITwgSFNFIG9zY2lsbGF0b3IgY2xvY2sgZGl2aWRlZCBieSAxMjggdXNlZCBhcyBSVEMgY2xvY2sgKi8KKworI2RlZmluZSAgUkNDX0JEQ1JfUlRDRU4gICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKSAgICAgICAgLyohPCBSVEMgY2xvY2sgZW5hYmxlICovCisjZGVmaW5lICBSQ0NfQkRDUl9CRFJTVCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMTAwMDApICAgICAgICAvKiE8IEJhY2t1cCBkb21haW4gc29mdHdhcmUgcmVzZXQgICovCisKKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgUkNDX0NTUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKiovICAKKyNkZWZpbmUgIFJDQ19DU1JfTFNJT04gICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgICAgICAgIC8qITwgSW50ZXJuYWwgTG93IFNwZWVkIG9zY2lsbGF0b3IgZW5hYmxlICovCisjZGVmaW5lICBSQ0NfQ1NSX0xTSVJEWSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IEludGVybmFsIExvdyBTcGVlZCBvc2NpbGxhdG9yIFJlYWR5ICovCisjZGVmaW5lICBSQ0NfQ1NSX1JNVkYgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDEwMDAwMDApICAgICAgICAvKiE8IFJlbW92ZSByZXNldCBmbGFnICovCisjZGVmaW5lICBSQ0NfQ1NSX1BJTlJTVEYgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDQwMDAwMDApICAgICAgICAvKiE8IFBJTiByZXNldCBmbGFnICovCisjZGVmaW5lICBSQ0NfQ1NSX1BPUlJTVEYgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDgwMDAwMDApICAgICAgICAvKiE8IFBPUi9QRFIgcmVzZXQgZmxhZyAqLworI2RlZmluZSAgUkNDX0NTUl9TRlRSU1RGICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDEwMDAwMDAwKSAgICAgICAgLyohPCBTb2Z0d2FyZSBSZXNldCBmbGFnICovCisjZGVmaW5lICBSQ0NfQ1NSX0lXREdSU1RGICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MjAwMDAwMDApICAgICAgICAvKiE8IEluZGVwZW5kZW50IFdhdGNoZG9nIHJlc2V0IGZsYWcgKi8KKyNkZWZpbmUgIFJDQ19DU1JfV1dER1JTVEYgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHg0MDAwMDAwMCkgICAgICAgIC8qITwgV2luZG93IHdhdGNoZG9nIHJlc2V0IGZsYWcgKi8KKyNkZWZpbmUgIFJDQ19DU1JfTFBXUlJTVEYgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHg4MDAwMDAwMCkgICAgICAgIC8qITwgTG93LVBvd2VyIHJlc2V0IGZsYWcgKi8KKworI2lmZGVmIFNUTTMyRjEwWF9DTAorLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBSQ0NfQUhCUlNUUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKi8KKyAjZGVmaW5lICBSQ0NfQUhCUlNUUl9PVEdGU1JTVCAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMTAwMCkgICAgICAgICAvKiE8IFVTQiBPVEcgRlMgcmVzZXQgKi8KKyAjZGVmaW5lICBSQ0NfQUhCUlNUUl9FVEhNQUNSU1QgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgICAgICAgICAvKiE8IEVUSEVSTkVUIE1BQyByZXNldCAqLworCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFJDQ19DRkdSMiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqLworLyohPCBQUkVESVYxIGNvbmZpZ3VyYXRpb24gKi8KKyAjZGVmaW5lICBSQ0NfQ0ZHUjJfUFJFRElWMSAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwRikgICAgICAgIC8qITwgUFJFRElWMVszOjBdIGJpdHMgKi8KKyAjZGVmaW5lICBSQ0NfQ0ZHUjJfUFJFRElWMV8wICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgICAgICAgIC8qITwgQml0IDAgKi8KKyAjZGVmaW5lICBSQ0NfQ0ZHUjJfUFJFRElWMV8xICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMikgICAgICAgIC8qITwgQml0IDEgKi8KKyAjZGVmaW5lICBSQ0NfQ0ZHUjJfUFJFRElWMV8yICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNCkgICAgICAgIC8qITwgQml0IDIgKi8KKyAjZGVmaW5lICBSQ0NfQ0ZHUjJfUFJFRElWMV8zICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgICAgICAgIC8qITwgQml0IDMgKi8KKworICNkZWZpbmUgIFJDQ19DRkdSMl9QUkVESVYxX0RJVjEgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAwKSAgICAgICAgLyohPCBQUkVESVYxIGlucHV0IGNsb2NrIG5vdCBkaXZpZGVkICovCisgI2RlZmluZSAgUkNDX0NGR1IyX1BSRURJVjFfRElWMiAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDEpICAgICAgICAvKiE8IFBSRURJVjEgaW5wdXQgY2xvY2sgZGl2aWRlZCBieSAyICovCisgI2RlZmluZSAgUkNDX0NGR1IyX1BSRURJVjFfRElWMyAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IFBSRURJVjEgaW5wdXQgY2xvY2sgZGl2aWRlZCBieSAzICovCisgI2RlZmluZSAgUkNDX0NGR1IyX1BSRURJVjFfRElWNCAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDMpICAgICAgICAvKiE8IFBSRURJVjEgaW5wdXQgY2xvY2sgZGl2aWRlZCBieSA0ICovCisgI2RlZmluZSAgUkNDX0NGR1IyX1BSRURJVjFfRElWNSAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDQpICAgICAgICAvKiE8IFBSRURJVjEgaW5wdXQgY2xvY2sgZGl2aWRlZCBieSA1ICovCisgI2RlZmluZSAgUkNDX0NGR1IyX1BSRURJVjFfRElWNiAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDUpICAgICAgICAvKiE8IFBSRURJVjEgaW5wdXQgY2xvY2sgZGl2aWRlZCBieSA2ICovCisgI2RlZmluZSAgUkNDX0NGR1IyX1BSRURJVjFfRElWNyAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDYpICAgICAgICAvKiE8IFBSRURJVjEgaW5wdXQgY2xvY2sgZGl2aWRlZCBieSA3ICovCisgI2RlZmluZSAgUkNDX0NGR1IyX1BSRURJVjFfRElWOCAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDcpICAgICAgICAvKiE8IFBSRURJVjEgaW5wdXQgY2xvY2sgZGl2aWRlZCBieSA4ICovCisgI2RlZmluZSAgUkNDX0NGR1IyX1BSRURJVjFfRElWOSAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDgpICAgICAgICAvKiE8IFBSRURJVjEgaW5wdXQgY2xvY2sgZGl2aWRlZCBieSA5ICovCisgI2RlZmluZSAgUkNDX0NGR1IyX1BSRURJVjFfRElWMTAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDkpICAgICAgICAvKiE8IFBSRURJVjEgaW5wdXQgY2xvY2sgZGl2aWRlZCBieSAxMCAqLworICNkZWZpbmUgIFJDQ19DRkdSMl9QUkVESVYxX0RJVjExICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDBBKSAgICAgICAgLyohPCBQUkVESVYxIGlucHV0IGNsb2NrIGRpdmlkZWQgYnkgMTEgKi8KKyAjZGVmaW5lICBSQ0NfQ0ZHUjJfUFJFRElWMV9ESVYxMiAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwQikgICAgICAgIC8qITwgUFJFRElWMSBpbnB1dCBjbG9jayBkaXZpZGVkIGJ5IDEyICovCisgI2RlZmluZSAgUkNDX0NGR1IyX1BSRURJVjFfRElWMTMgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMEMpICAgICAgICAvKiE8IFBSRURJVjEgaW5wdXQgY2xvY2sgZGl2aWRlZCBieSAxMyAqLworICNkZWZpbmUgIFJDQ19DRkdSMl9QUkVESVYxX0RJVjE0ICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDBEKSAgICAgICAgLyohPCBQUkVESVYxIGlucHV0IGNsb2NrIGRpdmlkZWQgYnkgMTQgKi8KKyAjZGVmaW5lICBSQ0NfQ0ZHUjJfUFJFRElWMV9ESVYxNSAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwRSkgICAgICAgIC8qITwgUFJFRElWMSBpbnB1dCBjbG9jayBkaXZpZGVkIGJ5IDE1ICovCisgI2RlZmluZSAgUkNDX0NGR1IyX1BSRURJVjFfRElWMTYgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMEYpICAgICAgICAvKiE8IFBSRURJVjEgaW5wdXQgY2xvY2sgZGl2aWRlZCBieSAxNiAqLworCisvKiE8IFBSRURJVjIgY29uZmlndXJhdGlvbiAqLworICNkZWZpbmUgIFJDQ19DRkdSMl9QUkVESVYyICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMEYwKSAgICAgICAgLyohPCBQUkVESVYyWzM6MF0gYml0cyAqLworICNkZWZpbmUgIFJDQ19DRkdSMl9QUkVESVYyXzAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDEwKSAgICAgICAgLyohPCBCaXQgMCAqLworICNkZWZpbmUgIFJDQ19DRkdSMl9QUkVESVYyXzEgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKSAgICAgICAgLyohPCBCaXQgMSAqLworICNkZWZpbmUgIFJDQ19DRkdSMl9QUkVESVYyXzIgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDQwKSAgICAgICAgLyohPCBCaXQgMiAqLworICNkZWZpbmUgIFJDQ19DRkdSMl9QUkVESVYyXzMgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDgwKSAgICAgICAgLyohPCBCaXQgMyAqLworCisgI2RlZmluZSAgUkNDX0NGR1IyX1BSRURJVjJfRElWMSAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDApICAgICAgICAvKiE8IFBSRURJVjIgaW5wdXQgY2xvY2sgbm90IGRpdmlkZWQgKi8KKyAjZGVmaW5lICBSQ0NfQ0ZHUjJfUFJFRElWMl9ESVYyICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAxMCkgICAgICAgIC8qITwgUFJFRElWMiBpbnB1dCBjbG9jayBkaXZpZGVkIGJ5IDIgKi8KKyAjZGVmaW5lICBSQ0NfQ0ZHUjJfUFJFRElWMl9ESVYzICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAyMCkgICAgICAgIC8qITwgUFJFRElWMiBpbnB1dCBjbG9jayBkaXZpZGVkIGJ5IDMgKi8KKyAjZGVmaW5lICBSQ0NfQ0ZHUjJfUFJFRElWMl9ESVY0ICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAzMCkgICAgICAgIC8qITwgUFJFRElWMiBpbnB1dCBjbG9jayBkaXZpZGVkIGJ5IDQgKi8KKyAjZGVmaW5lICBSQ0NfQ0ZHUjJfUFJFRElWMl9ESVY1ICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgICAgICAgIC8qITwgUFJFRElWMiBpbnB1dCBjbG9jayBkaXZpZGVkIGJ5IDUgKi8KKyAjZGVmaW5lICBSQ0NfQ0ZHUjJfUFJFRElWMl9ESVY2ICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA1MCkgICAgICAgIC8qITwgUFJFRElWMiBpbnB1dCBjbG9jayBkaXZpZGVkIGJ5IDYgKi8KKyAjZGVmaW5lICBSQ0NfQ0ZHUjJfUFJFRElWMl9ESVY3ICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA2MCkgICAgICAgIC8qITwgUFJFRElWMiBpbnB1dCBjbG9jayBkaXZpZGVkIGJ5IDcgKi8KKyAjZGVmaW5lICBSQ0NfQ0ZHUjJfUFJFRElWMl9ESVY4ICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA3MCkgICAgICAgIC8qITwgUFJFRElWMiBpbnB1dCBjbG9jayBkaXZpZGVkIGJ5IDggKi8KKyAjZGVmaW5lICBSQ0NfQ0ZHUjJfUFJFRElWMl9ESVY5ICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA4MCkgICAgICAgIC8qITwgUFJFRElWMiBpbnB1dCBjbG9jayBkaXZpZGVkIGJ5IDkgKi8KKyAjZGVmaW5lICBSQ0NfQ0ZHUjJfUFJFRElWMl9ESVYxMCAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA5MCkgICAgICAgIC8qITwgUFJFRElWMiBpbnB1dCBjbG9jayBkaXZpZGVkIGJ5IDEwICovCisgI2RlZmluZSAgUkNDX0NGR1IyX1BSRURJVjJfRElWMTEgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwQTApICAgICAgICAvKiE8IFBSRURJVjIgaW5wdXQgY2xvY2sgZGl2aWRlZCBieSAxMSAqLworICNkZWZpbmUgIFJDQ19DRkdSMl9QUkVESVYyX0RJVjEyICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMEIwKSAgICAgICAgLyohPCBQUkVESVYyIGlucHV0IGNsb2NrIGRpdmlkZWQgYnkgMTIgKi8KKyAjZGVmaW5lICBSQ0NfQ0ZHUjJfUFJFRElWMl9ESVYxMyAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDBDMCkgICAgICAgIC8qITwgUFJFRElWMiBpbnB1dCBjbG9jayBkaXZpZGVkIGJ5IDEzICovCisgI2RlZmluZSAgUkNDX0NGR1IyX1BSRURJVjJfRElWMTQgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwRDApICAgICAgICAvKiE8IFBSRURJVjIgaW5wdXQgY2xvY2sgZGl2aWRlZCBieSAxNCAqLworICNkZWZpbmUgIFJDQ19DRkdSMl9QUkVESVYyX0RJVjE1ICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMEUwKSAgICAgICAgLyohPCBQUkVESVYyIGlucHV0IGNsb2NrIGRpdmlkZWQgYnkgMTUgKi8KKyAjZGVmaW5lICBSQ0NfQ0ZHUjJfUFJFRElWMl9ESVYxNiAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDBGMCkgICAgICAgIC8qITwgUFJFRElWMiBpbnB1dCBjbG9jayBkaXZpZGVkIGJ5IDE2ICovCisKKy8qITwgUExMMk1VTCBjb25maWd1cmF0aW9uICovCisgI2RlZmluZSAgUkNDX0NGR1IyX1BMTDJNVUwgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDBGMDApICAgICAgICAvKiE8IFBMTDJNVUxbMzowXSBiaXRzICovCisgI2RlZmluZSAgUkNDX0NGR1IyX1BMTDJNVUxfMCAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAxMDApICAgICAgICAvKiE8IEJpdCAwICovCisgI2RlZmluZSAgUkNDX0NGR1IyX1BMTDJNVUxfMSAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAyMDApICAgICAgICAvKiE8IEJpdCAxICovCisgI2RlZmluZSAgUkNDX0NGR1IyX1BMTDJNVUxfMiAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApICAgICAgICAvKiE8IEJpdCAyICovCisgI2RlZmluZSAgUkNDX0NGR1IyX1BMTDJNVUxfMyAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA4MDApICAgICAgICAvKiE8IEJpdCAzICovCisKKyAjZGVmaW5lICBSQ0NfQ0ZHUjJfUExMMk1VTDggICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDYwMCkgICAgICAgIC8qITwgUExMMiBpbnB1dCBjbG9jayAqIDggKi8KKyAjZGVmaW5lICBSQ0NfQ0ZHUjJfUExMMk1VTDkgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDcwMCkgICAgICAgIC8qITwgUExMMiBpbnB1dCBjbG9jayAqIDkgKi8KKyAjZGVmaW5lICBSQ0NfQ0ZHUjJfUExMMk1VTDEwICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgICAgICAgIC8qITwgUExMMiBpbnB1dCBjbG9jayAqIDEwICovCisgI2RlZmluZSAgUkNDX0NGR1IyX1BMTDJNVUwxMSAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA5MDApICAgICAgICAvKiE8IFBMTDIgaW5wdXQgY2xvY2sgKiAxMSAqLworICNkZWZpbmUgIFJDQ19DRkdSMl9QTEwyTVVMMTIgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwQTAwKSAgICAgICAgLyohPCBQTEwyIGlucHV0IGNsb2NrICogMTIgKi8KKyAjZGVmaW5lICBSQ0NfQ0ZHUjJfUExMMk1VTDEzICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMEIwMCkgICAgICAgIC8qITwgUExMMiBpbnB1dCBjbG9jayAqIDEzICovCisgI2RlZmluZSAgUkNDX0NGR1IyX1BMTDJNVUwxNCAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDBDMDApICAgICAgICAvKiE8IFBMTDIgaW5wdXQgY2xvY2sgKiAxNCAqLworICNkZWZpbmUgIFJDQ19DRkdSMl9QTEwyTVVMMTYgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwRTAwKSAgICAgICAgLyohPCBQTEwyIGlucHV0IGNsb2NrICogMTYgKi8KKyAjZGVmaW5lICBSQ0NfQ0ZHUjJfUExMMk1VTDIwICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMEYwMCkgICAgICAgIC8qITwgUExMMiBpbnB1dCBjbG9jayAqIDIwICovCisKKy8qITwgUExMM01VTCBjb25maWd1cmF0aW9uICovCisgI2RlZmluZSAgUkNDX0NGR1IyX1BMTDNNVUwgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMEYwMDApICAgICAgICAvKiE8IFBMTDNNVUxbMzowXSBiaXRzICovCisgI2RlZmluZSAgUkNDX0NGR1IyX1BMTDNNVUxfMCAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDEwMDApICAgICAgICAvKiE8IEJpdCAwICovCisgI2RlZmluZSAgUkNDX0NGR1IyX1BMTDNNVUxfMSAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAgICAgICAvKiE8IEJpdCAxICovCisgI2RlZmluZSAgUkNDX0NGR1IyX1BMTDNNVUxfMiAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDQwMDApICAgICAgICAvKiE8IEJpdCAyICovCisgI2RlZmluZSAgUkNDX0NGR1IyX1BMTDNNVUxfMyAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDgwMDApICAgICAgICAvKiE8IEJpdCAzICovCisKKyAjZGVmaW5lICBSQ0NfQ0ZHUjJfUExMM01VTDggICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNjAwMCkgICAgICAgIC8qITwgUExMMyBpbnB1dCBjbG9jayAqIDggKi8KKyAjZGVmaW5lICBSQ0NfQ0ZHUjJfUExMM01VTDkgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNzAwMCkgICAgICAgIC8qITwgUExMMyBpbnB1dCBjbG9jayAqIDkgKi8KKyAjZGVmaW5lICBSQ0NfQ0ZHUjJfUExMM01VTDEwICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwODAwMCkgICAgICAgIC8qITwgUExMMyBpbnB1dCBjbG9jayAqIDEwICovCisgI2RlZmluZSAgUkNDX0NGR1IyX1BMTDNNVUwxMSAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDkwMDApICAgICAgICAvKiE8IFBMTDMgaW5wdXQgY2xvY2sgKiAxMSAqLworICNkZWZpbmUgIFJDQ19DRkdSMl9QTEwzTVVMMTIgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDBBMDAwKSAgICAgICAgLyohPCBQTEwzIGlucHV0IGNsb2NrICogMTIgKi8KKyAjZGVmaW5lICBSQ0NfQ0ZHUjJfUExMM01VTDEzICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwQjAwMCkgICAgICAgIC8qITwgUExMMyBpbnB1dCBjbG9jayAqIDEzICovCisgI2RlZmluZSAgUkNDX0NGR1IyX1BMTDNNVUwxNCAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMEMwMDApICAgICAgICAvKiE8IFBMTDMgaW5wdXQgY2xvY2sgKiAxNCAqLworICNkZWZpbmUgIFJDQ19DRkdSMl9QTEwzTVVMMTYgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDBFMDAwKSAgICAgICAgLyohPCBQTEwzIGlucHV0IGNsb2NrICogMTYgKi8KKyAjZGVmaW5lICBSQ0NfQ0ZHUjJfUExMM01VTDIwICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwRjAwMCkgICAgICAgIC8qITwgUExMMyBpbnB1dCBjbG9jayAqIDIwICovCisKKyAjZGVmaW5lICBSQ0NfQ0ZHUjJfUFJFRElWMVNSQyAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAxMDAwMCkgICAgICAgIC8qITwgUFJFRElWMSBlbnRyeSBjbG9jayBzb3VyY2UgKi8KKyAjZGVmaW5lICBSQ0NfQ0ZHUjJfUFJFRElWMVNSQ19QTEwyICAgICAgICAgICgodWludDMyX3QpMHgwMDAxMDAwMCkgICAgICAgIC8qITwgUExMMiBzZWxlY3RlZCBhcyBQUkVESVYxIGVudHJ5IGNsb2NrIHNvdXJjZSAqLworICNkZWZpbmUgIFJDQ19DRkdSMl9QUkVESVYxU1JDX0hTRSAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAwKSAgICAgICAgLyohPCBIU0Ugc2VsZWN0ZWQgYXMgUFJFRElWMSBlbnRyeSBjbG9jayBzb3VyY2UgKi8KKyAjZGVmaW5lICBSQ0NfQ0ZHUjJfSTJTMlNSQyAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkgICAgICAgIC8qITwgSTJTMiBlbnRyeSBjbG9jayBzb3VyY2UgKi8KKyAjZGVmaW5lICBSQ0NfQ0ZHUjJfSTJTM1NSQyAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA0MDAwMCkgICAgICAgIC8qITwgSTJTMyBjbG9jayBzb3VyY2UgKi8KKyNlbmRpZiAvKiBTVE0zMkYxMFhfQ0wgKi8KKworI2lmIGRlZmluZWQgKFNUTTMyRjEwWF9MRF9WTCkgfHwgZGVmaW5lZCAoU1RNMzJGMTBYX01EX1ZMKSB8fCBkZWZpbmVkIChTVE0zMkYxMFhfSERfVkwpCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFJDQ19DRkdSMiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqLworLyohPCBQUkVESVYxIGNvbmZpZ3VyYXRpb24gKi8KKyAjZGVmaW5lICBSQ0NfQ0ZHUjJfUFJFRElWMSAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwRikgICAgICAgIC8qITwgUFJFRElWMVszOjBdIGJpdHMgKi8KKyAjZGVmaW5lICBSQ0NfQ0ZHUjJfUFJFRElWMV8wICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgICAgICAgIC8qITwgQml0IDAgKi8KKyAjZGVmaW5lICBSQ0NfQ0ZHUjJfUFJFRElWMV8xICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMikgICAgICAgIC8qITwgQml0IDEgKi8KKyAjZGVmaW5lICBSQ0NfQ0ZHUjJfUFJFRElWMV8yICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNCkgICAgICAgIC8qITwgQml0IDIgKi8KKyAjZGVmaW5lICBSQ0NfQ0ZHUjJfUFJFRElWMV8zICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgICAgICAgIC8qITwgQml0IDMgKi8KKworICNkZWZpbmUgIFJDQ19DRkdSMl9QUkVESVYxX0RJVjEgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAwKSAgICAgICAgLyohPCBQUkVESVYxIGlucHV0IGNsb2NrIG5vdCBkaXZpZGVkICovCisgI2RlZmluZSAgUkNDX0NGR1IyX1BSRURJVjFfRElWMiAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDEpICAgICAgICAvKiE8IFBSRURJVjEgaW5wdXQgY2xvY2sgZGl2aWRlZCBieSAyICovCisgI2RlZmluZSAgUkNDX0NGR1IyX1BSRURJVjFfRElWMyAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IFBSRURJVjEgaW5wdXQgY2xvY2sgZGl2aWRlZCBieSAzICovCisgI2RlZmluZSAgUkNDX0NGR1IyX1BSRURJVjFfRElWNCAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDMpICAgICAgICAvKiE8IFBSRURJVjEgaW5wdXQgY2xvY2sgZGl2aWRlZCBieSA0ICovCisgI2RlZmluZSAgUkNDX0NGR1IyX1BSRURJVjFfRElWNSAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDQpICAgICAgICAvKiE8IFBSRURJVjEgaW5wdXQgY2xvY2sgZGl2aWRlZCBieSA1ICovCisgI2RlZmluZSAgUkNDX0NGR1IyX1BSRURJVjFfRElWNiAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDUpICAgICAgICAvKiE8IFBSRURJVjEgaW5wdXQgY2xvY2sgZGl2aWRlZCBieSA2ICovCisgI2RlZmluZSAgUkNDX0NGR1IyX1BSRURJVjFfRElWNyAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDYpICAgICAgICAvKiE8IFBSRURJVjEgaW5wdXQgY2xvY2sgZGl2aWRlZCBieSA3ICovCisgI2RlZmluZSAgUkNDX0NGR1IyX1BSRURJVjFfRElWOCAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDcpICAgICAgICAvKiE8IFBSRURJVjEgaW5wdXQgY2xvY2sgZGl2aWRlZCBieSA4ICovCisgI2RlZmluZSAgUkNDX0NGR1IyX1BSRURJVjFfRElWOSAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDgpICAgICAgICAvKiE8IFBSRURJVjEgaW5wdXQgY2xvY2sgZGl2aWRlZCBieSA5ICovCisgI2RlZmluZSAgUkNDX0NGR1IyX1BSRURJVjFfRElWMTAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDkpICAgICAgICAvKiE8IFBSRURJVjEgaW5wdXQgY2xvY2sgZGl2aWRlZCBieSAxMCAqLworICNkZWZpbmUgIFJDQ19DRkdSMl9QUkVESVYxX0RJVjExICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDBBKSAgICAgICAgLyohPCBQUkVESVYxIGlucHV0IGNsb2NrIGRpdmlkZWQgYnkgMTEgKi8KKyAjZGVmaW5lICBSQ0NfQ0ZHUjJfUFJFRElWMV9ESVYxMiAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwQikgICAgICAgIC8qITwgUFJFRElWMSBpbnB1dCBjbG9jayBkaXZpZGVkIGJ5IDEyICovCisgI2RlZmluZSAgUkNDX0NGR1IyX1BSRURJVjFfRElWMTMgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMEMpICAgICAgICAvKiE8IFBSRURJVjEgaW5wdXQgY2xvY2sgZGl2aWRlZCBieSAxMyAqLworICNkZWZpbmUgIFJDQ19DRkdSMl9QUkVESVYxX0RJVjE0ICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDBEKSAgICAgICAgLyohPCBQUkVESVYxIGlucHV0IGNsb2NrIGRpdmlkZWQgYnkgMTQgKi8KKyAjZGVmaW5lICBSQ0NfQ0ZHUjJfUFJFRElWMV9ESVYxNSAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwRSkgICAgICAgIC8qITwgUFJFRElWMSBpbnB1dCBjbG9jayBkaXZpZGVkIGJ5IDE1ICovCisgI2RlZmluZSAgUkNDX0NGR1IyX1BSRURJVjFfRElWMTYgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMEYpICAgICAgICAvKiE8IFBSRURJVjEgaW5wdXQgY2xvY2sgZGl2aWRlZCBieSAxNiAqLworI2VuZGlmCisgCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgIEdlbmVyYWwgUHVycG9zZSBhbmQgQWx0ZXJuYXRlIEZ1bmN0aW9uIEkvTyAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBHUElPX0NSTCByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIEdQSU9fQ1JMX01PREUgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgzMzMzMzMzMykgICAgICAgIC8qITwgUG9ydCB4IG1vZGUgYml0cyAqLworCisjZGVmaW5lICBHUElPX0NSTF9NT0RFMCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDMpICAgICAgICAvKiE8IE1PREUwWzE6MF0gYml0cyAoUG9ydCB4IG1vZGUgYml0cywgcGluIDApICovCisjZGVmaW5lICBHUElPX0NSTF9NT0RFMF8wICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDEpICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBHUElPX0NSTF9NT0RFMF8xICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IEJpdCAxICovCisKKyNkZWZpbmUgIEdQSU9fQ1JMX01PREUxICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAzMCkgICAgICAgIC8qITwgTU9ERTFbMTowXSBiaXRzIChQb3J0IHggbW9kZSBiaXRzLCBwaW4gMSkgKi8KKyNkZWZpbmUgIEdQSU9fQ1JMX01PREUxXzAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAxMCkgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIEdQSU9fQ1JMX01PREUxXzEgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAyMCkgICAgICAgIC8qITwgQml0IDEgKi8KKworI2RlZmluZSAgR1BJT19DUkxfTU9ERTIgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMzAwKSAgICAgICAgLyohPCBNT0RFMlsxOjBdIGJpdHMgKFBvcnQgeCBtb2RlIGJpdHMsIHBpbiAyKSAqLworI2RlZmluZSAgR1BJT19DUkxfTU9ERTJfMCAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgR1BJT19DUkxfTU9ERTJfMSAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMjAwKSAgICAgICAgLyohPCBCaXQgMSAqLworCisjZGVmaW5lICBHUElPX0NSTF9NT0RFMyAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDMwMDApICAgICAgICAvKiE8IE1PREUzWzE6MF0gYml0cyAoUG9ydCB4IG1vZGUgYml0cywgcGluIDMpICovCisjZGVmaW5lICBHUElPX0NSTF9NT0RFM18wICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDEwMDApICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBHUElPX0NSTF9NT0RFM18xICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAgICAgICAvKiE8IEJpdCAxICovCisKKyNkZWZpbmUgIEdQSU9fQ1JMX01PREU0ICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAzMDAwMCkgICAgICAgIC8qITwgTU9ERTRbMTowXSBiaXRzIChQb3J0IHggbW9kZSBiaXRzLCBwaW4gNCkgKi8KKyNkZWZpbmUgIEdQSU9fQ1JMX01PREU0XzAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAxMDAwMCkgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIEdQSU9fQ1JMX01PREU0XzEgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkgICAgICAgIC8qITwgQml0IDEgKi8KKworI2RlZmluZSAgR1BJT19DUkxfTU9ERTUgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMzAwMDAwKSAgICAgICAgLyohPCBNT0RFNVsxOjBdIGJpdHMgKFBvcnQgeCBtb2RlIGJpdHMsIHBpbiA1KSAqLworI2RlZmluZSAgR1BJT19DUkxfTU9ERTVfMCAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMTAwMDAwKSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgR1BJT19DUkxfTU9ERTVfMSAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMjAwMDAwKSAgICAgICAgLyohPCBCaXQgMSAqLworCisjZGVmaW5lICBHUElPX0NSTF9NT0RFNiAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDMwMDAwMDApICAgICAgICAvKiE8IE1PREU2WzE6MF0gYml0cyAoUG9ydCB4IG1vZGUgYml0cywgcGluIDYpICovCisjZGVmaW5lICBHUElPX0NSTF9NT0RFNl8wICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDEwMDAwMDApICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBHUElPX0NSTF9NT0RFNl8xICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDIwMDAwMDApICAgICAgICAvKiE8IEJpdCAxICovCisKKyNkZWZpbmUgIEdQSU9fQ1JMX01PREU3ICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgzMDAwMDAwMCkgICAgICAgIC8qITwgTU9ERTdbMTowXSBiaXRzIChQb3J0IHggbW9kZSBiaXRzLCBwaW4gNykgKi8KKyNkZWZpbmUgIEdQSU9fQ1JMX01PREU3XzAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgxMDAwMDAwMCkgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIEdQSU9fQ1JMX01PREU3XzEgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgyMDAwMDAwMCkgICAgICAgIC8qITwgQml0IDEgKi8KKworI2RlZmluZSAgR1BJT19DUkxfQ05GICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweENDQ0NDQ0NDKSAgICAgICAgLyohPCBQb3J0IHggY29uZmlndXJhdGlvbiBiaXRzICovCisKKyNkZWZpbmUgIEdQSU9fQ1JMX0NORjAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwQykgICAgICAgIC8qITwgQ05GMFsxOjBdIGJpdHMgKFBvcnQgeCBjb25maWd1cmF0aW9uIGJpdHMsIHBpbiAwKSAqLworI2RlZmluZSAgR1BJT19DUkxfQ05GMF8wICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgR1BJT19DUkxfQ05GMF8xICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA4KSAgICAgICAgLyohPCBCaXQgMSAqLworCisjZGVmaW5lICBHUElPX0NSTF9DTkYxICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwQzApICAgICAgICAvKiE8IENORjFbMTowXSBiaXRzIChQb3J0IHggY29uZmlndXJhdGlvbiBiaXRzLCBwaW4gMSkgKi8KKyNkZWZpbmUgIEdQSU9fQ1JMX0NORjFfMCAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIEdQSU9fQ1JMX0NORjFfMSAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA4MCkgICAgICAgIC8qITwgQml0IDEgKi8KKworI2RlZmluZSAgR1BJT19DUkxfQ05GMiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwQzAwKSAgICAgICAgLyohPCBDTkYyWzE6MF0gYml0cyAoUG9ydCB4IGNvbmZpZ3VyYXRpb24gYml0cywgcGluIDIpICovCisjZGVmaW5lICBHUElPX0NSTF9DTkYyXzAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBHUElPX0NSTF9DTkYyXzEgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA4MDApICAgICAgICAvKiE8IEJpdCAxICovCisKKyNkZWZpbmUgIEdQSU9fQ1JMX0NORjMgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwQzAwMCkgICAgICAgIC8qITwgQ05GM1sxOjBdIGJpdHMgKFBvcnQgeCBjb25maWd1cmF0aW9uIGJpdHMsIHBpbiAzKSAqLworI2RlZmluZSAgR1BJT19DUkxfQ05GM18wICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA0MDAwKSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgR1BJT19DUkxfQ05GM18xICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKSAgICAgICAgLyohPCBCaXQgMSAqLworCisjZGVmaW5lICBHUElPX0NSTF9DTkY0ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwQzAwMDApICAgICAgICAvKiE8IENORjRbMTowXSBiaXRzIChQb3J0IHggY29uZmlndXJhdGlvbiBiaXRzLCBwaW4gNCkgKi8KKyNkZWZpbmUgIEdQSU9fQ1JMX0NORjRfMCAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA0MDAwMCkgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIEdQSU9fQ1JMX0NORjRfMSAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA4MDAwMCkgICAgICAgIC8qITwgQml0IDEgKi8KKworI2RlZmluZSAgR1BJT19DUkxfQ05GNSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwQzAwMDAwKSAgICAgICAgLyohPCBDTkY1WzE6MF0gYml0cyAoUG9ydCB4IGNvbmZpZ3VyYXRpb24gYml0cywgcGluIDUpICovCisjZGVmaW5lICBHUElPX0NSTF9DTkY1XzAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBHUElPX0NSTF9DTkY1XzEgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA4MDAwMDApICAgICAgICAvKiE8IEJpdCAxICovCisKKyNkZWZpbmUgIEdQSU9fQ1JMX0NORjYgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwQzAwMDAwMCkgICAgICAgIC8qITwgQ05GNlsxOjBdIGJpdHMgKFBvcnQgeCBjb25maWd1cmF0aW9uIGJpdHMsIHBpbiA2KSAqLworI2RlZmluZSAgR1BJT19DUkxfQ05GNl8wICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA0MDAwMDAwKSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgR1BJT19DUkxfQ05GNl8xICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA4MDAwMDAwKSAgICAgICAgLyohPCBCaXQgMSAqLworCisjZGVmaW5lICBHUElPX0NSTF9DTkY3ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4QzAwMDAwMDApICAgICAgICAvKiE8IENORjdbMTowXSBiaXRzIChQb3J0IHggY29uZmlndXJhdGlvbiBiaXRzLCBwaW4gNykgKi8KKyNkZWZpbmUgIEdQSU9fQ1JMX0NORjdfMCAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHg0MDAwMDAwMCkgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIEdQSU9fQ1JMX0NORjdfMSAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHg4MDAwMDAwMCkgICAgICAgIC8qITwgQml0IDEgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBHUElPX0NSSCByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIEdQSU9fQ1JIX01PREUgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgzMzMzMzMzMykgICAgICAgIC8qITwgUG9ydCB4IG1vZGUgYml0cyAqLworCisjZGVmaW5lICBHUElPX0NSSF9NT0RFOCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDMpICAgICAgICAvKiE8IE1PREU4WzE6MF0gYml0cyAoUG9ydCB4IG1vZGUgYml0cywgcGluIDgpICovCisjZGVmaW5lICBHUElPX0NSSF9NT0RFOF8wICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDEpICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBHUElPX0NSSF9NT0RFOF8xICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IEJpdCAxICovCisKKyNkZWZpbmUgIEdQSU9fQ1JIX01PREU5ICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAzMCkgICAgICAgIC8qITwgTU9ERTlbMTowXSBiaXRzIChQb3J0IHggbW9kZSBiaXRzLCBwaW4gOSkgKi8KKyNkZWZpbmUgIEdQSU9fQ1JIX01PREU5XzAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAxMCkgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIEdQSU9fQ1JIX01PREU5XzEgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAyMCkgICAgICAgIC8qITwgQml0IDEgKi8KKworI2RlZmluZSAgR1BJT19DUkhfTU9ERTEwICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMzAwKSAgICAgICAgLyohPCBNT0RFMTBbMTowXSBiaXRzIChQb3J0IHggbW9kZSBiaXRzLCBwaW4gMTApICovCisjZGVmaW5lICBHUElPX0NSSF9NT0RFMTBfMCAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAxMDApICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBHUElPX0NSSF9NT0RFMTBfMSAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAyMDApICAgICAgICAvKiE8IEJpdCAxICovCisKKyNkZWZpbmUgIEdQSU9fQ1JIX01PREUxMSAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMzAwMCkgICAgICAgIC8qITwgTU9ERTExWzE6MF0gYml0cyAoUG9ydCB4IG1vZGUgYml0cywgcGluIDExKSAqLworI2RlZmluZSAgR1BJT19DUkhfTU9ERTExXzAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgR1BJT19DUkhfTU9ERTExXzEgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAyMDAwKSAgICAgICAgLyohPCBCaXQgMSAqLworCisjZGVmaW5lICBHUElPX0NSSF9NT0RFMTIgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMzAwMDApICAgICAgICAvKiE8IE1PREUxMlsxOjBdIGJpdHMgKFBvcnQgeCBtb2RlIGJpdHMsIHBpbiAxMikgKi8KKyNkZWZpbmUgIEdQSU9fQ1JIX01PREUxMl8wICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAxMDAwMCkgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIEdQSU9fQ1JIX01PREUxMl8xICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkgICAgICAgIC8qITwgQml0IDEgKi8KKworI2RlZmluZSAgR1BJT19DUkhfTU9ERTEzICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMzAwMDAwKSAgICAgICAgLyohPCBNT0RFMTNbMTowXSBiaXRzIChQb3J0IHggbW9kZSBiaXRzLCBwaW4gMTMpICovCisjZGVmaW5lICBHUElPX0NSSF9NT0RFMTNfMCAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAxMDAwMDApICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBHUElPX0NSSF9NT0RFMTNfMSAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAyMDAwMDApICAgICAgICAvKiE8IEJpdCAxICovCisKKyNkZWZpbmUgIEdQSU9fQ1JIX01PREUxNCAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMzAwMDAwMCkgICAgICAgIC8qITwgTU9ERTE0WzE6MF0gYml0cyAoUG9ydCB4IG1vZGUgYml0cywgcGluIDE0KSAqLworI2RlZmluZSAgR1BJT19DUkhfTU9ERTE0XzAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAxMDAwMDAwKSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgR1BJT19DUkhfTU9ERTE0XzEgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAyMDAwMDAwKSAgICAgICAgLyohPCBCaXQgMSAqLworCisjZGVmaW5lICBHUElPX0NSSF9NT0RFMTUgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MzAwMDAwMDApICAgICAgICAvKiE8IE1PREUxNVsxOjBdIGJpdHMgKFBvcnQgeCBtb2RlIGJpdHMsIHBpbiAxNSkgKi8KKyNkZWZpbmUgIEdQSU9fQ1JIX01PREUxNV8wICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgxMDAwMDAwMCkgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIEdQSU9fQ1JIX01PREUxNV8xICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgyMDAwMDAwMCkgICAgICAgIC8qITwgQml0IDEgKi8KKworI2RlZmluZSAgR1BJT19DUkhfQ05GICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweENDQ0NDQ0NDKSAgICAgICAgLyohPCBQb3J0IHggY29uZmlndXJhdGlvbiBiaXRzICovCisKKyNkZWZpbmUgIEdQSU9fQ1JIX0NORjggICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwQykgICAgICAgIC8qITwgQ05GOFsxOjBdIGJpdHMgKFBvcnQgeCBjb25maWd1cmF0aW9uIGJpdHMsIHBpbiA4KSAqLworI2RlZmluZSAgR1BJT19DUkhfQ05GOF8wICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgR1BJT19DUkhfQ05GOF8xICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA4KSAgICAgICAgLyohPCBCaXQgMSAqLworCisjZGVmaW5lICBHUElPX0NSSF9DTkY5ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwQzApICAgICAgICAvKiE8IENORjlbMTowXSBiaXRzIChQb3J0IHggY29uZmlndXJhdGlvbiBiaXRzLCBwaW4gOSkgKi8KKyNkZWZpbmUgIEdQSU9fQ1JIX0NORjlfMCAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIEdQSU9fQ1JIX0NORjlfMSAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA4MCkgICAgICAgIC8qITwgQml0IDEgKi8KKworI2RlZmluZSAgR1BJT19DUkhfQ05GMTAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwQzAwKSAgICAgICAgLyohPCBDTkYxMFsxOjBdIGJpdHMgKFBvcnQgeCBjb25maWd1cmF0aW9uIGJpdHMsIHBpbiAxMCkgKi8KKyNkZWZpbmUgIEdQSU9fQ1JIX0NORjEwXzAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDQwMCkgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIEdQSU9fQ1JIX0NORjEwXzEgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgICAgICAgIC8qITwgQml0IDEgKi8KKworI2RlZmluZSAgR1BJT19DUkhfQ05GMTEgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDBDMDAwKSAgICAgICAgLyohPCBDTkYxMVsxOjBdIGJpdHMgKFBvcnQgeCBjb25maWd1cmF0aW9uIGJpdHMsIHBpbiAxMSkgKi8KKyNkZWZpbmUgIEdQSU9fQ1JIX0NORjExXzAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIEdQSU9fQ1JIX0NORjExXzEgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwODAwMCkgICAgICAgIC8qITwgQml0IDEgKi8KKworI2RlZmluZSAgR1BJT19DUkhfQ05GMTIgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMEMwMDAwKSAgICAgICAgLyohPCBDTkYxMlsxOjBdIGJpdHMgKFBvcnQgeCBjb25maWd1cmF0aW9uIGJpdHMsIHBpbiAxMikgKi8KKyNkZWZpbmUgIEdQSU9fQ1JIX0NORjEyXzAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA0MDAwMCkgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIEdQSU9fQ1JIX0NORjEyXzEgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA4MDAwMCkgICAgICAgIC8qITwgQml0IDEgKi8KKworI2RlZmluZSAgR1BJT19DUkhfQ05GMTMgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwQzAwMDAwKSAgICAgICAgLyohPCBDTkYxM1sxOjBdIGJpdHMgKFBvcnQgeCBjb25maWd1cmF0aW9uIGJpdHMsIHBpbiAxMykgKi8KKyNkZWZpbmUgIEdQSU9fQ1JIX0NORjEzXzAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDQwMDAwMCkgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIEdQSU9fQ1JIX0NORjEzXzEgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDgwMDAwMCkgICAgICAgIC8qITwgQml0IDEgKi8KKworI2RlZmluZSAgR1BJT19DUkhfQ05GMTQgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDBDMDAwMDAwKSAgICAgICAgLyohPCBDTkYxNFsxOjBdIGJpdHMgKFBvcnQgeCBjb25maWd1cmF0aW9uIGJpdHMsIHBpbiAxNCkgKi8KKyNkZWZpbmUgIEdQSU9fQ1JIX0NORjE0XzAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwNDAwMDAwMCkgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIEdQSU9fQ1JIX0NORjE0XzEgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwODAwMDAwMCkgICAgICAgIC8qITwgQml0IDEgKi8KKworI2RlZmluZSAgR1BJT19DUkhfQ05GMTUgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEMwMDAwMDAwKSAgICAgICAgLyohPCBDTkYxNVsxOjBdIGJpdHMgKFBvcnQgeCBjb25maWd1cmF0aW9uIGJpdHMsIHBpbiAxNSkgKi8KKyNkZWZpbmUgIEdQSU9fQ1JIX0NORjE1XzAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHg0MDAwMDAwMCkgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIEdQSU9fQ1JIX0NORjE1XzEgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHg4MDAwMDAwMCkgICAgICAgIC8qITwgQml0IDEgKi8KKworLyohPCoqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIEdQSU9fSURSIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSBHUElPX0lEUl9JRFIwICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDEpICAgICAgICAgICAgLyohPCBQb3J0IGlucHV0IGRhdGEsIGJpdCAwICovCisjZGVmaW5lIEdQSU9fSURSX0lEUjEgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMikgICAgICAgICAgICAvKiE8IFBvcnQgaW5wdXQgZGF0YSwgYml0IDEgKi8KKyNkZWZpbmUgR1BJT19JRFJfSURSMiAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA0KSAgICAgICAgICAgIC8qITwgUG9ydCBpbnB1dCBkYXRhLCBiaXQgMiAqLworI2RlZmluZSBHUElPX0lEUl9JRFIzICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDgpICAgICAgICAgICAgLyohPCBQb3J0IGlucHV0IGRhdGEsIGJpdCAzICovCisjZGVmaW5lIEdQSU9fSURSX0lEUjQgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAxMCkgICAgICAgICAgICAvKiE8IFBvcnQgaW5wdXQgZGF0YSwgYml0IDQgKi8KKyNkZWZpbmUgR1BJT19JRFJfSURSNSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDIwKSAgICAgICAgICAgIC8qITwgUG9ydCBpbnB1dCBkYXRhLCBiaXQgNSAqLworI2RlZmluZSBHUElPX0lEUl9JRFI2ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwNDApICAgICAgICAgICAgLyohPCBQb3J0IGlucHV0IGRhdGEsIGJpdCA2ICovCisjZGVmaW5lIEdQSU9fSURSX0lEUjcgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA4MCkgICAgICAgICAgICAvKiE8IFBvcnQgaW5wdXQgZGF0YSwgYml0IDcgKi8KKyNkZWZpbmUgR1BJT19JRFJfSURSOCAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMTAwKSAgICAgICAgICAgIC8qITwgUG9ydCBpbnB1dCBkYXRhLCBiaXQgOCAqLworI2RlZmluZSBHUElPX0lEUl9JRFI5ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAyMDApICAgICAgICAgICAgLyohPCBQb3J0IGlucHV0IGRhdGEsIGJpdCA5ICovCisjZGVmaW5lIEdQSU9fSURSX0lEUjEwICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDQwMCkgICAgICAgICAgICAvKiE8IFBvcnQgaW5wdXQgZGF0YSwgYml0IDEwICovCisjZGVmaW5lIEdQSU9fSURSX0lEUjExICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDgwMCkgICAgICAgICAgICAvKiE8IFBvcnQgaW5wdXQgZGF0YSwgYml0IDExICovCisjZGVmaW5lIEdQSU9fSURSX0lEUjEyICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MTAwMCkgICAgICAgICAgICAvKiE8IFBvcnQgaW5wdXQgZGF0YSwgYml0IDEyICovCisjZGVmaW5lIEdQSU9fSURSX0lEUjEzICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MjAwMCkgICAgICAgICAgICAvKiE8IFBvcnQgaW5wdXQgZGF0YSwgYml0IDEzICovCisjZGVmaW5lIEdQSU9fSURSX0lEUjE0ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4NDAwMCkgICAgICAgICAgICAvKiE8IFBvcnQgaW5wdXQgZGF0YSwgYml0IDE0ICovCisjZGVmaW5lIEdQSU9fSURSX0lEUjE1ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4ODAwMCkgICAgICAgICAgICAvKiE8IFBvcnQgaW5wdXQgZGF0YSwgYml0IDE1ICovCisKKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgR1BJT19PRFIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lIEdQSU9fT0RSX09EUjAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMSkgICAgICAgICAgICAvKiE8IFBvcnQgb3V0cHV0IGRhdGEsIGJpdCAwICovCisjZGVmaW5lIEdQSU9fT0RSX09EUjEgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMikgICAgICAgICAgICAvKiE8IFBvcnQgb3V0cHV0IGRhdGEsIGJpdCAxICovCisjZGVmaW5lIEdQSU9fT0RSX09EUjIgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwNCkgICAgICAgICAgICAvKiE8IFBvcnQgb3V0cHV0IGRhdGEsIGJpdCAyICovCisjZGVmaW5lIEdQSU9fT0RSX09EUjMgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwOCkgICAgICAgICAgICAvKiE8IFBvcnQgb3V0cHV0IGRhdGEsIGJpdCAzICovCisjZGVmaW5lIEdQSU9fT0RSX09EUjQgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAxMCkgICAgICAgICAgICAvKiE8IFBvcnQgb3V0cHV0IGRhdGEsIGJpdCA0ICovCisjZGVmaW5lIEdQSU9fT0RSX09EUjUgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAyMCkgICAgICAgICAgICAvKiE8IFBvcnQgb3V0cHV0IGRhdGEsIGJpdCA1ICovCisjZGVmaW5lIEdQSU9fT0RSX09EUjYgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA0MCkgICAgICAgICAgICAvKiE8IFBvcnQgb3V0cHV0IGRhdGEsIGJpdCA2ICovCisjZGVmaW5lIEdQSU9fT0RSX09EUjcgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA4MCkgICAgICAgICAgICAvKiE8IFBvcnQgb3V0cHV0IGRhdGEsIGJpdCA3ICovCisjZGVmaW5lIEdQSU9fT0RSX09EUjggICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDEwMCkgICAgICAgICAgICAvKiE8IFBvcnQgb3V0cHV0IGRhdGEsIGJpdCA4ICovCisjZGVmaW5lIEdQSU9fT0RSX09EUjkgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDIwMCkgICAgICAgICAgICAvKiE8IFBvcnQgb3V0cHV0IGRhdGEsIGJpdCA5ICovCisjZGVmaW5lIEdQSU9fT0RSX09EUjEwICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDQwMCkgICAgICAgICAgICAvKiE8IFBvcnQgb3V0cHV0IGRhdGEsIGJpdCAxMCAqLworI2RlZmluZSBHUElPX09EUl9PRFIxMSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDA4MDApICAgICAgICAgICAgLyohPCBQb3J0IG91dHB1dCBkYXRhLCBiaXQgMTEgKi8KKyNkZWZpbmUgR1BJT19PRFJfT0RSMTIgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgxMDAwKSAgICAgICAgICAgIC8qITwgUG9ydCBvdXRwdXQgZGF0YSwgYml0IDEyICovCisjZGVmaW5lIEdQSU9fT0RSX09EUjEzICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MjAwMCkgICAgICAgICAgICAvKiE8IFBvcnQgb3V0cHV0IGRhdGEsIGJpdCAxMyAqLworI2RlZmluZSBHUElPX09EUl9PRFIxNCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDQwMDApICAgICAgICAgICAgLyohPCBQb3J0IG91dHB1dCBkYXRhLCBiaXQgMTQgKi8KKyNkZWZpbmUgR1BJT19PRFJfT0RSMTUgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHg4MDAwKSAgICAgICAgICAgIC8qITwgUG9ydCBvdXRwdXQgZGF0YSwgYml0IDE1ICovCisKKy8qKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBHUElPX0JTUlIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lIEdQSU9fQlNSUl9CUzAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDEpICAgICAgICAvKiE8IFBvcnQgeCBTZXQgYml0IDAgKi8KKyNkZWZpbmUgR1BJT19CU1JSX0JTMSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMikgICAgICAgIC8qITwgUG9ydCB4IFNldCBiaXQgMSAqLworI2RlZmluZSBHUElPX0JTUlJfQlMyICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgICAgICAgLyohPCBQb3J0IHggU2V0IGJpdCAyICovCisjZGVmaW5lIEdQSU9fQlNSUl9CUzMgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDgpICAgICAgICAvKiE8IFBvcnQgeCBTZXQgYml0IDMgKi8KKyNkZWZpbmUgR1BJT19CU1JSX0JTNCAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAxMCkgICAgICAgIC8qITwgUG9ydCB4IFNldCBiaXQgNCAqLworI2RlZmluZSBHUElPX0JTUlJfQlM1ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKSAgICAgICAgLyohPCBQb3J0IHggU2V0IGJpdCA1ICovCisjZGVmaW5lIEdQSU9fQlNSUl9CUzYgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwNDApICAgICAgICAvKiE8IFBvcnQgeCBTZXQgYml0IDYgKi8KKyNkZWZpbmUgR1BJT19CU1JSX0JTNyAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA4MCkgICAgICAgIC8qITwgUG9ydCB4IFNldCBiaXQgNyAqLworI2RlZmluZSBHUElPX0JTUlJfQlM4ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKSAgICAgICAgLyohPCBQb3J0IHggU2V0IGJpdCA4ICovCisjZGVmaW5lIEdQSU9fQlNSUl9CUzkgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAyMDApICAgICAgICAvKiE8IFBvcnQgeCBTZXQgYml0IDkgKi8KKyNkZWZpbmUgR1BJT19CU1JSX0JTMTAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDQwMCkgICAgICAgIC8qITwgUG9ydCB4IFNldCBiaXQgMTAgKi8KKyNkZWZpbmUgR1BJT19CU1JSX0JTMTEgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgICAgICAgIC8qITwgUG9ydCB4IFNldCBiaXQgMTEgKi8KKyNkZWZpbmUgR1BJT19CU1JSX0JTMTIgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMTAwMCkgICAgICAgIC8qITwgUG9ydCB4IFNldCBiaXQgMTIgKi8KKyNkZWZpbmUgR1BJT19CU1JSX0JTMTMgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMjAwMCkgICAgICAgIC8qITwgUG9ydCB4IFNldCBiaXQgMTMgKi8KKyNkZWZpbmUgR1BJT19CU1JSX0JTMTQgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgICAgICAgIC8qITwgUG9ydCB4IFNldCBiaXQgMTQgKi8KKyNkZWZpbmUgR1BJT19CU1JSX0JTMTUgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwODAwMCkgICAgICAgIC8qITwgUG9ydCB4IFNldCBiaXQgMTUgKi8KKworI2RlZmluZSBHUElPX0JTUlJfQlIwICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDEwMDAwKSAgICAgICAgLyohPCBQb3J0IHggUmVzZXQgYml0IDAgKi8KKyNkZWZpbmUgR1BJT19CU1JSX0JSMSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkgICAgICAgIC8qITwgUG9ydCB4IFJlc2V0IGJpdCAxICovCisjZGVmaW5lIEdQSU9fQlNSUl9CUjIgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwNDAwMDApICAgICAgICAvKiE8IFBvcnQgeCBSZXNldCBiaXQgMiAqLworI2RlZmluZSBHUElPX0JTUlJfQlIzICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDgwMDAwKSAgICAgICAgLyohPCBQb3J0IHggUmVzZXQgYml0IDMgKi8KKyNkZWZpbmUgR1BJT19CU1JSX0JSNCAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDEwMDAwMCkgICAgICAgIC8qITwgUG9ydCB4IFJlc2V0IGJpdCA0ICovCisjZGVmaW5lIEdQSU9fQlNSUl9CUjUgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAyMDAwMDApICAgICAgICAvKiE8IFBvcnQgeCBSZXNldCBiaXQgNSAqLworI2RlZmluZSBHUElPX0JTUlJfQlI2ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwNDAwMDAwKSAgICAgICAgLyohPCBQb3J0IHggUmVzZXQgYml0IDYgKi8KKyNkZWZpbmUgR1BJT19CU1JSX0JSNyAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDgwMDAwMCkgICAgICAgIC8qITwgUG9ydCB4IFJlc2V0IGJpdCA3ICovCisjZGVmaW5lIEdQSU9fQlNSUl9CUjggICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDEwMDAwMDApICAgICAgICAvKiE8IFBvcnQgeCBSZXNldCBiaXQgOCAqLworI2RlZmluZSBHUElPX0JTUlJfQlI5ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAyMDAwMDAwKSAgICAgICAgLyohPCBQb3J0IHggUmVzZXQgYml0IDkgKi8KKyNkZWZpbmUgR1BJT19CU1JSX0JSMTAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwNDAwMDAwMCkgICAgICAgIC8qITwgUG9ydCB4IFJlc2V0IGJpdCAxMCAqLworI2RlZmluZSBHUElPX0JTUlJfQlIxMSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA4MDAwMDAwKSAgICAgICAgLyohPCBQb3J0IHggUmVzZXQgYml0IDExICovCisjZGVmaW5lIEdQSU9fQlNSUl9CUjEyICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwMDApICAgICAgICAvKiE8IFBvcnQgeCBSZXNldCBiaXQgMTIgKi8KKyNkZWZpbmUgR1BJT19CU1JSX0JSMTMgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgyMDAwMDAwMCkgICAgICAgIC8qITwgUG9ydCB4IFJlc2V0IGJpdCAxMyAqLworI2RlZmluZSBHUElPX0JTUlJfQlIxNCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDQwMDAwMDAwKSAgICAgICAgLyohPCBQb3J0IHggUmVzZXQgYml0IDE0ICovCisjZGVmaW5lIEdQSU9fQlNSUl9CUjE1ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4ODAwMDAwMDApICAgICAgICAvKiE8IFBvcnQgeCBSZXNldCBiaXQgMTUgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBHUElPX0JSUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgR1BJT19CUlJfQlIwICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAxKSAgICAgICAgICAgIC8qITwgUG9ydCB4IFJlc2V0IGJpdCAwICovCisjZGVmaW5lIEdQSU9fQlJSX0JSMSAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMikgICAgICAgICAgICAvKiE8IFBvcnQgeCBSZXNldCBiaXQgMSAqLworI2RlZmluZSBHUElPX0JSUl9CUjIgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDQpICAgICAgICAgICAgLyohPCBQb3J0IHggUmVzZXQgYml0IDIgKi8KKyNkZWZpbmUgR1BJT19CUlJfQlIzICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA4KSAgICAgICAgICAgIC8qITwgUG9ydCB4IFJlc2V0IGJpdCAzICovCisjZGVmaW5lIEdQSU9fQlJSX0JSNCAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAxMCkgICAgICAgICAgICAvKiE8IFBvcnQgeCBSZXNldCBiaXQgNCAqLworI2RlZmluZSBHUElPX0JSUl9CUjUgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMjApICAgICAgICAgICAgLyohPCBQb3J0IHggUmVzZXQgYml0IDUgKi8KKyNkZWZpbmUgR1BJT19CUlJfQlI2ICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDQwKSAgICAgICAgICAgIC8qITwgUG9ydCB4IFJlc2V0IGJpdCA2ICovCisjZGVmaW5lIEdQSU9fQlJSX0JSNyAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA4MCkgICAgICAgICAgICAvKiE8IFBvcnQgeCBSZXNldCBiaXQgNyAqLworI2RlZmluZSBHUElPX0JSUl9CUjggICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAxMDApICAgICAgICAgICAgLyohPCBQb3J0IHggUmVzZXQgYml0IDggKi8KKyNkZWZpbmUgR1BJT19CUlJfQlI5ICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMjAwKSAgICAgICAgICAgIC8qITwgUG9ydCB4IFJlc2V0IGJpdCA5ICovCisjZGVmaW5lIEdQSU9fQlJSX0JSMTAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDQwMCkgICAgICAgICAgICAvKiE8IFBvcnQgeCBSZXNldCBiaXQgMTAgKi8KKyNkZWZpbmUgR1BJT19CUlJfQlIxMSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwODAwKSAgICAgICAgICAgIC8qITwgUG9ydCB4IFJlc2V0IGJpdCAxMSAqLworI2RlZmluZSBHUElPX0JSUl9CUjEyICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDEwMDApICAgICAgICAgICAgLyohPCBQb3J0IHggUmVzZXQgYml0IDEyICovCisjZGVmaW5lIEdQSU9fQlJSX0JSMTMgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MjAwMCkgICAgICAgICAgICAvKiE8IFBvcnQgeCBSZXNldCBiaXQgMTMgKi8KKyNkZWZpbmUgR1BJT19CUlJfQlIxNCAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHg0MDAwKSAgICAgICAgICAgIC8qITwgUG9ydCB4IFJlc2V0IGJpdCAxNCAqLworI2RlZmluZSBHUElPX0JSUl9CUjE1ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDgwMDApICAgICAgICAgICAgLyohPCBQb3J0IHggUmVzZXQgYml0IDE1ICovCisKKy8qKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBHUElPX0xDS1IgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lIEdQSU9fTENLUl9MQ0swICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDEpICAgICAgICAvKiE8IFBvcnQgeCBMb2NrIGJpdCAwICovCisjZGVmaW5lIEdQSU9fTENLUl9MQ0sxICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IFBvcnQgeCBMb2NrIGJpdCAxICovCisjZGVmaW5lIEdQSU9fTENLUl9MQ0syICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDQpICAgICAgICAvKiE8IFBvcnQgeCBMb2NrIGJpdCAyICovCisjZGVmaW5lIEdQSU9fTENLUl9MQ0szICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDgpICAgICAgICAvKiE8IFBvcnQgeCBMb2NrIGJpdCAzICovCisjZGVmaW5lIEdQSU9fTENLUl9MQ0s0ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAgICAgICAvKiE8IFBvcnQgeCBMb2NrIGJpdCA0ICovCisjZGVmaW5lIEdQSU9fTENLUl9MQ0s1ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMjApICAgICAgICAvKiE8IFBvcnQgeCBMb2NrIGJpdCA1ICovCisjZGVmaW5lIEdQSU9fTENLUl9MQ0s2ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwNDApICAgICAgICAvKiE8IFBvcnQgeCBMb2NrIGJpdCA2ICovCisjZGVmaW5lIEdQSU9fTENLUl9MQ0s3ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApICAgICAgICAvKiE8IFBvcnQgeCBMb2NrIGJpdCA3ICovCisjZGVmaW5lIEdQSU9fTENLUl9MQ0s4ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAxMDApICAgICAgICAvKiE8IFBvcnQgeCBMb2NrIGJpdCA4ICovCisjZGVmaW5lIEdQSU9fTENLUl9MQ0s5ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAyMDApICAgICAgICAvKiE8IFBvcnQgeCBMb2NrIGJpdCA5ICovCisjZGVmaW5lIEdQSU9fTENLUl9MQ0sxMCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApICAgICAgICAvKiE8IFBvcnQgeCBMb2NrIGJpdCAxMCAqLworI2RlZmluZSBHUElPX0xDS1JfTENLMTEgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwODAwKSAgICAgICAgLyohPCBQb3J0IHggTG9jayBiaXQgMTEgKi8KKyNkZWZpbmUgR1BJT19MQ0tSX0xDSzEyICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMTAwMCkgICAgICAgIC8qITwgUG9ydCB4IExvY2sgYml0IDEyICovCisjZGVmaW5lIEdQSU9fTENLUl9MQ0sxMyAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAgICAgICAvKiE8IFBvcnQgeCBMb2NrIGJpdCAxMyAqLworI2RlZmluZSBHUElPX0xDS1JfTENLMTQgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA0MDAwKSAgICAgICAgLyohPCBQb3J0IHggTG9jayBiaXQgMTQgKi8KKyNkZWZpbmUgR1BJT19MQ0tSX0xDSzE1ICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwODAwMCkgICAgICAgIC8qITwgUG9ydCB4IExvY2sgYml0IDE1ICovCisjZGVmaW5lIEdQSU9fTENLUl9MQ0tLICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMTAwMDApICAgICAgICAvKiE8IExvY2sga2V5ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKKy8qKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBBRklPX0VWQ1IgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lIEFGSU9fRVZDUl9QSU4gICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwRikgICAgICAgICAgICAgICAvKiE8IFBJTlszOjBdIGJpdHMgKFBpbiBzZWxlY3Rpb24pICovCisjZGVmaW5lIEFGSU9fRVZDUl9QSU5fMCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwMSkgICAgICAgICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lIEFGSU9fRVZDUl9QSU5fMSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwMikgICAgICAgICAgICAgICAvKiE8IEJpdCAxICovCisjZGVmaW5lIEFGSU9fRVZDUl9QSU5fMiAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwNCkgICAgICAgICAgICAgICAvKiE8IEJpdCAyICovCisjZGVmaW5lIEFGSU9fRVZDUl9QSU5fMyAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwOCkgICAgICAgICAgICAgICAvKiE8IEJpdCAzICovCisKKy8qITwgUElOIGNvbmZpZ3VyYXRpb24gKi8KKyNkZWZpbmUgQUZJT19FVkNSX1BJTl9QWDAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDAwKSAgICAgICAgICAgICAgIC8qITwgUGluIDAgc2VsZWN0ZWQgKi8KKyNkZWZpbmUgQUZJT19FVkNSX1BJTl9QWDEgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDAxKSAgICAgICAgICAgICAgIC8qITwgUGluIDEgc2VsZWN0ZWQgKi8KKyNkZWZpbmUgQUZJT19FVkNSX1BJTl9QWDIgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDAyKSAgICAgICAgICAgICAgIC8qITwgUGluIDIgc2VsZWN0ZWQgKi8KKyNkZWZpbmUgQUZJT19FVkNSX1BJTl9QWDMgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDAzKSAgICAgICAgICAgICAgIC8qITwgUGluIDMgc2VsZWN0ZWQgKi8KKyNkZWZpbmUgQUZJT19FVkNSX1BJTl9QWDQgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDA0KSAgICAgICAgICAgICAgIC8qITwgUGluIDQgc2VsZWN0ZWQgKi8KKyNkZWZpbmUgQUZJT19FVkNSX1BJTl9QWDUgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDA1KSAgICAgICAgICAgICAgIC8qITwgUGluIDUgc2VsZWN0ZWQgKi8KKyNkZWZpbmUgQUZJT19FVkNSX1BJTl9QWDYgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDA2KSAgICAgICAgICAgICAgIC8qITwgUGluIDYgc2VsZWN0ZWQgKi8KKyNkZWZpbmUgQUZJT19FVkNSX1BJTl9QWDcgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDA3KSAgICAgICAgICAgICAgIC8qITwgUGluIDcgc2VsZWN0ZWQgKi8KKyNkZWZpbmUgQUZJT19FVkNSX1BJTl9QWDggICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDA4KSAgICAgICAgICAgICAgIC8qITwgUGluIDggc2VsZWN0ZWQgKi8KKyNkZWZpbmUgQUZJT19FVkNSX1BJTl9QWDkgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDA5KSAgICAgICAgICAgICAgIC8qITwgUGluIDkgc2VsZWN0ZWQgKi8KKyNkZWZpbmUgQUZJT19FVkNSX1BJTl9QWDEwICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDBBKSAgICAgICAgICAgICAgIC8qITwgUGluIDEwIHNlbGVjdGVkICovCisjZGVmaW5lIEFGSU9fRVZDUl9QSU5fUFgxMSAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwQikgICAgICAgICAgICAgICAvKiE8IFBpbiAxMSBzZWxlY3RlZCAqLworI2RlZmluZSBBRklPX0VWQ1JfUElOX1BYMTIgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MEMpICAgICAgICAgICAgICAgLyohPCBQaW4gMTIgc2VsZWN0ZWQgKi8KKyNkZWZpbmUgQUZJT19FVkNSX1BJTl9QWDEzICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDBEKSAgICAgICAgICAgICAgIC8qITwgUGluIDEzIHNlbGVjdGVkICovCisjZGVmaW5lIEFGSU9fRVZDUl9QSU5fUFgxNCAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwRSkgICAgICAgICAgICAgICAvKiE8IFBpbiAxNCBzZWxlY3RlZCAqLworI2RlZmluZSBBRklPX0VWQ1JfUElOX1BYMTUgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MEYpICAgICAgICAgICAgICAgLyohPCBQaW4gMTUgc2VsZWN0ZWQgKi8KKworI2RlZmluZSBBRklPX0VWQ1JfUE9SVCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4NzApICAgICAgICAgICAgICAgLyohPCBQT1JUWzI6MF0gYml0cyAoUG9ydCBzZWxlY3Rpb24pICovCisjZGVmaW5lIEFGSU9fRVZDUl9QT1JUXzAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgxMCkgICAgICAgICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lIEFGSU9fRVZDUl9QT1JUXzEgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgyMCkgICAgICAgICAgICAgICAvKiE8IEJpdCAxICovCisjZGVmaW5lIEFGSU9fRVZDUl9QT1JUXzIgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHg0MCkgICAgICAgICAgICAgICAvKiE8IEJpdCAyICovCisKKy8qITwgUE9SVCBjb25maWd1cmF0aW9uICovCisjZGVmaW5lIEFGSU9fRVZDUl9QT1JUX1BBICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwMCkgICAgICAgICAgICAgICAvKiE8IFBvcnQgQSBzZWxlY3RlZCAqLworI2RlZmluZSBBRklPX0VWQ1JfUE9SVF9QQiAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MTApICAgICAgICAgICAgICAgLyohPCBQb3J0IEIgc2VsZWN0ZWQgKi8KKyNkZWZpbmUgQUZJT19FVkNSX1BPUlRfUEMgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDIwKSAgICAgICAgICAgICAgIC8qITwgUG9ydCBDIHNlbGVjdGVkICovCisjZGVmaW5lIEFGSU9fRVZDUl9QT1JUX1BEICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgzMCkgICAgICAgICAgICAgICAvKiE8IFBvcnQgRCBzZWxlY3RlZCAqLworI2RlZmluZSBBRklPX0VWQ1JfUE9SVF9QRSAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4NDApICAgICAgICAgICAgICAgLyohPCBQb3J0IEUgc2VsZWN0ZWQgKi8KKworI2RlZmluZSBBRklPX0VWQ1JfRVZPRSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4ODApICAgICAgICAgICAgICAgLyohPCBFdmVudCBPdXRwdXQgRW5hYmxlICovCisKKy8qKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBBRklPX01BUFIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lIEFGSU9fTUFQUl9TUEkxX1JFTUFQICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDEpICAgICAgICAvKiE8IFNQSTEgcmVtYXBwaW5nICovCisjZGVmaW5lIEFGSU9fTUFQUl9JMkMxX1JFTUFQICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IEkyQzEgcmVtYXBwaW5nICovCisjZGVmaW5lIEFGSU9fTUFQUl9VU0FSVDFfUkVNQVAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDQpICAgICAgICAvKiE8IFVTQVJUMSByZW1hcHBpbmcgKi8KKyNkZWZpbmUgQUZJT19NQVBSX1VTQVJUMl9SRU1BUCAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgICAgICAgIC8qITwgVVNBUlQyIHJlbWFwcGluZyAqLworCisjZGVmaW5lIEFGSU9fTUFQUl9VU0FSVDNfUkVNQVAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMzApICAgICAgICAvKiE8IFVTQVJUM19SRU1BUFsxOjBdIGJpdHMgKFVTQVJUMyByZW1hcHBpbmcpICovCisjZGVmaW5lIEFGSU9fTUFQUl9VU0FSVDNfUkVNQVBfMCAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lIEFGSU9fTUFQUl9VU0FSVDNfUkVNQVBfMSAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMjApICAgICAgICAvKiE8IEJpdCAxICovCisKKy8qIFVTQVJUM19SRU1BUCBjb25maWd1cmF0aW9uICovCisjZGVmaW5lIEFGSU9fTUFQUl9VU0FSVDNfUkVNQVBfTk9SRU1BUCAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDApICAgICAgICAvKiE8IE5vIHJlbWFwIChUWC9QQjEwLCBSWC9QQjExLCBDSy9QQjEyLCBDVFMvUEIxMywgUlRTL1BCMTQpICovCisjZGVmaW5lIEFGSU9fTUFQUl9VU0FSVDNfUkVNQVBfUEFSVElBTFJFTUFQICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAgICAgICAvKiE8IFBhcnRpYWwgcmVtYXAgKFRYL1BDMTAsIFJYL1BDMTEsIENLL1BDMTIsIENUUy9QQjEzLCBSVFMvUEIxNCkgKi8KKyNkZWZpbmUgQUZJT19NQVBSX1VTQVJUM19SRU1BUF9GVUxMUkVNQVAgICAgICgodWludDMyX3QpMHgwMDAwMDAzMCkgICAgICAgIC8qITwgRnVsbCByZW1hcCAoVFgvUEQ4LCBSWC9QRDksIENLL1BEMTAsIENUUy9QRDExLCBSVFMvUEQxMikgKi8KKworI2RlZmluZSBBRklPX01BUFJfVElNMV9SRU1BUCAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMEMwKSAgICAgICAgLyohPCBUSU0xX1JFTUFQWzE6MF0gYml0cyAoVElNMSByZW1hcHBpbmcpICovCisjZGVmaW5lIEFGSU9fTUFQUl9USU0xX1JFTUFQXzAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwNDApICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lIEFGSU9fTUFQUl9USU0xX1JFTUFQXzEgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApICAgICAgICAvKiE8IEJpdCAxICovCisKKy8qITwgVElNMV9SRU1BUCBjb25maWd1cmF0aW9uICovCisjZGVmaW5lIEFGSU9fTUFQUl9USU0xX1JFTUFQX05PUkVNQVAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDApICAgICAgICAvKiE8IE5vIHJlbWFwIChFVFIvUEExMiwgQ0gxL1BBOCwgQ0gyL1BBOSwgQ0gzL1BBMTAsIENINC9QQTExLCBCS0lOL1BCMTIsIENIMU4vUEIxMywgQ0gyTi9QQjE0LCBDSDNOL1BCMTUpICovCisjZGVmaW5lIEFGSU9fTUFQUl9USU0xX1JFTUFQX1BBUlRJQUxSRU1BUCAgICAoKHVpbnQzMl90KTB4MDAwMDAwNDApICAgICAgICAvKiE8IFBhcnRpYWwgcmVtYXAgKEVUUi9QQTEyLCBDSDEvUEE4LCBDSDIvUEE5LCBDSDMvUEExMCwgQ0g0L1BBMTEsIEJLSU4vUEE2LCBDSDFOL1BBNywgQ0gyTi9QQjAsIENIM04vUEIxKSAqLworI2RlZmluZSBBRklPX01BUFJfVElNMV9SRU1BUF9GVUxMUkVNQVAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMEMwKSAgICAgICAgLyohPCBGdWxsIHJlbWFwIChFVFIvUEU3LCBDSDEvUEU5LCBDSDIvUEUxMSwgQ0gzL1BFMTMsIENINC9QRTE0LCBCS0lOL1BFMTUsIENIMU4vUEU4LCBDSDJOL1BFMTAsIENIM04vUEUxMikgKi8KKworI2RlZmluZSBBRklPX01BUFJfVElNMl9SRU1BUCAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMzAwKSAgICAgICAgLyohPCBUSU0yX1JFTUFQWzE6MF0gYml0cyAoVElNMiByZW1hcHBpbmcpICovCisjZGVmaW5lIEFGSU9fTUFQUl9USU0yX1JFTUFQXzAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAxMDApICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lIEFGSU9fTUFQUl9USU0yX1JFTUFQXzEgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAyMDApICAgICAgICAvKiE8IEJpdCAxICovCisKKy8qITwgVElNMl9SRU1BUCBjb25maWd1cmF0aW9uICovCisjZGVmaW5lIEFGSU9fTUFQUl9USU0yX1JFTUFQX05PUkVNQVAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDApICAgICAgICAvKiE8IE5vIHJlbWFwIChDSDEvRVRSL1BBMCwgQ0gyL1BBMSwgQ0gzL1BBMiwgQ0g0L1BBMykgKi8KKyNkZWZpbmUgQUZJT19NQVBSX1RJTTJfUkVNQVBfUEFSVElBTFJFTUFQMSAgICgodWludDMyX3QpMHgwMDAwMDEwMCkgICAgICAgIC8qITwgUGFydGlhbCByZW1hcCAoQ0gxL0VUUi9QQTE1LCBDSDIvUEIzLCBDSDMvUEEyLCBDSDQvUEEzKSAqLworI2RlZmluZSBBRklPX01BUFJfVElNMl9SRU1BUF9QQVJUSUFMUkVNQVAyICAgKCh1aW50MzJfdCkweDAwMDAwMjAwKSAgICAgICAgLyohPCBQYXJ0aWFsIHJlbWFwIChDSDEvRVRSL1BBMCwgQ0gyL1BBMSwgQ0gzL1BCMTAsIENINC9QQjExKSAqLworI2RlZmluZSBBRklPX01BUFJfVElNMl9SRU1BUF9GVUxMUkVNQVAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMzAwKSAgICAgICAgLyohPCBGdWxsIHJlbWFwIChDSDEvRVRSL1BBMTUsIENIMi9QQjMsIENIMy9QQjEwLCBDSDQvUEIxMSkgKi8KKworI2RlZmluZSBBRklPX01BUFJfVElNM19SRU1BUCAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwQzAwKSAgICAgICAgLyohPCBUSU0zX1JFTUFQWzE6MF0gYml0cyAoVElNMyByZW1hcHBpbmcpICovCisjZGVmaW5lIEFGSU9fTUFQUl9USU0zX1JFTUFQXzAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lIEFGSU9fTUFQUl9USU0zX1JFTUFQXzEgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA4MDApICAgICAgICAvKiE8IEJpdCAxICovCisKKy8qITwgVElNM19SRU1BUCBjb25maWd1cmF0aW9uICovCisjZGVmaW5lIEFGSU9fTUFQUl9USU0zX1JFTUFQX05PUkVNQVAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDApICAgICAgICAvKiE8IE5vIHJlbWFwIChDSDEvUEE2LCBDSDIvUEE3LCBDSDMvUEIwLCBDSDQvUEIxKSAqLworI2RlZmluZSBBRklPX01BUFJfVElNM19SRU1BUF9QQVJUSUFMUkVNQVAgICAgKCh1aW50MzJfdCkweDAwMDAwODAwKSAgICAgICAgLyohPCBQYXJ0aWFsIHJlbWFwIChDSDEvUEI0LCBDSDIvUEI1LCBDSDMvUEIwLCBDSDQvUEIxKSAqLworI2RlZmluZSBBRklPX01BUFJfVElNM19SRU1BUF9GVUxMUkVNQVAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwQzAwKSAgICAgICAgLyohPCBGdWxsIHJlbWFwIChDSDEvUEM2LCBDSDIvUEM3LCBDSDMvUEM4LCBDSDQvUEM5KSAqLworCisjZGVmaW5lIEFGSU9fTUFQUl9USU00X1JFTUFQICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDEwMDApICAgICAgICAvKiE8IFRJTTRfUkVNQVAgYml0IChUSU00IHJlbWFwcGluZykgKi8KKworI2RlZmluZSBBRklPX01BUFJfQ0FOX1JFTUFQICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA2MDAwKSAgICAgICAgLyohPCBDQU5fUkVNQVBbMTowXSBiaXRzIChDQU4gQWx0ZXJuYXRlIGZ1bmN0aW9uIHJlbWFwcGluZykgKi8KKyNkZWZpbmUgQUZJT19NQVBSX0NBTl9SRU1BUF8wICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMjAwMCkgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgQUZJT19NQVBSX0NBTl9SRU1BUF8xICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgICAgICAgIC8qITwgQml0IDEgKi8KKworLyohPCBDQU5fUkVNQVAgY29uZmlndXJhdGlvbiAqLworI2RlZmluZSBBRklPX01BUFJfQ0FOX1JFTUFQX1JFTUFQMSAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAwKSAgICAgICAgLyohPCBDQU5SWCBtYXBwZWQgdG8gUEExMSwgQ0FOVFggbWFwcGVkIHRvIFBBMTIgKi8KKyNkZWZpbmUgQUZJT19NQVBSX0NBTl9SRU1BUF9SRU1BUDIgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgICAgICAgIC8qITwgQ0FOUlggbWFwcGVkIHRvIFBCOCwgQ0FOVFggbWFwcGVkIHRvIFBCOSAqLworI2RlZmluZSBBRklPX01BUFJfQ0FOX1JFTUFQX1JFTUFQMyAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA2MDAwKSAgICAgICAgLyohPCBDQU5SWCBtYXBwZWQgdG8gUEQwLCBDQU5UWCBtYXBwZWQgdG8gUEQxICovCisKKyNkZWZpbmUgQUZJT19NQVBSX1BEMDFfUkVNQVAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwODAwMCkgICAgICAgIC8qITwgUG9ydCBEMC9Qb3J0IEQxIG1hcHBpbmcgb24gT1NDX0lOL09TQ19PVVQgKi8KKyNkZWZpbmUgQUZJT19NQVBSX1RJTTVDSDRfSVJFTUFQICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAxMDAwMCkgICAgICAgIC8qITwgVElNNSBDaGFubmVsNCBJbnRlcm5hbCBSZW1hcCAqLworI2RlZmluZSBBRklPX01BUFJfQURDMV9FVFJHSU5KX1JFTUFQICAgICAgICAgKCh1aW50MzJfdCkweDAwMDIwMDAwKSAgICAgICAgLyohPCBBREMgMSBFeHRlcm5hbCBUcmlnZ2VyIEluamVjdGVkIENvbnZlcnNpb24gcmVtYXBwaW5nICovCisjZGVmaW5lIEFGSU9fTUFQUl9BREMxX0VUUkdSRUdfUkVNQVAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwNDAwMDApICAgICAgICAvKiE8IEFEQyAxIEV4dGVybmFsIFRyaWdnZXIgUmVndWxhciBDb252ZXJzaW9uIHJlbWFwcGluZyAqLworI2RlZmluZSBBRklPX01BUFJfQURDMl9FVFJHSU5KX1JFTUFQICAgICAgICAgKCh1aW50MzJfdCkweDAwMDgwMDAwKSAgICAgICAgLyohPCBBREMgMiBFeHRlcm5hbCBUcmlnZ2VyIEluamVjdGVkIENvbnZlcnNpb24gcmVtYXBwaW5nICovCisjZGVmaW5lIEFGSU9fTUFQUl9BREMyX0VUUkdSRUdfUkVNQVAgICAgICAgICAoKHVpbnQzMl90KTB4MDAxMDAwMDApICAgICAgICAvKiE8IEFEQyAyIEV4dGVybmFsIFRyaWdnZXIgUmVndWxhciBDb252ZXJzaW9uIHJlbWFwcGluZyAqLworCisvKiE8IFNXSl9DRkcgY29uZmlndXJhdGlvbiAqLworI2RlZmluZSBBRklPX01BUFJfU1dKX0NGRyAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA3MDAwMDAwKSAgICAgICAgLyohPCBTV0pfQ0ZHWzI6MF0gYml0cyAoU2VyaWFsIFdpcmUgSlRBRyBjb25maWd1cmF0aW9uKSAqLworI2RlZmluZSBBRklPX01BUFJfU1dKX0NGR18wICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAxMDAwMDAwKSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSBBRklPX01BUFJfU1dKX0NGR18xICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAyMDAwMDAwKSAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSBBRklPX01BUFJfU1dKX0NGR18yICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA0MDAwMDAwKSAgICAgICAgLyohPCBCaXQgMiAqLworCisjZGVmaW5lIEFGSU9fTUFQUl9TV0pfQ0ZHX1JFU0VUICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDApICAgICAgICAvKiE8IEZ1bGwgU1dKIChKVEFHLURQICsgU1ctRFApIDogUmVzZXQgU3RhdGUgKi8KKyNkZWZpbmUgQUZJT19NQVBSX1NXSl9DRkdfTk9KTlRSU1QgICAgICAgICAgICgodWludDMyX3QpMHgwMTAwMDAwMCkgICAgICAgIC8qITwgRnVsbCBTV0ogKEpUQUctRFAgKyBTVy1EUCkgYnV0IHdpdGhvdXQgSk5UUlNUICovCisjZGVmaW5lIEFGSU9fTUFQUl9TV0pfQ0ZHX0pUQUdESVNBQkxFICAgICAgICAoKHVpbnQzMl90KTB4MDIwMDAwMDApICAgICAgICAvKiE8IEpUQUctRFAgRGlzYWJsZWQgYW5kIFNXLURQIEVuYWJsZWQgKi8KKyNkZWZpbmUgQUZJT19NQVBSX1NXSl9DRkdfRElTQUJMRSAgICAgICAgICAgICgodWludDMyX3QpMHgwNDAwMDAwMCkgICAgICAgIC8qITwgSlRBRy1EUCBEaXNhYmxlZCBhbmQgU1ctRFAgRGlzYWJsZWQgKi8KKworI2lmZGVmIFNUTTMyRjEwWF9DTAorLyohPCBFVEhfUkVNQVAgY29uZmlndXJhdGlvbiAqLworICNkZWZpbmUgQUZJT19NQVBSX0VUSF9SRU1BUCAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDIwMDAwMCkgICAgICAgIC8qITwgU1BJM19SRU1BUCBiaXQgKEV0aGVybmV0IE1BQyBJL08gcmVtYXBwaW5nKSAqLworCisvKiE8IENBTjJfUkVNQVAgY29uZmlndXJhdGlvbiAqLworICNkZWZpbmUgQUZJT19NQVBSX0NBTjJfUkVNQVAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDQwMDAwMCkgICAgICAgIC8qITwgQ0FOMl9SRU1BUCBiaXQgKENBTjIgSS9PIHJlbWFwcGluZykgKi8KKworLyohPCBNSUlfUk1JSV9TRUwgY29uZmlndXJhdGlvbiAqLworICNkZWZpbmUgQUZJT19NQVBSX01JSV9STUlJX1NFTCAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDgwMDAwMCkgICAgICAgIC8qITwgTUlJX1JNSUlfU0VMIGJpdCAoRXRoZXJuZXQgTUlJIG9yIFJNSUkgc2VsZWN0aW9uKSAqLworCisvKiE8IFNQSTNfUkVNQVAgY29uZmlndXJhdGlvbiAqLworICNkZWZpbmUgQUZJT19NQVBSX1NQSTNfUkVNQVAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgxMDAwMDAwMCkgICAgICAgIC8qITwgU1BJM19SRU1BUCBiaXQgKFNQSTMgcmVtYXBwaW5nKSAqLworCisvKiE8IFRJTTJJVFIxX0lSRU1BUCBjb25maWd1cmF0aW9uICovCisgI2RlZmluZSBBRklPX01BUFJfVElNMklUUjFfSVJFTUFQICAgICAgICAgICAgKCh1aW50MzJfdCkweDIwMDAwMDAwKSAgICAgICAgLyohPCBUSU0ySVRSMV9JUkVNQVAgYml0IChUSU0yIGludGVybmFsIHRyaWdnZXIgMSByZW1hcHBpbmcpICovCisKKy8qITwgUFRQX1BQU19SRU1BUCBjb25maWd1cmF0aW9uICovCisgI2RlZmluZSBBRklPX01BUFJfUFRQX1BQU19SRU1BUCAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDQwMDAwMDAwKSAgICAgICAgLyohPCBQVFBfUFBTX1JFTUFQIGJpdCAoRXRoZXJuZXQgUFRQIFBQUyByZW1hcHBpbmcpICovCisjZW5kaWYKKworLyoqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgQUZJT19FWFRJQ1IxIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgQUZJT19FWFRJQ1IxX0VYVEkwICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDBGKSAgICAgICAgICAgIC8qITwgRVhUSSAwIGNvbmZpZ3VyYXRpb24gKi8KKyNkZWZpbmUgQUZJT19FWFRJQ1IxX0VYVEkxICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMEYwKSAgICAgICAgICAgIC8qITwgRVhUSSAxIGNvbmZpZ3VyYXRpb24gKi8KKyNkZWZpbmUgQUZJT19FWFRJQ1IxX0VYVEkyICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwRjAwKSAgICAgICAgICAgIC8qITwgRVhUSSAyIGNvbmZpZ3VyYXRpb24gKi8KKyNkZWZpbmUgQUZJT19FWFRJQ1IxX0VYVEkzICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHhGMDAwKSAgICAgICAgICAgIC8qITwgRVhUSSAzIGNvbmZpZ3VyYXRpb24gKi8KKworLyohPCBFWFRJMCBjb25maWd1cmF0aW9uICovCisjZGVmaW5lIEFGSU9fRVhUSUNSMV9FWFRJMF9QQSAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMCkgICAgICAgICAgICAvKiE8IFBBWzBdIHBpbiAqLworI2RlZmluZSBBRklPX0VYVElDUjFfRVhUSTBfUEIgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDEpICAgICAgICAgICAgLyohPCBQQlswXSBwaW4gKi8KKyNkZWZpbmUgQUZJT19FWFRJQ1IxX0VYVEkwX1BDICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAyKSAgICAgICAgICAgIC8qITwgUENbMF0gcGluICovCisjZGVmaW5lIEFGSU9fRVhUSUNSMV9FWFRJMF9QRCAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMykgICAgICAgICAgICAvKiE8IFBEWzBdIHBpbiAqLworI2RlZmluZSBBRklPX0VYVElDUjFfRVhUSTBfUEUgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDQpICAgICAgICAgICAgLyohPCBQRVswXSBwaW4gKi8KKyNkZWZpbmUgQUZJT19FWFRJQ1IxX0VYVEkwX1BGICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA1KSAgICAgICAgICAgIC8qITwgUEZbMF0gcGluICovCisjZGVmaW5lIEFGSU9fRVhUSUNSMV9FWFRJMF9QRyAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwNikgICAgICAgICAgICAvKiE8IFBHWzBdIHBpbiAqLworCisvKiE8IEVYVEkxIGNvbmZpZ3VyYXRpb24gKi8KKyNkZWZpbmUgQUZJT19FWFRJQ1IxX0VYVEkxX1BBICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAwKSAgICAgICAgICAgIC8qITwgUEFbMV0gcGluICovCisjZGVmaW5lIEFGSU9fRVhUSUNSMV9FWFRJMV9QQiAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAxMCkgICAgICAgICAgICAvKiE8IFBCWzFdIHBpbiAqLworI2RlZmluZSBBRklPX0VYVElDUjFfRVhUSTFfUEMgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMjApICAgICAgICAgICAgLyohPCBQQ1sxXSBwaW4gKi8KKyNkZWZpbmUgQUZJT19FWFRJQ1IxX0VYVEkxX1BEICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDMwKSAgICAgICAgICAgIC8qITwgUERbMV0gcGluICovCisjZGVmaW5lIEFGSU9fRVhUSUNSMV9FWFRJMV9QRSAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA0MCkgICAgICAgICAgICAvKiE8IFBFWzFdIHBpbiAqLworI2RlZmluZSBBRklPX0VYVElDUjFfRVhUSTFfUEYgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwNTApICAgICAgICAgICAgLyohPCBQRlsxXSBwaW4gKi8KKyNkZWZpbmUgQUZJT19FWFRJQ1IxX0VYVEkxX1BHICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDYwKSAgICAgICAgICAgIC8qITwgUEdbMV0gcGluICovCisKKy8qITwgRVhUSTIgY29uZmlndXJhdGlvbiAqLyAgCisjZGVmaW5lIEFGSU9fRVhUSUNSMV9FWFRJMl9QQSAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMCkgICAgICAgICAgICAvKiE8IFBBWzJdIHBpbiAqLworI2RlZmluZSBBRklPX0VYVElDUjFfRVhUSTJfUEIgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAxMDApICAgICAgICAgICAgLyohPCBQQlsyXSBwaW4gKi8KKyNkZWZpbmUgQUZJT19FWFRJQ1IxX0VYVEkyX1BDICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMjAwKSAgICAgICAgICAgIC8qITwgUENbMl0gcGluICovCisjZGVmaW5lIEFGSU9fRVhUSUNSMV9FWFRJMl9QRCAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDMwMCkgICAgICAgICAgICAvKiE8IFBEWzJdIHBpbiAqLworI2RlZmluZSBBRklPX0VYVElDUjFfRVhUSTJfUEUgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDA0MDApICAgICAgICAgICAgLyohPCBQRVsyXSBwaW4gKi8KKyNkZWZpbmUgQUZJT19FWFRJQ1IxX0VYVEkyX1BGICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwNTAwKSAgICAgICAgICAgIC8qITwgUEZbMl0gcGluICovCisjZGVmaW5lIEFGSU9fRVhUSUNSMV9FWFRJMl9QRyAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDYwMCkgICAgICAgICAgICAvKiE8IFBHWzJdIHBpbiAqLworCisvKiE8IEVYVEkzIGNvbmZpZ3VyYXRpb24gKi8KKyNkZWZpbmUgQUZJT19FWFRJQ1IxX0VYVEkzX1BBICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAwKSAgICAgICAgICAgIC8qITwgUEFbM10gcGluICovCisjZGVmaW5lIEFGSU9fRVhUSUNSMV9FWFRJM19QQiAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MTAwMCkgICAgICAgICAgICAvKiE8IFBCWzNdIHBpbiAqLworI2RlZmluZSBBRklPX0VYVElDUjFfRVhUSTNfUEMgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDIwMDApICAgICAgICAgICAgLyohPCBQQ1szXSBwaW4gKi8KKyNkZWZpbmUgQUZJT19FWFRJQ1IxX0VYVEkzX1BEICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgzMDAwKSAgICAgICAgICAgIC8qITwgUERbM10gcGluICovCisjZGVmaW5lIEFGSU9fRVhUSUNSMV9FWFRJM19QRSAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4NDAwMCkgICAgICAgICAgICAvKiE8IFBFWzNdIHBpbiAqLworI2RlZmluZSBBRklPX0VYVElDUjFfRVhUSTNfUEYgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDUwMDApICAgICAgICAgICAgLyohPCBQRlszXSBwaW4gKi8KKyNkZWZpbmUgQUZJT19FWFRJQ1IxX0VYVEkzX1BHICAgICAgICAgICAgICAgICgodWludDE2X3QpMHg2MDAwKSAgICAgICAgICAgIC8qITwgUEdbM10gcGluICovCisKKy8qKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIEFGSU9fRVhUSUNSMiByZWdpc3RlciAgKioqKioqKioqKioqKioqKiovCisjZGVmaW5lIEFGSU9fRVhUSUNSMl9FWFRJNCAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwRikgICAgICAgICAgICAvKiE8IEVYVEkgNCBjb25maWd1cmF0aW9uICovCisjZGVmaW5lIEFGSU9fRVhUSUNSMl9FWFRJNSAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDBGMCkgICAgICAgICAgICAvKiE8IEVYVEkgNSBjb25maWd1cmF0aW9uICovCisjZGVmaW5lIEFGSU9fRVhUSUNSMl9FWFRJNiAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MEYwMCkgICAgICAgICAgICAvKiE8IEVYVEkgNiBjb25maWd1cmF0aW9uICovCisjZGVmaW5lIEFGSU9fRVhUSUNSMl9FWFRJNyAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4RjAwMCkgICAgICAgICAgICAvKiE8IEVYVEkgNyBjb25maWd1cmF0aW9uICovCisKKy8qITwgRVhUSTQgY29uZmlndXJhdGlvbiAqLworI2RlZmluZSBBRklPX0VYVElDUjJfRVhUSTRfUEEgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDApICAgICAgICAgICAgLyohPCBQQVs0XSBwaW4gKi8KKyNkZWZpbmUgQUZJT19FWFRJQ1IyX0VYVEk0X1BCICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAxKSAgICAgICAgICAgIC8qITwgUEJbNF0gcGluICovCisjZGVmaW5lIEFGSU9fRVhUSUNSMl9FWFRJNF9QQyAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMikgICAgICAgICAgICAvKiE8IFBDWzRdIHBpbiAqLworI2RlZmluZSBBRklPX0VYVElDUjJfRVhUSTRfUEQgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDMpICAgICAgICAgICAgLyohPCBQRFs0XSBwaW4gKi8KKyNkZWZpbmUgQUZJT19FWFRJQ1IyX0VYVEk0X1BFICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA0KSAgICAgICAgICAgIC8qITwgUEVbNF0gcGluICovCisjZGVmaW5lIEFGSU9fRVhUSUNSMl9FWFRJNF9QRiAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwNSkgICAgICAgICAgICAvKiE8IFBGWzRdIHBpbiAqLworI2RlZmluZSBBRklPX0VYVElDUjJfRVhUSTRfUEcgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDYpICAgICAgICAgICAgLyohPCBQR1s0XSBwaW4gKi8KKworLyogRVhUSTUgY29uZmlndXJhdGlvbiAqLworI2RlZmluZSBBRklPX0VYVElDUjJfRVhUSTVfUEEgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDApICAgICAgICAgICAgLyohPCBQQVs1XSBwaW4gKi8KKyNkZWZpbmUgQUZJT19FWFRJQ1IyX0VYVEk1X1BCICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDEwKSAgICAgICAgICAgIC8qITwgUEJbNV0gcGluICovCisjZGVmaW5lIEFGSU9fRVhUSUNSMl9FWFRJNV9QQyAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAyMCkgICAgICAgICAgICAvKiE8IFBDWzVdIHBpbiAqLworI2RlZmluZSBBRklPX0VYVElDUjJfRVhUSTVfUEQgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMzApICAgICAgICAgICAgLyohPCBQRFs1XSBwaW4gKi8KKyNkZWZpbmUgQUZJT19FWFRJQ1IyX0VYVEk1X1BFICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDQwKSAgICAgICAgICAgIC8qITwgUEVbNV0gcGluICovCisjZGVmaW5lIEFGSU9fRVhUSUNSMl9FWFRJNV9QRiAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA1MCkgICAgICAgICAgICAvKiE8IFBGWzVdIHBpbiAqLworI2RlZmluZSBBRklPX0VYVElDUjJfRVhUSTVfUEcgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwNjApICAgICAgICAgICAgLyohPCBQR1s1XSBwaW4gKi8KKworLyohPCBFWFRJNiBjb25maWd1cmF0aW9uICovICAKKyNkZWZpbmUgQUZJT19FWFRJQ1IyX0VYVEk2X1BBICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAwKSAgICAgICAgICAgIC8qITwgUEFbNl0gcGluICovCisjZGVmaW5lIEFGSU9fRVhUSUNSMl9FWFRJNl9QQiAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDEwMCkgICAgICAgICAgICAvKiE8IFBCWzZdIHBpbiAqLworI2RlZmluZSBBRklPX0VYVElDUjJfRVhUSTZfUEMgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAyMDApICAgICAgICAgICAgLyohPCBQQ1s2XSBwaW4gKi8KKyNkZWZpbmUgQUZJT19FWFRJQ1IyX0VYVEk2X1BEICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMzAwKSAgICAgICAgICAgIC8qITwgUERbNl0gcGluICovCisjZGVmaW5lIEFGSU9fRVhUSUNSMl9FWFRJNl9QRSAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDQwMCkgICAgICAgICAgICAvKiE8IFBFWzZdIHBpbiAqLworI2RlZmluZSBBRklPX0VYVElDUjJfRVhUSTZfUEYgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDA1MDApICAgICAgICAgICAgLyohPCBQRls2XSBwaW4gKi8KKyNkZWZpbmUgQUZJT19FWFRJQ1IyX0VYVEk2X1BHICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwNjAwKSAgICAgICAgICAgIC8qITwgUEdbNl0gcGluICovCisKKy8qITwgRVhUSTcgY29uZmlndXJhdGlvbiAqLworI2RlZmluZSBBRklPX0VYVElDUjJfRVhUSTdfUEEgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDApICAgICAgICAgICAgLyohPCBQQVs3XSBwaW4gKi8KKyNkZWZpbmUgQUZJT19FWFRJQ1IyX0VYVEk3X1BCICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgxMDAwKSAgICAgICAgICAgIC8qITwgUEJbN10gcGluICovCisjZGVmaW5lIEFGSU9fRVhUSUNSMl9FWFRJN19QQyAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MjAwMCkgICAgICAgICAgICAvKiE8IFBDWzddIHBpbiAqLworI2RlZmluZSBBRklPX0VYVElDUjJfRVhUSTdfUEQgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDMwMDApICAgICAgICAgICAgLyohPCBQRFs3XSBwaW4gKi8KKyNkZWZpbmUgQUZJT19FWFRJQ1IyX0VYVEk3X1BFICAgICAgICAgICAgICAgICgodWludDE2X3QpMHg0MDAwKSAgICAgICAgICAgIC8qITwgUEVbN10gcGluICovCisjZGVmaW5lIEFGSU9fRVhUSUNSMl9FWFRJN19QRiAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4NTAwMCkgICAgICAgICAgICAvKiE8IFBGWzddIHBpbiAqLworI2RlZmluZSBBRklPX0VYVElDUjJfRVhUSTdfUEcgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDYwMDApICAgICAgICAgICAgLyohPCBQR1s3XSBwaW4gKi8KKworLyoqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgQUZJT19FWFRJQ1IzIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgQUZJT19FWFRJQ1IzX0VYVEk4ICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDBGKSAgICAgICAgICAgIC8qITwgRVhUSSA4IGNvbmZpZ3VyYXRpb24gKi8KKyNkZWZpbmUgQUZJT19FWFRJQ1IzX0VYVEk5ICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMEYwKSAgICAgICAgICAgIC8qITwgRVhUSSA5IGNvbmZpZ3VyYXRpb24gKi8KKyNkZWZpbmUgQUZJT19FWFRJQ1IzX0VYVEkxMCAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwRjAwKSAgICAgICAgICAgIC8qITwgRVhUSSAxMCBjb25maWd1cmF0aW9uICovCisjZGVmaW5lIEFGSU9fRVhUSUNSM19FWFRJMTEgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4RjAwMCkgICAgICAgICAgICAvKiE8IEVYVEkgMTEgY29uZmlndXJhdGlvbiAqLworCisvKiE8IEVYVEk4IGNvbmZpZ3VyYXRpb24gKi8KKyNkZWZpbmUgQUZJT19FWFRJQ1IzX0VYVEk4X1BBICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAwKSAgICAgICAgICAgIC8qITwgUEFbOF0gcGluICovCisjZGVmaW5lIEFGSU9fRVhUSUNSM19FWFRJOF9QQiAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMSkgICAgICAgICAgICAvKiE8IFBCWzhdIHBpbiAqLworI2RlZmluZSBBRklPX0VYVElDUjNfRVhUSThfUEMgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDIpICAgICAgICAgICAgLyohPCBQQ1s4XSBwaW4gKi8KKyNkZWZpbmUgQUZJT19FWFRJQ1IzX0VYVEk4X1BEICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAzKSAgICAgICAgICAgIC8qITwgUERbOF0gcGluICovCisjZGVmaW5lIEFGSU9fRVhUSUNSM19FWFRJOF9QRSAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwNCkgICAgICAgICAgICAvKiE8IFBFWzhdIHBpbiAqLworI2RlZmluZSBBRklPX0VYVElDUjNfRVhUSThfUEYgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDUpICAgICAgICAgICAgLyohPCBQRls4XSBwaW4gKi8KKyNkZWZpbmUgQUZJT19FWFRJQ1IzX0VYVEk4X1BHICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA2KSAgICAgICAgICAgIC8qITwgUEdbOF0gcGluICovCisKKy8qITwgRVhUSTkgY29uZmlndXJhdGlvbiAqLworI2RlZmluZSBBRklPX0VYVElDUjNfRVhUSTlfUEEgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDApICAgICAgICAgICAgLyohPCBQQVs5XSBwaW4gKi8KKyNkZWZpbmUgQUZJT19FWFRJQ1IzX0VYVEk5X1BCICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDEwKSAgICAgICAgICAgIC8qITwgUEJbOV0gcGluICovCisjZGVmaW5lIEFGSU9fRVhUSUNSM19FWFRJOV9QQyAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAyMCkgICAgICAgICAgICAvKiE8IFBDWzldIHBpbiAqLworI2RlZmluZSBBRklPX0VYVElDUjNfRVhUSTlfUEQgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMzApICAgICAgICAgICAgLyohPCBQRFs5XSBwaW4gKi8KKyNkZWZpbmUgQUZJT19FWFRJQ1IzX0VYVEk5X1BFICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDQwKSAgICAgICAgICAgIC8qITwgUEVbOV0gcGluICovCisjZGVmaW5lIEFGSU9fRVhUSUNSM19FWFRJOV9QRiAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA1MCkgICAgICAgICAgICAvKiE8IFBGWzldIHBpbiAqLworI2RlZmluZSBBRklPX0VYVElDUjNfRVhUSTlfUEcgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwNjApICAgICAgICAgICAgLyohPCBQR1s5XSBwaW4gKi8KKworLyohPCBFWFRJMTAgY29uZmlndXJhdGlvbiAqLyAgCisjZGVmaW5lIEFGSU9fRVhUSUNSM19FWFRJMTBfUEEgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMCkgICAgICAgICAgICAvKiE8IFBBWzEwXSBwaW4gKi8KKyNkZWZpbmUgQUZJT19FWFRJQ1IzX0VYVEkxMF9QQiAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMTAwKSAgICAgICAgICAgIC8qITwgUEJbMTBdIHBpbiAqLworI2RlZmluZSBBRklPX0VYVElDUjNfRVhUSTEwX1BDICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAyMDApICAgICAgICAgICAgLyohPCBQQ1sxMF0gcGluICovCisjZGVmaW5lIEFGSU9fRVhUSUNSM19FWFRJMTBfUEQgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDMwMCkgICAgICAgICAgICAvKiE8IFBEWzEwXSBwaW4gKi8KKyNkZWZpbmUgQUZJT19FWFRJQ1IzX0VYVEkxMF9QRSAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwNDAwKSAgICAgICAgICAgIC8qITwgUEVbMTBdIHBpbiAqLworI2RlZmluZSBBRklPX0VYVElDUjNfRVhUSTEwX1BGICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDA1MDApICAgICAgICAgICAgLyohPCBQRlsxMF0gcGluICovCisjZGVmaW5lIEFGSU9fRVhUSUNSM19FWFRJMTBfUEcgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDYwMCkgICAgICAgICAgICAvKiE8IFBHWzEwXSBwaW4gKi8KKworLyohPCBFWFRJMTEgY29uZmlndXJhdGlvbiAqLworI2RlZmluZSBBRklPX0VYVElDUjNfRVhUSTExX1BBICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDApICAgICAgICAgICAgLyohPCBQQVsxMV0gcGluICovCisjZGVmaW5lIEFGSU9fRVhUSUNSM19FWFRJMTFfUEIgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MTAwMCkgICAgICAgICAgICAvKiE8IFBCWzExXSBwaW4gKi8KKyNkZWZpbmUgQUZJT19FWFRJQ1IzX0VYVEkxMV9QQyAgICAgICAgICAgICAgICgodWludDE2X3QpMHgyMDAwKSAgICAgICAgICAgIC8qITwgUENbMTFdIHBpbiAqLworI2RlZmluZSBBRklPX0VYVElDUjNfRVhUSTExX1BEICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDMwMDApICAgICAgICAgICAgLyohPCBQRFsxMV0gcGluICovCisjZGVmaW5lIEFGSU9fRVhUSUNSM19FWFRJMTFfUEUgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4NDAwMCkgICAgICAgICAgICAvKiE8IFBFWzExXSBwaW4gKi8KKyNkZWZpbmUgQUZJT19FWFRJQ1IzX0VYVEkxMV9QRiAgICAgICAgICAgICAgICgodWludDE2X3QpMHg1MDAwKSAgICAgICAgICAgIC8qITwgUEZbMTFdIHBpbiAqLworI2RlZmluZSBBRklPX0VYVElDUjNfRVhUSTExX1BHICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDYwMDApICAgICAgICAgICAgLyohPCBQR1sxMV0gcGluICovCisKKy8qKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIEFGSU9fRVhUSUNSNCByZWdpc3RlciAgKioqKioqKioqKioqKioqKiovCisjZGVmaW5lIEFGSU9fRVhUSUNSNF9FWFRJMTIgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwRikgICAgICAgICAgICAvKiE8IEVYVEkgMTIgY29uZmlndXJhdGlvbiAqLworI2RlZmluZSBBRklPX0VYVElDUjRfRVhUSTEzICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwRjApICAgICAgICAgICAgLyohPCBFWFRJIDEzIGNvbmZpZ3VyYXRpb24gKi8KKyNkZWZpbmUgQUZJT19FWFRJQ1I0X0VYVEkxNCAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwRjAwKSAgICAgICAgICAgIC8qITwgRVhUSSAxNCBjb25maWd1cmF0aW9uICovCisjZGVmaW5lIEFGSU9fRVhUSUNSNF9FWFRJMTUgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4RjAwMCkgICAgICAgICAgICAvKiE8IEVYVEkgMTUgY29uZmlndXJhdGlvbiAqLworCisvKiBFWFRJMTIgY29uZmlndXJhdGlvbiAqLworI2RlZmluZSBBRklPX0VYVElDUjRfRVhUSTEyX1BBICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDApICAgICAgICAgICAgLyohPCBQQVsxMl0gcGluICovCisjZGVmaW5lIEFGSU9fRVhUSUNSNF9FWFRJMTJfUEIgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMSkgICAgICAgICAgICAvKiE8IFBCWzEyXSBwaW4gKi8KKyNkZWZpbmUgQUZJT19FWFRJQ1I0X0VYVEkxMl9QQyAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAyKSAgICAgICAgICAgIC8qITwgUENbMTJdIHBpbiAqLworI2RlZmluZSBBRklPX0VYVElDUjRfRVhUSTEyX1BEICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDMpICAgICAgICAgICAgLyohPCBQRFsxMl0gcGluICovCisjZGVmaW5lIEFGSU9fRVhUSUNSNF9FWFRJMTJfUEUgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwNCkgICAgICAgICAgICAvKiE8IFBFWzEyXSBwaW4gKi8KKyNkZWZpbmUgQUZJT19FWFRJQ1I0X0VYVEkxMl9QRiAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA1KSAgICAgICAgICAgIC8qITwgUEZbMTJdIHBpbiAqLworI2RlZmluZSBBRklPX0VYVElDUjRfRVhUSTEyX1BHICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDYpICAgICAgICAgICAgLyohPCBQR1sxMl0gcGluICovCisKKy8qIEVYVEkxMyBjb25maWd1cmF0aW9uICovCisjZGVmaW5lIEFGSU9fRVhUSUNSNF9FWFRJMTNfUEEgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMCkgICAgICAgICAgICAvKiE8IFBBWzEzXSBwaW4gKi8KKyNkZWZpbmUgQUZJT19FWFRJQ1I0X0VYVEkxM19QQiAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDEwKSAgICAgICAgICAgIC8qITwgUEJbMTNdIHBpbiAqLworI2RlZmluZSBBRklPX0VYVElDUjRfRVhUSTEzX1BDICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMjApICAgICAgICAgICAgLyohPCBQQ1sxM10gcGluICovCisjZGVmaW5lIEFGSU9fRVhUSUNSNF9FWFRJMTNfUEQgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAzMCkgICAgICAgICAgICAvKiE8IFBEWzEzXSBwaW4gKi8KKyNkZWZpbmUgQUZJT19FWFRJQ1I0X0VYVEkxM19QRSAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDQwKSAgICAgICAgICAgIC8qITwgUEVbMTNdIHBpbiAqLworI2RlZmluZSBBRklPX0VYVElDUjRfRVhUSTEzX1BGICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwNTApICAgICAgICAgICAgLyohPCBQRlsxM10gcGluICovCisjZGVmaW5lIEFGSU9fRVhUSUNSNF9FWFRJMTNfUEcgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA2MCkgICAgICAgICAgICAvKiE8IFBHWzEzXSBwaW4gKi8KKworLyohPCBFWFRJMTQgY29uZmlndXJhdGlvbiAqLyAgCisjZGVmaW5lIEFGSU9fRVhUSUNSNF9FWFRJMTRfUEEgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMCkgICAgICAgICAgICAvKiE8IFBBWzE0XSBwaW4gKi8KKyNkZWZpbmUgQUZJT19FWFRJQ1I0X0VYVEkxNF9QQiAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMTAwKSAgICAgICAgICAgIC8qITwgUEJbMTRdIHBpbiAqLworI2RlZmluZSBBRklPX0VYVElDUjRfRVhUSTE0X1BDICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAyMDApICAgICAgICAgICAgLyohPCBQQ1sxNF0gcGluICovCisjZGVmaW5lIEFGSU9fRVhUSUNSNF9FWFRJMTRfUEQgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDMwMCkgICAgICAgICAgICAvKiE8IFBEWzE0XSBwaW4gKi8KKyNkZWZpbmUgQUZJT19FWFRJQ1I0X0VYVEkxNF9QRSAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwNDAwKSAgICAgICAgICAgIC8qITwgUEVbMTRdIHBpbiAqLworI2RlZmluZSBBRklPX0VYVElDUjRfRVhUSTE0X1BGICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDA1MDApICAgICAgICAgICAgLyohPCBQRlsxNF0gcGluICovCisjZGVmaW5lIEFGSU9fRVhUSUNSNF9FWFRJMTRfUEcgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDYwMCkgICAgICAgICAgICAvKiE8IFBHWzE0XSBwaW4gKi8KKworLyohPCBFWFRJMTUgY29uZmlndXJhdGlvbiAqLworI2RlZmluZSBBRklPX0VYVElDUjRfRVhUSTE1X1BBICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDApICAgICAgICAgICAgLyohPCBQQVsxNV0gcGluICovCisjZGVmaW5lIEFGSU9fRVhUSUNSNF9FWFRJMTVfUEIgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MTAwMCkgICAgICAgICAgICAvKiE8IFBCWzE1XSBwaW4gKi8KKyNkZWZpbmUgQUZJT19FWFRJQ1I0X0VYVEkxNV9QQyAgICAgICAgICAgICAgICgodWludDE2X3QpMHgyMDAwKSAgICAgICAgICAgIC8qITwgUENbMTVdIHBpbiAqLworI2RlZmluZSBBRklPX0VYVElDUjRfRVhUSTE1X1BEICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDMwMDApICAgICAgICAgICAgLyohPCBQRFsxNV0gcGluICovCisjZGVmaW5lIEFGSU9fRVhUSUNSNF9FWFRJMTVfUEUgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4NDAwMCkgICAgICAgICAgICAvKiE8IFBFWzE1XSBwaW4gKi8KKyNkZWZpbmUgQUZJT19FWFRJQ1I0X0VYVEkxNV9QRiAgICAgICAgICAgICAgICgodWludDE2X3QpMHg1MDAwKSAgICAgICAgICAgIC8qITwgUEZbMTVdIHBpbiAqLworI2RlZmluZSBBRklPX0VYVElDUjRfRVhUSTE1X1BHICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDYwMDApICAgICAgICAgICAgLyohPCBQR1sxNV0gcGluICovCisKKyNpZiBkZWZpbmVkIChTVE0zMkYxMFhfTERfVkwpIHx8IGRlZmluZWQgKFNUTTMyRjEwWF9NRF9WTCkgfHwgZGVmaW5lZCAoU1RNMzJGMTBYX0hEX1ZMKQorLyoqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIEFGSU9fTUFQUjIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgQUZJT19NQVBSMl9USU0xNV9SRU1BUCAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgICAgICAgIC8qITwgVElNMTUgcmVtYXBwaW5nICovCisjZGVmaW5lIEFGSU9fTUFQUjJfVElNMTZfUkVNQVAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IFRJTTE2IHJlbWFwcGluZyAqLworI2RlZmluZSBBRklPX01BUFIyX1RJTTE3X1JFTUFQICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgICAgICAgLyohPCBUSU0xNyByZW1hcHBpbmcgKi8KKyNkZWZpbmUgQUZJT19NQVBSMl9DRUNfUkVNQVAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgICAgICAgIC8qITwgQ0VDIHJlbWFwcGluZyAqLworI2RlZmluZSBBRklPX01BUFIyX1RJTTFfRE1BX1JFTUFQICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDEwKSAgICAgICAgLyohPCBUSU0xX0RNQSByZW1hcHBpbmcgKi8KKyNlbmRpZgorCisjaWZkZWYgU1RNMzJGMTBYX0hEX1ZMCisjZGVmaW5lIEFGSU9fTUFQUjJfVElNMTNfUkVNQVAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAxMDApICAgICAgICAvKiE8IFRJTTEzIHJlbWFwcGluZyAqLworI2RlZmluZSBBRklPX01BUFIyX1RJTTE0X1JFTUFQICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMjAwKSAgICAgICAgLyohPCBUSU0xNCByZW1hcHBpbmcgKi8KKyNkZWZpbmUgQUZJT19NQVBSMl9GU01DX05BRFZfUkVNQVAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDQwMCkgICAgICAgIC8qITwgRlNNQyBOQURWIHJlbWFwcGluZyAqLworI2RlZmluZSBBRklPX01BUFIyX1RJTTY3X0RBQ19ETUFfUkVNQVAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwODAwKSAgICAgICAgLyohPCBUSU02L1RJTTcgYW5kIERBQyBETUEgcmVtYXBwaW5nICovCisjZGVmaW5lIEFGSU9fTUFQUjJfVElNMTJfUkVNQVAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDEwMDApICAgICAgICAvKiE8IFRJTTEyIHJlbWFwcGluZyAqLworI2RlZmluZSBBRklPX01BUFIyX01JU0NfUkVNQVAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAyMDAwKSAgICAgICAgLyohPCBNaXNjZWxsYW5lb3VzIHJlbWFwcGluZyAqLworI2VuZGlmCisKKyNpZmRlZiBTVE0zMkYxMFhfWEwgCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgQUZJT19NQVBSMiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqLworI2RlZmluZSBBRklPX01BUFIyX1RJTTlfUkVNQVAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKSAgICAgICAgLyohPCBUSU05IHJlbWFwcGluZyAqLworI2RlZmluZSBBRklPX01BUFIyX1RJTTEwX1JFTUFQICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDQwKSAgICAgICAgLyohPCBUSU0xMCByZW1hcHBpbmcgKi8KKyNkZWZpbmUgQUZJT19NQVBSMl9USU0xMV9SRU1BUCAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA4MCkgICAgICAgIC8qITwgVElNMTEgcmVtYXBwaW5nICovCisjZGVmaW5lIEFGSU9fTUFQUjJfVElNMTNfUkVNQVAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAxMDApICAgICAgICAvKiE8IFRJTTEzIHJlbWFwcGluZyAqLworI2RlZmluZSBBRklPX01BUFIyX1RJTTE0X1JFTUFQICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMjAwKSAgICAgICAgLyohPCBUSU0xNCByZW1hcHBpbmcgKi8KKyNkZWZpbmUgQUZJT19NQVBSMl9GU01DX05BRFZfUkVNQVAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDQwMCkgICAgICAgIC8qITwgRlNNQyBOQURWIHJlbWFwcGluZyAqLworI2VuZGlmCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3lzdGVtVGljayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBTeXNUaWNrX0NUUkwgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqLworI2RlZmluZSAgU3lzVGlja19DVFJMX0VOQUJMRSAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxKSAgICAgICAgLyohPCBDb3VudGVyIGVuYWJsZSAqLworI2RlZmluZSAgU3lzVGlja19DVFJMX1RJQ0tJTlQgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAyKSAgICAgICAgLyohPCBDb3VudGluZyBkb3duIHRvIDAgcGVuZHMgdGhlIFN5c1RpY2sgaGFuZGxlciAqLworI2RlZmluZSAgU3lzVGlja19DVFJMX0NMS1NPVVJDRSAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgICAgICAgLyohPCBDbG9jayBzb3VyY2UgKi8KKyNkZWZpbmUgIFN5c1RpY2tfQ1RSTF9DT1VOVEZMQUcgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAxMDAwMCkgICAgICAgIC8qITwgQ291bnQgRmxhZyAqLworCisvKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBTeXNUaWNrX0xPQUQgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqLworI2RlZmluZSAgU3lzVGlja19MT0FEX1JFTE9BRCAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwRkZGRkZGKSAgICAgICAgLyohPCBWYWx1ZSB0byBsb2FkIGludG8gdGhlIFN5c1RpY2sgQ3VycmVudCBWYWx1ZSBSZWdpc3RlciB3aGVuIHRoZSBjb3VudGVyIHJlYWNoZXMgMCAqLworCisvKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBTeXNUaWNrX1ZBTCByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgU3lzVGlja19WQUxfQ1VSUkVOVCAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwRkZGRkZGKSAgICAgICAgLyohPCBDdXJyZW50IHZhbHVlIGF0IHRoZSB0aW1lIHRoZSByZWdpc3RlciBpcyBhY2Nlc3NlZCAqLworCisvKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBTeXNUaWNrX0NBTElCIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqLworI2RlZmluZSAgU3lzVGlja19DQUxJQl9URU5NUyAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwRkZGRkZGKSAgICAgICAgLyohPCBSZWxvYWQgdmFsdWUgdG8gdXNlIGZvciAxMG1zIHRpbWluZyAqLworI2RlZmluZSAgU3lzVGlja19DQUxJQl9TS0VXICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDQwMDAwMDAwKSAgICAgICAgLyohPCBDYWxpYnJhdGlvbiB2YWx1ZSBpcyBub3QgZXhhY3RseSAxMCBtcyAqLworI2RlZmluZSAgU3lzVGlja19DQUxJQl9OT1JFRiAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDgwMDAwMDAwKSAgICAgICAgLyohPCBUaGUgcmVmZXJlbmNlIGNsb2NrIGlzIG5vdCBwcm92aWRlZCAqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgTmVzdGVkIFZlY3RvcmVkIEludGVycnVwdCBDb250cm9sbGVyICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIE5WSUNfSVNFUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIE5WSUNfSVNFUl9TRVRFTkEgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHhGRkZGRkZGRikgICAgICAgIC8qITwgSW50ZXJydXB0IHNldCBlbmFibGUgYml0cyAqLworI2RlZmluZSAgTlZJQ19JU0VSX1NFVEVOQV8wICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxKSAgICAgICAgLyohPCBiaXQgMCAqLworI2RlZmluZSAgTlZJQ19JU0VSX1NFVEVOQV8xICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAyKSAgICAgICAgLyohPCBiaXQgMSAqLworI2RlZmluZSAgTlZJQ19JU0VSX1NFVEVOQV8yICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgICAgICAgLyohPCBiaXQgMiAqLworI2RlZmluZSAgTlZJQ19JU0VSX1NFVEVOQV8zICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA4KSAgICAgICAgLyohPCBiaXQgMyAqLworI2RlZmluZSAgTlZJQ19JU0VSX1NFVEVOQV80ICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDEwKSAgICAgICAgLyohPCBiaXQgNCAqLworI2RlZmluZSAgTlZJQ19JU0VSX1NFVEVOQV81ICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKSAgICAgICAgLyohPCBiaXQgNSAqLworI2RlZmluZSAgTlZJQ19JU0VSX1NFVEVOQV82ICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDQwKSAgICAgICAgLyohPCBiaXQgNiAqLworI2RlZmluZSAgTlZJQ19JU0VSX1NFVEVOQV83ICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDgwKSAgICAgICAgLyohPCBiaXQgNyAqLworI2RlZmluZSAgTlZJQ19JU0VSX1NFVEVOQV84ICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKSAgICAgICAgLyohPCBiaXQgOCAqLworI2RlZmluZSAgTlZJQ19JU0VSX1NFVEVOQV85ICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMjAwKSAgICAgICAgLyohPCBiaXQgOSAqLworI2RlZmluZSAgTlZJQ19JU0VSX1NFVEVOQV8xMCAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwNDAwKSAgICAgICAgLyohPCBiaXQgMTAgKi8KKyNkZWZpbmUgIE5WSUNfSVNFUl9TRVRFTkFfMTEgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgICAgICAgIC8qITwgYml0IDExICovCisjZGVmaW5lICBOVklDX0lTRVJfU0VURU5BXzEyICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDEwMDApICAgICAgICAvKiE8IGJpdCAxMiAqLworI2RlZmluZSAgTlZJQ19JU0VSX1NFVEVOQV8xMyAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAyMDAwKSAgICAgICAgLyohPCBiaXQgMTMgKi8KKyNkZWZpbmUgIE5WSUNfSVNFUl9TRVRFTkFfMTQgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgICAgICAgIC8qITwgYml0IDE0ICovCisjZGVmaW5lICBOVklDX0lTRVJfU0VURU5BXzE1ICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDgwMDApICAgICAgICAvKiE8IGJpdCAxNSAqLworI2RlZmluZSAgTlZJQ19JU0VSX1NFVEVOQV8xNiAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDEwMDAwKSAgICAgICAgLyohPCBiaXQgMTYgKi8KKyNkZWZpbmUgIE5WSUNfSVNFUl9TRVRFTkFfMTcgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkgICAgICAgIC8qITwgYml0IDE3ICovCisjZGVmaW5lICBOVklDX0lTRVJfU0VURU5BXzE4ICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwNDAwMDApICAgICAgICAvKiE8IGJpdCAxOCAqLworI2RlZmluZSAgTlZJQ19JU0VSX1NFVEVOQV8xOSAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDgwMDAwKSAgICAgICAgLyohPCBiaXQgMTkgKi8KKyNkZWZpbmUgIE5WSUNfSVNFUl9TRVRFTkFfMjAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDEwMDAwMCkgICAgICAgIC8qITwgYml0IDIwICovCisjZGVmaW5lICBOVklDX0lTRVJfU0VURU5BXzIxICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAyMDAwMDApICAgICAgICAvKiE8IGJpdCAyMSAqLworI2RlZmluZSAgTlZJQ19JU0VSX1NFVEVOQV8yMiAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwNDAwMDAwKSAgICAgICAgLyohPCBiaXQgMjIgKi8KKyNkZWZpbmUgIE5WSUNfSVNFUl9TRVRFTkFfMjMgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDgwMDAwMCkgICAgICAgIC8qITwgYml0IDIzICovCisjZGVmaW5lICBOVklDX0lTRVJfU0VURU5BXzI0ICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDEwMDAwMDApICAgICAgICAvKiE8IGJpdCAyNCAqLworI2RlZmluZSAgTlZJQ19JU0VSX1NFVEVOQV8yNSAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAyMDAwMDAwKSAgICAgICAgLyohPCBiaXQgMjUgKi8KKyNkZWZpbmUgIE5WSUNfSVNFUl9TRVRFTkFfMjYgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwNDAwMDAwMCkgICAgICAgIC8qITwgYml0IDI2ICovCisjZGVmaW5lICBOVklDX0lTRVJfU0VURU5BXzI3ICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDgwMDAwMDApICAgICAgICAvKiE8IGJpdCAyNyAqLworI2RlZmluZSAgTlZJQ19JU0VSX1NFVEVOQV8yOCAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDEwMDAwMDAwKSAgICAgICAgLyohPCBiaXQgMjggKi8KKyNkZWZpbmUgIE5WSUNfSVNFUl9TRVRFTkFfMjkgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgyMDAwMDAwMCkgICAgICAgIC8qITwgYml0IDI5ICovCisjZGVmaW5lICBOVklDX0lTRVJfU0VURU5BXzMwICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4NDAwMDAwMDApICAgICAgICAvKiE8IGJpdCAzMCAqLworI2RlZmluZSAgTlZJQ19JU0VSX1NFVEVOQV8zMSAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDgwMDAwMDAwKSAgICAgICAgLyohPCBiaXQgMzEgKi8KKworLyoqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIE5WSUNfSUNFUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIE5WSUNfSUNFUl9DTFJFTkEgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGRkZGRkZGKSAgICAgICAgLyohPCBJbnRlcnJ1cHQgY2xlYXItZW5hYmxlIGJpdHMgKi8KKyNkZWZpbmUgIE5WSUNfSUNFUl9DTFJFTkFfMCAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgICAgICAgIC8qITwgYml0IDAgKi8KKyNkZWZpbmUgIE5WSUNfSUNFUl9DTFJFTkFfMSAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMikgICAgICAgIC8qITwgYml0IDEgKi8KKyNkZWZpbmUgIE5WSUNfSUNFUl9DTFJFTkFfMiAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNCkgICAgICAgIC8qITwgYml0IDIgKi8KKyNkZWZpbmUgIE5WSUNfSUNFUl9DTFJFTkFfMyAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgICAgICAgIC8qITwgYml0IDMgKi8KKyNkZWZpbmUgIE5WSUNfSUNFUl9DTFJFTkFfNCAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAxMCkgICAgICAgIC8qITwgYml0IDQgKi8KKyNkZWZpbmUgIE5WSUNfSUNFUl9DTFJFTkFfNSAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAyMCkgICAgICAgIC8qITwgYml0IDUgKi8KKyNkZWZpbmUgIE5WSUNfSUNFUl9DTFJFTkFfNiAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgICAgICAgIC8qITwgYml0IDYgKi8KKyNkZWZpbmUgIE5WSUNfSUNFUl9DTFJFTkFfNyAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA4MCkgICAgICAgIC8qITwgYml0IDcgKi8KKyNkZWZpbmUgIE5WSUNfSUNFUl9DTFJFTkFfOCAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDEwMCkgICAgICAgIC8qITwgYml0IDggKi8KKyNkZWZpbmUgIE5WSUNfSUNFUl9DTFJFTkFfOSAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkgICAgICAgIC8qITwgYml0IDkgKi8KKyNkZWZpbmUgIE5WSUNfSUNFUl9DTFJFTkFfMTAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDQwMCkgICAgICAgIC8qITwgYml0IDEwICovCisjZGVmaW5lICBOVklDX0lDRVJfQ0xSRU5BXzExICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA4MDApICAgICAgICAvKiE8IGJpdCAxMSAqLworI2RlZmluZSAgTlZJQ19JQ0VSX0NMUkVOQV8xMiAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKSAgICAgICAgLyohPCBiaXQgMTIgKi8KKyNkZWZpbmUgIE5WSUNfSUNFUl9DTFJFTkFfMTMgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMjAwMCkgICAgICAgIC8qITwgYml0IDEzICovCisjZGVmaW5lICBOVklDX0lDRVJfQ0xSRU5BXzE0ICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDQwMDApICAgICAgICAvKiE8IGJpdCAxNCAqLworI2RlZmluZSAgTlZJQ19JQ0VSX0NMUkVOQV8xNSAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKSAgICAgICAgLyohPCBiaXQgMTUgKi8KKyNkZWZpbmUgIE5WSUNfSUNFUl9DTFJFTkFfMTYgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAxMDAwMCkgICAgICAgIC8qITwgYml0IDE2ICovCisjZGVmaW5lICBOVklDX0lDRVJfQ0xSRU5BXzE3ICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMjAwMDApICAgICAgICAvKiE8IGJpdCAxNyAqLworI2RlZmluZSAgTlZJQ19JQ0VSX0NMUkVOQV8xOCAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDQwMDAwKSAgICAgICAgLyohPCBiaXQgMTggKi8KKyNkZWZpbmUgIE5WSUNfSUNFUl9DTFJFTkFfMTkgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA4MDAwMCkgICAgICAgIC8qITwgYml0IDE5ICovCisjZGVmaW5lICBOVklDX0lDRVJfQ0xSRU5BXzIwICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAxMDAwMDApICAgICAgICAvKiE8IGJpdCAyMCAqLworI2RlZmluZSAgTlZJQ19JQ0VSX0NMUkVOQV8yMSAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMjAwMDAwKSAgICAgICAgLyohPCBiaXQgMjEgKi8KKyNkZWZpbmUgIE5WSUNfSUNFUl9DTFJFTkFfMjIgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDQwMDAwMCkgICAgICAgIC8qITwgYml0IDIyICovCisjZGVmaW5lICBOVklDX0lDRVJfQ0xSRU5BXzIzICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA4MDAwMDApICAgICAgICAvKiE8IGJpdCAyMyAqLworI2RlZmluZSAgTlZJQ19JQ0VSX0NMUkVOQV8yNCAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAxMDAwMDAwKSAgICAgICAgLyohPCBiaXQgMjQgKi8KKyNkZWZpbmUgIE5WSUNfSUNFUl9DTFJFTkFfMjUgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMjAwMDAwMCkgICAgICAgIC8qITwgYml0IDI1ICovCisjZGVmaW5lICBOVklDX0lDRVJfQ0xSRU5BXzI2ICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDQwMDAwMDApICAgICAgICAvKiE8IGJpdCAyNiAqLworI2RlZmluZSAgTlZJQ19JQ0VSX0NMUkVOQV8yNyAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA4MDAwMDAwKSAgICAgICAgLyohPCBiaXQgMjcgKi8KKyNkZWZpbmUgIE5WSUNfSUNFUl9DTFJFTkFfMjggICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgxMDAwMDAwMCkgICAgICAgIC8qITwgYml0IDI4ICovCisjZGVmaW5lICBOVklDX0lDRVJfQ0xSRU5BXzI5ICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MjAwMDAwMDApICAgICAgICAvKiE8IGJpdCAyOSAqLworI2RlZmluZSAgTlZJQ19JQ0VSX0NMUkVOQV8zMCAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDQwMDAwMDAwKSAgICAgICAgLyohPCBiaXQgMzAgKi8KKyNkZWZpbmUgIE5WSUNfSUNFUl9DTFJFTkFfMzEgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHg4MDAwMDAwMCkgICAgICAgIC8qITwgYml0IDMxICovCisKKy8qKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBOVklDX0lTUFIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBOVklDX0lTUFJfU0VUUEVORCAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4RkZGRkZGRkYpICAgICAgICAvKiE8IEludGVycnVwdCBzZXQtcGVuZGluZyBiaXRzICovCisjZGVmaW5lICBOVklDX0lTUFJfU0VUUEVORF8wICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDEpICAgICAgICAvKiE8IGJpdCAwICovCisjZGVmaW5lICBOVklDX0lTUFJfU0VUUEVORF8xICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IGJpdCAxICovCisjZGVmaW5lICBOVklDX0lTUFJfU0VUUEVORF8yICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDQpICAgICAgICAvKiE8IGJpdCAyICovCisjZGVmaW5lICBOVklDX0lTUFJfU0VUUEVORF8zICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDgpICAgICAgICAvKiE8IGJpdCAzICovCisjZGVmaW5lICBOVklDX0lTUFJfU0VUUEVORF80ICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAgICAgICAvKiE8IGJpdCA0ICovCisjZGVmaW5lICBOVklDX0lTUFJfU0VUUEVORF81ICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMjApICAgICAgICAvKiE8IGJpdCA1ICovCisjZGVmaW5lICBOVklDX0lTUFJfU0VUUEVORF82ICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwNDApICAgICAgICAvKiE8IGJpdCA2ICovCisjZGVmaW5lICBOVklDX0lTUFJfU0VUUEVORF83ICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApICAgICAgICAvKiE8IGJpdCA3ICovCisjZGVmaW5lICBOVklDX0lTUFJfU0VUUEVORF84ICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAxMDApICAgICAgICAvKiE8IGJpdCA4ICovCisjZGVmaW5lICBOVklDX0lTUFJfU0VUUEVORF85ICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAyMDApICAgICAgICAvKiE8IGJpdCA5ICovCisjZGVmaW5lICBOVklDX0lTUFJfU0VUUEVORF8xMCAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApICAgICAgICAvKiE8IGJpdCAxMCAqLworI2RlZmluZSAgTlZJQ19JU1BSX1NFVFBFTkRfMTEgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwODAwKSAgICAgICAgLyohPCBiaXQgMTEgKi8KKyNkZWZpbmUgIE5WSUNfSVNQUl9TRVRQRU5EXzEyICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMTAwMCkgICAgICAgIC8qITwgYml0IDEyICovCisjZGVmaW5lICBOVklDX0lTUFJfU0VUUEVORF8xMyAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAgICAgICAvKiE8IGJpdCAxMyAqLworI2RlZmluZSAgTlZJQ19JU1BSX1NFVFBFTkRfMTQgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA0MDAwKSAgICAgICAgLyohPCBiaXQgMTQgKi8KKyNkZWZpbmUgIE5WSUNfSVNQUl9TRVRQRU5EXzE1ICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwODAwMCkgICAgICAgIC8qITwgYml0IDE1ICovCisjZGVmaW5lICBOVklDX0lTUFJfU0VUUEVORF8xNiAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMTAwMDApICAgICAgICAvKiE8IGJpdCAxNiAqLworI2RlZmluZSAgTlZJQ19JU1BSX1NFVFBFTkRfMTcgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDIwMDAwKSAgICAgICAgLyohPCBiaXQgMTcgKi8KKyNkZWZpbmUgIE5WSUNfSVNQUl9TRVRQRU5EXzE4ICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA0MDAwMCkgICAgICAgIC8qITwgYml0IDE4ICovCisjZGVmaW5lICBOVklDX0lTUFJfU0VUUEVORF8xOSAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAgICAgICAvKiE8IGJpdCAxOSAqLworI2RlZmluZSAgTlZJQ19JU1BSX1NFVFBFTkRfMjAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMTAwMDAwKSAgICAgICAgLyohPCBiaXQgMjAgKi8KKyNkZWZpbmUgIE5WSUNfSVNQUl9TRVRQRU5EXzIxICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDIwMDAwMCkgICAgICAgIC8qITwgYml0IDIxICovCisjZGVmaW5lICBOVklDX0lTUFJfU0VUUEVORF8yMiAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApICAgICAgICAvKiE8IGJpdCAyMiAqLworI2RlZmluZSAgTlZJQ19JU1BSX1NFVFBFTkRfMjMgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwODAwMDAwKSAgICAgICAgLyohPCBiaXQgMjMgKi8KKyNkZWZpbmUgIE5WSUNfSVNQUl9TRVRQRU5EXzI0ICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMTAwMDAwMCkgICAgICAgIC8qITwgYml0IDI0ICovCisjZGVmaW5lICBOVklDX0lTUFJfU0VUUEVORF8yNSAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDIwMDAwMDApICAgICAgICAvKiE8IGJpdCAyNSAqLworI2RlZmluZSAgTlZJQ19JU1BSX1NFVFBFTkRfMjYgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA0MDAwMDAwKSAgICAgICAgLyohPCBiaXQgMjYgKi8KKyNkZWZpbmUgIE5WSUNfSVNQUl9TRVRQRU5EXzI3ICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwODAwMDAwMCkgICAgICAgIC8qITwgYml0IDI3ICovCisjZGVmaW5lICBOVklDX0lTUFJfU0VUUEVORF8yOCAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwMDApICAgICAgICAvKiE8IGJpdCAyOCAqLworI2RlZmluZSAgTlZJQ19JU1BSX1NFVFBFTkRfMjkgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDIwMDAwMDAwKSAgICAgICAgLyohPCBiaXQgMjkgKi8KKyNkZWZpbmUgIE5WSUNfSVNQUl9TRVRQRU5EXzMwICAgICAgICAgICAgICAgICgodWludDMyX3QpMHg0MDAwMDAwMCkgICAgICAgIC8qITwgYml0IDMwICovCisjZGVmaW5lICBOVklDX0lTUFJfU0VUUEVORF8zMSAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4ODAwMDAwMDApICAgICAgICAvKiE8IGJpdCAzMSAqLworCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgTlZJQ19JQ1BSIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgTlZJQ19JQ1BSX0NMUlBFTkQgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGRkZGRkZGKSAgICAgICAgLyohPCBJbnRlcnJ1cHQgY2xlYXItcGVuZGluZyBiaXRzICovCisjZGVmaW5lICBOVklDX0lDUFJfQ0xSUEVORF8wICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDEpICAgICAgICAvKiE8IGJpdCAwICovCisjZGVmaW5lICBOVklDX0lDUFJfQ0xSUEVORF8xICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IGJpdCAxICovCisjZGVmaW5lICBOVklDX0lDUFJfQ0xSUEVORF8yICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDQpICAgICAgICAvKiE8IGJpdCAyICovCisjZGVmaW5lICBOVklDX0lDUFJfQ0xSUEVORF8zICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDgpICAgICAgICAvKiE8IGJpdCAzICovCisjZGVmaW5lICBOVklDX0lDUFJfQ0xSUEVORF80ICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAgICAgICAvKiE8IGJpdCA0ICovCisjZGVmaW5lICBOVklDX0lDUFJfQ0xSUEVORF81ICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMjApICAgICAgICAvKiE8IGJpdCA1ICovCisjZGVmaW5lICBOVklDX0lDUFJfQ0xSUEVORF82ICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwNDApICAgICAgICAvKiE8IGJpdCA2ICovCisjZGVmaW5lICBOVklDX0lDUFJfQ0xSUEVORF83ICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApICAgICAgICAvKiE8IGJpdCA3ICovCisjZGVmaW5lICBOVklDX0lDUFJfQ0xSUEVORF84ICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAxMDApICAgICAgICAvKiE8IGJpdCA4ICovCisjZGVmaW5lICBOVklDX0lDUFJfQ0xSUEVORF85ICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAyMDApICAgICAgICAvKiE8IGJpdCA5ICovCisjZGVmaW5lICBOVklDX0lDUFJfQ0xSUEVORF8xMCAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApICAgICAgICAvKiE8IGJpdCAxMCAqLworI2RlZmluZSAgTlZJQ19JQ1BSX0NMUlBFTkRfMTEgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwODAwKSAgICAgICAgLyohPCBiaXQgMTEgKi8KKyNkZWZpbmUgIE5WSUNfSUNQUl9DTFJQRU5EXzEyICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMTAwMCkgICAgICAgIC8qITwgYml0IDEyICovCisjZGVmaW5lICBOVklDX0lDUFJfQ0xSUEVORF8xMyAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAgICAgICAvKiE8IGJpdCAxMyAqLworI2RlZmluZSAgTlZJQ19JQ1BSX0NMUlBFTkRfMTQgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA0MDAwKSAgICAgICAgLyohPCBiaXQgMTQgKi8KKyNkZWZpbmUgIE5WSUNfSUNQUl9DTFJQRU5EXzE1ICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwODAwMCkgICAgICAgIC8qITwgYml0IDE1ICovCisjZGVmaW5lICBOVklDX0lDUFJfQ0xSUEVORF8xNiAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMTAwMDApICAgICAgICAvKiE8IGJpdCAxNiAqLworI2RlZmluZSAgTlZJQ19JQ1BSX0NMUlBFTkRfMTcgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDIwMDAwKSAgICAgICAgLyohPCBiaXQgMTcgKi8KKyNkZWZpbmUgIE5WSUNfSUNQUl9DTFJQRU5EXzE4ICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA0MDAwMCkgICAgICAgIC8qITwgYml0IDE4ICovCisjZGVmaW5lICBOVklDX0lDUFJfQ0xSUEVORF8xOSAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAgICAgICAvKiE8IGJpdCAxOSAqLworI2RlZmluZSAgTlZJQ19JQ1BSX0NMUlBFTkRfMjAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMTAwMDAwKSAgICAgICAgLyohPCBiaXQgMjAgKi8KKyNkZWZpbmUgIE5WSUNfSUNQUl9DTFJQRU5EXzIxICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDIwMDAwMCkgICAgICAgIC8qITwgYml0IDIxICovCisjZGVmaW5lICBOVklDX0lDUFJfQ0xSUEVORF8yMiAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApICAgICAgICAvKiE8IGJpdCAyMiAqLworI2RlZmluZSAgTlZJQ19JQ1BSX0NMUlBFTkRfMjMgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwODAwMDAwKSAgICAgICAgLyohPCBiaXQgMjMgKi8KKyNkZWZpbmUgIE5WSUNfSUNQUl9DTFJQRU5EXzI0ICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMTAwMDAwMCkgICAgICAgIC8qITwgYml0IDI0ICovCisjZGVmaW5lICBOVklDX0lDUFJfQ0xSUEVORF8yNSAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDIwMDAwMDApICAgICAgICAvKiE8IGJpdCAyNSAqLworI2RlZmluZSAgTlZJQ19JQ1BSX0NMUlBFTkRfMjYgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA0MDAwMDAwKSAgICAgICAgLyohPCBiaXQgMjYgKi8KKyNkZWZpbmUgIE5WSUNfSUNQUl9DTFJQRU5EXzI3ICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwODAwMDAwMCkgICAgICAgIC8qITwgYml0IDI3ICovCisjZGVmaW5lICBOVklDX0lDUFJfQ0xSUEVORF8yOCAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwMDApICAgICAgICAvKiE8IGJpdCAyOCAqLworI2RlZmluZSAgTlZJQ19JQ1BSX0NMUlBFTkRfMjkgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDIwMDAwMDAwKSAgICAgICAgLyohPCBiaXQgMjkgKi8KKyNkZWZpbmUgIE5WSUNfSUNQUl9DTFJQRU5EXzMwICAgICAgICAgICAgICAgICgodWludDMyX3QpMHg0MDAwMDAwMCkgICAgICAgIC8qITwgYml0IDMwICovCisjZGVmaW5lICBOVklDX0lDUFJfQ0xSUEVORF8zMSAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4ODAwMDAwMDApICAgICAgICAvKiE8IGJpdCAzMSAqLworCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgTlZJQ19JQUJSIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgTlZJQ19JQUJSX0FDVElWRSAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGRkZGRkZGKSAgICAgICAgLyohPCBJbnRlcnJ1cHQgYWN0aXZlIGZsYWdzICovCisjZGVmaW5lICBOVklDX0lBQlJfQUNUSVZFXzAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDEpICAgICAgICAvKiE8IGJpdCAwICovCisjZGVmaW5lICBOVklDX0lBQlJfQUNUSVZFXzEgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IGJpdCAxICovCisjZGVmaW5lICBOVklDX0lBQlJfQUNUSVZFXzIgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDQpICAgICAgICAvKiE8IGJpdCAyICovCisjZGVmaW5lICBOVklDX0lBQlJfQUNUSVZFXzMgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDgpICAgICAgICAvKiE8IGJpdCAzICovCisjZGVmaW5lICBOVklDX0lBQlJfQUNUSVZFXzQgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAgICAgICAvKiE8IGJpdCA0ICovCisjZGVmaW5lICBOVklDX0lBQlJfQUNUSVZFXzUgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMjApICAgICAgICAvKiE8IGJpdCA1ICovCisjZGVmaW5lICBOVklDX0lBQlJfQUNUSVZFXzYgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwNDApICAgICAgICAvKiE8IGJpdCA2ICovCisjZGVmaW5lICBOVklDX0lBQlJfQUNUSVZFXzcgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApICAgICAgICAvKiE8IGJpdCA3ICovCisjZGVmaW5lICBOVklDX0lBQlJfQUNUSVZFXzggICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAxMDApICAgICAgICAvKiE8IGJpdCA4ICovCisjZGVmaW5lICBOVklDX0lBQlJfQUNUSVZFXzkgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAyMDApICAgICAgICAvKiE8IGJpdCA5ICovCisjZGVmaW5lICBOVklDX0lBQlJfQUNUSVZFXzEwICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApICAgICAgICAvKiE8IGJpdCAxMCAqLworI2RlZmluZSAgTlZJQ19JQUJSX0FDVElWRV8xMSAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwODAwKSAgICAgICAgLyohPCBiaXQgMTEgKi8KKyNkZWZpbmUgIE5WSUNfSUFCUl9BQ1RJVkVfMTIgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMTAwMCkgICAgICAgIC8qITwgYml0IDEyICovCisjZGVmaW5lICBOVklDX0lBQlJfQUNUSVZFXzEzICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAgICAgICAvKiE8IGJpdCAxMyAqLworI2RlZmluZSAgTlZJQ19JQUJSX0FDVElWRV8xNCAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA0MDAwKSAgICAgICAgLyohPCBiaXQgMTQgKi8KKyNkZWZpbmUgIE5WSUNfSUFCUl9BQ1RJVkVfMTUgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwODAwMCkgICAgICAgIC8qITwgYml0IDE1ICovCisjZGVmaW5lICBOVklDX0lBQlJfQUNUSVZFXzE2ICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMTAwMDApICAgICAgICAvKiE8IGJpdCAxNiAqLworI2RlZmluZSAgTlZJQ19JQUJSX0FDVElWRV8xNyAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDIwMDAwKSAgICAgICAgLyohPCBiaXQgMTcgKi8KKyNkZWZpbmUgIE5WSUNfSUFCUl9BQ1RJVkVfMTggICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA0MDAwMCkgICAgICAgIC8qITwgYml0IDE4ICovCisjZGVmaW5lICBOVklDX0lBQlJfQUNUSVZFXzE5ICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAgICAgICAvKiE8IGJpdCAxOSAqLworI2RlZmluZSAgTlZJQ19JQUJSX0FDVElWRV8yMCAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMTAwMDAwKSAgICAgICAgLyohPCBiaXQgMjAgKi8KKyNkZWZpbmUgIE5WSUNfSUFCUl9BQ1RJVkVfMjEgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDIwMDAwMCkgICAgICAgIC8qITwgYml0IDIxICovCisjZGVmaW5lICBOVklDX0lBQlJfQUNUSVZFXzIyICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApICAgICAgICAvKiE8IGJpdCAyMiAqLworI2RlZmluZSAgTlZJQ19JQUJSX0FDVElWRV8yMyAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwODAwMDAwKSAgICAgICAgLyohPCBiaXQgMjMgKi8KKyNkZWZpbmUgIE5WSUNfSUFCUl9BQ1RJVkVfMjQgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMTAwMDAwMCkgICAgICAgIC8qITwgYml0IDI0ICovCisjZGVmaW5lICBOVklDX0lBQlJfQUNUSVZFXzI1ICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDIwMDAwMDApICAgICAgICAvKiE8IGJpdCAyNSAqLworI2RlZmluZSAgTlZJQ19JQUJSX0FDVElWRV8yNiAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA0MDAwMDAwKSAgICAgICAgLyohPCBiaXQgMjYgKi8KKyNkZWZpbmUgIE5WSUNfSUFCUl9BQ1RJVkVfMjcgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwODAwMDAwMCkgICAgICAgIC8qITwgYml0IDI3ICovCisjZGVmaW5lICBOVklDX0lBQlJfQUNUSVZFXzI4ICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwMDApICAgICAgICAvKiE8IGJpdCAyOCAqLworI2RlZmluZSAgTlZJQ19JQUJSX0FDVElWRV8yOSAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDIwMDAwMDAwKSAgICAgICAgLyohPCBiaXQgMjkgKi8KKyNkZWZpbmUgIE5WSUNfSUFCUl9BQ1RJVkVfMzAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHg0MDAwMDAwMCkgICAgICAgIC8qITwgYml0IDMwICovCisjZGVmaW5lICBOVklDX0lBQlJfQUNUSVZFXzMxICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4ODAwMDAwMDApICAgICAgICAvKiE8IGJpdCAzMSAqLworCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgTlZJQ19QUkkwIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgTlZJQ19JUFIwX1BSSV8wICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMEZGKSAgICAgICAgLyohPCBQcmlvcml0eSBvZiBpbnRlcnJ1cHQgMCAqLworI2RlZmluZSAgTlZJQ19JUFIwX1BSSV8xICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDBGRjAwKSAgICAgICAgLyohPCBQcmlvcml0eSBvZiBpbnRlcnJ1cHQgMSAqLworI2RlZmluZSAgTlZJQ19JUFIwX1BSSV8yICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwRkYwMDAwKSAgICAgICAgLyohPCBQcmlvcml0eSBvZiBpbnRlcnJ1cHQgMiAqLworI2RlZmluZSAgTlZJQ19JUFIwX1BSSV8zICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGMDAwMDAwKSAgICAgICAgLyohPCBQcmlvcml0eSBvZiBpbnRlcnJ1cHQgMyAqLworCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgTlZJQ19QUkkxIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgTlZJQ19JUFIxX1BSSV80ICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMEZGKSAgICAgICAgLyohPCBQcmlvcml0eSBvZiBpbnRlcnJ1cHQgNCAqLworI2RlZmluZSAgTlZJQ19JUFIxX1BSSV81ICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDBGRjAwKSAgICAgICAgLyohPCBQcmlvcml0eSBvZiBpbnRlcnJ1cHQgNSAqLworI2RlZmluZSAgTlZJQ19JUFIxX1BSSV82ICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwRkYwMDAwKSAgICAgICAgLyohPCBQcmlvcml0eSBvZiBpbnRlcnJ1cHQgNiAqLworI2RlZmluZSAgTlZJQ19JUFIxX1BSSV83ICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGMDAwMDAwKSAgICAgICAgLyohPCBQcmlvcml0eSBvZiBpbnRlcnJ1cHQgNyAqLworCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgTlZJQ19QUkkyIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgTlZJQ19JUFIyX1BSSV84ICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMEZGKSAgICAgICAgLyohPCBQcmlvcml0eSBvZiBpbnRlcnJ1cHQgOCAqLworI2RlZmluZSAgTlZJQ19JUFIyX1BSSV85ICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDBGRjAwKSAgICAgICAgLyohPCBQcmlvcml0eSBvZiBpbnRlcnJ1cHQgOSAqLworI2RlZmluZSAgTlZJQ19JUFIyX1BSSV8xMCAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwRkYwMDAwKSAgICAgICAgLyohPCBQcmlvcml0eSBvZiBpbnRlcnJ1cHQgMTAgKi8KKyNkZWZpbmUgIE5WSUNfSVBSMl9QUklfMTEgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHhGRjAwMDAwMCkgICAgICAgIC8qITwgUHJpb3JpdHkgb2YgaW50ZXJydXB0IDExICovCisKKy8qKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBOVklDX1BSSTMgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBOVklDX0lQUjNfUFJJXzEyICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwRkYpICAgICAgICAvKiE8IFByaW9yaXR5IG9mIGludGVycnVwdCAxMiAqLworI2RlZmluZSAgTlZJQ19JUFIzX1BSSV8xMyAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDBGRjAwKSAgICAgICAgLyohPCBQcmlvcml0eSBvZiBpbnRlcnJ1cHQgMTMgKi8KKyNkZWZpbmUgIE5WSUNfSVBSM19QUklfMTQgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMEZGMDAwMCkgICAgICAgIC8qITwgUHJpb3JpdHkgb2YgaW50ZXJydXB0IDE0ICovCisjZGVmaW5lICBOVklDX0lQUjNfUFJJXzE1ICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4RkYwMDAwMDApICAgICAgICAvKiE8IFByaW9yaXR5IG9mIGludGVycnVwdCAxNSAqLworCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgTlZJQ19QUkk0IHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgTlZJQ19JUFI0X1BSSV8xNiAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMEZGKSAgICAgICAgLyohPCBQcmlvcml0eSBvZiBpbnRlcnJ1cHQgMTYgKi8KKyNkZWZpbmUgIE5WSUNfSVBSNF9QUklfMTcgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwRkYwMCkgICAgICAgIC8qITwgUHJpb3JpdHkgb2YgaW50ZXJydXB0IDE3ICovCisjZGVmaW5lICBOVklDX0lQUjRfUFJJXzE4ICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDBGRjAwMDApICAgICAgICAvKiE8IFByaW9yaXR5IG9mIGludGVycnVwdCAxOCAqLworI2RlZmluZSAgTlZJQ19JUFI0X1BSSV8xOSAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGMDAwMDAwKSAgICAgICAgLyohPCBQcmlvcml0eSBvZiBpbnRlcnJ1cHQgMTkgKi8KKworLyoqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIE5WSUNfUFJJNSByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIE5WSUNfSVBSNV9QUklfMjAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDBGRikgICAgICAgIC8qITwgUHJpb3JpdHkgb2YgaW50ZXJydXB0IDIwICovCisjZGVmaW5lICBOVklDX0lQUjVfUFJJXzIxICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMEZGMDApICAgICAgICAvKiE8IFByaW9yaXR5IG9mIGludGVycnVwdCAyMSAqLworI2RlZmluZSAgTlZJQ19JUFI1X1BSSV8yMiAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwRkYwMDAwKSAgICAgICAgLyohPCBQcmlvcml0eSBvZiBpbnRlcnJ1cHQgMjIgKi8KKyNkZWZpbmUgIE5WSUNfSVBSNV9QUklfMjMgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHhGRjAwMDAwMCkgICAgICAgIC8qITwgUHJpb3JpdHkgb2YgaW50ZXJydXB0IDIzICovCisKKy8qKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBOVklDX1BSSTYgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBOVklDX0lQUjZfUFJJXzI0ICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwRkYpICAgICAgICAvKiE8IFByaW9yaXR5IG9mIGludGVycnVwdCAyNCAqLworI2RlZmluZSAgTlZJQ19JUFI2X1BSSV8yNSAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDBGRjAwKSAgICAgICAgLyohPCBQcmlvcml0eSBvZiBpbnRlcnJ1cHQgMjUgKi8KKyNkZWZpbmUgIE5WSUNfSVBSNl9QUklfMjYgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMEZGMDAwMCkgICAgICAgIC8qITwgUHJpb3JpdHkgb2YgaW50ZXJydXB0IDI2ICovCisjZGVmaW5lICBOVklDX0lQUjZfUFJJXzI3ICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4RkYwMDAwMDApICAgICAgICAvKiE8IFByaW9yaXR5IG9mIGludGVycnVwdCAyNyAqLworCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgTlZJQ19QUkk3IHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgTlZJQ19JUFI3X1BSSV8yOCAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMEZGKSAgICAgICAgLyohPCBQcmlvcml0eSBvZiBpbnRlcnJ1cHQgMjggKi8KKyNkZWZpbmUgIE5WSUNfSVBSN19QUklfMjkgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwRkYwMCkgICAgICAgIC8qITwgUHJpb3JpdHkgb2YgaW50ZXJydXB0IDI5ICovCisjZGVmaW5lICBOVklDX0lQUjdfUFJJXzMwICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDBGRjAwMDApICAgICAgICAvKiE8IFByaW9yaXR5IG9mIGludGVycnVwdCAzMCAqLworI2RlZmluZSAgTlZJQ19JUFI3X1BSSV8zMSAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGMDAwMDAwKSAgICAgICAgLyohPCBQcmlvcml0eSBvZiBpbnRlcnJ1cHQgMzEgKi8KKworLyoqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFNDQl9DUFVJRCByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIFNDQl9DUFVJRF9SRVZJU0lPTiAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwRikgICAgICAgIC8qITwgSW1wbGVtZW50YXRpb24gZGVmaW5lZCByZXZpc2lvbiBudW1iZXIgKi8KKyNkZWZpbmUgIFNDQl9DUFVJRF9QQVJUTk8gICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwRkZGMCkgICAgICAgIC8qITwgTnVtYmVyIG9mIHByb2Nlc3NvciB3aXRoaW4gZmFtaWx5ICovCisjZGVmaW5lICBTQ0JfQ1BVSURfQ29uc3RhbnQgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwRjAwMDApICAgICAgICAvKiE8IFJlYWRzIGFzIDB4MEYgKi8KKyNkZWZpbmUgIFNDQl9DUFVJRF9WQVJJQU5UICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMEYwMDAwMCkgICAgICAgIC8qITwgSW1wbGVtZW50YXRpb24gZGVmaW5lZCB2YXJpYW50IG51bWJlciAqLworI2RlZmluZSAgU0NCX0NQVUlEX0lNUExFTUVOVEVSICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGMDAwMDAwKSAgICAgICAgLyohPCBJbXBsZW1lbnRlciBjb2RlLiBBUk0gaXMgMHg0MSAqLworCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFNDQl9JQ1NSIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgU0NCX0lDU1JfVkVDVEFDVElWRSAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMUZGKSAgICAgICAgLyohPCBBY3RpdmUgSVNSIG51bWJlciBmaWVsZCAqLworI2RlZmluZSAgU0NCX0lDU1JfUkVUVE9CQVNFICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwODAwKSAgICAgICAgLyohPCBBbGwgYWN0aXZlIGV4Y2VwdGlvbnMgbWludXMgdGhlIElQU1JfY3VycmVudF9leGNlcHRpb24geWllbGRzIHRoZSBlbXB0eSBzZXQgKi8KKyNkZWZpbmUgIFNDQl9JQ1NSX1ZFQ1RQRU5ESU5HICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDNGRjAwMCkgICAgICAgIC8qITwgUGVuZGluZyBJU1IgbnVtYmVyIGZpZWxkICovCisjZGVmaW5lICBTQ0JfSUNTUl9JU1JQRU5ESU5HICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApICAgICAgICAvKiE8IEludGVycnVwdCBwZW5kaW5nIGZsYWcgKi8KKyNkZWZpbmUgIFNDQl9JQ1NSX0lTUlBSRUVNUFQgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDgwMDAwMCkgICAgICAgIC8qITwgSXQgaW5kaWNhdGVzIHRoYXQgYSBwZW5kaW5nIGludGVycnVwdCBiZWNvbWVzIGFjdGl2ZSBpbiB0aGUgbmV4dCBydW5uaW5nIGN5Y2xlICovCisjZGVmaW5lICBTQ0JfSUNTUl9QRU5EU1RDTFIgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDIwMDAwMDApICAgICAgICAvKiE8IENsZWFyIHBlbmRpbmcgU3lzVGljayBiaXQgKi8KKyNkZWZpbmUgIFNDQl9JQ1NSX1BFTkRTVFNFVCAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwNDAwMDAwMCkgICAgICAgIC8qITwgU2V0IHBlbmRpbmcgU3lzVGljayBiaXQgKi8KKyNkZWZpbmUgIFNDQl9JQ1NSX1BFTkRTVkNMUiAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwODAwMDAwMCkgICAgICAgIC8qITwgQ2xlYXIgcGVuZGluZyBwZW5kU1YgYml0ICovCisjZGVmaW5lICBTQ0JfSUNTUl9QRU5EU1ZTRVQgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwMDApICAgICAgICAvKiE8IFNldCBwZW5kaW5nIHBlbmRTViBiaXQgKi8KKyNkZWZpbmUgIFNDQl9JQ1NSX05NSVBFTkRTRVQgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHg4MDAwMDAwMCkgICAgICAgIC8qITwgU2V0IHBlbmRpbmcgTk1JIGJpdCAqLworCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFNDQl9WVE9SIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgU0NCX1ZUT1JfVEJMT0ZGICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDFGRkZGRjgwKSAgICAgICAgLyohPCBWZWN0b3IgdGFibGUgYmFzZSBvZmZzZXQgZmllbGQgKi8KKyNkZWZpbmUgIFNDQl9WVE9SX1RCTEJBU0UgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgyMDAwMDAwMCkgICAgICAgIC8qITwgVGFibGUgYmFzZSBpbiBjb2RlKDApIG9yIFJBTSgxKSAqLworCisvKiE8KioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBTQ0JfQUlSQ1IgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBTQ0JfQUlSQ1JfVkVDVFJFU0VUICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDEpICAgICAgICAvKiE8IFN5c3RlbSBSZXNldCBiaXQgKi8KKyNkZWZpbmUgIFNDQl9BSVJDUl9WRUNUQ0xSQUNUSVZFICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMikgICAgICAgIC8qITwgQ2xlYXIgYWN0aXZlIHZlY3RvciBiaXQgKi8KKyNkZWZpbmUgIFNDQl9BSVJDUl9TWVNSRVNFVFJFUSAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNCkgICAgICAgIC8qITwgUmVxdWVzdHMgY2hpcCBjb250cm9sIGxvZ2ljIHRvIGdlbmVyYXRlIGEgcmVzZXQgKi8KKworI2RlZmluZSAgU0NCX0FJUkNSX1BSSUdST1VQICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwNzAwKSAgICAgICAgLyohPCBQUklHUk9VUFsyOjBdIGJpdHMgKFByaW9yaXR5IGdyb3VwKSAqLworI2RlZmluZSAgU0NCX0FJUkNSX1BSSUdST1VQXzAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgU0NCX0FJUkNSX1BSSUdST1VQXzEgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMjAwKSAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgU0NCX0FJUkNSX1BSSUdST1VQXzIgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwNDAwKSAgICAgICAgLyohPCBCaXQgMiAgKi8KKworLyogcHJvcml0eSBncm91cCBjb25maWd1cmF0aW9uICovCisjZGVmaW5lICBTQ0JfQUlSQ1JfUFJJR1JPVVAwICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDApICAgICAgICAvKiE8IFByaW9yaXR5IGdyb3VwPTAgKDcgYml0cyBvZiBwcmUtZW1wdGlvbiBwcmlvcml0eSwgMSBiaXQgb2Ygc3VicHJpb3JpdHkpICovCisjZGVmaW5lICBTQ0JfQUlSQ1JfUFJJR1JPVVAxICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAxMDApICAgICAgICAvKiE8IFByaW9yaXR5IGdyb3VwPTEgKDYgYml0cyBvZiBwcmUtZW1wdGlvbiBwcmlvcml0eSwgMiBiaXRzIG9mIHN1YnByaW9yaXR5KSAqLworI2RlZmluZSAgU0NCX0FJUkNSX1BSSUdST1VQMiAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMjAwKSAgICAgICAgLyohPCBQcmlvcml0eSBncm91cD0yICg1IGJpdHMgb2YgcHJlLWVtcHRpb24gcHJpb3JpdHksIDMgYml0cyBvZiBzdWJwcmlvcml0eSkgKi8KKyNkZWZpbmUgIFNDQl9BSVJDUl9QUklHUk9VUDMgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDMwMCkgICAgICAgIC8qITwgUHJpb3JpdHkgZ3JvdXA9MyAoNCBiaXRzIG9mIHByZS1lbXB0aW9uIHByaW9yaXR5LCA0IGJpdHMgb2Ygc3VicHJpb3JpdHkpICovCisjZGVmaW5lICBTQ0JfQUlSQ1JfUFJJR1JPVVA0ICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApICAgICAgICAvKiE8IFByaW9yaXR5IGdyb3VwPTQgKDMgYml0cyBvZiBwcmUtZW1wdGlvbiBwcmlvcml0eSwgNSBiaXRzIG9mIHN1YnByaW9yaXR5KSAqLworI2RlZmluZSAgU0NCX0FJUkNSX1BSSUdST1VQNSAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwNTAwKSAgICAgICAgLyohPCBQcmlvcml0eSBncm91cD01ICgyIGJpdHMgb2YgcHJlLWVtcHRpb24gcHJpb3JpdHksIDYgYml0cyBvZiBzdWJwcmlvcml0eSkgKi8KKyNkZWZpbmUgIFNDQl9BSVJDUl9QUklHUk9VUDYgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDYwMCkgICAgICAgIC8qITwgUHJpb3JpdHkgZ3JvdXA9NiAoMSBiaXQgb2YgcHJlLWVtcHRpb24gcHJpb3JpdHksIDcgYml0cyBvZiBzdWJwcmlvcml0eSkgKi8KKyNkZWZpbmUgIFNDQl9BSVJDUl9QUklHUk9VUDcgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDcwMCkgICAgICAgIC8qITwgUHJpb3JpdHkgZ3JvdXA9NyAobm8gcHJlLWVtcHRpb24gcHJpb3JpdHksIDggYml0cyBvZiBzdWJwcmlvcml0eSkgKi8KKworI2RlZmluZSAgU0NCX0FJUkNSX0VORElBTkVTUyAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKSAgICAgICAgLyohPCBEYXRhIGVuZGlhbm5lc3MgYml0ICovCisjZGVmaW5lICBTQ0JfQUlSQ1JfVkVDVEtFWSAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4RkZGRjAwMDApICAgICAgICAvKiE8IFJlZ2lzdGVyIGtleSAoVkVDVEtFWSkgLSBSZWFkcyBhcyAweEZBMDUgKFZFQ1RLRVlTVEFUKSAqLworCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFNDQl9TQ1IgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgU0NCX1NDUl9TTEVFUE9ORVhJVCAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MDIpICAgICAgICAgICAgICAgLyohPCBTbGVlcCBvbiBleGl0IGJpdCAqLworI2RlZmluZSAgU0NCX1NDUl9TTEVFUERFRVAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MDQpICAgICAgICAgICAgICAgLyohPCBTbGVlcCBkZWVwIGJpdCAqLworI2RlZmluZSAgU0NCX1NDUl9TRVZPTlBFTkQgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MTApICAgICAgICAgICAgICAgLyohPCBXYWtlIHVwIGZyb20gV0ZFICovCisKKy8qKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFNDQl9DQ1IgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBTQ0JfQ0NSX05PTkJBU0VUSFJERU5BICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMSkgICAgICAgICAgICAvKiE8IFRocmVhZCBtb2RlIGNhbiBiZSBlbnRlcmVkIGZyb20gYW55IGxldmVsIGluIEhhbmRsZXIgbW9kZSBieSBjb250cm9sbGVkIHJldHVybiB2YWx1ZSAqLworI2RlZmluZSAgU0NCX0NDUl9VU0VSU0VUTVBFTkQgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDIpICAgICAgICAgICAgLyohPCBFbmFibGVzIHVzZXIgY29kZSB0byB3cml0ZSB0aGUgU29mdHdhcmUgVHJpZ2dlciBJbnRlcnJ1cHQgcmVnaXN0ZXIgdG8gdHJpZ2dlciAocGVuZCkgYSBNYWluIGV4Y2VwdGlvbiAqLworI2RlZmluZSAgU0NCX0NDUl9VTkFMSUdOX1RSUCAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDgpICAgICAgICAgICAgLyohPCBUcmFwIGZvciB1bmFsaWduZWQgYWNjZXNzICovCisjZGVmaW5lICBTQ0JfQ0NSX0RJVl8wX1RSUCAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAxMCkgICAgICAgICAgICAvKiE8IFRyYXAgb24gRGl2aWRlIGJ5IDAgKi8KKyNkZWZpbmUgIFNDQl9DQ1JfQkZIRk5NSUdOICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMTAwKSAgICAgICAgICAgIC8qITwgSGFuZGxlcnMgcnVubmluZyBhdCBwcmlvcml0eSAtMSBhbmQgLTIgKi8KKyNkZWZpbmUgIFNDQl9DQ1JfU1RLQUxJR04gICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMjAwKSAgICAgICAgICAgIC8qITwgT24gZXhjZXB0aW9uIGVudHJ5LCB0aGUgU1AgdXNlZCBwcmlvciB0byB0aGUgZXhjZXB0aW9uIGlzIGFkanVzdGVkIHRvIGJlIDgtYnl0ZSBhbGlnbmVkICovCisKKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgU0NCX1NIUFIgcmVnaXN0ZXIgKioqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBTQ0JfU0hQUl9QUklfTiAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwRkYpICAgICAgICAvKiE8IFByaW9yaXR5IG9mIHN5c3RlbSBoYW5kbGVyIDQsOCwgYW5kIDEyLiBNZW0gTWFuYWdlLCByZXNlcnZlZCBhbmQgRGVidWcgTW9uaXRvciAqLworI2RlZmluZSAgU0NCX1NIUFJfUFJJX04xICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDBGRjAwKSAgICAgICAgLyohPCBQcmlvcml0eSBvZiBzeXN0ZW0gaGFuZGxlciA1LDksIGFuZCAxMy4gQnVzIEZhdWx0LCByZXNlcnZlZCBhbmQgcmVzZXJ2ZWQgKi8KKyNkZWZpbmUgIFNDQl9TSFBSX1BSSV9OMiAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMEZGMDAwMCkgICAgICAgIC8qITwgUHJpb3JpdHkgb2Ygc3lzdGVtIGhhbmRsZXIgNiwxMCwgYW5kIDE0LiBVc2FnZSBGYXVsdCwgcmVzZXJ2ZWQgYW5kIFBlbmRTViAqLworI2RlZmluZSAgU0NCX1NIUFJfUFJJX04zICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGMDAwMDAwKSAgICAgICAgLyohPCBQcmlvcml0eSBvZiBzeXN0ZW0gaGFuZGxlciA3LDExLCBhbmQgMTUuIFJlc2VydmVkLCBTVkNhbGwgYW5kIFN5c1RpY2sgKi8KKworLyoqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFNDQl9TSENTUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIFNDQl9TSENTUl9NRU1GQVVMVEFDVCAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgICAgICAgIC8qITwgTWVtTWFuYWdlIGlzIGFjdGl2ZSAqLworI2RlZmluZSAgU0NCX1NIQ1NSX0JVU0ZBVUxUQUNUICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAyKSAgICAgICAgLyohPCBCdXNGYXVsdCBpcyBhY3RpdmUgKi8KKyNkZWZpbmUgIFNDQl9TSENTUl9VU0dGQVVMVEFDVCAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgICAgICAgIC8qITwgVXNhZ2VGYXVsdCBpcyBhY3RpdmUgKi8KKyNkZWZpbmUgIFNDQl9TSENTUl9TVkNBTExBQ1QgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA4MCkgICAgICAgIC8qITwgU1ZDYWxsIGlzIGFjdGl2ZSAqLworI2RlZmluZSAgU0NCX1NIQ1NSX01PTklUT1JBQ1QgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKSAgICAgICAgLyohPCBNb25pdG9yIGlzIGFjdGl2ZSAqLworI2RlZmluZSAgU0NCX1NIQ1NSX1BFTkRTVkFDVCAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwNDAwKSAgICAgICAgLyohPCBQZW5kU1YgaXMgYWN0aXZlICovCisjZGVmaW5lICBTQ0JfU0hDU1JfU1lTVElDS0FDVCAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA4MDApICAgICAgICAvKiE8IFN5c1RpY2sgaXMgYWN0aXZlICovCisjZGVmaW5lICBTQ0JfU0hDU1JfVVNHRkFVTFRQRU5ERUQgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDEwMDApICAgICAgICAvKiE8IFVzYWdlIEZhdWx0IGlzIHBlbmRlZCAqLworI2RlZmluZSAgU0NCX1NIQ1NSX01FTUZBVUxUUEVOREVEICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAyMDAwKSAgICAgICAgLyohPCBNZW1NYW5hZ2UgaXMgcGVuZGVkICovCisjZGVmaW5lICBTQ0JfU0hDU1JfQlVTRkFVTFRQRU5ERUQgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDQwMDApICAgICAgICAvKiE8IEJ1cyBGYXVsdCBpcyBwZW5kZWQgKi8KKyNkZWZpbmUgIFNDQl9TSENTUl9TVkNBTExQRU5ERUQgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwODAwMCkgICAgICAgIC8qITwgU1ZDYWxsIGlzIHBlbmRlZCAqLworI2RlZmluZSAgU0NCX1NIQ1NSX01FTUZBVUxURU5BICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDEwMDAwKSAgICAgICAgLyohPCBNZW1NYW5hZ2UgZW5hYmxlICovCisjZGVmaW5lICBTQ0JfU0hDU1JfQlVTRkFVTFRFTkEgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMjAwMDApICAgICAgICAvKiE8IEJ1cyBGYXVsdCBlbmFibGUgKi8KKyNkZWZpbmUgIFNDQl9TSENTUl9VU0dGQVVMVEVOQSAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA0MDAwMCkgICAgICAgIC8qITwgVXNhZ2VGYXVsdCBlbmFibGUgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBTQ0JfQ0ZTUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKy8qITwgTUZTUiAqLworI2RlZmluZSAgU0NCX0NGU1JfSUFDQ1ZJT0wgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxKSAgICAgICAgLyohPCBJbnN0cnVjdGlvbiBhY2Nlc3MgdmlvbGF0aW9uICovCisjZGVmaW5lICBTQ0JfQ0ZTUl9EQUNDVklPTCAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IERhdGEgYWNjZXNzIHZpb2xhdGlvbiAqLworI2RlZmluZSAgU0NCX0NGU1JfTVVOU1RLRVJSICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA4KSAgICAgICAgLyohPCBVbnN0YWNraW5nIGVycm9yICovCisjZGVmaW5lICBTQ0JfQ0ZTUl9NU1RLRVJSICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAgICAgICAvKiE8IFN0YWNraW5nIGVycm9yICovCisjZGVmaW5lICBTQ0JfQ0ZTUl9NTUFSVkFMSUQgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApICAgICAgICAvKiE8IE1lbW9yeSBNYW5hZ2UgQWRkcmVzcyBSZWdpc3RlciBhZGRyZXNzIHZhbGlkIGZsYWcgKi8KKy8qITwgQkZTUiAqLworI2RlZmluZSAgU0NCX0NGU1JfSUJVU0VSUiAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKSAgICAgICAgLyohPCBJbnN0cnVjdGlvbiBidXMgZXJyb3IgZmxhZyAqLworI2RlZmluZSAgU0NCX0NGU1JfUFJFQ0lTRVJSICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMjAwKSAgICAgICAgLyohPCBQcmVjaXNlIGRhdGEgYnVzIGVycm9yICovCisjZGVmaW5lICBTQ0JfQ0ZTUl9JTVBSRUNJU0VSUiAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApICAgICAgICAvKiE8IEltcHJlY2lzZSBkYXRhIGJ1cyBlcnJvciAqLworI2RlZmluZSAgU0NCX0NGU1JfVU5TVEtFUlIgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwODAwKSAgICAgICAgLyohPCBVbnN0YWNraW5nIGVycm9yICovCisjZGVmaW5lICBTQ0JfQ0ZTUl9TVEtFUlIgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDEwMDApICAgICAgICAvKiE8IFN0YWNraW5nIGVycm9yICovCisjZGVmaW5lICBTQ0JfQ0ZTUl9CRkFSVkFMSUQgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDgwMDApICAgICAgICAvKiE8IEJ1cyBGYXVsdCBBZGRyZXNzIFJlZ2lzdGVyIGFkZHJlc3MgdmFsaWQgZmxhZyAqLworLyohPCBVRlNSICovCisjZGVmaW5lICBTQ0JfQ0ZTUl9VTkRFRklOU1RSICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMTAwMDApICAgICAgICAvKiE8IFRoZSBwcm9jZXNzb3IgYXR0ZW1wdCB0byBleGVjdXRlIGFuIHVuZGVmaW5lZCBpbnN0cnVjdGlvbiAqLworI2RlZmluZSAgU0NCX0NGU1JfSU5WU1RBVEUgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDIwMDAwKSAgICAgICAgLyohPCBJbnZhbGlkIGNvbWJpbmF0aW9uIG9mIEVQU1IgYW5kIGluc3RydWN0aW9uICovCisjZGVmaW5lICBTQ0JfQ0ZTUl9JTlZQQyAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwNDAwMDApICAgICAgICAvKiE8IEF0dGVtcHQgdG8gbG9hZCBFWENfUkVUVVJOIGludG8gcGMgaWxsZWdhbGx5ICovCisjZGVmaW5lICBTQ0JfQ0ZTUl9OT0NQICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAgICAgICAvKiE8IEF0dGVtcHQgdG8gdXNlIGEgY29wcm9jZXNzb3IgaW5zdHJ1Y3Rpb24gKi8KKyNkZWZpbmUgIFNDQl9DRlNSX1VOQUxJR05FRCAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMTAwMDAwMCkgICAgICAgIC8qITwgRmF1bHQgb2NjdXJzIHdoZW4gdGhlcmUgaXMgYW4gYXR0ZW1wdCB0byBtYWtlIGFuIHVuYWxpZ25lZCBtZW1vcnkgYWNjZXNzICovCisjZGVmaW5lICBTQ0JfQ0ZTUl9ESVZCWVpFUk8gICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDIwMDAwMDApICAgICAgICAvKiE8IEZhdWx0IG9jY3VycyB3aGVuIFNESVYgb3IgRElWIGluc3RydWN0aW9uIGlzIHVzZWQgd2l0aCBhIGRpdmlzb3Igb2YgMCAqLworCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFNDQl9IRlNSIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgU0NCX0hGU1JfVkVDVFRCTCAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAyKSAgICAgICAgLyohPCBGYXVsdCBvY2N1cnMgYmVjYXVzZSBvZiB2ZWN0b3IgdGFibGUgcmVhZCBvbiBleGNlcHRpb24gcHJvY2Vzc2luZyAqLworI2RlZmluZSAgU0NCX0hGU1JfRk9SQ0VEICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDQwMDAwMDAwKSAgICAgICAgLyohPCBIYXJkIEZhdWx0IGFjdGl2YXRlZCB3aGVuIGEgY29uZmlndXJhYmxlIEZhdWx0IHdhcyByZWNlaXZlZCBhbmQgY2Fubm90IGFjdGl2YXRlICovCisjZGVmaW5lICBTQ0JfSEZTUl9ERUJVR0VWVCAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4ODAwMDAwMDApICAgICAgICAvKiE8IEZhdWx0IHJlbGF0ZWQgdG8gZGVidWcgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBTQ0JfREZTUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIFNDQl9ERlNSX0hBTFRFRCAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDAxKSAgICAgICAgICAgICAgIC8qITwgSGFsdCByZXF1ZXN0IGZsYWcgKi8KKyNkZWZpbmUgIFNDQl9ERlNSX0JLUFQgICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDAyKSAgICAgICAgICAgICAgIC8qITwgQktQVCBmbGFnICovCisjZGVmaW5lICBTQ0JfREZTUl9EV1RUUkFQICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwNCkgICAgICAgICAgICAgICAvKiE8IERhdGEgV2F0Y2hwb2ludCBhbmQgVHJhY2UgKERXVCkgZmxhZyAqLworI2RlZmluZSAgU0NCX0RGU1JfVkNBVENIICAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MDgpICAgICAgICAgICAgICAgLyohPCBWZWN0b3IgY2F0Y2ggZmxhZyAqLworI2RlZmluZSAgU0NCX0RGU1JfRVhURVJOQUwgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MTApICAgICAgICAgICAgICAgLyohPCBFeHRlcm5hbCBkZWJ1ZyByZXF1ZXN0IGZsYWcgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBTQ0JfTU1GQVIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIFNDQl9NTUZBUl9BRERSRVNTICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHhGRkZGRkZGRikgICAgICAgIC8qITwgTWVtIE1hbmFnZSBmYXVsdCBhZGRyZXNzIGZpZWxkICovCisKKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgU0NCX0JGQVIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBTQ0JfQkZBUl9BRERSRVNTICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4RkZGRkZGRkYpICAgICAgICAvKiE8IEJ1cyBmYXVsdCBhZGRyZXNzIGZpZWxkICovCisKKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgU0NCX2Fmc3IgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBTQ0JfQUZTUl9JTVBERUYgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4RkZGRkZGRkYpICAgICAgICAvKiE8IEltcGxlbWVudGF0aW9uIGRlZmluZWQgKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgRXh0ZXJuYWwgSW50ZXJydXB0L0V2ZW50IENvbnRyb2xsZXIgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgRVhUSV9JTVIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBFWFRJX0lNUl9NUjAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDEpICAgICAgICAvKiE8IEludGVycnVwdCBNYXNrIG9uIGxpbmUgMCAqLworI2RlZmluZSAgRVhUSV9JTVJfTVIxICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAyKSAgICAgICAgLyohPCBJbnRlcnJ1cHQgTWFzayBvbiBsaW5lIDEgKi8KKyNkZWZpbmUgIEVYVElfSU1SX01SMiAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNCkgICAgICAgIC8qITwgSW50ZXJydXB0IE1hc2sgb24gbGluZSAyICovCisjZGVmaW5lICBFWFRJX0lNUl9NUjMgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDgpICAgICAgICAvKiE8IEludGVycnVwdCBNYXNrIG9uIGxpbmUgMyAqLworI2RlZmluZSAgRVhUSV9JTVJfTVI0ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDEwKSAgICAgICAgLyohPCBJbnRlcnJ1cHQgTWFzayBvbiBsaW5lIDQgKi8KKyNkZWZpbmUgIEVYVElfSU1SX01SNSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAyMCkgICAgICAgIC8qITwgSW50ZXJydXB0IE1hc2sgb24gbGluZSA1ICovCisjZGVmaW5lICBFWFRJX0lNUl9NUjYgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwNDApICAgICAgICAvKiE8IEludGVycnVwdCBNYXNrIG9uIGxpbmUgNiAqLworI2RlZmluZSAgRVhUSV9JTVJfTVI3ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDgwKSAgICAgICAgLyohPCBJbnRlcnJ1cHQgTWFzayBvbiBsaW5lIDcgKi8KKyNkZWZpbmUgIEVYVElfSU1SX01SOCAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDEwMCkgICAgICAgIC8qITwgSW50ZXJydXB0IE1hc2sgb24gbGluZSA4ICovCisjZGVmaW5lICBFWFRJX0lNUl9NUjkgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAyMDApICAgICAgICAvKiE8IEludGVycnVwdCBNYXNrIG9uIGxpbmUgOSAqLworI2RlZmluZSAgRVhUSV9JTVJfTVIxMCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwNDAwKSAgICAgICAgLyohPCBJbnRlcnJ1cHQgTWFzayBvbiBsaW5lIDEwICovCisjZGVmaW5lICBFWFRJX0lNUl9NUjExICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA4MDApICAgICAgICAvKiE8IEludGVycnVwdCBNYXNrIG9uIGxpbmUgMTEgKi8KKyNkZWZpbmUgIEVYVElfSU1SX01SMTIgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMTAwMCkgICAgICAgIC8qITwgSW50ZXJydXB0IE1hc2sgb24gbGluZSAxMiAqLworI2RlZmluZSAgRVhUSV9JTVJfTVIxMyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAyMDAwKSAgICAgICAgLyohPCBJbnRlcnJ1cHQgTWFzayBvbiBsaW5lIDEzICovCisjZGVmaW5lICBFWFRJX0lNUl9NUjE0ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDQwMDApICAgICAgICAvKiE8IEludGVycnVwdCBNYXNrIG9uIGxpbmUgMTQgKi8KKyNkZWZpbmUgIEVYVElfSU1SX01SMTUgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwODAwMCkgICAgICAgIC8qITwgSW50ZXJydXB0IE1hc2sgb24gbGluZSAxNSAqLworI2RlZmluZSAgRVhUSV9JTVJfTVIxNiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDEwMDAwKSAgICAgICAgLyohPCBJbnRlcnJ1cHQgTWFzayBvbiBsaW5lIDE2ICovCisjZGVmaW5lICBFWFRJX0lNUl9NUjE3ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMjAwMDApICAgICAgICAvKiE8IEludGVycnVwdCBNYXNrIG9uIGxpbmUgMTcgKi8KKyNkZWZpbmUgIEVYVElfSU1SX01SMTggICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA0MDAwMCkgICAgICAgIC8qITwgSW50ZXJydXB0IE1hc2sgb24gbGluZSAxOCAqLworI2RlZmluZSAgRVhUSV9JTVJfTVIxOSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDgwMDAwKSAgICAgICAgLyohPCBJbnRlcnJ1cHQgTWFzayBvbiBsaW5lIDE5ICovCisKKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgRVhUSV9FTVIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBFWFRJX0VNUl9NUjAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDEpICAgICAgICAvKiE8IEV2ZW50IE1hc2sgb24gbGluZSAwICovCisjZGVmaW5lICBFWFRJX0VNUl9NUjEgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IEV2ZW50IE1hc2sgb24gbGluZSAxICovCisjZGVmaW5lICBFWFRJX0VNUl9NUjIgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDQpICAgICAgICAvKiE8IEV2ZW50IE1hc2sgb24gbGluZSAyICovCisjZGVmaW5lICBFWFRJX0VNUl9NUjMgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDgpICAgICAgICAvKiE8IEV2ZW50IE1hc2sgb24gbGluZSAzICovCisjZGVmaW5lICBFWFRJX0VNUl9NUjQgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAgICAgICAvKiE8IEV2ZW50IE1hc2sgb24gbGluZSA0ICovCisjZGVmaW5lICBFWFRJX0VNUl9NUjUgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMjApICAgICAgICAvKiE8IEV2ZW50IE1hc2sgb24gbGluZSA1ICovCisjZGVmaW5lICBFWFRJX0VNUl9NUjYgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwNDApICAgICAgICAvKiE8IEV2ZW50IE1hc2sgb24gbGluZSA2ICovCisjZGVmaW5lICBFWFRJX0VNUl9NUjcgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApICAgICAgICAvKiE8IEV2ZW50IE1hc2sgb24gbGluZSA3ICovCisjZGVmaW5lICBFWFRJX0VNUl9NUjggICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAxMDApICAgICAgICAvKiE8IEV2ZW50IE1hc2sgb24gbGluZSA4ICovCisjZGVmaW5lICBFWFRJX0VNUl9NUjkgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAyMDApICAgICAgICAvKiE8IEV2ZW50IE1hc2sgb24gbGluZSA5ICovCisjZGVmaW5lICBFWFRJX0VNUl9NUjEwICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApICAgICAgICAvKiE8IEV2ZW50IE1hc2sgb24gbGluZSAxMCAqLworI2RlZmluZSAgRVhUSV9FTVJfTVIxMSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwODAwKSAgICAgICAgLyohPCBFdmVudCBNYXNrIG9uIGxpbmUgMTEgKi8KKyNkZWZpbmUgIEVYVElfRU1SX01SMTIgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMTAwMCkgICAgICAgIC8qITwgRXZlbnQgTWFzayBvbiBsaW5lIDEyICovCisjZGVmaW5lICBFWFRJX0VNUl9NUjEzICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAgICAgICAvKiE8IEV2ZW50IE1hc2sgb24gbGluZSAxMyAqLworI2RlZmluZSAgRVhUSV9FTVJfTVIxNCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA0MDAwKSAgICAgICAgLyohPCBFdmVudCBNYXNrIG9uIGxpbmUgMTQgKi8KKyNkZWZpbmUgIEVYVElfRU1SX01SMTUgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwODAwMCkgICAgICAgIC8qITwgRXZlbnQgTWFzayBvbiBsaW5lIDE1ICovCisjZGVmaW5lICBFWFRJX0VNUl9NUjE2ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMTAwMDApICAgICAgICAvKiE8IEV2ZW50IE1hc2sgb24gbGluZSAxNiAqLworI2RlZmluZSAgRVhUSV9FTVJfTVIxNyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDIwMDAwKSAgICAgICAgLyohPCBFdmVudCBNYXNrIG9uIGxpbmUgMTcgKi8KKyNkZWZpbmUgIEVYVElfRU1SX01SMTggICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA0MDAwMCkgICAgICAgIC8qITwgRXZlbnQgTWFzayBvbiBsaW5lIDE4ICovCisjZGVmaW5lICBFWFRJX0VNUl9NUjE5ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAgICAgICAvKiE8IEV2ZW50IE1hc2sgb24gbGluZSAxOSAqLworCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgRVhUSV9SVFNSIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgRVhUSV9SVFNSX1RSMCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxKSAgICAgICAgLyohPCBSaXNpbmcgdHJpZ2dlciBldmVudCBjb25maWd1cmF0aW9uIGJpdCBvZiBsaW5lIDAgKi8KKyNkZWZpbmUgIEVYVElfUlRTUl9UUjEgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMikgICAgICAgIC8qITwgUmlzaW5nIHRyaWdnZXIgZXZlbnQgY29uZmlndXJhdGlvbiBiaXQgb2YgbGluZSAxICovCisjZGVmaW5lICBFWFRJX1JUU1JfVFIyICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDQpICAgICAgICAvKiE8IFJpc2luZyB0cmlnZ2VyIGV2ZW50IGNvbmZpZ3VyYXRpb24gYml0IG9mIGxpbmUgMiAqLworI2RlZmluZSAgRVhUSV9SVFNSX1RSMyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA4KSAgICAgICAgLyohPCBSaXNpbmcgdHJpZ2dlciBldmVudCBjb25maWd1cmF0aW9uIGJpdCBvZiBsaW5lIDMgKi8KKyNkZWZpbmUgIEVYVElfUlRTUl9UUjQgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAxMCkgICAgICAgIC8qITwgUmlzaW5nIHRyaWdnZXIgZXZlbnQgY29uZmlndXJhdGlvbiBiaXQgb2YgbGluZSA0ICovCisjZGVmaW5lICBFWFRJX1JUU1JfVFI1ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMjApICAgICAgICAvKiE8IFJpc2luZyB0cmlnZ2VyIGV2ZW50IGNvbmZpZ3VyYXRpb24gYml0IG9mIGxpbmUgNSAqLworI2RlZmluZSAgRVhUSV9SVFNSX1RSNiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDQwKSAgICAgICAgLyohPCBSaXNpbmcgdHJpZ2dlciBldmVudCBjb25maWd1cmF0aW9uIGJpdCBvZiBsaW5lIDYgKi8KKyNkZWZpbmUgIEVYVElfUlRTUl9UUjcgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA4MCkgICAgICAgIC8qITwgUmlzaW5nIHRyaWdnZXIgZXZlbnQgY29uZmlndXJhdGlvbiBiaXQgb2YgbGluZSA3ICovCisjZGVmaW5lICBFWFRJX1JUU1JfVFI4ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAxMDApICAgICAgICAvKiE8IFJpc2luZyB0cmlnZ2VyIGV2ZW50IGNvbmZpZ3VyYXRpb24gYml0IG9mIGxpbmUgOCAqLworI2RlZmluZSAgRVhUSV9SVFNSX1RSOSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMjAwKSAgICAgICAgLyohPCBSaXNpbmcgdHJpZ2dlciBldmVudCBjb25maWd1cmF0aW9uIGJpdCBvZiBsaW5lIDkgKi8KKyNkZWZpbmUgIEVYVElfUlRTUl9UUjEwICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDQwMCkgICAgICAgIC8qITwgUmlzaW5nIHRyaWdnZXIgZXZlbnQgY29uZmlndXJhdGlvbiBiaXQgb2YgbGluZSAxMCAqLworI2RlZmluZSAgRVhUSV9SVFNSX1RSMTEgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwODAwKSAgICAgICAgLyohPCBSaXNpbmcgdHJpZ2dlciBldmVudCBjb25maWd1cmF0aW9uIGJpdCBvZiBsaW5lIDExICovCisjZGVmaW5lICBFWFRJX1JUU1JfVFIxMiAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDEwMDApICAgICAgICAvKiE8IFJpc2luZyB0cmlnZ2VyIGV2ZW50IGNvbmZpZ3VyYXRpb24gYml0IG9mIGxpbmUgMTIgKi8KKyNkZWZpbmUgIEVYVElfUlRTUl9UUjEzICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMjAwMCkgICAgICAgIC8qITwgUmlzaW5nIHRyaWdnZXIgZXZlbnQgY29uZmlndXJhdGlvbiBiaXQgb2YgbGluZSAxMyAqLworI2RlZmluZSAgRVhUSV9SVFNSX1RSMTQgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA0MDAwKSAgICAgICAgLyohPCBSaXNpbmcgdHJpZ2dlciBldmVudCBjb25maWd1cmF0aW9uIGJpdCBvZiBsaW5lIDE0ICovCisjZGVmaW5lICBFWFRJX1JUU1JfVFIxNSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDgwMDApICAgICAgICAvKiE8IFJpc2luZyB0cmlnZ2VyIGV2ZW50IGNvbmZpZ3VyYXRpb24gYml0IG9mIGxpbmUgMTUgKi8KKyNkZWZpbmUgIEVYVElfUlRTUl9UUjE2ICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAxMDAwMCkgICAgICAgIC8qITwgUmlzaW5nIHRyaWdnZXIgZXZlbnQgY29uZmlndXJhdGlvbiBiaXQgb2YgbGluZSAxNiAqLworI2RlZmluZSAgRVhUSV9SVFNSX1RSMTcgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDIwMDAwKSAgICAgICAgLyohPCBSaXNpbmcgdHJpZ2dlciBldmVudCBjb25maWd1cmF0aW9uIGJpdCBvZiBsaW5lIDE3ICovCisjZGVmaW5lICBFWFRJX1JUU1JfVFIxOCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwNDAwMDApICAgICAgICAvKiE8IFJpc2luZyB0cmlnZ2VyIGV2ZW50IGNvbmZpZ3VyYXRpb24gYml0IG9mIGxpbmUgMTggKi8KKyNkZWZpbmUgIEVYVElfUlRTUl9UUjE5ICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA4MDAwMCkgICAgICAgIC8qITwgUmlzaW5nIHRyaWdnZXIgZXZlbnQgY29uZmlndXJhdGlvbiBiaXQgb2YgbGluZSAxOSAqLworCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgRVhUSV9GVFNSIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgRVhUSV9GVFNSX1RSMCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxKSAgICAgICAgLyohPCBGYWxsaW5nIHRyaWdnZXIgZXZlbnQgY29uZmlndXJhdGlvbiBiaXQgb2YgbGluZSAwICovCisjZGVmaW5lICBFWFRJX0ZUU1JfVFIxICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IEZhbGxpbmcgdHJpZ2dlciBldmVudCBjb25maWd1cmF0aW9uIGJpdCBvZiBsaW5lIDEgKi8KKyNkZWZpbmUgIEVYVElfRlRTUl9UUjIgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNCkgICAgICAgIC8qITwgRmFsbGluZyB0cmlnZ2VyIGV2ZW50IGNvbmZpZ3VyYXRpb24gYml0IG9mIGxpbmUgMiAqLworI2RlZmluZSAgRVhUSV9GVFNSX1RSMyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA4KSAgICAgICAgLyohPCBGYWxsaW5nIHRyaWdnZXIgZXZlbnQgY29uZmlndXJhdGlvbiBiaXQgb2YgbGluZSAzICovCisjZGVmaW5lICBFWFRJX0ZUU1JfVFI0ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAgICAgICAvKiE8IEZhbGxpbmcgdHJpZ2dlciBldmVudCBjb25maWd1cmF0aW9uIGJpdCBvZiBsaW5lIDQgKi8KKyNkZWZpbmUgIEVYVElfRlRTUl9UUjUgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAyMCkgICAgICAgIC8qITwgRmFsbGluZyB0cmlnZ2VyIGV2ZW50IGNvbmZpZ3VyYXRpb24gYml0IG9mIGxpbmUgNSAqLworI2RlZmluZSAgRVhUSV9GVFNSX1RSNiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDQwKSAgICAgICAgLyohPCBGYWxsaW5nIHRyaWdnZXIgZXZlbnQgY29uZmlndXJhdGlvbiBiaXQgb2YgbGluZSA2ICovCisjZGVmaW5lICBFWFRJX0ZUU1JfVFI3ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApICAgICAgICAvKiE8IEZhbGxpbmcgdHJpZ2dlciBldmVudCBjb25maWd1cmF0aW9uIGJpdCBvZiBsaW5lIDcgKi8KKyNkZWZpbmUgIEVYVElfRlRTUl9UUjggICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDEwMCkgICAgICAgIC8qITwgRmFsbGluZyB0cmlnZ2VyIGV2ZW50IGNvbmZpZ3VyYXRpb24gYml0IG9mIGxpbmUgOCAqLworI2RlZmluZSAgRVhUSV9GVFNSX1RSOSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMjAwKSAgICAgICAgLyohPCBGYWxsaW5nIHRyaWdnZXIgZXZlbnQgY29uZmlndXJhdGlvbiBiaXQgb2YgbGluZSA5ICovCisjZGVmaW5lICBFWFRJX0ZUU1JfVFIxMCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApICAgICAgICAvKiE8IEZhbGxpbmcgdHJpZ2dlciBldmVudCBjb25maWd1cmF0aW9uIGJpdCBvZiBsaW5lIDEwICovCisjZGVmaW5lICBFWFRJX0ZUU1JfVFIxMSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA4MDApICAgICAgICAvKiE8IEZhbGxpbmcgdHJpZ2dlciBldmVudCBjb25maWd1cmF0aW9uIGJpdCBvZiBsaW5lIDExICovCisjZGVmaW5lICBFWFRJX0ZUU1JfVFIxMiAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDEwMDApICAgICAgICAvKiE8IEZhbGxpbmcgdHJpZ2dlciBldmVudCBjb25maWd1cmF0aW9uIGJpdCBvZiBsaW5lIDEyICovCisjZGVmaW5lICBFWFRJX0ZUU1JfVFIxMyAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAgICAgICAvKiE8IEZhbGxpbmcgdHJpZ2dlciBldmVudCBjb25maWd1cmF0aW9uIGJpdCBvZiBsaW5lIDEzICovCisjZGVmaW5lICBFWFRJX0ZUU1JfVFIxNCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDQwMDApICAgICAgICAvKiE8IEZhbGxpbmcgdHJpZ2dlciBldmVudCBjb25maWd1cmF0aW9uIGJpdCBvZiBsaW5lIDE0ICovCisjZGVmaW5lICBFWFRJX0ZUU1JfVFIxNSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDgwMDApICAgICAgICAvKiE8IEZhbGxpbmcgdHJpZ2dlciBldmVudCBjb25maWd1cmF0aW9uIGJpdCBvZiBsaW5lIDE1ICovCisjZGVmaW5lICBFWFRJX0ZUU1JfVFIxNiAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMTAwMDApICAgICAgICAvKiE8IEZhbGxpbmcgdHJpZ2dlciBldmVudCBjb25maWd1cmF0aW9uIGJpdCBvZiBsaW5lIDE2ICovCisjZGVmaW5lICBFWFRJX0ZUU1JfVFIxNyAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMjAwMDApICAgICAgICAvKiE8IEZhbGxpbmcgdHJpZ2dlciBldmVudCBjb25maWd1cmF0aW9uIGJpdCBvZiBsaW5lIDE3ICovCisjZGVmaW5lICBFWFRJX0ZUU1JfVFIxOCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwNDAwMDApICAgICAgICAvKiE8IEZhbGxpbmcgdHJpZ2dlciBldmVudCBjb25maWd1cmF0aW9uIGJpdCBvZiBsaW5lIDE4ICovCisjZGVmaW5lICBFWFRJX0ZUU1JfVFIxOSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAgICAgICAvKiE8IEZhbGxpbmcgdHJpZ2dlciBldmVudCBjb25maWd1cmF0aW9uIGJpdCBvZiBsaW5lIDE5ICovCisKKy8qKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBFWFRJX1NXSUVSIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBFWFRJX1NXSUVSX1NXSUVSMCAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDEpICAgICAgICAvKiE8IFNvZnR3YXJlIEludGVycnVwdCBvbiBsaW5lIDAgKi8KKyNkZWZpbmUgIEVYVElfU1dJRVJfU1dJRVIxICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMikgICAgICAgIC8qITwgU29mdHdhcmUgSW50ZXJydXB0IG9uIGxpbmUgMSAqLworI2RlZmluZSAgRVhUSV9TV0lFUl9TV0lFUjIgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgICAgICAgLyohPCBTb2Z0d2FyZSBJbnRlcnJ1cHQgb24gbGluZSAyICovCisjZGVmaW5lICBFWFRJX1NXSUVSX1NXSUVSMyAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDgpICAgICAgICAvKiE8IFNvZnR3YXJlIEludGVycnVwdCBvbiBsaW5lIDMgKi8KKyNkZWZpbmUgIEVYVElfU1dJRVJfU1dJRVI0ICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAxMCkgICAgICAgIC8qITwgU29mdHdhcmUgSW50ZXJydXB0IG9uIGxpbmUgNCAqLworI2RlZmluZSAgRVhUSV9TV0lFUl9TV0lFUjUgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKSAgICAgICAgLyohPCBTb2Z0d2FyZSBJbnRlcnJ1cHQgb24gbGluZSA1ICovCisjZGVmaW5lICBFWFRJX1NXSUVSX1NXSUVSNiAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwNDApICAgICAgICAvKiE8IFNvZnR3YXJlIEludGVycnVwdCBvbiBsaW5lIDYgKi8KKyNkZWZpbmUgIEVYVElfU1dJRVJfU1dJRVI3ICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA4MCkgICAgICAgIC8qITwgU29mdHdhcmUgSW50ZXJydXB0IG9uIGxpbmUgNyAqLworI2RlZmluZSAgRVhUSV9TV0lFUl9TV0lFUjggICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKSAgICAgICAgLyohPCBTb2Z0d2FyZSBJbnRlcnJ1cHQgb24gbGluZSA4ICovCisjZGVmaW5lICBFWFRJX1NXSUVSX1NXSUVSOSAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAyMDApICAgICAgICAvKiE8IFNvZnR3YXJlIEludGVycnVwdCBvbiBsaW5lIDkgKi8KKyNkZWZpbmUgIEVYVElfU1dJRVJfU1dJRVIxMCAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDQwMCkgICAgICAgIC8qITwgU29mdHdhcmUgSW50ZXJydXB0IG9uIGxpbmUgMTAgKi8KKyNkZWZpbmUgIEVYVElfU1dJRVJfU1dJRVIxMSAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgICAgICAgIC8qITwgU29mdHdhcmUgSW50ZXJydXB0IG9uIGxpbmUgMTEgKi8KKyNkZWZpbmUgIEVYVElfU1dJRVJfU1dJRVIxMiAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMTAwMCkgICAgICAgIC8qITwgU29mdHdhcmUgSW50ZXJydXB0IG9uIGxpbmUgMTIgKi8KKyNkZWZpbmUgIEVYVElfU1dJRVJfU1dJRVIxMyAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMjAwMCkgICAgICAgIC8qITwgU29mdHdhcmUgSW50ZXJydXB0IG9uIGxpbmUgMTMgKi8KKyNkZWZpbmUgIEVYVElfU1dJRVJfU1dJRVIxNCAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgICAgICAgIC8qITwgU29mdHdhcmUgSW50ZXJydXB0IG9uIGxpbmUgMTQgKi8KKyNkZWZpbmUgIEVYVElfU1dJRVJfU1dJRVIxNSAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwODAwMCkgICAgICAgIC8qITwgU29mdHdhcmUgSW50ZXJydXB0IG9uIGxpbmUgMTUgKi8KKyNkZWZpbmUgIEVYVElfU1dJRVJfU1dJRVIxNiAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAxMDAwMCkgICAgICAgIC8qITwgU29mdHdhcmUgSW50ZXJydXB0IG9uIGxpbmUgMTYgKi8KKyNkZWZpbmUgIEVYVElfU1dJRVJfU1dJRVIxNyAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkgICAgICAgIC8qITwgU29mdHdhcmUgSW50ZXJydXB0IG9uIGxpbmUgMTcgKi8KKyNkZWZpbmUgIEVYVElfU1dJRVJfU1dJRVIxOCAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA0MDAwMCkgICAgICAgIC8qITwgU29mdHdhcmUgSW50ZXJydXB0IG9uIGxpbmUgMTggKi8KKyNkZWZpbmUgIEVYVElfU1dJRVJfU1dJRVIxOSAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA4MDAwMCkgICAgICAgIC8qITwgU29mdHdhcmUgSW50ZXJydXB0IG9uIGxpbmUgMTkgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBFWFRJX1BSIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIEVYVElfUFJfUFIwICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgICAgICAgIC8qITwgUGVuZGluZyBiaXQgZm9yIGxpbmUgMCAqLworI2RlZmluZSAgRVhUSV9QUl9QUjEgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAyKSAgICAgICAgLyohPCBQZW5kaW5nIGJpdCBmb3IgbGluZSAxICovCisjZGVmaW5lICBFWFRJX1BSX1BSMiAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDQpICAgICAgICAvKiE8IFBlbmRpbmcgYml0IGZvciBsaW5lIDIgKi8KKyNkZWZpbmUgIEVYVElfUFJfUFIzICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgICAgICAgIC8qITwgUGVuZGluZyBiaXQgZm9yIGxpbmUgMyAqLworI2RlZmluZSAgRVhUSV9QUl9QUjQgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDEwKSAgICAgICAgLyohPCBQZW5kaW5nIGJpdCBmb3IgbGluZSA0ICovCisjZGVmaW5lICBFWFRJX1BSX1BSNSAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMjApICAgICAgICAvKiE8IFBlbmRpbmcgYml0IGZvciBsaW5lIDUgKi8KKyNkZWZpbmUgIEVYVElfUFJfUFI2ICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgICAgICAgIC8qITwgUGVuZGluZyBiaXQgZm9yIGxpbmUgNiAqLworI2RlZmluZSAgRVhUSV9QUl9QUjcgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDgwKSAgICAgICAgLyohPCBQZW5kaW5nIGJpdCBmb3IgbGluZSA3ICovCisjZGVmaW5lICBFWFRJX1BSX1BSOCAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAxMDApICAgICAgICAvKiE8IFBlbmRpbmcgYml0IGZvciBsaW5lIDggKi8KKyNkZWZpbmUgIEVYVElfUFJfUFI5ICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkgICAgICAgIC8qITwgUGVuZGluZyBiaXQgZm9yIGxpbmUgOSAqLworI2RlZmluZSAgRVhUSV9QUl9QUjEwICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwNDAwKSAgICAgICAgLyohPCBQZW5kaW5nIGJpdCBmb3IgbGluZSAxMCAqLworI2RlZmluZSAgRVhUSV9QUl9QUjExICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwODAwKSAgICAgICAgLyohPCBQZW5kaW5nIGJpdCBmb3IgbGluZSAxMSAqLworI2RlZmluZSAgRVhUSV9QUl9QUjEyICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKSAgICAgICAgLyohPCBQZW5kaW5nIGJpdCBmb3IgbGluZSAxMiAqLworI2RlZmluZSAgRVhUSV9QUl9QUjEzICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAyMDAwKSAgICAgICAgLyohPCBQZW5kaW5nIGJpdCBmb3IgbGluZSAxMyAqLworI2RlZmluZSAgRVhUSV9QUl9QUjE0ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA0MDAwKSAgICAgICAgLyohPCBQZW5kaW5nIGJpdCBmb3IgbGluZSAxNCAqLworI2RlZmluZSAgRVhUSV9QUl9QUjE1ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKSAgICAgICAgLyohPCBQZW5kaW5nIGJpdCBmb3IgbGluZSAxNSAqLworI2RlZmluZSAgRVhUSV9QUl9QUjE2ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDEwMDAwKSAgICAgICAgLyohPCBQZW5kaW5nIGJpdCBmb3IgbGluZSAxNiAqLworI2RlZmluZSAgRVhUSV9QUl9QUjE3ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDIwMDAwKSAgICAgICAgLyohPCBQZW5kaW5nIGJpdCBmb3IgbGluZSAxNyAqLworI2RlZmluZSAgRVhUSV9QUl9QUjE4ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDQwMDAwKSAgICAgICAgLyohPCBQZW5kaW5nIGJpdCBmb3IgbGluZSAxOCAqLworI2RlZmluZSAgRVhUSV9QUl9QUjE5ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDgwMDAwKSAgICAgICAgLyohPCBQZW5kaW5nIGJpdCBmb3IgbGluZSAxOSAqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICBETUEgQ29udHJvbGxlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBETUFfSVNSIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIERNQV9JU1JfR0lGMSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgICAgICAgIC8qITwgQ2hhbm5lbCAxIEdsb2JhbCBpbnRlcnJ1cHQgZmxhZyAqLworI2RlZmluZSAgRE1BX0lTUl9UQ0lGMSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAyKSAgICAgICAgLyohPCBDaGFubmVsIDEgVHJhbnNmZXIgQ29tcGxldGUgZmxhZyAqLworI2RlZmluZSAgRE1BX0lTUl9IVElGMSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgICAgICAgLyohPCBDaGFubmVsIDEgSGFsZiBUcmFuc2ZlciBmbGFnICovCisjZGVmaW5lICBETUFfSVNSX1RFSUYxICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDgpICAgICAgICAvKiE8IENoYW5uZWwgMSBUcmFuc2ZlciBFcnJvciBmbGFnICovCisjZGVmaW5lICBETUFfSVNSX0dJRjIgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAgICAgICAvKiE8IENoYW5uZWwgMiBHbG9iYWwgaW50ZXJydXB0IGZsYWcgKi8KKyNkZWZpbmUgIERNQV9JU1JfVENJRjIgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAyMCkgICAgICAgIC8qITwgQ2hhbm5lbCAyIFRyYW5zZmVyIENvbXBsZXRlIGZsYWcgKi8KKyNkZWZpbmUgIERNQV9JU1JfSFRJRjIgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgICAgICAgIC8qITwgQ2hhbm5lbCAyIEhhbGYgVHJhbnNmZXIgZmxhZyAqLworI2RlZmluZSAgRE1BX0lTUl9URUlGMiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDgwKSAgICAgICAgLyohPCBDaGFubmVsIDIgVHJhbnNmZXIgRXJyb3IgZmxhZyAqLworI2RlZmluZSAgRE1BX0lTUl9HSUYzICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKSAgICAgICAgLyohPCBDaGFubmVsIDMgR2xvYmFsIGludGVycnVwdCBmbGFnICovCisjZGVmaW5lICBETUFfSVNSX1RDSUYzICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAyMDApICAgICAgICAvKiE8IENoYW5uZWwgMyBUcmFuc2ZlciBDb21wbGV0ZSBmbGFnICovCisjZGVmaW5lICBETUFfSVNSX0hUSUYzICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApICAgICAgICAvKiE8IENoYW5uZWwgMyBIYWxmIFRyYW5zZmVyIGZsYWcgKi8KKyNkZWZpbmUgIERNQV9JU1JfVEVJRjMgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgICAgICAgIC8qITwgQ2hhbm5lbCAzIFRyYW5zZmVyIEVycm9yIGZsYWcgKi8KKyNkZWZpbmUgIERNQV9JU1JfR0lGNCAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMTAwMCkgICAgICAgIC8qITwgQ2hhbm5lbCA0IEdsb2JhbCBpbnRlcnJ1cHQgZmxhZyAqLworI2RlZmluZSAgRE1BX0lTUl9UQ0lGNCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAyMDAwKSAgICAgICAgLyohPCBDaGFubmVsIDQgVHJhbnNmZXIgQ29tcGxldGUgZmxhZyAqLworI2RlZmluZSAgRE1BX0lTUl9IVElGNCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA0MDAwKSAgICAgICAgLyohPCBDaGFubmVsIDQgSGFsZiBUcmFuc2ZlciBmbGFnICovCisjZGVmaW5lICBETUFfSVNSX1RFSUY0ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDgwMDApICAgICAgICAvKiE8IENoYW5uZWwgNCBUcmFuc2ZlciBFcnJvciBmbGFnICovCisjZGVmaW5lICBETUFfSVNSX0dJRjUgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMTAwMDApICAgICAgICAvKiE8IENoYW5uZWwgNSBHbG9iYWwgaW50ZXJydXB0IGZsYWcgKi8KKyNkZWZpbmUgIERNQV9JU1JfVENJRjUgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkgICAgICAgIC8qITwgQ2hhbm5lbCA1IFRyYW5zZmVyIENvbXBsZXRlIGZsYWcgKi8KKyNkZWZpbmUgIERNQV9JU1JfSFRJRjUgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA0MDAwMCkgICAgICAgIC8qITwgQ2hhbm5lbCA1IEhhbGYgVHJhbnNmZXIgZmxhZyAqLworI2RlZmluZSAgRE1BX0lTUl9URUlGNSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDgwMDAwKSAgICAgICAgLyohPCBDaGFubmVsIDUgVHJhbnNmZXIgRXJyb3IgZmxhZyAqLworI2RlZmluZSAgRE1BX0lTUl9HSUY2ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMTAwMDAwKSAgICAgICAgLyohPCBDaGFubmVsIDYgR2xvYmFsIGludGVycnVwdCBmbGFnICovCisjZGVmaW5lICBETUFfSVNSX1RDSUY2ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAyMDAwMDApICAgICAgICAvKiE8IENoYW5uZWwgNiBUcmFuc2ZlciBDb21wbGV0ZSBmbGFnICovCisjZGVmaW5lICBETUFfSVNSX0hUSUY2ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApICAgICAgICAvKiE8IENoYW5uZWwgNiBIYWxmIFRyYW5zZmVyIGZsYWcgKi8KKyNkZWZpbmUgIERNQV9JU1JfVEVJRjYgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDgwMDAwMCkgICAgICAgIC8qITwgQ2hhbm5lbCA2IFRyYW5zZmVyIEVycm9yIGZsYWcgKi8KKyNkZWZpbmUgIERNQV9JU1JfR0lGNyAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMTAwMDAwMCkgICAgICAgIC8qITwgQ2hhbm5lbCA3IEdsb2JhbCBpbnRlcnJ1cHQgZmxhZyAqLworI2RlZmluZSAgRE1BX0lTUl9UQ0lGNyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAyMDAwMDAwKSAgICAgICAgLyohPCBDaGFubmVsIDcgVHJhbnNmZXIgQ29tcGxldGUgZmxhZyAqLworI2RlZmluZSAgRE1BX0lTUl9IVElGNyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA0MDAwMDAwKSAgICAgICAgLyohPCBDaGFubmVsIDcgSGFsZiBUcmFuc2ZlciBmbGFnICovCisjZGVmaW5lICBETUFfSVNSX1RFSUY3ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDgwMDAwMDApICAgICAgICAvKiE8IENoYW5uZWwgNyBUcmFuc2ZlciBFcnJvciBmbGFnICovCisKKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgRE1BX0lGQ1IgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBETUFfSUZDUl9DR0lGMSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDEpICAgICAgICAvKiE8IENoYW5uZWwgMSBHbG9iYWwgaW50ZXJydXB0IGNsZWFyICovCisjZGVmaW5lICBETUFfSUZDUl9DVENJRjEgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IENoYW5uZWwgMSBUcmFuc2ZlciBDb21wbGV0ZSBjbGVhciAqLworI2RlZmluZSAgRE1BX0lGQ1JfQ0hUSUYxICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgICAgICAgLyohPCBDaGFubmVsIDEgSGFsZiBUcmFuc2ZlciBjbGVhciAqLworI2RlZmluZSAgRE1BX0lGQ1JfQ1RFSUYxICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA4KSAgICAgICAgLyohPCBDaGFubmVsIDEgVHJhbnNmZXIgRXJyb3IgY2xlYXIgKi8KKyNkZWZpbmUgIERNQV9JRkNSX0NHSUYyICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAxMCkgICAgICAgIC8qITwgQ2hhbm5lbCAyIEdsb2JhbCBpbnRlcnJ1cHQgY2xlYXIgKi8KKyNkZWZpbmUgIERNQV9JRkNSX0NUQ0lGMiAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAyMCkgICAgICAgIC8qITwgQ2hhbm5lbCAyIFRyYW5zZmVyIENvbXBsZXRlIGNsZWFyICovCisjZGVmaW5lICBETUFfSUZDUl9DSFRJRjIgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwNDApICAgICAgICAvKiE8IENoYW5uZWwgMiBIYWxmIFRyYW5zZmVyIGNsZWFyICovCisjZGVmaW5lICBETUFfSUZDUl9DVEVJRjIgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApICAgICAgICAvKiE8IENoYW5uZWwgMiBUcmFuc2ZlciBFcnJvciBjbGVhciAqLworI2RlZmluZSAgRE1BX0lGQ1JfQ0dJRjMgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKSAgICAgICAgLyohPCBDaGFubmVsIDMgR2xvYmFsIGludGVycnVwdCBjbGVhciAqLworI2RlZmluZSAgRE1BX0lGQ1JfQ1RDSUYzICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMjAwKSAgICAgICAgLyohPCBDaGFubmVsIDMgVHJhbnNmZXIgQ29tcGxldGUgY2xlYXIgKi8KKyNkZWZpbmUgIERNQV9JRkNSX0NIVElGMyAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDQwMCkgICAgICAgIC8qITwgQ2hhbm5lbCAzIEhhbGYgVHJhbnNmZXIgY2xlYXIgKi8KKyNkZWZpbmUgIERNQV9JRkNSX0NURUlGMyAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgICAgICAgIC8qITwgQ2hhbm5lbCAzIFRyYW5zZmVyIEVycm9yIGNsZWFyICovCisjZGVmaW5lICBETUFfSUZDUl9DR0lGNCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDEwMDApICAgICAgICAvKiE8IENoYW5uZWwgNCBHbG9iYWwgaW50ZXJydXB0IGNsZWFyICovCisjZGVmaW5lICBETUFfSUZDUl9DVENJRjQgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAgICAgICAvKiE8IENoYW5uZWwgNCBUcmFuc2ZlciBDb21wbGV0ZSBjbGVhciAqLworI2RlZmluZSAgRE1BX0lGQ1JfQ0hUSUY0ICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA0MDAwKSAgICAgICAgLyohPCBDaGFubmVsIDQgSGFsZiBUcmFuc2ZlciBjbGVhciAqLworI2RlZmluZSAgRE1BX0lGQ1JfQ1RFSUY0ICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKSAgICAgICAgLyohPCBDaGFubmVsIDQgVHJhbnNmZXIgRXJyb3IgY2xlYXIgKi8KKyNkZWZpbmUgIERNQV9JRkNSX0NHSUY1ICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAxMDAwMCkgICAgICAgIC8qITwgQ2hhbm5lbCA1IEdsb2JhbCBpbnRlcnJ1cHQgY2xlYXIgKi8KKyNkZWZpbmUgIERNQV9JRkNSX0NUQ0lGNSAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkgICAgICAgIC8qITwgQ2hhbm5lbCA1IFRyYW5zZmVyIENvbXBsZXRlIGNsZWFyICovCisjZGVmaW5lICBETUFfSUZDUl9DSFRJRjUgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwNDAwMDApICAgICAgICAvKiE8IENoYW5uZWwgNSBIYWxmIFRyYW5zZmVyIGNsZWFyICovCisjZGVmaW5lICBETUFfSUZDUl9DVEVJRjUgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAgICAgICAvKiE8IENoYW5uZWwgNSBUcmFuc2ZlciBFcnJvciBjbGVhciAqLworI2RlZmluZSAgRE1BX0lGQ1JfQ0dJRjYgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMTAwMDAwKSAgICAgICAgLyohPCBDaGFubmVsIDYgR2xvYmFsIGludGVycnVwdCBjbGVhciAqLworI2RlZmluZSAgRE1BX0lGQ1JfQ1RDSUY2ICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMjAwMDAwKSAgICAgICAgLyohPCBDaGFubmVsIDYgVHJhbnNmZXIgQ29tcGxldGUgY2xlYXIgKi8KKyNkZWZpbmUgIERNQV9JRkNSX0NIVElGNiAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDQwMDAwMCkgICAgICAgIC8qITwgQ2hhbm5lbCA2IEhhbGYgVHJhbnNmZXIgY2xlYXIgKi8KKyNkZWZpbmUgIERNQV9JRkNSX0NURUlGNiAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDgwMDAwMCkgICAgICAgIC8qITwgQ2hhbm5lbCA2IFRyYW5zZmVyIEVycm9yIGNsZWFyICovCisjZGVmaW5lICBETUFfSUZDUl9DR0lGNyAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDEwMDAwMDApICAgICAgICAvKiE8IENoYW5uZWwgNyBHbG9iYWwgaW50ZXJydXB0IGNsZWFyICovCisjZGVmaW5lICBETUFfSUZDUl9DVENJRjcgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDIwMDAwMDApICAgICAgICAvKiE8IENoYW5uZWwgNyBUcmFuc2ZlciBDb21wbGV0ZSBjbGVhciAqLworI2RlZmluZSAgRE1BX0lGQ1JfQ0hUSUY3ICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA0MDAwMDAwKSAgICAgICAgLyohPCBDaGFubmVsIDcgSGFsZiBUcmFuc2ZlciBjbGVhciAqLworI2RlZmluZSAgRE1BX0lGQ1JfQ1RFSUY3ICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA4MDAwMDAwKSAgICAgICAgLyohPCBDaGFubmVsIDcgVHJhbnNmZXIgRXJyb3IgY2xlYXIgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBETUFfQ0NSMSByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIERNQV9DQ1IxX0VOICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAxKSAgICAgICAgICAgIC8qITwgQ2hhbm5lbCBlbmFibGUqLworI2RlZmluZSAgRE1BX0NDUjFfVENJRSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDIpICAgICAgICAgICAgLyohPCBUcmFuc2ZlciBjb21wbGV0ZSBpbnRlcnJ1cHQgZW5hYmxlICovCisjZGVmaW5lICBETUFfQ0NSMV9IVElFICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwNCkgICAgICAgICAgICAvKiE8IEhhbGYgVHJhbnNmZXIgaW50ZXJydXB0IGVuYWJsZSAqLworI2RlZmluZSAgRE1BX0NDUjFfVEVJRSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDgpICAgICAgICAgICAgLyohPCBUcmFuc2ZlciBlcnJvciBpbnRlcnJ1cHQgZW5hYmxlICovCisjZGVmaW5lICBETUFfQ0NSMV9ESVIgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAxMCkgICAgICAgICAgICAvKiE8IERhdGEgdHJhbnNmZXIgZGlyZWN0aW9uICovCisjZGVmaW5lICBETUFfQ0NSMV9DSVJDICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAyMCkgICAgICAgICAgICAvKiE8IENpcmN1bGFyIG1vZGUgKi8KKyNkZWZpbmUgIERNQV9DQ1IxX1BJTkMgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDQwKSAgICAgICAgICAgIC8qITwgUGVyaXBoZXJhbCBpbmNyZW1lbnQgbW9kZSAqLworI2RlZmluZSAgRE1BX0NDUjFfTUlOQyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwODApICAgICAgICAgICAgLyohPCBNZW1vcnkgaW5jcmVtZW50IG1vZGUgKi8KKworI2RlZmluZSAgRE1BX0NDUjFfUFNJWkUgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAzMDApICAgICAgICAgICAgLyohPCBQU0laRVsxOjBdIGJpdHMgKFBlcmlwaGVyYWwgc2l6ZSkgKi8KKyNkZWZpbmUgIERNQV9DQ1IxX1BTSVpFXzAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMTAwKSAgICAgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIERNQV9DQ1IxX1BTSVpFXzEgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMjAwKSAgICAgICAgICAgIC8qITwgQml0IDEgKi8KKworI2RlZmluZSAgRE1BX0NDUjFfTVNJWkUgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDBDMDApICAgICAgICAgICAgLyohPCBNU0laRVsxOjBdIGJpdHMgKE1lbW9yeSBzaXplKSAqLworI2RlZmluZSAgRE1BX0NDUjFfTVNJWkVfMCAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDA0MDApICAgICAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgRE1BX0NDUjFfTVNJWkVfMSAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDA4MDApICAgICAgICAgICAgLyohPCBCaXQgMSAqLworCisjZGVmaW5lICBETUFfQ0NSMV9QTCAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MzAwMCkgICAgICAgICAgICAvKiE8IFBMWzE6MF0gYml0cyhDaGFubmVsIFByaW9yaXR5IGxldmVsKSAqLworI2RlZmluZSAgRE1BX0NDUjFfUExfMCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDEwMDApICAgICAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgRE1BX0NDUjFfUExfMSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDIwMDApICAgICAgICAgICAgLyohPCBCaXQgMSAqLworCisjZGVmaW5lICBETUFfQ0NSMV9NRU0yTUVNICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4NDAwMCkgICAgICAgICAgICAvKiE8IE1lbW9yeSB0byBtZW1vcnkgbW9kZSAqLworCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIERNQV9DQ1IyIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgRE1BX0NDUjJfRU4gICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDEpICAgICAgICAgICAgLyohPCBDaGFubmVsIGVuYWJsZSAqLworI2RlZmluZSAgRE1BX0NDUjJfVENJRSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDIpICAgICAgICAgICAgLyohPCBUcmFuc2ZlciBjb21wbGV0ZSBpbnRlcnJ1cHQgZW5hYmxlICovCisjZGVmaW5lICBETUFfQ0NSMl9IVElFICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwNCkgICAgICAgICAgICAvKiE8IEhhbGYgVHJhbnNmZXIgaW50ZXJydXB0IGVuYWJsZSAqLworI2RlZmluZSAgRE1BX0NDUjJfVEVJRSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDgpICAgICAgICAgICAgLyohPCBUcmFuc2ZlciBlcnJvciBpbnRlcnJ1cHQgZW5hYmxlICovCisjZGVmaW5lICBETUFfQ0NSMl9ESVIgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAxMCkgICAgICAgICAgICAvKiE8IERhdGEgdHJhbnNmZXIgZGlyZWN0aW9uICovCisjZGVmaW5lICBETUFfQ0NSMl9DSVJDICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAyMCkgICAgICAgICAgICAvKiE8IENpcmN1bGFyIG1vZGUgKi8KKyNkZWZpbmUgIERNQV9DQ1IyX1BJTkMgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDQwKSAgICAgICAgICAgIC8qITwgUGVyaXBoZXJhbCBpbmNyZW1lbnQgbW9kZSAqLworI2RlZmluZSAgRE1BX0NDUjJfTUlOQyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwODApICAgICAgICAgICAgLyohPCBNZW1vcnkgaW5jcmVtZW50IG1vZGUgKi8KKworI2RlZmluZSAgRE1BX0NDUjJfUFNJWkUgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAzMDApICAgICAgICAgICAgLyohPCBQU0laRVsxOjBdIGJpdHMgKFBlcmlwaGVyYWwgc2l6ZSkgKi8KKyNkZWZpbmUgIERNQV9DQ1IyX1BTSVpFXzAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMTAwKSAgICAgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIERNQV9DQ1IyX1BTSVpFXzEgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMjAwKSAgICAgICAgICAgIC8qITwgQml0IDEgKi8KKworI2RlZmluZSAgRE1BX0NDUjJfTVNJWkUgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDBDMDApICAgICAgICAgICAgLyohPCBNU0laRVsxOjBdIGJpdHMgKE1lbW9yeSBzaXplKSAqLworI2RlZmluZSAgRE1BX0NDUjJfTVNJWkVfMCAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDA0MDApICAgICAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgRE1BX0NDUjJfTVNJWkVfMSAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDA4MDApICAgICAgICAgICAgLyohPCBCaXQgMSAqLworCisjZGVmaW5lICBETUFfQ0NSMl9QTCAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MzAwMCkgICAgICAgICAgICAvKiE8IFBMWzE6MF0gYml0cyAoQ2hhbm5lbCBQcmlvcml0eSBsZXZlbCkgKi8KKyNkZWZpbmUgIERNQV9DQ1IyX1BMXzAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgxMDAwKSAgICAgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIERNQV9DQ1IyX1BMXzEgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgyMDAwKSAgICAgICAgICAgIC8qITwgQml0IDEgKi8KKworI2RlZmluZSAgRE1BX0NDUjJfTUVNMk1FTSAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDQwMDApICAgICAgICAgICAgLyohPCBNZW1vcnkgdG8gbWVtb3J5IG1vZGUgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBETUFfQ0NSMyByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIERNQV9DQ1IzX0VOICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAxKSAgICAgICAgICAgIC8qITwgQ2hhbm5lbCBlbmFibGUgKi8KKyNkZWZpbmUgIERNQV9DQ1IzX1RDSUUgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAyKSAgICAgICAgICAgIC8qITwgVHJhbnNmZXIgY29tcGxldGUgaW50ZXJydXB0IGVuYWJsZSAqLworI2RlZmluZSAgRE1BX0NDUjNfSFRJRSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDQpICAgICAgICAgICAgLyohPCBIYWxmIFRyYW5zZmVyIGludGVycnVwdCBlbmFibGUgKi8KKyNkZWZpbmUgIERNQV9DQ1IzX1RFSUUgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA4KSAgICAgICAgICAgIC8qITwgVHJhbnNmZXIgZXJyb3IgaW50ZXJydXB0IGVuYWJsZSAqLworI2RlZmluZSAgRE1BX0NDUjNfRElSICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMTApICAgICAgICAgICAgLyohPCBEYXRhIHRyYW5zZmVyIGRpcmVjdGlvbiAqLworI2RlZmluZSAgRE1BX0NDUjNfQ0lSQyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMjApICAgICAgICAgICAgLyohPCBDaXJjdWxhciBtb2RlICovCisjZGVmaW5lICBETUFfQ0NSM19QSU5DICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA0MCkgICAgICAgICAgICAvKiE8IFBlcmlwaGVyYWwgaW5jcmVtZW50IG1vZGUgKi8KKyNkZWZpbmUgIERNQV9DQ1IzX01JTkMgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDgwKSAgICAgICAgICAgIC8qITwgTWVtb3J5IGluY3JlbWVudCBtb2RlICovCisKKyNkZWZpbmUgIERNQV9DQ1IzX1BTSVpFICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMzAwKSAgICAgICAgICAgIC8qITwgUFNJWkVbMTowXSBiaXRzIChQZXJpcGhlcmFsIHNpemUpICovCisjZGVmaW5lICBETUFfQ0NSM19QU0laRV8wICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDEwMCkgICAgICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBETUFfQ0NSM19QU0laRV8xICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDIwMCkgICAgICAgICAgICAvKiE8IEJpdCAxICovCisKKyNkZWZpbmUgIERNQV9DQ1IzX01TSVpFICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwQzAwKSAgICAgICAgICAgIC8qITwgTVNJWkVbMTowXSBiaXRzIChNZW1vcnkgc2l6ZSkgKi8KKyNkZWZpbmUgIERNQV9DQ1IzX01TSVpFXzAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwNDAwKSAgICAgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIERNQV9DQ1IzX01TSVpFXzEgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwODAwKSAgICAgICAgICAgIC8qITwgQml0IDEgKi8KKworI2RlZmluZSAgRE1BX0NDUjNfUEwgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDMwMDApICAgICAgICAgICAgLyohPCBQTFsxOjBdIGJpdHMgKENoYW5uZWwgUHJpb3JpdHkgbGV2ZWwpICovCisjZGVmaW5lICBETUFfQ0NSM19QTF8wICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MTAwMCkgICAgICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBETUFfQ0NSM19QTF8xICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MjAwMCkgICAgICAgICAgICAvKiE8IEJpdCAxICovCisKKyNkZWZpbmUgIERNQV9DQ1IzX01FTTJNRU0gICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHg0MDAwKSAgICAgICAgICAgIC8qITwgTWVtb3J5IHRvIG1lbW9yeSBtb2RlICovCisKKy8qITwqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBETUFfQ0NSNCByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIERNQV9DQ1I0X0VOICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAxKSAgICAgICAgICAgIC8qITwgQ2hhbm5lbCBlbmFibGUgKi8KKyNkZWZpbmUgIERNQV9DQ1I0X1RDSUUgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAyKSAgICAgICAgICAgIC8qITwgVHJhbnNmZXIgY29tcGxldGUgaW50ZXJydXB0IGVuYWJsZSAqLworI2RlZmluZSAgRE1BX0NDUjRfSFRJRSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDQpICAgICAgICAgICAgLyohPCBIYWxmIFRyYW5zZmVyIGludGVycnVwdCBlbmFibGUgKi8KKyNkZWZpbmUgIERNQV9DQ1I0X1RFSUUgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA4KSAgICAgICAgICAgIC8qITwgVHJhbnNmZXIgZXJyb3IgaW50ZXJydXB0IGVuYWJsZSAqLworI2RlZmluZSAgRE1BX0NDUjRfRElSICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMTApICAgICAgICAgICAgLyohPCBEYXRhIHRyYW5zZmVyIGRpcmVjdGlvbiAqLworI2RlZmluZSAgRE1BX0NDUjRfQ0lSQyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMjApICAgICAgICAgICAgLyohPCBDaXJjdWxhciBtb2RlICovCisjZGVmaW5lICBETUFfQ0NSNF9QSU5DICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA0MCkgICAgICAgICAgICAvKiE8IFBlcmlwaGVyYWwgaW5jcmVtZW50IG1vZGUgKi8KKyNkZWZpbmUgIERNQV9DQ1I0X01JTkMgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDgwKSAgICAgICAgICAgIC8qITwgTWVtb3J5IGluY3JlbWVudCBtb2RlICovCisKKyNkZWZpbmUgIERNQV9DQ1I0X1BTSVpFICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMzAwKSAgICAgICAgICAgIC8qITwgUFNJWkVbMTowXSBiaXRzIChQZXJpcGhlcmFsIHNpemUpICovCisjZGVmaW5lICBETUFfQ0NSNF9QU0laRV8wICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDEwMCkgICAgICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBETUFfQ0NSNF9QU0laRV8xICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDIwMCkgICAgICAgICAgICAvKiE8IEJpdCAxICovCisKKyNkZWZpbmUgIERNQV9DQ1I0X01TSVpFICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwQzAwKSAgICAgICAgICAgIC8qITwgTVNJWkVbMTowXSBiaXRzIChNZW1vcnkgc2l6ZSkgKi8KKyNkZWZpbmUgIERNQV9DQ1I0X01TSVpFXzAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwNDAwKSAgICAgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIERNQV9DQ1I0X01TSVpFXzEgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwODAwKSAgICAgICAgICAgIC8qITwgQml0IDEgKi8KKworI2RlZmluZSAgRE1BX0NDUjRfUEwgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDMwMDApICAgICAgICAgICAgLyohPCBQTFsxOjBdIGJpdHMgKENoYW5uZWwgUHJpb3JpdHkgbGV2ZWwpICovCisjZGVmaW5lICBETUFfQ0NSNF9QTF8wICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MTAwMCkgICAgICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBETUFfQ0NSNF9QTF8xICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MjAwMCkgICAgICAgICAgICAvKiE8IEJpdCAxICovCisKKyNkZWZpbmUgIERNQV9DQ1I0X01FTTJNRU0gICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHg0MDAwKSAgICAgICAgICAgIC8qITwgTWVtb3J5IHRvIG1lbW9yeSBtb2RlICovCisKKy8qKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBETUFfQ0NSNSByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIERNQV9DQ1I1X0VOICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAxKSAgICAgICAgICAgIC8qITwgQ2hhbm5lbCBlbmFibGUgKi8KKyNkZWZpbmUgIERNQV9DQ1I1X1RDSUUgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAyKSAgICAgICAgICAgIC8qITwgVHJhbnNmZXIgY29tcGxldGUgaW50ZXJydXB0IGVuYWJsZSAqLworI2RlZmluZSAgRE1BX0NDUjVfSFRJRSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDQpICAgICAgICAgICAgLyohPCBIYWxmIFRyYW5zZmVyIGludGVycnVwdCBlbmFibGUgKi8KKyNkZWZpbmUgIERNQV9DQ1I1X1RFSUUgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA4KSAgICAgICAgICAgIC8qITwgVHJhbnNmZXIgZXJyb3IgaW50ZXJydXB0IGVuYWJsZSAqLworI2RlZmluZSAgRE1BX0NDUjVfRElSICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMTApICAgICAgICAgICAgLyohPCBEYXRhIHRyYW5zZmVyIGRpcmVjdGlvbiAqLworI2RlZmluZSAgRE1BX0NDUjVfQ0lSQyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMjApICAgICAgICAgICAgLyohPCBDaXJjdWxhciBtb2RlICovCisjZGVmaW5lICBETUFfQ0NSNV9QSU5DICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA0MCkgICAgICAgICAgICAvKiE8IFBlcmlwaGVyYWwgaW5jcmVtZW50IG1vZGUgKi8KKyNkZWZpbmUgIERNQV9DQ1I1X01JTkMgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDgwKSAgICAgICAgICAgIC8qITwgTWVtb3J5IGluY3JlbWVudCBtb2RlICovCisKKyNkZWZpbmUgIERNQV9DQ1I1X1BTSVpFICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMzAwKSAgICAgICAgICAgIC8qITwgUFNJWkVbMTowXSBiaXRzIChQZXJpcGhlcmFsIHNpemUpICovCisjZGVmaW5lICBETUFfQ0NSNV9QU0laRV8wICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDEwMCkgICAgICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBETUFfQ0NSNV9QU0laRV8xICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDIwMCkgICAgICAgICAgICAvKiE8IEJpdCAxICovCisKKyNkZWZpbmUgIERNQV9DQ1I1X01TSVpFICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwQzAwKSAgICAgICAgICAgIC8qITwgTVNJWkVbMTowXSBiaXRzIChNZW1vcnkgc2l6ZSkgKi8KKyNkZWZpbmUgIERNQV9DQ1I1X01TSVpFXzAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwNDAwKSAgICAgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIERNQV9DQ1I1X01TSVpFXzEgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwODAwKSAgICAgICAgICAgIC8qITwgQml0IDEgKi8KKworI2RlZmluZSAgRE1BX0NDUjVfUEwgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDMwMDApICAgICAgICAgICAgLyohPCBQTFsxOjBdIGJpdHMgKENoYW5uZWwgUHJpb3JpdHkgbGV2ZWwpICovCisjZGVmaW5lICBETUFfQ0NSNV9QTF8wICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MTAwMCkgICAgICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBETUFfQ0NSNV9QTF8xICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MjAwMCkgICAgICAgICAgICAvKiE8IEJpdCAxICovCisKKyNkZWZpbmUgIERNQV9DQ1I1X01FTTJNRU0gICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHg0MDAwKSAgICAgICAgICAgIC8qITwgTWVtb3J5IHRvIG1lbW9yeSBtb2RlIGVuYWJsZSAqLworCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIERNQV9DQ1I2IHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgRE1BX0NDUjZfRU4gICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDEpICAgICAgICAgICAgLyohPCBDaGFubmVsIGVuYWJsZSAqLworI2RlZmluZSAgRE1BX0NDUjZfVENJRSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDIpICAgICAgICAgICAgLyohPCBUcmFuc2ZlciBjb21wbGV0ZSBpbnRlcnJ1cHQgZW5hYmxlICovCisjZGVmaW5lICBETUFfQ0NSNl9IVElFICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwNCkgICAgICAgICAgICAvKiE8IEhhbGYgVHJhbnNmZXIgaW50ZXJydXB0IGVuYWJsZSAqLworI2RlZmluZSAgRE1BX0NDUjZfVEVJRSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDgpICAgICAgICAgICAgLyohPCBUcmFuc2ZlciBlcnJvciBpbnRlcnJ1cHQgZW5hYmxlICovCisjZGVmaW5lICBETUFfQ0NSNl9ESVIgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAxMCkgICAgICAgICAgICAvKiE8IERhdGEgdHJhbnNmZXIgZGlyZWN0aW9uICovCisjZGVmaW5lICBETUFfQ0NSNl9DSVJDICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAyMCkgICAgICAgICAgICAvKiE8IENpcmN1bGFyIG1vZGUgKi8KKyNkZWZpbmUgIERNQV9DQ1I2X1BJTkMgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDQwKSAgICAgICAgICAgIC8qITwgUGVyaXBoZXJhbCBpbmNyZW1lbnQgbW9kZSAqLworI2RlZmluZSAgRE1BX0NDUjZfTUlOQyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwODApICAgICAgICAgICAgLyohPCBNZW1vcnkgaW5jcmVtZW50IG1vZGUgKi8KKworI2RlZmluZSAgRE1BX0NDUjZfUFNJWkUgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAzMDApICAgICAgICAgICAgLyohPCBQU0laRVsxOjBdIGJpdHMgKFBlcmlwaGVyYWwgc2l6ZSkgKi8KKyNkZWZpbmUgIERNQV9DQ1I2X1BTSVpFXzAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMTAwKSAgICAgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIERNQV9DQ1I2X1BTSVpFXzEgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMjAwKSAgICAgICAgICAgIC8qITwgQml0IDEgKi8KKworI2RlZmluZSAgRE1BX0NDUjZfTVNJWkUgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDBDMDApICAgICAgICAgICAgLyohPCBNU0laRVsxOjBdIGJpdHMgKE1lbW9yeSBzaXplKSAqLworI2RlZmluZSAgRE1BX0NDUjZfTVNJWkVfMCAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDA0MDApICAgICAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgRE1BX0NDUjZfTVNJWkVfMSAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDA4MDApICAgICAgICAgICAgLyohPCBCaXQgMSAqLworCisjZGVmaW5lICBETUFfQ0NSNl9QTCAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MzAwMCkgICAgICAgICAgICAvKiE8IFBMWzE6MF0gYml0cyAoQ2hhbm5lbCBQcmlvcml0eSBsZXZlbCkgKi8KKyNkZWZpbmUgIERNQV9DQ1I2X1BMXzAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgxMDAwKSAgICAgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIERNQV9DQ1I2X1BMXzEgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgyMDAwKSAgICAgICAgICAgIC8qITwgQml0IDEgKi8KKworI2RlZmluZSAgRE1BX0NDUjZfTUVNMk1FTSAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDQwMDApICAgICAgICAgICAgLyohPCBNZW1vcnkgdG8gbWVtb3J5IG1vZGUgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBETUFfQ0NSNyByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIERNQV9DQ1I3X0VOICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAxKSAgICAgICAgICAgIC8qITwgQ2hhbm5lbCBlbmFibGUgKi8KKyNkZWZpbmUgIERNQV9DQ1I3X1RDSUUgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAyKSAgICAgICAgICAgIC8qITwgVHJhbnNmZXIgY29tcGxldGUgaW50ZXJydXB0IGVuYWJsZSAqLworI2RlZmluZSAgRE1BX0NDUjdfSFRJRSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDQpICAgICAgICAgICAgLyohPCBIYWxmIFRyYW5zZmVyIGludGVycnVwdCBlbmFibGUgKi8KKyNkZWZpbmUgIERNQV9DQ1I3X1RFSUUgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA4KSAgICAgICAgICAgIC8qITwgVHJhbnNmZXIgZXJyb3IgaW50ZXJydXB0IGVuYWJsZSAqLworI2RlZmluZSAgRE1BX0NDUjdfRElSICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMTApICAgICAgICAgICAgLyohPCBEYXRhIHRyYW5zZmVyIGRpcmVjdGlvbiAqLworI2RlZmluZSAgRE1BX0NDUjdfQ0lSQyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMjApICAgICAgICAgICAgLyohPCBDaXJjdWxhciBtb2RlICovCisjZGVmaW5lICBETUFfQ0NSN19QSU5DICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA0MCkgICAgICAgICAgICAvKiE8IFBlcmlwaGVyYWwgaW5jcmVtZW50IG1vZGUgKi8KKyNkZWZpbmUgIERNQV9DQ1I3X01JTkMgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDgwKSAgICAgICAgICAgIC8qITwgTWVtb3J5IGluY3JlbWVudCBtb2RlICovCisKKyNkZWZpbmUgIERNQV9DQ1I3X1BTSVpFICAgICAgICAgICAgLCAgICAgICAgICgodWludDE2X3QpMHgwMzAwKSAgICAgICAgICAgIC8qITwgUFNJWkVbMTowXSBiaXRzIChQZXJpcGhlcmFsIHNpemUpICovCisjZGVmaW5lICBETUFfQ0NSN19QU0laRV8wICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDEwMCkgICAgICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBETUFfQ0NSN19QU0laRV8xICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDIwMCkgICAgICAgICAgICAvKiE8IEJpdCAxICovCisKKyNkZWZpbmUgIERNQV9DQ1I3X01TSVpFICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwQzAwKSAgICAgICAgICAgIC8qITwgTVNJWkVbMTowXSBiaXRzIChNZW1vcnkgc2l6ZSkgKi8KKyNkZWZpbmUgIERNQV9DQ1I3X01TSVpFXzAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwNDAwKSAgICAgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIERNQV9DQ1I3X01TSVpFXzEgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwODAwKSAgICAgICAgICAgIC8qITwgQml0IDEgKi8KKworI2RlZmluZSAgRE1BX0NDUjdfUEwgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDMwMDApICAgICAgICAgICAgLyohPCBQTFsxOjBdIGJpdHMgKENoYW5uZWwgUHJpb3JpdHkgbGV2ZWwpICovCisjZGVmaW5lICBETUFfQ0NSN19QTF8wICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MTAwMCkgICAgICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBETUFfQ0NSN19QTF8xICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MjAwMCkgICAgICAgICAgICAvKiE8IEJpdCAxICovCisKKyNkZWZpbmUgIERNQV9DQ1I3X01FTTJNRU0gICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHg0MDAwKSAgICAgICAgICAgIC8qITwgTWVtb3J5IHRvIG1lbW9yeSBtb2RlIGVuYWJsZSAqLworCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgRE1BX0NORFRSMSByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgRE1BX0NORFRSMV9ORFQgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweEZGRkYpICAgICAgICAgICAgLyohPCBOdW1iZXIgb2YgZGF0YSB0byBUcmFuc2ZlciAqLworCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgRE1BX0NORFRSMiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgRE1BX0NORFRSMl9ORFQgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweEZGRkYpICAgICAgICAgICAgLyohPCBOdW1iZXIgb2YgZGF0YSB0byBUcmFuc2ZlciAqLworCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgRE1BX0NORFRSMyByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgRE1BX0NORFRSM19ORFQgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweEZGRkYpICAgICAgICAgICAgLyohPCBOdW1iZXIgb2YgZGF0YSB0byBUcmFuc2ZlciAqLworCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgRE1BX0NORFRSNCByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgRE1BX0NORFRSNF9ORFQgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweEZGRkYpICAgICAgICAgICAgLyohPCBOdW1iZXIgb2YgZGF0YSB0byBUcmFuc2ZlciAqLworCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgRE1BX0NORFRSNSByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgRE1BX0NORFRSNV9ORFQgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweEZGRkYpICAgICAgICAgICAgLyohPCBOdW1iZXIgb2YgZGF0YSB0byBUcmFuc2ZlciAqLworCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgRE1BX0NORFRSNiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgRE1BX0NORFRSNl9ORFQgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweEZGRkYpICAgICAgICAgICAgLyohPCBOdW1iZXIgb2YgZGF0YSB0byBUcmFuc2ZlciAqLworCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgRE1BX0NORFRSNyByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgRE1BX0NORFRSN19ORFQgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweEZGRkYpICAgICAgICAgICAgLyohPCBOdW1iZXIgb2YgZGF0YSB0byBUcmFuc2ZlciAqLworCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgRE1BX0NQQVIxIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgRE1BX0NQQVIxX1BBICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGRkZGRkZGKSAgICAgICAgLyohPCBQZXJpcGhlcmFsIEFkZHJlc3MgKi8KKworLyoqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIERNQV9DUEFSMiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIERNQV9DUEFSMl9QQSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHhGRkZGRkZGRikgICAgICAgIC8qITwgUGVyaXBoZXJhbCBBZGRyZXNzICovCisKKy8qKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBETUFfQ1BBUjMgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBETUFfQ1BBUjNfUEEgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4RkZGRkZGRkYpICAgICAgICAvKiE8IFBlcmlwaGVyYWwgQWRkcmVzcyAqLworCisKKy8qKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBETUFfQ1BBUjQgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBETUFfQ1BBUjRfUEEgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4RkZGRkZGRkYpICAgICAgICAvKiE8IFBlcmlwaGVyYWwgQWRkcmVzcyAqLworCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgRE1BX0NQQVI1IHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgRE1BX0NQQVI1X1BBICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGRkZGRkZGKSAgICAgICAgLyohPCBQZXJpcGhlcmFsIEFkZHJlc3MgKi8KKworLyoqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIERNQV9DUEFSNiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIERNQV9DUEFSNl9QQSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHhGRkZGRkZGRikgICAgICAgIC8qITwgUGVyaXBoZXJhbCBBZGRyZXNzICovCisKKworLyoqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIERNQV9DUEFSNyByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIERNQV9DUEFSN19QQSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHhGRkZGRkZGRikgICAgICAgIC8qITwgUGVyaXBoZXJhbCBBZGRyZXNzICovCisKKy8qKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBETUFfQ01BUjEgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBETUFfQ01BUjFfTUEgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4RkZGRkZGRkYpICAgICAgICAvKiE8IE1lbW9yeSBBZGRyZXNzICovCisKKy8qKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBETUFfQ01BUjIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBETUFfQ01BUjJfTUEgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4RkZGRkZGRkYpICAgICAgICAvKiE8IE1lbW9yeSBBZGRyZXNzICovCisKKy8qKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBETUFfQ01BUjMgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBETUFfQ01BUjNfTUEgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4RkZGRkZGRkYpICAgICAgICAvKiE8IE1lbW9yeSBBZGRyZXNzICovCisKKworLyoqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIERNQV9DTUFSNCByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIERNQV9DTUFSNF9NQSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHhGRkZGRkZGRikgICAgICAgIC8qITwgTWVtb3J5IEFkZHJlc3MgKi8KKworLyoqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIERNQV9DTUFSNSByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIERNQV9DTUFSNV9NQSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHhGRkZGRkZGRikgICAgICAgIC8qITwgTWVtb3J5IEFkZHJlc3MgKi8KKworLyoqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIERNQV9DTUFSNiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIERNQV9DTUFSNl9NQSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHhGRkZGRkZGRikgICAgICAgIC8qITwgTWVtb3J5IEFkZHJlc3MgKi8KKworLyoqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIERNQV9DTUFSNyByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIERNQV9DTUFSN19NQSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHhGRkZGRkZGRikgICAgICAgIC8qITwgTWVtb3J5IEFkZHJlc3MgKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgIEFuYWxvZyB0byBEaWdpdGFsIENvbnZlcnRlciAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIEFEQ19TUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBBRENfU1JfQVdEICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwMSkgICAgICAgICAgICAgICAvKiE8IEFuYWxvZyB3YXRjaGRvZyBmbGFnICovCisjZGVmaW5lICBBRENfU1JfRU9DICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwMikgICAgICAgICAgICAgICAvKiE8IEVuZCBvZiBjb252ZXJzaW9uICovCisjZGVmaW5lICBBRENfU1JfSkVPQyAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwNCkgICAgICAgICAgICAgICAvKiE8IEluamVjdGVkIGNoYW5uZWwgZW5kIG9mIGNvbnZlcnNpb24gKi8KKyNkZWZpbmUgIEFEQ19TUl9KU1RSVCAgICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDA4KSAgICAgICAgICAgICAgIC8qITwgSW5qZWN0ZWQgY2hhbm5lbCBTdGFydCBmbGFnICovCisjZGVmaW5lICBBRENfU1JfU1RSVCAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgxMCkgICAgICAgICAgICAgICAvKiE8IFJlZ3VsYXIgY2hhbm5lbCBTdGFydCBmbGFnICovCisKKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgQURDX0NSMSByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBBRENfQ1IxX0FXRENIICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMUYpICAgICAgICAvKiE8IEFXRENIWzQ6MF0gYml0cyAoQW5hbG9nIHdhdGNoZG9nIGNoYW5uZWwgc2VsZWN0IGJpdHMpICovCisjZGVmaW5lICBBRENfQ1IxX0FXRENIXzAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDEpICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBBRENfQ1IxX0FXRENIXzEgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IEJpdCAxICovCisjZGVmaW5lICBBRENfQ1IxX0FXRENIXzIgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDQpICAgICAgICAvKiE8IEJpdCAyICovCisjZGVmaW5lICBBRENfQ1IxX0FXRENIXzMgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDgpICAgICAgICAvKiE8IEJpdCAzICovCisjZGVmaW5lICBBRENfQ1IxX0FXRENIXzQgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAgICAgICAvKiE8IEJpdCA0ICovCisKKyNkZWZpbmUgIEFEQ19DUjFfRU9DSUUgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAyMCkgICAgICAgIC8qITwgSW50ZXJydXB0IGVuYWJsZSBmb3IgRU9DICovCisjZGVmaW5lICBBRENfQ1IxX0FXRElFICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwNDApICAgICAgICAvKiE8IEFuYWxvZyBXYXRjaGRvZyBpbnRlcnJ1cHQgZW5hYmxlICovCisjZGVmaW5lICBBRENfQ1IxX0pFT0NJRSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApICAgICAgICAvKiE8IEludGVycnVwdCBlbmFibGUgZm9yIGluamVjdGVkIGNoYW5uZWxzICovCisjZGVmaW5lICBBRENfQ1IxX1NDQU4gICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAxMDApICAgICAgICAvKiE8IFNjYW4gbW9kZSAqLworI2RlZmluZSAgQURDX0NSMV9BV0RTR0wgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMjAwKSAgICAgICAgLyohPCBFbmFibGUgdGhlIHdhdGNoZG9nIG9uIGEgc2luZ2xlIGNoYW5uZWwgaW4gc2NhbiBtb2RlICovCisjZGVmaW5lICBBRENfQ1IxX0pBVVRPICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApICAgICAgICAvKiE8IEF1dG9tYXRpYyBpbmplY3RlZCBncm91cCBjb252ZXJzaW9uICovCisjZGVmaW5lICBBRENfQ1IxX0RJU0NFTiAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA4MDApICAgICAgICAvKiE8IERpc2NvbnRpbnVvdXMgbW9kZSBvbiByZWd1bGFyIGNoYW5uZWxzICovCisjZGVmaW5lICBBRENfQ1IxX0pESVNDRU4gICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDEwMDApICAgICAgICAvKiE8IERpc2NvbnRpbnVvdXMgbW9kZSBvbiBpbmplY3RlZCBjaGFubmVscyAqLworCisjZGVmaW5lICBBRENfQ1IxX0RJU0NOVU0gICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMEUwMDApICAgICAgICAvKiE8IERJU0NOVU1bMjowXSBiaXRzIChEaXNjb250aW51b3VzIG1vZGUgY2hhbm5lbCBjb3VudCkgKi8KKyNkZWZpbmUgIEFEQ19DUjFfRElTQ05VTV8wICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMjAwMCkgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIEFEQ19DUjFfRElTQ05VTV8xICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgICAgICAgIC8qITwgQml0IDEgKi8KKyNkZWZpbmUgIEFEQ19DUjFfRElTQ05VTV8yICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwODAwMCkgICAgICAgIC8qITwgQml0IDIgKi8KKworI2RlZmluZSAgQURDX0NSMV9EVUFMTU9EICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMEYwMDAwKSAgICAgICAgLyohPCBEVUFMTU9EWzM6MF0gYml0cyAoRHVhbCBtb2RlIHNlbGVjdGlvbikgKi8KKyNkZWZpbmUgIEFEQ19DUjFfRFVBTE1PRF8wICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAxMDAwMCkgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIEFEQ19DUjFfRFVBTE1PRF8xICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkgICAgICAgIC8qITwgQml0IDEgKi8KKyNkZWZpbmUgIEFEQ19DUjFfRFVBTE1PRF8yICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA0MDAwMCkgICAgICAgIC8qITwgQml0IDIgKi8KKyNkZWZpbmUgIEFEQ19DUjFfRFVBTE1PRF8zICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA4MDAwMCkgICAgICAgIC8qITwgQml0IDMgKi8KKworI2RlZmluZSAgQURDX0NSMV9KQVdERU4gICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwNDAwMDAwKSAgICAgICAgLyohPCBBbmFsb2cgd2F0Y2hkb2cgZW5hYmxlIG9uIGluamVjdGVkIGNoYW5uZWxzICovCisjZGVmaW5lICBBRENfQ1IxX0FXREVOICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA4MDAwMDApICAgICAgICAvKiE8IEFuYWxvZyB3YXRjaGRvZyBlbmFibGUgb24gcmVndWxhciBjaGFubmVscyAqLworCisgIAorLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBBRENfQ1IyIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIEFEQ19DUjJfQURPTiAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgICAgICAgIC8qITwgQS9EIENvbnZlcnRlciBPTiAvIE9GRiAqLworI2RlZmluZSAgQURDX0NSMl9DT05UICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAyKSAgICAgICAgLyohPCBDb250aW51b3VzIENvbnZlcnNpb24gKi8KKyNkZWZpbmUgIEFEQ19DUjJfQ0FMICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNCkgICAgICAgIC8qITwgQS9EIENhbGlicmF0aW9uICovCisjZGVmaW5lICBBRENfQ1IyX1JTVENBTCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDgpICAgICAgICAvKiE8IFJlc2V0IENhbGlicmF0aW9uICovCisjZGVmaW5lICBBRENfQ1IyX0RNQSAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAxMDApICAgICAgICAvKiE8IERpcmVjdCBNZW1vcnkgYWNjZXNzIG1vZGUgKi8KKyNkZWZpbmUgIEFEQ19DUjJfQUxJR04gICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgICAgICAgIC8qITwgRGF0YSBBbGlnbm1lbnQgKi8KKworI2RlZmluZSAgQURDX0NSMl9KRVhUU0VMICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA3MDAwKSAgICAgICAgLyohPCBKRVhUU0VMWzI6MF0gYml0cyAoRXh0ZXJuYWwgZXZlbnQgc2VsZWN0IGZvciBpbmplY3RlZCBncm91cCkgKi8KKyNkZWZpbmUgIEFEQ19DUjJfSkVYVFNFTF8wICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMTAwMCkgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIEFEQ19DUjJfSkVYVFNFTF8xICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMjAwMCkgICAgICAgIC8qITwgQml0IDEgKi8KKyNkZWZpbmUgIEFEQ19DUjJfSkVYVFNFTF8yICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgICAgICAgIC8qITwgQml0IDIgKi8KKworI2RlZmluZSAgQURDX0NSMl9KRVhUVFJJRyAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKSAgICAgICAgLyohPCBFeHRlcm5hbCBUcmlnZ2VyIENvbnZlcnNpb24gbW9kZSBmb3IgaW5qZWN0ZWQgY2hhbm5lbHMgKi8KKworI2RlZmluZSAgQURDX0NSMl9FWFRTRUwgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMEUwMDAwKSAgICAgICAgLyohPCBFWFRTRUxbMjowXSBiaXRzIChFeHRlcm5hbCBFdmVudCBTZWxlY3QgZm9yIHJlZ3VsYXIgZ3JvdXApICovCisjZGVmaW5lICBBRENfQ1IyX0VYVFNFTF8wICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMjAwMDApICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBBRENfQ1IyX0VYVFNFTF8xICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwNDAwMDApICAgICAgICAvKiE8IEJpdCAxICovCisjZGVmaW5lICBBRENfQ1IyX0VYVFNFTF8yICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAgICAgICAvKiE8IEJpdCAyICovCisKKyNkZWZpbmUgIEFEQ19DUjJfRVhUVFJJRyAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDEwMDAwMCkgICAgICAgIC8qITwgRXh0ZXJuYWwgVHJpZ2dlciBDb252ZXJzaW9uIG1vZGUgZm9yIHJlZ3VsYXIgY2hhbm5lbHMgKi8KKyNkZWZpbmUgIEFEQ19DUjJfSlNXU1RBUlQgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDIwMDAwMCkgICAgICAgIC8qITwgU3RhcnQgQ29udmVyc2lvbiBvZiBpbmplY3RlZCBjaGFubmVscyAqLworI2RlZmluZSAgQURDX0NSMl9TV1NUQVJUICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwNDAwMDAwKSAgICAgICAgLyohPCBTdGFydCBDb252ZXJzaW9uIG9mIHJlZ3VsYXIgY2hhbm5lbHMgKi8KKyNkZWZpbmUgIEFEQ19DUjJfVFNWUkVGRSAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDgwMDAwMCkgICAgICAgIC8qITwgVGVtcGVyYXR1cmUgU2Vuc29yIGFuZCBWUkVGSU5UIEVuYWJsZSAqLworCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgQURDX1NNUFIxIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgQURDX1NNUFIxX1NNUDEwICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA3KSAgICAgICAgLyohPCBTTVAxMFsyOjBdIGJpdHMgKENoYW5uZWwgMTAgU2FtcGxlIHRpbWUgc2VsZWN0aW9uKSAqLworI2RlZmluZSAgQURDX1NNUFIxX1NNUDEwXzAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxKSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgQURDX1NNUFIxX1NNUDEwXzEgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAyKSAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgQURDX1NNUFIxX1NNUDEwXzIgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgICAgICAgLyohPCBCaXQgMiAqLworCisjZGVmaW5lICBBRENfU01QUjFfU01QMTEgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMzgpICAgICAgICAvKiE8IFNNUDExWzI6MF0gYml0cyAoQ2hhbm5lbCAxMSBTYW1wbGUgdGltZSBzZWxlY3Rpb24pICovCisjZGVmaW5lICBBRENfU01QUjFfU01QMTFfMCAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDgpICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBBRENfU01QUjFfU01QMTFfMSAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAgICAgICAvKiE8IEJpdCAxICovCisjZGVmaW5lICBBRENfU01QUjFfU01QMTFfMiAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMjApICAgICAgICAvKiE8IEJpdCAyICovCisKKyNkZWZpbmUgIEFEQ19TTVBSMV9TTVAxMiAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDFDMCkgICAgICAgIC8qITwgU01QMTJbMjowXSBiaXRzIChDaGFubmVsIDEyIFNhbXBsZSB0aW1lIHNlbGVjdGlvbikgKi8KKyNkZWZpbmUgIEFEQ19TTVBSMV9TTVAxMl8wICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIEFEQ19TTVBSMV9TTVAxMl8xICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA4MCkgICAgICAgIC8qITwgQml0IDEgKi8KKyNkZWZpbmUgIEFEQ19TTVBSMV9TTVAxMl8yICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDEwMCkgICAgICAgIC8qITwgQml0IDIgKi8KKworI2RlZmluZSAgQURDX1NNUFIxX1NNUDEzICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwRTAwKSAgICAgICAgLyohPCBTTVAxM1syOjBdIGJpdHMgKENoYW5uZWwgMTMgU2FtcGxlIHRpbWUgc2VsZWN0aW9uKSAqLworI2RlZmluZSAgQURDX1NNUFIxX1NNUDEzXzAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMjAwKSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgQURDX1NNUFIxX1NNUDEzXzEgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwNDAwKSAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgQURDX1NNUFIxX1NNUDEzXzIgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwODAwKSAgICAgICAgLyohPCBCaXQgMiAqLworCisjZGVmaW5lICBBRENfU01QUjFfU01QMTQgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDcwMDApICAgICAgICAvKiE8IFNNUDE0WzI6MF0gYml0cyAoQ2hhbm5lbCAxNCBTYW1wbGUgdGltZSBzZWxlY3Rpb24pICovCisjZGVmaW5lICBBRENfU01QUjFfU01QMTRfMCAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDEwMDApICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBBRENfU01QUjFfU01QMTRfMSAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAgICAgICAvKiE8IEJpdCAxICovCisjZGVmaW5lICBBRENfU01QUjFfU01QMTRfMiAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDQwMDApICAgICAgICAvKiE8IEJpdCAyICovCisKKyNkZWZpbmUgIEFEQ19TTVBSMV9TTVAxNSAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAzODAwMCkgICAgICAgIC8qITwgU01QMTVbMjowXSBiaXRzIChDaGFubmVsIDE1IFNhbXBsZSB0aW1lIHNlbGVjdGlvbikgKi8KKyNkZWZpbmUgIEFEQ19TTVBSMV9TTVAxNV8wICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwODAwMCkgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIEFEQ19TTVBSMV9TTVAxNV8xICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAxMDAwMCkgICAgICAgIC8qITwgQml0IDEgKi8KKyNkZWZpbmUgIEFEQ19TTVBSMV9TTVAxNV8yICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkgICAgICAgIC8qITwgQml0IDIgKi8KKworI2RlZmluZSAgQURDX1NNUFIxX1NNUDE2ICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMUMwMDAwKSAgICAgICAgLyohPCBTTVAxNlsyOjBdIGJpdHMgKENoYW5uZWwgMTYgU2FtcGxlIHRpbWUgc2VsZWN0aW9uKSAqLworI2RlZmluZSAgQURDX1NNUFIxX1NNUDE2XzAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDQwMDAwKSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgQURDX1NNUFIxX1NNUDE2XzEgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDgwMDAwKSAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgQURDX1NNUFIxX1NNUDE2XzIgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMTAwMDAwKSAgICAgICAgLyohPCBCaXQgMiAqLworCisjZGVmaW5lICBBRENfU01QUjFfU01QMTcgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDBFMDAwMDApICAgICAgICAvKiE8IFNNUDE3WzI6MF0gYml0cyAoQ2hhbm5lbCAxNyBTYW1wbGUgdGltZSBzZWxlY3Rpb24pICovCisjZGVmaW5lICBBRENfU01QUjFfU01QMTdfMCAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAyMDAwMDApICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBBRENfU01QUjFfU01QMTdfMSAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApICAgICAgICAvKiE8IEJpdCAxICovCisjZGVmaW5lICBBRENfU01QUjFfU01QMTdfMiAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA4MDAwMDApICAgICAgICAvKiE8IEJpdCAyICovCisKKy8qKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBBRENfU01QUjIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBBRENfU01QUjJfU01QMCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDcpICAgICAgICAvKiE8IFNNUDBbMjowXSBiaXRzIChDaGFubmVsIDAgU2FtcGxlIHRpbWUgc2VsZWN0aW9uKSAqLworI2RlZmluZSAgQURDX1NNUFIyX1NNUDBfMCAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxKSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgQURDX1NNUFIyX1NNUDBfMSAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAyKSAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgQURDX1NNUFIyX1NNUDBfMiAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgICAgICAgLyohPCBCaXQgMiAqLworCisjZGVmaW5lICBBRENfU01QUjJfU01QMSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMzgpICAgICAgICAvKiE8IFNNUDFbMjowXSBiaXRzIChDaGFubmVsIDEgU2FtcGxlIHRpbWUgc2VsZWN0aW9uKSAqLworI2RlZmluZSAgQURDX1NNUFIyX1NNUDFfMCAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA4KSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgQURDX1NNUFIyX1NNUDFfMSAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDEwKSAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgQURDX1NNUFIyX1NNUDFfMiAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKSAgICAgICAgLyohPCBCaXQgMiAqLworCisjZGVmaW5lICBBRENfU01QUjJfU01QMiAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAxQzApICAgICAgICAvKiE8IFNNUDJbMjowXSBiaXRzIChDaGFubmVsIDIgU2FtcGxlIHRpbWUgc2VsZWN0aW9uKSAqLworI2RlZmluZSAgQURDX1NNUFIyX1NNUDJfMCAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDQwKSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgQURDX1NNUFIyX1NNUDJfMSAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDgwKSAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgQURDX1NNUFIyX1NNUDJfMiAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKSAgICAgICAgLyohPCBCaXQgMiAqLworCisjZGVmaW5lICBBRENfU01QUjJfU01QMyAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDBFMDApICAgICAgICAvKiE8IFNNUDNbMjowXSBiaXRzIChDaGFubmVsIDMgU2FtcGxlIHRpbWUgc2VsZWN0aW9uKSAqLworI2RlZmluZSAgQURDX1NNUFIyX1NNUDNfMCAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMjAwKSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgQURDX1NNUFIyX1NNUDNfMSAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwNDAwKSAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgQURDX1NNUFIyX1NNUDNfMiAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwODAwKSAgICAgICAgLyohPCBCaXQgMiAqLworCisjZGVmaW5lICBBRENfU01QUjJfU01QNCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDcwMDApICAgICAgICAvKiE8IFNNUDRbMjowXSBiaXRzIChDaGFubmVsIDQgU2FtcGxlIHRpbWUgc2VsZWN0aW9uKSAqLworI2RlZmluZSAgQURDX1NNUFIyX1NNUDRfMCAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgQURDX1NNUFIyX1NNUDRfMSAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAyMDAwKSAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgQURDX1NNUFIyX1NNUDRfMiAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA0MDAwKSAgICAgICAgLyohPCBCaXQgMiAqLworCisjZGVmaW5lICBBRENfU01QUjJfU01QNSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMzgwMDApICAgICAgICAvKiE8IFNNUDVbMjowXSBiaXRzIChDaGFubmVsIDUgU2FtcGxlIHRpbWUgc2VsZWN0aW9uKSAqLworI2RlZmluZSAgQURDX1NNUFIyX1NNUDVfMCAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgQURDX1NNUFIyX1NNUDVfMSAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDEwMDAwKSAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgQURDX1NNUFIyX1NNUDVfMiAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDIwMDAwKSAgICAgICAgLyohPCBCaXQgMiAqLworCisjZGVmaW5lICBBRENfU01QUjJfU01QNiAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAxQzAwMDApICAgICAgICAvKiE8IFNNUDZbMjowXSBiaXRzIChDaGFubmVsIDYgU2FtcGxlIHRpbWUgc2VsZWN0aW9uKSAqLworI2RlZmluZSAgQURDX1NNUFIyX1NNUDZfMCAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDQwMDAwKSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgQURDX1NNUFIyX1NNUDZfMSAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDgwMDAwKSAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgQURDX1NNUFIyX1NNUDZfMiAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMTAwMDAwKSAgICAgICAgLyohPCBCaXQgMiAqLworCisjZGVmaW5lICBBRENfU01QUjJfU01QNyAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDBFMDAwMDApICAgICAgICAvKiE8IFNNUDdbMjowXSBiaXRzIChDaGFubmVsIDcgU2FtcGxlIHRpbWUgc2VsZWN0aW9uKSAqLworI2RlZmluZSAgQURDX1NNUFIyX1NNUDdfMCAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMjAwMDAwKSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgQURDX1NNUFIyX1NNUDdfMSAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwNDAwMDAwKSAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgQURDX1NNUFIyX1NNUDdfMiAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwODAwMDAwKSAgICAgICAgLyohPCBCaXQgMiAqLworCisjZGVmaW5lICBBRENfU01QUjJfU01QOCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDcwMDAwMDApICAgICAgICAvKiE8IFNNUDhbMjowXSBiaXRzIChDaGFubmVsIDggU2FtcGxlIHRpbWUgc2VsZWN0aW9uKSAqLworI2RlZmluZSAgQURDX1NNUFIyX1NNUDhfMCAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAxMDAwMDAwKSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgQURDX1NNUFIyX1NNUDhfMSAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAyMDAwMDAwKSAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgQURDX1NNUFIyX1NNUDhfMiAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA0MDAwMDAwKSAgICAgICAgLyohPCBCaXQgMiAqLworCisjZGVmaW5lICBBRENfU01QUjJfU01QOSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MzgwMDAwMDApICAgICAgICAvKiE8IFNNUDlbMjowXSBiaXRzIChDaGFubmVsIDkgU2FtcGxlIHRpbWUgc2VsZWN0aW9uKSAqLworI2RlZmluZSAgQURDX1NNUFIyX1NNUDlfMCAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA4MDAwMDAwKSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgQURDX1NNUFIyX1NNUDlfMSAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDEwMDAwMDAwKSAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgQURDX1NNUFIyX1NNUDlfMiAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDIwMDAwMDAwKSAgICAgICAgLyohPCBCaXQgMiAqLworCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgQURDX0pPRlIxIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgQURDX0pPRlIxX0pPRkZTRVQxICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDBGRkYpICAgICAgICAgICAgLyohPCBEYXRhIG9mZnNldCBmb3IgaW5qZWN0ZWQgY2hhbm5lbCAxICovCisKKy8qKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBBRENfSk9GUjIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBBRENfSk9GUjJfSk9GRlNFVDIgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MEZGRikgICAgICAgICAgICAvKiE8IERhdGEgb2Zmc2V0IGZvciBpbmplY3RlZCBjaGFubmVsIDIgKi8KKworLyoqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIEFEQ19KT0ZSMyByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIEFEQ19KT0ZSM19KT0ZGU0VUMyAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwRkZGKSAgICAgICAgICAgIC8qITwgRGF0YSBvZmZzZXQgZm9yIGluamVjdGVkIGNoYW5uZWwgMyAqLworCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgQURDX0pPRlI0IHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgQURDX0pPRlI0X0pPRkZTRVQ0ICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDBGRkYpICAgICAgICAgICAgLyohPCBEYXRhIG9mZnNldCBmb3IgaW5qZWN0ZWQgY2hhbm5lbCA0ICovCisKKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgQURDX0hUUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBBRENfSFRSX0hUICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MEZGRikgICAgICAgICAgICAvKiE8IEFuYWxvZyB3YXRjaGRvZyBoaWdoIHRocmVzaG9sZCAqLworCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIEFEQ19MVFIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgQURDX0xUUl9MVCAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDBGRkYpICAgICAgICAgICAgLyohPCBBbmFsb2cgd2F0Y2hkb2cgbG93IHRocmVzaG9sZCAqLworCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIEFEQ19TUVIxIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgQURDX1NRUjFfU1ExMyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDFGKSAgICAgICAgLyohPCBTUTEzWzQ6MF0gYml0cyAoMTN0aCBjb252ZXJzaW9uIGluIHJlZ3VsYXIgc2VxdWVuY2UpICovCisjZGVmaW5lICBBRENfU1FSMV9TUTEzXzAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDEpICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBBRENfU1FSMV9TUTEzXzEgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IEJpdCAxICovCisjZGVmaW5lICBBRENfU1FSMV9TUTEzXzIgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDQpICAgICAgICAvKiE8IEJpdCAyICovCisjZGVmaW5lICBBRENfU1FSMV9TUTEzXzMgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDgpICAgICAgICAvKiE8IEJpdCAzICovCisjZGVmaW5lICBBRENfU1FSMV9TUTEzXzQgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAgICAgICAvKiE8IEJpdCA0ICovCisKKyNkZWZpbmUgIEFEQ19TUVIxX1NRMTQgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDNFMCkgICAgICAgIC8qITwgU1ExNFs0OjBdIGJpdHMgKDE0dGggY29udmVyc2lvbiBpbiByZWd1bGFyIHNlcXVlbmNlKSAqLworI2RlZmluZSAgQURDX1NRUjFfU1ExNF8wICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgQURDX1NRUjFfU1ExNF8xICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDQwKSAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgQURDX1NRUjFfU1ExNF8yICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDgwKSAgICAgICAgLyohPCBCaXQgMiAqLworI2RlZmluZSAgQURDX1NRUjFfU1ExNF8zICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKSAgICAgICAgLyohPCBCaXQgMyAqLworI2RlZmluZSAgQURDX1NRUjFfU1ExNF80ICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMjAwKSAgICAgICAgLyohPCBCaXQgNCAqLworCisjZGVmaW5lICBBRENfU1FSMV9TUTE1ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDdDMDApICAgICAgICAvKiE8IFNRMTVbNDowXSBiaXRzICgxNXRoIGNvbnZlcnNpb24gaW4gcmVndWxhciBzZXF1ZW5jZSkgKi8KKyNkZWZpbmUgIEFEQ19TUVIxX1NRMTVfMCAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDQwMCkgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIEFEQ19TUVIxX1NRMTVfMSAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgICAgICAgIC8qITwgQml0IDEgKi8KKyNkZWZpbmUgIEFEQ19TUVIxX1NRMTVfMiAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMTAwMCkgICAgICAgIC8qITwgQml0IDIgKi8KKyNkZWZpbmUgIEFEQ19TUVIxX1NRMTVfMyAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMjAwMCkgICAgICAgIC8qITwgQml0IDMgKi8KKyNkZWZpbmUgIEFEQ19TUVIxX1NRMTVfNCAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgICAgICAgIC8qITwgQml0IDQgKi8KKworI2RlZmluZSAgQURDX1NRUjFfU1ExNiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMEY4MDAwKSAgICAgICAgLyohPCBTUTE2WzQ6MF0gYml0cyAoMTZ0aCBjb252ZXJzaW9uIGluIHJlZ3VsYXIgc2VxdWVuY2UpICovCisjZGVmaW5lICBBRENfU1FSMV9TUTE2XzAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDgwMDApICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBBRENfU1FSMV9TUTE2XzEgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMTAwMDApICAgICAgICAvKiE8IEJpdCAxICovCisjZGVmaW5lICBBRENfU1FSMV9TUTE2XzIgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMjAwMDApICAgICAgICAvKiE8IEJpdCAyICovCisjZGVmaW5lICBBRENfU1FSMV9TUTE2XzMgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwNDAwMDApICAgICAgICAvKiE8IEJpdCAzICovCisjZGVmaW5lICBBRENfU1FSMV9TUTE2XzQgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAgICAgICAvKiE8IEJpdCA0ICovCisKKyNkZWZpbmUgIEFEQ19TUVIxX0wgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMEYwMDAwMCkgICAgICAgIC8qITwgTFszOjBdIGJpdHMgKFJlZ3VsYXIgY2hhbm5lbCBzZXF1ZW5jZSBsZW5ndGgpICovCisjZGVmaW5lICBBRENfU1FSMV9MXzAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAxMDAwMDApICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBBRENfU1FSMV9MXzEgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAyMDAwMDApICAgICAgICAvKiE8IEJpdCAxICovCisjZGVmaW5lICBBRENfU1FSMV9MXzIgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApICAgICAgICAvKiE8IEJpdCAyICovCisjZGVmaW5lICBBRENfU1FSMV9MXzMgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA4MDAwMDApICAgICAgICAvKiE8IEJpdCAzICovCisKKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgQURDX1NRUjIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBBRENfU1FSMl9TUTcgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMUYpICAgICAgICAvKiE8IFNRN1s0OjBdIGJpdHMgKDd0aCBjb252ZXJzaW9uIGluIHJlZ3VsYXIgc2VxdWVuY2UpICovCisjZGVmaW5lICBBRENfU1FSMl9TUTdfMCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDEpICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBBRENfU1FSMl9TUTdfMSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IEJpdCAxICovCisjZGVmaW5lICBBRENfU1FSMl9TUTdfMiAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDQpICAgICAgICAvKiE8IEJpdCAyICovCisjZGVmaW5lICBBRENfU1FSMl9TUTdfMyAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDgpICAgICAgICAvKiE8IEJpdCAzICovCisjZGVmaW5lICBBRENfU1FSMl9TUTdfNCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAgICAgICAvKiE8IEJpdCA0ICovCisKKyNkZWZpbmUgIEFEQ19TUVIyX1NROCAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDNFMCkgICAgICAgIC8qITwgU1E4WzQ6MF0gYml0cyAoOHRoIGNvbnZlcnNpb24gaW4gcmVndWxhciBzZXF1ZW5jZSkgKi8KKyNkZWZpbmUgIEFEQ19TUVIyX1NROF8wICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAyMCkgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIEFEQ19TUVIyX1NROF8xICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgICAgICAgIC8qITwgQml0IDEgKi8KKyNkZWZpbmUgIEFEQ19TUVIyX1NROF8yICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA4MCkgICAgICAgIC8qITwgQml0IDIgKi8KKyNkZWZpbmUgIEFEQ19TUVIyX1NROF8zICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDEwMCkgICAgICAgIC8qITwgQml0IDMgKi8KKyNkZWZpbmUgIEFEQ19TUVIyX1NROF80ICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkgICAgICAgIC8qITwgQml0IDQgKi8KKworI2RlZmluZSAgQURDX1NRUjJfU1E5ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA3QzAwKSAgICAgICAgLyohPCBTUTlbNDowXSBiaXRzICg5dGggY29udmVyc2lvbiBpbiByZWd1bGFyIHNlcXVlbmNlKSAqLworI2RlZmluZSAgQURDX1NRUjJfU1E5XzAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwNDAwKSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgQURDX1NRUjJfU1E5XzEgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwODAwKSAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgQURDX1NRUjJfU1E5XzIgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKSAgICAgICAgLyohPCBCaXQgMiAqLworI2RlZmluZSAgQURDX1NRUjJfU1E5XzMgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAyMDAwKSAgICAgICAgLyohPCBCaXQgMyAqLworI2RlZmluZSAgQURDX1NRUjJfU1E5XzQgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA0MDAwKSAgICAgICAgLyohPCBCaXQgNCAqLworCisjZGVmaW5lICBBRENfU1FSMl9TUTEwICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwRjgwMDApICAgICAgICAvKiE8IFNRMTBbNDowXSBiaXRzICgxMHRoIGNvbnZlcnNpb24gaW4gcmVndWxhciBzZXF1ZW5jZSkgKi8KKyNkZWZpbmUgIEFEQ19TUVIyX1NRMTBfMCAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwODAwMCkgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIEFEQ19TUVIyX1NRMTBfMSAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAxMDAwMCkgICAgICAgIC8qITwgQml0IDEgKi8KKyNkZWZpbmUgIEFEQ19TUVIyX1NRMTBfMiAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkgICAgICAgIC8qITwgQml0IDIgKi8KKyNkZWZpbmUgIEFEQ19TUVIyX1NRMTBfMyAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA0MDAwMCkgICAgICAgIC8qITwgQml0IDMgKi8KKyNkZWZpbmUgIEFEQ19TUVIyX1NRMTBfNCAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA4MDAwMCkgICAgICAgIC8qITwgQml0IDQgKi8KKworI2RlZmluZSAgQURDX1NRUjJfU1ExMSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAxRjAwMDAwKSAgICAgICAgLyohPCBTUTExWzQ6MF0gYml0cyAoMTF0aCBjb252ZXJzaW9uIGluIHJlZ3VsYXIgc2VxdWVuY2UpICovCisjZGVmaW5lICBBRENfU1FSMl9TUTExXzAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAxMDAwMDApICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBBRENfU1FSMl9TUTExXzEgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAyMDAwMDApICAgICAgICAvKiE8IEJpdCAxICovCisjZGVmaW5lICBBRENfU1FSMl9TUTExXzIgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApICAgICAgICAvKiE8IEJpdCAyICovCisjZGVmaW5lICBBRENfU1FSMl9TUTExXzMgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA4MDAwMDApICAgICAgICAvKiE8IEJpdCAzICovCisjZGVmaW5lICBBRENfU1FSMl9TUTExXzQgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDEwMDAwMDApICAgICAgICAvKiE8IEJpdCA0ICovCisKKyNkZWZpbmUgIEFEQ19TUVIyX1NRMTIgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgzRTAwMDAwMCkgICAgICAgIC8qITwgU1ExMls0OjBdIGJpdHMgKDEydGggY29udmVyc2lvbiBpbiByZWd1bGFyIHNlcXVlbmNlKSAqLworI2RlZmluZSAgQURDX1NRUjJfU1ExMl8wICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAyMDAwMDAwKSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgQURDX1NRUjJfU1ExMl8xICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA0MDAwMDAwKSAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgQURDX1NRUjJfU1ExMl8yICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA4MDAwMDAwKSAgICAgICAgLyohPCBCaXQgMiAqLworI2RlZmluZSAgQURDX1NRUjJfU1ExMl8zICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDEwMDAwMDAwKSAgICAgICAgLyohPCBCaXQgMyAqLworI2RlZmluZSAgQURDX1NRUjJfU1ExMl80ICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDIwMDAwMDAwKSAgICAgICAgLyohPCBCaXQgNCAqLworCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIEFEQ19TUVIzIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgQURDX1NRUjNfU1ExICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDFGKSAgICAgICAgLyohPCBTUTFbNDowXSBiaXRzICgxc3QgY29udmVyc2lvbiBpbiByZWd1bGFyIHNlcXVlbmNlKSAqLworI2RlZmluZSAgQURDX1NRUjNfU1ExXzAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxKSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgQURDX1NRUjNfU1ExXzEgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAyKSAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgQURDX1NRUjNfU1ExXzIgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgICAgICAgLyohPCBCaXQgMiAqLworI2RlZmluZSAgQURDX1NRUjNfU1ExXzMgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA4KSAgICAgICAgLyohPCBCaXQgMyAqLworI2RlZmluZSAgQURDX1NRUjNfU1ExXzQgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDEwKSAgICAgICAgLyohPCBCaXQgNCAqLworCisjZGVmaW5lICBBRENfU1FSM19TUTIgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAzRTApICAgICAgICAvKiE8IFNRMls0OjBdIGJpdHMgKDJuZCBjb252ZXJzaW9uIGluIHJlZ3VsYXIgc2VxdWVuY2UpICovCisjZGVmaW5lICBBRENfU1FSM19TUTJfMCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMjApICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBBRENfU1FSM19TUTJfMSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwNDApICAgICAgICAvKiE8IEJpdCAxICovCisjZGVmaW5lICBBRENfU1FSM19TUTJfMiAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApICAgICAgICAvKiE8IEJpdCAyICovCisjZGVmaW5lICBBRENfU1FSM19TUTJfMyAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAxMDApICAgICAgICAvKiE8IEJpdCAzICovCisjZGVmaW5lICBBRENfU1FSM19TUTJfNCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAyMDApICAgICAgICAvKiE8IEJpdCA0ICovCisKKyNkZWZpbmUgIEFEQ19TUVIzX1NRMyAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwN0MwMCkgICAgICAgIC8qITwgU1EzWzQ6MF0gYml0cyAoM3JkIGNvbnZlcnNpb24gaW4gcmVndWxhciBzZXF1ZW5jZSkgKi8KKyNkZWZpbmUgIEFEQ19TUVIzX1NRM18wICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDQwMCkgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIEFEQ19TUVIzX1NRM18xICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgICAgICAgIC8qITwgQml0IDEgKi8KKyNkZWZpbmUgIEFEQ19TUVIzX1NRM18yICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMTAwMCkgICAgICAgIC8qITwgQml0IDIgKi8KKyNkZWZpbmUgIEFEQ19TUVIzX1NRM18zICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMjAwMCkgICAgICAgIC8qITwgQml0IDMgKi8KKyNkZWZpbmUgIEFEQ19TUVIzX1NRM180ICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgICAgICAgIC8qITwgQml0IDQgKi8KKworI2RlZmluZSAgQURDX1NRUjNfU1E0ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMEY4MDAwKSAgICAgICAgLyohPCBTUTRbNDowXSBiaXRzICg0dGggY29udmVyc2lvbiBpbiByZWd1bGFyIHNlcXVlbmNlKSAqLworI2RlZmluZSAgQURDX1NRUjNfU1E0XzAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgQURDX1NRUjNfU1E0XzEgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDEwMDAwKSAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgQURDX1NRUjNfU1E0XzIgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDIwMDAwKSAgICAgICAgLyohPCBCaXQgMiAqLworI2RlZmluZSAgQURDX1NRUjNfU1E0XzMgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDQwMDAwKSAgICAgICAgLyohPCBCaXQgMyAqLworI2RlZmluZSAgQURDX1NRUjNfU1E0XzQgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDgwMDAwKSAgICAgICAgLyohPCBCaXQgNCAqLworCisjZGVmaW5lICBBRENfU1FSM19TUTUgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDFGMDAwMDApICAgICAgICAvKiE8IFNRNVs0OjBdIGJpdHMgKDV0aCBjb252ZXJzaW9uIGluIHJlZ3VsYXIgc2VxdWVuY2UpICovCisjZGVmaW5lICBBRENfU1FSM19TUTVfMCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAxMDAwMDApICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBBRENfU1FSM19TUTVfMSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAyMDAwMDApICAgICAgICAvKiE8IEJpdCAxICovCisjZGVmaW5lICBBRENfU1FSM19TUTVfMiAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApICAgICAgICAvKiE8IEJpdCAyICovCisjZGVmaW5lICBBRENfU1FSM19TUTVfMyAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA4MDAwMDApICAgICAgICAvKiE8IEJpdCAzICovCisjZGVmaW5lICBBRENfU1FSM19TUTVfNCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDEwMDAwMDApICAgICAgICAvKiE8IEJpdCA0ICovCisKKyNkZWZpbmUgIEFEQ19TUVIzX1NRNiAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgzRTAwMDAwMCkgICAgICAgIC8qITwgU1E2WzQ6MF0gYml0cyAoNnRoIGNvbnZlcnNpb24gaW4gcmVndWxhciBzZXF1ZW5jZSkgKi8KKyNkZWZpbmUgIEFEQ19TUVIzX1NRNl8wICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMjAwMDAwMCkgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIEFEQ19TUVIzX1NRNl8xICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwNDAwMDAwMCkgICAgICAgIC8qITwgQml0IDEgKi8KKyNkZWZpbmUgIEFEQ19TUVIzX1NRNl8yICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwODAwMDAwMCkgICAgICAgIC8qITwgQml0IDIgKi8KKyNkZWZpbmUgIEFEQ19TUVIzX1NRNl8zICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgxMDAwMDAwMCkgICAgICAgIC8qITwgQml0IDMgKi8KKyNkZWZpbmUgIEFEQ19TUVIzX1NRNl80ICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgyMDAwMDAwMCkgICAgICAgIC8qITwgQml0IDQgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBBRENfSlNRUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIEFEQ19KU1FSX0pTUTEgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAxRikgICAgICAgIC8qITwgSlNRMVs0OjBdIGJpdHMgKDFzdCBjb252ZXJzaW9uIGluIGluamVjdGVkIHNlcXVlbmNlKSAqLyAgCisjZGVmaW5lICBBRENfSlNRUl9KU1ExXzAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDEpICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBBRENfSlNRUl9KU1ExXzEgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IEJpdCAxICovCisjZGVmaW5lICBBRENfSlNRUl9KU1ExXzIgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDQpICAgICAgICAvKiE8IEJpdCAyICovCisjZGVmaW5lICBBRENfSlNRUl9KU1ExXzMgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDgpICAgICAgICAvKiE8IEJpdCAzICovCisjZGVmaW5lICBBRENfSlNRUl9KU1ExXzQgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAgICAgICAvKiE8IEJpdCA0ICovCisKKyNkZWZpbmUgIEFEQ19KU1FSX0pTUTIgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDNFMCkgICAgICAgIC8qITwgSlNRMls0OjBdIGJpdHMgKDJuZCBjb252ZXJzaW9uIGluIGluamVjdGVkIHNlcXVlbmNlKSAqLworI2RlZmluZSAgQURDX0pTUVJfSlNRMl8wICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgQURDX0pTUVJfSlNRMl8xICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDQwKSAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgQURDX0pTUVJfSlNRMl8yICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDgwKSAgICAgICAgLyohPCBCaXQgMiAqLworI2RlZmluZSAgQURDX0pTUVJfSlNRMl8zICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKSAgICAgICAgLyohPCBCaXQgMyAqLworI2RlZmluZSAgQURDX0pTUVJfSlNRMl80ICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMjAwKSAgICAgICAgLyohPCBCaXQgNCAqLworCisjZGVmaW5lICBBRENfSlNRUl9KU1EzICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDdDMDApICAgICAgICAvKiE8IEpTUTNbNDowXSBiaXRzICgzcmQgY29udmVyc2lvbiBpbiBpbmplY3RlZCBzZXF1ZW5jZSkgKi8KKyNkZWZpbmUgIEFEQ19KU1FSX0pTUTNfMCAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDQwMCkgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIEFEQ19KU1FSX0pTUTNfMSAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgICAgICAgIC8qITwgQml0IDEgKi8KKyNkZWZpbmUgIEFEQ19KU1FSX0pTUTNfMiAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMTAwMCkgICAgICAgIC8qITwgQml0IDIgKi8KKyNkZWZpbmUgIEFEQ19KU1FSX0pTUTNfMyAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMjAwMCkgICAgICAgIC8qITwgQml0IDMgKi8KKyNkZWZpbmUgIEFEQ19KU1FSX0pTUTNfNCAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgICAgICAgIC8qITwgQml0IDQgKi8KKworI2RlZmluZSAgQURDX0pTUVJfSlNRNCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMEY4MDAwKSAgICAgICAgLyohPCBKU1E0WzQ6MF0gYml0cyAoNHRoIGNvbnZlcnNpb24gaW4gaW5qZWN0ZWQgc2VxdWVuY2UpICovCisjZGVmaW5lICBBRENfSlNRUl9KU1E0XzAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDgwMDApICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBBRENfSlNRUl9KU1E0XzEgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMTAwMDApICAgICAgICAvKiE8IEJpdCAxICovCisjZGVmaW5lICBBRENfSlNRUl9KU1E0XzIgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMjAwMDApICAgICAgICAvKiE8IEJpdCAyICovCisjZGVmaW5lICBBRENfSlNRUl9KU1E0XzMgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwNDAwMDApICAgICAgICAvKiE8IEJpdCAzICovCisjZGVmaW5lICBBRENfSlNRUl9KU1E0XzQgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAgICAgICAvKiE8IEJpdCA0ICovCisKKyNkZWZpbmUgIEFEQ19KU1FSX0pMICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDMwMDAwMCkgICAgICAgIC8qITwgSkxbMTowXSBiaXRzIChJbmplY3RlZCBTZXF1ZW5jZSBsZW5ndGgpICovCisjZGVmaW5lICBBRENfSlNRUl9KTF8wICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAxMDAwMDApICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBBRENfSlNRUl9KTF8xICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAyMDAwMDApICAgICAgICAvKiE8IEJpdCAxICovCisKKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgQURDX0pEUjEgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBBRENfSkRSMV9KREFUQSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4RkZGRikgICAgICAgICAgICAvKiE8IEluamVjdGVkIGRhdGEgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBBRENfSkRSMiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIEFEQ19KRFIyX0pEQVRBICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHhGRkZGKSAgICAgICAgICAgIC8qITwgSW5qZWN0ZWQgZGF0YSAqLworCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIEFEQ19KRFIzIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgQURDX0pEUjNfSkRBVEEgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweEZGRkYpICAgICAgICAgICAgLyohPCBJbmplY3RlZCBkYXRhICovCisKKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgQURDX0pEUjQgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBBRENfSkRSNF9KREFUQSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4RkZGRikgICAgICAgICAgICAvKiE8IEluamVjdGVkIGRhdGEgKi8KKworLyoqKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgQURDX0RSIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIEFEQ19EUl9EQVRBICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwRkZGRikgICAgICAgIC8qITwgUmVndWxhciBkYXRhICovCisjZGVmaW5lICBBRENfRFJfQURDMkRBVEEgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4RkZGRjAwMDApICAgICAgICAvKiE8IEFEQzIgZGF0YSAqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgIERpZ2l0YWwgdG8gQW5hbG9nIENvbnZlcnRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgREFDX0NSIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIERBQ19DUl9FTjEgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgICAgICAgIC8qITwgREFDIGNoYW5uZWwxIGVuYWJsZSAqLworI2RlZmluZSAgREFDX0NSX0JPRkYxICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAyKSAgICAgICAgLyohPCBEQUMgY2hhbm5lbDEgb3V0cHV0IGJ1ZmZlciBkaXNhYmxlICovCisjZGVmaW5lICBEQUNfQ1JfVEVOMSAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDQpICAgICAgICAvKiE8IERBQyBjaGFubmVsMSBUcmlnZ2VyIGVuYWJsZSAqLworCisjZGVmaW5lICBEQUNfQ1JfVFNFTDEgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMzgpICAgICAgICAvKiE8IFRTRUwxWzI6MF0gKERBQyBjaGFubmVsMSBUcmlnZ2VyIHNlbGVjdGlvbikgKi8KKyNkZWZpbmUgIERBQ19DUl9UU0VMMV8wICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIERBQ19DUl9UU0VMMV8xICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAxMCkgICAgICAgIC8qITwgQml0IDEgKi8KKyNkZWZpbmUgIERBQ19DUl9UU0VMMV8yICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAyMCkgICAgICAgIC8qITwgQml0IDIgKi8KKworI2RlZmluZSAgREFDX0NSX1dBVkUxICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMEMwKSAgICAgICAgLyohPCBXQVZFMVsxOjBdIChEQUMgY2hhbm5lbDEgbm9pc2UvdHJpYW5nbGUgd2F2ZSBnZW5lcmF0aW9uIGVuYWJsZSkgKi8KKyNkZWZpbmUgIERBQ19DUl9XQVZFMV8wICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIERBQ19DUl9XQVZFMV8xICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA4MCkgICAgICAgIC8qITwgQml0IDEgKi8KKworI2RlZmluZSAgREFDX0NSX01BTVAxICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwRjAwKSAgICAgICAgLyohPCBNQU1QMVszOjBdIChEQUMgY2hhbm5lbDEgTWFzay9BbXBsaXR1ZGUgc2VsZWN0b3IpICovCisjZGVmaW5lICBEQUNfQ1JfTUFNUDFfMCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAxMDApICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBEQUNfQ1JfTUFNUDFfMSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAyMDApICAgICAgICAvKiE8IEJpdCAxICovCisjZGVmaW5lICBEQUNfQ1JfTUFNUDFfMiAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApICAgICAgICAvKiE8IEJpdCAyICovCisjZGVmaW5lICBEQUNfQ1JfTUFNUDFfMyAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA4MDApICAgICAgICAvKiE8IEJpdCAzICovCisKKyNkZWZpbmUgIERBQ19DUl9ETUFFTjEgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMTAwMCkgICAgICAgIC8qITwgREFDIGNoYW5uZWwxIERNQSBlbmFibGUgKi8KKyNkZWZpbmUgIERBQ19DUl9FTjIgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAxMDAwMCkgICAgICAgIC8qITwgREFDIGNoYW5uZWwyIGVuYWJsZSAqLworI2RlZmluZSAgREFDX0NSX0JPRkYyICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDIwMDAwKSAgICAgICAgLyohPCBEQUMgY2hhbm5lbDIgb3V0cHV0IGJ1ZmZlciBkaXNhYmxlICovCisjZGVmaW5lICBEQUNfQ1JfVEVOMiAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwNDAwMDApICAgICAgICAvKiE8IERBQyBjaGFubmVsMiBUcmlnZ2VyIGVuYWJsZSAqLworCisjZGVmaW5lICBEQUNfQ1JfVFNFTDIgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAzODAwMDApICAgICAgICAvKiE8IFRTRUwyWzI6MF0gKERBQyBjaGFubmVsMiBUcmlnZ2VyIHNlbGVjdGlvbikgKi8KKyNkZWZpbmUgIERBQ19DUl9UU0VMMl8wICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA4MDAwMCkgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIERBQ19DUl9UU0VMMl8xICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDEwMDAwMCkgICAgICAgIC8qITwgQml0IDEgKi8KKyNkZWZpbmUgIERBQ19DUl9UU0VMMl8yICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDIwMDAwMCkgICAgICAgIC8qITwgQml0IDIgKi8KKworI2RlZmluZSAgREFDX0NSX1dBVkUyICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwQzAwMDAwKSAgICAgICAgLyohPCBXQVZFMlsxOjBdIChEQUMgY2hhbm5lbDIgbm9pc2UvdHJpYW5nbGUgd2F2ZSBnZW5lcmF0aW9uIGVuYWJsZSkgKi8KKyNkZWZpbmUgIERBQ19DUl9XQVZFMl8wICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDQwMDAwMCkgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIERBQ19DUl9XQVZFMl8xICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDgwMDAwMCkgICAgICAgIC8qITwgQml0IDEgKi8KKworI2RlZmluZSAgREFDX0NSX01BTVAyICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDBGMDAwMDAwKSAgICAgICAgLyohPCBNQU1QMlszOjBdIChEQUMgY2hhbm5lbDIgTWFzay9BbXBsaXR1ZGUgc2VsZWN0b3IpICovCisjZGVmaW5lICBEQUNfQ1JfTUFNUDJfMCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDEwMDAwMDApICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBEQUNfQ1JfTUFNUDJfMSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDIwMDAwMDApICAgICAgICAvKiE8IEJpdCAxICovCisjZGVmaW5lICBEQUNfQ1JfTUFNUDJfMiAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDQwMDAwMDApICAgICAgICAvKiE8IEJpdCAyICovCisjZGVmaW5lICBEQUNfQ1JfTUFNUDJfMyAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDgwMDAwMDApICAgICAgICAvKiE8IEJpdCAzICovCisKKyNkZWZpbmUgIERBQ19DUl9ETUFFTjIgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgxMDAwMDAwMCkgICAgICAgIC8qITwgREFDIGNoYW5uZWwyIERNQSBlbmFibGVkICovCisKKy8qKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIERBQ19TV1RSSUdSIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBEQUNfU1dUUklHUl9TV1RSSUcxICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwMSkgICAgICAgICAgICAgICAvKiE8IERBQyBjaGFubmVsMSBzb2Z0d2FyZSB0cmlnZ2VyICovCisjZGVmaW5lICBEQUNfU1dUUklHUl9TV1RSSUcyICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwMikgICAgICAgICAgICAgICAvKiE8IERBQyBjaGFubmVsMiBzb2Z0d2FyZSB0cmlnZ2VyICovCisKKy8qKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIERBQ19ESFIxMlIxIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBEQUNfREhSMTJSMV9EQUNDMURIUiAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MEZGRikgICAgICAgICAgICAvKiE8IERBQyBjaGFubmVsMSAxMi1iaXQgUmlnaHQgYWxpZ25lZCBkYXRhICovCisKKy8qKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIERBQ19ESFIxMkwxIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBEQUNfREhSMTJMMV9EQUNDMURIUiAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4RkZGMCkgICAgICAgICAgICAvKiE8IERBQyBjaGFubmVsMSAxMi1iaXQgTGVmdCBhbGlnbmVkIGRhdGEgKi8KKworLyoqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIERBQ19ESFI4UjEgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIERBQ19ESFI4UjFfREFDQzFESFIgICAgICAgICAgICAgICAgICgodWludDhfdCkweEZGKSAgICAgICAgICAgICAgIC8qITwgREFDIGNoYW5uZWwxIDgtYml0IFJpZ2h0IGFsaWduZWQgZGF0YSAqLworCisvKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBEQUNfREhSMTJSMiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgREFDX0RIUjEyUjJfREFDQzJESFIgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDBGRkYpICAgICAgICAgICAgLyohPCBEQUMgY2hhbm5lbDIgMTItYml0IFJpZ2h0IGFsaWduZWQgZGF0YSAqLworCisvKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBEQUNfREhSMTJMMiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgREFDX0RIUjEyTDJfREFDQzJESFIgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweEZGRjApICAgICAgICAgICAgLyohPCBEQUMgY2hhbm5lbDIgMTItYml0IExlZnQgYWxpZ25lZCBkYXRhICovCisKKy8qKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBEQUNfREhSOFIyIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBEQUNfREhSOFIyX0RBQ0MyREhSICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHhGRikgICAgICAgICAgICAgICAvKiE8IERBQyBjaGFubmVsMiA4LWJpdCBSaWdodCBhbGlnbmVkIGRhdGEgKi8KKworLyoqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgREFDX0RIUjEyUkQgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIERBQ19ESFIxMlJEX0RBQ0MxREhSICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMEZGRikgICAgICAgIC8qITwgREFDIGNoYW5uZWwxIDEyLWJpdCBSaWdodCBhbGlnbmVkIGRhdGEgKi8KKyNkZWZpbmUgIERBQ19ESFIxMlJEX0RBQ0MyREhSICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwRkZGMDAwMCkgICAgICAgIC8qITwgREFDIGNoYW5uZWwyIDEyLWJpdCBSaWdodCBhbGlnbmVkIGRhdGEgKi8KKworLyoqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgREFDX0RIUjEyTEQgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIERBQ19ESFIxMkxEX0RBQ0MxREhSICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwRkZGMCkgICAgICAgIC8qITwgREFDIGNoYW5uZWwxIDEyLWJpdCBMZWZ0IGFsaWduZWQgZGF0YSAqLworI2RlZmluZSAgREFDX0RIUjEyTERfREFDQzJESFIgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGRjAwMDAwKSAgICAgICAgLyohPCBEQUMgY2hhbm5lbDIgMTItYml0IExlZnQgYWxpZ25lZCBkYXRhICovCisKKy8qKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBEQUNfREhSOFJEIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBEQUNfREhSOFJEX0RBQ0MxREhSICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDBGRikgICAgICAgICAgICAvKiE8IERBQyBjaGFubmVsMSA4LWJpdCBSaWdodCBhbGlnbmVkIGRhdGEgKi8KKyNkZWZpbmUgIERBQ19ESFI4UkRfREFDQzJESFIgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHhGRjAwKSAgICAgICAgICAgIC8qITwgREFDIGNoYW5uZWwyIDgtYml0IFJpZ2h0IGFsaWduZWQgZGF0YSAqLworCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIERBQ19ET1IxIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgREFDX0RPUjFfREFDQzFET1IgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDBGRkYpICAgICAgICAgICAgLyohPCBEQUMgY2hhbm5lbDEgZGF0YSBvdXRwdXQgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBEQUNfRE9SMiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIERBQ19ET1IyX0RBQ0MyRE9SICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwRkZGKSAgICAgICAgICAgIC8qITwgREFDIGNoYW5uZWwyIGRhdGEgb3V0cHV0ICovCisKKy8qKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIERBQ19TUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBEQUNfU1JfRE1BVURSMSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAgICAgICAvKiE8IERBQyBjaGFubmVsMSBETUEgdW5kZXJydW4gZmxhZyAqLworI2RlZmluZSAgREFDX1NSX0RNQVVEUjIgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDIwMDAwMDAwKSAgICAgICAgLyohPCBEQUMgY2hhbm5lbDIgRE1BIHVuZGVycnVuIGZsYWcgKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENFQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKioqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBDRUNfQ0ZHUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgQ0VDX0NGR1JfUEUgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAxKSAgICAgLyohPCAgUGVyaXBoZXJhbCBFbmFibGUgKi8KKyNkZWZpbmUgIENFQ19DRkdSX0lFICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMikgICAgIC8qITwgIEludGVycnVwdCBFbmFibGUgKi8KKyNkZWZpbmUgIENFQ19DRkdSX0JURU0gICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwNCkgICAgIC8qITwgIEJpdCBUaW1pbmcgRXJyb3IgTW9kZSAqLworI2RlZmluZSAgQ0VDX0NGR1JfQlBFTSAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA4KSAgICAgLyohPCAgQml0IFBlcmlvZCBFcnJvciBNb2RlICovCisKKy8qKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIENFQ19PQVIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIENFQ19PQVJfT0EgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwRikgICAgIC8qITwgIE9BWzM6MF06IE93biBBZGRyZXNzICovCisjZGVmaW5lICBDRUNfT0FSX09BXzAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDEpICAgICAvKiE8ICBCaXQgMCAqLworI2RlZmluZSAgQ0VDX09BUl9PQV8xICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAyKSAgICAgLyohPCAgQml0IDEgKi8KKyNkZWZpbmUgIENFQ19PQVJfT0FfMiAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwNCkgICAgIC8qITwgIEJpdCAyICovCisjZGVmaW5lICBDRUNfT0FSX09BXzMgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDgpICAgICAvKiE8ICBCaXQgMyAqLworCisvKioqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBDRUNfUFJFUyByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgQ0VDX1BSRVNfUFJFUyAgICAgICAgICAgICgodWludDE2X3QpMHgzRkZGKSAgIC8qITwgIFByZXNjYWxlciBDb3VudGVyIFZhbHVlICovCisKKy8qKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIENFQ19FU1IgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIENFQ19FU1JfQlRFICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMSkgICAgIC8qITwgIEJpdCBUaW1pbmcgRXJyb3IgKi8KKyNkZWZpbmUgIENFQ19FU1JfQlBFICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMikgICAgIC8qITwgIEJpdCBQZXJpb2QgRXJyb3IgKi8KKyNkZWZpbmUgIENFQ19FU1JfUkJURkUgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwNCkgICAgIC8qITwgIFJ4IEJsb2NrIFRyYW5zZmVyIEZpbmlzaGVkIEVycm9yICovCisjZGVmaW5lICBDRUNfRVNSX1NCRSAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDgpICAgICAvKiE8ICBTdGFydCBCaXQgRXJyb3IgKi8KKyNkZWZpbmUgIENFQ19FU1JfQUNLRSAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAxMCkgICAgIC8qITwgIEJsb2NrIEFja25vd2xlZGdlIEVycm9yICovCisjZGVmaW5lICBDRUNfRVNSX0xJTkUgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMjApICAgICAvKiE8ICBMaW5lIEVycm9yICovCisjZGVmaW5lICBDRUNfRVNSX1RCVEZFICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwNDApICAgICAvKiE8ICBUeCBCbG9jayBUcmFuc2ZlciBGaW5pc2hlZCBFcnJvciAqLworCisvKioqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBDRUNfQ1NSIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBDRUNfQ1NSX1RTT00gICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDEpICAgICAvKiE8ICBUeCBTdGFydCBPZiBNZXNzYWdlICovCisjZGVmaW5lICBDRUNfQ1NSX1RFT00gICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDIpICAgICAvKiE8ICBUeCBFbmQgT2YgTWVzc2FnZSAqLworI2RlZmluZSAgQ0VDX0NTUl9URVJSICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA0KSAgICAgLyohPCAgVHggRXJyb3IgKi8KKyNkZWZpbmUgIENFQ19DU1JfVEJUUkYgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwOCkgICAgIC8qITwgIFR4IEJ5dGUgVHJhbnNmZXIgUmVxdWVzdCBvciBCbG9jayBUcmFuc2ZlciBGaW5pc2hlZCAqLworI2RlZmluZSAgQ0VDX0NTUl9SU09NICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDEwKSAgICAgLyohPCAgUnggU3RhcnQgT2YgTWVzc2FnZSAqLworI2RlZmluZSAgQ0VDX0NTUl9SRU9NICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDIwKSAgICAgLyohPCAgUnggRW5kIE9mIE1lc3NhZ2UgKi8KKyNkZWZpbmUgIENFQ19DU1JfUkVSUiAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA0MCkgICAgIC8qITwgIFJ4IEVycm9yICovCisjZGVmaW5lICBDRUNfQ1NSX1JCVEYgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwODApICAgICAvKiE8ICBSeCBCbG9jayBUcmFuc2ZlciBGaW5pc2hlZCAqLworCisvKioqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBDRUNfVFhEIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBDRUNfVFhEX1RYRCAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwRkYpICAgICAvKiE8ICBUeCBEYXRhIHJlZ2lzdGVyICovCisKKy8qKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIENFQ19SWEQgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIENFQ19SWERfUlhEICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDBGRikgICAgIC8qITwgIFJ4IERhdGEgcmVnaXN0ZXIgKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgVElNX0NSMSByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBUSU1fQ1IxX0NFTiAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMSkgICAgICAgICAgICAvKiE8IENvdW50ZXIgZW5hYmxlICovCisjZGVmaW5lICBUSU1fQ1IxX1VESVMgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMikgICAgICAgICAgICAvKiE8IFVwZGF0ZSBkaXNhYmxlICovCisjZGVmaW5lICBUSU1fQ1IxX1VSUyAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwNCkgICAgICAgICAgICAvKiE8IFVwZGF0ZSByZXF1ZXN0IHNvdXJjZSAqLworI2RlZmluZSAgVElNX0NSMV9PUE0gICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDgpICAgICAgICAgICAgLyohPCBPbmUgcHVsc2UgbW9kZSAqLworI2RlZmluZSAgVElNX0NSMV9ESVIgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMTApICAgICAgICAgICAgLyohPCBEaXJlY3Rpb24gKi8KKworI2RlZmluZSAgVElNX0NSMV9DTVMgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwNjApICAgICAgICAgICAgLyohPCBDTVNbMTowXSBiaXRzIChDZW50ZXItYWxpZ25lZCBtb2RlIHNlbGVjdGlvbikgKi8KKyNkZWZpbmUgIFRJTV9DUjFfQ01TXzAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDIwKSAgICAgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIFRJTV9DUjFfQ01TXzEgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDQwKSAgICAgICAgICAgIC8qITwgQml0IDEgKi8KKworI2RlZmluZSAgVElNX0NSMV9BUlBFICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwODApICAgICAgICAgICAgLyohPCBBdXRvLXJlbG9hZCBwcmVsb2FkIGVuYWJsZSAqLworCisjZGVmaW5lICBUSU1fQ1IxX0NLRCAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDMwMCkgICAgICAgICAgICAvKiE8IENLRFsxOjBdIGJpdHMgKGNsb2NrIGRpdmlzaW9uKSAqLworI2RlZmluZSAgVElNX0NSMV9DS0RfMCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAxMDApICAgICAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgVElNX0NSMV9DS0RfMSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAyMDApICAgICAgICAgICAgLyohPCBCaXQgMSAqLworCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFRJTV9DUjIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgVElNX0NSMl9DQ1BDICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDEpICAgICAgICAgICAgLyohPCBDYXB0dXJlL0NvbXBhcmUgUHJlbG9hZGVkIENvbnRyb2wgKi8KKyNkZWZpbmUgIFRJTV9DUjJfQ0NVUyAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA0KSAgICAgICAgICAgIC8qITwgQ2FwdHVyZS9Db21wYXJlIENvbnRyb2wgVXBkYXRlIFNlbGVjdGlvbiAqLworI2RlZmluZSAgVElNX0NSMl9DQ0RTICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDgpICAgICAgICAgICAgLyohPCBDYXB0dXJlL0NvbXBhcmUgRE1BIFNlbGVjdGlvbiAqLworCisjZGVmaW5lICBUSU1fQ1IyX01NUyAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA3MCkgICAgICAgICAgICAvKiE8IE1NU1syOjBdIGJpdHMgKE1hc3RlciBNb2RlIFNlbGVjdGlvbikgKi8KKyNkZWZpbmUgIFRJTV9DUjJfTU1TXzAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDEwKSAgICAgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIFRJTV9DUjJfTU1TXzEgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDIwKSAgICAgICAgICAgIC8qITwgQml0IDEgKi8KKyNkZWZpbmUgIFRJTV9DUjJfTU1TXzIgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDQwKSAgICAgICAgICAgIC8qITwgQml0IDIgKi8KKworI2RlZmluZSAgVElNX0NSMl9USTFTICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwODApICAgICAgICAgICAgLyohPCBUSTEgU2VsZWN0aW9uICovCisjZGVmaW5lICBUSU1fQ1IyX09JUzEgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDEwMCkgICAgICAgICAgICAvKiE8IE91dHB1dCBJZGxlIHN0YXRlIDEgKE9DMSBvdXRwdXQpICovCisjZGVmaW5lICBUSU1fQ1IyX09JUzFOICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDIwMCkgICAgICAgICAgICAvKiE8IE91dHB1dCBJZGxlIHN0YXRlIDEgKE9DMU4gb3V0cHV0KSAqLworI2RlZmluZSAgVElNX0NSMl9PSVMyICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDA0MDApICAgICAgICAgICAgLyohPCBPdXRwdXQgSWRsZSBzdGF0ZSAyIChPQzIgb3V0cHV0KSAqLworI2RlZmluZSAgVElNX0NSMl9PSVMyTiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDA4MDApICAgICAgICAgICAgLyohPCBPdXRwdXQgSWRsZSBzdGF0ZSAyIChPQzJOIG91dHB1dCkgKi8KKyNkZWZpbmUgIFRJTV9DUjJfT0lTMyAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgxMDAwKSAgICAgICAgICAgIC8qITwgT3V0cHV0IElkbGUgc3RhdGUgMyAoT0MzIG91dHB1dCkgKi8KKyNkZWZpbmUgIFRJTV9DUjJfT0lTM04gICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgyMDAwKSAgICAgICAgICAgIC8qITwgT3V0cHV0IElkbGUgc3RhdGUgMyAoT0MzTiBvdXRwdXQpICovCisjZGVmaW5lICBUSU1fQ1IyX09JUzQgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4NDAwMCkgICAgICAgICAgICAvKiE8IE91dHB1dCBJZGxlIHN0YXRlIDQgKE9DNCBvdXRwdXQpICovCisKKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgVElNX1NNQ1IgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBUSU1fU01DUl9TTVMgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwNykgICAgICAgICAgICAvKiE8IFNNU1syOjBdIGJpdHMgKFNsYXZlIG1vZGUgc2VsZWN0aW9uKSAqLworI2RlZmluZSAgVElNX1NNQ1JfU01TXzAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDEpICAgICAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgVElNX1NNQ1JfU01TXzEgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDIpICAgICAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgVElNX1NNQ1JfU01TXzIgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDQpICAgICAgICAgICAgLyohPCBCaXQgMiAqLworCisjZGVmaW5lICBUSU1fU01DUl9UUyAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA3MCkgICAgICAgICAgICAvKiE8IFRTWzI6MF0gYml0cyAoVHJpZ2dlciBzZWxlY3Rpb24pICovCisjZGVmaW5lICBUSU1fU01DUl9UU18wICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAxMCkgICAgICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBUSU1fU01DUl9UU18xICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAyMCkgICAgICAgICAgICAvKiE8IEJpdCAxICovCisjZGVmaW5lICBUSU1fU01DUl9UU18yICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA0MCkgICAgICAgICAgICAvKiE8IEJpdCAyICovCisKKyNkZWZpbmUgIFRJTV9TTUNSX01TTSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDgwKSAgICAgICAgICAgIC8qITwgTWFzdGVyL3NsYXZlIG1vZGUgKi8KKworI2RlZmluZSAgVElNX1NNQ1JfRVRGICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDBGMDApICAgICAgICAgICAgLyohPCBFVEZbMzowXSBiaXRzIChFeHRlcm5hbCB0cmlnZ2VyIGZpbHRlcikgKi8KKyNkZWZpbmUgIFRJTV9TTUNSX0VURl8wICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMTAwKSAgICAgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIFRJTV9TTUNSX0VURl8xICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMjAwKSAgICAgICAgICAgIC8qITwgQml0IDEgKi8KKyNkZWZpbmUgIFRJTV9TTUNSX0VURl8yICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwNDAwKSAgICAgICAgICAgIC8qITwgQml0IDIgKi8KKyNkZWZpbmUgIFRJTV9TTUNSX0VURl8zICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwODAwKSAgICAgICAgICAgIC8qITwgQml0IDMgKi8KKworI2RlZmluZSAgVElNX1NNQ1JfRVRQUyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDMwMDApICAgICAgICAgICAgLyohPCBFVFBTWzE6MF0gYml0cyAoRXh0ZXJuYWwgdHJpZ2dlciBwcmVzY2FsZXIpICovCisjZGVmaW5lICBUSU1fU01DUl9FVFBTXzAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MTAwMCkgICAgICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBUSU1fU01DUl9FVFBTXzEgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MjAwMCkgICAgICAgICAgICAvKiE8IEJpdCAxICovCisKKyNkZWZpbmUgIFRJTV9TTUNSX0VDRSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHg0MDAwKSAgICAgICAgICAgIC8qITwgRXh0ZXJuYWwgY2xvY2sgZW5hYmxlICovCisjZGVmaW5lICBUSU1fU01DUl9FVFAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4ODAwMCkgICAgICAgICAgICAvKiE8IEV4dGVybmFsIHRyaWdnZXIgcG9sYXJpdHkgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBUSU1fRElFUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIFRJTV9ESUVSX1VJRSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAxKSAgICAgICAgICAgIC8qITwgVXBkYXRlIGludGVycnVwdCBlbmFibGUgKi8KKyNkZWZpbmUgIFRJTV9ESUVSX0NDMUlFICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAyKSAgICAgICAgICAgIC8qITwgQ2FwdHVyZS9Db21wYXJlIDEgaW50ZXJydXB0IGVuYWJsZSAqLworI2RlZmluZSAgVElNX0RJRVJfQ0MySUUgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDQpICAgICAgICAgICAgLyohPCBDYXB0dXJlL0NvbXBhcmUgMiBpbnRlcnJ1cHQgZW5hYmxlICovCisjZGVmaW5lICBUSU1fRElFUl9DQzNJRSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwOCkgICAgICAgICAgICAvKiE8IENhcHR1cmUvQ29tcGFyZSAzIGludGVycnVwdCBlbmFibGUgKi8KKyNkZWZpbmUgIFRJTV9ESUVSX0NDNElFICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDEwKSAgICAgICAgICAgIC8qITwgQ2FwdHVyZS9Db21wYXJlIDQgaW50ZXJydXB0IGVuYWJsZSAqLworI2RlZmluZSAgVElNX0RJRVJfQ09NSUUgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMjApICAgICAgICAgICAgLyohPCBDT00gaW50ZXJydXB0IGVuYWJsZSAqLworI2RlZmluZSAgVElNX0RJRVJfVElFICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwNDApICAgICAgICAgICAgLyohPCBUcmlnZ2VyIGludGVycnVwdCBlbmFibGUgKi8KKyNkZWZpbmUgIFRJTV9ESUVSX0JJRSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDgwKSAgICAgICAgICAgIC8qITwgQnJlYWsgaW50ZXJydXB0IGVuYWJsZSAqLworI2RlZmluZSAgVElNX0RJRVJfVURFICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAxMDApICAgICAgICAgICAgLyohPCBVcGRhdGUgRE1BIHJlcXVlc3QgZW5hYmxlICovCisjZGVmaW5lICBUSU1fRElFUl9DQzFERSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDIwMCkgICAgICAgICAgICAvKiE8IENhcHR1cmUvQ29tcGFyZSAxIERNQSByZXF1ZXN0IGVuYWJsZSAqLworI2RlZmluZSAgVElNX0RJRVJfQ0MyREUgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDA0MDApICAgICAgICAgICAgLyohPCBDYXB0dXJlL0NvbXBhcmUgMiBETUEgcmVxdWVzdCBlbmFibGUgKi8KKyNkZWZpbmUgIFRJTV9ESUVSX0NDM0RFICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwODAwKSAgICAgICAgICAgIC8qITwgQ2FwdHVyZS9Db21wYXJlIDMgRE1BIHJlcXVlc3QgZW5hYmxlICovCisjZGVmaW5lICBUSU1fRElFUl9DQzRERSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MTAwMCkgICAgICAgICAgICAvKiE8IENhcHR1cmUvQ29tcGFyZSA0IERNQSByZXF1ZXN0IGVuYWJsZSAqLworI2RlZmluZSAgVElNX0RJRVJfQ09NREUgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDIwMDApICAgICAgICAgICAgLyohPCBDT00gRE1BIHJlcXVlc3QgZW5hYmxlICovCisjZGVmaW5lICBUSU1fRElFUl9UREUgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4NDAwMCkgICAgICAgICAgICAvKiE8IFRyaWdnZXIgRE1BIHJlcXVlc3QgZW5hYmxlICovCisKKy8qKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFRJTV9TUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBUSU1fU1JfVUlGICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMSkgICAgICAgICAgICAvKiE8IFVwZGF0ZSBpbnRlcnJ1cHQgRmxhZyAqLworI2RlZmluZSAgVElNX1NSX0NDMUlGICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDIpICAgICAgICAgICAgLyohPCBDYXB0dXJlL0NvbXBhcmUgMSBpbnRlcnJ1cHQgRmxhZyAqLworI2RlZmluZSAgVElNX1NSX0NDMklGICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDQpICAgICAgICAgICAgLyohPCBDYXB0dXJlL0NvbXBhcmUgMiBpbnRlcnJ1cHQgRmxhZyAqLworI2RlZmluZSAgVElNX1NSX0NDM0lGICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDgpICAgICAgICAgICAgLyohPCBDYXB0dXJlL0NvbXBhcmUgMyBpbnRlcnJ1cHQgRmxhZyAqLworI2RlZmluZSAgVElNX1NSX0NDNElGICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMTApICAgICAgICAgICAgLyohPCBDYXB0dXJlL0NvbXBhcmUgNCBpbnRlcnJ1cHQgRmxhZyAqLworI2RlZmluZSAgVElNX1NSX0NPTUlGICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMjApICAgICAgICAgICAgLyohPCBDT00gaW50ZXJydXB0IEZsYWcgKi8KKyNkZWZpbmUgIFRJTV9TUl9USUYgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDQwKSAgICAgICAgICAgIC8qITwgVHJpZ2dlciBpbnRlcnJ1cHQgRmxhZyAqLworI2RlZmluZSAgVElNX1NSX0JJRiAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwODApICAgICAgICAgICAgLyohPCBCcmVhayBpbnRlcnJ1cHQgRmxhZyAqLworI2RlZmluZSAgVElNX1NSX0NDMU9GICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAyMDApICAgICAgICAgICAgLyohPCBDYXB0dXJlL0NvbXBhcmUgMSBPdmVyY2FwdHVyZSBGbGFnICovCisjZGVmaW5lICBUSU1fU1JfQ0MyT0YgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDQwMCkgICAgICAgICAgICAvKiE8IENhcHR1cmUvQ29tcGFyZSAyIE92ZXJjYXB0dXJlIEZsYWcgKi8KKyNkZWZpbmUgIFRJTV9TUl9DQzNPRiAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwODAwKSAgICAgICAgICAgIC8qITwgQ2FwdHVyZS9Db21wYXJlIDMgT3ZlcmNhcHR1cmUgRmxhZyAqLworI2RlZmluZSAgVElNX1NSX0NDNE9GICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDEwMDApICAgICAgICAgICAgLyohPCBDYXB0dXJlL0NvbXBhcmUgNCBPdmVyY2FwdHVyZSBGbGFnICovCisKKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgVElNX0VHUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBUSU1fRUdSX1VHICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwMSkgICAgICAgICAgICAgICAvKiE8IFVwZGF0ZSBHZW5lcmF0aW9uICovCisjZGVmaW5lICBUSU1fRUdSX0NDMUcgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwMikgICAgICAgICAgICAgICAvKiE8IENhcHR1cmUvQ29tcGFyZSAxIEdlbmVyYXRpb24gKi8KKyNkZWZpbmUgIFRJTV9FR1JfQ0MyRyAgICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDA0KSAgICAgICAgICAgICAgIC8qITwgQ2FwdHVyZS9Db21wYXJlIDIgR2VuZXJhdGlvbiAqLworI2RlZmluZSAgVElNX0VHUl9DQzNHICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MDgpICAgICAgICAgICAgICAgLyohPCBDYXB0dXJlL0NvbXBhcmUgMyBHZW5lcmF0aW9uICovCisjZGVmaW5lICBUSU1fRUdSX0NDNEcgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgxMCkgICAgICAgICAgICAgICAvKiE8IENhcHR1cmUvQ29tcGFyZSA0IEdlbmVyYXRpb24gKi8KKyNkZWZpbmUgIFRJTV9FR1JfQ09NRyAgICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDIwKSAgICAgICAgICAgICAgIC8qITwgQ2FwdHVyZS9Db21wYXJlIENvbnRyb2wgVXBkYXRlIEdlbmVyYXRpb24gKi8KKyNkZWZpbmUgIFRJTV9FR1JfVEcgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDQwKSAgICAgICAgICAgICAgIC8qITwgVHJpZ2dlciBHZW5lcmF0aW9uICovCisjZGVmaW5lICBUSU1fRUdSX0JHICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHg4MCkgICAgICAgICAgICAgICAvKiE8IEJyZWFrIEdlbmVyYXRpb24gKi8KKworLyoqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFRJTV9DQ01SMSByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIFRJTV9DQ01SMV9DQzFTICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAzKSAgICAgICAgICAgIC8qITwgQ0MxU1sxOjBdIGJpdHMgKENhcHR1cmUvQ29tcGFyZSAxIFNlbGVjdGlvbikgKi8KKyNkZWZpbmUgIFRJTV9DQ01SMV9DQzFTXzAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAxKSAgICAgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIFRJTV9DQ01SMV9DQzFTXzEgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAyKSAgICAgICAgICAgIC8qITwgQml0IDEgKi8KKworI2RlZmluZSAgVElNX0NDTVIxX09DMUZFICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDQpICAgICAgICAgICAgLyohPCBPdXRwdXQgQ29tcGFyZSAxIEZhc3QgZW5hYmxlICovCisjZGVmaW5lICBUSU1fQ0NNUjFfT0MxUEUgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwOCkgICAgICAgICAgICAvKiE8IE91dHB1dCBDb21wYXJlIDEgUHJlbG9hZCBlbmFibGUgKi8KKworI2RlZmluZSAgVElNX0NDTVIxX09DMU0gICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwNzApICAgICAgICAgICAgLyohPCBPQzFNWzI6MF0gYml0cyAoT3V0cHV0IENvbXBhcmUgMSBNb2RlKSAqLworI2RlZmluZSAgVElNX0NDTVIxX09DMU1fMCAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMTApICAgICAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgVElNX0NDTVIxX09DMU1fMSAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMjApICAgICAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgVElNX0NDTVIxX09DMU1fMiAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwNDApICAgICAgICAgICAgLyohPCBCaXQgMiAqLworCisjZGVmaW5lICBUSU1fQ0NNUjFfT0MxQ0UgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA4MCkgICAgICAgICAgICAvKiE8IE91dHB1dCBDb21wYXJlIDFDbGVhciBFbmFibGUgKi8KKworI2RlZmluZSAgVElNX0NDTVIxX0NDMlMgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAzMDApICAgICAgICAgICAgLyohPCBDQzJTWzE6MF0gYml0cyAoQ2FwdHVyZS9Db21wYXJlIDIgU2VsZWN0aW9uKSAqLworI2RlZmluZSAgVElNX0NDTVIxX0NDMlNfMCAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAxMDApICAgICAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgVElNX0NDTVIxX0NDMlNfMSAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAyMDApICAgICAgICAgICAgLyohPCBCaXQgMSAqLworCisjZGVmaW5lICBUSU1fQ0NNUjFfT0MyRkUgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDQwMCkgICAgICAgICAgICAvKiE8IE91dHB1dCBDb21wYXJlIDIgRmFzdCBlbmFibGUgKi8KKyNkZWZpbmUgIFRJTV9DQ01SMV9PQzJQRSAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwODAwKSAgICAgICAgICAgIC8qITwgT3V0cHV0IENvbXBhcmUgMiBQcmVsb2FkIGVuYWJsZSAqLworCisjZGVmaW5lICBUSU1fQ0NNUjFfT0MyTSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4NzAwMCkgICAgICAgICAgICAvKiE8IE9DMk1bMjowXSBiaXRzIChPdXRwdXQgQ29tcGFyZSAyIE1vZGUpICovCisjZGVmaW5lICBUSU1fQ0NNUjFfT0MyTV8wICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MTAwMCkgICAgICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBUSU1fQ0NNUjFfT0MyTV8xICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MjAwMCkgICAgICAgICAgICAvKiE8IEJpdCAxICovCisjZGVmaW5lICBUSU1fQ0NNUjFfT0MyTV8yICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4NDAwMCkgICAgICAgICAgICAvKiE8IEJpdCAyICovCisKKyNkZWZpbmUgIFRJTV9DQ01SMV9PQzJDRSAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHg4MDAwKSAgICAgICAgICAgIC8qITwgT3V0cHV0IENvbXBhcmUgMiBDbGVhciBFbmFibGUgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworI2RlZmluZSAgVElNX0NDTVIxX0lDMVBTQyAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMEMpICAgICAgICAgICAgLyohPCBJQzFQU0NbMTowXSBiaXRzIChJbnB1dCBDYXB0dXJlIDEgUHJlc2NhbGVyKSAqLworI2RlZmluZSAgVElNX0NDTVIxX0lDMVBTQ18wICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDQpICAgICAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgVElNX0NDTVIxX0lDMVBTQ18xICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDgpICAgICAgICAgICAgLyohPCBCaXQgMSAqLworCisjZGVmaW5lICBUSU1fQ0NNUjFfSUMxRiAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDBGMCkgICAgICAgICAgICAvKiE8IElDMUZbMzowXSBiaXRzIChJbnB1dCBDYXB0dXJlIDEgRmlsdGVyKSAqLworI2RlZmluZSAgVElNX0NDTVIxX0lDMUZfMCAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMTApICAgICAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgVElNX0NDTVIxX0lDMUZfMSAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMjApICAgICAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgVElNX0NDTVIxX0lDMUZfMiAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwNDApICAgICAgICAgICAgLyohPCBCaXQgMiAqLworI2RlZmluZSAgVElNX0NDTVIxX0lDMUZfMyAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwODApICAgICAgICAgICAgLyohPCBCaXQgMyAqLworCisjZGVmaW5lICBUSU1fQ0NNUjFfSUMyUFNDICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MEMwMCkgICAgICAgICAgICAvKiE8IElDMlBTQ1sxOjBdIGJpdHMgKElucHV0IENhcHR1cmUgMiBQcmVzY2FsZXIpICovCisjZGVmaW5lICBUSU1fQ0NNUjFfSUMyUFNDXzAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDQwMCkgICAgICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBUSU1fQ0NNUjFfSUMyUFNDXzEgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDgwMCkgICAgICAgICAgICAvKiE8IEJpdCAxICovCisKKyNkZWZpbmUgIFRJTV9DQ01SMV9JQzJGICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHhGMDAwKSAgICAgICAgICAgIC8qITwgSUMyRlszOjBdIGJpdHMgKElucHV0IENhcHR1cmUgMiBGaWx0ZXIpICovCisjZGVmaW5lICBUSU1fQ0NNUjFfSUMyRl8wICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MTAwMCkgICAgICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBUSU1fQ0NNUjFfSUMyRl8xICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MjAwMCkgICAgICAgICAgICAvKiE8IEJpdCAxICovCisjZGVmaW5lICBUSU1fQ0NNUjFfSUMyRl8yICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4NDAwMCkgICAgICAgICAgICAvKiE8IEJpdCAyICovCisjZGVmaW5lICBUSU1fQ0NNUjFfSUMyRl8zICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4ODAwMCkgICAgICAgICAgICAvKiE8IEJpdCAzICovCisKKy8qKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBUSU1fQ0NNUjIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBUSU1fQ0NNUjJfQ0MzUyAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMykgICAgICAgICAgICAvKiE8IENDM1NbMTowXSBiaXRzIChDYXB0dXJlL0NvbXBhcmUgMyBTZWxlY3Rpb24pICovCisjZGVmaW5lICBUSU1fQ0NNUjJfQ0MzU18wICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMSkgICAgICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBUSU1fQ0NNUjJfQ0MzU18xICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMikgICAgICAgICAgICAvKiE8IEJpdCAxICovCisKKyNkZWZpbmUgIFRJTV9DQ01SMl9PQzNGRSAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA0KSAgICAgICAgICAgIC8qITwgT3V0cHV0IENvbXBhcmUgMyBGYXN0IGVuYWJsZSAqLworI2RlZmluZSAgVElNX0NDTVIyX09DM1BFICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDgpICAgICAgICAgICAgLyohPCBPdXRwdXQgQ29tcGFyZSAzIFByZWxvYWQgZW5hYmxlICovCisKKyNkZWZpbmUgIFRJTV9DQ01SMl9PQzNNICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDcwKSAgICAgICAgICAgIC8qITwgT0MzTVsyOjBdIGJpdHMgKE91dHB1dCBDb21wYXJlIDMgTW9kZSkgKi8KKyNkZWZpbmUgIFRJTV9DQ01SMl9PQzNNXzAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDEwKSAgICAgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIFRJTV9DQ01SMl9PQzNNXzEgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDIwKSAgICAgICAgICAgIC8qITwgQml0IDEgKi8KKyNkZWZpbmUgIFRJTV9DQ01SMl9PQzNNXzIgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDQwKSAgICAgICAgICAgIC8qITwgQml0IDIgKi8KKworI2RlZmluZSAgVElNX0NDTVIyX09DM0NFICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwODApICAgICAgICAgICAgLyohPCBPdXRwdXQgQ29tcGFyZSAzIENsZWFyIEVuYWJsZSAqLworCisjZGVmaW5lICBUSU1fQ0NNUjJfQ0M0UyAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDMwMCkgICAgICAgICAgICAvKiE8IENDNFNbMTowXSBiaXRzIChDYXB0dXJlL0NvbXBhcmUgNCBTZWxlY3Rpb24pICovCisjZGVmaW5lICBUSU1fQ0NNUjJfQ0M0U18wICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDEwMCkgICAgICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBUSU1fQ0NNUjJfQ0M0U18xICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDIwMCkgICAgICAgICAgICAvKiE8IEJpdCAxICovCisKKyNkZWZpbmUgIFRJTV9DQ01SMl9PQzRGRSAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwNDAwKSAgICAgICAgICAgIC8qITwgT3V0cHV0IENvbXBhcmUgNCBGYXN0IGVuYWJsZSAqLworI2RlZmluZSAgVElNX0NDTVIyX09DNFBFICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDA4MDApICAgICAgICAgICAgLyohPCBPdXRwdXQgQ29tcGFyZSA0IFByZWxvYWQgZW5hYmxlICovCisKKyNkZWZpbmUgIFRJTV9DQ01SMl9PQzRNICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHg3MDAwKSAgICAgICAgICAgIC8qITwgT0M0TVsyOjBdIGJpdHMgKE91dHB1dCBDb21wYXJlIDQgTW9kZSkgKi8KKyNkZWZpbmUgIFRJTV9DQ01SMl9PQzRNXzAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgxMDAwKSAgICAgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIFRJTV9DQ01SMl9PQzRNXzEgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgyMDAwKSAgICAgICAgICAgIC8qITwgQml0IDEgKi8KKyNkZWZpbmUgIFRJTV9DQ01SMl9PQzRNXzIgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHg0MDAwKSAgICAgICAgICAgIC8qITwgQml0IDIgKi8KKworI2RlZmluZSAgVElNX0NDTVIyX09DNENFICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDgwMDApICAgICAgICAgICAgLyohPCBPdXRwdXQgQ29tcGFyZSA0IENsZWFyIEVuYWJsZSAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCisjZGVmaW5lICBUSU1fQ0NNUjJfSUMzUFNDICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwQykgICAgICAgICAgICAvKiE8IElDM1BTQ1sxOjBdIGJpdHMgKElucHV0IENhcHR1cmUgMyBQcmVzY2FsZXIpICovCisjZGVmaW5lICBUSU1fQ0NNUjJfSUMzUFNDXzAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwNCkgICAgICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBUSU1fQ0NNUjJfSUMzUFNDXzEgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwOCkgICAgICAgICAgICAvKiE8IEJpdCAxICovCisKKyNkZWZpbmUgIFRJTV9DQ01SMl9JQzNGICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMEYwKSAgICAgICAgICAgIC8qITwgSUMzRlszOjBdIGJpdHMgKElucHV0IENhcHR1cmUgMyBGaWx0ZXIpICovCisjZGVmaW5lICBUSU1fQ0NNUjJfSUMzRl8wICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAxMCkgICAgICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBUSU1fQ0NNUjJfSUMzRl8xICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAyMCkgICAgICAgICAgICAvKiE8IEJpdCAxICovCisjZGVmaW5lICBUSU1fQ0NNUjJfSUMzRl8yICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA0MCkgICAgICAgICAgICAvKiE8IEJpdCAyICovCisjZGVmaW5lICBUSU1fQ0NNUjJfSUMzRl8zICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA4MCkgICAgICAgICAgICAvKiE8IEJpdCAzICovCisKKyNkZWZpbmUgIFRJTV9DQ01SMl9JQzRQU0MgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwQzAwKSAgICAgICAgICAgIC8qITwgSUM0UFNDWzE6MF0gYml0cyAoSW5wdXQgQ2FwdHVyZSA0IFByZXNjYWxlcikgKi8KKyNkZWZpbmUgIFRJTV9DQ01SMl9JQzRQU0NfMCAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwNDAwKSAgICAgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIFRJTV9DQ01SMl9JQzRQU0NfMSAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwODAwKSAgICAgICAgICAgIC8qITwgQml0IDEgKi8KKworI2RlZmluZSAgVElNX0NDTVIyX0lDNEYgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweEYwMDApICAgICAgICAgICAgLyohPCBJQzRGWzM6MF0gYml0cyAoSW5wdXQgQ2FwdHVyZSA0IEZpbHRlcikgKi8KKyNkZWZpbmUgIFRJTV9DQ01SMl9JQzRGXzAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgxMDAwKSAgICAgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIFRJTV9DQ01SMl9JQzRGXzEgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgyMDAwKSAgICAgICAgICAgIC8qITwgQml0IDEgKi8KKyNkZWZpbmUgIFRJTV9DQ01SMl9JQzRGXzIgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHg0MDAwKSAgICAgICAgICAgIC8qITwgQml0IDIgKi8KKyNkZWZpbmUgIFRJTV9DQ01SMl9JQzRGXzMgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHg4MDAwKSAgICAgICAgICAgIC8qITwgQml0IDMgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBUSU1fQ0NFUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIFRJTV9DQ0VSX0NDMUUgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAxKSAgICAgICAgICAgIC8qITwgQ2FwdHVyZS9Db21wYXJlIDEgb3V0cHV0IGVuYWJsZSAqLworI2RlZmluZSAgVElNX0NDRVJfQ0MxUCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDIpICAgICAgICAgICAgLyohPCBDYXB0dXJlL0NvbXBhcmUgMSBvdXRwdXQgUG9sYXJpdHkgKi8KKyNkZWZpbmUgIFRJTV9DQ0VSX0NDMU5FICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA0KSAgICAgICAgICAgIC8qITwgQ2FwdHVyZS9Db21wYXJlIDEgQ29tcGxlbWVudGFyeSBvdXRwdXQgZW5hYmxlICovCisjZGVmaW5lICBUSU1fQ0NFUl9DQzFOUCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwOCkgICAgICAgICAgICAvKiE8IENhcHR1cmUvQ29tcGFyZSAxIENvbXBsZW1lbnRhcnkgb3V0cHV0IFBvbGFyaXR5ICovCisjZGVmaW5lICBUSU1fQ0NFUl9DQzJFICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAxMCkgICAgICAgICAgICAvKiE8IENhcHR1cmUvQ29tcGFyZSAyIG91dHB1dCBlbmFibGUgKi8KKyNkZWZpbmUgIFRJTV9DQ0VSX0NDMlAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDIwKSAgICAgICAgICAgIC8qITwgQ2FwdHVyZS9Db21wYXJlIDIgb3V0cHV0IFBvbGFyaXR5ICovCisjZGVmaW5lICBUSU1fQ0NFUl9DQzJORSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA0MCkgICAgICAgICAgICAvKiE8IENhcHR1cmUvQ29tcGFyZSAyIENvbXBsZW1lbnRhcnkgb3V0cHV0IGVuYWJsZSAqLworI2RlZmluZSAgVElNX0NDRVJfQ0MyTlAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwODApICAgICAgICAgICAgLyohPCBDYXB0dXJlL0NvbXBhcmUgMiBDb21wbGVtZW50YXJ5IG91dHB1dCBQb2xhcml0eSAqLworI2RlZmluZSAgVElNX0NDRVJfQ0MzRSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAxMDApICAgICAgICAgICAgLyohPCBDYXB0dXJlL0NvbXBhcmUgMyBvdXRwdXQgZW5hYmxlICovCisjZGVmaW5lICBUSU1fQ0NFUl9DQzNQICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDIwMCkgICAgICAgICAgICAvKiE8IENhcHR1cmUvQ29tcGFyZSAzIG91dHB1dCBQb2xhcml0eSAqLworI2RlZmluZSAgVElNX0NDRVJfQ0MzTkUgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDA0MDApICAgICAgICAgICAgLyohPCBDYXB0dXJlL0NvbXBhcmUgMyBDb21wbGVtZW50YXJ5IG91dHB1dCBlbmFibGUgKi8KKyNkZWZpbmUgIFRJTV9DQ0VSX0NDM05QICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwODAwKSAgICAgICAgICAgIC8qITwgQ2FwdHVyZS9Db21wYXJlIDMgQ29tcGxlbWVudGFyeSBvdXRwdXQgUG9sYXJpdHkgKi8KKyNkZWZpbmUgIFRJTV9DQ0VSX0NDNEUgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgxMDAwKSAgICAgICAgICAgIC8qITwgQ2FwdHVyZS9Db21wYXJlIDQgb3V0cHV0IGVuYWJsZSAqLworI2RlZmluZSAgVElNX0NDRVJfQ0M0UCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDIwMDApICAgICAgICAgICAgLyohPCBDYXB0dXJlL0NvbXBhcmUgNCBvdXRwdXQgUG9sYXJpdHkgKi8KKyNkZWZpbmUgIFRJTV9DQ0VSX0NDNE5QICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHg4MDAwKSAgICAgICAgICAgIC8qITwgQ2FwdHVyZS9Db21wYXJlIDQgQ29tcGxlbWVudGFyeSBvdXRwdXQgUG9sYXJpdHkgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBUSU1fQ05UIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIFRJTV9DTlRfQ05UICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHhGRkZGKSAgICAgICAgICAgIC8qITwgQ291bnRlciBWYWx1ZSAqLworCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFRJTV9QU0MgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgVElNX1BTQ19QU0MgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweEZGRkYpICAgICAgICAgICAgLyohPCBQcmVzY2FsZXIgVmFsdWUgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBUSU1fQVJSIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIFRJTV9BUlJfQVJSICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHhGRkZGKSAgICAgICAgICAgIC8qITwgYWN0dWFsIGF1dG8tcmVsb2FkIFZhbHVlICovCisKKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgVElNX1JDUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBUSU1fUkNSX1JFUCAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHhGRikgICAgICAgICAgICAgICAvKiE8IFJlcGV0aXRpb24gQ291bnRlciBWYWx1ZSAqLworCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFRJTV9DQ1IxIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgVElNX0NDUjFfQ0NSMSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweEZGRkYpICAgICAgICAgICAgLyohPCBDYXB0dXJlL0NvbXBhcmUgMSBWYWx1ZSAqLworCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFRJTV9DQ1IyIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgVElNX0NDUjJfQ0NSMiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweEZGRkYpICAgICAgICAgICAgLyohPCBDYXB0dXJlL0NvbXBhcmUgMiBWYWx1ZSAqLworCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFRJTV9DQ1IzIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgVElNX0NDUjNfQ0NSMyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweEZGRkYpICAgICAgICAgICAgLyohPCBDYXB0dXJlL0NvbXBhcmUgMyBWYWx1ZSAqLworCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFRJTV9DQ1I0IHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgVElNX0NDUjRfQ0NSNCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweEZGRkYpICAgICAgICAgICAgLyohPCBDYXB0dXJlL0NvbXBhcmUgNCBWYWx1ZSAqLworCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFRJTV9CRFRSIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgVElNX0JEVFJfRFRHICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwRkYpICAgICAgICAgICAgLyohPCBEVEdbMDo3XSBiaXRzIChEZWFkLVRpbWUgR2VuZXJhdG9yIHNldC11cCkgKi8KKyNkZWZpbmUgIFRJTV9CRFRSX0RUR18wICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAxKSAgICAgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIFRJTV9CRFRSX0RUR18xICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAyKSAgICAgICAgICAgIC8qITwgQml0IDEgKi8KKyNkZWZpbmUgIFRJTV9CRFRSX0RUR18yICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA0KSAgICAgICAgICAgIC8qITwgQml0IDIgKi8KKyNkZWZpbmUgIFRJTV9CRFRSX0RUR18zICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA4KSAgICAgICAgICAgIC8qITwgQml0IDMgKi8KKyNkZWZpbmUgIFRJTV9CRFRSX0RUR180ICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDEwKSAgICAgICAgICAgIC8qITwgQml0IDQgKi8KKyNkZWZpbmUgIFRJTV9CRFRSX0RUR181ICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDIwKSAgICAgICAgICAgIC8qITwgQml0IDUgKi8KKyNkZWZpbmUgIFRJTV9CRFRSX0RUR182ICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDQwKSAgICAgICAgICAgIC8qITwgQml0IDYgKi8KKyNkZWZpbmUgIFRJTV9CRFRSX0RUR183ICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDgwKSAgICAgICAgICAgIC8qITwgQml0IDcgKi8KKworI2RlZmluZSAgVElNX0JEVFJfTE9DSyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAzMDApICAgICAgICAgICAgLyohPCBMT0NLWzE6MF0gYml0cyAoTG9jayBDb25maWd1cmF0aW9uKSAqLworI2RlZmluZSAgVElNX0JEVFJfTE9DS18wICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAxMDApICAgICAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgVElNX0JEVFJfTE9DS18xICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAyMDApICAgICAgICAgICAgLyohPCBCaXQgMSAqLworCisjZGVmaW5lICBUSU1fQkRUUl9PU1NJICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDQwMCkgICAgICAgICAgICAvKiE8IE9mZi1TdGF0ZSBTZWxlY3Rpb24gZm9yIElkbGUgbW9kZSAqLworI2RlZmluZSAgVElNX0JEVFJfT1NTUiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDA4MDApICAgICAgICAgICAgLyohPCBPZmYtU3RhdGUgU2VsZWN0aW9uIGZvciBSdW4gbW9kZSAqLworI2RlZmluZSAgVElNX0JEVFJfQktFICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDEwMDApICAgICAgICAgICAgLyohPCBCcmVhayBlbmFibGUgKi8KKyNkZWZpbmUgIFRJTV9CRFRSX0JLUCAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgyMDAwKSAgICAgICAgICAgIC8qITwgQnJlYWsgUG9sYXJpdHkgKi8KKyNkZWZpbmUgIFRJTV9CRFRSX0FPRSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHg0MDAwKSAgICAgICAgICAgIC8qITwgQXV0b21hdGljIE91dHB1dCBlbmFibGUgKi8KKyNkZWZpbmUgIFRJTV9CRFRSX01PRSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHg4MDAwKSAgICAgICAgICAgIC8qITwgTWFpbiBPdXRwdXQgZW5hYmxlICovCisKKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgVElNX0RDUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBUSU1fRENSX0RCQSAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAxRikgICAgICAgICAgICAvKiE8IERCQVs0OjBdIGJpdHMgKERNQSBCYXNlIEFkZHJlc3MpICovCisjZGVmaW5lICBUSU1fRENSX0RCQV8wICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMSkgICAgICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBUSU1fRENSX0RCQV8xICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMikgICAgICAgICAgICAvKiE8IEJpdCAxICovCisjZGVmaW5lICBUSU1fRENSX0RCQV8yICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwNCkgICAgICAgICAgICAvKiE8IEJpdCAyICovCisjZGVmaW5lICBUSU1fRENSX0RCQV8zICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwOCkgICAgICAgICAgICAvKiE8IEJpdCAzICovCisjZGVmaW5lICBUSU1fRENSX0RCQV80ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAxMCkgICAgICAgICAgICAvKiE8IEJpdCA0ICovCisKKyNkZWZpbmUgIFRJTV9EQ1JfREJMICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgxRjAwKSAgICAgICAgICAgIC8qITwgREJMWzQ6MF0gYml0cyAoRE1BIEJ1cnN0IExlbmd0aCkgKi8KKyNkZWZpbmUgIFRJTV9EQ1JfREJMXzAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMTAwKSAgICAgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIFRJTV9EQ1JfREJMXzEgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMjAwKSAgICAgICAgICAgIC8qITwgQml0IDEgKi8KKyNkZWZpbmUgIFRJTV9EQ1JfREJMXzIgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwNDAwKSAgICAgICAgICAgIC8qITwgQml0IDIgKi8KKyNkZWZpbmUgIFRJTV9EQ1JfREJMXzMgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwODAwKSAgICAgICAgICAgIC8qITwgQml0IDMgKi8KKyNkZWZpbmUgIFRJTV9EQ1JfREJMXzQgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgxMDAwKSAgICAgICAgICAgIC8qITwgQml0IDQgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBUSU1fRE1BUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIFRJTV9ETUFSX0RNQUIgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHhGRkZGKSAgICAgICAgICAgIC8qITwgRE1BIHJlZ2lzdGVyIGZvciBidXJzdCBhY2Nlc3NlcyAqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFsLVRpbWUgQ2xvY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBSVENfQ1JIIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIFJUQ19DUkhfU0VDSUUgICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDAxKSAgICAgICAgICAgICAgIC8qITwgU2Vjb25kIEludGVycnVwdCBFbmFibGUgKi8KKyNkZWZpbmUgIFJUQ19DUkhfQUxSSUUgICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDAyKSAgICAgICAgICAgICAgIC8qITwgQWxhcm0gSW50ZXJydXB0IEVuYWJsZSAqLworI2RlZmluZSAgUlRDX0NSSF9PV0lFICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MDQpICAgICAgICAgICAgICAgLyohPCBPdmVyZmxvVyBJbnRlcnJ1cHQgRW5hYmxlICovCisKKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgUlRDX0NSTCByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBSVENfQ1JMX1NFQ0YgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwMSkgICAgICAgICAgICAgICAvKiE8IFNlY29uZCBGbGFnICovCisjZGVmaW5lICBSVENfQ1JMX0FMUkYgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwMikgICAgICAgICAgICAgICAvKiE8IEFsYXJtIEZsYWcgKi8KKyNkZWZpbmUgIFJUQ19DUkxfT1dGICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDA0KSAgICAgICAgICAgICAgIC8qITwgT3ZlcmZsb1cgRmxhZyAqLworI2RlZmluZSAgUlRDX0NSTF9SU0YgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MDgpICAgICAgICAgICAgICAgLyohPCBSZWdpc3RlcnMgU3luY2hyb25pemVkIEZsYWcgKi8KKyNkZWZpbmUgIFJUQ19DUkxfQ05GICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDEwKSAgICAgICAgICAgICAgIC8qITwgQ29uZmlndXJhdGlvbiBGbGFnICovCisjZGVmaW5lICBSVENfQ1JMX1JUT0ZGICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgyMCkgICAgICAgICAgICAgICAvKiE8IFJUQyBvcGVyYXRpb24gT0ZGICovCisKKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgUlRDX1BSTEggcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBSVENfUFJMSF9QUkwgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwRikgICAgICAgICAgICAvKiE8IFJUQyBQcmVzY2FsZXIgUmVsb2FkIFZhbHVlIEhpZ2ggKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBSVENfUFJMTCByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIFJUQ19QUkxMX1BSTCAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHhGRkZGKSAgICAgICAgICAgIC8qITwgUlRDIFByZXNjYWxlciBSZWxvYWQgVmFsdWUgTG93ICovCisKKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgUlRDX0RJVkggcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBSVENfRElWSF9SVENfRElWICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwRikgICAgICAgICAgICAvKiE8IFJUQyBDbG9jayBEaXZpZGVyIEhpZ2ggKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBSVENfRElWTCByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIFJUQ19ESVZMX1JUQ19ESVYgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHhGRkZGKSAgICAgICAgICAgIC8qITwgUlRDIENsb2NrIERpdmlkZXIgTG93ICovCisKKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgUlRDX0NOVEggcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBSVENfQ05USF9SVENfQ05UICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4RkZGRikgICAgICAgICAgICAvKiE8IFJUQyBDb3VudGVyIEhpZ2ggKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBSVENfQ05UTCByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIFJUQ19DTlRMX1JUQ19DTlQgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHhGRkZGKSAgICAgICAgICAgIC8qITwgUlRDIENvdW50ZXIgTG93ICovCisKKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgUlRDX0FMUkggcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBSVENfQUxSSF9SVENfQUxSICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4RkZGRikgICAgICAgICAgICAvKiE8IFJUQyBBbGFybSBIaWdoICovCisKKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgUlRDX0FMUkwgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBSVENfQUxSTF9SVENfQUxSICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4RkZGRikgICAgICAgICAgICAvKiE8IFJUQyBBbGFybSBMb3cgKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGVwZW5kZW50IFdBVENIRE9HICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgSVdER19LUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBJV0RHX0tSX0tFWSAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4RkZGRikgICAgICAgICAgICAvKiE8IEtleSB2YWx1ZSAod3JpdGUgb25seSwgcmVhZCAwMDAwaCkgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBJV0RHX1BSIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIElXREdfUFJfUFIgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDA3KSAgICAgICAgICAgICAgIC8qITwgUFJbMjowXSAoUHJlc2NhbGVyIGRpdmlkZXIpICovCisjZGVmaW5lICBJV0RHX1BSX1BSXzAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwMSkgICAgICAgICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBJV0RHX1BSX1BSXzEgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwMikgICAgICAgICAgICAgICAvKiE8IEJpdCAxICovCisjZGVmaW5lICBJV0RHX1BSX1BSXzIgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwNCkgICAgICAgICAgICAgICAvKiE8IEJpdCAyICovCisKKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgSVdER19STFIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBJV0RHX1JMUl9STCAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MEZGRikgICAgICAgICAgICAvKiE8IFdhdGNoZG9nIGNvdW50ZXIgcmVsb2FkIHZhbHVlICovCisKKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgSVdER19TUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBJV0RHX1NSX1BWVSAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwMSkgICAgICAgICAgICAgICAvKiE8IFdhdGNoZG9nIHByZXNjYWxlciB2YWx1ZSB1cGRhdGUgKi8KKyNkZWZpbmUgIElXREdfU1JfUlZVICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDAyKSAgICAgICAgICAgICAgIC8qITwgV2F0Y2hkb2cgY291bnRlciByZWxvYWQgdmFsdWUgdXBkYXRlICovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgV2luZG93IFdBVENIRE9HICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFdXREdfQ1IgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgV1dER19DUl9UICAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4N0YpICAgICAgICAgICAgICAgLyohPCBUWzY6MF0gYml0cyAoNy1CaXQgY291bnRlciAoTVNCIHRvIExTQikpICovCisjZGVmaW5lICBXV0RHX0NSX1QwICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwMSkgICAgICAgICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBXV0RHX0NSX1QxICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwMikgICAgICAgICAgICAgICAvKiE8IEJpdCAxICovCisjZGVmaW5lICBXV0RHX0NSX1QyICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwNCkgICAgICAgICAgICAgICAvKiE8IEJpdCAyICovCisjZGVmaW5lICBXV0RHX0NSX1QzICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwOCkgICAgICAgICAgICAgICAvKiE8IEJpdCAzICovCisjZGVmaW5lICBXV0RHX0NSX1Q0ICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgxMCkgICAgICAgICAgICAgICAvKiE8IEJpdCA0ICovCisjZGVmaW5lICBXV0RHX0NSX1Q1ICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgyMCkgICAgICAgICAgICAgICAvKiE8IEJpdCA1ICovCisjZGVmaW5lICBXV0RHX0NSX1Q2ICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHg0MCkgICAgICAgICAgICAgICAvKiE8IEJpdCA2ICovCisKKyNkZWZpbmUgIFdXREdfQ1JfV0RHQSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDgwKSAgICAgICAgICAgICAgIC8qITwgQWN0aXZhdGlvbiBiaXQgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBXV0RHX0NGUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIFdXREdfQ0ZSX1cgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDdGKSAgICAgICAgICAgIC8qITwgV1s2OjBdIGJpdHMgKDctYml0IHdpbmRvdyB2YWx1ZSkgKi8KKyNkZWZpbmUgIFdXREdfQ0ZSX1cwICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAxKSAgICAgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIFdXREdfQ0ZSX1cxICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAyKSAgICAgICAgICAgIC8qITwgQml0IDEgKi8KKyNkZWZpbmUgIFdXREdfQ0ZSX1cyICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA0KSAgICAgICAgICAgIC8qITwgQml0IDIgKi8KKyNkZWZpbmUgIFdXREdfQ0ZSX1czICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA4KSAgICAgICAgICAgIC8qITwgQml0IDMgKi8KKyNkZWZpbmUgIFdXREdfQ0ZSX1c0ICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDEwKSAgICAgICAgICAgIC8qITwgQml0IDQgKi8KKyNkZWZpbmUgIFdXREdfQ0ZSX1c1ICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDIwKSAgICAgICAgICAgIC8qITwgQml0IDUgKi8KKyNkZWZpbmUgIFdXREdfQ0ZSX1c2ICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDQwKSAgICAgICAgICAgIC8qITwgQml0IDYgKi8KKworI2RlZmluZSAgV1dER19DRlJfV0RHVEIgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAxODApICAgICAgICAgICAgLyohPCBXREdUQlsxOjBdIGJpdHMgKFRpbWVyIEJhc2UpICovCisjZGVmaW5lICBXV0RHX0NGUl9XREdUQjAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA4MCkgICAgICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBXV0RHX0NGUl9XREdUQjEgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDEwMCkgICAgICAgICAgICAvKiE8IEJpdCAxICovCisKKyNkZWZpbmUgIFdXREdfQ0ZSX0VXSSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMjAwKSAgICAgICAgICAgIC8qITwgRWFybHkgV2FrZXVwIEludGVycnVwdCAqLworCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFdXREdfU1IgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgV1dER19TUl9FV0lGICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MDEpICAgICAgICAgICAgICAgLyohPCBFYXJseSBXYWtldXAgSW50ZXJydXB0IEZsYWcgKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgRmxleGlibGUgU3RhdGljIE1lbW9yeSBDb250cm9sbGVyICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBGU01DX0JDUjEgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBGU01DX0JDUjFfTUJLRU4gICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDEpICAgICAgICAvKiE8IE1lbW9yeSBiYW5rIGVuYWJsZSBiaXQgKi8KKyNkZWZpbmUgIEZTTUNfQkNSMV9NVVhFTiAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMikgICAgICAgIC8qITwgQWRkcmVzcy9kYXRhIG11bHRpcGxleGluZyBlbmFibGUgYml0ICovCisKKyNkZWZpbmUgIEZTTUNfQkNSMV9NVFlQICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwQykgICAgICAgIC8qITwgTVRZUFsxOjBdIGJpdHMgKE1lbW9yeSB0eXBlKSAqLworI2RlZmluZSAgRlNNQ19CQ1IxX01UWVBfMCAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgRlNNQ19CQ1IxX01UWVBfMSAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA4KSAgICAgICAgLyohPCBCaXQgMSAqLworCisjZGVmaW5lICBGU01DX0JDUjFfTVdJRCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMzApICAgICAgICAvKiE8IE1XSURbMTowXSBiaXRzIChNZW1vcnkgZGF0YSBidXMgd2lkdGgpICovCisjZGVmaW5lICBGU01DX0JDUjFfTVdJRF8wICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBGU01DX0JDUjFfTVdJRF8xICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMjApICAgICAgICAvKiE8IEJpdCAxICovCisKKyNkZWZpbmUgIEZTTUNfQkNSMV9GQUNDRU4gICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgICAgICAgIC8qITwgRmxhc2ggYWNjZXNzIGVuYWJsZSAqLworI2RlZmluZSAgRlNNQ19CQ1IxX0JVUlNURU4gICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKSAgICAgICAgLyohPCBCdXJzdCBlbmFibGUgYml0ICovCisjZGVmaW5lICBGU01DX0JDUjFfV0FJVFBPTCAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAyMDApICAgICAgICAvKiE8IFdhaXQgc2lnbmFsIHBvbGFyaXR5IGJpdCAqLworI2RlZmluZSAgRlNNQ19CQ1IxX1dSQVBNT0QgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwNDAwKSAgICAgICAgLyohPCBXcmFwcGVkIGJ1cnN0IG1vZGUgc3VwcG9ydCAqLworI2RlZmluZSAgRlNNQ19CQ1IxX1dBSVRDRkcgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwODAwKSAgICAgICAgLyohPCBXYWl0IHRpbWluZyBjb25maWd1cmF0aW9uICovCisjZGVmaW5lICBGU01DX0JDUjFfV1JFTiAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDEwMDApICAgICAgICAvKiE8IFdyaXRlIGVuYWJsZSBiaXQgKi8KKyNkZWZpbmUgIEZTTUNfQkNSMV9XQUlURU4gICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMjAwMCkgICAgICAgIC8qITwgV2FpdCBlbmFibGUgYml0ICovCisjZGVmaW5lICBGU01DX0JDUjFfRVhUTU9EICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDQwMDApICAgICAgICAvKiE8IEV4dGVuZGVkIG1vZGUgZW5hYmxlICovCisjZGVmaW5lICBGU01DX0JDUjFfQVNZTkNXQUlUICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDgwMDApICAgICAgIC8qITwgQXN5bmNocm9ub3VzIHdhaXQgKi8KKyNkZWZpbmUgIEZTTUNfQkNSMV9DQlVSU1RSVyAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA4MDAwMCkgICAgICAgIC8qITwgV3JpdGUgYnVyc3QgZW5hYmxlICovCisKKy8qKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBGU01DX0JDUjIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBGU01DX0JDUjJfTUJLRU4gICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDEpICAgICAgICAvKiE8IE1lbW9yeSBiYW5rIGVuYWJsZSBiaXQgKi8KKyNkZWZpbmUgIEZTTUNfQkNSMl9NVVhFTiAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMikgICAgICAgIC8qITwgQWRkcmVzcy9kYXRhIG11bHRpcGxleGluZyBlbmFibGUgYml0ICovCisKKyNkZWZpbmUgIEZTTUNfQkNSMl9NVFlQICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwQykgICAgICAgIC8qITwgTVRZUFsxOjBdIGJpdHMgKE1lbW9yeSB0eXBlKSAqLworI2RlZmluZSAgRlNNQ19CQ1IyX01UWVBfMCAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgRlNNQ19CQ1IyX01UWVBfMSAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA4KSAgICAgICAgLyohPCBCaXQgMSAqLworCisjZGVmaW5lICBGU01DX0JDUjJfTVdJRCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMzApICAgICAgICAvKiE8IE1XSURbMTowXSBiaXRzIChNZW1vcnkgZGF0YSBidXMgd2lkdGgpICovCisjZGVmaW5lICBGU01DX0JDUjJfTVdJRF8wICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBGU01DX0JDUjJfTVdJRF8xICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMjApICAgICAgICAvKiE8IEJpdCAxICovCisKKyNkZWZpbmUgIEZTTUNfQkNSMl9GQUNDRU4gICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgICAgICAgIC8qITwgRmxhc2ggYWNjZXNzIGVuYWJsZSAqLworI2RlZmluZSAgRlNNQ19CQ1IyX0JVUlNURU4gICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKSAgICAgICAgLyohPCBCdXJzdCBlbmFibGUgYml0ICovCisjZGVmaW5lICBGU01DX0JDUjJfV0FJVFBPTCAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAyMDApICAgICAgICAvKiE8IFdhaXQgc2lnbmFsIHBvbGFyaXR5IGJpdCAqLworI2RlZmluZSAgRlNNQ19CQ1IyX1dSQVBNT0QgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwNDAwKSAgICAgICAgLyohPCBXcmFwcGVkIGJ1cnN0IG1vZGUgc3VwcG9ydCAqLworI2RlZmluZSAgRlNNQ19CQ1IyX1dBSVRDRkcgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwODAwKSAgICAgICAgLyohPCBXYWl0IHRpbWluZyBjb25maWd1cmF0aW9uICovCisjZGVmaW5lICBGU01DX0JDUjJfV1JFTiAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDEwMDApICAgICAgICAvKiE8IFdyaXRlIGVuYWJsZSBiaXQgKi8KKyNkZWZpbmUgIEZTTUNfQkNSMl9XQUlURU4gICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMjAwMCkgICAgICAgIC8qITwgV2FpdCBlbmFibGUgYml0ICovCisjZGVmaW5lICBGU01DX0JDUjJfRVhUTU9EICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDQwMDApICAgICAgICAvKiE8IEV4dGVuZGVkIG1vZGUgZW5hYmxlICovCisjZGVmaW5lICBGU01DX0JDUjJfQVNZTkNXQUlUICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDgwMDApICAgICAgIC8qITwgQXN5bmNocm9ub3VzIHdhaXQgKi8KKyNkZWZpbmUgIEZTTUNfQkNSMl9DQlVSU1RSVyAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA4MDAwMCkgICAgICAgIC8qITwgV3JpdGUgYnVyc3QgZW5hYmxlICovCisKKy8qKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBGU01DX0JDUjMgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBGU01DX0JDUjNfTUJLRU4gICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDEpICAgICAgICAvKiE8IE1lbW9yeSBiYW5rIGVuYWJsZSBiaXQgKi8KKyNkZWZpbmUgIEZTTUNfQkNSM19NVVhFTiAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMikgICAgICAgIC8qITwgQWRkcmVzcy9kYXRhIG11bHRpcGxleGluZyBlbmFibGUgYml0ICovCisKKyNkZWZpbmUgIEZTTUNfQkNSM19NVFlQICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwQykgICAgICAgIC8qITwgTVRZUFsxOjBdIGJpdHMgKE1lbW9yeSB0eXBlKSAqLworI2RlZmluZSAgRlNNQ19CQ1IzX01UWVBfMCAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgRlNNQ19CQ1IzX01UWVBfMSAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA4KSAgICAgICAgLyohPCBCaXQgMSAqLworCisjZGVmaW5lICBGU01DX0JDUjNfTVdJRCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMzApICAgICAgICAvKiE8IE1XSURbMTowXSBiaXRzIChNZW1vcnkgZGF0YSBidXMgd2lkdGgpICovCisjZGVmaW5lICBGU01DX0JDUjNfTVdJRF8wICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBGU01DX0JDUjNfTVdJRF8xICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMjApICAgICAgICAvKiE8IEJpdCAxICovCisKKyNkZWZpbmUgIEZTTUNfQkNSM19GQUNDRU4gICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgICAgICAgIC8qITwgRmxhc2ggYWNjZXNzIGVuYWJsZSAqLworI2RlZmluZSAgRlNNQ19CQ1IzX0JVUlNURU4gICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKSAgICAgICAgLyohPCBCdXJzdCBlbmFibGUgYml0ICovCisjZGVmaW5lICBGU01DX0JDUjNfV0FJVFBPTCAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAyMDApICAgICAgICAvKiE8IFdhaXQgc2lnbmFsIHBvbGFyaXR5IGJpdC4gKi8KKyNkZWZpbmUgIEZTTUNfQkNSM19XUkFQTU9EICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDQwMCkgICAgICAgIC8qITwgV3JhcHBlZCBidXJzdCBtb2RlIHN1cHBvcnQgKi8KKyNkZWZpbmUgIEZTTUNfQkNSM19XQUlUQ0ZHICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgICAgICAgIC8qITwgV2FpdCB0aW1pbmcgY29uZmlndXJhdGlvbiAqLworI2RlZmluZSAgRlNNQ19CQ1IzX1dSRU4gICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKSAgICAgICAgLyohPCBXcml0ZSBlbmFibGUgYml0ICovCisjZGVmaW5lICBGU01DX0JDUjNfV0FJVEVOICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAgICAgICAvKiE8IFdhaXQgZW5hYmxlIGJpdCAqLworI2RlZmluZSAgRlNNQ19CQ1IzX0VYVE1PRCAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA0MDAwKSAgICAgICAgLyohPCBFeHRlbmRlZCBtb2RlIGVuYWJsZSAqLworI2RlZmluZSAgRlNNQ19CQ1IzX0FTWU5DV0FJVCAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKSAgICAgICAvKiE8IEFzeW5jaHJvbm91cyB3YWl0ICovCisjZGVmaW5lICBGU01DX0JDUjNfQ0JVUlNUUlcgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAgICAgICAvKiE8IFdyaXRlIGJ1cnN0IGVuYWJsZSAqLworCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgRlNNQ19CQ1I0IHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgRlNNQ19CQ1I0X01CS0VOICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxKSAgICAgICAgLyohPCBNZW1vcnkgYmFuayBlbmFibGUgYml0ICovCisjZGVmaW5lICBGU01DX0JDUjRfTVVYRU4gICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IEFkZHJlc3MvZGF0YSBtdWx0aXBsZXhpbmcgZW5hYmxlIGJpdCAqLworCisjZGVmaW5lICBGU01DX0JDUjRfTVRZUCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMEMpICAgICAgICAvKiE8IE1UWVBbMTowXSBiaXRzIChNZW1vcnkgdHlwZSkgKi8KKyNkZWZpbmUgIEZTTUNfQkNSNF9NVFlQXzAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNCkgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIEZTTUNfQkNSNF9NVFlQXzEgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgICAgICAgIC8qITwgQml0IDEgKi8KKworI2RlZmluZSAgRlNNQ19CQ1I0X01XSUQgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDMwKSAgICAgICAgLyohPCBNV0lEWzE6MF0gYml0cyAoTWVtb3J5IGRhdGEgYnVzIHdpZHRoKSAqLworI2RlZmluZSAgRlNNQ19CQ1I0X01XSURfMCAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDEwKSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgRlNNQ19CQ1I0X01XSURfMSAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKSAgICAgICAgLyohPCBCaXQgMSAqLworCisjZGVmaW5lICBGU01DX0JDUjRfRkFDQ0VOICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwNDApICAgICAgICAvKiE8IEZsYXNoIGFjY2VzcyBlbmFibGUgKi8KKyNkZWZpbmUgIEZTTUNfQkNSNF9CVVJTVEVOICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDEwMCkgICAgICAgIC8qITwgQnVyc3QgZW5hYmxlIGJpdCAqLworI2RlZmluZSAgRlNNQ19CQ1I0X1dBSVRQT0wgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMjAwKSAgICAgICAgLyohPCBXYWl0IHNpZ25hbCBwb2xhcml0eSBiaXQgKi8KKyNkZWZpbmUgIEZTTUNfQkNSNF9XUkFQTU9EICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDQwMCkgICAgICAgIC8qITwgV3JhcHBlZCBidXJzdCBtb2RlIHN1cHBvcnQgKi8KKyNkZWZpbmUgIEZTTUNfQkNSNF9XQUlUQ0ZHICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgICAgICAgIC8qITwgV2FpdCB0aW1pbmcgY29uZmlndXJhdGlvbiAqLworI2RlZmluZSAgRlNNQ19CQ1I0X1dSRU4gICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKSAgICAgICAgLyohPCBXcml0ZSBlbmFibGUgYml0ICovCisjZGVmaW5lICBGU01DX0JDUjRfV0FJVEVOICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAgICAgICAvKiE8IFdhaXQgZW5hYmxlIGJpdCAqLworI2RlZmluZSAgRlNNQ19CQ1I0X0VYVE1PRCAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA0MDAwKSAgICAgICAgLyohPCBFeHRlbmRlZCBtb2RlIGVuYWJsZSAqLworI2RlZmluZSAgRlNNQ19CQ1I0X0FTWU5DV0FJVCAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKSAgICAgICAvKiE8IEFzeW5jaHJvbm91cyB3YWl0ICovCisjZGVmaW5lICBGU01DX0JDUjRfQ0JVUlNUUlcgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAgICAgICAvKiE8IFdyaXRlIGJ1cnN0IGVuYWJsZSAqLworCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgRlNNQ19CVFIxIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBGU01DX0JUUjFfQUREU0VUICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMEYpICAgICAgICAvKiE8IEFERFNFVFszOjBdIGJpdHMgKEFkZHJlc3Mgc2V0dXAgcGhhc2UgZHVyYXRpb24pICovCisjZGVmaW5lICBGU01DX0JUUjFfQUREU0VUXzAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDEpICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBGU01DX0JUUjFfQUREU0VUXzEgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IEJpdCAxICovCisjZGVmaW5lICBGU01DX0JUUjFfQUREU0VUXzIgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDQpICAgICAgICAvKiE8IEJpdCAyICovCisjZGVmaW5lICBGU01DX0JUUjFfQUREU0VUXzMgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDgpICAgICAgICAvKiE8IEJpdCAzICovCisKKyNkZWZpbmUgIEZTTUNfQlRSMV9BRERITEQgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDBGMCkgICAgICAgIC8qITwgQURESExEWzM6MF0gYml0cyAoQWRkcmVzcy1ob2xkIHBoYXNlIGR1cmF0aW9uKSAqLworI2RlZmluZSAgRlNNQ19CVFIxX0FEREhMRF8wICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDEwKSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgRlNNQ19CVFIxX0FEREhMRF8xICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKSAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgRlNNQ19CVFIxX0FEREhMRF8yICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDQwKSAgICAgICAgLyohPCBCaXQgMiAqLworI2RlZmluZSAgRlNNQ19CVFIxX0FEREhMRF8zICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDgwKSAgICAgICAgLyohPCBCaXQgMyAqLworCisjZGVmaW5lICBGU01DX0JUUjFfREFUQVNUICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMEZGMDApICAgICAgICAvKiE8IERBVEFTVCBbMzowXSBiaXRzIChEYXRhLXBoYXNlIGR1cmF0aW9uKSAqLworI2RlZmluZSAgRlNNQ19CVFIxX0RBVEFTVF8wICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgRlNNQ19CVFIxX0RBVEFTVF8xICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMjAwKSAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgRlNNQ19CVFIxX0RBVEFTVF8yICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwNDAwKSAgICAgICAgLyohPCBCaXQgMiAqLworI2RlZmluZSAgRlNNQ19CVFIxX0RBVEFTVF8zICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwODAwKSAgICAgICAgLyohPCBCaXQgMyAqLworCisjZGVmaW5lICBGU01DX0JUUjFfQlVTVFVSTiAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwRjAwMDApICAgICAgICAvKiE8IEJVU1RVUk5bMzowXSBiaXRzIChCdXMgdHVybmFyb3VuZCBwaGFzZSBkdXJhdGlvbikgKi8KKyNkZWZpbmUgIEZTTUNfQlRSMV9CVVNUVVJOXzAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAxMDAwMCkgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIEZTTUNfQlRSMV9CVVNUVVJOXzEgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkgICAgICAgIC8qITwgQml0IDEgKi8KKyNkZWZpbmUgIEZTTUNfQlRSMV9CVVNUVVJOXzIgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA0MDAwMCkgICAgICAgIC8qITwgQml0IDIgKi8KKyNkZWZpbmUgIEZTTUNfQlRSMV9CVVNUVVJOXzMgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA4MDAwMCkgICAgICAgIC8qITwgQml0IDMgKi8KKworI2RlZmluZSAgRlNNQ19CVFIxX0NMS0RJViAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwRjAwMDAwKSAgICAgICAgLyohPCBDTEtESVZbMzowXSBiaXRzIChDbG9jayBkaXZpZGUgcmF0aW8pICovCisjZGVmaW5lICBGU01DX0JUUjFfQ0xLRElWXzAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAxMDAwMDApICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBGU01DX0JUUjFfQ0xLRElWXzEgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAyMDAwMDApICAgICAgICAvKiE8IEJpdCAxICovCisjZGVmaW5lICBGU01DX0JUUjFfQ0xLRElWXzIgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApICAgICAgICAvKiE8IEJpdCAyICovCisjZGVmaW5lICBGU01DX0JUUjFfQ0xLRElWXzMgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA4MDAwMDApICAgICAgICAvKiE8IEJpdCAzICovCisKKyNkZWZpbmUgIEZTTUNfQlRSMV9EQVRMQVQgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwRjAwMDAwMCkgICAgICAgIC8qITwgREFUTEFbMzowXSBiaXRzIChEYXRhIGxhdGVuY3kpICovCisjZGVmaW5lICBGU01DX0JUUjFfREFUTEFUXzAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDEwMDAwMDApICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBGU01DX0JUUjFfREFUTEFUXzEgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDIwMDAwMDApICAgICAgICAvKiE8IEJpdCAxICovCisjZGVmaW5lICBGU01DX0JUUjFfREFUTEFUXzIgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDQwMDAwMDApICAgICAgICAvKiE8IEJpdCAyICovCisjZGVmaW5lICBGU01DX0JUUjFfREFUTEFUXzMgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDgwMDAwMDApICAgICAgICAvKiE8IEJpdCAzICovCisKKyNkZWZpbmUgIEZTTUNfQlRSMV9BQ0NNT0QgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgzMDAwMDAwMCkgICAgICAgIC8qITwgQUNDTU9EWzE6MF0gYml0cyAoQWNjZXNzIG1vZGUpICovCisjZGVmaW5lICBGU01DX0JUUjFfQUNDTU9EXzAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwMDApICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBGU01DX0JUUjFfQUNDTU9EXzEgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MjAwMDAwMDApICAgICAgICAvKiE8IEJpdCAxICovCisKKy8qKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBGU01DX0JUUjIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBGU01DX0JUUjJfQUREU0VUICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMEYpICAgICAgICAvKiE8IEFERFNFVFszOjBdIGJpdHMgKEFkZHJlc3Mgc2V0dXAgcGhhc2UgZHVyYXRpb24pICovCisjZGVmaW5lICBGU01DX0JUUjJfQUREU0VUXzAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDEpICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBGU01DX0JUUjJfQUREU0VUXzEgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IEJpdCAxICovCisjZGVmaW5lICBGU01DX0JUUjJfQUREU0VUXzIgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDQpICAgICAgICAvKiE8IEJpdCAyICovCisjZGVmaW5lICBGU01DX0JUUjJfQUREU0VUXzMgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDgpICAgICAgICAvKiE8IEJpdCAzICovCisKKyNkZWZpbmUgIEZTTUNfQlRSMl9BRERITEQgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDBGMCkgICAgICAgIC8qITwgQURESExEWzM6MF0gYml0cyAoQWRkcmVzcy1ob2xkIHBoYXNlIGR1cmF0aW9uKSAqLworI2RlZmluZSAgRlNNQ19CVFIyX0FEREhMRF8wICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDEwKSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgRlNNQ19CVFIyX0FEREhMRF8xICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKSAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgRlNNQ19CVFIyX0FEREhMRF8yICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDQwKSAgICAgICAgLyohPCBCaXQgMiAqLworI2RlZmluZSAgRlNNQ19CVFIyX0FEREhMRF8zICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDgwKSAgICAgICAgLyohPCBCaXQgMyAqLworCisjZGVmaW5lICBGU01DX0JUUjJfREFUQVNUICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMEZGMDApICAgICAgICAvKiE8IERBVEFTVCBbMzowXSBiaXRzIChEYXRhLXBoYXNlIGR1cmF0aW9uKSAqLworI2RlZmluZSAgRlNNQ19CVFIyX0RBVEFTVF8wICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgRlNNQ19CVFIyX0RBVEFTVF8xICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMjAwKSAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgRlNNQ19CVFIyX0RBVEFTVF8yICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwNDAwKSAgICAgICAgLyohPCBCaXQgMiAqLworI2RlZmluZSAgRlNNQ19CVFIyX0RBVEFTVF8zICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwODAwKSAgICAgICAgLyohPCBCaXQgMyAqLworCisjZGVmaW5lICBGU01DX0JUUjJfQlVTVFVSTiAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwRjAwMDApICAgICAgICAvKiE8IEJVU1RVUk5bMzowXSBiaXRzIChCdXMgdHVybmFyb3VuZCBwaGFzZSBkdXJhdGlvbikgKi8KKyNkZWZpbmUgIEZTTUNfQlRSMl9CVVNUVVJOXzAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAxMDAwMCkgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIEZTTUNfQlRSMl9CVVNUVVJOXzEgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkgICAgICAgIC8qITwgQml0IDEgKi8KKyNkZWZpbmUgIEZTTUNfQlRSMl9CVVNUVVJOXzIgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA0MDAwMCkgICAgICAgIC8qITwgQml0IDIgKi8KKyNkZWZpbmUgIEZTTUNfQlRSMl9CVVNUVVJOXzMgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA4MDAwMCkgICAgICAgIC8qITwgQml0IDMgKi8KKworI2RlZmluZSAgRlNNQ19CVFIyX0NMS0RJViAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwRjAwMDAwKSAgICAgICAgLyohPCBDTEtESVZbMzowXSBiaXRzIChDbG9jayBkaXZpZGUgcmF0aW8pICovCisjZGVmaW5lICBGU01DX0JUUjJfQ0xLRElWXzAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAxMDAwMDApICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBGU01DX0JUUjJfQ0xLRElWXzEgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAyMDAwMDApICAgICAgICAvKiE8IEJpdCAxICovCisjZGVmaW5lICBGU01DX0JUUjJfQ0xLRElWXzIgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApICAgICAgICAvKiE8IEJpdCAyICovCisjZGVmaW5lICBGU01DX0JUUjJfQ0xLRElWXzMgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA4MDAwMDApICAgICAgICAvKiE8IEJpdCAzICovCisKKyNkZWZpbmUgIEZTTUNfQlRSMl9EQVRMQVQgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwRjAwMDAwMCkgICAgICAgIC8qITwgREFUTEFbMzowXSBiaXRzIChEYXRhIGxhdGVuY3kpICovCisjZGVmaW5lICBGU01DX0JUUjJfREFUTEFUXzAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDEwMDAwMDApICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBGU01DX0JUUjJfREFUTEFUXzEgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDIwMDAwMDApICAgICAgICAvKiE8IEJpdCAxICovCisjZGVmaW5lICBGU01DX0JUUjJfREFUTEFUXzIgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDQwMDAwMDApICAgICAgICAvKiE8IEJpdCAyICovCisjZGVmaW5lICBGU01DX0JUUjJfREFUTEFUXzMgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDgwMDAwMDApICAgICAgICAvKiE8IEJpdCAzICovCisKKyNkZWZpbmUgIEZTTUNfQlRSMl9BQ0NNT0QgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgzMDAwMDAwMCkgICAgICAgIC8qITwgQUNDTU9EWzE6MF0gYml0cyAoQWNjZXNzIG1vZGUpICovCisjZGVmaW5lICBGU01DX0JUUjJfQUNDTU9EXzAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwMDApICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBGU01DX0JUUjJfQUNDTU9EXzEgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MjAwMDAwMDApICAgICAgICAvKiE8IEJpdCAxICovCisKKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgRlNNQ19CVFIzIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgRlNNQ19CVFIzX0FERFNFVCAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDBGKSAgICAgICAgLyohPCBBRERTRVRbMzowXSBiaXRzIChBZGRyZXNzIHNldHVwIHBoYXNlIGR1cmF0aW9uKSAqLworI2RlZmluZSAgRlNNQ19CVFIzX0FERFNFVF8wICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxKSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgRlNNQ19CVFIzX0FERFNFVF8xICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAyKSAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgRlNNQ19CVFIzX0FERFNFVF8yICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgICAgICAgLyohPCBCaXQgMiAqLworI2RlZmluZSAgRlNNQ19CVFIzX0FERFNFVF8zICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA4KSAgICAgICAgLyohPCBCaXQgMyAqLworCisjZGVmaW5lICBGU01DX0JUUjNfQURESExEICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwRjApICAgICAgICAvKiE8IEFEREhMRFszOjBdIGJpdHMgKEFkZHJlc3MtaG9sZCBwaGFzZSBkdXJhdGlvbikgKi8KKyNkZWZpbmUgIEZTTUNfQlRSM19BRERITERfMCAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAxMCkgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIEZTTUNfQlRSM19BRERITERfMSAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAyMCkgICAgICAgIC8qITwgQml0IDEgKi8KKyNkZWZpbmUgIEZTTUNfQlRSM19BRERITERfMiAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgICAgICAgIC8qITwgQml0IDIgKi8KKyNkZWZpbmUgIEZTTUNfQlRSM19BRERITERfMyAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA4MCkgICAgICAgIC8qITwgQml0IDMgKi8KKworI2RlZmluZSAgRlNNQ19CVFIzX0RBVEFTVCAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDBGRjAwKSAgICAgICAgLyohPCBEQVRBU1QgWzM6MF0gYml0cyAoRGF0YS1waGFzZSBkdXJhdGlvbikgKi8KKyNkZWZpbmUgIEZTTUNfQlRSM19EQVRBU1RfMCAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDEwMCkgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIEZTTUNfQlRSM19EQVRBU1RfMSAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkgICAgICAgIC8qITwgQml0IDEgKi8KKyNkZWZpbmUgIEZTTUNfQlRSM19EQVRBU1RfMiAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDQwMCkgICAgICAgIC8qITwgQml0IDIgKi8KKyNkZWZpbmUgIEZTTUNfQlRSM19EQVRBU1RfMyAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgICAgICAgIC8qITwgQml0IDMgKi8KKworI2RlZmluZSAgRlNNQ19CVFIzX0JVU1RVUk4gICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMEYwMDAwKSAgICAgICAgLyohPCBCVVNUVVJOWzM6MF0gYml0cyAoQnVzIHR1cm5hcm91bmQgcGhhc2UgZHVyYXRpb24pICovCisjZGVmaW5lICBGU01DX0JUUjNfQlVTVFVSTl8wICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMTAwMDApICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBGU01DX0JUUjNfQlVTVFVSTl8xICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMjAwMDApICAgICAgICAvKiE8IEJpdCAxICovCisjZGVmaW5lICBGU01DX0JUUjNfQlVTVFVSTl8yICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwNDAwMDApICAgICAgICAvKiE8IEJpdCAyICovCisjZGVmaW5lICBGU01DX0JUUjNfQlVTVFVSTl8zICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAgICAgICAvKiE8IEJpdCAzICovCisKKyNkZWZpbmUgIEZTTUNfQlRSM19DTEtESVYgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMEYwMDAwMCkgICAgICAgIC8qITwgQ0xLRElWWzM6MF0gYml0cyAoQ2xvY2sgZGl2aWRlIHJhdGlvKSAqLworI2RlZmluZSAgRlNNQ19CVFIzX0NMS0RJVl8wICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMTAwMDAwKSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgRlNNQ19CVFIzX0NMS0RJVl8xICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMjAwMDAwKSAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgRlNNQ19CVFIzX0NMS0RJVl8yICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwNDAwMDAwKSAgICAgICAgLyohPCBCaXQgMiAqLworI2RlZmluZSAgRlNNQ19CVFIzX0NMS0RJVl8zICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwODAwMDAwKSAgICAgICAgLyohPCBCaXQgMyAqLworCisjZGVmaW5lICBGU01DX0JUUjNfREFUTEFUICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MEYwMDAwMDApICAgICAgICAvKiE8IERBVExBWzM6MF0gYml0cyAoRGF0YSBsYXRlbmN5KSAqLworI2RlZmluZSAgRlNNQ19CVFIzX0RBVExBVF8wICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAxMDAwMDAwKSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgRlNNQ19CVFIzX0RBVExBVF8xICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAyMDAwMDAwKSAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgRlNNQ19CVFIzX0RBVExBVF8yICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA0MDAwMDAwKSAgICAgICAgLyohPCBCaXQgMiAqLworI2RlZmluZSAgRlNNQ19CVFIzX0RBVExBVF8zICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA4MDAwMDAwKSAgICAgICAgLyohPCBCaXQgMyAqLworCisjZGVmaW5lICBGU01DX0JUUjNfQUNDTU9EICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MzAwMDAwMDApICAgICAgICAvKiE8IEFDQ01PRFsxOjBdIGJpdHMgKEFjY2VzcyBtb2RlKSAqLworI2RlZmluZSAgRlNNQ19CVFIzX0FDQ01PRF8wICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDEwMDAwMDAwKSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgRlNNQ19CVFIzX0FDQ01PRF8xICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDIwMDAwMDAwKSAgICAgICAgLyohPCBCaXQgMSAqLworCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgRlNNQ19CVFI0IHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgRlNNQ19CVFI0X0FERFNFVCAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDBGKSAgICAgICAgLyohPCBBRERTRVRbMzowXSBiaXRzIChBZGRyZXNzIHNldHVwIHBoYXNlIGR1cmF0aW9uKSAqLworI2RlZmluZSAgRlNNQ19CVFI0X0FERFNFVF8wICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxKSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgRlNNQ19CVFI0X0FERFNFVF8xICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAyKSAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgRlNNQ19CVFI0X0FERFNFVF8yICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgICAgICAgLyohPCBCaXQgMiAqLworI2RlZmluZSAgRlNNQ19CVFI0X0FERFNFVF8zICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA4KSAgICAgICAgLyohPCBCaXQgMyAqLworCisjZGVmaW5lICBGU01DX0JUUjRfQURESExEICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwRjApICAgICAgICAvKiE8IEFEREhMRFszOjBdIGJpdHMgKEFkZHJlc3MtaG9sZCBwaGFzZSBkdXJhdGlvbikgKi8KKyNkZWZpbmUgIEZTTUNfQlRSNF9BRERITERfMCAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAxMCkgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIEZTTUNfQlRSNF9BRERITERfMSAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAyMCkgICAgICAgIC8qITwgQml0IDEgKi8KKyNkZWZpbmUgIEZTTUNfQlRSNF9BRERITERfMiAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgICAgICAgIC8qITwgQml0IDIgKi8KKyNkZWZpbmUgIEZTTUNfQlRSNF9BRERITERfMyAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA4MCkgICAgICAgIC8qITwgQml0IDMgKi8KKworI2RlZmluZSAgRlNNQ19CVFI0X0RBVEFTVCAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDBGRjAwKSAgICAgICAgLyohPCBEQVRBU1QgWzM6MF0gYml0cyAoRGF0YS1waGFzZSBkdXJhdGlvbikgKi8KKyNkZWZpbmUgIEZTTUNfQlRSNF9EQVRBU1RfMCAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDEwMCkgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIEZTTUNfQlRSNF9EQVRBU1RfMSAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkgICAgICAgIC8qITwgQml0IDEgKi8KKyNkZWZpbmUgIEZTTUNfQlRSNF9EQVRBU1RfMiAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDQwMCkgICAgICAgIC8qITwgQml0IDIgKi8KKyNkZWZpbmUgIEZTTUNfQlRSNF9EQVRBU1RfMyAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgICAgICAgIC8qITwgQml0IDMgKi8KKworI2RlZmluZSAgRlNNQ19CVFI0X0JVU1RVUk4gICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMEYwMDAwKSAgICAgICAgLyohPCBCVVNUVVJOWzM6MF0gYml0cyAoQnVzIHR1cm5hcm91bmQgcGhhc2UgZHVyYXRpb24pICovCisjZGVmaW5lICBGU01DX0JUUjRfQlVTVFVSTl8wICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMTAwMDApICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBGU01DX0JUUjRfQlVTVFVSTl8xICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMjAwMDApICAgICAgICAvKiE8IEJpdCAxICovCisjZGVmaW5lICBGU01DX0JUUjRfQlVTVFVSTl8yICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwNDAwMDApICAgICAgICAvKiE8IEJpdCAyICovCisjZGVmaW5lICBGU01DX0JUUjRfQlVTVFVSTl8zICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAgICAgICAvKiE8IEJpdCAzICovCisKKyNkZWZpbmUgIEZTTUNfQlRSNF9DTEtESVYgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMEYwMDAwMCkgICAgICAgIC8qITwgQ0xLRElWWzM6MF0gYml0cyAoQ2xvY2sgZGl2aWRlIHJhdGlvKSAqLworI2RlZmluZSAgRlNNQ19CVFI0X0NMS0RJVl8wICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMTAwMDAwKSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgRlNNQ19CVFI0X0NMS0RJVl8xICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMjAwMDAwKSAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgRlNNQ19CVFI0X0NMS0RJVl8yICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwNDAwMDAwKSAgICAgICAgLyohPCBCaXQgMiAqLworI2RlZmluZSAgRlNNQ19CVFI0X0NMS0RJVl8zICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwODAwMDAwKSAgICAgICAgLyohPCBCaXQgMyAqLworCisjZGVmaW5lICBGU01DX0JUUjRfREFUTEFUICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MEYwMDAwMDApICAgICAgICAvKiE8IERBVExBWzM6MF0gYml0cyAoRGF0YSBsYXRlbmN5KSAqLworI2RlZmluZSAgRlNNQ19CVFI0X0RBVExBVF8wICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAxMDAwMDAwKSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgRlNNQ19CVFI0X0RBVExBVF8xICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAyMDAwMDAwKSAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgRlNNQ19CVFI0X0RBVExBVF8yICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA0MDAwMDAwKSAgICAgICAgLyohPCBCaXQgMiAqLworI2RlZmluZSAgRlNNQ19CVFI0X0RBVExBVF8zICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA4MDAwMDAwKSAgICAgICAgLyohPCBCaXQgMyAqLworCisjZGVmaW5lICBGU01DX0JUUjRfQUNDTU9EICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MzAwMDAwMDApICAgICAgICAvKiE8IEFDQ01PRFsxOjBdIGJpdHMgKEFjY2VzcyBtb2RlKSAqLworI2RlZmluZSAgRlNNQ19CVFI0X0FDQ01PRF8wICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDEwMDAwMDAwKSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgRlNNQ19CVFI0X0FDQ01PRF8xICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDIwMDAwMDAwKSAgICAgICAgLyohPCBCaXQgMSAqLworCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgRlNNQ19CV1RSMSByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgRlNNQ19CV1RSMV9BRERTRVQgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDBGKSAgICAgICAgLyohPCBBRERTRVRbMzowXSBiaXRzIChBZGRyZXNzIHNldHVwIHBoYXNlIGR1cmF0aW9uKSAqLworI2RlZmluZSAgRlNNQ19CV1RSMV9BRERTRVRfMCAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxKSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgRlNNQ19CV1RSMV9BRERTRVRfMSAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAyKSAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgRlNNQ19CV1RSMV9BRERTRVRfMiAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgICAgICAgLyohPCBCaXQgMiAqLworI2RlZmluZSAgRlNNQ19CV1RSMV9BRERTRVRfMyAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA4KSAgICAgICAgLyohPCBCaXQgMyAqLworCisjZGVmaW5lICBGU01DX0JXVFIxX0FEREhMRCAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwRjApICAgICAgICAvKiE8IEFEREhMRFszOjBdIGJpdHMgKEFkZHJlc3MtaG9sZCBwaGFzZSBkdXJhdGlvbikgKi8KKyNkZWZpbmUgIEZTTUNfQldUUjFfQURESExEXzAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAxMCkgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIEZTTUNfQldUUjFfQURESExEXzEgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAyMCkgICAgICAgIC8qITwgQml0IDEgKi8KKyNkZWZpbmUgIEZTTUNfQldUUjFfQURESExEXzIgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgICAgICAgIC8qITwgQml0IDIgKi8KKyNkZWZpbmUgIEZTTUNfQldUUjFfQURESExEXzMgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA4MCkgICAgICAgIC8qITwgQml0IDMgKi8KKworI2RlZmluZSAgRlNNQ19CV1RSMV9EQVRBU1QgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDBGRjAwKSAgICAgICAgLyohPCBEQVRBU1QgWzM6MF0gYml0cyAoRGF0YS1waGFzZSBkdXJhdGlvbikgKi8KKyNkZWZpbmUgIEZTTUNfQldUUjFfREFUQVNUXzAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDEwMCkgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIEZTTUNfQldUUjFfREFUQVNUXzEgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkgICAgICAgIC8qITwgQml0IDEgKi8KKyNkZWZpbmUgIEZTTUNfQldUUjFfREFUQVNUXzIgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDQwMCkgICAgICAgIC8qITwgQml0IDIgKi8KKyNkZWZpbmUgIEZTTUNfQldUUjFfREFUQVNUXzMgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgICAgICAgIC8qITwgQml0IDMgKi8KKworI2RlZmluZSAgRlNNQ19CV1RSMV9DTEtESVYgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwRjAwMDAwKSAgICAgICAgLyohPCBDTEtESVZbMzowXSBiaXRzIChDbG9jayBkaXZpZGUgcmF0aW8pICovCisjZGVmaW5lICBGU01DX0JXVFIxX0NMS0RJVl8wICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAxMDAwMDApICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBGU01DX0JXVFIxX0NMS0RJVl8xICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAyMDAwMDApICAgICAgICAvKiE8IEJpdCAxICovCisjZGVmaW5lICBGU01DX0JXVFIxX0NMS0RJVl8yICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApICAgICAgICAvKiE8IEJpdCAyICovCisjZGVmaW5lICBGU01DX0JXVFIxX0NMS0RJVl8zICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA4MDAwMDApICAgICAgICAvKiE8IEJpdCAzICovCisKKyNkZWZpbmUgIEZTTUNfQldUUjFfREFUTEFUICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwRjAwMDAwMCkgICAgICAgIC8qITwgREFUTEFbMzowXSBiaXRzIChEYXRhIGxhdGVuY3kpICovCisjZGVmaW5lICBGU01DX0JXVFIxX0RBVExBVF8wICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDEwMDAwMDApICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBGU01DX0JXVFIxX0RBVExBVF8xICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDIwMDAwMDApICAgICAgICAvKiE8IEJpdCAxICovCisjZGVmaW5lICBGU01DX0JXVFIxX0RBVExBVF8yICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDQwMDAwMDApICAgICAgICAvKiE8IEJpdCAyICovCisjZGVmaW5lICBGU01DX0JXVFIxX0RBVExBVF8zICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDgwMDAwMDApICAgICAgICAvKiE8IEJpdCAzICovCisKKyNkZWZpbmUgIEZTTUNfQldUUjFfQUNDTU9EICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgzMDAwMDAwMCkgICAgICAgIC8qITwgQUNDTU9EWzE6MF0gYml0cyAoQWNjZXNzIG1vZGUpICovCisjZGVmaW5lICBGU01DX0JXVFIxX0FDQ01PRF8wICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwMDApICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBGU01DX0JXVFIxX0FDQ01PRF8xICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MjAwMDAwMDApICAgICAgICAvKiE8IEJpdCAxICovCisKKy8qKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBGU01DX0JXVFIyIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBGU01DX0JXVFIyX0FERFNFVCAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMEYpICAgICAgICAvKiE8IEFERFNFVFszOjBdIGJpdHMgKEFkZHJlc3Mgc2V0dXAgcGhhc2UgZHVyYXRpb24pICovCisjZGVmaW5lICBGU01DX0JXVFIyX0FERFNFVF8wICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDEpICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBGU01DX0JXVFIyX0FERFNFVF8xICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IEJpdCAxICovCisjZGVmaW5lICBGU01DX0JXVFIyX0FERFNFVF8yICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDQpICAgICAgICAvKiE8IEJpdCAyICovCisjZGVmaW5lICBGU01DX0JXVFIyX0FERFNFVF8zICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDgpICAgICAgICAvKiE8IEJpdCAzICovCisKKyNkZWZpbmUgIEZTTUNfQldUUjJfQURESExEICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDBGMCkgICAgICAgIC8qITwgQURESExEWzM6MF0gYml0cyAoQWRkcmVzcy1ob2xkIHBoYXNlIGR1cmF0aW9uKSAqLworI2RlZmluZSAgRlNNQ19CV1RSMl9BRERITERfMCAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDEwKSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgRlNNQ19CV1RSMl9BRERITERfMSAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKSAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgRlNNQ19CV1RSMl9BRERITERfMiAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDQwKSAgICAgICAgLyohPCBCaXQgMiAqLworI2RlZmluZSAgRlNNQ19CV1RSMl9BRERITERfMyAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDgwKSAgICAgICAgLyohPCBCaXQgMyAqLworCisjZGVmaW5lICBGU01DX0JXVFIyX0RBVEFTVCAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMEZGMDApICAgICAgICAvKiE8IERBVEFTVCBbMzowXSBiaXRzIChEYXRhLXBoYXNlIGR1cmF0aW9uKSAqLworI2RlZmluZSAgRlNNQ19CV1RSMl9EQVRBU1RfMCAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgRlNNQ19CV1RSMl9EQVRBU1RfMSAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMjAwKSAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgRlNNQ19CV1RSMl9EQVRBU1RfMiAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwNDAwKSAgICAgICAgLyohPCBCaXQgMiAqLworI2RlZmluZSAgRlNNQ19CV1RSMl9EQVRBU1RfMyAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwODAwKSAgICAgICAgLyohPCBCaXQgMyAqLworCisjZGVmaW5lICBGU01DX0JXVFIyX0NMS0RJViAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDBGMDAwMDApICAgICAgICAvKiE8IENMS0RJVlszOjBdIGJpdHMgKENsb2NrIGRpdmlkZSByYXRpbykgKi8KKyNkZWZpbmUgIEZTTUNfQldUUjJfQ0xLRElWXzAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDEwMDAwMCkgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIEZTTUNfQldUUjJfQ0xLRElWXzEgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDIwMDAwMCkgICAgICAgIC8qITwgQml0IDEqLworI2RlZmluZSAgRlNNQ19CV1RSMl9DTEtESVZfMiAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwNDAwMDAwKSAgICAgICAgLyohPCBCaXQgMiAqLworI2RlZmluZSAgRlNNQ19CV1RSMl9DTEtESVZfMyAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwODAwMDAwKSAgICAgICAgLyohPCBCaXQgMyAqLworCisjZGVmaW5lICBGU01DX0JXVFIyX0RBVExBVCAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MEYwMDAwMDApICAgICAgICAvKiE8IERBVExBWzM6MF0gYml0cyAoRGF0YSBsYXRlbmN5KSAqLworI2RlZmluZSAgRlNNQ19CV1RSMl9EQVRMQVRfMCAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAxMDAwMDAwKSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgRlNNQ19CV1RSMl9EQVRMQVRfMSAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAyMDAwMDAwKSAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgRlNNQ19CV1RSMl9EQVRMQVRfMiAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA0MDAwMDAwKSAgICAgICAgLyohPCBCaXQgMiAqLworI2RlZmluZSAgRlNNQ19CV1RSMl9EQVRMQVRfMyAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA4MDAwMDAwKSAgICAgICAgLyohPCBCaXQgMyAqLworCisjZGVmaW5lICBGU01DX0JXVFIyX0FDQ01PRCAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MzAwMDAwMDApICAgICAgICAvKiE8IEFDQ01PRFsxOjBdIGJpdHMgKEFjY2VzcyBtb2RlKSAqLworI2RlZmluZSAgRlNNQ19CV1RSMl9BQ0NNT0RfMCAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDEwMDAwMDAwKSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgRlNNQ19CV1RSMl9BQ0NNT0RfMSAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDIwMDAwMDAwKSAgICAgICAgLyohPCBCaXQgMSAqLworCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgRlNNQ19CV1RSMyByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgRlNNQ19CV1RSM19BRERTRVQgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDBGKSAgICAgICAgLyohPCBBRERTRVRbMzowXSBiaXRzIChBZGRyZXNzIHNldHVwIHBoYXNlIGR1cmF0aW9uKSAqLworI2RlZmluZSAgRlNNQ19CV1RSM19BRERTRVRfMCAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxKSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgRlNNQ19CV1RSM19BRERTRVRfMSAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAyKSAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgRlNNQ19CV1RSM19BRERTRVRfMiAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgICAgICAgLyohPCBCaXQgMiAqLworI2RlZmluZSAgRlNNQ19CV1RSM19BRERTRVRfMyAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA4KSAgICAgICAgLyohPCBCaXQgMyAqLworCisjZGVmaW5lICBGU01DX0JXVFIzX0FEREhMRCAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwRjApICAgICAgICAvKiE8IEFEREhMRFszOjBdIGJpdHMgKEFkZHJlc3MtaG9sZCBwaGFzZSBkdXJhdGlvbikgKi8KKyNkZWZpbmUgIEZTTUNfQldUUjNfQURESExEXzAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAxMCkgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIEZTTUNfQldUUjNfQURESExEXzEgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAyMCkgICAgICAgIC8qITwgQml0IDEgKi8KKyNkZWZpbmUgIEZTTUNfQldUUjNfQURESExEXzIgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgICAgICAgIC8qITwgQml0IDIgKi8KKyNkZWZpbmUgIEZTTUNfQldUUjNfQURESExEXzMgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA4MCkgICAgICAgIC8qITwgQml0IDMgKi8KKworI2RlZmluZSAgRlNNQ19CV1RSM19EQVRBU1QgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDBGRjAwKSAgICAgICAgLyohPCBEQVRBU1QgWzM6MF0gYml0cyAoRGF0YS1waGFzZSBkdXJhdGlvbikgKi8KKyNkZWZpbmUgIEZTTUNfQldUUjNfREFUQVNUXzAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDEwMCkgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIEZTTUNfQldUUjNfREFUQVNUXzEgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkgICAgICAgIC8qITwgQml0IDEgKi8KKyNkZWZpbmUgIEZTTUNfQldUUjNfREFUQVNUXzIgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDQwMCkgICAgICAgIC8qITwgQml0IDIgKi8KKyNkZWZpbmUgIEZTTUNfQldUUjNfREFUQVNUXzMgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgICAgICAgIC8qITwgQml0IDMgKi8KKworI2RlZmluZSAgRlNNQ19CV1RSM19DTEtESVYgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwRjAwMDAwKSAgICAgICAgLyohPCBDTEtESVZbMzowXSBiaXRzIChDbG9jayBkaXZpZGUgcmF0aW8pICovCisjZGVmaW5lICBGU01DX0JXVFIzX0NMS0RJVl8wICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAxMDAwMDApICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBGU01DX0JXVFIzX0NMS0RJVl8xICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAyMDAwMDApICAgICAgICAvKiE8IEJpdCAxICovCisjZGVmaW5lICBGU01DX0JXVFIzX0NMS0RJVl8yICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApICAgICAgICAvKiE8IEJpdCAyICovCisjZGVmaW5lICBGU01DX0JXVFIzX0NMS0RJVl8zICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA4MDAwMDApICAgICAgICAvKiE8IEJpdCAzICovCisKKyNkZWZpbmUgIEZTTUNfQldUUjNfREFUTEFUICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwRjAwMDAwMCkgICAgICAgIC8qITwgREFUTEFbMzowXSBiaXRzIChEYXRhIGxhdGVuY3kpICovCisjZGVmaW5lICBGU01DX0JXVFIzX0RBVExBVF8wICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDEwMDAwMDApICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBGU01DX0JXVFIzX0RBVExBVF8xICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDIwMDAwMDApICAgICAgICAvKiE8IEJpdCAxICovCisjZGVmaW5lICBGU01DX0JXVFIzX0RBVExBVF8yICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDQwMDAwMDApICAgICAgICAvKiE8IEJpdCAyICovCisjZGVmaW5lICBGU01DX0JXVFIzX0RBVExBVF8zICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDgwMDAwMDApICAgICAgICAvKiE8IEJpdCAzICovCisKKyNkZWZpbmUgIEZTTUNfQldUUjNfQUNDTU9EICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgzMDAwMDAwMCkgICAgICAgIC8qITwgQUNDTU9EWzE6MF0gYml0cyAoQWNjZXNzIG1vZGUpICovCisjZGVmaW5lICBGU01DX0JXVFIzX0FDQ01PRF8wICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwMDApICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBGU01DX0JXVFIzX0FDQ01PRF8xICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MjAwMDAwMDApICAgICAgICAvKiE8IEJpdCAxICovCisKKy8qKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBGU01DX0JXVFI0IHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBGU01DX0JXVFI0X0FERFNFVCAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMEYpICAgICAgICAvKiE8IEFERFNFVFszOjBdIGJpdHMgKEFkZHJlc3Mgc2V0dXAgcGhhc2UgZHVyYXRpb24pICovCisjZGVmaW5lICBGU01DX0JXVFI0X0FERFNFVF8wICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDEpICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBGU01DX0JXVFI0X0FERFNFVF8xICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IEJpdCAxICovCisjZGVmaW5lICBGU01DX0JXVFI0X0FERFNFVF8yICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDQpICAgICAgICAvKiE8IEJpdCAyICovCisjZGVmaW5lICBGU01DX0JXVFI0X0FERFNFVF8zICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDgpICAgICAgICAvKiE8IEJpdCAzICovCisKKyNkZWZpbmUgIEZTTUNfQldUUjRfQURESExEICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDBGMCkgICAgICAgIC8qITwgQURESExEWzM6MF0gYml0cyAoQWRkcmVzcy1ob2xkIHBoYXNlIGR1cmF0aW9uKSAqLworI2RlZmluZSAgRlNNQ19CV1RSNF9BRERITERfMCAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDEwKSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgRlNNQ19CV1RSNF9BRERITERfMSAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKSAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgRlNNQ19CV1RSNF9BRERITERfMiAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDQwKSAgICAgICAgLyohPCBCaXQgMiAqLworI2RlZmluZSAgRlNNQ19CV1RSNF9BRERITERfMyAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDgwKSAgICAgICAgLyohPCBCaXQgMyAqLworCisjZGVmaW5lICBGU01DX0JXVFI0X0RBVEFTVCAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMEZGMDApICAgICAgICAvKiE8IERBVEFTVCBbMzowXSBiaXRzIChEYXRhLXBoYXNlIGR1cmF0aW9uKSAqLworI2RlZmluZSAgRlNNQ19CV1RSNF9EQVRBU1RfMCAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgRlNNQ19CV1RSNF9EQVRBU1RfMSAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMjAwKSAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgRlNNQ19CV1RSNF9EQVRBU1RfMiAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwNDAwKSAgICAgICAgLyohPCBCaXQgMiAqLworI2RlZmluZSAgRlNNQ19CV1RSNF9EQVRBU1RfMyAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwODAwKSAgICAgICAgLyohPCBCaXQgMyAqLworCisjZGVmaW5lICBGU01DX0JXVFI0X0NMS0RJViAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDBGMDAwMDApICAgICAgICAvKiE8IENMS0RJVlszOjBdIGJpdHMgKENsb2NrIGRpdmlkZSByYXRpbykgKi8KKyNkZWZpbmUgIEZTTUNfQldUUjRfQ0xLRElWXzAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDEwMDAwMCkgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIEZTTUNfQldUUjRfQ0xLRElWXzEgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDIwMDAwMCkgICAgICAgIC8qITwgQml0IDEgKi8KKyNkZWZpbmUgIEZTTUNfQldUUjRfQ0xLRElWXzIgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDQwMDAwMCkgICAgICAgIC8qITwgQml0IDIgKi8KKyNkZWZpbmUgIEZTTUNfQldUUjRfQ0xLRElWXzMgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDgwMDAwMCkgICAgICAgIC8qITwgQml0IDMgKi8KKworI2RlZmluZSAgRlNNQ19CV1RSNF9EQVRMQVQgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDBGMDAwMDAwKSAgICAgICAgLyohPCBEQVRMQVszOjBdIGJpdHMgKERhdGEgbGF0ZW5jeSkgKi8KKyNkZWZpbmUgIEZTTUNfQldUUjRfREFUTEFUXzAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMTAwMDAwMCkgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIEZTTUNfQldUUjRfREFUTEFUXzEgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMjAwMDAwMCkgICAgICAgIC8qITwgQml0IDEgKi8KKyNkZWZpbmUgIEZTTUNfQldUUjRfREFUTEFUXzIgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwNDAwMDAwMCkgICAgICAgIC8qITwgQml0IDIgKi8KKyNkZWZpbmUgIEZTTUNfQldUUjRfREFUTEFUXzMgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwODAwMDAwMCkgICAgICAgIC8qITwgQml0IDMgKi8KKworI2RlZmluZSAgRlNNQ19CV1RSNF9BQ0NNT0QgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDMwMDAwMDAwKSAgICAgICAgLyohPCBBQ0NNT0RbMTowXSBiaXRzIChBY2Nlc3MgbW9kZSkgKi8KKyNkZWZpbmUgIEZTTUNfQldUUjRfQUNDTU9EXzAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgxMDAwMDAwMCkgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIEZTTUNfQldUUjRfQUNDTU9EXzEgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgyMDAwMDAwMCkgICAgICAgIC8qITwgQml0IDEgKi8KKworLyoqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIEZTTUNfUENSMiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIEZTTUNfUENSMl9QV0FJVEVOICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMikgICAgICAgIC8qITwgV2FpdCBmZWF0dXJlIGVuYWJsZSBiaXQgKi8KKyNkZWZpbmUgIEZTTUNfUENSMl9QQktFTiAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNCkgICAgICAgIC8qITwgUEMgQ2FyZC9OQU5EIEZsYXNoIG1lbW9yeSBiYW5rIGVuYWJsZSBiaXQgKi8KKyNkZWZpbmUgIEZTTUNfUENSMl9QVFlQICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgICAgICAgIC8qITwgTWVtb3J5IHR5cGUgKi8KKworI2RlZmluZSAgRlNNQ19QQ1IyX1BXSUQgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDMwKSAgICAgICAgLyohPCBQV0lEWzE6MF0gYml0cyAoTkFORCBGbGFzaCBkYXRhYnVzIHdpZHRoKSAqLworI2RlZmluZSAgRlNNQ19QQ1IyX1BXSURfMCAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDEwKSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgRlNNQ19QQ1IyX1BXSURfMSAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKSAgICAgICAgLyohPCBCaXQgMSAqLworCisjZGVmaW5lICBGU01DX1BDUjJfRUNDRU4gICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwNDApICAgICAgICAvKiE8IEVDQyBjb21wdXRhdGlvbiBsb2dpYyBlbmFibGUgYml0ICovCisKKyNkZWZpbmUgIEZTTUNfUENSMl9UQ0xSICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMUUwMCkgICAgICAgIC8qITwgVENMUlszOjBdIGJpdHMgKENMRSB0byBSRSBkZWxheSkgKi8KKyNkZWZpbmUgIEZTTUNfUENSMl9UQ0xSXzAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIEZTTUNfUENSMl9UQ0xSXzEgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDQwMCkgICAgICAgIC8qITwgQml0IDEgKi8KKyNkZWZpbmUgIEZTTUNfUENSMl9UQ0xSXzIgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgICAgICAgIC8qITwgQml0IDIgKi8KKyNkZWZpbmUgIEZTTUNfUENSMl9UQ0xSXzMgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMTAwMCkgICAgICAgIC8qITwgQml0IDMgKi8KKworI2RlZmluZSAgRlNNQ19QQ1IyX1RBUiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDFFMDAwKSAgICAgICAgLyohPCBUQVJbMzowXSBiaXRzIChBTEUgdG8gUkUgZGVsYXkpICovCisjZGVmaW5lICBGU01DX1BDUjJfVEFSXzAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBGU01DX1BDUjJfVEFSXzEgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDQwMDApICAgICAgICAvKiE8IEJpdCAxICovCisjZGVmaW5lICBGU01DX1BDUjJfVEFSXzIgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDgwMDApICAgICAgICAvKiE8IEJpdCAyICovCisjZGVmaW5lICBGU01DX1BDUjJfVEFSXzMgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMTAwMDApICAgICAgICAvKiE8IEJpdCAzICovCisKKyNkZWZpbmUgIEZTTUNfUENSMl9FQ0NQUyAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDBFMDAwMCkgICAgICAgIC8qITwgRUNDUFNbMTowXSBiaXRzIChFQ0MgcGFnZSBzaXplKSAqLworI2RlZmluZSAgRlNNQ19QQ1IyX0VDQ1BTXzAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDIwMDAwKSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgRlNNQ19QQ1IyX0VDQ1BTXzEgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDQwMDAwKSAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgRlNNQ19QQ1IyX0VDQ1BTXzIgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDgwMDAwKSAgICAgICAgLyohPCBCaXQgMiAqLworCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgRlNNQ19QQ1IzIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgRlNNQ19QQ1IzX1BXQUlURU4gICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAyKSAgICAgICAgLyohPCBXYWl0IGZlYXR1cmUgZW5hYmxlIGJpdCAqLworI2RlZmluZSAgRlNNQ19QQ1IzX1BCS0VOICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgICAgICAgLyohPCBQQyBDYXJkL05BTkQgRmxhc2ggbWVtb3J5IGJhbmsgZW5hYmxlIGJpdCAqLworI2RlZmluZSAgRlNNQ19QQ1IzX1BUWVAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA4KSAgICAgICAgLyohPCBNZW1vcnkgdHlwZSAqLworCisjZGVmaW5lICBGU01DX1BDUjNfUFdJRCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMzApICAgICAgICAvKiE8IFBXSURbMTowXSBiaXRzIChOQU5EIEZsYXNoIGRhdGFidXMgd2lkdGgpICovCisjZGVmaW5lICBGU01DX1BDUjNfUFdJRF8wICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBGU01DX1BDUjNfUFdJRF8xICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMjApICAgICAgICAvKiE8IEJpdCAxICovCisKKyNkZWZpbmUgIEZTTUNfUENSM19FQ0NFTiAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgICAgICAgIC8qITwgRUNDIGNvbXB1dGF0aW9uIGxvZ2ljIGVuYWJsZSBiaXQgKi8KKworI2RlZmluZSAgRlNNQ19QQ1IzX1RDTFIgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAxRTAwKSAgICAgICAgLyohPCBUQ0xSWzM6MF0gYml0cyAoQ0xFIHRvIFJFIGRlbGF5KSAqLworI2RlZmluZSAgRlNNQ19QQ1IzX1RDTFJfMCAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMjAwKSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgRlNNQ19QQ1IzX1RDTFJfMSAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwNDAwKSAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgRlNNQ19QQ1IzX1RDTFJfMiAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwODAwKSAgICAgICAgLyohPCBCaXQgMiAqLworI2RlZmluZSAgRlNNQ19QQ1IzX1RDTFJfMyAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKSAgICAgICAgLyohPCBCaXQgMyAqLworCisjZGVmaW5lICBGU01DX1BDUjNfVEFSICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMUUwMDApICAgICAgICAvKiE8IFRBUlszOjBdIGJpdHMgKEFMRSB0byBSRSBkZWxheSkgKi8KKyNkZWZpbmUgIEZTTUNfUENSM19UQVJfMCAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMjAwMCkgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIEZTTUNfUENSM19UQVJfMSAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgICAgICAgIC8qITwgQml0IDEgKi8KKyNkZWZpbmUgIEZTTUNfUENSM19UQVJfMiAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwODAwMCkgICAgICAgIC8qITwgQml0IDIgKi8KKyNkZWZpbmUgIEZTTUNfUENSM19UQVJfMyAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAxMDAwMCkgICAgICAgIC8qITwgQml0IDMgKi8KKworI2RlZmluZSAgRlNNQ19QQ1IzX0VDQ1BTICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMEUwMDAwKSAgICAgICAgLyohPCBFQ0NQU1syOjBdIGJpdHMgKEVDQyBwYWdlIHNpemUpICovCisjZGVmaW5lICBGU01DX1BDUjNfRUNDUFNfMCAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMjAwMDApICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBGU01DX1BDUjNfRUNDUFNfMSAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwNDAwMDApICAgICAgICAvKiE8IEJpdCAxICovCisjZGVmaW5lICBGU01DX1BDUjNfRUNDUFNfMiAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAgICAgICAvKiE8IEJpdCAyICovCisKKy8qKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBGU01DX1BDUjQgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBGU01DX1BDUjRfUFdBSVRFTiAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IFdhaXQgZmVhdHVyZSBlbmFibGUgYml0ICovCisjZGVmaW5lICBGU01DX1BDUjRfUEJLRU4gICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDQpICAgICAgICAvKiE8IFBDIENhcmQvTkFORCBGbGFzaCBtZW1vcnkgYmFuayBlbmFibGUgYml0ICovCisjZGVmaW5lICBGU01DX1BDUjRfUFRZUCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDgpICAgICAgICAvKiE8IE1lbW9yeSB0eXBlICovCisKKyNkZWZpbmUgIEZTTUNfUENSNF9QV0lEICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAzMCkgICAgICAgIC8qITwgUFdJRFsxOjBdIGJpdHMgKE5BTkQgRmxhc2ggZGF0YWJ1cyB3aWR0aCkgKi8KKyNkZWZpbmUgIEZTTUNfUENSNF9QV0lEXzAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAxMCkgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIEZTTUNfUENSNF9QV0lEXzEgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAyMCkgICAgICAgIC8qITwgQml0IDEgKi8KKworI2RlZmluZSAgRlNNQ19QQ1I0X0VDQ0VOICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDQwKSAgICAgICAgLyohPCBFQ0MgY29tcHV0YXRpb24gbG9naWMgZW5hYmxlIGJpdCAqLworCisjZGVmaW5lICBGU01DX1BDUjRfVENMUiAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDFFMDApICAgICAgICAvKiE8IFRDTFJbMzowXSBiaXRzIChDTEUgdG8gUkUgZGVsYXkpICovCisjZGVmaW5lICBGU01DX1BDUjRfVENMUl8wICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAyMDApICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBGU01DX1BDUjRfVENMUl8xICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApICAgICAgICAvKiE8IEJpdCAxICovCisjZGVmaW5lICBGU01DX1BDUjRfVENMUl8yICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA4MDApICAgICAgICAvKiE8IEJpdCAyICovCisjZGVmaW5lICBGU01DX1BDUjRfVENMUl8zICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDEwMDApICAgICAgICAvKiE8IEJpdCAzICovCisKKyNkZWZpbmUgIEZTTUNfUENSNF9UQVIgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAxRTAwMCkgICAgICAgIC8qITwgVEFSWzM6MF0gYml0cyAoQUxFIHRvIFJFIGRlbGF5KSAqLworI2RlZmluZSAgRlNNQ19QQ1I0X1RBUl8wICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAyMDAwKSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgRlNNQ19QQ1I0X1RBUl8xICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA0MDAwKSAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgRlNNQ19QQ1I0X1RBUl8yICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKSAgICAgICAgLyohPCBCaXQgMiAqLworI2RlZmluZSAgRlNNQ19QQ1I0X1RBUl8zICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDEwMDAwKSAgICAgICAgLyohPCBCaXQgMyAqLworCisjZGVmaW5lICBGU01DX1BDUjRfRUNDUFMgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwRTAwMDApICAgICAgICAvKiE8IEVDQ1BTWzI6MF0gYml0cyAoRUNDIHBhZ2Ugc2l6ZSkgKi8KKyNkZWZpbmUgIEZTTUNfUENSNF9FQ0NQU18wICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIEZTTUNfUENSNF9FQ0NQU18xICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA0MDAwMCkgICAgICAgIC8qITwgQml0IDEgKi8KKyNkZWZpbmUgIEZTTUNfUENSNF9FQ0NQU18yICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA4MDAwMCkgICAgICAgIC8qITwgQml0IDIgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBGU01DX1NSMiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIEZTTUNfU1IyX0lSUyAgICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDAxKSAgICAgICAgICAgICAgIC8qITwgSW50ZXJydXB0IFJpc2luZyBFZGdlIHN0YXR1cyAqLworI2RlZmluZSAgRlNNQ19TUjJfSUxTICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MDIpICAgICAgICAgICAgICAgLyohPCBJbnRlcnJ1cHQgTGV2ZWwgc3RhdHVzICovCisjZGVmaW5lICBGU01DX1NSMl9JRlMgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwNCkgICAgICAgICAgICAgICAvKiE8IEludGVycnVwdCBGYWxsaW5nIEVkZ2Ugc3RhdHVzICovCisjZGVmaW5lICBGU01DX1NSMl9JUkVOICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwOCkgICAgICAgICAgICAgICAvKiE8IEludGVycnVwdCBSaXNpbmcgRWRnZSBkZXRlY3Rpb24gRW5hYmxlIGJpdCAqLworI2RlZmluZSAgRlNNQ19TUjJfSUxFTiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MTApICAgICAgICAgICAgICAgLyohPCBJbnRlcnJ1cHQgTGV2ZWwgZGV0ZWN0aW9uIEVuYWJsZSBiaXQgKi8KKyNkZWZpbmUgIEZTTUNfU1IyX0lGRU4gICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDIwKSAgICAgICAgICAgICAgIC8qITwgSW50ZXJydXB0IEZhbGxpbmcgRWRnZSBkZXRlY3Rpb24gRW5hYmxlIGJpdCAqLworI2RlZmluZSAgRlNNQ19TUjJfRkVNUFQgICAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4NDApICAgICAgICAgICAgICAgLyohPCBGSUZPIGVtcHR5ICovCisKKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgRlNNQ19TUjMgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBGU01DX1NSM19JUlMgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwMSkgICAgICAgICAgICAgICAvKiE8IEludGVycnVwdCBSaXNpbmcgRWRnZSBzdGF0dXMgKi8KKyNkZWZpbmUgIEZTTUNfU1IzX0lMUyAgICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDAyKSAgICAgICAgICAgICAgIC8qITwgSW50ZXJydXB0IExldmVsIHN0YXR1cyAqLworI2RlZmluZSAgRlNNQ19TUjNfSUZTICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MDQpICAgICAgICAgICAgICAgLyohPCBJbnRlcnJ1cHQgRmFsbGluZyBFZGdlIHN0YXR1cyAqLworI2RlZmluZSAgRlNNQ19TUjNfSVJFTiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MDgpICAgICAgICAgICAgICAgLyohPCBJbnRlcnJ1cHQgUmlzaW5nIEVkZ2UgZGV0ZWN0aW9uIEVuYWJsZSBiaXQgKi8KKyNkZWZpbmUgIEZTTUNfU1IzX0lMRU4gICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDEwKSAgICAgICAgICAgICAgIC8qITwgSW50ZXJydXB0IExldmVsIGRldGVjdGlvbiBFbmFibGUgYml0ICovCisjZGVmaW5lICBGU01DX1NSM19JRkVOICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgyMCkgICAgICAgICAgICAgICAvKiE8IEludGVycnVwdCBGYWxsaW5nIEVkZ2UgZGV0ZWN0aW9uIEVuYWJsZSBiaXQgKi8KKyNkZWZpbmUgIEZTTUNfU1IzX0ZFTVBUICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDQwKSAgICAgICAgICAgICAgIC8qITwgRklGTyBlbXB0eSAqLworCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIEZTTUNfU1I0IHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgRlNNQ19TUjRfSVJTICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MDEpICAgICAgICAgICAgICAgLyohPCBJbnRlcnJ1cHQgUmlzaW5nIEVkZ2Ugc3RhdHVzICovCisjZGVmaW5lICBGU01DX1NSNF9JTFMgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwMikgICAgICAgICAgICAgICAvKiE8IEludGVycnVwdCBMZXZlbCBzdGF0dXMgKi8KKyNkZWZpbmUgIEZTTUNfU1I0X0lGUyAgICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDA0KSAgICAgICAgICAgICAgIC8qITwgSW50ZXJydXB0IEZhbGxpbmcgRWRnZSBzdGF0dXMgKi8KKyNkZWZpbmUgIEZTTUNfU1I0X0lSRU4gICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDA4KSAgICAgICAgICAgICAgIC8qITwgSW50ZXJydXB0IFJpc2luZyBFZGdlIGRldGVjdGlvbiBFbmFibGUgYml0ICovCisjZGVmaW5lICBGU01DX1NSNF9JTEVOICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgxMCkgICAgICAgICAgICAgICAvKiE8IEludGVycnVwdCBMZXZlbCBkZXRlY3Rpb24gRW5hYmxlIGJpdCAqLworI2RlZmluZSAgRlNNQ19TUjRfSUZFTiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MjApICAgICAgICAgICAgICAgLyohPCBJbnRlcnJ1cHQgRmFsbGluZyBFZGdlIGRldGVjdGlvbiBFbmFibGUgYml0ICovCisjZGVmaW5lICBGU01DX1NSNF9GRU1QVCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHg0MCkgICAgICAgICAgICAgICAvKiE8IEZJRk8gZW1wdHkgKi8KKworLyoqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIEZTTUNfUE1FTTIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIEZTTUNfUE1FTTJfTUVNU0VUMiAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDBGRikgICAgICAgIC8qITwgTUVNU0VUMls3OjBdIGJpdHMgKENvbW1vbiBtZW1vcnkgMiBzZXR1cCB0aW1lKSAqLworI2RlZmluZSAgRlNNQ19QTUVNMl9NRU1TRVQyXzAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxKSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgRlNNQ19QTUVNMl9NRU1TRVQyXzEgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAyKSAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgRlNNQ19QTUVNMl9NRU1TRVQyXzIgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgICAgICAgLyohPCBCaXQgMiAqLworI2RlZmluZSAgRlNNQ19QTUVNMl9NRU1TRVQyXzMgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA4KSAgICAgICAgLyohPCBCaXQgMyAqLworI2RlZmluZSAgRlNNQ19QTUVNMl9NRU1TRVQyXzQgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDEwKSAgICAgICAgLyohPCBCaXQgNCAqLworI2RlZmluZSAgRlNNQ19QTUVNMl9NRU1TRVQyXzUgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKSAgICAgICAgLyohPCBCaXQgNSAqLworI2RlZmluZSAgRlNNQ19QTUVNMl9NRU1TRVQyXzYgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDQwKSAgICAgICAgLyohPCBCaXQgNiAqLworI2RlZmluZSAgRlNNQ19QTUVNMl9NRU1TRVQyXzcgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDgwKSAgICAgICAgLyohPCBCaXQgNyAqLworCisjZGVmaW5lICBGU01DX1BNRU0yX01FTVdBSVQyICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMEZGMDApICAgICAgICAvKiE8IE1FTVdBSVQyWzc6MF0gYml0cyAoQ29tbW9uIG1lbW9yeSAyIHdhaXQgdGltZSkgKi8KKyNkZWZpbmUgIEZTTUNfUE1FTTJfTUVNV0FJVDJfMCAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDEwMCkgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIEZTTUNfUE1FTTJfTUVNV0FJVDJfMSAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkgICAgICAgIC8qITwgQml0IDEgKi8KKyNkZWZpbmUgIEZTTUNfUE1FTTJfTUVNV0FJVDJfMiAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDQwMCkgICAgICAgIC8qITwgQml0IDIgKi8KKyNkZWZpbmUgIEZTTUNfUE1FTTJfTUVNV0FJVDJfMyAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgICAgICAgIC8qITwgQml0IDMgKi8KKyNkZWZpbmUgIEZTTUNfUE1FTTJfTUVNV0FJVDJfNCAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMTAwMCkgICAgICAgIC8qITwgQml0IDQgKi8KKyNkZWZpbmUgIEZTTUNfUE1FTTJfTUVNV0FJVDJfNSAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMjAwMCkgICAgICAgIC8qITwgQml0IDUgKi8KKyNkZWZpbmUgIEZTTUNfUE1FTTJfTUVNV0FJVDJfNiAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgICAgICAgIC8qITwgQml0IDYgKi8KKyNkZWZpbmUgIEZTTUNfUE1FTTJfTUVNV0FJVDJfNyAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwODAwMCkgICAgICAgIC8qITwgQml0IDcgKi8KKworI2RlZmluZSAgRlNNQ19QTUVNMl9NRU1IT0xEMiAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwRkYwMDAwKSAgICAgICAgLyohPCBNRU1IT0xEMls3OjBdIGJpdHMgKENvbW1vbiBtZW1vcnkgMiBob2xkIHRpbWUpICovCisjZGVmaW5lICBGU01DX1BNRU0yX01FTUhPTEQyXzAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMTAwMDApICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBGU01DX1BNRU0yX01FTUhPTEQyXzEgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMjAwMDApICAgICAgICAvKiE8IEJpdCAxICovCisjZGVmaW5lICBGU01DX1BNRU0yX01FTUhPTEQyXzIgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwNDAwMDApICAgICAgICAvKiE8IEJpdCAyICovCisjZGVmaW5lICBGU01DX1BNRU0yX01FTUhPTEQyXzMgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAgICAgICAvKiE8IEJpdCAzICovCisjZGVmaW5lICBGU01DX1BNRU0yX01FTUhPTEQyXzQgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAxMDAwMDApICAgICAgICAvKiE8IEJpdCA0ICovCisjZGVmaW5lICBGU01DX1BNRU0yX01FTUhPTEQyXzUgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAyMDAwMDApICAgICAgICAvKiE8IEJpdCA1ICovCisjZGVmaW5lICBGU01DX1BNRU0yX01FTUhPTEQyXzYgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApICAgICAgICAvKiE8IEJpdCA2ICovCisjZGVmaW5lICBGU01DX1BNRU0yX01FTUhPTEQyXzcgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA4MDAwMDApICAgICAgICAvKiE8IEJpdCA3ICovCisKKyNkZWZpbmUgIEZTTUNfUE1FTTJfTUVNSElaMiAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHhGRjAwMDAwMCkgICAgICAgIC8qITwgTUVNSElaMls3OjBdIGJpdHMgKENvbW1vbiBtZW1vcnkgMiBkYXRhYnVzIEhpWiB0aW1lKSAqLworI2RlZmluZSAgRlNNQ19QTUVNMl9NRU1ISVoyXzAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAxMDAwMDAwKSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgRlNNQ19QTUVNMl9NRU1ISVoyXzEgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAyMDAwMDAwKSAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgRlNNQ19QTUVNMl9NRU1ISVoyXzIgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA0MDAwMDAwKSAgICAgICAgLyohPCBCaXQgMiAqLworI2RlZmluZSAgRlNNQ19QTUVNMl9NRU1ISVoyXzMgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA4MDAwMDAwKSAgICAgICAgLyohPCBCaXQgMyAqLworI2RlZmluZSAgRlNNQ19QTUVNMl9NRU1ISVoyXzQgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDEwMDAwMDAwKSAgICAgICAgLyohPCBCaXQgNCAqLworI2RlZmluZSAgRlNNQ19QTUVNMl9NRU1ISVoyXzUgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDIwMDAwMDAwKSAgICAgICAgLyohPCBCaXQgNSAqLworI2RlZmluZSAgRlNNQ19QTUVNMl9NRU1ISVoyXzYgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDQwMDAwMDAwKSAgICAgICAgLyohPCBCaXQgNiAqLworI2RlZmluZSAgRlNNQ19QTUVNMl9NRU1ISVoyXzcgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDgwMDAwMDAwKSAgICAgICAgLyohPCBCaXQgNyAqLworCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgRlNNQ19QTUVNMyByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgRlNNQ19QTUVNM19NRU1TRVQzICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMEZGKSAgICAgICAgLyohPCBNRU1TRVQzWzc6MF0gYml0cyAoQ29tbW9uIG1lbW9yeSAzIHNldHVwIHRpbWUpICovCisjZGVmaW5lICBGU01DX1BNRU0zX01FTVNFVDNfMCAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDEpICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBGU01DX1BNRU0zX01FTVNFVDNfMSAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IEJpdCAxICovCisjZGVmaW5lICBGU01DX1BNRU0zX01FTVNFVDNfMiAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDQpICAgICAgICAvKiE8IEJpdCAyICovCisjZGVmaW5lICBGU01DX1BNRU0zX01FTVNFVDNfMyAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDgpICAgICAgICAvKiE8IEJpdCAzICovCisjZGVmaW5lICBGU01DX1BNRU0zX01FTVNFVDNfNCAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAgICAgICAvKiE8IEJpdCA0ICovCisjZGVmaW5lICBGU01DX1BNRU0zX01FTVNFVDNfNSAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMjApICAgICAgICAvKiE8IEJpdCA1ICovCisjZGVmaW5lICBGU01DX1BNRU0zX01FTVNFVDNfNiAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwNDApICAgICAgICAvKiE8IEJpdCA2ICovCisjZGVmaW5lICBGU01DX1BNRU0zX01FTVNFVDNfNyAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApICAgICAgICAvKiE8IEJpdCA3ICovCisKKyNkZWZpbmUgIEZTTUNfUE1FTTNfTUVNV0FJVDMgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwRkYwMCkgICAgICAgIC8qITwgTUVNV0FJVDNbNzowXSBiaXRzIChDb21tb24gbWVtb3J5IDMgd2FpdCB0aW1lKSAqLworI2RlZmluZSAgRlNNQ19QTUVNM19NRU1XQUlUM18wICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgRlNNQ19QTUVNM19NRU1XQUlUM18xICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMjAwKSAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgRlNNQ19QTUVNM19NRU1XQUlUM18yICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwNDAwKSAgICAgICAgLyohPCBCaXQgMiAqLworI2RlZmluZSAgRlNNQ19QTUVNM19NRU1XQUlUM18zICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwODAwKSAgICAgICAgLyohPCBCaXQgMyAqLworI2RlZmluZSAgRlNNQ19QTUVNM19NRU1XQUlUM180ICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKSAgICAgICAgLyohPCBCaXQgNCAqLworI2RlZmluZSAgRlNNQ19QTUVNM19NRU1XQUlUM181ICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAyMDAwKSAgICAgICAgLyohPCBCaXQgNSAqLworI2RlZmluZSAgRlNNQ19QTUVNM19NRU1XQUlUM182ICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA0MDAwKSAgICAgICAgLyohPCBCaXQgNiAqLworI2RlZmluZSAgRlNNQ19QTUVNM19NRU1XQUlUM183ICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKSAgICAgICAgLyohPCBCaXQgNyAqLworCisjZGVmaW5lICBGU01DX1BNRU0zX01FTUhPTEQzICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDBGRjAwMDApICAgICAgICAvKiE8IE1FTUhPTEQzWzc6MF0gYml0cyAoQ29tbW9uIG1lbW9yeSAzIGhvbGQgdGltZSkgKi8KKyNkZWZpbmUgIEZTTUNfUE1FTTNfTUVNSE9MRDNfMCAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAxMDAwMCkgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIEZTTUNfUE1FTTNfTUVNSE9MRDNfMSAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkgICAgICAgIC8qITwgQml0IDEgKi8KKyNkZWZpbmUgIEZTTUNfUE1FTTNfTUVNSE9MRDNfMiAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA0MDAwMCkgICAgICAgIC8qITwgQml0IDIgKi8KKyNkZWZpbmUgIEZTTUNfUE1FTTNfTUVNSE9MRDNfMyAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA4MDAwMCkgICAgICAgIC8qITwgQml0IDMgKi8KKyNkZWZpbmUgIEZTTUNfUE1FTTNfTUVNSE9MRDNfNCAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDEwMDAwMCkgICAgICAgIC8qITwgQml0IDQgKi8KKyNkZWZpbmUgIEZTTUNfUE1FTTNfTUVNSE9MRDNfNSAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDIwMDAwMCkgICAgICAgIC8qITwgQml0IDUgKi8KKyNkZWZpbmUgIEZTTUNfUE1FTTNfTUVNSE9MRDNfNiAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDQwMDAwMCkgICAgICAgIC8qITwgQml0IDYgKi8KKyNkZWZpbmUgIEZTTUNfUE1FTTNfTUVNSE9MRDNfNyAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDgwMDAwMCkgICAgICAgIC8qITwgQml0IDcgKi8KKworI2RlZmluZSAgRlNNQ19QTUVNM19NRU1ISVozICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGMDAwMDAwKSAgICAgICAgLyohPCBNRU1ISVozWzc6MF0gYml0cyAoQ29tbW9uIG1lbW9yeSAzIGRhdGFidXMgSGlaIHRpbWUpICovCisjZGVmaW5lICBGU01DX1BNRU0zX01FTUhJWjNfMCAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDEwMDAwMDApICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBGU01DX1BNRU0zX01FTUhJWjNfMSAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDIwMDAwMDApICAgICAgICAvKiE8IEJpdCAxICovCisjZGVmaW5lICBGU01DX1BNRU0zX01FTUhJWjNfMiAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDQwMDAwMDApICAgICAgICAvKiE8IEJpdCAyICovCisjZGVmaW5lICBGU01DX1BNRU0zX01FTUhJWjNfMyAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDgwMDAwMDApICAgICAgICAvKiE8IEJpdCAzICovCisjZGVmaW5lICBGU01DX1BNRU0zX01FTUhJWjNfNCAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwMDApICAgICAgICAvKiE8IEJpdCA0ICovCisjZGVmaW5lICBGU01DX1BNRU0zX01FTUhJWjNfNSAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MjAwMDAwMDApICAgICAgICAvKiE8IEJpdCA1ICovCisjZGVmaW5lICBGU01DX1BNRU0zX01FTUhJWjNfNiAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4NDAwMDAwMDApICAgICAgICAvKiE8IEJpdCA2ICovCisjZGVmaW5lICBGU01DX1BNRU0zX01FTUhJWjNfNyAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4ODAwMDAwMDApICAgICAgICAvKiE8IEJpdCA3ICovCisKKy8qKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBGU01DX1BNRU00IHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBGU01DX1BNRU00X01FTVNFVDQgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwRkYpICAgICAgICAvKiE8IE1FTVNFVDRbNzowXSBiaXRzIChDb21tb24gbWVtb3J5IDQgc2V0dXAgdGltZSkgKi8KKyNkZWZpbmUgIEZTTUNfUE1FTTRfTUVNU0VUNF8wICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIEZTTUNfUE1FTTRfTUVNU0VUNF8xICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMikgICAgICAgIC8qITwgQml0IDEgKi8KKyNkZWZpbmUgIEZTTUNfUE1FTTRfTUVNU0VUNF8yICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNCkgICAgICAgIC8qITwgQml0IDIgKi8KKyNkZWZpbmUgIEZTTUNfUE1FTTRfTUVNU0VUNF8zICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgICAgICAgIC8qITwgQml0IDMgKi8KKyNkZWZpbmUgIEZTTUNfUE1FTTRfTUVNU0VUNF80ICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAxMCkgICAgICAgIC8qITwgQml0IDQgKi8KKyNkZWZpbmUgIEZTTUNfUE1FTTRfTUVNU0VUNF81ICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAyMCkgICAgICAgIC8qITwgQml0IDUgKi8KKyNkZWZpbmUgIEZTTUNfUE1FTTRfTUVNU0VUNF82ICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgICAgICAgIC8qITwgQml0IDYgKi8KKyNkZWZpbmUgIEZTTUNfUE1FTTRfTUVNU0VUNF83ICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA4MCkgICAgICAgIC8qITwgQml0IDcgKi8KKworI2RlZmluZSAgRlNNQ19QTUVNNF9NRU1XQUlUNCAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDBGRjAwKSAgICAgICAgLyohPCBNRU1XQUlUNFs3OjBdIGJpdHMgKENvbW1vbiBtZW1vcnkgNCB3YWl0IHRpbWUpICovCisjZGVmaW5lICBGU01DX1BNRU00X01FTVdBSVQ0XzAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAxMDApICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBGU01DX1BNRU00X01FTVdBSVQ0XzEgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAyMDApICAgICAgICAvKiE8IEJpdCAxICovCisjZGVmaW5lICBGU01DX1BNRU00X01FTVdBSVQ0XzIgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApICAgICAgICAvKiE8IEJpdCAyICovCisjZGVmaW5lICBGU01DX1BNRU00X01FTVdBSVQ0XzMgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA4MDApICAgICAgICAvKiE8IEJpdCAzICovCisjZGVmaW5lICBGU01DX1BNRU00X01FTVdBSVQ0XzQgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDEwMDApICAgICAgICAvKiE8IEJpdCA0ICovCisjZGVmaW5lICBGU01DX1BNRU00X01FTVdBSVQ0XzUgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAgICAgICAvKiE8IEJpdCA1ICovCisjZGVmaW5lICBGU01DX1BNRU00X01FTVdBSVQ0XzYgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDQwMDApICAgICAgICAvKiE8IEJpdCA2ICovCisjZGVmaW5lICBGU01DX1BNRU00X01FTVdBSVQ0XzcgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDgwMDApICAgICAgICAvKiE8IEJpdCA3ICovCisKKyNkZWZpbmUgIEZTTUNfUE1FTTRfTUVNSE9MRDQgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMEZGMDAwMCkgICAgICAgIC8qITwgTUVNSE9MRDRbNzowXSBiaXRzIChDb21tb24gbWVtb3J5IDQgaG9sZCB0aW1lKSAqLworI2RlZmluZSAgRlNNQ19QTUVNNF9NRU1IT0xENF8wICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDEwMDAwKSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgRlNNQ19QTUVNNF9NRU1IT0xENF8xICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDIwMDAwKSAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgRlNNQ19QTUVNNF9NRU1IT0xENF8yICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDQwMDAwKSAgICAgICAgLyohPCBCaXQgMiAqLworI2RlZmluZSAgRlNNQ19QTUVNNF9NRU1IT0xENF8zICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDgwMDAwKSAgICAgICAgLyohPCBCaXQgMyAqLworI2RlZmluZSAgRlNNQ19QTUVNNF9NRU1IT0xENF80ICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMTAwMDAwKSAgICAgICAgLyohPCBCaXQgNCAqLworI2RlZmluZSAgRlNNQ19QTUVNNF9NRU1IT0xENF81ICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMjAwMDAwKSAgICAgICAgLyohPCBCaXQgNSAqLworI2RlZmluZSAgRlNNQ19QTUVNNF9NRU1IT0xENF82ICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwNDAwMDAwKSAgICAgICAgLyohPCBCaXQgNiAqLworI2RlZmluZSAgRlNNQ19QTUVNNF9NRU1IT0xENF83ICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwODAwMDAwKSAgICAgICAgLyohPCBCaXQgNyAqLworCisjZGVmaW5lICBGU01DX1BNRU00X01FTUhJWjQgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4RkYwMDAwMDApICAgICAgICAvKiE8IE1FTUhJWjRbNzowXSBiaXRzIChDb21tb24gbWVtb3J5IDQgZGF0YWJ1cyBIaVogdGltZSkgKi8KKyNkZWZpbmUgIEZTTUNfUE1FTTRfTUVNSElaNF8wICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMTAwMDAwMCkgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIEZTTUNfUE1FTTRfTUVNSElaNF8xICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMjAwMDAwMCkgICAgICAgIC8qITwgQml0IDEgKi8KKyNkZWZpbmUgIEZTTUNfUE1FTTRfTUVNSElaNF8yICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwNDAwMDAwMCkgICAgICAgIC8qITwgQml0IDIgKi8KKyNkZWZpbmUgIEZTTUNfUE1FTTRfTUVNSElaNF8zICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwODAwMDAwMCkgICAgICAgIC8qITwgQml0IDMgKi8KKyNkZWZpbmUgIEZTTUNfUE1FTTRfTUVNSElaNF80ICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgxMDAwMDAwMCkgICAgICAgIC8qITwgQml0IDQgKi8KKyNkZWZpbmUgIEZTTUNfUE1FTTRfTUVNSElaNF81ICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgyMDAwMDAwMCkgICAgICAgIC8qITwgQml0IDUgKi8KKyNkZWZpbmUgIEZTTUNfUE1FTTRfTUVNSElaNF82ICAgICAgICAgICAgICAgICgodWludDMyX3QpMHg0MDAwMDAwMCkgICAgICAgIC8qITwgQml0IDYgKi8KKyNkZWZpbmUgIEZTTUNfUE1FTTRfTUVNSElaNF83ICAgICAgICAgICAgICAgICgodWludDMyX3QpMHg4MDAwMDAwMCkgICAgICAgIC8qITwgQml0IDcgKi8KKworLyoqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIEZTTUNfUEFUVDIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIEZTTUNfUEFUVDJfQVRUU0VUMiAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDBGRikgICAgICAgIC8qITwgQVRUU0VUMls3OjBdIGJpdHMgKEF0dHJpYnV0ZSBtZW1vcnkgMiBzZXR1cCB0aW1lKSAqLworI2RlZmluZSAgRlNNQ19QQVRUMl9BVFRTRVQyXzAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxKSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgRlNNQ19QQVRUMl9BVFRTRVQyXzEgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAyKSAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgRlNNQ19QQVRUMl9BVFRTRVQyXzIgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgICAgICAgLyohPCBCaXQgMiAqLworI2RlZmluZSAgRlNNQ19QQVRUMl9BVFRTRVQyXzMgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA4KSAgICAgICAgLyohPCBCaXQgMyAqLworI2RlZmluZSAgRlNNQ19QQVRUMl9BVFRTRVQyXzQgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDEwKSAgICAgICAgLyohPCBCaXQgNCAqLworI2RlZmluZSAgRlNNQ19QQVRUMl9BVFRTRVQyXzUgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKSAgICAgICAgLyohPCBCaXQgNSAqLworI2RlZmluZSAgRlNNQ19QQVRUMl9BVFRTRVQyXzYgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDQwKSAgICAgICAgLyohPCBCaXQgNiAqLworI2RlZmluZSAgRlNNQ19QQVRUMl9BVFRTRVQyXzcgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDgwKSAgICAgICAgLyohPCBCaXQgNyAqLworCisjZGVmaW5lICBGU01DX1BBVFQyX0FUVFdBSVQyICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMEZGMDApICAgICAgICAvKiE8IEFUVFdBSVQyWzc6MF0gYml0cyAoQXR0cmlidXRlIG1lbW9yeSAyIHdhaXQgdGltZSkgKi8KKyNkZWZpbmUgIEZTTUNfUEFUVDJfQVRUV0FJVDJfMCAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDEwMCkgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIEZTTUNfUEFUVDJfQVRUV0FJVDJfMSAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkgICAgICAgIC8qITwgQml0IDEgKi8KKyNkZWZpbmUgIEZTTUNfUEFUVDJfQVRUV0FJVDJfMiAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDQwMCkgICAgICAgIC8qITwgQml0IDIgKi8KKyNkZWZpbmUgIEZTTUNfUEFUVDJfQVRUV0FJVDJfMyAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgICAgICAgIC8qITwgQml0IDMgKi8KKyNkZWZpbmUgIEZTTUNfUEFUVDJfQVRUV0FJVDJfNCAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMTAwMCkgICAgICAgIC8qITwgQml0IDQgKi8KKyNkZWZpbmUgIEZTTUNfUEFUVDJfQVRUV0FJVDJfNSAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMjAwMCkgICAgICAgIC8qITwgQml0IDUgKi8KKyNkZWZpbmUgIEZTTUNfUEFUVDJfQVRUV0FJVDJfNiAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgICAgICAgIC8qITwgQml0IDYgKi8KKyNkZWZpbmUgIEZTTUNfUEFUVDJfQVRUV0FJVDJfNyAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwODAwMCkgICAgICAgIC8qITwgQml0IDcgKi8KKworI2RlZmluZSAgRlNNQ19QQVRUMl9BVFRIT0xEMiAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwRkYwMDAwKSAgICAgICAgLyohPCBBVFRIT0xEMls3OjBdIGJpdHMgKEF0dHJpYnV0ZSBtZW1vcnkgMiBob2xkIHRpbWUpICovCisjZGVmaW5lICBGU01DX1BBVFQyX0FUVEhPTEQyXzAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMTAwMDApICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBGU01DX1BBVFQyX0FUVEhPTEQyXzEgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMjAwMDApICAgICAgICAvKiE8IEJpdCAxICovCisjZGVmaW5lICBGU01DX1BBVFQyX0FUVEhPTEQyXzIgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwNDAwMDApICAgICAgICAvKiE8IEJpdCAyICovCisjZGVmaW5lICBGU01DX1BBVFQyX0FUVEhPTEQyXzMgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAgICAgICAvKiE8IEJpdCAzICovCisjZGVmaW5lICBGU01DX1BBVFQyX0FUVEhPTEQyXzQgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAxMDAwMDApICAgICAgICAvKiE8IEJpdCA0ICovCisjZGVmaW5lICBGU01DX1BBVFQyX0FUVEhPTEQyXzUgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAyMDAwMDApICAgICAgICAvKiE8IEJpdCA1ICovCisjZGVmaW5lICBGU01DX1BBVFQyX0FUVEhPTEQyXzYgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApICAgICAgICAvKiE8IEJpdCA2ICovCisjZGVmaW5lICBGU01DX1BBVFQyX0FUVEhPTEQyXzcgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA4MDAwMDApICAgICAgICAvKiE8IEJpdCA3ICovCisKKyNkZWZpbmUgIEZTTUNfUEFUVDJfQVRUSElaMiAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHhGRjAwMDAwMCkgICAgICAgIC8qITwgQVRUSElaMls3OjBdIGJpdHMgKEF0dHJpYnV0ZSBtZW1vcnkgMiBkYXRhYnVzIEhpWiB0aW1lKSAqLworI2RlZmluZSAgRlNNQ19QQVRUMl9BVFRISVoyXzAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAxMDAwMDAwKSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgRlNNQ19QQVRUMl9BVFRISVoyXzEgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAyMDAwMDAwKSAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgRlNNQ19QQVRUMl9BVFRISVoyXzIgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA0MDAwMDAwKSAgICAgICAgLyohPCBCaXQgMiAqLworI2RlZmluZSAgRlNNQ19QQVRUMl9BVFRISVoyXzMgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA4MDAwMDAwKSAgICAgICAgLyohPCBCaXQgMyAqLworI2RlZmluZSAgRlNNQ19QQVRUMl9BVFRISVoyXzQgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDEwMDAwMDAwKSAgICAgICAgLyohPCBCaXQgNCAqLworI2RlZmluZSAgRlNNQ19QQVRUMl9BVFRISVoyXzUgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDIwMDAwMDAwKSAgICAgICAgLyohPCBCaXQgNSAqLworI2RlZmluZSAgRlNNQ19QQVRUMl9BVFRISVoyXzYgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDQwMDAwMDAwKSAgICAgICAgLyohPCBCaXQgNiAqLworI2RlZmluZSAgRlNNQ19QQVRUMl9BVFRISVoyXzcgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDgwMDAwMDAwKSAgICAgICAgLyohPCBCaXQgNyAqLworCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgRlNNQ19QQVRUMyByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgRlNNQ19QQVRUM19BVFRTRVQzICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMEZGKSAgICAgICAgLyohPCBBVFRTRVQzWzc6MF0gYml0cyAoQXR0cmlidXRlIG1lbW9yeSAzIHNldHVwIHRpbWUpICovCisjZGVmaW5lICBGU01DX1BBVFQzX0FUVFNFVDNfMCAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDEpICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBGU01DX1BBVFQzX0FUVFNFVDNfMSAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IEJpdCAxICovCisjZGVmaW5lICBGU01DX1BBVFQzX0FUVFNFVDNfMiAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDQpICAgICAgICAvKiE8IEJpdCAyICovCisjZGVmaW5lICBGU01DX1BBVFQzX0FUVFNFVDNfMyAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDgpICAgICAgICAvKiE8IEJpdCAzICovCisjZGVmaW5lICBGU01DX1BBVFQzX0FUVFNFVDNfNCAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAgICAgICAvKiE8IEJpdCA0ICovCisjZGVmaW5lICBGU01DX1BBVFQzX0FUVFNFVDNfNSAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMjApICAgICAgICAvKiE8IEJpdCA1ICovCisjZGVmaW5lICBGU01DX1BBVFQzX0FUVFNFVDNfNiAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwNDApICAgICAgICAvKiE8IEJpdCA2ICovCisjZGVmaW5lICBGU01DX1BBVFQzX0FUVFNFVDNfNyAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApICAgICAgICAvKiE8IEJpdCA3ICovCisKKyNkZWZpbmUgIEZTTUNfUEFUVDNfQVRUV0FJVDMgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwRkYwMCkgICAgICAgIC8qITwgQVRUV0FJVDNbNzowXSBiaXRzIChBdHRyaWJ1dGUgbWVtb3J5IDMgd2FpdCB0aW1lKSAqLworI2RlZmluZSAgRlNNQ19QQVRUM19BVFRXQUlUM18wICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgRlNNQ19QQVRUM19BVFRXQUlUM18xICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMjAwKSAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgRlNNQ19QQVRUM19BVFRXQUlUM18yICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwNDAwKSAgICAgICAgLyohPCBCaXQgMiAqLworI2RlZmluZSAgRlNNQ19QQVRUM19BVFRXQUlUM18zICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwODAwKSAgICAgICAgLyohPCBCaXQgMyAqLworI2RlZmluZSAgRlNNQ19QQVRUM19BVFRXQUlUM180ICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKSAgICAgICAgLyohPCBCaXQgNCAqLworI2RlZmluZSAgRlNNQ19QQVRUM19BVFRXQUlUM181ICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAyMDAwKSAgICAgICAgLyohPCBCaXQgNSAqLworI2RlZmluZSAgRlNNQ19QQVRUM19BVFRXQUlUM182ICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA0MDAwKSAgICAgICAgLyohPCBCaXQgNiAqLworI2RlZmluZSAgRlNNQ19QQVRUM19BVFRXQUlUM183ICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKSAgICAgICAgLyohPCBCaXQgNyAqLworCisjZGVmaW5lICBGU01DX1BBVFQzX0FUVEhPTEQzICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDBGRjAwMDApICAgICAgICAvKiE8IEFUVEhPTEQzWzc6MF0gYml0cyAoQXR0cmlidXRlIG1lbW9yeSAzIGhvbGQgdGltZSkgKi8KKyNkZWZpbmUgIEZTTUNfUEFUVDNfQVRUSE9MRDNfMCAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAxMDAwMCkgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIEZTTUNfUEFUVDNfQVRUSE9MRDNfMSAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkgICAgICAgIC8qITwgQml0IDEgKi8KKyNkZWZpbmUgIEZTTUNfUEFUVDNfQVRUSE9MRDNfMiAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA0MDAwMCkgICAgICAgIC8qITwgQml0IDIgKi8KKyNkZWZpbmUgIEZTTUNfUEFUVDNfQVRUSE9MRDNfMyAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA4MDAwMCkgICAgICAgIC8qITwgQml0IDMgKi8KKyNkZWZpbmUgIEZTTUNfUEFUVDNfQVRUSE9MRDNfNCAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDEwMDAwMCkgICAgICAgIC8qITwgQml0IDQgKi8KKyNkZWZpbmUgIEZTTUNfUEFUVDNfQVRUSE9MRDNfNSAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDIwMDAwMCkgICAgICAgIC8qITwgQml0IDUgKi8KKyNkZWZpbmUgIEZTTUNfUEFUVDNfQVRUSE9MRDNfNiAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDQwMDAwMCkgICAgICAgIC8qITwgQml0IDYgKi8KKyNkZWZpbmUgIEZTTUNfUEFUVDNfQVRUSE9MRDNfNyAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDgwMDAwMCkgICAgICAgIC8qITwgQml0IDcgKi8KKworI2RlZmluZSAgRlNNQ19QQVRUM19BVFRISVozICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGMDAwMDAwKSAgICAgICAgLyohPCBBVFRISVozWzc6MF0gYml0cyAoQXR0cmlidXRlIG1lbW9yeSAzIGRhdGFidXMgSGlaIHRpbWUpICovCisjZGVmaW5lICBGU01DX1BBVFQzX0FUVEhJWjNfMCAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDEwMDAwMDApICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBGU01DX1BBVFQzX0FUVEhJWjNfMSAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDIwMDAwMDApICAgICAgICAvKiE8IEJpdCAxICovCisjZGVmaW5lICBGU01DX1BBVFQzX0FUVEhJWjNfMiAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDQwMDAwMDApICAgICAgICAvKiE8IEJpdCAyICovCisjZGVmaW5lICBGU01DX1BBVFQzX0FUVEhJWjNfMyAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDgwMDAwMDApICAgICAgICAvKiE8IEJpdCAzICovCisjZGVmaW5lICBGU01DX1BBVFQzX0FUVEhJWjNfNCAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwMDApICAgICAgICAvKiE8IEJpdCA0ICovCisjZGVmaW5lICBGU01DX1BBVFQzX0FUVEhJWjNfNSAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MjAwMDAwMDApICAgICAgICAvKiE8IEJpdCA1ICovCisjZGVmaW5lICBGU01DX1BBVFQzX0FUVEhJWjNfNiAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4NDAwMDAwMDApICAgICAgICAvKiE8IEJpdCA2ICovCisjZGVmaW5lICBGU01DX1BBVFQzX0FUVEhJWjNfNyAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4ODAwMDAwMDApICAgICAgICAvKiE8IEJpdCA3ICovCisKKy8qKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBGU01DX1BBVFQ0IHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBGU01DX1BBVFQ0X0FUVFNFVDQgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwRkYpICAgICAgICAvKiE8IEFUVFNFVDRbNzowXSBiaXRzIChBdHRyaWJ1dGUgbWVtb3J5IDQgc2V0dXAgdGltZSkgKi8KKyNkZWZpbmUgIEZTTUNfUEFUVDRfQVRUU0VUNF8wICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIEZTTUNfUEFUVDRfQVRUU0VUNF8xICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMikgICAgICAgIC8qITwgQml0IDEgKi8KKyNkZWZpbmUgIEZTTUNfUEFUVDRfQVRUU0VUNF8yICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNCkgICAgICAgIC8qITwgQml0IDIgKi8KKyNkZWZpbmUgIEZTTUNfUEFUVDRfQVRUU0VUNF8zICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgICAgICAgIC8qITwgQml0IDMgKi8KKyNkZWZpbmUgIEZTTUNfUEFUVDRfQVRUU0VUNF80ICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAxMCkgICAgICAgIC8qITwgQml0IDQgKi8KKyNkZWZpbmUgIEZTTUNfUEFUVDRfQVRUU0VUNF81ICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAyMCkgICAgICAgIC8qITwgQml0IDUgKi8KKyNkZWZpbmUgIEZTTUNfUEFUVDRfQVRUU0VUNF82ICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgICAgICAgIC8qITwgQml0IDYgKi8KKyNkZWZpbmUgIEZTTUNfUEFUVDRfQVRUU0VUNF83ICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA4MCkgICAgICAgIC8qITwgQml0IDcgKi8KKworI2RlZmluZSAgRlNNQ19QQVRUNF9BVFRXQUlUNCAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDBGRjAwKSAgICAgICAgLyohPCBBVFRXQUlUNFs3OjBdIGJpdHMgKEF0dHJpYnV0ZSBtZW1vcnkgNCB3YWl0IHRpbWUpICovCisjZGVmaW5lICBGU01DX1BBVFQ0X0FUVFdBSVQ0XzAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAxMDApICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBGU01DX1BBVFQ0X0FUVFdBSVQ0XzEgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAyMDApICAgICAgICAvKiE8IEJpdCAxICovCisjZGVmaW5lICBGU01DX1BBVFQ0X0FUVFdBSVQ0XzIgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApICAgICAgICAvKiE8IEJpdCAyICovCisjZGVmaW5lICBGU01DX1BBVFQ0X0FUVFdBSVQ0XzMgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA4MDApICAgICAgICAvKiE8IEJpdCAzICovCisjZGVmaW5lICBGU01DX1BBVFQ0X0FUVFdBSVQ0XzQgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDEwMDApICAgICAgICAvKiE8IEJpdCA0ICovCisjZGVmaW5lICBGU01DX1BBVFQ0X0FUVFdBSVQ0XzUgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAgICAgICAvKiE8IEJpdCA1ICovCisjZGVmaW5lICBGU01DX1BBVFQ0X0FUVFdBSVQ0XzYgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDQwMDApICAgICAgICAvKiE8IEJpdCA2ICovCisjZGVmaW5lICBGU01DX1BBVFQ0X0FUVFdBSVQ0XzcgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDgwMDApICAgICAgICAvKiE8IEJpdCA3ICovCisKKyNkZWZpbmUgIEZTTUNfUEFUVDRfQVRUSE9MRDQgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMEZGMDAwMCkgICAgICAgIC8qITwgQVRUSE9MRDRbNzowXSBiaXRzIChBdHRyaWJ1dGUgbWVtb3J5IDQgaG9sZCB0aW1lKSAqLworI2RlZmluZSAgRlNNQ19QQVRUNF9BVFRIT0xENF8wICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDEwMDAwKSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgRlNNQ19QQVRUNF9BVFRIT0xENF8xICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDIwMDAwKSAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgRlNNQ19QQVRUNF9BVFRIT0xENF8yICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDQwMDAwKSAgICAgICAgLyohPCBCaXQgMiAqLworI2RlZmluZSAgRlNNQ19QQVRUNF9BVFRIT0xENF8zICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDgwMDAwKSAgICAgICAgLyohPCBCaXQgMyAqLworI2RlZmluZSAgRlNNQ19QQVRUNF9BVFRIT0xENF80ICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMTAwMDAwKSAgICAgICAgLyohPCBCaXQgNCAqLworI2RlZmluZSAgRlNNQ19QQVRUNF9BVFRIT0xENF81ICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMjAwMDAwKSAgICAgICAgLyohPCBCaXQgNSAqLworI2RlZmluZSAgRlNNQ19QQVRUNF9BVFRIT0xENF82ICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwNDAwMDAwKSAgICAgICAgLyohPCBCaXQgNiAqLworI2RlZmluZSAgRlNNQ19QQVRUNF9BVFRIT0xENF83ICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwODAwMDAwKSAgICAgICAgLyohPCBCaXQgNyAqLworCisjZGVmaW5lICBGU01DX1BBVFQ0X0FUVEhJWjQgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4RkYwMDAwMDApICAgICAgICAvKiE8IEFUVEhJWjRbNzowXSBiaXRzIChBdHRyaWJ1dGUgbWVtb3J5IDQgZGF0YWJ1cyBIaVogdGltZSkgKi8KKyNkZWZpbmUgIEZTTUNfUEFUVDRfQVRUSElaNF8wICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMTAwMDAwMCkgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIEZTTUNfUEFUVDRfQVRUSElaNF8xICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMjAwMDAwMCkgICAgICAgIC8qITwgQml0IDEgKi8KKyNkZWZpbmUgIEZTTUNfUEFUVDRfQVRUSElaNF8yICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwNDAwMDAwMCkgICAgICAgIC8qITwgQml0IDIgKi8KKyNkZWZpbmUgIEZTTUNfUEFUVDRfQVRUSElaNF8zICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwODAwMDAwMCkgICAgICAgIC8qITwgQml0IDMgKi8KKyNkZWZpbmUgIEZTTUNfUEFUVDRfQVRUSElaNF80ICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgxMDAwMDAwMCkgICAgICAgIC8qITwgQml0IDQgKi8KKyNkZWZpbmUgIEZTTUNfUEFUVDRfQVRUSElaNF81ICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgyMDAwMDAwMCkgICAgICAgIC8qITwgQml0IDUgKi8KKyNkZWZpbmUgIEZTTUNfUEFUVDRfQVRUSElaNF82ICAgICAgICAgICAgICAgICgodWludDMyX3QpMHg0MDAwMDAwMCkgICAgICAgIC8qITwgQml0IDYgKi8KKyNkZWZpbmUgIEZTTUNfUEFUVDRfQVRUSElaNF83ICAgICAgICAgICAgICAgICgodWludDMyX3QpMHg4MDAwMDAwMCkgICAgICAgIC8qITwgQml0IDcgKi8KKworLyoqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIEZTTUNfUElPNCByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIEZTTUNfUElPNF9JT1NFVDQgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDBGRikgICAgICAgIC8qITwgSU9TRVQ0Wzc6MF0gYml0cyAoSS9PIDQgc2V0dXAgdGltZSkgKi8KKyNkZWZpbmUgIEZTTUNfUElPNF9JT1NFVDRfMCAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIEZTTUNfUElPNF9JT1NFVDRfMSAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMikgICAgICAgIC8qITwgQml0IDEgKi8KKyNkZWZpbmUgIEZTTUNfUElPNF9JT1NFVDRfMiAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNCkgICAgICAgIC8qITwgQml0IDIgKi8KKyNkZWZpbmUgIEZTTUNfUElPNF9JT1NFVDRfMyAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgICAgICAgIC8qITwgQml0IDMgKi8KKyNkZWZpbmUgIEZTTUNfUElPNF9JT1NFVDRfNCAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAxMCkgICAgICAgIC8qITwgQml0IDQgKi8KKyNkZWZpbmUgIEZTTUNfUElPNF9JT1NFVDRfNSAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAyMCkgICAgICAgIC8qITwgQml0IDUgKi8KKyNkZWZpbmUgIEZTTUNfUElPNF9JT1NFVDRfNiAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgICAgICAgIC8qITwgQml0IDYgKi8KKyNkZWZpbmUgIEZTTUNfUElPNF9JT1NFVDRfNyAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA4MCkgICAgICAgIC8qITwgQml0IDcgKi8KKworI2RlZmluZSAgRlNNQ19QSU80X0lPV0FJVDQgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDBGRjAwKSAgICAgICAgLyohPCBJT1dBSVQ0Wzc6MF0gYml0cyAoSS9PIDQgd2FpdCB0aW1lKSAqLworI2RlZmluZSAgRlNNQ19QSU80X0lPV0FJVDRfMCAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgRlNNQ19QSU80X0lPV0FJVDRfMSAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMjAwKSAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgRlNNQ19QSU80X0lPV0FJVDRfMiAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwNDAwKSAgICAgICAgLyohPCBCaXQgMiAqLworI2RlZmluZSAgRlNNQ19QSU80X0lPV0FJVDRfMyAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwODAwKSAgICAgICAgLyohPCBCaXQgMyAqLworI2RlZmluZSAgRlNNQ19QSU80X0lPV0FJVDRfNCAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKSAgICAgICAgLyohPCBCaXQgNCAqLworI2RlZmluZSAgRlNNQ19QSU80X0lPV0FJVDRfNSAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAyMDAwKSAgICAgICAgLyohPCBCaXQgNSAqLworI2RlZmluZSAgRlNNQ19QSU80X0lPV0FJVDRfNiAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA0MDAwKSAgICAgICAgLyohPCBCaXQgNiAqLworI2RlZmluZSAgRlNNQ19QSU80X0lPV0FJVDRfNyAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKSAgICAgICAgLyohPCBCaXQgNyAqLworCisjZGVmaW5lICBGU01DX1BJTzRfSU9IT0xENCAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDBGRjAwMDApICAgICAgICAvKiE8IElPSE9MRDRbNzowXSBiaXRzIChJL08gNCBob2xkIHRpbWUpICovCisjZGVmaW5lICBGU01DX1BJTzRfSU9IT0xENF8wICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMTAwMDApICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBGU01DX1BJTzRfSU9IT0xENF8xICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMjAwMDApICAgICAgICAvKiE8IEJpdCAxICovCisjZGVmaW5lICBGU01DX1BJTzRfSU9IT0xENF8yICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwNDAwMDApICAgICAgICAvKiE8IEJpdCAyICovCisjZGVmaW5lICBGU01DX1BJTzRfSU9IT0xENF8zICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAgICAgICAvKiE8IEJpdCAzICovCisjZGVmaW5lICBGU01DX1BJTzRfSU9IT0xENF80ICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAxMDAwMDApICAgICAgICAvKiE8IEJpdCA0ICovCisjZGVmaW5lICBGU01DX1BJTzRfSU9IT0xENF81ICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAyMDAwMDApICAgICAgICAvKiE8IEJpdCA1ICovCisjZGVmaW5lICBGU01DX1BJTzRfSU9IT0xENF82ICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApICAgICAgICAvKiE8IEJpdCA2ICovCisjZGVmaW5lICBGU01DX1BJTzRfSU9IT0xENF83ICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA4MDAwMDApICAgICAgICAvKiE8IEJpdCA3ICovCisKKyNkZWZpbmUgIEZTTUNfUElPNF9JT0hJWjQgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHhGRjAwMDAwMCkgICAgICAgIC8qITwgSU9ISVo0Wzc6MF0gYml0cyAoSS9PIDQgZGF0YWJ1cyBIaVogdGltZSkgKi8KKyNkZWZpbmUgIEZTTUNfUElPNF9JT0hJWjRfMCAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMTAwMDAwMCkgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIEZTTUNfUElPNF9JT0hJWjRfMSAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMjAwMDAwMCkgICAgICAgIC8qITwgQml0IDEgKi8KKyNkZWZpbmUgIEZTTUNfUElPNF9JT0hJWjRfMiAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwNDAwMDAwMCkgICAgICAgIC8qITwgQml0IDIgKi8KKyNkZWZpbmUgIEZTTUNfUElPNF9JT0hJWjRfMyAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwODAwMDAwMCkgICAgICAgIC8qITwgQml0IDMgKi8KKyNkZWZpbmUgIEZTTUNfUElPNF9JT0hJWjRfNCAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgxMDAwMDAwMCkgICAgICAgIC8qITwgQml0IDQgKi8KKyNkZWZpbmUgIEZTTUNfUElPNF9JT0hJWjRfNSAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgyMDAwMDAwMCkgICAgICAgIC8qITwgQml0IDUgKi8KKyNkZWZpbmUgIEZTTUNfUElPNF9JT0hJWjRfNiAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHg0MDAwMDAwMCkgICAgICAgIC8qITwgQml0IDYgKi8KKyNkZWZpbmUgIEZTTUNfUElPNF9JT0hJWjRfNyAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHg4MDAwMDAwMCkgICAgICAgIC8qITwgQml0IDcgKi8KKworLyoqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIEZTTUNfRUNDUjIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIEZTTUNfRUNDUjJfRUNDMiAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHhGRkZGRkZGRikgICAgICAgIC8qITwgRUNDIHJlc3VsdCAqLworCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgRlNNQ19FQ0NSMyByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgRlNNQ19FQ0NSM19FQ0MzICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGRkZGRkZGKSAgICAgICAgLyohPCBFQ0MgcmVzdWx0ICovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgIFNEIGhvc3QgSW50ZXJmYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgU0RJT19QT1dFUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgU0RJT19QT1dFUl9QV1JDVFJMICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MDMpICAgICAgICAgICAgICAgLyohPCBQV1JDVFJMWzE6MF0gYml0cyAoUG93ZXIgc3VwcGx5IGNvbnRyb2wgYml0cykgKi8KKyNkZWZpbmUgIFNESU9fUE9XRVJfUFdSQ1RSTF8wICAgICAgICAgICAgICAgICgodWludDhfdCkweDAxKSAgICAgICAgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIFNESU9fUE9XRVJfUFdSQ1RSTF8xICAgICAgICAgICAgICAgICgodWludDhfdCkweDAyKSAgICAgICAgICAgICAgIC8qITwgQml0IDEgKi8KKworLyoqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFNESU9fQ0xLQ1IgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIFNESU9fQ0xLQ1JfQ0xLRElWICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMEZGKSAgICAgICAgICAgIC8qITwgQ2xvY2sgZGl2aWRlIGZhY3RvciAqLworI2RlZmluZSAgU0RJT19DTEtDUl9DTEtFTiAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAxMDApICAgICAgICAgICAgLyohPCBDbG9jayBlbmFibGUgYml0ICovCisjZGVmaW5lICBTRElPX0NMS0NSX1BXUlNBViAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDIwMCkgICAgICAgICAgICAvKiE8IFBvd2VyIHNhdmluZyBjb25maWd1cmF0aW9uIGJpdCAqLworI2RlZmluZSAgU0RJT19DTEtDUl9CWVBBU1MgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDA0MDApICAgICAgICAgICAgLyohPCBDbG9jayBkaXZpZGVyIGJ5cGFzcyBlbmFibGUgYml0ICovCisKKyNkZWZpbmUgIFNESU9fQ0xLQ1JfV0lEQlVTICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgxODAwKSAgICAgICAgICAgIC8qITwgV0lEQlVTWzE6MF0gYml0cyAoV2lkZSBidXMgbW9kZSBlbmFibGUgYml0KSAqLworI2RlZmluZSAgU0RJT19DTEtDUl9XSURCVVNfMCAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDA4MDApICAgICAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgU0RJT19DTEtDUl9XSURCVVNfMSAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDEwMDApICAgICAgICAgICAgLyohPCBCaXQgMSAqLworCisjZGVmaW5lICBTRElPX0NMS0NSX05FR0VER0UgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MjAwMCkgICAgICAgICAgICAvKiE8IFNESU9fQ0sgZGVwaGFzaW5nIHNlbGVjdGlvbiBiaXQgKi8KKyNkZWZpbmUgIFNESU9fQ0xLQ1JfSFdGQ19FTiAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHg0MDAwKSAgICAgICAgICAgIC8qITwgSFcgRmxvdyBDb250cm9sIGVuYWJsZSAqLworCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFNESU9fQVJHIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgU0RJT19BUkdfQ01EQVJHICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGRkZGRkZGKSAgICAgICAgICAgIC8qITwgQ29tbWFuZCBhcmd1bWVudCAqLworCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFNESU9fQ01EIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgU0RJT19DTURfQ01ESU5ERVggICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwM0YpICAgICAgICAgICAgLyohPCBDb21tYW5kIEluZGV4ICovCisKKyNkZWZpbmUgIFNESU9fQ01EX1dBSVRSRVNQICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMEMwKSAgICAgICAgICAgIC8qITwgV0FJVFJFU1BbMTowXSBiaXRzIChXYWl0IGZvciByZXNwb25zZSBiaXRzKSAqLworI2RlZmluZSAgU0RJT19DTURfV0FJVFJFU1BfMCAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwNDApICAgICAgICAgICAgLyohPCAgQml0IDAgKi8KKyNkZWZpbmUgIFNESU9fQ01EX1dBSVRSRVNQXzEgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDgwKSAgICAgICAgICAgIC8qITwgIEJpdCAxICovCisKKyNkZWZpbmUgIFNESU9fQ01EX1dBSVRJTlQgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMTAwKSAgICAgICAgICAgIC8qITwgQ1BTTSBXYWl0cyBmb3IgSW50ZXJydXB0IFJlcXVlc3QgKi8KKyNkZWZpbmUgIFNESU9fQ01EX1dBSVRQRU5EICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMjAwKSAgICAgICAgICAgIC8qITwgQ1BTTSBXYWl0cyBmb3IgZW5kcyBvZiBkYXRhIHRyYW5zZmVyIChDbWRQZW5kIGludGVybmFsIHNpZ25hbCkgKi8KKyNkZWZpbmUgIFNESU9fQ01EX0NQU01FTiAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwNDAwKSAgICAgICAgICAgIC8qITwgQ29tbWFuZCBwYXRoIHN0YXRlIG1hY2hpbmUgKENQU00pIEVuYWJsZSBiaXQgKi8KKyNkZWZpbmUgIFNESU9fQ01EX1NESU9TVVNQRU5EICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwODAwKSAgICAgICAgICAgIC8qITwgU0QgSS9PIHN1c3BlbmQgY29tbWFuZCAqLworI2RlZmluZSAgU0RJT19DTURfRU5DTURDT01QTCAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDEwMDApICAgICAgICAgICAgLyohPCBFbmFibGUgQ01EIGNvbXBsZXRpb24gKi8KKyNkZWZpbmUgIFNESU9fQ01EX05JRU4gICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgyMDAwKSAgICAgICAgICAgIC8qITwgTm90IEludGVycnVwdCBFbmFibGUgKi8KKyNkZWZpbmUgIFNESU9fQ01EX0NFQVRBQ01EICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHg0MDAwKSAgICAgICAgICAgIC8qITwgQ0UtQVRBIGNvbW1hbmQgKi8KKworLyoqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgU0RJT19SRVNQQ01EIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIFNESU9fUkVTUENNRF9SRVNQQ01EICAgICAgICAgICAgICAgICgodWludDhfdCkweDNGKSAgICAgICAgICAgICAgIC8qITwgUmVzcG9uc2UgY29tbWFuZCBpbmRleCAqLworCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgU0RJT19SRVNQMCByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgU0RJT19SRVNQMF9DQVJEU1RBVFVTMCAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGRkZGRkZGKSAgICAgICAgLyohPCBDYXJkIFN0YXR1cyAqLworCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgU0RJT19SRVNQMSByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgU0RJT19SRVNQMV9DQVJEU1RBVFVTMSAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGRkZGRkZGKSAgICAgICAgLyohPCBDYXJkIFN0YXR1cyAqLworCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgU0RJT19SRVNQMiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgU0RJT19SRVNQMl9DQVJEU1RBVFVTMiAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGRkZGRkZGKSAgICAgICAgLyohPCBDYXJkIFN0YXR1cyAqLworCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgU0RJT19SRVNQMyByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgU0RJT19SRVNQM19DQVJEU1RBVFVTMyAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGRkZGRkZGKSAgICAgICAgLyohPCBDYXJkIFN0YXR1cyAqLworCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgU0RJT19SRVNQNCByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgU0RJT19SRVNQNF9DQVJEU1RBVFVTNCAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGRkZGRkZGKSAgICAgICAgLyohPCBDYXJkIFN0YXR1cyAqLworCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgU0RJT19EVElNRVIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqLworI2RlZmluZSAgU0RJT19EVElNRVJfREFUQVRJTUUgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGRkZGRkZGKSAgICAgICAgLyohPCBEYXRhIHRpbWVvdXQgcGVyaW9kLiAqLworCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgU0RJT19ETEVOIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgU0RJT19ETEVOX0RBVEFMRU5HVEggICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAxRkZGRkZGKSAgICAgICAgLyohPCBEYXRhIGxlbmd0aCB2YWx1ZSAqLworCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgU0RJT19EQ1RSTCByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgU0RJT19EQ1RSTF9EVEVOICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDEpICAgICAgICAgICAgLyohPCBEYXRhIHRyYW5zZmVyIGVuYWJsZWQgYml0ICovCisjZGVmaW5lICBTRElPX0RDVFJMX0RURElSICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMikgICAgICAgICAgICAvKiE8IERhdGEgdHJhbnNmZXIgZGlyZWN0aW9uIHNlbGVjdGlvbiAqLworI2RlZmluZSAgU0RJT19EQ1RSTF9EVE1PREUgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDQpICAgICAgICAgICAgLyohPCBEYXRhIHRyYW5zZmVyIG1vZGUgc2VsZWN0aW9uICovCisjZGVmaW5lICBTRElPX0RDVFJMX0RNQUVOICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwOCkgICAgICAgICAgICAvKiE8IERNQSBlbmFibGVkIGJpdCAqLworCisjZGVmaW5lICBTRElPX0RDVFJMX0RCTE9DS1NJWkUgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDBGMCkgICAgICAgICAgICAvKiE8IERCTE9DS1NJWkVbMzowXSBiaXRzIChEYXRhIGJsb2NrIHNpemUpICovCisjZGVmaW5lICBTRElPX0RDVFJMX0RCTE9DS1NJWkVfMCAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAxMCkgICAgICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBTRElPX0RDVFJMX0RCTE9DS1NJWkVfMSAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAyMCkgICAgICAgICAgICAvKiE8IEJpdCAxICovCisjZGVmaW5lICBTRElPX0RDVFJMX0RCTE9DS1NJWkVfMiAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA0MCkgICAgICAgICAgICAvKiE8IEJpdCAyICovCisjZGVmaW5lICBTRElPX0RDVFJMX0RCTE9DS1NJWkVfMyAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA4MCkgICAgICAgICAgICAvKiE8IEJpdCAzICovCisKKyNkZWZpbmUgIFNESU9fRENUUkxfUldTVEFSVCAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMTAwKSAgICAgICAgICAgIC8qITwgUmVhZCB3YWl0IHN0YXJ0ICovCisjZGVmaW5lICBTRElPX0RDVFJMX1JXU1RPUCAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDIwMCkgICAgICAgICAgICAvKiE8IFJlYWQgd2FpdCBzdG9wICovCisjZGVmaW5lICBTRElPX0RDVFJMX1JXTU9EICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDQwMCkgICAgICAgICAgICAvKiE8IFJlYWQgd2FpdCBtb2RlICovCisjZGVmaW5lICBTRElPX0RDVFJMX1NESU9FTiAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDgwMCkgICAgICAgICAgICAvKiE8IFNEIEkvTyBlbmFibGUgZnVuY3Rpb25zICovCisKKy8qKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBTRElPX0RDT1VOVCByZWdpc3RlciAgKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBTRElPX0RDT1VOVF9EQVRBQ09VTlQgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDFGRkZGRkYpICAgICAgICAvKiE8IERhdGEgY291bnQgdmFsdWUgKi8KKworLyoqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFNESU9fU1RBIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIFNESU9fU1RBX0NDUkNGQUlMICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgICAgICAgIC8qITwgQ29tbWFuZCByZXNwb25zZSByZWNlaXZlZCAoQ1JDIGNoZWNrIGZhaWxlZCkgKi8KKyNkZWZpbmUgIFNESU9fU1RBX0RDUkNGQUlMICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMikgICAgICAgIC8qITwgRGF0YSBibG9jayBzZW50L3JlY2VpdmVkIChDUkMgY2hlY2sgZmFpbGVkKSAqLworI2RlZmluZSAgU0RJT19TVEFfQ1RJTUVPVVQgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgICAgICAgLyohPCBDb21tYW5kIHJlc3BvbnNlIHRpbWVvdXQgKi8KKyNkZWZpbmUgIFNESU9fU1RBX0RUSU1FT1VUICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgICAgICAgIC8qITwgRGF0YSB0aW1lb3V0ICovCisjZGVmaW5lICBTRElPX1NUQV9UWFVOREVSUiAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAgICAgICAvKiE8IFRyYW5zbWl0IEZJRk8gdW5kZXJydW4gZXJyb3IgKi8KKyNkZWZpbmUgIFNESU9fU1RBX1JYT1ZFUlIgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAyMCkgICAgICAgIC8qITwgUmVjZWl2ZWQgRklGTyBvdmVycnVuIGVycm9yICovCisjZGVmaW5lICBTRElPX1NUQV9DTURSRU5EICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwNDApICAgICAgICAvKiE8IENvbW1hbmQgcmVzcG9uc2UgcmVjZWl2ZWQgKENSQyBjaGVjayBwYXNzZWQpICovCisjZGVmaW5lICBTRElPX1NUQV9DTURTRU5UICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApICAgICAgICAvKiE8IENvbW1hbmQgc2VudCAobm8gcmVzcG9uc2UgcmVxdWlyZWQpICovCisjZGVmaW5lICBTRElPX1NUQV9EQVRBRU5EICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAxMDApICAgICAgICAvKiE8IERhdGEgZW5kIChkYXRhIGNvdW50ZXIsIFNESURDT1VOVCwgaXMgemVybykgKi8KKyNkZWZpbmUgIFNESU9fU1RBX1NUQklURVJSICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkgICAgICAgIC8qITwgU3RhcnQgYml0IG5vdCBkZXRlY3RlZCBvbiBhbGwgZGF0YSBzaWduYWxzIGluIHdpZGUgYnVzIG1vZGUgKi8KKyNkZWZpbmUgIFNESU9fU1RBX0RCQ0tFTkQgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDQwMCkgICAgICAgIC8qITwgRGF0YSBibG9jayBzZW50L3JlY2VpdmVkIChDUkMgY2hlY2sgcGFzc2VkKSAqLworI2RlZmluZSAgU0RJT19TVEFfQ01EQUNUICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwODAwKSAgICAgICAgLyohPCBDb21tYW5kIHRyYW5zZmVyIGluIHByb2dyZXNzICovCisjZGVmaW5lICBTRElPX1NUQV9UWEFDVCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDEwMDApICAgICAgICAvKiE8IERhdGEgdHJhbnNtaXQgaW4gcHJvZ3Jlc3MgKi8KKyNkZWZpbmUgIFNESU9fU1RBX1JYQUNUICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMjAwMCkgICAgICAgIC8qITwgRGF0YSByZWNlaXZlIGluIHByb2dyZXNzICovCisjZGVmaW5lICBTRElPX1NUQV9UWEZJRk9IRSAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDQwMDApICAgICAgICAvKiE8IFRyYW5zbWl0IEZJRk8gSGFsZiBFbXB0eTogYXQgbGVhc3QgOCB3b3JkcyBjYW4gYmUgd3JpdHRlbiBpbnRvIHRoZSBGSUZPICovCisjZGVmaW5lICBTRElPX1NUQV9SWEZJRk9IRiAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDgwMDApICAgICAgICAvKiE8IFJlY2VpdmUgRklGTyBIYWxmIEZ1bGw6IHRoZXJlIGFyZSBhdCBsZWFzdCA4IHdvcmRzIGluIHRoZSBGSUZPICovCisjZGVmaW5lICBTRElPX1NUQV9UWEZJRk9GICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMTAwMDApICAgICAgICAvKiE8IFRyYW5zbWl0IEZJRk8gZnVsbCAqLworI2RlZmluZSAgU0RJT19TVEFfUlhGSUZPRiAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDIwMDAwKSAgICAgICAgLyohPCBSZWNlaXZlIEZJRk8gZnVsbCAqLworI2RlZmluZSAgU0RJT19TVEFfVFhGSUZPRSAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDQwMDAwKSAgICAgICAgLyohPCBUcmFuc21pdCBGSUZPIGVtcHR5ICovCisjZGVmaW5lICBTRElPX1NUQV9SWEZJRk9FICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAgICAgICAvKiE8IFJlY2VpdmUgRklGTyBlbXB0eSAqLworI2RlZmluZSAgU0RJT19TVEFfVFhEQVZMICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMTAwMDAwKSAgICAgICAgLyohPCBEYXRhIGF2YWlsYWJsZSBpbiB0cmFuc21pdCBGSUZPICovCisjZGVmaW5lICBTRElPX1NUQV9SWERBVkwgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAyMDAwMDApICAgICAgICAvKiE8IERhdGEgYXZhaWxhYmxlIGluIHJlY2VpdmUgRklGTyAqLworI2RlZmluZSAgU0RJT19TVEFfU0RJT0lUICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwNDAwMDAwKSAgICAgICAgLyohPCBTRElPIGludGVycnVwdCByZWNlaXZlZCAqLworI2RlZmluZSAgU0RJT19TVEFfQ0VBVEFFTkQgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwODAwMDAwKSAgICAgICAgLyohPCBDRS1BVEEgY29tbWFuZCBjb21wbGV0aW9uIHNpZ25hbCByZWNlaXZlZCBmb3IgQ01ENjEgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBTRElPX0lDUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIFNESU9fSUNSX0NDUkNGQUlMQyAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgICAgICAgIC8qITwgQ0NSQ0ZBSUwgZmxhZyBjbGVhciBiaXQgKi8KKyNkZWZpbmUgIFNESU9fSUNSX0RDUkNGQUlMQyAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMikgICAgICAgIC8qITwgRENSQ0ZBSUwgZmxhZyBjbGVhciBiaXQgKi8KKyNkZWZpbmUgIFNESU9fSUNSX0NUSU1FT1VUQyAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNCkgICAgICAgIC8qITwgQ1RJTUVPVVQgZmxhZyBjbGVhciBiaXQgKi8KKyNkZWZpbmUgIFNESU9fSUNSX0RUSU1FT1VUQyAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgICAgICAgIC8qITwgRFRJTUVPVVQgZmxhZyBjbGVhciBiaXQgKi8KKyNkZWZpbmUgIFNESU9fSUNSX1RYVU5ERVJSQyAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAxMCkgICAgICAgIC8qITwgVFhVTkRFUlIgZmxhZyBjbGVhciBiaXQgKi8KKyNkZWZpbmUgIFNESU9fSUNSX1JYT1ZFUlJDICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAyMCkgICAgICAgIC8qITwgUlhPVkVSUiBmbGFnIGNsZWFyIGJpdCAqLworI2RlZmluZSAgU0RJT19JQ1JfQ01EUkVOREMgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDQwKSAgICAgICAgLyohPCBDTURSRU5EIGZsYWcgY2xlYXIgYml0ICovCisjZGVmaW5lICBTRElPX0lDUl9DTURTRU5UQyAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApICAgICAgICAvKiE8IENNRFNFTlQgZmxhZyBjbGVhciBiaXQgKi8KKyNkZWZpbmUgIFNESU9fSUNSX0RBVEFFTkRDICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDEwMCkgICAgICAgIC8qITwgREFUQUVORCBmbGFnIGNsZWFyIGJpdCAqLworI2RlZmluZSAgU0RJT19JQ1JfU1RCSVRFUlJDICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMjAwKSAgICAgICAgLyohPCBTVEJJVEVSUiBmbGFnIGNsZWFyIGJpdCAqLworI2RlZmluZSAgU0RJT19JQ1JfREJDS0VOREMgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwNDAwKSAgICAgICAgLyohPCBEQkNLRU5EIGZsYWcgY2xlYXIgYml0ICovCisjZGVmaW5lICBTRElPX0lDUl9TRElPSVRDICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApICAgICAgICAvKiE8IFNESU9JVCBmbGFnIGNsZWFyIGJpdCAqLworI2RlZmluZSAgU0RJT19JQ1JfQ0VBVEFFTkRDICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwODAwMDAwKSAgICAgICAgLyohPCBDRUFUQUVORCBmbGFnIGNsZWFyIGJpdCAqLworCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgU0RJT19NQVNLIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgU0RJT19NQVNLX0NDUkNGQUlMSUUgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxKSAgICAgICAgLyohPCBDb21tYW5kIENSQyBGYWlsIEludGVycnVwdCBFbmFibGUgKi8KKyNkZWZpbmUgIFNESU9fTUFTS19EQ1JDRkFJTElFICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMikgICAgICAgIC8qITwgRGF0YSBDUkMgRmFpbCBJbnRlcnJ1cHQgRW5hYmxlICovCisjZGVmaW5lICBTRElPX01BU0tfQ1RJTUVPVVRJRSAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDQpICAgICAgICAvKiE8IENvbW1hbmQgVGltZU91dCBJbnRlcnJ1cHQgRW5hYmxlICovCisjZGVmaW5lICBTRElPX01BU0tfRFRJTUVPVVRJRSAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDgpICAgICAgICAvKiE8IERhdGEgVGltZU91dCBJbnRlcnJ1cHQgRW5hYmxlICovCisjZGVmaW5lICBTRElPX01BU0tfVFhVTkRFUlJJRSAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAgICAgICAvKiE8IFR4IEZJRk8gVW5kZXJSdW4gRXJyb3IgSW50ZXJydXB0IEVuYWJsZSAqLworI2RlZmluZSAgU0RJT19NQVNLX1JYT1ZFUlJJRSAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKSAgICAgICAgLyohPCBSeCBGSUZPIE92ZXJSdW4gRXJyb3IgSW50ZXJydXB0IEVuYWJsZSAqLworI2RlZmluZSAgU0RJT19NQVNLX0NNRFJFTkRJRSAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDQwKSAgICAgICAgLyohPCBDb21tYW5kIFJlc3BvbnNlIFJlY2VpdmVkIEludGVycnVwdCBFbmFibGUgKi8KKyNkZWZpbmUgIFNESU9fTUFTS19DTURTRU5USUUgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA4MCkgICAgICAgIC8qITwgQ29tbWFuZCBTZW50IEludGVycnVwdCBFbmFibGUgKi8KKyNkZWZpbmUgIFNESU9fTUFTS19EQVRBRU5ESUUgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDEwMCkgICAgICAgIC8qITwgRGF0YSBFbmQgSW50ZXJydXB0IEVuYWJsZSAqLworI2RlZmluZSAgU0RJT19NQVNLX1NUQklURVJSSUUgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMjAwKSAgICAgICAgLyohPCBTdGFydCBCaXQgRXJyb3IgSW50ZXJydXB0IEVuYWJsZSAqLworI2RlZmluZSAgU0RJT19NQVNLX0RCQ0tFTkRJRSAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwNDAwKSAgICAgICAgLyohPCBEYXRhIEJsb2NrIEVuZCBJbnRlcnJ1cHQgRW5hYmxlICovCisjZGVmaW5lICBTRElPX01BU0tfQ01EQUNUSUUgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA4MDApICAgICAgICAvKiE8IENvbW1hbmQgQWN0aW5nIEludGVycnVwdCBFbmFibGUgKi8KKyNkZWZpbmUgIFNESU9fTUFTS19UWEFDVElFICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMTAwMCkgICAgICAgIC8qITwgRGF0YSBUcmFuc21pdCBBY3RpbmcgSW50ZXJydXB0IEVuYWJsZSAqLworI2RlZmluZSAgU0RJT19NQVNLX1JYQUNUSUUgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAyMDAwKSAgICAgICAgLyohPCBEYXRhIHJlY2VpdmUgYWN0aW5nIGludGVycnVwdCBlbmFibGVkICovCisjZGVmaW5lICBTRElPX01BU0tfVFhGSUZPSEVJRSAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDQwMDApICAgICAgICAvKiE8IFR4IEZJRk8gSGFsZiBFbXB0eSBpbnRlcnJ1cHQgRW5hYmxlICovCisjZGVmaW5lICBTRElPX01BU0tfUlhGSUZPSEZJRSAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDgwMDApICAgICAgICAvKiE8IFJ4IEZJRk8gSGFsZiBGdWxsIGludGVycnVwdCBFbmFibGUgKi8KKyNkZWZpbmUgIFNESU9fTUFTS19UWEZJRk9GSUUgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAxMDAwMCkgICAgICAgIC8qITwgVHggRklGTyBGdWxsIGludGVycnVwdCBFbmFibGUgKi8KKyNkZWZpbmUgIFNESU9fTUFTS19SWEZJRk9GSUUgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkgICAgICAgIC8qITwgUnggRklGTyBGdWxsIGludGVycnVwdCBFbmFibGUgKi8KKyNkZWZpbmUgIFNESU9fTUFTS19UWEZJRk9FSUUgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA0MDAwMCkgICAgICAgIC8qITwgVHggRklGTyBFbXB0eSBpbnRlcnJ1cHQgRW5hYmxlICovCisjZGVmaW5lICBTRElPX01BU0tfUlhGSUZPRUlFICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAgICAgICAvKiE8IFJ4IEZJRk8gRW1wdHkgaW50ZXJydXB0IEVuYWJsZSAqLworI2RlZmluZSAgU0RJT19NQVNLX1RYREFWTElFICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMTAwMDAwKSAgICAgICAgLyohPCBEYXRhIGF2YWlsYWJsZSBpbiBUeCBGSUZPIGludGVycnVwdCBFbmFibGUgKi8KKyNkZWZpbmUgIFNESU9fTUFTS19SWERBVkxJRSAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDIwMDAwMCkgICAgICAgIC8qITwgRGF0YSBhdmFpbGFibGUgaW4gUnggRklGTyBpbnRlcnJ1cHQgRW5hYmxlICovCisjZGVmaW5lICBTRElPX01BU0tfU0RJT0lUSUUgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApICAgICAgICAvKiE8IFNESU8gTW9kZSBJbnRlcnJ1cHQgUmVjZWl2ZWQgaW50ZXJydXB0IEVuYWJsZSAqLworI2RlZmluZSAgU0RJT19NQVNLX0NFQVRBRU5ESUUgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwODAwMDAwKSAgICAgICAgLyohPCBDRS1BVEEgY29tbWFuZCBjb21wbGV0aW9uIHNpZ25hbCByZWNlaXZlZCBJbnRlcnJ1cHQgRW5hYmxlICovCisKKy8qKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFNESU9fRklGT0NOVCByZWdpc3RlciAgKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBTRElPX0ZJRk9DTlRfRklGT0NPVU5UICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDBGRkZGRkYpICAgICAgICAvKiE8IFJlbWFpbmluZyBudW1iZXIgb2Ygd29yZHMgdG8gYmUgd3JpdHRlbiB0byBvciByZWFkIGZyb20gdGhlIEZJRk8gKi8KKworLyoqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFNESU9fRklGTyByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIFNESU9fRklGT19GSUZPREFUQSAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHhGRkZGRkZGRikgICAgICAgIC8qITwgUmVjZWl2ZSBhbmQgdHJhbnNtaXQgRklGTyBkYXRhICovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTQiBEZXZpY2UgRlMgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiE8IEVuZHBvaW50LXNwZWNpZmljIHJlZ2lzdGVycyAqLworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBVU0JfRVAwUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIFVTQl9FUDBSX0VBICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDBGKSAgICAgICAgICAgIC8qITwgRW5kcG9pbnQgQWRkcmVzcyAqLworCisjZGVmaW5lICBVU0JfRVAwUl9TVEFUX1RYICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAzMCkgICAgICAgICAgICAvKiE8IFNUQVRfVFhbMTowXSBiaXRzIChTdGF0dXMgYml0cywgZm9yIHRyYW5zbWlzc2lvbiB0cmFuc2ZlcnMpICovCisjZGVmaW5lICBVU0JfRVAwUl9TVEFUX1RYXzAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAxMCkgICAgICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBVU0JfRVAwUl9TVEFUX1RYXzEgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAyMCkgICAgICAgICAgICAvKiE8IEJpdCAxICovCisKKyNkZWZpbmUgIFVTQl9FUDBSX0RUT0dfVFggICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDQwKSAgICAgICAgICAgIC8qITwgRGF0YSBUb2dnbGUsIGZvciB0cmFuc21pc3Npb24gdHJhbnNmZXJzICovCisjZGVmaW5lICBVU0JfRVAwUl9DVFJfVFggICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA4MCkgICAgICAgICAgICAvKiE8IENvcnJlY3QgVHJhbnNmZXIgZm9yIHRyYW5zbWlzc2lvbiAqLworI2RlZmluZSAgVVNCX0VQMFJfRVBfS0lORCAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAxMDApICAgICAgICAgICAgLyohPCBFbmRwb2ludCBLaW5kICovCisKKyNkZWZpbmUgIFVTQl9FUDBSX0VQX1RZUEUgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwNjAwKSAgICAgICAgICAgIC8qITwgRVBfVFlQRVsxOjBdIGJpdHMgKEVuZHBvaW50IHR5cGUpICovCisjZGVmaW5lICBVU0JfRVAwUl9FUF9UWVBFXzAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDIwMCkgICAgICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBVU0JfRVAwUl9FUF9UWVBFXzEgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDQwMCkgICAgICAgICAgICAvKiE8IEJpdCAxICovCisKKyNkZWZpbmUgIFVTQl9FUDBSX1NFVFVQICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwODAwKSAgICAgICAgICAgIC8qITwgU2V0dXAgdHJhbnNhY3Rpb24gY29tcGxldGVkICovCisKKyNkZWZpbmUgIFVTQl9FUDBSX1NUQVRfUlggICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgzMDAwKSAgICAgICAgICAgIC8qITwgU1RBVF9SWFsxOjBdIGJpdHMgKFN0YXR1cyBiaXRzLCBmb3IgcmVjZXB0aW9uIHRyYW5zZmVycykgKi8KKyNkZWZpbmUgIFVTQl9FUDBSX1NUQVRfUlhfMCAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgxMDAwKSAgICAgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIFVTQl9FUDBSX1NUQVRfUlhfMSAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgyMDAwKSAgICAgICAgICAgIC8qITwgQml0IDEgKi8KKworI2RlZmluZSAgVVNCX0VQMFJfRFRPR19SWCAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDQwMDApICAgICAgICAgICAgLyohPCBEYXRhIFRvZ2dsZSwgZm9yIHJlY2VwdGlvbiB0cmFuc2ZlcnMgKi8KKyNkZWZpbmUgIFVTQl9FUDBSX0NUUl9SWCAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHg4MDAwKSAgICAgICAgICAgIC8qITwgQ29ycmVjdCBUcmFuc2ZlciBmb3IgcmVjZXB0aW9uICovCisKKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgVVNCX0VQMVIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBVU0JfRVAxUl9FQSAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwRikgICAgICAgICAgICAvKiE8IEVuZHBvaW50IEFkZHJlc3MgKi8KKworI2RlZmluZSAgVVNCX0VQMVJfU1RBVF9UWCAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMzApICAgICAgICAgICAgLyohPCBTVEFUX1RYWzE6MF0gYml0cyAoU3RhdHVzIGJpdHMsIGZvciB0cmFuc21pc3Npb24gdHJhbnNmZXJzKSAqLworI2RlZmluZSAgVVNCX0VQMVJfU1RBVF9UWF8wICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMTApICAgICAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgVVNCX0VQMVJfU1RBVF9UWF8xICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMjApICAgICAgICAgICAgLyohPCBCaXQgMSAqLworCisjZGVmaW5lICBVU0JfRVAxUl9EVE9HX1RYICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA0MCkgICAgICAgICAgICAvKiE8IERhdGEgVG9nZ2xlLCBmb3IgdHJhbnNtaXNzaW9uIHRyYW5zZmVycyAqLworI2RlZmluZSAgVVNCX0VQMVJfQ1RSX1RYICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwODApICAgICAgICAgICAgLyohPCBDb3JyZWN0IFRyYW5zZmVyIGZvciB0cmFuc21pc3Npb24gKi8KKyNkZWZpbmUgIFVTQl9FUDFSX0VQX0tJTkQgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMTAwKSAgICAgICAgICAgIC8qITwgRW5kcG9pbnQgS2luZCAqLworCisjZGVmaW5lICBVU0JfRVAxUl9FUF9UWVBFICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDYwMCkgICAgICAgICAgICAvKiE8IEVQX1RZUEVbMTowXSBiaXRzIChFbmRwb2ludCB0eXBlKSAqLworI2RlZmluZSAgVVNCX0VQMVJfRVBfVFlQRV8wICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAyMDApICAgICAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgVVNCX0VQMVJfRVBfVFlQRV8xICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDA0MDApICAgICAgICAgICAgLyohPCBCaXQgMSAqLworCisjZGVmaW5lICBVU0JfRVAxUl9TRVRVUCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDgwMCkgICAgICAgICAgICAvKiE8IFNldHVwIHRyYW5zYWN0aW9uIGNvbXBsZXRlZCAqLworCisjZGVmaW5lICBVU0JfRVAxUl9TVEFUX1JYICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MzAwMCkgICAgICAgICAgICAvKiE8IFNUQVRfUlhbMTowXSBiaXRzIChTdGF0dXMgYml0cywgZm9yIHJlY2VwdGlvbiB0cmFuc2ZlcnMpICovCisjZGVmaW5lICBVU0JfRVAxUl9TVEFUX1JYXzAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MTAwMCkgICAgICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBVU0JfRVAxUl9TVEFUX1JYXzEgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MjAwMCkgICAgICAgICAgICAvKiE8IEJpdCAxICovCisKKyNkZWZpbmUgIFVTQl9FUDFSX0RUT0dfUlggICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHg0MDAwKSAgICAgICAgICAgIC8qITwgRGF0YSBUb2dnbGUsIGZvciByZWNlcHRpb24gdHJhbnNmZXJzICovCisjZGVmaW5lICBVU0JfRVAxUl9DVFJfUlggICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4ODAwMCkgICAgICAgICAgICAvKiE8IENvcnJlY3QgVHJhbnNmZXIgZm9yIHJlY2VwdGlvbiAqLworCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFVTQl9FUDJSIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgVVNCX0VQMlJfRUEgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMEYpICAgICAgICAgICAgLyohPCBFbmRwb2ludCBBZGRyZXNzICovCisKKyNkZWZpbmUgIFVTQl9FUDJSX1NUQVRfVFggICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDMwKSAgICAgICAgICAgIC8qITwgU1RBVF9UWFsxOjBdIGJpdHMgKFN0YXR1cyBiaXRzLCBmb3IgdHJhbnNtaXNzaW9uIHRyYW5zZmVycykgKi8KKyNkZWZpbmUgIFVTQl9FUDJSX1NUQVRfVFhfMCAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDEwKSAgICAgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIFVTQl9FUDJSX1NUQVRfVFhfMSAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDIwKSAgICAgICAgICAgIC8qITwgQml0IDEgKi8KKworI2RlZmluZSAgVVNCX0VQMlJfRFRPR19UWCAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwNDApICAgICAgICAgICAgLyohPCBEYXRhIFRvZ2dsZSwgZm9yIHRyYW5zbWlzc2lvbiB0cmFuc2ZlcnMgKi8KKyNkZWZpbmUgIFVTQl9FUDJSX0NUUl9UWCAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDgwKSAgICAgICAgICAgIC8qITwgQ29ycmVjdCBUcmFuc2ZlciBmb3IgdHJhbnNtaXNzaW9uICovCisjZGVmaW5lICBVU0JfRVAyUl9FUF9LSU5EICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDEwMCkgICAgICAgICAgICAvKiE8IEVuZHBvaW50IEtpbmQgKi8KKworI2RlZmluZSAgVVNCX0VQMlJfRVBfVFlQRSAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDA2MDApICAgICAgICAgICAgLyohPCBFUF9UWVBFWzE6MF0gYml0cyAoRW5kcG9pbnQgdHlwZSkgKi8KKyNkZWZpbmUgIFVTQl9FUDJSX0VQX1RZUEVfMCAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMjAwKSAgICAgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIFVTQl9FUDJSX0VQX1RZUEVfMSAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwNDAwKSAgICAgICAgICAgIC8qITwgQml0IDEgKi8KKworI2RlZmluZSAgVVNCX0VQMlJfU0VUVVAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDA4MDApICAgICAgICAgICAgLyohPCBTZXR1cCB0cmFuc2FjdGlvbiBjb21wbGV0ZWQgKi8KKworI2RlZmluZSAgVVNCX0VQMlJfU1RBVF9SWCAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDMwMDApICAgICAgICAgICAgLyohPCBTVEFUX1JYWzE6MF0gYml0cyAoU3RhdHVzIGJpdHMsIGZvciByZWNlcHRpb24gdHJhbnNmZXJzKSAqLworI2RlZmluZSAgVVNCX0VQMlJfU1RBVF9SWF8wICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDEwMDApICAgICAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgVVNCX0VQMlJfU1RBVF9SWF8xICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDIwMDApICAgICAgICAgICAgLyohPCBCaXQgMSAqLworCisjZGVmaW5lICBVU0JfRVAyUl9EVE9HX1JYICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4NDAwMCkgICAgICAgICAgICAvKiE8IERhdGEgVG9nZ2xlLCBmb3IgcmVjZXB0aW9uIHRyYW5zZmVycyAqLworI2RlZmluZSAgVVNCX0VQMlJfQ1RSX1JYICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDgwMDApICAgICAgICAgICAgLyohPCBDb3JyZWN0IFRyYW5zZmVyIGZvciByZWNlcHRpb24gKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBVU0JfRVAzUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIFVTQl9FUDNSX0VBICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDBGKSAgICAgICAgICAgIC8qITwgRW5kcG9pbnQgQWRkcmVzcyAqLworCisjZGVmaW5lICBVU0JfRVAzUl9TVEFUX1RYICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAzMCkgICAgICAgICAgICAvKiE8IFNUQVRfVFhbMTowXSBiaXRzIChTdGF0dXMgYml0cywgZm9yIHRyYW5zbWlzc2lvbiB0cmFuc2ZlcnMpICovCisjZGVmaW5lICBVU0JfRVAzUl9TVEFUX1RYXzAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAxMCkgICAgICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBVU0JfRVAzUl9TVEFUX1RYXzEgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAyMCkgICAgICAgICAgICAvKiE8IEJpdCAxICovCisKKyNkZWZpbmUgIFVTQl9FUDNSX0RUT0dfVFggICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDQwKSAgICAgICAgICAgIC8qITwgRGF0YSBUb2dnbGUsIGZvciB0cmFuc21pc3Npb24gdHJhbnNmZXJzICovCisjZGVmaW5lICBVU0JfRVAzUl9DVFJfVFggICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA4MCkgICAgICAgICAgICAvKiE8IENvcnJlY3QgVHJhbnNmZXIgZm9yIHRyYW5zbWlzc2lvbiAqLworI2RlZmluZSAgVVNCX0VQM1JfRVBfS0lORCAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAxMDApICAgICAgICAgICAgLyohPCBFbmRwb2ludCBLaW5kICovCisKKyNkZWZpbmUgIFVTQl9FUDNSX0VQX1RZUEUgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwNjAwKSAgICAgICAgICAgIC8qITwgRVBfVFlQRVsxOjBdIGJpdHMgKEVuZHBvaW50IHR5cGUpICovCisjZGVmaW5lICBVU0JfRVAzUl9FUF9UWVBFXzAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDIwMCkgICAgICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBVU0JfRVAzUl9FUF9UWVBFXzEgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDQwMCkgICAgICAgICAgICAvKiE8IEJpdCAxICovCisKKyNkZWZpbmUgIFVTQl9FUDNSX1NFVFVQICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwODAwKSAgICAgICAgICAgIC8qITwgU2V0dXAgdHJhbnNhY3Rpb24gY29tcGxldGVkICovCisKKyNkZWZpbmUgIFVTQl9FUDNSX1NUQVRfUlggICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgzMDAwKSAgICAgICAgICAgIC8qITwgU1RBVF9SWFsxOjBdIGJpdHMgKFN0YXR1cyBiaXRzLCBmb3IgcmVjZXB0aW9uIHRyYW5zZmVycykgKi8KKyNkZWZpbmUgIFVTQl9FUDNSX1NUQVRfUlhfMCAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgxMDAwKSAgICAgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIFVTQl9FUDNSX1NUQVRfUlhfMSAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgyMDAwKSAgICAgICAgICAgIC8qITwgQml0IDEgKi8KKworI2RlZmluZSAgVVNCX0VQM1JfRFRPR19SWCAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDQwMDApICAgICAgICAgICAgLyohPCBEYXRhIFRvZ2dsZSwgZm9yIHJlY2VwdGlvbiB0cmFuc2ZlcnMgKi8KKyNkZWZpbmUgIFVTQl9FUDNSX0NUUl9SWCAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHg4MDAwKSAgICAgICAgICAgIC8qITwgQ29ycmVjdCBUcmFuc2ZlciBmb3IgcmVjZXB0aW9uICovCisKKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgVVNCX0VQNFIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBVU0JfRVA0Ul9FQSAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwRikgICAgICAgICAgICAvKiE8IEVuZHBvaW50IEFkZHJlc3MgKi8KKworI2RlZmluZSAgVVNCX0VQNFJfU1RBVF9UWCAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMzApICAgICAgICAgICAgLyohPCBTVEFUX1RYWzE6MF0gYml0cyAoU3RhdHVzIGJpdHMsIGZvciB0cmFuc21pc3Npb24gdHJhbnNmZXJzKSAqLworI2RlZmluZSAgVVNCX0VQNFJfU1RBVF9UWF8wICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMTApICAgICAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgVVNCX0VQNFJfU1RBVF9UWF8xICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMjApICAgICAgICAgICAgLyohPCBCaXQgMSAqLworCisjZGVmaW5lICBVU0JfRVA0Ul9EVE9HX1RYICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA0MCkgICAgICAgICAgICAvKiE8IERhdGEgVG9nZ2xlLCBmb3IgdHJhbnNtaXNzaW9uIHRyYW5zZmVycyAqLworI2RlZmluZSAgVVNCX0VQNFJfQ1RSX1RYICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwODApICAgICAgICAgICAgLyohPCBDb3JyZWN0IFRyYW5zZmVyIGZvciB0cmFuc21pc3Npb24gKi8KKyNkZWZpbmUgIFVTQl9FUDRSX0VQX0tJTkQgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMTAwKSAgICAgICAgICAgIC8qITwgRW5kcG9pbnQgS2luZCAqLworCisjZGVmaW5lICBVU0JfRVA0Ul9FUF9UWVBFICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDYwMCkgICAgICAgICAgICAvKiE8IEVQX1RZUEVbMTowXSBiaXRzIChFbmRwb2ludCB0eXBlKSAqLworI2RlZmluZSAgVVNCX0VQNFJfRVBfVFlQRV8wICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAyMDApICAgICAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgVVNCX0VQNFJfRVBfVFlQRV8xICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDA0MDApICAgICAgICAgICAgLyohPCBCaXQgMSAqLworCisjZGVmaW5lICBVU0JfRVA0Ul9TRVRVUCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDgwMCkgICAgICAgICAgICAvKiE8IFNldHVwIHRyYW5zYWN0aW9uIGNvbXBsZXRlZCAqLworCisjZGVmaW5lICBVU0JfRVA0Ul9TVEFUX1JYICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MzAwMCkgICAgICAgICAgICAvKiE8IFNUQVRfUlhbMTowXSBiaXRzIChTdGF0dXMgYml0cywgZm9yIHJlY2VwdGlvbiB0cmFuc2ZlcnMpICovCisjZGVmaW5lICBVU0JfRVA0Ul9TVEFUX1JYXzAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MTAwMCkgICAgICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBVU0JfRVA0Ul9TVEFUX1JYXzEgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MjAwMCkgICAgICAgICAgICAvKiE8IEJpdCAxICovCisKKyNkZWZpbmUgIFVTQl9FUDRSX0RUT0dfUlggICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHg0MDAwKSAgICAgICAgICAgIC8qITwgRGF0YSBUb2dnbGUsIGZvciByZWNlcHRpb24gdHJhbnNmZXJzICovCisjZGVmaW5lICBVU0JfRVA0Ul9DVFJfUlggICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4ODAwMCkgICAgICAgICAgICAvKiE8IENvcnJlY3QgVHJhbnNmZXIgZm9yIHJlY2VwdGlvbiAqLworCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFVTQl9FUDVSIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgVVNCX0VQNVJfRUEgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMEYpICAgICAgICAgICAgLyohPCBFbmRwb2ludCBBZGRyZXNzICovCisKKyNkZWZpbmUgIFVTQl9FUDVSX1NUQVRfVFggICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDMwKSAgICAgICAgICAgIC8qITwgU1RBVF9UWFsxOjBdIGJpdHMgKFN0YXR1cyBiaXRzLCBmb3IgdHJhbnNtaXNzaW9uIHRyYW5zZmVycykgKi8KKyNkZWZpbmUgIFVTQl9FUDVSX1NUQVRfVFhfMCAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDEwKSAgICAgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIFVTQl9FUDVSX1NUQVRfVFhfMSAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDIwKSAgICAgICAgICAgIC8qITwgQml0IDEgKi8KKworI2RlZmluZSAgVVNCX0VQNVJfRFRPR19UWCAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwNDApICAgICAgICAgICAgLyohPCBEYXRhIFRvZ2dsZSwgZm9yIHRyYW5zbWlzc2lvbiB0cmFuc2ZlcnMgKi8KKyNkZWZpbmUgIFVTQl9FUDVSX0NUUl9UWCAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDgwKSAgICAgICAgICAgIC8qITwgQ29ycmVjdCBUcmFuc2ZlciBmb3IgdHJhbnNtaXNzaW9uICovCisjZGVmaW5lICBVU0JfRVA1Ul9FUF9LSU5EICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDEwMCkgICAgICAgICAgICAvKiE8IEVuZHBvaW50IEtpbmQgKi8KKworI2RlZmluZSAgVVNCX0VQNVJfRVBfVFlQRSAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDA2MDApICAgICAgICAgICAgLyohPCBFUF9UWVBFWzE6MF0gYml0cyAoRW5kcG9pbnQgdHlwZSkgKi8KKyNkZWZpbmUgIFVTQl9FUDVSX0VQX1RZUEVfMCAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMjAwKSAgICAgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIFVTQl9FUDVSX0VQX1RZUEVfMSAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwNDAwKSAgICAgICAgICAgIC8qITwgQml0IDEgKi8KKworI2RlZmluZSAgVVNCX0VQNVJfU0VUVVAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDA4MDApICAgICAgICAgICAgLyohPCBTZXR1cCB0cmFuc2FjdGlvbiBjb21wbGV0ZWQgKi8KKworI2RlZmluZSAgVVNCX0VQNVJfU1RBVF9SWCAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDMwMDApICAgICAgICAgICAgLyohPCBTVEFUX1JYWzE6MF0gYml0cyAoU3RhdHVzIGJpdHMsIGZvciByZWNlcHRpb24gdHJhbnNmZXJzKSAqLworI2RlZmluZSAgVVNCX0VQNVJfU1RBVF9SWF8wICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDEwMDApICAgICAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgVVNCX0VQNVJfU1RBVF9SWF8xICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDIwMDApICAgICAgICAgICAgLyohPCBCaXQgMSAqLworCisjZGVmaW5lICBVU0JfRVA1Ul9EVE9HX1JYICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4NDAwMCkgICAgICAgICAgICAvKiE8IERhdGEgVG9nZ2xlLCBmb3IgcmVjZXB0aW9uIHRyYW5zZmVycyAqLworI2RlZmluZSAgVVNCX0VQNVJfQ1RSX1JYICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDgwMDApICAgICAgICAgICAgLyohPCBDb3JyZWN0IFRyYW5zZmVyIGZvciByZWNlcHRpb24gKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBVU0JfRVA2UiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIFVTQl9FUDZSX0VBICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDBGKSAgICAgICAgICAgIC8qITwgRW5kcG9pbnQgQWRkcmVzcyAqLworCisjZGVmaW5lICBVU0JfRVA2Ul9TVEFUX1RYICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAzMCkgICAgICAgICAgICAvKiE8IFNUQVRfVFhbMTowXSBiaXRzIChTdGF0dXMgYml0cywgZm9yIHRyYW5zbWlzc2lvbiB0cmFuc2ZlcnMpICovCisjZGVmaW5lICBVU0JfRVA2Ul9TVEFUX1RYXzAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAxMCkgICAgICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBVU0JfRVA2Ul9TVEFUX1RYXzEgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAyMCkgICAgICAgICAgICAvKiE8IEJpdCAxICovCisKKyNkZWZpbmUgIFVTQl9FUDZSX0RUT0dfVFggICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDQwKSAgICAgICAgICAgIC8qITwgRGF0YSBUb2dnbGUsIGZvciB0cmFuc21pc3Npb24gdHJhbnNmZXJzICovCisjZGVmaW5lICBVU0JfRVA2Ul9DVFJfVFggICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA4MCkgICAgICAgICAgICAvKiE8IENvcnJlY3QgVHJhbnNmZXIgZm9yIHRyYW5zbWlzc2lvbiAqLworI2RlZmluZSAgVVNCX0VQNlJfRVBfS0lORCAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAxMDApICAgICAgICAgICAgLyohPCBFbmRwb2ludCBLaW5kICovCisKKyNkZWZpbmUgIFVTQl9FUDZSX0VQX1RZUEUgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwNjAwKSAgICAgICAgICAgIC8qITwgRVBfVFlQRVsxOjBdIGJpdHMgKEVuZHBvaW50IHR5cGUpICovCisjZGVmaW5lICBVU0JfRVA2Ul9FUF9UWVBFXzAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDIwMCkgICAgICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBVU0JfRVA2Ul9FUF9UWVBFXzEgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDQwMCkgICAgICAgICAgICAvKiE8IEJpdCAxICovCisKKyNkZWZpbmUgIFVTQl9FUDZSX1NFVFVQICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwODAwKSAgICAgICAgICAgIC8qITwgU2V0dXAgdHJhbnNhY3Rpb24gY29tcGxldGVkICovCisKKyNkZWZpbmUgIFVTQl9FUDZSX1NUQVRfUlggICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgzMDAwKSAgICAgICAgICAgIC8qITwgU1RBVF9SWFsxOjBdIGJpdHMgKFN0YXR1cyBiaXRzLCBmb3IgcmVjZXB0aW9uIHRyYW5zZmVycykgKi8KKyNkZWZpbmUgIFVTQl9FUDZSX1NUQVRfUlhfMCAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgxMDAwKSAgICAgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIFVTQl9FUDZSX1NUQVRfUlhfMSAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgyMDAwKSAgICAgICAgICAgIC8qITwgQml0IDEgKi8KKworI2RlZmluZSAgVVNCX0VQNlJfRFRPR19SWCAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDQwMDApICAgICAgICAgICAgLyohPCBEYXRhIFRvZ2dsZSwgZm9yIHJlY2VwdGlvbiB0cmFuc2ZlcnMgKi8KKyNkZWZpbmUgIFVTQl9FUDZSX0NUUl9SWCAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHg4MDAwKSAgICAgICAgICAgIC8qITwgQ29ycmVjdCBUcmFuc2ZlciBmb3IgcmVjZXB0aW9uICovCisKKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgVVNCX0VQN1IgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBVU0JfRVA3Ul9FQSAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwRikgICAgICAgICAgICAvKiE8IEVuZHBvaW50IEFkZHJlc3MgKi8KKworI2RlZmluZSAgVVNCX0VQN1JfU1RBVF9UWCAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMzApICAgICAgICAgICAgLyohPCBTVEFUX1RYWzE6MF0gYml0cyAoU3RhdHVzIGJpdHMsIGZvciB0cmFuc21pc3Npb24gdHJhbnNmZXJzKSAqLworI2RlZmluZSAgVVNCX0VQN1JfU1RBVF9UWF8wICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMTApICAgICAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgVVNCX0VQN1JfU1RBVF9UWF8xICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMjApICAgICAgICAgICAgLyohPCBCaXQgMSAqLworCisjZGVmaW5lICBVU0JfRVA3Ul9EVE9HX1RYICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA0MCkgICAgICAgICAgICAvKiE8IERhdGEgVG9nZ2xlLCBmb3IgdHJhbnNtaXNzaW9uIHRyYW5zZmVycyAqLworI2RlZmluZSAgVVNCX0VQN1JfQ1RSX1RYICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwODApICAgICAgICAgICAgLyohPCBDb3JyZWN0IFRyYW5zZmVyIGZvciB0cmFuc21pc3Npb24gKi8KKyNkZWZpbmUgIFVTQl9FUDdSX0VQX0tJTkQgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMTAwKSAgICAgICAgICAgIC8qITwgRW5kcG9pbnQgS2luZCAqLworCisjZGVmaW5lICBVU0JfRVA3Ul9FUF9UWVBFICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDYwMCkgICAgICAgICAgICAvKiE8IEVQX1RZUEVbMTowXSBiaXRzIChFbmRwb2ludCB0eXBlKSAqLworI2RlZmluZSAgVVNCX0VQN1JfRVBfVFlQRV8wICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAyMDApICAgICAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgVVNCX0VQN1JfRVBfVFlQRV8xICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDA0MDApICAgICAgICAgICAgLyohPCBCaXQgMSAqLworCisjZGVmaW5lICBVU0JfRVA3Ul9TRVRVUCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDgwMCkgICAgICAgICAgICAvKiE8IFNldHVwIHRyYW5zYWN0aW9uIGNvbXBsZXRlZCAqLworCisjZGVmaW5lICBVU0JfRVA3Ul9TVEFUX1JYICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MzAwMCkgICAgICAgICAgICAvKiE8IFNUQVRfUlhbMTowXSBiaXRzIChTdGF0dXMgYml0cywgZm9yIHJlY2VwdGlvbiB0cmFuc2ZlcnMpICovCisjZGVmaW5lICBVU0JfRVA3Ul9TVEFUX1JYXzAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MTAwMCkgICAgICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBVU0JfRVA3Ul9TVEFUX1JYXzEgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MjAwMCkgICAgICAgICAgICAvKiE8IEJpdCAxICovCisKKyNkZWZpbmUgIFVTQl9FUDdSX0RUT0dfUlggICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHg0MDAwKSAgICAgICAgICAgIC8qITwgRGF0YSBUb2dnbGUsIGZvciByZWNlcHRpb24gdHJhbnNmZXJzICovCisjZGVmaW5lICBVU0JfRVA3Ul9DVFJfUlggICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4ODAwMCkgICAgICAgICAgICAvKiE8IENvcnJlY3QgVHJhbnNmZXIgZm9yIHJlY2VwdGlvbiAqLworCisvKiE8IENvbW1vbiByZWdpc3RlcnMgKi8KKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgVVNCX0NOVFIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBVU0JfQ05UUl9GUkVTICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMSkgICAgICAgICAgICAvKiE8IEZvcmNlIFVTQiBSZXNldCAqLworI2RlZmluZSAgVVNCX0NOVFJfUERXTiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDIpICAgICAgICAgICAgLyohPCBQb3dlciBkb3duICovCisjZGVmaW5lICBVU0JfQ05UUl9MUF9NT0RFICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwNCkgICAgICAgICAgICAvKiE8IExvdy1wb3dlciBtb2RlICovCisjZGVmaW5lICBVU0JfQ05UUl9GU1VTUCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwOCkgICAgICAgICAgICAvKiE8IEZvcmNlIHN1c3BlbmQgKi8KKyNkZWZpbmUgIFVTQl9DTlRSX1JFU1VNRSAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDEwKSAgICAgICAgICAgIC8qITwgUmVzdW1lIHJlcXVlc3QgKi8KKyNkZWZpbmUgIFVTQl9DTlRSX0VTT0ZNICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMTAwKSAgICAgICAgICAgIC8qITwgRXhwZWN0ZWQgU3RhcnQgT2YgRnJhbWUgSW50ZXJydXB0IE1hc2sgKi8KKyNkZWZpbmUgIFVTQl9DTlRSX1NPRk0gICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMjAwKSAgICAgICAgICAgIC8qITwgU3RhcnQgT2YgRnJhbWUgSW50ZXJydXB0IE1hc2sgKi8KKyNkZWZpbmUgIFVTQl9DTlRSX1JFU0VUTSAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwNDAwKSAgICAgICAgICAgIC8qITwgUkVTRVQgSW50ZXJydXB0IE1hc2sgKi8KKyNkZWZpbmUgIFVTQl9DTlRSX1NVU1BNICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwODAwKSAgICAgICAgICAgIC8qITwgU3VzcGVuZCBtb2RlIEludGVycnVwdCBNYXNrICovCisjZGVmaW5lICBVU0JfQ05UUl9XS1VQTSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MTAwMCkgICAgICAgICAgICAvKiE8IFdha2V1cCBJbnRlcnJ1cHQgTWFzayAqLworI2RlZmluZSAgVVNCX0NOVFJfRVJSTSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDIwMDApICAgICAgICAgICAgLyohPCBFcnJvciBJbnRlcnJ1cHQgTWFzayAqLworI2RlZmluZSAgVVNCX0NOVFJfUE1BT1ZSTSAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDQwMDApICAgICAgICAgICAgLyohPCBQYWNrZXQgTWVtb3J5IEFyZWEgT3ZlciAvIFVuZGVycnVuIEludGVycnVwdCBNYXNrICovCisjZGVmaW5lICBVU0JfQ05UUl9DVFJNICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4ODAwMCkgICAgICAgICAgICAvKiE8IENvcnJlY3QgVHJhbnNmZXIgSW50ZXJydXB0IE1hc2sgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBVU0JfSVNUUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIFVTQl9JU1RSX0VQX0lEICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDBGKSAgICAgICAgICAgIC8qITwgRW5kcG9pbnQgSWRlbnRpZmllciAqLworI2RlZmluZSAgVVNCX0lTVFJfRElSICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMTApICAgICAgICAgICAgLyohPCBEaXJlY3Rpb24gb2YgdHJhbnNhY3Rpb24gKi8KKyNkZWZpbmUgIFVTQl9JU1RSX0VTT0YgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMTAwKSAgICAgICAgICAgIC8qITwgRXhwZWN0ZWQgU3RhcnQgT2YgRnJhbWUgKi8KKyNkZWZpbmUgIFVTQl9JU1RSX1NPRiAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMjAwKSAgICAgICAgICAgIC8qITwgU3RhcnQgT2YgRnJhbWUgKi8KKyNkZWZpbmUgIFVTQl9JU1RSX1JFU0VUICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwNDAwKSAgICAgICAgICAgIC8qITwgVVNCIFJFU0VUIHJlcXVlc3QgKi8KKyNkZWZpbmUgIFVTQl9JU1RSX1NVU1AgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwODAwKSAgICAgICAgICAgIC8qITwgU3VzcGVuZCBtb2RlIHJlcXVlc3QgKi8KKyNkZWZpbmUgIFVTQl9JU1RSX1dLVVAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgxMDAwKSAgICAgICAgICAgIC8qITwgV2FrZSB1cCAqLworI2RlZmluZSAgVVNCX0lTVFJfRVJSICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDIwMDApICAgICAgICAgICAgLyohPCBFcnJvciAqLworI2RlZmluZSAgVVNCX0lTVFJfUE1BT1ZSICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDQwMDApICAgICAgICAgICAgLyohPCBQYWNrZXQgTWVtb3J5IEFyZWEgT3ZlciAvIFVuZGVycnVuICovCisjZGVmaW5lICBVU0JfSVNUUl9DVFIgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4ODAwMCkgICAgICAgICAgICAvKiE8IENvcnJlY3QgVHJhbnNmZXIgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBVU0JfRk5SIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIFVTQl9GTlJfRk4gICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwN0ZGKSAgICAgICAgICAgIC8qITwgRnJhbWUgTnVtYmVyICovCisjZGVmaW5lICBVU0JfRk5SX0xTT0YgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MTgwMCkgICAgICAgICAgICAvKiE8IExvc3QgU09GICovCisjZGVmaW5lICBVU0JfRk5SX0xDSyAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MjAwMCkgICAgICAgICAgICAvKiE8IExvY2tlZCAqLworI2RlZmluZSAgVVNCX0ZOUl9SWERNICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDQwMDApICAgICAgICAgICAgLyohPCBSZWNlaXZlIERhdGEgLSBMaW5lIFN0YXR1cyAqLworI2RlZmluZSAgVVNCX0ZOUl9SWERQICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDgwMDApICAgICAgICAgICAgLyohPCBSZWNlaXZlIERhdGEgKyBMaW5lIFN0YXR1cyAqLworCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgVVNCX0RBRERSIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgVVNCX0RBRERSX0FERCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4N0YpICAgICAgICAgICAgICAgLyohPCBBRERbNjowXSBiaXRzIChEZXZpY2UgQWRkcmVzcykgKi8KKyNkZWZpbmUgIFVTQl9EQUREUl9BREQwICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDAxKSAgICAgICAgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIFVTQl9EQUREUl9BREQxICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDAyKSAgICAgICAgICAgICAgIC8qITwgQml0IDEgKi8KKyNkZWZpbmUgIFVTQl9EQUREUl9BREQyICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDA0KSAgICAgICAgICAgICAgIC8qITwgQml0IDIgKi8KKyNkZWZpbmUgIFVTQl9EQUREUl9BREQzICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDA4KSAgICAgICAgICAgICAgIC8qITwgQml0IDMgKi8KKyNkZWZpbmUgIFVTQl9EQUREUl9BREQ0ICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDEwKSAgICAgICAgICAgICAgIC8qITwgQml0IDQgKi8KKyNkZWZpbmUgIFVTQl9EQUREUl9BREQ1ICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDIwKSAgICAgICAgICAgICAgIC8qITwgQml0IDUgKi8KKyNkZWZpbmUgIFVTQl9EQUREUl9BREQ2ICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDQwKSAgICAgICAgICAgICAgIC8qITwgQml0IDYgKi8KKworI2RlZmluZSAgVVNCX0RBRERSX0VGICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4ODApICAgICAgICAgICAgICAgLyohPCBFbmFibGUgRnVuY3Rpb24gKi8KKworLyoqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFVTQl9CVEFCTEUgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKi8gICAgCisjZGVmaW5lICBVU0JfQlRBQkxFX0JUQUJMRSAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4RkZGOCkgICAgICAgICAgICAvKiE8IEJ1ZmZlciBUYWJsZSAqLworCisvKiE8IEJ1ZmZlciBkZXNjcmlwdG9yIHRhYmxlICovCisvKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBVU0JfQUREUjBfVFggcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqLworI2RlZmluZSAgVVNCX0FERFIwX1RYX0FERFIwX1RYICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweEZGRkUpICAgICAgICAgICAgLyohPCBUcmFuc21pc3Npb24gQnVmZmVyIEFkZHJlc3MgMCAqLworCisvKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBVU0JfQUREUjFfVFggcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqLworI2RlZmluZSAgVVNCX0FERFIxX1RYX0FERFIxX1RYICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweEZGRkUpICAgICAgICAgICAgLyohPCBUcmFuc21pc3Npb24gQnVmZmVyIEFkZHJlc3MgMSAqLworCisvKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBVU0JfQUREUjJfVFggcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqLworI2RlZmluZSAgVVNCX0FERFIyX1RYX0FERFIyX1RYICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweEZGRkUpICAgICAgICAgICAgLyohPCBUcmFuc21pc3Npb24gQnVmZmVyIEFkZHJlc3MgMiAqLworCisvKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBVU0JfQUREUjNfVFggcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqLworI2RlZmluZSAgVVNCX0FERFIzX1RYX0FERFIzX1RYICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweEZGRkUpICAgICAgICAgICAgLyohPCBUcmFuc21pc3Npb24gQnVmZmVyIEFkZHJlc3MgMyAqLworCisvKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBVU0JfQUREUjRfVFggcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqLworI2RlZmluZSAgVVNCX0FERFI0X1RYX0FERFI0X1RYICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweEZGRkUpICAgICAgICAgICAgLyohPCBUcmFuc21pc3Npb24gQnVmZmVyIEFkZHJlc3MgNCAqLworCisvKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBVU0JfQUREUjVfVFggcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqLworI2RlZmluZSAgVVNCX0FERFI1X1RYX0FERFI1X1RYICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweEZGRkUpICAgICAgICAgICAgLyohPCBUcmFuc21pc3Npb24gQnVmZmVyIEFkZHJlc3MgNSAqLworCisvKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBVU0JfQUREUjZfVFggcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqLworI2RlZmluZSAgVVNCX0FERFI2X1RYX0FERFI2X1RYICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweEZGRkUpICAgICAgICAgICAgLyohPCBUcmFuc21pc3Npb24gQnVmZmVyIEFkZHJlc3MgNiAqLworCisvKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBVU0JfQUREUjdfVFggcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqLworI2RlZmluZSAgVVNCX0FERFI3X1RYX0FERFI3X1RYICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweEZGRkUpICAgICAgICAgICAgLyohPCBUcmFuc21pc3Npb24gQnVmZmVyIEFkZHJlc3MgNyAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCisvKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBVU0JfQ09VTlQwX1RYIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqLworI2RlZmluZSAgVVNCX0NPVU5UMF9UWF9DT1VOVDBfVFggICAgICAgICAgICAgKCh1aW50MTZfdCkweDAzRkYpICAgICAgICAgICAgLyohPCBUcmFuc21pc3Npb24gQnl0ZSBDb3VudCAwICovCisKKy8qKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFVTQl9DT1VOVDFfVFggcmVnaXN0ZXIgICoqKioqKioqKioqKioqKiovCisjZGVmaW5lICBVU0JfQ09VTlQxX1RYX0NPVU5UMV9UWCAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDNGRikgICAgICAgICAgICAvKiE8IFRyYW5zbWlzc2lvbiBCeXRlIENvdW50IDEgKi8KKworLyoqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgVVNCX0NPVU5UMl9UWCByZWdpc3RlciAgKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIFVTQl9DT1VOVDJfVFhfQ09VTlQyX1RYICAgICAgICAgICAgICgodWludDE2X3QpMHgwM0ZGKSAgICAgICAgICAgIC8qITwgVHJhbnNtaXNzaW9uIEJ5dGUgQ291bnQgMiAqLworCisvKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBVU0JfQ09VTlQzX1RYIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqLworI2RlZmluZSAgVVNCX0NPVU5UM19UWF9DT1VOVDNfVFggICAgICAgICAgICAgKCh1aW50MTZfdCkweDAzRkYpICAgICAgICAgICAgLyohPCBUcmFuc21pc3Npb24gQnl0ZSBDb3VudCAzICovCisKKy8qKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFVTQl9DT1VOVDRfVFggcmVnaXN0ZXIgICoqKioqKioqKioqKioqKiovCisjZGVmaW5lICBVU0JfQ09VTlQ0X1RYX0NPVU5UNF9UWCAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDNGRikgICAgICAgICAgICAvKiE8IFRyYW5zbWlzc2lvbiBCeXRlIENvdW50IDQgKi8KKworLyoqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgVVNCX0NPVU5UNV9UWCByZWdpc3RlciAgKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIFVTQl9DT1VOVDVfVFhfQ09VTlQ1X1RYICAgICAgICAgICAgICgodWludDE2X3QpMHgwM0ZGKSAgICAgICAgICAgIC8qITwgVHJhbnNtaXNzaW9uIEJ5dGUgQ291bnQgNSAqLworCisvKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBVU0JfQ09VTlQ2X1RYIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqLworI2RlZmluZSAgVVNCX0NPVU5UNl9UWF9DT1VOVDZfVFggICAgICAgICAgICAgKCh1aW50MTZfdCkweDAzRkYpICAgICAgICAgICAgLyohPCBUcmFuc21pc3Npb24gQnl0ZSBDb3VudCA2ICovCisKKy8qKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFVTQl9DT1VOVDdfVFggcmVnaXN0ZXIgICoqKioqKioqKioqKioqKiovCisjZGVmaW5lICBVU0JfQ09VTlQ3X1RYX0NPVU5UN19UWCAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDNGRikgICAgICAgICAgICAvKiE8IFRyYW5zbWlzc2lvbiBCeXRlIENvdW50IDcgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworLyoqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBVU0JfQ09VTlQwX1RYXzAgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIFVTQl9DT1VOVDBfVFhfMF9DT1VOVDBfVFhfMCAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDNGRikgICAgICAgIC8qITwgVHJhbnNtaXNzaW9uIEJ5dGUgQ291bnQgMCAobG93KSAqLworCisvKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFVTQl9DT1VOVDBfVFhfMSByZWdpc3RlciAgKioqKioqKioqKioqKioqLworI2RlZmluZSAgVVNCX0NPVU5UMF9UWF8xX0NPVU5UMF9UWF8xICAgICAgICAgKCh1aW50MzJfdCkweDAzRkYwMDAwKSAgICAgICAgLyohPCBUcmFuc21pc3Npb24gQnl0ZSBDb3VudCAwIChoaWdoKSAqLworCisvKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFVTQl9DT1VOVDFfVFhfMCByZWdpc3RlciAgKioqKioqKioqKioqKioqLworI2RlZmluZSAgVVNCX0NPVU5UMV9UWF8wX0NPVU5UMV9UWF8wICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDNGRikgICAgICAgIC8qITwgVHJhbnNtaXNzaW9uIEJ5dGUgQ291bnQgMSAobG93KSAqLworCisvKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFVTQl9DT1VOVDFfVFhfMSByZWdpc3RlciAgKioqKioqKioqKioqKioqLworI2RlZmluZSAgVVNCX0NPVU5UMV9UWF8xX0NPVU5UMV9UWF8xICAgICAgICAgICgodWludDMyX3QpMHgwM0ZGMDAwMCkgICAgICAgIC8qITwgVHJhbnNtaXNzaW9uIEJ5dGUgQ291bnQgMSAoaGlnaCkgKi8KKworLyoqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBVU0JfQ09VTlQyX1RYXzAgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIFVTQl9DT1VOVDJfVFhfMF9DT1VOVDJfVFhfMCAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDNGRikgICAgICAgIC8qITwgVHJhbnNtaXNzaW9uIEJ5dGUgQ291bnQgMiAobG93KSAqLworCisvKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFVTQl9DT1VOVDJfVFhfMSByZWdpc3RlciAgKioqKioqKioqKioqKioqLworI2RlZmluZSAgVVNCX0NPVU5UMl9UWF8xX0NPVU5UMl9UWF8xICAgICAgICAgKCh1aW50MzJfdCkweDAzRkYwMDAwKSAgICAgICAgLyohPCBUcmFuc21pc3Npb24gQnl0ZSBDb3VudCAyIChoaWdoKSAqLworCisvKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFVTQl9DT1VOVDNfVFhfMCByZWdpc3RlciAgKioqKioqKioqKioqKioqLworI2RlZmluZSAgVVNCX0NPVU5UM19UWF8wX0NPVU5UM19UWF8wICAgICAgICAgKCh1aW50MTZfdCkweDAwMDAwM0ZGKSAgICAgICAgLyohPCBUcmFuc21pc3Npb24gQnl0ZSBDb3VudCAzIChsb3cpICovCisKKy8qKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgVVNCX0NPVU5UM19UWF8xIHJlZ2lzdGVyICAqKioqKioqKioqKioqKiovCisjZGVmaW5lICBVU0JfQ09VTlQzX1RYXzFfQ09VTlQzX1RYXzEgICAgICAgICAoKHVpbnQxNl90KTB4MDNGRjAwMDApICAgICAgICAvKiE8IFRyYW5zbWlzc2lvbiBCeXRlIENvdW50IDMgKGhpZ2gpICovCisKKy8qKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgVVNCX0NPVU5UNF9UWF8wIHJlZ2lzdGVyICAqKioqKioqKioqKioqKiovCisjZGVmaW5lICBVU0JfQ09VTlQ0X1RYXzBfQ09VTlQ0X1RYXzAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAzRkYpICAgICAgICAvKiE8IFRyYW5zbWlzc2lvbiBCeXRlIENvdW50IDQgKGxvdykgKi8KKworLyoqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBVU0JfQ09VTlQ0X1RYXzEgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIFVTQl9DT1VOVDRfVFhfMV9DT1VOVDRfVFhfMSAgICAgICAgICgodWludDMyX3QpMHgwM0ZGMDAwMCkgICAgICAgIC8qITwgVHJhbnNtaXNzaW9uIEJ5dGUgQ291bnQgNCAoaGlnaCkgKi8KKworLyoqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBVU0JfQ09VTlQ1X1RYXzAgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIFVTQl9DT1VOVDVfVFhfMF9DT1VOVDVfVFhfMCAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDNGRikgICAgICAgIC8qITwgVHJhbnNtaXNzaW9uIEJ5dGUgQ291bnQgNSAobG93KSAqLworCisvKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFVTQl9DT1VOVDVfVFhfMSByZWdpc3RlciAgKioqKioqKioqKioqKioqLworI2RlZmluZSAgVVNCX0NPVU5UNV9UWF8xX0NPVU5UNV9UWF8xICAgICAgICAgKCh1aW50MzJfdCkweDAzRkYwMDAwKSAgICAgICAgLyohPCBUcmFuc21pc3Npb24gQnl0ZSBDb3VudCA1IChoaWdoKSAqLworCisvKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFVTQl9DT1VOVDZfVFhfMCByZWdpc3RlciAgKioqKioqKioqKioqKioqLworI2RlZmluZSAgVVNCX0NPVU5UNl9UWF8wX0NPVU5UNl9UWF8wICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwM0ZGKSAgICAgICAgLyohPCBUcmFuc21pc3Npb24gQnl0ZSBDb3VudCA2IChsb3cpICovCisKKy8qKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgVVNCX0NPVU5UNl9UWF8xIHJlZ2lzdGVyICAqKioqKioqKioqKioqKiovCisjZGVmaW5lICBVU0JfQ09VTlQ2X1RYXzFfQ09VTlQ2X1RYXzEgICAgICAgICAoKHVpbnQzMl90KTB4MDNGRjAwMDApICAgICAgICAvKiE8IFRyYW5zbWlzc2lvbiBCeXRlIENvdW50IDYgKGhpZ2gpICovCisKKy8qKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgVVNCX0NPVU5UN19UWF8wIHJlZ2lzdGVyICAqKioqKioqKioqKioqKiovCisjZGVmaW5lICBVU0JfQ09VTlQ3X1RYXzBfQ09VTlQ3X1RYXzAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAzRkYpICAgICAgICAvKiE8IFRyYW5zbWlzc2lvbiBCeXRlIENvdW50IDcgKGxvdykgKi8KKworLyoqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBVU0JfQ09VTlQ3X1RYXzEgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIFVTQl9DT1VOVDdfVFhfMV9DT1VOVDdfVFhfMSAgICAgICAgICgodWludDMyX3QpMHgwM0ZGMDAwMCkgICAgICAgIC8qITwgVHJhbnNtaXNzaW9uIEJ5dGUgQ291bnQgNyAoaGlnaCkgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworLyoqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgVVNCX0FERFIwX1JYIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIFVTQl9BRERSMF9SWF9BRERSMF9SWCAgICAgICAgICAgICAgICgodWludDE2X3QpMHhGRkZFKSAgICAgICAgICAgIC8qITwgUmVjZXB0aW9uIEJ1ZmZlciBBZGRyZXNzIDAgKi8KKworLyoqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgVVNCX0FERFIxX1JYIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIFVTQl9BRERSMV9SWF9BRERSMV9SWCAgICAgICAgICAgICAgICgodWludDE2X3QpMHhGRkZFKSAgICAgICAgICAgIC8qITwgUmVjZXB0aW9uIEJ1ZmZlciBBZGRyZXNzIDEgKi8KKworLyoqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgVVNCX0FERFIyX1JYIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIFVTQl9BRERSMl9SWF9BRERSMl9SWCAgICAgICAgICAgICAgICgodWludDE2X3QpMHhGRkZFKSAgICAgICAgICAgIC8qITwgUmVjZXB0aW9uIEJ1ZmZlciBBZGRyZXNzIDIgKi8KKworLyoqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgVVNCX0FERFIzX1JYIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIFVTQl9BRERSM19SWF9BRERSM19SWCAgICAgICAgICAgICAgICgodWludDE2X3QpMHhGRkZFKSAgICAgICAgICAgIC8qITwgUmVjZXB0aW9uIEJ1ZmZlciBBZGRyZXNzIDMgKi8KKworLyoqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgVVNCX0FERFI0X1JYIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIFVTQl9BRERSNF9SWF9BRERSNF9SWCAgICAgICAgICAgICAgICgodWludDE2X3QpMHhGRkZFKSAgICAgICAgICAgIC8qITwgUmVjZXB0aW9uIEJ1ZmZlciBBZGRyZXNzIDQgKi8KKworLyoqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgVVNCX0FERFI1X1JYIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIFVTQl9BRERSNV9SWF9BRERSNV9SWCAgICAgICAgICAgICAgICgodWludDE2X3QpMHhGRkZFKSAgICAgICAgICAgIC8qITwgUmVjZXB0aW9uIEJ1ZmZlciBBZGRyZXNzIDUgKi8KKworLyoqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgVVNCX0FERFI2X1JYIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIFVTQl9BRERSNl9SWF9BRERSNl9SWCAgICAgICAgICAgICAgICgodWludDE2X3QpMHhGRkZFKSAgICAgICAgICAgIC8qITwgUmVjZXB0aW9uIEJ1ZmZlciBBZGRyZXNzIDYgKi8KKworLyoqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgVVNCX0FERFI3X1JYIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIFVTQl9BRERSN19SWF9BRERSN19SWCAgICAgICAgICAgICAgICgodWludDE2X3QpMHhGRkZFKSAgICAgICAgICAgIC8qITwgUmVjZXB0aW9uIEJ1ZmZlciBBZGRyZXNzIDcgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworLyoqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgVVNCX0NPVU5UMF9SWCByZWdpc3RlciAgKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIFVTQl9DT1VOVDBfUlhfQ09VTlQwX1JYICAgICAgICAgICAgICgodWludDE2X3QpMHgwM0ZGKSAgICAgICAgICAgIC8qITwgUmVjZXB0aW9uIEJ5dGUgQ291bnQgKi8KKworI2RlZmluZSAgVVNCX0NPVU5UMF9SWF9OVU1fQkxPQ0sgICAgICAgICAgICAgKCh1aW50MTZfdCkweDdDMDApICAgICAgICAgICAgLyohPCBOVU1fQkxPQ0tbNDowXSBiaXRzIChOdW1iZXIgb2YgYmxvY2tzKSAqLworI2RlZmluZSAgVVNCX0NPVU5UMF9SWF9OVU1fQkxPQ0tfMCAgICAgICAgICAgKCh1aW50MTZfdCkweDA0MDApICAgICAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgVVNCX0NPVU5UMF9SWF9OVU1fQkxPQ0tfMSAgICAgICAgICAgKCh1aW50MTZfdCkweDA4MDApICAgICAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgVVNCX0NPVU5UMF9SWF9OVU1fQkxPQ0tfMiAgICAgICAgICAgKCh1aW50MTZfdCkweDEwMDApICAgICAgICAgICAgLyohPCBCaXQgMiAqLworI2RlZmluZSAgVVNCX0NPVU5UMF9SWF9OVU1fQkxPQ0tfMyAgICAgICAgICAgKCh1aW50MTZfdCkweDIwMDApICAgICAgICAgICAgLyohPCBCaXQgMyAqLworI2RlZmluZSAgVVNCX0NPVU5UMF9SWF9OVU1fQkxPQ0tfNCAgICAgICAgICAgKCh1aW50MTZfdCkweDQwMDApICAgICAgICAgICAgLyohPCBCaXQgNCAqLworCisjZGVmaW5lICBVU0JfQ09VTlQwX1JYX0JMU0laRSAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4ODAwMCkgICAgICAgICAgICAvKiE8IEJMb2NrIFNJWkUgKi8KKworLyoqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgVVNCX0NPVU5UMV9SWCByZWdpc3RlciAgKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIFVTQl9DT1VOVDFfUlhfQ09VTlQxX1JYICAgICAgICAgICAgICgodWludDE2X3QpMHgwM0ZGKSAgICAgICAgICAgIC8qITwgUmVjZXB0aW9uIEJ5dGUgQ291bnQgKi8KKworI2RlZmluZSAgVVNCX0NPVU5UMV9SWF9OVU1fQkxPQ0sgICAgICAgICAgICAgKCh1aW50MTZfdCkweDdDMDApICAgICAgICAgICAgLyohPCBOVU1fQkxPQ0tbNDowXSBiaXRzIChOdW1iZXIgb2YgYmxvY2tzKSAqLworI2RlZmluZSAgVVNCX0NPVU5UMV9SWF9OVU1fQkxPQ0tfMCAgICAgICAgICAgKCh1aW50MTZfdCkweDA0MDApICAgICAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgVVNCX0NPVU5UMV9SWF9OVU1fQkxPQ0tfMSAgICAgICAgICAgKCh1aW50MTZfdCkweDA4MDApICAgICAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgVVNCX0NPVU5UMV9SWF9OVU1fQkxPQ0tfMiAgICAgICAgICAgKCh1aW50MTZfdCkweDEwMDApICAgICAgICAgICAgLyohPCBCaXQgMiAqLworI2RlZmluZSAgVVNCX0NPVU5UMV9SWF9OVU1fQkxPQ0tfMyAgICAgICAgICAgKCh1aW50MTZfdCkweDIwMDApICAgICAgICAgICAgLyohPCBCaXQgMyAqLworI2RlZmluZSAgVVNCX0NPVU5UMV9SWF9OVU1fQkxPQ0tfNCAgICAgICAgICAgKCh1aW50MTZfdCkweDQwMDApICAgICAgICAgICAgLyohPCBCaXQgNCAqLworCisjZGVmaW5lICBVU0JfQ09VTlQxX1JYX0JMU0laRSAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4ODAwMCkgICAgICAgICAgICAvKiE8IEJMb2NrIFNJWkUgKi8KKworLyoqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgVVNCX0NPVU5UMl9SWCByZWdpc3RlciAgKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIFVTQl9DT1VOVDJfUlhfQ09VTlQyX1JYICAgICAgICAgICAgICgodWludDE2X3QpMHgwM0ZGKSAgICAgICAgICAgIC8qITwgUmVjZXB0aW9uIEJ5dGUgQ291bnQgKi8KKworI2RlZmluZSAgVVNCX0NPVU5UMl9SWF9OVU1fQkxPQ0sgICAgICAgICAgICAgKCh1aW50MTZfdCkweDdDMDApICAgICAgICAgICAgLyohPCBOVU1fQkxPQ0tbNDowXSBiaXRzIChOdW1iZXIgb2YgYmxvY2tzKSAqLworI2RlZmluZSAgVVNCX0NPVU5UMl9SWF9OVU1fQkxPQ0tfMCAgICAgICAgICAgKCh1aW50MTZfdCkweDA0MDApICAgICAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgVVNCX0NPVU5UMl9SWF9OVU1fQkxPQ0tfMSAgICAgICAgICAgKCh1aW50MTZfdCkweDA4MDApICAgICAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgVVNCX0NPVU5UMl9SWF9OVU1fQkxPQ0tfMiAgICAgICAgICAgKCh1aW50MTZfdCkweDEwMDApICAgICAgICAgICAgLyohPCBCaXQgMiAqLworI2RlZmluZSAgVVNCX0NPVU5UMl9SWF9OVU1fQkxPQ0tfMyAgICAgICAgICAgKCh1aW50MTZfdCkweDIwMDApICAgICAgICAgICAgLyohPCBCaXQgMyAqLworI2RlZmluZSAgVVNCX0NPVU5UMl9SWF9OVU1fQkxPQ0tfNCAgICAgICAgICAgKCh1aW50MTZfdCkweDQwMDApICAgICAgICAgICAgLyohPCBCaXQgNCAqLworCisjZGVmaW5lICBVU0JfQ09VTlQyX1JYX0JMU0laRSAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4ODAwMCkgICAgICAgICAgICAvKiE8IEJMb2NrIFNJWkUgKi8KKworLyoqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgVVNCX0NPVU5UM19SWCByZWdpc3RlciAgKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIFVTQl9DT1VOVDNfUlhfQ09VTlQzX1JYICAgICAgICAgICAgICgodWludDE2X3QpMHgwM0ZGKSAgICAgICAgICAgIC8qITwgUmVjZXB0aW9uIEJ5dGUgQ291bnQgKi8KKworI2RlZmluZSAgVVNCX0NPVU5UM19SWF9OVU1fQkxPQ0sgICAgICAgICAgICAgKCh1aW50MTZfdCkweDdDMDApICAgICAgICAgICAgLyohPCBOVU1fQkxPQ0tbNDowXSBiaXRzIChOdW1iZXIgb2YgYmxvY2tzKSAqLworI2RlZmluZSAgVVNCX0NPVU5UM19SWF9OVU1fQkxPQ0tfMCAgICAgICAgICAgKCh1aW50MTZfdCkweDA0MDApICAgICAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgVVNCX0NPVU5UM19SWF9OVU1fQkxPQ0tfMSAgICAgICAgICAgKCh1aW50MTZfdCkweDA4MDApICAgICAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgVVNCX0NPVU5UM19SWF9OVU1fQkxPQ0tfMiAgICAgICAgICAgKCh1aW50MTZfdCkweDEwMDApICAgICAgICAgICAgLyohPCBCaXQgMiAqLworI2RlZmluZSAgVVNCX0NPVU5UM19SWF9OVU1fQkxPQ0tfMyAgICAgICAgICAgKCh1aW50MTZfdCkweDIwMDApICAgICAgICAgICAgLyohPCBCaXQgMyAqLworI2RlZmluZSAgVVNCX0NPVU5UM19SWF9OVU1fQkxPQ0tfNCAgICAgICAgICAgKCh1aW50MTZfdCkweDQwMDApICAgICAgICAgICAgLyohPCBCaXQgNCAqLworCisjZGVmaW5lICBVU0JfQ09VTlQzX1JYX0JMU0laRSAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4ODAwMCkgICAgICAgICAgICAvKiE8IEJMb2NrIFNJWkUgKi8KKworLyoqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgVVNCX0NPVU5UNF9SWCByZWdpc3RlciAgKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIFVTQl9DT1VOVDRfUlhfQ09VTlQ0X1JYICAgICAgICAgICAgICgodWludDE2X3QpMHgwM0ZGKSAgICAgICAgICAgIC8qITwgUmVjZXB0aW9uIEJ5dGUgQ291bnQgKi8KKworI2RlZmluZSAgVVNCX0NPVU5UNF9SWF9OVU1fQkxPQ0sgICAgICAgICAgICAgKCh1aW50MTZfdCkweDdDMDApICAgICAgICAgICAgLyohPCBOVU1fQkxPQ0tbNDowXSBiaXRzIChOdW1iZXIgb2YgYmxvY2tzKSAqLworI2RlZmluZSAgVVNCX0NPVU5UNF9SWF9OVU1fQkxPQ0tfMCAgICAgICAgICAgKCh1aW50MTZfdCkweDA0MDApICAgICAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgVVNCX0NPVU5UNF9SWF9OVU1fQkxPQ0tfMSAgICAgICAgICAgKCh1aW50MTZfdCkweDA4MDApICAgICAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgVVNCX0NPVU5UNF9SWF9OVU1fQkxPQ0tfMiAgICAgICAgICAgKCh1aW50MTZfdCkweDEwMDApICAgICAgICAgICAgLyohPCBCaXQgMiAqLworI2RlZmluZSAgVVNCX0NPVU5UNF9SWF9OVU1fQkxPQ0tfMyAgICAgICAgICAgKCh1aW50MTZfdCkweDIwMDApICAgICAgICAgICAgLyohPCBCaXQgMyAqLworI2RlZmluZSAgVVNCX0NPVU5UNF9SWF9OVU1fQkxPQ0tfNCAgICAgICAgICAgKCh1aW50MTZfdCkweDQwMDApICAgICAgICAgICAgLyohPCBCaXQgNCAqLworCisjZGVmaW5lICBVU0JfQ09VTlQ0X1JYX0JMU0laRSAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4ODAwMCkgICAgICAgICAgICAvKiE8IEJMb2NrIFNJWkUgKi8KKworLyoqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgVVNCX0NPVU5UNV9SWCByZWdpc3RlciAgKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIFVTQl9DT1VOVDVfUlhfQ09VTlQ1X1JYICAgICAgICAgICAgICgodWludDE2X3QpMHgwM0ZGKSAgICAgICAgICAgIC8qITwgUmVjZXB0aW9uIEJ5dGUgQ291bnQgKi8KKworI2RlZmluZSAgVVNCX0NPVU5UNV9SWF9OVU1fQkxPQ0sgICAgICAgICAgICAgKCh1aW50MTZfdCkweDdDMDApICAgICAgICAgICAgLyohPCBOVU1fQkxPQ0tbNDowXSBiaXRzIChOdW1iZXIgb2YgYmxvY2tzKSAqLworI2RlZmluZSAgVVNCX0NPVU5UNV9SWF9OVU1fQkxPQ0tfMCAgICAgICAgICAgKCh1aW50MTZfdCkweDA0MDApICAgICAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgVVNCX0NPVU5UNV9SWF9OVU1fQkxPQ0tfMSAgICAgICAgICAgKCh1aW50MTZfdCkweDA4MDApICAgICAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgVVNCX0NPVU5UNV9SWF9OVU1fQkxPQ0tfMiAgICAgICAgICAgKCh1aW50MTZfdCkweDEwMDApICAgICAgICAgICAgLyohPCBCaXQgMiAqLworI2RlZmluZSAgVVNCX0NPVU5UNV9SWF9OVU1fQkxPQ0tfMyAgICAgICAgICAgKCh1aW50MTZfdCkweDIwMDApICAgICAgICAgICAgLyohPCBCaXQgMyAqLworI2RlZmluZSAgVVNCX0NPVU5UNV9SWF9OVU1fQkxPQ0tfNCAgICAgICAgICAgKCh1aW50MTZfdCkweDQwMDApICAgICAgICAgICAgLyohPCBCaXQgNCAqLworCisjZGVmaW5lICBVU0JfQ09VTlQ1X1JYX0JMU0laRSAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4ODAwMCkgICAgICAgICAgICAvKiE8IEJMb2NrIFNJWkUgKi8KKworLyoqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgVVNCX0NPVU5UNl9SWCByZWdpc3RlciAgKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIFVTQl9DT1VOVDZfUlhfQ09VTlQ2X1JYICAgICAgICAgICAgICgodWludDE2X3QpMHgwM0ZGKSAgICAgICAgICAgIC8qITwgUmVjZXB0aW9uIEJ5dGUgQ291bnQgKi8KKworI2RlZmluZSAgVVNCX0NPVU5UNl9SWF9OVU1fQkxPQ0sgICAgICAgICAgICAgKCh1aW50MTZfdCkweDdDMDApICAgICAgICAgICAgLyohPCBOVU1fQkxPQ0tbNDowXSBiaXRzIChOdW1iZXIgb2YgYmxvY2tzKSAqLworI2RlZmluZSAgVVNCX0NPVU5UNl9SWF9OVU1fQkxPQ0tfMCAgICAgICAgICAgKCh1aW50MTZfdCkweDA0MDApICAgICAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgVVNCX0NPVU5UNl9SWF9OVU1fQkxPQ0tfMSAgICAgICAgICAgKCh1aW50MTZfdCkweDA4MDApICAgICAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgVVNCX0NPVU5UNl9SWF9OVU1fQkxPQ0tfMiAgICAgICAgICAgKCh1aW50MTZfdCkweDEwMDApICAgICAgICAgICAgLyohPCBCaXQgMiAqLworI2RlZmluZSAgVVNCX0NPVU5UNl9SWF9OVU1fQkxPQ0tfMyAgICAgICAgICAgKCh1aW50MTZfdCkweDIwMDApICAgICAgICAgICAgLyohPCBCaXQgMyAqLworI2RlZmluZSAgVVNCX0NPVU5UNl9SWF9OVU1fQkxPQ0tfNCAgICAgICAgICAgKCh1aW50MTZfdCkweDQwMDApICAgICAgICAgICAgLyohPCBCaXQgNCAqLworCisjZGVmaW5lICBVU0JfQ09VTlQ2X1JYX0JMU0laRSAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4ODAwMCkgICAgICAgICAgICAvKiE8IEJMb2NrIFNJWkUgKi8KKworLyoqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgVVNCX0NPVU5UN19SWCByZWdpc3RlciAgKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIFVTQl9DT1VOVDdfUlhfQ09VTlQ3X1JYICAgICAgICAgICAgICgodWludDE2X3QpMHgwM0ZGKSAgICAgICAgICAgIC8qITwgUmVjZXB0aW9uIEJ5dGUgQ291bnQgKi8KKworI2RlZmluZSAgVVNCX0NPVU5UN19SWF9OVU1fQkxPQ0sgICAgICAgICAgICAgKCh1aW50MTZfdCkweDdDMDApICAgICAgICAgICAgLyohPCBOVU1fQkxPQ0tbNDowXSBiaXRzIChOdW1iZXIgb2YgYmxvY2tzKSAqLworI2RlZmluZSAgVVNCX0NPVU5UN19SWF9OVU1fQkxPQ0tfMCAgICAgICAgICAgKCh1aW50MTZfdCkweDA0MDApICAgICAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgVVNCX0NPVU5UN19SWF9OVU1fQkxPQ0tfMSAgICAgICAgICAgKCh1aW50MTZfdCkweDA4MDApICAgICAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgVVNCX0NPVU5UN19SWF9OVU1fQkxPQ0tfMiAgICAgICAgICAgKCh1aW50MTZfdCkweDEwMDApICAgICAgICAgICAgLyohPCBCaXQgMiAqLworI2RlZmluZSAgVVNCX0NPVU5UN19SWF9OVU1fQkxPQ0tfMyAgICAgICAgICAgKCh1aW50MTZfdCkweDIwMDApICAgICAgICAgICAgLyohPCBCaXQgMyAqLworI2RlZmluZSAgVVNCX0NPVU5UN19SWF9OVU1fQkxPQ0tfNCAgICAgICAgICAgKCh1aW50MTZfdCkweDQwMDApICAgICAgICAgICAgLyohPCBCaXQgNCAqLworCisjZGVmaW5lICBVU0JfQ09VTlQ3X1JYX0JMU0laRSAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4ODAwMCkgICAgICAgICAgICAvKiE8IEJMb2NrIFNJWkUgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworLyoqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBVU0JfQ09VTlQwX1JYXzAgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIFVTQl9DT1VOVDBfUlhfMF9DT1VOVDBfUlhfMCAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDNGRikgICAgICAgIC8qITwgUmVjZXB0aW9uIEJ5dGUgQ291bnQgKGxvdykgKi8KKworI2RlZmluZSAgVVNCX0NPVU5UMF9SWF8wX05VTV9CTE9DS18wICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA3QzAwKSAgICAgICAgLyohPCBOVU1fQkxPQ0tfMFs0OjBdIGJpdHMgKE51bWJlciBvZiBibG9ja3MpIChsb3cpICovCisjZGVmaW5lICBVU0JfQ09VTlQwX1JYXzBfTlVNX0JMT0NLXzBfMCAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBVU0JfQ09VTlQwX1JYXzBfTlVNX0JMT0NLXzBfMSAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA4MDApICAgICAgICAvKiE8IEJpdCAxICovCisjZGVmaW5lICBVU0JfQ09VTlQwX1JYXzBfTlVNX0JMT0NLXzBfMiAgICAgICAoKHVpbnQzMl90KTB4MDAwMDEwMDApICAgICAgICAvKiE8IEJpdCAyICovCisjZGVmaW5lICBVU0JfQ09VTlQwX1JYXzBfTlVNX0JMT0NLXzBfMyAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAgICAgICAvKiE8IEJpdCAzICovCisjZGVmaW5lICBVU0JfQ09VTlQwX1JYXzBfTlVNX0JMT0NLXzBfNCAgICAgICAoKHVpbnQzMl90KTB4MDAwMDQwMDApICAgICAgICAvKiE8IEJpdCA0ICovCisKKyNkZWZpbmUgIFVTQl9DT1VOVDBfUlhfMF9CTFNJWkVfMCAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwODAwMCkgICAgICAgIC8qITwgQkxvY2sgU0laRSAobG93KSAqLworCisvKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFVTQl9DT1VOVDBfUlhfMSByZWdpc3RlciAgKioqKioqKioqKioqKioqLworI2RlZmluZSAgVVNCX0NPVU5UMF9SWF8xX0NPVU5UMF9SWF8xICAgICAgICAgKCh1aW50MzJfdCkweDAzRkYwMDAwKSAgICAgICAgLyohPCBSZWNlcHRpb24gQnl0ZSBDb3VudCAoaGlnaCkgKi8KKworI2RlZmluZSAgVVNCX0NPVU5UMF9SWF8xX05VTV9CTE9DS18xICAgICAgICAgKCh1aW50MzJfdCkweDdDMDAwMDAwKSAgICAgICAgLyohPCBOVU1fQkxPQ0tfMVs0OjBdIGJpdHMgKE51bWJlciBvZiBibG9ja3MpIChoaWdoKSAqLworI2RlZmluZSAgVVNCX0NPVU5UMF9SWF8xX05VTV9CTE9DS18xXzAgICAgICAgKCh1aW50MzJfdCkweDA0MDAwMDAwKSAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgVVNCX0NPVU5UMF9SWF8xX05VTV9CTE9DS18xXzEgICAgICAgKCh1aW50MzJfdCkweDA4MDAwMDAwKSAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgVVNCX0NPVU5UMF9SWF8xX05VTV9CTE9DS18xXzIgICAgICAgKCh1aW50MzJfdCkweDEwMDAwMDAwKSAgICAgICAgLyohPCBCaXQgMiAqLworI2RlZmluZSAgVVNCX0NPVU5UMF9SWF8xX05VTV9CTE9DS18xXzMgICAgICAgKCh1aW50MzJfdCkweDIwMDAwMDAwKSAgICAgICAgLyohPCBCaXQgMyAqLworI2RlZmluZSAgVVNCX0NPVU5UMF9SWF8xX05VTV9CTE9DS18xXzQgICAgICAgKCh1aW50MzJfdCkweDQwMDAwMDAwKSAgICAgICAgLyohPCBCaXQgNCAqLworCisjZGVmaW5lICBVU0JfQ09VTlQwX1JYXzFfQkxTSVpFXzEgICAgICAgICAgICAoKHVpbnQzMl90KTB4ODAwMDAwMDApICAgICAgICAvKiE8IEJMb2NrIFNJWkUgKGhpZ2gpICovCisKKy8qKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgVVNCX0NPVU5UMV9SWF8wIHJlZ2lzdGVyICAqKioqKioqKioqKioqKiovCisjZGVmaW5lICBVU0JfQ09VTlQxX1JYXzBfQ09VTlQxX1JYXzAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAzRkYpICAgICAgICAvKiE8IFJlY2VwdGlvbiBCeXRlIENvdW50IChsb3cpICovCisKKyNkZWZpbmUgIFVTQl9DT1VOVDFfUlhfMF9OVU1fQkxPQ0tfMCAgICAgICAgICgodWludDMyX3QpMHgwMDAwN0MwMCkgICAgICAgIC8qITwgTlVNX0JMT0NLXzBbNDowXSBiaXRzIChOdW1iZXIgb2YgYmxvY2tzKSAobG93KSAqLworI2RlZmluZSAgVVNCX0NPVU5UMV9SWF8wX05VTV9CTE9DS18wXzAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwNDAwKSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgVVNCX0NPVU5UMV9SWF8wX05VTV9CTE9DS18wXzEgICAgICAgKCh1aW50MzJfdCkweDAwMDAwODAwKSAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgVVNCX0NPVU5UMV9SWF8wX05VTV9CTE9DS18wXzIgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKSAgICAgICAgLyohPCBCaXQgMiAqLworI2RlZmluZSAgVVNCX0NPVU5UMV9SWF8wX05VTV9CTE9DS18wXzMgICAgICAgKCh1aW50MzJfdCkweDAwMDAyMDAwKSAgICAgICAgLyohPCBCaXQgMyAqLworI2RlZmluZSAgVVNCX0NPVU5UMV9SWF8wX05VTV9CTE9DS18wXzQgICAgICAgKCh1aW50MzJfdCkweDAwMDA0MDAwKSAgICAgICAgLyohPCBCaXQgNCAqLworCisjZGVmaW5lICBVU0JfQ09VTlQxX1JYXzBfQkxTSVpFXzAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDgwMDApICAgICAgICAvKiE8IEJMb2NrIFNJWkUgKGxvdykgKi8KKworLyoqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBVU0JfQ09VTlQxX1JYXzEgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIFVTQl9DT1VOVDFfUlhfMV9DT1VOVDFfUlhfMSAgICAgICAgICgodWludDMyX3QpMHgwM0ZGMDAwMCkgICAgICAgIC8qITwgUmVjZXB0aW9uIEJ5dGUgQ291bnQgKGhpZ2gpICovCisKKyNkZWZpbmUgIFVTQl9DT1VOVDFfUlhfMV9OVU1fQkxPQ0tfMSAgICAgICAgICgodWludDMyX3QpMHg3QzAwMDAwMCkgICAgICAgIC8qITwgTlVNX0JMT0NLXzFbNDowXSBiaXRzIChOdW1iZXIgb2YgYmxvY2tzKSAoaGlnaCkgKi8KKyNkZWZpbmUgIFVTQl9DT1VOVDFfUlhfMV9OVU1fQkxPQ0tfMV8wICAgICAgICgodWludDMyX3QpMHgwNDAwMDAwMCkgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIFVTQl9DT1VOVDFfUlhfMV9OVU1fQkxPQ0tfMV8xICAgICAgICgodWludDMyX3QpMHgwODAwMDAwMCkgICAgICAgIC8qITwgQml0IDEgKi8KKyNkZWZpbmUgIFVTQl9DT1VOVDFfUlhfMV9OVU1fQkxPQ0tfMV8yICAgICAgICgodWludDMyX3QpMHgxMDAwMDAwMCkgICAgICAgIC8qITwgQml0IDIgKi8KKyNkZWZpbmUgIFVTQl9DT1VOVDFfUlhfMV9OVU1fQkxPQ0tfMV8zICAgICAgICgodWludDMyX3QpMHgyMDAwMDAwMCkgICAgICAgIC8qITwgQml0IDMgKi8KKyNkZWZpbmUgIFVTQl9DT1VOVDFfUlhfMV9OVU1fQkxPQ0tfMV80ICAgICAgICgodWludDMyX3QpMHg0MDAwMDAwMCkgICAgICAgIC8qITwgQml0IDQgKi8KKworI2RlZmluZSAgVVNCX0NPVU5UMV9SWF8xX0JMU0laRV8xICAgICAgICAgICAgKCh1aW50MzJfdCkweDgwMDAwMDAwKSAgICAgICAgLyohPCBCTG9jayBTSVpFIChoaWdoKSAqLworCisvKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFVTQl9DT1VOVDJfUlhfMCByZWdpc3RlciAgKioqKioqKioqKioqKioqLworI2RlZmluZSAgVVNCX0NPVU5UMl9SWF8wX0NPVU5UMl9SWF8wICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwM0ZGKSAgICAgICAgLyohPCBSZWNlcHRpb24gQnl0ZSBDb3VudCAobG93KSAqLworCisjZGVmaW5lICBVU0JfQ09VTlQyX1JYXzBfTlVNX0JMT0NLXzAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDdDMDApICAgICAgICAvKiE8IE5VTV9CTE9DS18wWzQ6MF0gYml0cyAoTnVtYmVyIG9mIGJsb2NrcykgKGxvdykgKi8KKyNkZWZpbmUgIFVTQl9DT1VOVDJfUlhfMF9OVU1fQkxPQ0tfMF8wICAgICAgICgodWludDMyX3QpMHgwMDAwMDQwMCkgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIFVTQl9DT1VOVDJfUlhfMF9OVU1fQkxPQ0tfMF8xICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgICAgICAgIC8qITwgQml0IDEgKi8KKyNkZWZpbmUgIFVTQl9DT1VOVDJfUlhfMF9OVU1fQkxPQ0tfMF8yICAgICAgICgodWludDMyX3QpMHgwMDAwMTAwMCkgICAgICAgIC8qITwgQml0IDIgKi8KKyNkZWZpbmUgIFVTQl9DT1VOVDJfUlhfMF9OVU1fQkxPQ0tfMF8zICAgICAgICgodWludDMyX3QpMHgwMDAwMjAwMCkgICAgICAgIC8qITwgQml0IDMgKi8KKyNkZWZpbmUgIFVTQl9DT1VOVDJfUlhfMF9OVU1fQkxPQ0tfMF80ICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgICAgICAgIC8qITwgQml0IDQgKi8KKworI2RlZmluZSAgVVNCX0NPVU5UMl9SWF8wX0JMU0laRV8wICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKSAgICAgICAgLyohPCBCTG9jayBTSVpFIChsb3cpICovCisKKy8qKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgVVNCX0NPVU5UMl9SWF8xIHJlZ2lzdGVyICAqKioqKioqKioqKioqKiovCisjZGVmaW5lICBVU0JfQ09VTlQyX1JYXzFfQ09VTlQyX1JYXzEgICAgICAgICAoKHVpbnQzMl90KTB4MDNGRjAwMDApICAgICAgICAvKiE8IFJlY2VwdGlvbiBCeXRlIENvdW50IChoaWdoKSAqLworCisjZGVmaW5lICBVU0JfQ09VTlQyX1JYXzFfTlVNX0JMT0NLXzEgICAgICAgICAoKHVpbnQzMl90KTB4N0MwMDAwMDApICAgICAgICAvKiE8IE5VTV9CTE9DS18xWzQ6MF0gYml0cyAoTnVtYmVyIG9mIGJsb2NrcykgKGhpZ2gpICovCisjZGVmaW5lICBVU0JfQ09VTlQyX1JYXzFfTlVNX0JMT0NLXzFfMCAgICAgICAoKHVpbnQzMl90KTB4MDQwMDAwMDApICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBVU0JfQ09VTlQyX1JYXzFfTlVNX0JMT0NLXzFfMSAgICAgICAoKHVpbnQzMl90KTB4MDgwMDAwMDApICAgICAgICAvKiE8IEJpdCAxICovCisjZGVmaW5lICBVU0JfQ09VTlQyX1JYXzFfTlVNX0JMT0NLXzFfMiAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwMDApICAgICAgICAvKiE8IEJpdCAyICovCisjZGVmaW5lICBVU0JfQ09VTlQyX1JYXzFfTlVNX0JMT0NLXzFfMyAgICAgICAoKHVpbnQzMl90KTB4MjAwMDAwMDApICAgICAgICAvKiE8IEJpdCAzICovCisjZGVmaW5lICBVU0JfQ09VTlQyX1JYXzFfTlVNX0JMT0NLXzFfNCAgICAgICAoKHVpbnQzMl90KTB4NDAwMDAwMDApICAgICAgICAvKiE8IEJpdCA0ICovCisKKyNkZWZpbmUgIFVTQl9DT1VOVDJfUlhfMV9CTFNJWkVfMSAgICAgICAgICAgICgodWludDMyX3QpMHg4MDAwMDAwMCkgICAgICAgIC8qITwgQkxvY2sgU0laRSAoaGlnaCkgKi8KKworLyoqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBVU0JfQ09VTlQzX1JYXzAgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIFVTQl9DT1VOVDNfUlhfMF9DT1VOVDNfUlhfMCAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDNGRikgICAgICAgIC8qITwgUmVjZXB0aW9uIEJ5dGUgQ291bnQgKGxvdykgKi8KKworI2RlZmluZSAgVVNCX0NPVU5UM19SWF8wX05VTV9CTE9DS18wICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA3QzAwKSAgICAgICAgLyohPCBOVU1fQkxPQ0tfMFs0OjBdIGJpdHMgKE51bWJlciBvZiBibG9ja3MpIChsb3cpICovCisjZGVmaW5lICBVU0JfQ09VTlQzX1JYXzBfTlVNX0JMT0NLXzBfMCAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBVU0JfQ09VTlQzX1JYXzBfTlVNX0JMT0NLXzBfMSAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA4MDApICAgICAgICAvKiE8IEJpdCAxICovCisjZGVmaW5lICBVU0JfQ09VTlQzX1JYXzBfTlVNX0JMT0NLXzBfMiAgICAgICAoKHVpbnQzMl90KTB4MDAwMDEwMDApICAgICAgICAvKiE8IEJpdCAyICovCisjZGVmaW5lICBVU0JfQ09VTlQzX1JYXzBfTlVNX0JMT0NLXzBfMyAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAgICAgICAvKiE8IEJpdCAzICovCisjZGVmaW5lICBVU0JfQ09VTlQzX1JYXzBfTlVNX0JMT0NLXzBfNCAgICAgICAoKHVpbnQzMl90KTB4MDAwMDQwMDApICAgICAgICAvKiE8IEJpdCA0ICovCisKKyNkZWZpbmUgIFVTQl9DT1VOVDNfUlhfMF9CTFNJWkVfMCAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwODAwMCkgICAgICAgIC8qITwgQkxvY2sgU0laRSAobG93KSAqLworCisvKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFVTQl9DT1VOVDNfUlhfMSByZWdpc3RlciAgKioqKioqKioqKioqKioqLworI2RlZmluZSAgVVNCX0NPVU5UM19SWF8xX0NPVU5UM19SWF8xICAgICAgICAgKCh1aW50MzJfdCkweDAzRkYwMDAwKSAgICAgICAgLyohPCBSZWNlcHRpb24gQnl0ZSBDb3VudCAoaGlnaCkgKi8KKworI2RlZmluZSAgVVNCX0NPVU5UM19SWF8xX05VTV9CTE9DS18xICAgICAgICAgKCh1aW50MzJfdCkweDdDMDAwMDAwKSAgICAgICAgLyohPCBOVU1fQkxPQ0tfMVs0OjBdIGJpdHMgKE51bWJlciBvZiBibG9ja3MpIChoaWdoKSAqLworI2RlZmluZSAgVVNCX0NPVU5UM19SWF8xX05VTV9CTE9DS18xXzAgICAgICAgKCh1aW50MzJfdCkweDA0MDAwMDAwKSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgVVNCX0NPVU5UM19SWF8xX05VTV9CTE9DS18xXzEgICAgICAgKCh1aW50MzJfdCkweDA4MDAwMDAwKSAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgVVNCX0NPVU5UM19SWF8xX05VTV9CTE9DS18xXzIgICAgICAgKCh1aW50MzJfdCkweDEwMDAwMDAwKSAgICAgICAgLyohPCBCaXQgMiAqLworI2RlZmluZSAgVVNCX0NPVU5UM19SWF8xX05VTV9CTE9DS18xXzMgICAgICAgKCh1aW50MzJfdCkweDIwMDAwMDAwKSAgICAgICAgLyohPCBCaXQgMyAqLworI2RlZmluZSAgVVNCX0NPVU5UM19SWF8xX05VTV9CTE9DS18xXzQgICAgICAgKCh1aW50MzJfdCkweDQwMDAwMDAwKSAgICAgICAgLyohPCBCaXQgNCAqLworCisjZGVmaW5lICBVU0JfQ09VTlQzX1JYXzFfQkxTSVpFXzEgICAgICAgICAgICAoKHVpbnQzMl90KTB4ODAwMDAwMDApICAgICAgICAvKiE8IEJMb2NrIFNJWkUgKGhpZ2gpICovCisKKy8qKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgVVNCX0NPVU5UNF9SWF8wIHJlZ2lzdGVyICAqKioqKioqKioqKioqKiovCisjZGVmaW5lICBVU0JfQ09VTlQ0X1JYXzBfQ09VTlQ0X1JYXzAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAzRkYpICAgICAgICAvKiE8IFJlY2VwdGlvbiBCeXRlIENvdW50IChsb3cpICovCisKKyNkZWZpbmUgIFVTQl9DT1VOVDRfUlhfMF9OVU1fQkxPQ0tfMCAgICAgICAgICgodWludDMyX3QpMHgwMDAwN0MwMCkgICAgICAgIC8qITwgTlVNX0JMT0NLXzBbNDowXSBiaXRzIChOdW1iZXIgb2YgYmxvY2tzKSAobG93KSAqLworI2RlZmluZSAgVVNCX0NPVU5UNF9SWF8wX05VTV9CTE9DS18wXzAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBVU0JfQ09VTlQ0X1JYXzBfTlVNX0JMT0NLXzBfMSAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgICAgICAgIC8qITwgQml0IDEgKi8KKyNkZWZpbmUgIFVTQl9DT1VOVDRfUlhfMF9OVU1fQkxPQ0tfMF8yICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKSAgICAgICAgLyohPCBCaXQgMiAqLworI2RlZmluZSAgVVNCX0NPVU5UNF9SWF8wX05VTV9CTE9DS18wXzMgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAgICAgICAvKiE8IEJpdCAzICovCisjZGVmaW5lICBVU0JfQ09VTlQ0X1JYXzBfTlVNX0JMT0NLXzBfNCAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgICAgICAgIC8qITwgQml0IDQgKi8KKworI2RlZmluZSAgVVNCX0NPVU5UNF9SWF8wX0JMU0laRV8wICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKSAgICAgICAgLyohPCBCTG9jayBTSVpFIChsb3cpICovCisKKy8qKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgVVNCX0NPVU5UNF9SWF8xIHJlZ2lzdGVyICAqKioqKioqKioqKioqKiovCisjZGVmaW5lICBVU0JfQ09VTlQ0X1JYXzFfQ09VTlQ0X1JYXzEgICAgICAgICAoKHVpbnQzMl90KTB4MDNGRjAwMDApICAgICAgICAvKiE8IFJlY2VwdGlvbiBCeXRlIENvdW50IChoaWdoKSAqLworCisjZGVmaW5lICBVU0JfQ09VTlQ0X1JYXzFfTlVNX0JMT0NLXzEgICAgICAgICAoKHVpbnQzMl90KTB4N0MwMDAwMDApICAgICAgICAvKiE8IE5VTV9CTE9DS18xWzQ6MF0gYml0cyAoTnVtYmVyIG9mIGJsb2NrcykgKGhpZ2gpICovCisjZGVmaW5lICBVU0JfQ09VTlQ0X1JYXzFfTlVNX0JMT0NLXzFfMCAgICAgICAoKHVpbnQzMl90KTB4MDQwMDAwMDApICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBVU0JfQ09VTlQ0X1JYXzFfTlVNX0JMT0NLXzFfMSAgICAgICAoKHVpbnQzMl90KTB4MDgwMDAwMDApICAgICAgICAvKiE8IEJpdCAxICovCisjZGVmaW5lICBVU0JfQ09VTlQ0X1JYXzFfTlVNX0JMT0NLXzFfMiAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwMDApICAgICAgICAvKiE8IEJpdCAyICovCisjZGVmaW5lICBVU0JfQ09VTlQ0X1JYXzFfTlVNX0JMT0NLXzFfMyAgICAgICAoKHVpbnQzMl90KTB4MjAwMDAwMDApICAgICAgICAvKiE8IEJpdCAzICovCisjZGVmaW5lICBVU0JfQ09VTlQ0X1JYXzFfTlVNX0JMT0NLXzFfNCAgICAgICAoKHVpbnQzMl90KTB4NDAwMDAwMDApICAgICAgICAvKiE8IEJpdCA0ICovCisKKyNkZWZpbmUgIFVTQl9DT1VOVDRfUlhfMV9CTFNJWkVfMSAgICAgICAgICAgICgodWludDMyX3QpMHg4MDAwMDAwMCkgICAgICAgIC8qITwgQkxvY2sgU0laRSAoaGlnaCkgKi8KKworLyoqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBVU0JfQ09VTlQ1X1JYXzAgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIFVTQl9DT1VOVDVfUlhfMF9DT1VOVDVfUlhfMCAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDNGRikgICAgICAgIC8qITwgUmVjZXB0aW9uIEJ5dGUgQ291bnQgKGxvdykgKi8KKworI2RlZmluZSAgVVNCX0NPVU5UNV9SWF8wX05VTV9CTE9DS18wICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA3QzAwKSAgICAgICAgLyohPCBOVU1fQkxPQ0tfMFs0OjBdIGJpdHMgKE51bWJlciBvZiBibG9ja3MpIChsb3cpICovCisjZGVmaW5lICBVU0JfQ09VTlQ1X1JYXzBfTlVNX0JMT0NLXzBfMCAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBVU0JfQ09VTlQ1X1JYXzBfTlVNX0JMT0NLXzBfMSAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA4MDApICAgICAgICAvKiE8IEJpdCAxICovCisjZGVmaW5lICBVU0JfQ09VTlQ1X1JYXzBfTlVNX0JMT0NLXzBfMiAgICAgICAoKHVpbnQzMl90KTB4MDAwMDEwMDApICAgICAgICAvKiE8IEJpdCAyICovCisjZGVmaW5lICBVU0JfQ09VTlQ1X1JYXzBfTlVNX0JMT0NLXzBfMyAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAgICAgICAvKiE8IEJpdCAzICovCisjZGVmaW5lICBVU0JfQ09VTlQ1X1JYXzBfTlVNX0JMT0NLXzBfNCAgICAgICAoKHVpbnQzMl90KTB4MDAwMDQwMDApICAgICAgICAvKiE8IEJpdCA0ICovCisKKyNkZWZpbmUgIFVTQl9DT1VOVDVfUlhfMF9CTFNJWkVfMCAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwODAwMCkgICAgICAgIC8qITwgQkxvY2sgU0laRSAobG93KSAqLworCisvKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFVTQl9DT1VOVDVfUlhfMSByZWdpc3RlciAgKioqKioqKioqKioqKioqLworI2RlZmluZSAgVVNCX0NPVU5UNV9SWF8xX0NPVU5UNV9SWF8xICAgICAgICAgKCh1aW50MzJfdCkweDAzRkYwMDAwKSAgICAgICAgLyohPCBSZWNlcHRpb24gQnl0ZSBDb3VudCAoaGlnaCkgKi8KKworI2RlZmluZSAgVVNCX0NPVU5UNV9SWF8xX05VTV9CTE9DS18xICAgICAgICAgKCh1aW50MzJfdCkweDdDMDAwMDAwKSAgICAgICAgLyohPCBOVU1fQkxPQ0tfMVs0OjBdIGJpdHMgKE51bWJlciBvZiBibG9ja3MpIChoaWdoKSAqLworI2RlZmluZSAgVVNCX0NPVU5UNV9SWF8xX05VTV9CTE9DS18xXzAgICAgICAgKCh1aW50MzJfdCkweDA0MDAwMDAwKSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgVVNCX0NPVU5UNV9SWF8xX05VTV9CTE9DS18xXzEgICAgICAgKCh1aW50MzJfdCkweDA4MDAwMDAwKSAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgVVNCX0NPVU5UNV9SWF8xX05VTV9CTE9DS18xXzIgICAgICAgKCh1aW50MzJfdCkweDEwMDAwMDAwKSAgICAgICAgLyohPCBCaXQgMiAqLworI2RlZmluZSAgVVNCX0NPVU5UNV9SWF8xX05VTV9CTE9DS18xXzMgICAgICAgKCh1aW50MzJfdCkweDIwMDAwMDAwKSAgICAgICAgLyohPCBCaXQgMyAqLworI2RlZmluZSAgVVNCX0NPVU5UNV9SWF8xX05VTV9CTE9DS18xXzQgICAgICAgKCh1aW50MzJfdCkweDQwMDAwMDAwKSAgICAgICAgLyohPCBCaXQgNCAqLworCisjZGVmaW5lICBVU0JfQ09VTlQ1X1JYXzFfQkxTSVpFXzEgICAgICAgICAgICAoKHVpbnQzMl90KTB4ODAwMDAwMDApICAgICAgICAvKiE8IEJMb2NrIFNJWkUgKGhpZ2gpICovCisKKy8qKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBVU0JfQ09VTlQ2X1JYXzAgIHJlZ2lzdGVyICAqKioqKioqKioqKioqKiovCisjZGVmaW5lICBVU0JfQ09VTlQ2X1JYXzBfQ09VTlQ2X1JYXzAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAzRkYpICAgICAgICAvKiE8IFJlY2VwdGlvbiBCeXRlIENvdW50IChsb3cpICovCisKKyNkZWZpbmUgIFVTQl9DT1VOVDZfUlhfMF9OVU1fQkxPQ0tfMCAgICAgICAgICgodWludDMyX3QpMHgwMDAwN0MwMCkgICAgICAgIC8qITwgTlVNX0JMT0NLXzBbNDowXSBiaXRzIChOdW1iZXIgb2YgYmxvY2tzKSAobG93KSAqLworI2RlZmluZSAgVVNCX0NPVU5UNl9SWF8wX05VTV9CTE9DS18wXzAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwNDAwKSAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgVVNCX0NPVU5UNl9SWF8wX05VTV9CTE9DS18wXzEgICAgICAgKCh1aW50MzJfdCkweDAwMDAwODAwKSAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgVVNCX0NPVU5UNl9SWF8wX05VTV9CTE9DS18wXzIgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKSAgICAgICAgLyohPCBCaXQgMiAqLworI2RlZmluZSAgVVNCX0NPVU5UNl9SWF8wX05VTV9CTE9DS18wXzMgICAgICAgKCh1aW50MzJfdCkweDAwMDAyMDAwKSAgICAgICAgLyohPCBCaXQgMyAqLworI2RlZmluZSAgVVNCX0NPVU5UNl9SWF8wX05VTV9CTE9DS18wXzQgICAgICAgKCh1aW50MzJfdCkweDAwMDA0MDAwKSAgICAgICAgLyohPCBCaXQgNCAqLworCisjZGVmaW5lICBVU0JfQ09VTlQ2X1JYXzBfQkxTSVpFXzAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDgwMDApICAgICAgICAvKiE8IEJMb2NrIFNJWkUgKGxvdykgKi8KKworLyoqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBVU0JfQ09VTlQ2X1JYXzEgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIFVTQl9DT1VOVDZfUlhfMV9DT1VOVDZfUlhfMSAgICAgICAgICgodWludDMyX3QpMHgwM0ZGMDAwMCkgICAgICAgIC8qITwgUmVjZXB0aW9uIEJ5dGUgQ291bnQgKGhpZ2gpICovCisKKyNkZWZpbmUgIFVTQl9DT1VOVDZfUlhfMV9OVU1fQkxPQ0tfMSAgICAgICAgICgodWludDMyX3QpMHg3QzAwMDAwMCkgICAgICAgIC8qITwgTlVNX0JMT0NLXzFbNDowXSBiaXRzIChOdW1iZXIgb2YgYmxvY2tzKSAoaGlnaCkgKi8KKyNkZWZpbmUgIFVTQl9DT1VOVDZfUlhfMV9OVU1fQkxPQ0tfMV8wICAgICAgICgodWludDMyX3QpMHgwNDAwMDAwMCkgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIFVTQl9DT1VOVDZfUlhfMV9OVU1fQkxPQ0tfMV8xICAgICAgICgodWludDMyX3QpMHgwODAwMDAwMCkgICAgICAgIC8qITwgQml0IDEgKi8KKyNkZWZpbmUgIFVTQl9DT1VOVDZfUlhfMV9OVU1fQkxPQ0tfMV8yICAgICAgICgodWludDMyX3QpMHgxMDAwMDAwMCkgICAgICAgIC8qITwgQml0IDIgKi8KKyNkZWZpbmUgIFVTQl9DT1VOVDZfUlhfMV9OVU1fQkxPQ0tfMV8zICAgICAgICgodWludDMyX3QpMHgyMDAwMDAwMCkgICAgICAgIC8qITwgQml0IDMgKi8KKyNkZWZpbmUgIFVTQl9DT1VOVDZfUlhfMV9OVU1fQkxPQ0tfMV80ICAgICAgICgodWludDMyX3QpMHg0MDAwMDAwMCkgICAgICAgIC8qITwgQml0IDQgKi8KKworI2RlZmluZSAgVVNCX0NPVU5UNl9SWF8xX0JMU0laRV8xICAgICAgICAgICAgKCh1aW50MzJfdCkweDgwMDAwMDAwKSAgICAgICAgLyohPCBCTG9jayBTSVpFIChoaWdoKSAqLworCisvKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgVVNCX0NPVU5UN19SWF8wIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqLworI2RlZmluZSAgVVNCX0NPVU5UN19SWF8wX0NPVU5UN19SWF8wICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwM0ZGKSAgICAgICAgLyohPCBSZWNlcHRpb24gQnl0ZSBDb3VudCAobG93KSAqLworCisjZGVmaW5lICBVU0JfQ09VTlQ3X1JYXzBfTlVNX0JMT0NLXzAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDdDMDApICAgICAgICAvKiE8IE5VTV9CTE9DS18wWzQ6MF0gYml0cyAoTnVtYmVyIG9mIGJsb2NrcykgKGxvdykgKi8KKyNkZWZpbmUgIFVTQl9DT1VOVDdfUlhfMF9OVU1fQkxPQ0tfMF8wICAgICAgICgodWludDMyX3QpMHgwMDAwMDQwMCkgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIFVTQl9DT1VOVDdfUlhfMF9OVU1fQkxPQ0tfMF8xICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgICAgICAgIC8qITwgQml0IDEgKi8KKyNkZWZpbmUgIFVTQl9DT1VOVDdfUlhfMF9OVU1fQkxPQ0tfMF8yICAgICAgICgodWludDMyX3QpMHgwMDAwMTAwMCkgICAgICAgIC8qITwgQml0IDIgKi8KKyNkZWZpbmUgIFVTQl9DT1VOVDdfUlhfMF9OVU1fQkxPQ0tfMF8zICAgICAgICgodWludDMyX3QpMHgwMDAwMjAwMCkgICAgICAgIC8qITwgQml0IDMgKi8KKyNkZWZpbmUgIFVTQl9DT1VOVDdfUlhfMF9OVU1fQkxPQ0tfMF80ICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgICAgICAgIC8qITwgQml0IDQgKi8KKworI2RlZmluZSAgVVNCX0NPVU5UN19SWF8wX0JMU0laRV8wICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKSAgICAgICAgLyohPCBCTG9jayBTSVpFIChsb3cpICovCisKKy8qKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBVU0JfQ09VTlQ3X1JYXzEgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKiovCisjZGVmaW5lICBVU0JfQ09VTlQ3X1JYXzFfQ09VTlQ3X1JYXzEgICAgICAgICAoKHVpbnQzMl90KTB4MDNGRjAwMDApICAgICAgICAvKiE8IFJlY2VwdGlvbiBCeXRlIENvdW50IChoaWdoKSAqLworCisjZGVmaW5lICBVU0JfQ09VTlQ3X1JYXzFfTlVNX0JMT0NLXzEgICAgICAgICAoKHVpbnQzMl90KTB4N0MwMDAwMDApICAgICAgICAvKiE8IE5VTV9CTE9DS18xWzQ6MF0gYml0cyAoTnVtYmVyIG9mIGJsb2NrcykgKGhpZ2gpICovCisjZGVmaW5lICBVU0JfQ09VTlQ3X1JYXzFfTlVNX0JMT0NLXzFfMCAgICAgICAoKHVpbnQzMl90KTB4MDQwMDAwMDApICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBVU0JfQ09VTlQ3X1JYXzFfTlVNX0JMT0NLXzFfMSAgICAgICAoKHVpbnQzMl90KTB4MDgwMDAwMDApICAgICAgICAvKiE8IEJpdCAxICovCisjZGVmaW5lICBVU0JfQ09VTlQ3X1JYXzFfTlVNX0JMT0NLXzFfMiAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwMDApICAgICAgICAvKiE8IEJpdCAyICovCisjZGVmaW5lICBVU0JfQ09VTlQ3X1JYXzFfTlVNX0JMT0NLXzFfMyAgICAgICAoKHVpbnQzMl90KTB4MjAwMDAwMDApICAgICAgICAvKiE8IEJpdCAzICovCisjZGVmaW5lICBVU0JfQ09VTlQ3X1JYXzFfTlVNX0JMT0NLXzFfNCAgICAgICAoKHVpbnQzMl90KTB4NDAwMDAwMDApICAgICAgICAvKiE8IEJpdCA0ICovCisKKyNkZWZpbmUgIFVTQl9DT1VOVDdfUlhfMV9CTFNJWkVfMSAgICAgICAgICAgICgodWludDMyX3QpMHg4MDAwMDAwMCkgICAgICAgIC8qITwgQkxvY2sgU0laRSAoaGlnaCkgKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICBDb250cm9sbGVyIEFyZWEgTmV0d29yayAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qITwgQ0FOIGNvbnRyb2wgYW5kIHN0YXR1cyByZWdpc3RlcnMgKi8KKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgQ0FOX01DUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBDQU5fTUNSX0lOUlEgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMSkgICAgICAgICAgICAvKiE8IEluaXRpYWxpemF0aW9uIFJlcXVlc3QgKi8KKyNkZWZpbmUgIENBTl9NQ1JfU0xFRVAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAyKSAgICAgICAgICAgIC8qITwgU2xlZXAgTW9kZSBSZXF1ZXN0ICovCisjZGVmaW5lICBDQU5fTUNSX1RYRlAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwNCkgICAgICAgICAgICAvKiE8IFRyYW5zbWl0IEZJRk8gUHJpb3JpdHkgKi8KKyNkZWZpbmUgIENBTl9NQ1JfUkZMTSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA4KSAgICAgICAgICAgIC8qITwgUmVjZWl2ZSBGSUZPIExvY2tlZCBNb2RlICovCisjZGVmaW5lICBDQU5fTUNSX05BUlQgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAxMCkgICAgICAgICAgICAvKiE8IE5vIEF1dG9tYXRpYyBSZXRyYW5zbWlzc2lvbiAqLworI2RlZmluZSAgQ0FOX01DUl9BV1VNICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMjApICAgICAgICAgICAgLyohPCBBdXRvbWF0aWMgV2FrZXVwIE1vZGUgKi8KKyNkZWZpbmUgIENBTl9NQ1JfQUJPTSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDQwKSAgICAgICAgICAgIC8qITwgQXV0b21hdGljIEJ1cy1PZmYgTWFuYWdlbWVudCAqLworI2RlZmluZSAgQ0FOX01DUl9UVENNICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwODApICAgICAgICAgICAgLyohPCBUaW1lIFRyaWdnZXJlZCBDb21tdW5pY2F0aW9uIE1vZGUgKi8KKyNkZWZpbmUgIENBTl9NQ1JfUkVTRVQgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHg4MDAwKSAgICAgICAgICAgIC8qITwgQ0FOIHNvZnR3YXJlIG1hc3RlciByZXNldCAqLworCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIENBTl9NU1IgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgQ0FOX01TUl9JTkFLICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDEpICAgICAgICAgICAgLyohPCBJbml0aWFsaXphdGlvbiBBY2tub3dsZWRnZSAqLworI2RlZmluZSAgQ0FOX01TUl9TTEFLICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDIpICAgICAgICAgICAgLyohPCBTbGVlcCBBY2tub3dsZWRnZSAqLworI2RlZmluZSAgQ0FOX01TUl9FUlJJICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDQpICAgICAgICAgICAgLyohPCBFcnJvciBJbnRlcnJ1cHQgKi8KKyNkZWZpbmUgIENBTl9NU1JfV0tVSSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA4KSAgICAgICAgICAgIC8qITwgV2FrZXVwIEludGVycnVwdCAqLworI2RlZmluZSAgQ0FOX01TUl9TTEFLSSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMTApICAgICAgICAgICAgLyohPCBTbGVlcCBBY2tub3dsZWRnZSBJbnRlcnJ1cHQgKi8KKyNkZWZpbmUgIENBTl9NU1JfVFhNICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMTAwKSAgICAgICAgICAgIC8qITwgVHJhbnNtaXQgTW9kZSAqLworI2RlZmluZSAgQ0FOX01TUl9SWE0gICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAyMDApICAgICAgICAgICAgLyohPCBSZWNlaXZlIE1vZGUgKi8KKyNkZWZpbmUgIENBTl9NU1JfU0FNUCAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwNDAwKSAgICAgICAgICAgIC8qITwgTGFzdCBTYW1wbGUgUG9pbnQgKi8KKyNkZWZpbmUgIENBTl9NU1JfUlggICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwODAwKSAgICAgICAgICAgIC8qITwgQ0FOIFJ4IFNpZ25hbCAqLworCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIENBTl9UU1IgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgQ0FOX1RTUl9SUUNQMCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxKSAgICAgICAgLyohPCBSZXF1ZXN0IENvbXBsZXRlZCBNYWlsYm94MCAqLworI2RlZmluZSAgQ0FOX1RTUl9UWE9LMCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAyKSAgICAgICAgLyohPCBUcmFuc21pc3Npb24gT0sgb2YgTWFpbGJveDAgKi8KKyNkZWZpbmUgIENBTl9UU1JfQUxTVDAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNCkgICAgICAgIC8qITwgQXJiaXRyYXRpb24gTG9zdCBmb3IgTWFpbGJveDAgKi8KKyNkZWZpbmUgIENBTl9UU1JfVEVSUjAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgICAgICAgIC8qITwgVHJhbnNtaXNzaW9uIEVycm9yIG9mIE1haWxib3gwICovCisjZGVmaW5lICBDQU5fVFNSX0FCUlEwICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApICAgICAgICAvKiE8IEFib3J0IFJlcXVlc3QgZm9yIE1haWxib3gwICovCisjZGVmaW5lICBDQU5fVFNSX1JRQ1AxICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAxMDApICAgICAgICAvKiE8IFJlcXVlc3QgQ29tcGxldGVkIE1haWxib3gxICovCisjZGVmaW5lICBDQU5fVFNSX1RYT0sxICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAyMDApICAgICAgICAvKiE8IFRyYW5zbWlzc2lvbiBPSyBvZiBNYWlsYm94MSAqLworI2RlZmluZSAgQ0FOX1RTUl9BTFNUMSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwNDAwKSAgICAgICAgLyohPCBBcmJpdHJhdGlvbiBMb3N0IGZvciBNYWlsYm94MSAqLworI2RlZmluZSAgQ0FOX1RTUl9URVJSMSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwODAwKSAgICAgICAgLyohPCBUcmFuc21pc3Npb24gRXJyb3Igb2YgTWFpbGJveDEgKi8KKyNkZWZpbmUgIENBTl9UU1JfQUJSUTEgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwODAwMCkgICAgICAgIC8qITwgQWJvcnQgUmVxdWVzdCBmb3IgTWFpbGJveCAxICovCisjZGVmaW5lICBDQU5fVFNSX1JRQ1AyICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMTAwMDApICAgICAgICAvKiE8IFJlcXVlc3QgQ29tcGxldGVkIE1haWxib3gyICovCisjZGVmaW5lICBDQU5fVFNSX1RYT0syICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMjAwMDApICAgICAgICAvKiE8IFRyYW5zbWlzc2lvbiBPSyBvZiBNYWlsYm94IDIgKi8KKyNkZWZpbmUgIENBTl9UU1JfQUxTVDIgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDA0MDAwMCkgICAgICAgIC8qITwgQXJiaXRyYXRpb24gTG9zdCBmb3IgbWFpbGJveCAyICovCisjZGVmaW5lICBDQU5fVFNSX1RFUlIyICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAgICAgICAvKiE8IFRyYW5zbWlzc2lvbiBFcnJvciBvZiBNYWlsYm94IDIgKi8KKyNkZWZpbmUgIENBTl9UU1JfQUJSUTIgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDgwMDAwMCkgICAgICAgIC8qITwgQWJvcnQgUmVxdWVzdCBmb3IgTWFpbGJveCAyICovCisjZGVmaW5lICBDQU5fVFNSX0NPREUgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDMwMDAwMDApICAgICAgICAvKiE8IE1haWxib3ggQ29kZSAqLworCisjZGVmaW5lICBDQU5fVFNSX1RNRSAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MUMwMDAwMDApICAgICAgICAvKiE8IFRNRVsyOjBdIGJpdHMgKi8KKyNkZWZpbmUgIENBTl9UU1JfVE1FMCAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwNDAwMDAwMCkgICAgICAgIC8qITwgVHJhbnNtaXQgTWFpbGJveCAwIEVtcHR5ICovCisjZGVmaW5lICBDQU5fVFNSX1RNRTEgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDgwMDAwMDApICAgICAgICAvKiE8IFRyYW5zbWl0IE1haWxib3ggMSBFbXB0eSAqLworI2RlZmluZSAgQ0FOX1RTUl9UTUUyICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDEwMDAwMDAwKSAgICAgICAgLyohPCBUcmFuc21pdCBNYWlsYm94IDIgRW1wdHkgKi8KKworI2RlZmluZSAgQ0FOX1RTUl9MT1cgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEUwMDAwMDAwKSAgICAgICAgLyohPCBMT1dbMjowXSBiaXRzICovCisjZGVmaW5lICBDQU5fVFNSX0xPVzAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MjAwMDAwMDApICAgICAgICAvKiE8IExvd2VzdCBQcmlvcml0eSBGbGFnIGZvciBNYWlsYm94IDAgKi8KKyNkZWZpbmUgIENBTl9UU1JfTE9XMSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHg0MDAwMDAwMCkgICAgICAgIC8qITwgTG93ZXN0IFByaW9yaXR5IEZsYWcgZm9yIE1haWxib3ggMSAqLworI2RlZmluZSAgQ0FOX1RTUl9MT1cyICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDgwMDAwMDAwKSAgICAgICAgLyohPCBMb3dlc3QgUHJpb3JpdHkgRmxhZyBmb3IgTWFpbGJveCAyICovCisKKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgQ0FOX1JGMFIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBDQU5fUkYwUl9GTVAwICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwMykgICAgICAgICAgICAgICAvKiE8IEZJRk8gMCBNZXNzYWdlIFBlbmRpbmcgKi8KKyNkZWZpbmUgIENBTl9SRjBSX0ZVTEwwICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDA4KSAgICAgICAgICAgICAgIC8qITwgRklGTyAwIEZ1bGwgKi8KKyNkZWZpbmUgIENBTl9SRjBSX0ZPVlIwICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDEwKSAgICAgICAgICAgICAgIC8qITwgRklGTyAwIE92ZXJydW4gKi8KKyNkZWZpbmUgIENBTl9SRjBSX1JGT00wICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDIwKSAgICAgICAgICAgICAgIC8qITwgUmVsZWFzZSBGSUZPIDAgT3V0cHV0IE1haWxib3ggKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBDQU5fUkYxUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIENBTl9SRjFSX0ZNUDEgICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDAzKSAgICAgICAgICAgICAgIC8qITwgRklGTyAxIE1lc3NhZ2UgUGVuZGluZyAqLworI2RlZmluZSAgQ0FOX1JGMVJfRlVMTDEgICAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MDgpICAgICAgICAgICAgICAgLyohPCBGSUZPIDEgRnVsbCAqLworI2RlZmluZSAgQ0FOX1JGMVJfRk9WUjEgICAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MTApICAgICAgICAgICAgICAgLyohPCBGSUZPIDEgT3ZlcnJ1biAqLworI2RlZmluZSAgQ0FOX1JGMVJfUkZPTTEgICAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MjApICAgICAgICAgICAgICAgLyohPCBSZWxlYXNlIEZJRk8gMSBPdXRwdXQgTWFpbGJveCAqLworCisvKioqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBDQU5fSUVSIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgQ0FOX0lFUl9UTUVJRSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxKSAgICAgICAgLyohPCBUcmFuc21pdCBNYWlsYm94IEVtcHR5IEludGVycnVwdCBFbmFibGUgKi8KKyNkZWZpbmUgIENBTl9JRVJfRk1QSUUwICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMikgICAgICAgIC8qITwgRklGTyBNZXNzYWdlIFBlbmRpbmcgSW50ZXJydXB0IEVuYWJsZSAqLworI2RlZmluZSAgQ0FOX0lFUl9GRklFMCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgICAgICAgLyohPCBGSUZPIEZ1bGwgSW50ZXJydXB0IEVuYWJsZSAqLworI2RlZmluZSAgQ0FOX0lFUl9GT1ZJRTAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA4KSAgICAgICAgLyohPCBGSUZPIE92ZXJydW4gSW50ZXJydXB0IEVuYWJsZSAqLworI2RlZmluZSAgQ0FOX0lFUl9GTVBJRTEgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDEwKSAgICAgICAgLyohPCBGSUZPIE1lc3NhZ2UgUGVuZGluZyBJbnRlcnJ1cHQgRW5hYmxlICovCisjZGVmaW5lICBDQU5fSUVSX0ZGSUUxICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMjApICAgICAgICAvKiE8IEZJRk8gRnVsbCBJbnRlcnJ1cHQgRW5hYmxlICovCisjZGVmaW5lICBDQU5fSUVSX0ZPVklFMSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwNDApICAgICAgICAvKiE8IEZJRk8gT3ZlcnJ1biBJbnRlcnJ1cHQgRW5hYmxlICovCisjZGVmaW5lICBDQU5fSUVSX0VXR0lFICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAxMDApICAgICAgICAvKiE8IEVycm9yIFdhcm5pbmcgSW50ZXJydXB0IEVuYWJsZSAqLworI2RlZmluZSAgQ0FOX0lFUl9FUFZJRSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMjAwKSAgICAgICAgLyohPCBFcnJvciBQYXNzaXZlIEludGVycnVwdCBFbmFibGUgKi8KKyNkZWZpbmUgIENBTl9JRVJfQk9GSUUgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDQwMCkgICAgICAgIC8qITwgQnVzLU9mZiBJbnRlcnJ1cHQgRW5hYmxlICovCisjZGVmaW5lICBDQU5fSUVSX0xFQ0lFICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA4MDApICAgICAgICAvKiE8IExhc3QgRXJyb3IgQ29kZSBJbnRlcnJ1cHQgRW5hYmxlICovCisjZGVmaW5lICBDQU5fSUVSX0VSUklFICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDgwMDApICAgICAgICAvKiE8IEVycm9yIEludGVycnVwdCBFbmFibGUgKi8KKyNkZWZpbmUgIENBTl9JRVJfV0tVSUUgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAxMDAwMCkgICAgICAgIC8qITwgV2FrZXVwIEludGVycnVwdCBFbmFibGUgKi8KKyNkZWZpbmUgIENBTl9JRVJfU0xLSUUgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkgICAgICAgIC8qITwgU2xlZXAgSW50ZXJydXB0IEVuYWJsZSAqLworCisvKioqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBDQU5fRVNSIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgQ0FOX0VTUl9FV0dGICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxKSAgICAgICAgLyohPCBFcnJvciBXYXJuaW5nIEZsYWcgKi8KKyNkZWZpbmUgIENBTl9FU1JfRVBWRiAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMikgICAgICAgIC8qITwgRXJyb3IgUGFzc2l2ZSBGbGFnICovCisjZGVmaW5lICBDQU5fRVNSX0JPRkYgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDQpICAgICAgICAvKiE8IEJ1cy1PZmYgRmxhZyAqLworCisjZGVmaW5lICBDQU5fRVNSX0xFQyAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwNzApICAgICAgICAvKiE8IExFQ1syOjBdIGJpdHMgKExhc3QgRXJyb3IgQ29kZSkgKi8KKyNkZWZpbmUgIENBTl9FU1JfTEVDXzAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAxMCkgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIENBTl9FU1JfTEVDXzEgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAyMCkgICAgICAgIC8qITwgQml0IDEgKi8KKyNkZWZpbmUgIENBTl9FU1JfTEVDXzIgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgICAgICAgIC8qITwgQml0IDIgKi8KKworI2RlZmluZSAgQ0FOX0VTUl9URUMgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwRkYwMDAwKSAgICAgICAgLyohPCBMZWFzdCBzaWduaWZpY2FudCBieXRlIG9mIHRoZSA5LWJpdCBUcmFuc21pdCBFcnJvciBDb3VudGVyICovCisjZGVmaW5lICBDQU5fRVNSX1JFQyAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4RkYwMDAwMDApICAgICAgICAvKiE8IFJlY2VpdmUgRXJyb3IgQ291bnRlciAqLworCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIENBTl9CVFIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgQ0FOX0JUUl9CUlAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwM0ZGKSAgICAgICAgLyohPCBCYXVkIFJhdGUgUHJlc2NhbGVyICovCisjZGVmaW5lICBDQU5fQlRSX1RTMSAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwRjAwMDApICAgICAgICAvKiE8IFRpbWUgU2VnbWVudCAxICovCisjZGVmaW5lICBDQU5fQlRSX1RTMiAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA3MDAwMDApICAgICAgICAvKiE8IFRpbWUgU2VnbWVudCAyICovCisjZGVmaW5lICBDQU5fQlRSX1NKVyAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDMwMDAwMDApICAgICAgICAvKiE8IFJlc3luY2hyb25pemF0aW9uIEp1bXAgV2lkdGggKi8KKyNkZWZpbmUgIENBTl9CVFJfTEJLTSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHg0MDAwMDAwMCkgICAgICAgIC8qITwgTG9vcCBCYWNrIE1vZGUgKERlYnVnKSAqLworI2RlZmluZSAgQ0FOX0JUUl9TSUxNICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDgwMDAwMDAwKSAgICAgICAgLyohPCBTaWxlbnQgTW9kZSAqLworCisvKiE8IE1haWxib3ggcmVnaXN0ZXJzICovCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgQ0FOX1RJMFIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgQ0FOX1RJMFJfVFhSUSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxKSAgICAgICAgLyohPCBUcmFuc21pdCBNYWlsYm94IFJlcXVlc3QgKi8KKyNkZWZpbmUgIENBTl9USTBSX1JUUiAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMikgICAgICAgIC8qITwgUmVtb3RlIFRyYW5zbWlzc2lvbiBSZXF1ZXN0ICovCisjZGVmaW5lICBDQU5fVEkwUl9JREUgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDQpICAgICAgICAvKiE8IElkZW50aWZpZXIgRXh0ZW5zaW9uICovCisjZGVmaW5lICBDQU5fVEkwUl9FWElEICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAxRkZGRjgpICAgICAgICAvKiE8IEV4dGVuZGVkIElkZW50aWZpZXIgKi8KKyNkZWZpbmUgIENBTl9USTBSX1NUSUQgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHhGRkUwMDAwMCkgICAgICAgIC8qITwgU3RhbmRhcmQgSWRlbnRpZmllciBvciBFeHRlbmRlZCBJZGVudGlmaWVyICovCisKKy8qKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBDQU5fVERUMFIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBDQU5fVERUMFJfRExDICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMEYpICAgICAgICAvKiE8IERhdGEgTGVuZ3RoIENvZGUgKi8KKyNkZWZpbmUgIENBTl9URFQwUl9UR1QgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDEwMCkgICAgICAgIC8qITwgVHJhbnNtaXQgR2xvYmFsIFRpbWUgKi8KKyNkZWZpbmUgIENBTl9URFQwUl9USU1FICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHhGRkZGMDAwMCkgICAgICAgIC8qITwgTWVzc2FnZSBUaW1lIFN0YW1wICovCisKKy8qKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBDQU5fVERMMFIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBDQU5fVERMMFJfREFUQTAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwRkYpICAgICAgICAvKiE8IERhdGEgYnl0ZSAwICovCisjZGVmaW5lICBDQU5fVERMMFJfREFUQTEgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMEZGMDApICAgICAgICAvKiE8IERhdGEgYnl0ZSAxICovCisjZGVmaW5lICBDQU5fVERMMFJfREFUQTIgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDBGRjAwMDApICAgICAgICAvKiE8IERhdGEgYnl0ZSAyICovCisjZGVmaW5lICBDQU5fVERMMFJfREFUQTMgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4RkYwMDAwMDApICAgICAgICAvKiE8IERhdGEgYnl0ZSAzICovCisKKy8qKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBDQU5fVERIMFIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBDQU5fVERIMFJfREFUQTQgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwRkYpICAgICAgICAvKiE8IERhdGEgYnl0ZSA0ICovCisjZGVmaW5lICBDQU5fVERIMFJfREFUQTUgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMEZGMDApICAgICAgICAvKiE8IERhdGEgYnl0ZSA1ICovCisjZGVmaW5lICBDQU5fVERIMFJfREFUQTYgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDBGRjAwMDApICAgICAgICAvKiE8IERhdGEgYnl0ZSA2ICovCisjZGVmaW5lICBDQU5fVERIMFJfREFUQTcgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4RkYwMDAwMDApICAgICAgICAvKiE8IERhdGEgYnl0ZSA3ICovCisKKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgQ0FOX1RJMVIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBDQU5fVEkxUl9UWFJRICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDEpICAgICAgICAvKiE8IFRyYW5zbWl0IE1haWxib3ggUmVxdWVzdCAqLworI2RlZmluZSAgQ0FOX1RJMVJfUlRSICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAyKSAgICAgICAgLyohPCBSZW1vdGUgVHJhbnNtaXNzaW9uIFJlcXVlc3QgKi8KKyNkZWZpbmUgIENBTl9USTFSX0lERSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNCkgICAgICAgIC8qITwgSWRlbnRpZmllciBFeHRlbnNpb24gKi8KKyNkZWZpbmUgIENBTl9USTFSX0VYSUQgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDFGRkZGOCkgICAgICAgIC8qITwgRXh0ZW5kZWQgSWRlbnRpZmllciAqLworI2RlZmluZSAgQ0FOX1RJMVJfU1RJRCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGRTAwMDAwKSAgICAgICAgLyohPCBTdGFuZGFyZCBJZGVudGlmaWVyIG9yIEV4dGVuZGVkIElkZW50aWZpZXIgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBDQU5fVERUMVIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIENBTl9URFQxUl9ETEMgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwRikgICAgICAgIC8qITwgRGF0YSBMZW5ndGggQ29kZSAqLworI2RlZmluZSAgQ0FOX1REVDFSX1RHVCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKSAgICAgICAgLyohPCBUcmFuc21pdCBHbG9iYWwgVGltZSAqLworI2RlZmluZSAgQ0FOX1REVDFSX1RJTUUgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGRkYwMDAwKSAgICAgICAgLyohPCBNZXNzYWdlIFRpbWUgU3RhbXAgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBDQU5fVERMMVIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIENBTl9UREwxUl9EQVRBMCAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDBGRikgICAgICAgIC8qITwgRGF0YSBieXRlIDAgKi8KKyNkZWZpbmUgIENBTl9UREwxUl9EQVRBMSAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwRkYwMCkgICAgICAgIC8qITwgRGF0YSBieXRlIDEgKi8KKyNkZWZpbmUgIENBTl9UREwxUl9EQVRBMiAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMEZGMDAwMCkgICAgICAgIC8qITwgRGF0YSBieXRlIDIgKi8KKyNkZWZpbmUgIENBTl9UREwxUl9EQVRBMyAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHhGRjAwMDAwMCkgICAgICAgIC8qITwgRGF0YSBieXRlIDMgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBDQU5fVERIMVIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIENBTl9UREgxUl9EQVRBNCAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDBGRikgICAgICAgIC8qITwgRGF0YSBieXRlIDQgKi8KKyNkZWZpbmUgIENBTl9UREgxUl9EQVRBNSAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwRkYwMCkgICAgICAgIC8qITwgRGF0YSBieXRlIDUgKi8KKyNkZWZpbmUgIENBTl9UREgxUl9EQVRBNiAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMEZGMDAwMCkgICAgICAgIC8qITwgRGF0YSBieXRlIDYgKi8KKyNkZWZpbmUgIENBTl9UREgxUl9EQVRBNyAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHhGRjAwMDAwMCkgICAgICAgIC8qITwgRGF0YSBieXRlIDcgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBDQU5fVEkyUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIENBTl9USTJSX1RYUlEgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgICAgICAgIC8qITwgVHJhbnNtaXQgTWFpbGJveCBSZXF1ZXN0ICovCisjZGVmaW5lICBDQU5fVEkyUl9SVFIgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IFJlbW90ZSBUcmFuc21pc3Npb24gUmVxdWVzdCAqLworI2RlZmluZSAgQ0FOX1RJMlJfSURFICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgICAgICAgLyohPCBJZGVudGlmaWVyIEV4dGVuc2lvbiAqLworI2RlZmluZSAgQ0FOX1RJMlJfRVhJRCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMUZGRkY4KSAgICAgICAgLyohPCBFeHRlbmRlZCBpZGVudGlmaWVyICovCisjZGVmaW5lICBDQU5fVEkyUl9TVElEICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4RkZFMDAwMDApICAgICAgICAvKiE8IFN0YW5kYXJkIElkZW50aWZpZXIgb3IgRXh0ZW5kZWQgSWRlbnRpZmllciAqLworCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIENBTl9URFQyUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqLyAgCisjZGVmaW5lICBDQU5fVERUMlJfRExDICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMEYpICAgICAgICAvKiE8IERhdGEgTGVuZ3RoIENvZGUgKi8KKyNkZWZpbmUgIENBTl9URFQyUl9UR1QgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDEwMCkgICAgICAgIC8qITwgVHJhbnNtaXQgR2xvYmFsIFRpbWUgKi8KKyNkZWZpbmUgIENBTl9URFQyUl9USU1FICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHhGRkZGMDAwMCkgICAgICAgIC8qITwgTWVzc2FnZSBUaW1lIFN0YW1wICovCisKKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgQ0FOX1RETDJSIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBDQU5fVERMMlJfREFUQTAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwRkYpICAgICAgICAvKiE8IERhdGEgYnl0ZSAwICovCisjZGVmaW5lICBDQU5fVERMMlJfREFUQTEgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMEZGMDApICAgICAgICAvKiE8IERhdGEgYnl0ZSAxICovCisjZGVmaW5lICBDQU5fVERMMlJfREFUQTIgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDBGRjAwMDApICAgICAgICAvKiE8IERhdGEgYnl0ZSAyICovCisjZGVmaW5lICBDQU5fVERMMlJfREFUQTMgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4RkYwMDAwMDApICAgICAgICAvKiE8IERhdGEgYnl0ZSAzICovCisKKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgQ0FOX1RESDJSIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBDQU5fVERIMlJfREFUQTQgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwRkYpICAgICAgICAvKiE8IERhdGEgYnl0ZSA0ICovCisjZGVmaW5lICBDQU5fVERIMlJfREFUQTUgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMEZGMDApICAgICAgICAvKiE8IERhdGEgYnl0ZSA1ICovCisjZGVmaW5lICBDQU5fVERIMlJfREFUQTYgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDBGRjAwMDApICAgICAgICAvKiE8IERhdGEgYnl0ZSA2ICovCisjZGVmaW5lICBDQU5fVERIMlJfREFUQTcgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4RkYwMDAwMDApICAgICAgICAvKiE8IERhdGEgYnl0ZSA3ICovCisKKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgQ0FOX1JJMFIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBDQU5fUkkwUl9SVFIgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IFJlbW90ZSBUcmFuc21pc3Npb24gUmVxdWVzdCAqLworI2RlZmluZSAgQ0FOX1JJMFJfSURFICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgICAgICAgLyohPCBJZGVudGlmaWVyIEV4dGVuc2lvbiAqLworI2RlZmluZSAgQ0FOX1JJMFJfRVhJRCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMUZGRkY4KSAgICAgICAgLyohPCBFeHRlbmRlZCBJZGVudGlmaWVyICovCisjZGVmaW5lICBDQU5fUkkwUl9TVElEICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4RkZFMDAwMDApICAgICAgICAvKiE8IFN0YW5kYXJkIElkZW50aWZpZXIgb3IgRXh0ZW5kZWQgSWRlbnRpZmllciAqLworCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIENBTl9SRFQwUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgQ0FOX1JEVDBSX0RMQyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDBGKSAgICAgICAgLyohPCBEYXRhIExlbmd0aCBDb2RlICovCisjZGVmaW5lICBDQU5fUkRUMFJfRk1JICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMEZGMDApICAgICAgICAvKiE8IEZpbHRlciBNYXRjaCBJbmRleCAqLworI2RlZmluZSAgQ0FOX1JEVDBSX1RJTUUgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGRkYwMDAwKSAgICAgICAgLyohPCBNZXNzYWdlIFRpbWUgU3RhbXAgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBDQU5fUkRMMFIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIENBTl9SREwwUl9EQVRBMCAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDBGRikgICAgICAgIC8qITwgRGF0YSBieXRlIDAgKi8KKyNkZWZpbmUgIENBTl9SREwwUl9EQVRBMSAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwRkYwMCkgICAgICAgIC8qITwgRGF0YSBieXRlIDEgKi8KKyNkZWZpbmUgIENBTl9SREwwUl9EQVRBMiAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMEZGMDAwMCkgICAgICAgIC8qITwgRGF0YSBieXRlIDIgKi8KKyNkZWZpbmUgIENBTl9SREwwUl9EQVRBMyAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHhGRjAwMDAwMCkgICAgICAgIC8qITwgRGF0YSBieXRlIDMgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBDQU5fUkRIMFIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIENBTl9SREgwUl9EQVRBNCAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDBGRikgICAgICAgIC8qITwgRGF0YSBieXRlIDQgKi8KKyNkZWZpbmUgIENBTl9SREgwUl9EQVRBNSAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwRkYwMCkgICAgICAgIC8qITwgRGF0YSBieXRlIDUgKi8KKyNkZWZpbmUgIENBTl9SREgwUl9EQVRBNiAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMEZGMDAwMCkgICAgICAgIC8qITwgRGF0YSBieXRlIDYgKi8KKyNkZWZpbmUgIENBTl9SREgwUl9EQVRBNyAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHhGRjAwMDAwMCkgICAgICAgIC8qITwgRGF0YSBieXRlIDcgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBDQU5fUkkxUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIENBTl9SSTFSX1JUUiAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMikgICAgICAgIC8qITwgUmVtb3RlIFRyYW5zbWlzc2lvbiBSZXF1ZXN0ICovCisjZGVmaW5lICBDQU5fUkkxUl9JREUgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDQpICAgICAgICAvKiE8IElkZW50aWZpZXIgRXh0ZW5zaW9uICovCisjZGVmaW5lICBDQU5fUkkxUl9FWElEICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAxRkZGRjgpICAgICAgICAvKiE8IEV4dGVuZGVkIGlkZW50aWZpZXIgKi8KKyNkZWZpbmUgIENBTl9SSTFSX1NUSUQgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHhGRkUwMDAwMCkgICAgICAgIC8qITwgU3RhbmRhcmQgSWRlbnRpZmllciBvciBFeHRlbmRlZCBJZGVudGlmaWVyICovCisKKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgQ0FOX1JEVDFSIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBDQU5fUkRUMVJfRExDICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMEYpICAgICAgICAvKiE8IERhdGEgTGVuZ3RoIENvZGUgKi8KKyNkZWZpbmUgIENBTl9SRFQxUl9GTUkgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwRkYwMCkgICAgICAgIC8qITwgRmlsdGVyIE1hdGNoIEluZGV4ICovCisjZGVmaW5lICBDQU5fUkRUMVJfVElNRSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4RkZGRjAwMDApICAgICAgICAvKiE8IE1lc3NhZ2UgVGltZSBTdGFtcCAqLworCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIENBTl9SREwxUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgQ0FOX1JETDFSX0RBVEEwICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMEZGKSAgICAgICAgLyohPCBEYXRhIGJ5dGUgMCAqLworI2RlZmluZSAgQ0FOX1JETDFSX0RBVEExICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDBGRjAwKSAgICAgICAgLyohPCBEYXRhIGJ5dGUgMSAqLworI2RlZmluZSAgQ0FOX1JETDFSX0RBVEEyICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwRkYwMDAwKSAgICAgICAgLyohPCBEYXRhIGJ5dGUgMiAqLworI2RlZmluZSAgQ0FOX1JETDFSX0RBVEEzICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGMDAwMDAwKSAgICAgICAgLyohPCBEYXRhIGJ5dGUgMyAqLworCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIENBTl9SREgxUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgQ0FOX1JESDFSX0RBVEE0ICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMEZGKSAgICAgICAgLyohPCBEYXRhIGJ5dGUgNCAqLworI2RlZmluZSAgQ0FOX1JESDFSX0RBVEE1ICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDBGRjAwKSAgICAgICAgLyohPCBEYXRhIGJ5dGUgNSAqLworI2RlZmluZSAgQ0FOX1JESDFSX0RBVEE2ICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwRkYwMDAwKSAgICAgICAgLyohPCBEYXRhIGJ5dGUgNiAqLworI2RlZmluZSAgQ0FOX1JESDFSX0RBVEE3ICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGMDAwMDAwKSAgICAgICAgLyohPCBEYXRhIGJ5dGUgNyAqLworCisvKiE8IENBTiBmaWx0ZXIgcmVnaXN0ZXJzICovCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIENBTl9GTVIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgQ0FOX0ZNUl9GSU5JVCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MDEpICAgICAgICAgICAgICAgLyohPCBGaWx0ZXIgSW5pdCBNb2RlICovCisKKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgQ0FOX0ZNMVIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBDQU5fRk0xUl9GQk0gICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4M0ZGRikgICAgICAgICAgICAvKiE8IEZpbHRlciBNb2RlICovCisjZGVmaW5lICBDQU5fRk0xUl9GQk0wICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMSkgICAgICAgICAgICAvKiE8IEZpbHRlciBJbml0IE1vZGUgYml0IDAgKi8KKyNkZWZpbmUgIENBTl9GTTFSX0ZCTTEgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAyKSAgICAgICAgICAgIC8qITwgRmlsdGVyIEluaXQgTW9kZSBiaXQgMSAqLworI2RlZmluZSAgQ0FOX0ZNMVJfRkJNMiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDQpICAgICAgICAgICAgLyohPCBGaWx0ZXIgSW5pdCBNb2RlIGJpdCAyICovCisjZGVmaW5lICBDQU5fRk0xUl9GQk0zICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwOCkgICAgICAgICAgICAvKiE8IEZpbHRlciBJbml0IE1vZGUgYml0IDMgKi8KKyNkZWZpbmUgIENBTl9GTTFSX0ZCTTQgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDEwKSAgICAgICAgICAgIC8qITwgRmlsdGVyIEluaXQgTW9kZSBiaXQgNCAqLworI2RlZmluZSAgQ0FOX0ZNMVJfRkJNNSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMjApICAgICAgICAgICAgLyohPCBGaWx0ZXIgSW5pdCBNb2RlIGJpdCA1ICovCisjZGVmaW5lICBDQU5fRk0xUl9GQk02ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA0MCkgICAgICAgICAgICAvKiE8IEZpbHRlciBJbml0IE1vZGUgYml0IDYgKi8KKyNkZWZpbmUgIENBTl9GTTFSX0ZCTTcgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDgwKSAgICAgICAgICAgIC8qITwgRmlsdGVyIEluaXQgTW9kZSBiaXQgNyAqLworI2RlZmluZSAgQ0FOX0ZNMVJfRkJNOCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAxMDApICAgICAgICAgICAgLyohPCBGaWx0ZXIgSW5pdCBNb2RlIGJpdCA4ICovCisjZGVmaW5lICBDQU5fRk0xUl9GQk05ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDIwMCkgICAgICAgICAgICAvKiE8IEZpbHRlciBJbml0IE1vZGUgYml0IDkgKi8KKyNkZWZpbmUgIENBTl9GTTFSX0ZCTTEwICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwNDAwKSAgICAgICAgICAgIC8qITwgRmlsdGVyIEluaXQgTW9kZSBiaXQgMTAgKi8KKyNkZWZpbmUgIENBTl9GTTFSX0ZCTTExICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwODAwKSAgICAgICAgICAgIC8qITwgRmlsdGVyIEluaXQgTW9kZSBiaXQgMTEgKi8KKyNkZWZpbmUgIENBTl9GTTFSX0ZCTTEyICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgxMDAwKSAgICAgICAgICAgIC8qITwgRmlsdGVyIEluaXQgTW9kZSBiaXQgMTIgKi8KKyNkZWZpbmUgIENBTl9GTTFSX0ZCTTEzICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgyMDAwKSAgICAgICAgICAgIC8qITwgRmlsdGVyIEluaXQgTW9kZSBiaXQgMTMgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBDQU5fRlMxUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIENBTl9GUzFSX0ZTQyAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgzRkZGKSAgICAgICAgICAgIC8qITwgRmlsdGVyIFNjYWxlIENvbmZpZ3VyYXRpb24gKi8KKyNkZWZpbmUgIENBTl9GUzFSX0ZTQzAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAxKSAgICAgICAgICAgIC8qITwgRmlsdGVyIFNjYWxlIENvbmZpZ3VyYXRpb24gYml0IDAgKi8KKyNkZWZpbmUgIENBTl9GUzFSX0ZTQzEgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAyKSAgICAgICAgICAgIC8qITwgRmlsdGVyIFNjYWxlIENvbmZpZ3VyYXRpb24gYml0IDEgKi8KKyNkZWZpbmUgIENBTl9GUzFSX0ZTQzIgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA0KSAgICAgICAgICAgIC8qITwgRmlsdGVyIFNjYWxlIENvbmZpZ3VyYXRpb24gYml0IDIgKi8KKyNkZWZpbmUgIENBTl9GUzFSX0ZTQzMgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA4KSAgICAgICAgICAgIC8qITwgRmlsdGVyIFNjYWxlIENvbmZpZ3VyYXRpb24gYml0IDMgKi8KKyNkZWZpbmUgIENBTl9GUzFSX0ZTQzQgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDEwKSAgICAgICAgICAgIC8qITwgRmlsdGVyIFNjYWxlIENvbmZpZ3VyYXRpb24gYml0IDQgKi8KKyNkZWZpbmUgIENBTl9GUzFSX0ZTQzUgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDIwKSAgICAgICAgICAgIC8qITwgRmlsdGVyIFNjYWxlIENvbmZpZ3VyYXRpb24gYml0IDUgKi8KKyNkZWZpbmUgIENBTl9GUzFSX0ZTQzYgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDQwKSAgICAgICAgICAgIC8qITwgRmlsdGVyIFNjYWxlIENvbmZpZ3VyYXRpb24gYml0IDYgKi8KKyNkZWZpbmUgIENBTl9GUzFSX0ZTQzcgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDgwKSAgICAgICAgICAgIC8qITwgRmlsdGVyIFNjYWxlIENvbmZpZ3VyYXRpb24gYml0IDcgKi8KKyNkZWZpbmUgIENBTl9GUzFSX0ZTQzggICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMTAwKSAgICAgICAgICAgIC8qITwgRmlsdGVyIFNjYWxlIENvbmZpZ3VyYXRpb24gYml0IDggKi8KKyNkZWZpbmUgIENBTl9GUzFSX0ZTQzkgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMjAwKSAgICAgICAgICAgIC8qITwgRmlsdGVyIFNjYWxlIENvbmZpZ3VyYXRpb24gYml0IDkgKi8KKyNkZWZpbmUgIENBTl9GUzFSX0ZTQzEwICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwNDAwKSAgICAgICAgICAgIC8qITwgRmlsdGVyIFNjYWxlIENvbmZpZ3VyYXRpb24gYml0IDEwICovCisjZGVmaW5lICBDQU5fRlMxUl9GU0MxMSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDgwMCkgICAgICAgICAgICAvKiE8IEZpbHRlciBTY2FsZSBDb25maWd1cmF0aW9uIGJpdCAxMSAqLworI2RlZmluZSAgQ0FOX0ZTMVJfRlNDMTIgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDEwMDApICAgICAgICAgICAgLyohPCBGaWx0ZXIgU2NhbGUgQ29uZmlndXJhdGlvbiBiaXQgMTIgKi8KKyNkZWZpbmUgIENBTl9GUzFSX0ZTQzEzICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgyMDAwKSAgICAgICAgICAgIC8qITwgRmlsdGVyIFNjYWxlIENvbmZpZ3VyYXRpb24gYml0IDEzICovCisKKy8qKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBDQU5fRkZBMVIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBDQU5fRkZBMVJfRkZBICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4M0ZGRikgICAgICAgICAgICAvKiE8IEZpbHRlciBGSUZPIEFzc2lnbm1lbnQgKi8KKyNkZWZpbmUgIENBTl9GRkExUl9GRkEwICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAxKSAgICAgICAgICAgIC8qITwgRmlsdGVyIEZJRk8gQXNzaWdubWVudCBmb3IgRmlsdGVyIDAgKi8KKyNkZWZpbmUgIENBTl9GRkExUl9GRkExICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAyKSAgICAgICAgICAgIC8qITwgRmlsdGVyIEZJRk8gQXNzaWdubWVudCBmb3IgRmlsdGVyIDEgKi8KKyNkZWZpbmUgIENBTl9GRkExUl9GRkEyICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA0KSAgICAgICAgICAgIC8qITwgRmlsdGVyIEZJRk8gQXNzaWdubWVudCBmb3IgRmlsdGVyIDIgKi8KKyNkZWZpbmUgIENBTl9GRkExUl9GRkEzICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA4KSAgICAgICAgICAgIC8qITwgRmlsdGVyIEZJRk8gQXNzaWdubWVudCBmb3IgRmlsdGVyIDMgKi8KKyNkZWZpbmUgIENBTl9GRkExUl9GRkE0ICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDEwKSAgICAgICAgICAgIC8qITwgRmlsdGVyIEZJRk8gQXNzaWdubWVudCBmb3IgRmlsdGVyIDQgKi8KKyNkZWZpbmUgIENBTl9GRkExUl9GRkE1ICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDIwKSAgICAgICAgICAgIC8qITwgRmlsdGVyIEZJRk8gQXNzaWdubWVudCBmb3IgRmlsdGVyIDUgKi8KKyNkZWZpbmUgIENBTl9GRkExUl9GRkE2ICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDQwKSAgICAgICAgICAgIC8qITwgRmlsdGVyIEZJRk8gQXNzaWdubWVudCBmb3IgRmlsdGVyIDYgKi8KKyNkZWZpbmUgIENBTl9GRkExUl9GRkE3ICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDgwKSAgICAgICAgICAgIC8qITwgRmlsdGVyIEZJRk8gQXNzaWdubWVudCBmb3IgRmlsdGVyIDcgKi8KKyNkZWZpbmUgIENBTl9GRkExUl9GRkE4ICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMTAwKSAgICAgICAgICAgIC8qITwgRmlsdGVyIEZJRk8gQXNzaWdubWVudCBmb3IgRmlsdGVyIDggKi8KKyNkZWZpbmUgIENBTl9GRkExUl9GRkE5ICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMjAwKSAgICAgICAgICAgIC8qITwgRmlsdGVyIEZJRk8gQXNzaWdubWVudCBmb3IgRmlsdGVyIDkgKi8KKyNkZWZpbmUgIENBTl9GRkExUl9GRkExMCAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwNDAwKSAgICAgICAgICAgIC8qITwgRmlsdGVyIEZJRk8gQXNzaWdubWVudCBmb3IgRmlsdGVyIDEwICovCisjZGVmaW5lICBDQU5fRkZBMVJfRkZBMTEgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDgwMCkgICAgICAgICAgICAvKiE8IEZpbHRlciBGSUZPIEFzc2lnbm1lbnQgZm9yIEZpbHRlciAxMSAqLworI2RlZmluZSAgQ0FOX0ZGQTFSX0ZGQTEyICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDEwMDApICAgICAgICAgICAgLyohPCBGaWx0ZXIgRklGTyBBc3NpZ25tZW50IGZvciBGaWx0ZXIgMTIgKi8KKyNkZWZpbmUgIENBTl9GRkExUl9GRkExMyAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgyMDAwKSAgICAgICAgICAgIC8qITwgRmlsdGVyIEZJRk8gQXNzaWdubWVudCBmb3IgRmlsdGVyIDEzICovCisKKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgQ0FOX0ZBMVIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBDQU5fRkExUl9GQUNUICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4M0ZGRikgICAgICAgICAgICAvKiE8IEZpbHRlciBBY3RpdmUgKi8KKyNkZWZpbmUgIENBTl9GQTFSX0ZBQ1QwICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAxKSAgICAgICAgICAgIC8qITwgRmlsdGVyIDAgQWN0aXZlICovCisjZGVmaW5lICBDQU5fRkExUl9GQUNUMSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMikgICAgICAgICAgICAvKiE8IEZpbHRlciAxIEFjdGl2ZSAqLworI2RlZmluZSAgQ0FOX0ZBMVJfRkFDVDIgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDQpICAgICAgICAgICAgLyohPCBGaWx0ZXIgMiBBY3RpdmUgKi8KKyNkZWZpbmUgIENBTl9GQTFSX0ZBQ1QzICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA4KSAgICAgICAgICAgIC8qITwgRmlsdGVyIDMgQWN0aXZlICovCisjZGVmaW5lICBDQU5fRkExUl9GQUNUNCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAxMCkgICAgICAgICAgICAvKiE8IEZpbHRlciA0IEFjdGl2ZSAqLworI2RlZmluZSAgQ0FOX0ZBMVJfRkFDVDUgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMjApICAgICAgICAgICAgLyohPCBGaWx0ZXIgNSBBY3RpdmUgKi8KKyNkZWZpbmUgIENBTl9GQTFSX0ZBQ1Q2ICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDQwKSAgICAgICAgICAgIC8qITwgRmlsdGVyIDYgQWN0aXZlICovCisjZGVmaW5lICBDQU5fRkExUl9GQUNUNyAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA4MCkgICAgICAgICAgICAvKiE8IEZpbHRlciA3IEFjdGl2ZSAqLworI2RlZmluZSAgQ0FOX0ZBMVJfRkFDVDggICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAxMDApICAgICAgICAgICAgLyohPCBGaWx0ZXIgOCBBY3RpdmUgKi8KKyNkZWZpbmUgIENBTl9GQTFSX0ZBQ1Q5ICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMjAwKSAgICAgICAgICAgIC8qITwgRmlsdGVyIDkgQWN0aXZlICovCisjZGVmaW5lICBDQU5fRkExUl9GQUNUMTAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDQwMCkgICAgICAgICAgICAvKiE8IEZpbHRlciAxMCBBY3RpdmUgKi8KKyNkZWZpbmUgIENBTl9GQTFSX0ZBQ1QxMSAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwODAwKSAgICAgICAgICAgIC8qITwgRmlsdGVyIDExIEFjdGl2ZSAqLworI2RlZmluZSAgQ0FOX0ZBMVJfRkFDVDEyICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDEwMDApICAgICAgICAgICAgLyohPCBGaWx0ZXIgMTIgQWN0aXZlICovCisjZGVmaW5lICBDQU5fRkExUl9GQUNUMTMgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MjAwMCkgICAgICAgICAgICAvKiE8IEZpbHRlciAxMyBBY3RpdmUgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBDQU5fRjBSMSByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIENBTl9GMFIxX0ZCMCAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAwICovCisjZGVmaW5lICBDQU5fRjBSMV9GQjEgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IEZpbHRlciBiaXQgMSAqLworI2RlZmluZSAgQ0FOX0YwUjFfRkIyICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDIgKi8KKyNkZWZpbmUgIENBTl9GMFIxX0ZCMyAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAzICovCisjZGVmaW5lICBDQU5fRjBSMV9GQjQgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAgICAgICAvKiE8IEZpbHRlciBiaXQgNCAqLworI2RlZmluZSAgQ0FOX0YwUjFfRkI1ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDUgKi8KKyNkZWZpbmUgIENBTl9GMFIxX0ZCNiAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCA2ICovCisjZGVmaW5lICBDQU5fRjBSMV9GQjcgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApICAgICAgICAvKiE8IEZpbHRlciBiaXQgNyAqLworI2RlZmluZSAgQ0FOX0YwUjFfRkI4ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDggKi8KKyNkZWZpbmUgIENBTl9GMFIxX0ZCOSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCA5ICovCisjZGVmaW5lICBDQU5fRjBSMV9GQjEwICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTAgKi8KKyNkZWZpbmUgIENBTl9GMFIxX0ZCMTEgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxMSAqLworI2RlZmluZSAgQ0FOX0YwUjFfRkIxMiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDEyICovCisjZGVmaW5lICBDQU5fRjBSMV9GQjEzICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTMgKi8KKyNkZWZpbmUgIENBTl9GMFIxX0ZCMTQgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxNCAqLworI2RlZmluZSAgQ0FOX0YwUjFfRkIxNSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDE1ICovCisjZGVmaW5lICBDQU5fRjBSMV9GQjE2ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMTAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTYgKi8KKyNkZWZpbmUgIENBTl9GMFIxX0ZCMTcgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxNyAqLworI2RlZmluZSAgQ0FOX0YwUjFfRkIxOCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDQwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDE4ICovCisjZGVmaW5lICBDQU5fRjBSMV9GQjE5ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTkgKi8KKyNkZWZpbmUgIENBTl9GMFIxX0ZCMjAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDEwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyMCAqLworI2RlZmluZSAgQ0FOX0YwUjFfRkIyMSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMjAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDIxICovCisjZGVmaW5lICBDQU5fRjBSMV9GQjIyICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjIgKi8KKyNkZWZpbmUgIENBTl9GMFIxX0ZCMjMgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDgwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyMyAqLworI2RlZmluZSAgQ0FOX0YwUjFfRkIyNCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAxMDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDI0ICovCisjZGVmaW5lICBDQU5fRjBSMV9GQjI1ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDIwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjUgKi8KKyNkZWZpbmUgIENBTl9GMFIxX0ZCMjYgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwNDAwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyNiAqLworI2RlZmluZSAgQ0FOX0YwUjFfRkIyNyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA4MDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDI3ICovCisjZGVmaW5lICBDQU5fRjBSMV9GQjI4ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjggKi8KKyNkZWZpbmUgIENBTl9GMFIxX0ZCMjkgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgyMDAwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyOSAqLworI2RlZmluZSAgQ0FOX0YwUjFfRkIzMCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDQwMDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDMwICovCisjZGVmaW5lICBDQU5fRjBSMV9GQjMxICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4ODAwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMzEgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBDQU5fRjFSMSByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIENBTl9GMVIxX0ZCMCAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAwICovCisjZGVmaW5lICBDQU5fRjFSMV9GQjEgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IEZpbHRlciBiaXQgMSAqLworI2RlZmluZSAgQ0FOX0YxUjFfRkIyICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDIgKi8KKyNkZWZpbmUgIENBTl9GMVIxX0ZCMyAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAzICovCisjZGVmaW5lICBDQU5fRjFSMV9GQjQgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAgICAgICAvKiE8IEZpbHRlciBiaXQgNCAqLworI2RlZmluZSAgQ0FOX0YxUjFfRkI1ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDUgKi8KKyNkZWZpbmUgIENBTl9GMVIxX0ZCNiAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCA2ICovCisjZGVmaW5lICBDQU5fRjFSMV9GQjcgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApICAgICAgICAvKiE8IEZpbHRlciBiaXQgNyAqLworI2RlZmluZSAgQ0FOX0YxUjFfRkI4ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDggKi8KKyNkZWZpbmUgIENBTl9GMVIxX0ZCOSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCA5ICovCisjZGVmaW5lICBDQU5fRjFSMV9GQjEwICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTAgKi8KKyNkZWZpbmUgIENBTl9GMVIxX0ZCMTEgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxMSAqLworI2RlZmluZSAgQ0FOX0YxUjFfRkIxMiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDEyICovCisjZGVmaW5lICBDQU5fRjFSMV9GQjEzICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTMgKi8KKyNkZWZpbmUgIENBTl9GMVIxX0ZCMTQgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxNCAqLworI2RlZmluZSAgQ0FOX0YxUjFfRkIxNSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDE1ICovCisjZGVmaW5lICBDQU5fRjFSMV9GQjE2ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMTAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTYgKi8KKyNkZWZpbmUgIENBTl9GMVIxX0ZCMTcgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxNyAqLworI2RlZmluZSAgQ0FOX0YxUjFfRkIxOCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDQwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDE4ICovCisjZGVmaW5lICBDQU5fRjFSMV9GQjE5ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTkgKi8KKyNkZWZpbmUgIENBTl9GMVIxX0ZCMjAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDEwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyMCAqLworI2RlZmluZSAgQ0FOX0YxUjFfRkIyMSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMjAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDIxICovCisjZGVmaW5lICBDQU5fRjFSMV9GQjIyICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjIgKi8KKyNkZWZpbmUgIENBTl9GMVIxX0ZCMjMgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDgwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyMyAqLworI2RlZmluZSAgQ0FOX0YxUjFfRkIyNCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAxMDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDI0ICovCisjZGVmaW5lICBDQU5fRjFSMV9GQjI1ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDIwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjUgKi8KKyNkZWZpbmUgIENBTl9GMVIxX0ZCMjYgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwNDAwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyNiAqLworI2RlZmluZSAgQ0FOX0YxUjFfRkIyNyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA4MDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDI3ICovCisjZGVmaW5lICBDQU5fRjFSMV9GQjI4ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjggKi8KKyNkZWZpbmUgIENBTl9GMVIxX0ZCMjkgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgyMDAwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyOSAqLworI2RlZmluZSAgQ0FOX0YxUjFfRkIzMCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDQwMDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDMwICovCisjZGVmaW5lICBDQU5fRjFSMV9GQjMxICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4ODAwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMzEgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBDQU5fRjJSMSByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIENBTl9GMlIxX0ZCMCAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAwICovCisjZGVmaW5lICBDQU5fRjJSMV9GQjEgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IEZpbHRlciBiaXQgMSAqLworI2RlZmluZSAgQ0FOX0YyUjFfRkIyICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDIgKi8KKyNkZWZpbmUgIENBTl9GMlIxX0ZCMyAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAzICovCisjZGVmaW5lICBDQU5fRjJSMV9GQjQgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAgICAgICAvKiE8IEZpbHRlciBiaXQgNCAqLworI2RlZmluZSAgQ0FOX0YyUjFfRkI1ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDUgKi8KKyNkZWZpbmUgIENBTl9GMlIxX0ZCNiAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCA2ICovCisjZGVmaW5lICBDQU5fRjJSMV9GQjcgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApICAgICAgICAvKiE8IEZpbHRlciBiaXQgNyAqLworI2RlZmluZSAgQ0FOX0YyUjFfRkI4ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDggKi8KKyNkZWZpbmUgIENBTl9GMlIxX0ZCOSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCA5ICovCisjZGVmaW5lICBDQU5fRjJSMV9GQjEwICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTAgKi8KKyNkZWZpbmUgIENBTl9GMlIxX0ZCMTEgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxMSAqLworI2RlZmluZSAgQ0FOX0YyUjFfRkIxMiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDEyICovCisjZGVmaW5lICBDQU5fRjJSMV9GQjEzICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTMgKi8KKyNkZWZpbmUgIENBTl9GMlIxX0ZCMTQgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxNCAqLworI2RlZmluZSAgQ0FOX0YyUjFfRkIxNSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDE1ICovCisjZGVmaW5lICBDQU5fRjJSMV9GQjE2ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMTAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTYgKi8KKyNkZWZpbmUgIENBTl9GMlIxX0ZCMTcgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxNyAqLworI2RlZmluZSAgQ0FOX0YyUjFfRkIxOCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDQwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDE4ICovCisjZGVmaW5lICBDQU5fRjJSMV9GQjE5ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTkgKi8KKyNkZWZpbmUgIENBTl9GMlIxX0ZCMjAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDEwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyMCAqLworI2RlZmluZSAgQ0FOX0YyUjFfRkIyMSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMjAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDIxICovCisjZGVmaW5lICBDQU5fRjJSMV9GQjIyICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjIgKi8KKyNkZWZpbmUgIENBTl9GMlIxX0ZCMjMgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDgwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyMyAqLworI2RlZmluZSAgQ0FOX0YyUjFfRkIyNCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAxMDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDI0ICovCisjZGVmaW5lICBDQU5fRjJSMV9GQjI1ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDIwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjUgKi8KKyNkZWZpbmUgIENBTl9GMlIxX0ZCMjYgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwNDAwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyNiAqLworI2RlZmluZSAgQ0FOX0YyUjFfRkIyNyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA4MDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDI3ICovCisjZGVmaW5lICBDQU5fRjJSMV9GQjI4ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjggKi8KKyNkZWZpbmUgIENBTl9GMlIxX0ZCMjkgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgyMDAwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyOSAqLworI2RlZmluZSAgQ0FOX0YyUjFfRkIzMCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDQwMDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDMwICovCisjZGVmaW5lICBDQU5fRjJSMV9GQjMxICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4ODAwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMzEgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBDQU5fRjNSMSByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIENBTl9GM1IxX0ZCMCAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAwICovCisjZGVmaW5lICBDQU5fRjNSMV9GQjEgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IEZpbHRlciBiaXQgMSAqLworI2RlZmluZSAgQ0FOX0YzUjFfRkIyICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDIgKi8KKyNkZWZpbmUgIENBTl9GM1IxX0ZCMyAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAzICovCisjZGVmaW5lICBDQU5fRjNSMV9GQjQgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAgICAgICAvKiE8IEZpbHRlciBiaXQgNCAqLworI2RlZmluZSAgQ0FOX0YzUjFfRkI1ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDUgKi8KKyNkZWZpbmUgIENBTl9GM1IxX0ZCNiAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCA2ICovCisjZGVmaW5lICBDQU5fRjNSMV9GQjcgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApICAgICAgICAvKiE8IEZpbHRlciBiaXQgNyAqLworI2RlZmluZSAgQ0FOX0YzUjFfRkI4ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDggKi8KKyNkZWZpbmUgIENBTl9GM1IxX0ZCOSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCA5ICovCisjZGVmaW5lICBDQU5fRjNSMV9GQjEwICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTAgKi8KKyNkZWZpbmUgIENBTl9GM1IxX0ZCMTEgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxMSAqLworI2RlZmluZSAgQ0FOX0YzUjFfRkIxMiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDEyICovCisjZGVmaW5lICBDQU5fRjNSMV9GQjEzICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTMgKi8KKyNkZWZpbmUgIENBTl9GM1IxX0ZCMTQgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxNCAqLworI2RlZmluZSAgQ0FOX0YzUjFfRkIxNSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDE1ICovCisjZGVmaW5lICBDQU5fRjNSMV9GQjE2ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMTAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTYgKi8KKyNkZWZpbmUgIENBTl9GM1IxX0ZCMTcgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxNyAqLworI2RlZmluZSAgQ0FOX0YzUjFfRkIxOCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDQwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDE4ICovCisjZGVmaW5lICBDQU5fRjNSMV9GQjE5ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTkgKi8KKyNkZWZpbmUgIENBTl9GM1IxX0ZCMjAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDEwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyMCAqLworI2RlZmluZSAgQ0FOX0YzUjFfRkIyMSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMjAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDIxICovCisjZGVmaW5lICBDQU5fRjNSMV9GQjIyICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjIgKi8KKyNkZWZpbmUgIENBTl9GM1IxX0ZCMjMgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDgwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyMyAqLworI2RlZmluZSAgQ0FOX0YzUjFfRkIyNCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAxMDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDI0ICovCisjZGVmaW5lICBDQU5fRjNSMV9GQjI1ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDIwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjUgKi8KKyNkZWZpbmUgIENBTl9GM1IxX0ZCMjYgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwNDAwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyNiAqLworI2RlZmluZSAgQ0FOX0YzUjFfRkIyNyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA4MDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDI3ICovCisjZGVmaW5lICBDQU5fRjNSMV9GQjI4ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjggKi8KKyNkZWZpbmUgIENBTl9GM1IxX0ZCMjkgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgyMDAwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyOSAqLworI2RlZmluZSAgQ0FOX0YzUjFfRkIzMCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDQwMDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDMwICovCisjZGVmaW5lICBDQU5fRjNSMV9GQjMxICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4ODAwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMzEgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBDQU5fRjRSMSByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIENBTl9GNFIxX0ZCMCAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAwICovCisjZGVmaW5lICBDQU5fRjRSMV9GQjEgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IEZpbHRlciBiaXQgMSAqLworI2RlZmluZSAgQ0FOX0Y0UjFfRkIyICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDIgKi8KKyNkZWZpbmUgIENBTl9GNFIxX0ZCMyAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAzICovCisjZGVmaW5lICBDQU5fRjRSMV9GQjQgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAgICAgICAvKiE8IEZpbHRlciBiaXQgNCAqLworI2RlZmluZSAgQ0FOX0Y0UjFfRkI1ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDUgKi8KKyNkZWZpbmUgIENBTl9GNFIxX0ZCNiAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCA2ICovCisjZGVmaW5lICBDQU5fRjRSMV9GQjcgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApICAgICAgICAvKiE8IEZpbHRlciBiaXQgNyAqLworI2RlZmluZSAgQ0FOX0Y0UjFfRkI4ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDggKi8KKyNkZWZpbmUgIENBTl9GNFIxX0ZCOSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCA5ICovCisjZGVmaW5lICBDQU5fRjRSMV9GQjEwICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTAgKi8KKyNkZWZpbmUgIENBTl9GNFIxX0ZCMTEgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxMSAqLworI2RlZmluZSAgQ0FOX0Y0UjFfRkIxMiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDEyICovCisjZGVmaW5lICBDQU5fRjRSMV9GQjEzICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTMgKi8KKyNkZWZpbmUgIENBTl9GNFIxX0ZCMTQgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxNCAqLworI2RlZmluZSAgQ0FOX0Y0UjFfRkIxNSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDE1ICovCisjZGVmaW5lICBDQU5fRjRSMV9GQjE2ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMTAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTYgKi8KKyNkZWZpbmUgIENBTl9GNFIxX0ZCMTcgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxNyAqLworI2RlZmluZSAgQ0FOX0Y0UjFfRkIxOCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDQwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDE4ICovCisjZGVmaW5lICBDQU5fRjRSMV9GQjE5ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTkgKi8KKyNkZWZpbmUgIENBTl9GNFIxX0ZCMjAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDEwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyMCAqLworI2RlZmluZSAgQ0FOX0Y0UjFfRkIyMSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMjAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDIxICovCisjZGVmaW5lICBDQU5fRjRSMV9GQjIyICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjIgKi8KKyNkZWZpbmUgIENBTl9GNFIxX0ZCMjMgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDgwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyMyAqLworI2RlZmluZSAgQ0FOX0Y0UjFfRkIyNCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAxMDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDI0ICovCisjZGVmaW5lICBDQU5fRjRSMV9GQjI1ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDIwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjUgKi8KKyNkZWZpbmUgIENBTl9GNFIxX0ZCMjYgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwNDAwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyNiAqLworI2RlZmluZSAgQ0FOX0Y0UjFfRkIyNyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA4MDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDI3ICovCisjZGVmaW5lICBDQU5fRjRSMV9GQjI4ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjggKi8KKyNkZWZpbmUgIENBTl9GNFIxX0ZCMjkgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgyMDAwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyOSAqLworI2RlZmluZSAgQ0FOX0Y0UjFfRkIzMCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDQwMDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDMwICovCisjZGVmaW5lICBDQU5fRjRSMV9GQjMxICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4ODAwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMzEgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBDQU5fRjVSMSByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIENBTl9GNVIxX0ZCMCAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAwICovCisjZGVmaW5lICBDQU5fRjVSMV9GQjEgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IEZpbHRlciBiaXQgMSAqLworI2RlZmluZSAgQ0FOX0Y1UjFfRkIyICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDIgKi8KKyNkZWZpbmUgIENBTl9GNVIxX0ZCMyAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAzICovCisjZGVmaW5lICBDQU5fRjVSMV9GQjQgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAgICAgICAvKiE8IEZpbHRlciBiaXQgNCAqLworI2RlZmluZSAgQ0FOX0Y1UjFfRkI1ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDUgKi8KKyNkZWZpbmUgIENBTl9GNVIxX0ZCNiAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCA2ICovCisjZGVmaW5lICBDQU5fRjVSMV9GQjcgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApICAgICAgICAvKiE8IEZpbHRlciBiaXQgNyAqLworI2RlZmluZSAgQ0FOX0Y1UjFfRkI4ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDggKi8KKyNkZWZpbmUgIENBTl9GNVIxX0ZCOSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCA5ICovCisjZGVmaW5lICBDQU5fRjVSMV9GQjEwICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTAgKi8KKyNkZWZpbmUgIENBTl9GNVIxX0ZCMTEgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxMSAqLworI2RlZmluZSAgQ0FOX0Y1UjFfRkIxMiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDEyICovCisjZGVmaW5lICBDQU5fRjVSMV9GQjEzICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTMgKi8KKyNkZWZpbmUgIENBTl9GNVIxX0ZCMTQgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxNCAqLworI2RlZmluZSAgQ0FOX0Y1UjFfRkIxNSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDE1ICovCisjZGVmaW5lICBDQU5fRjVSMV9GQjE2ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMTAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTYgKi8KKyNkZWZpbmUgIENBTl9GNVIxX0ZCMTcgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxNyAqLworI2RlZmluZSAgQ0FOX0Y1UjFfRkIxOCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDQwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDE4ICovCisjZGVmaW5lICBDQU5fRjVSMV9GQjE5ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTkgKi8KKyNkZWZpbmUgIENBTl9GNVIxX0ZCMjAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDEwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyMCAqLworI2RlZmluZSAgQ0FOX0Y1UjFfRkIyMSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMjAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDIxICovCisjZGVmaW5lICBDQU5fRjVSMV9GQjIyICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjIgKi8KKyNkZWZpbmUgIENBTl9GNVIxX0ZCMjMgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDgwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyMyAqLworI2RlZmluZSAgQ0FOX0Y1UjFfRkIyNCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAxMDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDI0ICovCisjZGVmaW5lICBDQU5fRjVSMV9GQjI1ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDIwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjUgKi8KKyNkZWZpbmUgIENBTl9GNVIxX0ZCMjYgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwNDAwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyNiAqLworI2RlZmluZSAgQ0FOX0Y1UjFfRkIyNyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA4MDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDI3ICovCisjZGVmaW5lICBDQU5fRjVSMV9GQjI4ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjggKi8KKyNkZWZpbmUgIENBTl9GNVIxX0ZCMjkgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgyMDAwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyOSAqLworI2RlZmluZSAgQ0FOX0Y1UjFfRkIzMCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDQwMDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDMwICovCisjZGVmaW5lICBDQU5fRjVSMV9GQjMxICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4ODAwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMzEgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBDQU5fRjZSMSByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIENBTl9GNlIxX0ZCMCAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAwICovCisjZGVmaW5lICBDQU5fRjZSMV9GQjEgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IEZpbHRlciBiaXQgMSAqLworI2RlZmluZSAgQ0FOX0Y2UjFfRkIyICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDIgKi8KKyNkZWZpbmUgIENBTl9GNlIxX0ZCMyAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAzICovCisjZGVmaW5lICBDQU5fRjZSMV9GQjQgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAgICAgICAvKiE8IEZpbHRlciBiaXQgNCAqLworI2RlZmluZSAgQ0FOX0Y2UjFfRkI1ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDUgKi8KKyNkZWZpbmUgIENBTl9GNlIxX0ZCNiAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCA2ICovCisjZGVmaW5lICBDQU5fRjZSMV9GQjcgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApICAgICAgICAvKiE8IEZpbHRlciBiaXQgNyAqLworI2RlZmluZSAgQ0FOX0Y2UjFfRkI4ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDggKi8KKyNkZWZpbmUgIENBTl9GNlIxX0ZCOSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCA5ICovCisjZGVmaW5lICBDQU5fRjZSMV9GQjEwICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTAgKi8KKyNkZWZpbmUgIENBTl9GNlIxX0ZCMTEgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxMSAqLworI2RlZmluZSAgQ0FOX0Y2UjFfRkIxMiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDEyICovCisjZGVmaW5lICBDQU5fRjZSMV9GQjEzICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTMgKi8KKyNkZWZpbmUgIENBTl9GNlIxX0ZCMTQgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxNCAqLworI2RlZmluZSAgQ0FOX0Y2UjFfRkIxNSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDE1ICovCisjZGVmaW5lICBDQU5fRjZSMV9GQjE2ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMTAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTYgKi8KKyNkZWZpbmUgIENBTl9GNlIxX0ZCMTcgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxNyAqLworI2RlZmluZSAgQ0FOX0Y2UjFfRkIxOCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDQwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDE4ICovCisjZGVmaW5lICBDQU5fRjZSMV9GQjE5ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTkgKi8KKyNkZWZpbmUgIENBTl9GNlIxX0ZCMjAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDEwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyMCAqLworI2RlZmluZSAgQ0FOX0Y2UjFfRkIyMSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMjAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDIxICovCisjZGVmaW5lICBDQU5fRjZSMV9GQjIyICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjIgKi8KKyNkZWZpbmUgIENBTl9GNlIxX0ZCMjMgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDgwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyMyAqLworI2RlZmluZSAgQ0FOX0Y2UjFfRkIyNCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAxMDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDI0ICovCisjZGVmaW5lICBDQU5fRjZSMV9GQjI1ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDIwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjUgKi8KKyNkZWZpbmUgIENBTl9GNlIxX0ZCMjYgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwNDAwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyNiAqLworI2RlZmluZSAgQ0FOX0Y2UjFfRkIyNyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA4MDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDI3ICovCisjZGVmaW5lICBDQU5fRjZSMV9GQjI4ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjggKi8KKyNkZWZpbmUgIENBTl9GNlIxX0ZCMjkgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgyMDAwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyOSAqLworI2RlZmluZSAgQ0FOX0Y2UjFfRkIzMCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDQwMDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDMwICovCisjZGVmaW5lICBDQU5fRjZSMV9GQjMxICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4ODAwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMzEgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBDQU5fRjdSMSByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIENBTl9GN1IxX0ZCMCAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAwICovCisjZGVmaW5lICBDQU5fRjdSMV9GQjEgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IEZpbHRlciBiaXQgMSAqLworI2RlZmluZSAgQ0FOX0Y3UjFfRkIyICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDIgKi8KKyNkZWZpbmUgIENBTl9GN1IxX0ZCMyAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAzICovCisjZGVmaW5lICBDQU5fRjdSMV9GQjQgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAgICAgICAvKiE8IEZpbHRlciBiaXQgNCAqLworI2RlZmluZSAgQ0FOX0Y3UjFfRkI1ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDUgKi8KKyNkZWZpbmUgIENBTl9GN1IxX0ZCNiAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCA2ICovCisjZGVmaW5lICBDQU5fRjdSMV9GQjcgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApICAgICAgICAvKiE8IEZpbHRlciBiaXQgNyAqLworI2RlZmluZSAgQ0FOX0Y3UjFfRkI4ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDggKi8KKyNkZWZpbmUgIENBTl9GN1IxX0ZCOSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCA5ICovCisjZGVmaW5lICBDQU5fRjdSMV9GQjEwICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTAgKi8KKyNkZWZpbmUgIENBTl9GN1IxX0ZCMTEgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxMSAqLworI2RlZmluZSAgQ0FOX0Y3UjFfRkIxMiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDEyICovCisjZGVmaW5lICBDQU5fRjdSMV9GQjEzICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTMgKi8KKyNkZWZpbmUgIENBTl9GN1IxX0ZCMTQgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxNCAqLworI2RlZmluZSAgQ0FOX0Y3UjFfRkIxNSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDE1ICovCisjZGVmaW5lICBDQU5fRjdSMV9GQjE2ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMTAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTYgKi8KKyNkZWZpbmUgIENBTl9GN1IxX0ZCMTcgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxNyAqLworI2RlZmluZSAgQ0FOX0Y3UjFfRkIxOCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDQwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDE4ICovCisjZGVmaW5lICBDQU5fRjdSMV9GQjE5ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTkgKi8KKyNkZWZpbmUgIENBTl9GN1IxX0ZCMjAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDEwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyMCAqLworI2RlZmluZSAgQ0FOX0Y3UjFfRkIyMSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMjAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDIxICovCisjZGVmaW5lICBDQU5fRjdSMV9GQjIyICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjIgKi8KKyNkZWZpbmUgIENBTl9GN1IxX0ZCMjMgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDgwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyMyAqLworI2RlZmluZSAgQ0FOX0Y3UjFfRkIyNCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAxMDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDI0ICovCisjZGVmaW5lICBDQU5fRjdSMV9GQjI1ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDIwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjUgKi8KKyNkZWZpbmUgIENBTl9GN1IxX0ZCMjYgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwNDAwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyNiAqLworI2RlZmluZSAgQ0FOX0Y3UjFfRkIyNyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA4MDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDI3ICovCisjZGVmaW5lICBDQU5fRjdSMV9GQjI4ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjggKi8KKyNkZWZpbmUgIENBTl9GN1IxX0ZCMjkgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgyMDAwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyOSAqLworI2RlZmluZSAgQ0FOX0Y3UjFfRkIzMCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDQwMDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDMwICovCisjZGVmaW5lICBDQU5fRjdSMV9GQjMxICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4ODAwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMzEgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBDQU5fRjhSMSByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIENBTl9GOFIxX0ZCMCAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAwICovCisjZGVmaW5lICBDQU5fRjhSMV9GQjEgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IEZpbHRlciBiaXQgMSAqLworI2RlZmluZSAgQ0FOX0Y4UjFfRkIyICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDIgKi8KKyNkZWZpbmUgIENBTl9GOFIxX0ZCMyAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAzICovCisjZGVmaW5lICBDQU5fRjhSMV9GQjQgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAgICAgICAvKiE8IEZpbHRlciBiaXQgNCAqLworI2RlZmluZSAgQ0FOX0Y4UjFfRkI1ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDUgKi8KKyNkZWZpbmUgIENBTl9GOFIxX0ZCNiAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCA2ICovCisjZGVmaW5lICBDQU5fRjhSMV9GQjcgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApICAgICAgICAvKiE8IEZpbHRlciBiaXQgNyAqLworI2RlZmluZSAgQ0FOX0Y4UjFfRkI4ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDggKi8KKyNkZWZpbmUgIENBTl9GOFIxX0ZCOSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCA5ICovCisjZGVmaW5lICBDQU5fRjhSMV9GQjEwICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTAgKi8KKyNkZWZpbmUgIENBTl9GOFIxX0ZCMTEgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxMSAqLworI2RlZmluZSAgQ0FOX0Y4UjFfRkIxMiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDEyICovCisjZGVmaW5lICBDQU5fRjhSMV9GQjEzICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTMgKi8KKyNkZWZpbmUgIENBTl9GOFIxX0ZCMTQgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxNCAqLworI2RlZmluZSAgQ0FOX0Y4UjFfRkIxNSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDE1ICovCisjZGVmaW5lICBDQU5fRjhSMV9GQjE2ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMTAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTYgKi8KKyNkZWZpbmUgIENBTl9GOFIxX0ZCMTcgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxNyAqLworI2RlZmluZSAgQ0FOX0Y4UjFfRkIxOCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDQwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDE4ICovCisjZGVmaW5lICBDQU5fRjhSMV9GQjE5ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTkgKi8KKyNkZWZpbmUgIENBTl9GOFIxX0ZCMjAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDEwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyMCAqLworI2RlZmluZSAgQ0FOX0Y4UjFfRkIyMSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMjAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDIxICovCisjZGVmaW5lICBDQU5fRjhSMV9GQjIyICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjIgKi8KKyNkZWZpbmUgIENBTl9GOFIxX0ZCMjMgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDgwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyMyAqLworI2RlZmluZSAgQ0FOX0Y4UjFfRkIyNCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAxMDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDI0ICovCisjZGVmaW5lICBDQU5fRjhSMV9GQjI1ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDIwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjUgKi8KKyNkZWZpbmUgIENBTl9GOFIxX0ZCMjYgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwNDAwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyNiAqLworI2RlZmluZSAgQ0FOX0Y4UjFfRkIyNyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA4MDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDI3ICovCisjZGVmaW5lICBDQU5fRjhSMV9GQjI4ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjggKi8KKyNkZWZpbmUgIENBTl9GOFIxX0ZCMjkgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgyMDAwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyOSAqLworI2RlZmluZSAgQ0FOX0Y4UjFfRkIzMCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDQwMDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDMwICovCisjZGVmaW5lICBDQU5fRjhSMV9GQjMxICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4ODAwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMzEgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBDQU5fRjlSMSByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIENBTl9GOVIxX0ZCMCAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAwICovCisjZGVmaW5lICBDQU5fRjlSMV9GQjEgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IEZpbHRlciBiaXQgMSAqLworI2RlZmluZSAgQ0FOX0Y5UjFfRkIyICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDIgKi8KKyNkZWZpbmUgIENBTl9GOVIxX0ZCMyAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAzICovCisjZGVmaW5lICBDQU5fRjlSMV9GQjQgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAgICAgICAvKiE8IEZpbHRlciBiaXQgNCAqLworI2RlZmluZSAgQ0FOX0Y5UjFfRkI1ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDUgKi8KKyNkZWZpbmUgIENBTl9GOVIxX0ZCNiAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCA2ICovCisjZGVmaW5lICBDQU5fRjlSMV9GQjcgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApICAgICAgICAvKiE8IEZpbHRlciBiaXQgNyAqLworI2RlZmluZSAgQ0FOX0Y5UjFfRkI4ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDggKi8KKyNkZWZpbmUgIENBTl9GOVIxX0ZCOSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCA5ICovCisjZGVmaW5lICBDQU5fRjlSMV9GQjEwICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTAgKi8KKyNkZWZpbmUgIENBTl9GOVIxX0ZCMTEgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxMSAqLworI2RlZmluZSAgQ0FOX0Y5UjFfRkIxMiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDEyICovCisjZGVmaW5lICBDQU5fRjlSMV9GQjEzICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTMgKi8KKyNkZWZpbmUgIENBTl9GOVIxX0ZCMTQgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxNCAqLworI2RlZmluZSAgQ0FOX0Y5UjFfRkIxNSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDE1ICovCisjZGVmaW5lICBDQU5fRjlSMV9GQjE2ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMTAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTYgKi8KKyNkZWZpbmUgIENBTl9GOVIxX0ZCMTcgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxNyAqLworI2RlZmluZSAgQ0FOX0Y5UjFfRkIxOCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDQwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDE4ICovCisjZGVmaW5lICBDQU5fRjlSMV9GQjE5ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTkgKi8KKyNkZWZpbmUgIENBTl9GOVIxX0ZCMjAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDEwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyMCAqLworI2RlZmluZSAgQ0FOX0Y5UjFfRkIyMSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMjAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDIxICovCisjZGVmaW5lICBDQU5fRjlSMV9GQjIyICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjIgKi8KKyNkZWZpbmUgIENBTl9GOVIxX0ZCMjMgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDgwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyMyAqLworI2RlZmluZSAgQ0FOX0Y5UjFfRkIyNCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAxMDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDI0ICovCisjZGVmaW5lICBDQU5fRjlSMV9GQjI1ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDIwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjUgKi8KKyNkZWZpbmUgIENBTl9GOVIxX0ZCMjYgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwNDAwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyNiAqLworI2RlZmluZSAgQ0FOX0Y5UjFfRkIyNyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA4MDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDI3ICovCisjZGVmaW5lICBDQU5fRjlSMV9GQjI4ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjggKi8KKyNkZWZpbmUgIENBTl9GOVIxX0ZCMjkgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgyMDAwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyOSAqLworI2RlZmluZSAgQ0FOX0Y5UjFfRkIzMCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDQwMDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDMwICovCisjZGVmaW5lICBDQU5fRjlSMV9GQjMxICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4ODAwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMzEgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBDQU5fRjEwUjEgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIENBTl9GMTBSMV9GQjAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAwICovCisjZGVmaW5lICBDQU5fRjEwUjFfRkIxICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IEZpbHRlciBiaXQgMSAqLworI2RlZmluZSAgQ0FOX0YxMFIxX0ZCMiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDIgKi8KKyNkZWZpbmUgIENBTl9GMTBSMV9GQjMgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAzICovCisjZGVmaW5lICBDQU5fRjEwUjFfRkI0ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAgICAgICAvKiE8IEZpbHRlciBiaXQgNCAqLworI2RlZmluZSAgQ0FOX0YxMFIxX0ZCNSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDUgKi8KKyNkZWZpbmUgIENBTl9GMTBSMV9GQjYgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCA2ICovCisjZGVmaW5lICBDQU5fRjEwUjFfRkI3ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApICAgICAgICAvKiE8IEZpbHRlciBiaXQgNyAqLworI2RlZmluZSAgQ0FOX0YxMFIxX0ZCOCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDggKi8KKyNkZWZpbmUgIENBTl9GMTBSMV9GQjkgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCA5ICovCisjZGVmaW5lICBDQU5fRjEwUjFfRkIxMCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTAgKi8KKyNkZWZpbmUgIENBTl9GMTBSMV9GQjExICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxMSAqLworI2RlZmluZSAgQ0FOX0YxMFIxX0ZCMTIgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDEyICovCisjZGVmaW5lICBDQU5fRjEwUjFfRkIxMyAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTMgKi8KKyNkZWZpbmUgIENBTl9GMTBSMV9GQjE0ICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxNCAqLworI2RlZmluZSAgQ0FOX0YxMFIxX0ZCMTUgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDE1ICovCisjZGVmaW5lICBDQU5fRjEwUjFfRkIxNiAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMTAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTYgKi8KKyNkZWZpbmUgIENBTl9GMTBSMV9GQjE3ICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxNyAqLworI2RlZmluZSAgQ0FOX0YxMFIxX0ZCMTggICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDQwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDE4ICovCisjZGVmaW5lICBDQU5fRjEwUjFfRkIxOSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTkgKi8KKyNkZWZpbmUgIENBTl9GMTBSMV9GQjIwICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDEwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyMCAqLworI2RlZmluZSAgQ0FOX0YxMFIxX0ZCMjEgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMjAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDIxICovCisjZGVmaW5lICBDQU5fRjEwUjFfRkIyMiAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjIgKi8KKyNkZWZpbmUgIENBTl9GMTBSMV9GQjIzICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDgwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyMyAqLworI2RlZmluZSAgQ0FOX0YxMFIxX0ZCMjQgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAxMDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDI0ICovCisjZGVmaW5lICBDQU5fRjEwUjFfRkIyNSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDIwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjUgKi8KKyNkZWZpbmUgIENBTl9GMTBSMV9GQjI2ICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwNDAwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyNiAqLworI2RlZmluZSAgQ0FOX0YxMFIxX0ZCMjcgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA4MDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDI3ICovCisjZGVmaW5lICBDQU5fRjEwUjFfRkIyOCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjggKi8KKyNkZWZpbmUgIENBTl9GMTBSMV9GQjI5ICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgyMDAwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyOSAqLworI2RlZmluZSAgQ0FOX0YxMFIxX0ZCMzAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDQwMDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDMwICovCisjZGVmaW5lICBDQU5fRjEwUjFfRkIzMSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4ODAwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMzEgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBDQU5fRjExUjEgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIENBTl9GMTFSMV9GQjAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAwICovCisjZGVmaW5lICBDQU5fRjExUjFfRkIxICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IEZpbHRlciBiaXQgMSAqLworI2RlZmluZSAgQ0FOX0YxMVIxX0ZCMiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDIgKi8KKyNkZWZpbmUgIENBTl9GMTFSMV9GQjMgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAzICovCisjZGVmaW5lICBDQU5fRjExUjFfRkI0ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAgICAgICAvKiE8IEZpbHRlciBiaXQgNCAqLworI2RlZmluZSAgQ0FOX0YxMVIxX0ZCNSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDUgKi8KKyNkZWZpbmUgIENBTl9GMTFSMV9GQjYgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCA2ICovCisjZGVmaW5lICBDQU5fRjExUjFfRkI3ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApICAgICAgICAvKiE8IEZpbHRlciBiaXQgNyAqLworI2RlZmluZSAgQ0FOX0YxMVIxX0ZCOCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDggKi8KKyNkZWZpbmUgIENBTl9GMTFSMV9GQjkgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCA5ICovCisjZGVmaW5lICBDQU5fRjExUjFfRkIxMCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTAgKi8KKyNkZWZpbmUgIENBTl9GMTFSMV9GQjExICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxMSAqLworI2RlZmluZSAgQ0FOX0YxMVIxX0ZCMTIgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDEyICovCisjZGVmaW5lICBDQU5fRjExUjFfRkIxMyAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTMgKi8KKyNkZWZpbmUgIENBTl9GMTFSMV9GQjE0ICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxNCAqLworI2RlZmluZSAgQ0FOX0YxMVIxX0ZCMTUgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDE1ICovCisjZGVmaW5lICBDQU5fRjExUjFfRkIxNiAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMTAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTYgKi8KKyNkZWZpbmUgIENBTl9GMTFSMV9GQjE3ICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxNyAqLworI2RlZmluZSAgQ0FOX0YxMVIxX0ZCMTggICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDQwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDE4ICovCisjZGVmaW5lICBDQU5fRjExUjFfRkIxOSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTkgKi8KKyNkZWZpbmUgIENBTl9GMTFSMV9GQjIwICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDEwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyMCAqLworI2RlZmluZSAgQ0FOX0YxMVIxX0ZCMjEgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMjAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDIxICovCisjZGVmaW5lICBDQU5fRjExUjFfRkIyMiAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjIgKi8KKyNkZWZpbmUgIENBTl9GMTFSMV9GQjIzICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDgwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyMyAqLworI2RlZmluZSAgQ0FOX0YxMVIxX0ZCMjQgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAxMDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDI0ICovCisjZGVmaW5lICBDQU5fRjExUjFfRkIyNSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDIwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjUgKi8KKyNkZWZpbmUgIENBTl9GMTFSMV9GQjI2ICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwNDAwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyNiAqLworI2RlZmluZSAgQ0FOX0YxMVIxX0ZCMjcgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA4MDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDI3ICovCisjZGVmaW5lICBDQU5fRjExUjFfRkIyOCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjggKi8KKyNkZWZpbmUgIENBTl9GMTFSMV9GQjI5ICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgyMDAwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyOSAqLworI2RlZmluZSAgQ0FOX0YxMVIxX0ZCMzAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDQwMDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDMwICovCisjZGVmaW5lICBDQU5fRjExUjFfRkIzMSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4ODAwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMzEgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBDQU5fRjEyUjEgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIENBTl9GMTJSMV9GQjAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAwICovCisjZGVmaW5lICBDQU5fRjEyUjFfRkIxICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IEZpbHRlciBiaXQgMSAqLworI2RlZmluZSAgQ0FOX0YxMlIxX0ZCMiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDIgKi8KKyNkZWZpbmUgIENBTl9GMTJSMV9GQjMgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAzICovCisjZGVmaW5lICBDQU5fRjEyUjFfRkI0ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAgICAgICAvKiE8IEZpbHRlciBiaXQgNCAqLworI2RlZmluZSAgQ0FOX0YxMlIxX0ZCNSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDUgKi8KKyNkZWZpbmUgIENBTl9GMTJSMV9GQjYgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCA2ICovCisjZGVmaW5lICBDQU5fRjEyUjFfRkI3ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApICAgICAgICAvKiE8IEZpbHRlciBiaXQgNyAqLworI2RlZmluZSAgQ0FOX0YxMlIxX0ZCOCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDggKi8KKyNkZWZpbmUgIENBTl9GMTJSMV9GQjkgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCA5ICovCisjZGVmaW5lICBDQU5fRjEyUjFfRkIxMCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTAgKi8KKyNkZWZpbmUgIENBTl9GMTJSMV9GQjExICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxMSAqLworI2RlZmluZSAgQ0FOX0YxMlIxX0ZCMTIgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDEyICovCisjZGVmaW5lICBDQU5fRjEyUjFfRkIxMyAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTMgKi8KKyNkZWZpbmUgIENBTl9GMTJSMV9GQjE0ICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxNCAqLworI2RlZmluZSAgQ0FOX0YxMlIxX0ZCMTUgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDE1ICovCisjZGVmaW5lICBDQU5fRjEyUjFfRkIxNiAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMTAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTYgKi8KKyNkZWZpbmUgIENBTl9GMTJSMV9GQjE3ICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxNyAqLworI2RlZmluZSAgQ0FOX0YxMlIxX0ZCMTggICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDQwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDE4ICovCisjZGVmaW5lICBDQU5fRjEyUjFfRkIxOSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTkgKi8KKyNkZWZpbmUgIENBTl9GMTJSMV9GQjIwICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDEwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyMCAqLworI2RlZmluZSAgQ0FOX0YxMlIxX0ZCMjEgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMjAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDIxICovCisjZGVmaW5lICBDQU5fRjEyUjFfRkIyMiAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjIgKi8KKyNkZWZpbmUgIENBTl9GMTJSMV9GQjIzICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDgwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyMyAqLworI2RlZmluZSAgQ0FOX0YxMlIxX0ZCMjQgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAxMDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDI0ICovCisjZGVmaW5lICBDQU5fRjEyUjFfRkIyNSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDIwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjUgKi8KKyNkZWZpbmUgIENBTl9GMTJSMV9GQjI2ICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwNDAwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyNiAqLworI2RlZmluZSAgQ0FOX0YxMlIxX0ZCMjcgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA4MDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDI3ICovCisjZGVmaW5lICBDQU5fRjEyUjFfRkIyOCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjggKi8KKyNkZWZpbmUgIENBTl9GMTJSMV9GQjI5ICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgyMDAwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyOSAqLworI2RlZmluZSAgQ0FOX0YxMlIxX0ZCMzAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDQwMDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDMwICovCisjZGVmaW5lICBDQU5fRjEyUjFfRkIzMSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4ODAwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMzEgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBDQU5fRjEzUjEgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIENBTl9GMTNSMV9GQjAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAwICovCisjZGVmaW5lICBDQU5fRjEzUjFfRkIxICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IEZpbHRlciBiaXQgMSAqLworI2RlZmluZSAgQ0FOX0YxM1IxX0ZCMiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDIgKi8KKyNkZWZpbmUgIENBTl9GMTNSMV9GQjMgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAzICovCisjZGVmaW5lICBDQU5fRjEzUjFfRkI0ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAgICAgICAvKiE8IEZpbHRlciBiaXQgNCAqLworI2RlZmluZSAgQ0FOX0YxM1IxX0ZCNSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDUgKi8KKyNkZWZpbmUgIENBTl9GMTNSMV9GQjYgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCA2ICovCisjZGVmaW5lICBDQU5fRjEzUjFfRkI3ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApICAgICAgICAvKiE8IEZpbHRlciBiaXQgNyAqLworI2RlZmluZSAgQ0FOX0YxM1IxX0ZCOCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDggKi8KKyNkZWZpbmUgIENBTl9GMTNSMV9GQjkgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCA5ICovCisjZGVmaW5lICBDQU5fRjEzUjFfRkIxMCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTAgKi8KKyNkZWZpbmUgIENBTl9GMTNSMV9GQjExICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxMSAqLworI2RlZmluZSAgQ0FOX0YxM1IxX0ZCMTIgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDEyICovCisjZGVmaW5lICBDQU5fRjEzUjFfRkIxMyAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTMgKi8KKyNkZWZpbmUgIENBTl9GMTNSMV9GQjE0ICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxNCAqLworI2RlZmluZSAgQ0FOX0YxM1IxX0ZCMTUgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDE1ICovCisjZGVmaW5lICBDQU5fRjEzUjFfRkIxNiAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMTAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTYgKi8KKyNkZWZpbmUgIENBTl9GMTNSMV9GQjE3ICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxNyAqLworI2RlZmluZSAgQ0FOX0YxM1IxX0ZCMTggICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDQwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDE4ICovCisjZGVmaW5lICBDQU5fRjEzUjFfRkIxOSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTkgKi8KKyNkZWZpbmUgIENBTl9GMTNSMV9GQjIwICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDEwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyMCAqLworI2RlZmluZSAgQ0FOX0YxM1IxX0ZCMjEgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMjAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDIxICovCisjZGVmaW5lICBDQU5fRjEzUjFfRkIyMiAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjIgKi8KKyNkZWZpbmUgIENBTl9GMTNSMV9GQjIzICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDgwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyMyAqLworI2RlZmluZSAgQ0FOX0YxM1IxX0ZCMjQgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAxMDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDI0ICovCisjZGVmaW5lICBDQU5fRjEzUjFfRkIyNSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDIwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjUgKi8KKyNkZWZpbmUgIENBTl9GMTNSMV9GQjI2ICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwNDAwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyNiAqLworI2RlZmluZSAgQ0FOX0YxM1IxX0ZCMjcgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA4MDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDI3ICovCisjZGVmaW5lICBDQU5fRjEzUjFfRkIyOCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjggKi8KKyNkZWZpbmUgIENBTl9GMTNSMV9GQjI5ICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgyMDAwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyOSAqLworI2RlZmluZSAgQ0FOX0YxM1IxX0ZCMzAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDQwMDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDMwICovCisjZGVmaW5lICBDQU5fRjEzUjFfRkIzMSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4ODAwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMzEgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBDQU5fRjBSMiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIENBTl9GMFIyX0ZCMCAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAwICovCisjZGVmaW5lICBDQU5fRjBSMl9GQjEgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IEZpbHRlciBiaXQgMSAqLworI2RlZmluZSAgQ0FOX0YwUjJfRkIyICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDIgKi8KKyNkZWZpbmUgIENBTl9GMFIyX0ZCMyAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAzICovCisjZGVmaW5lICBDQU5fRjBSMl9GQjQgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAgICAgICAvKiE8IEZpbHRlciBiaXQgNCAqLworI2RlZmluZSAgQ0FOX0YwUjJfRkI1ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDUgKi8KKyNkZWZpbmUgIENBTl9GMFIyX0ZCNiAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCA2ICovCisjZGVmaW5lICBDQU5fRjBSMl9GQjcgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApICAgICAgICAvKiE8IEZpbHRlciBiaXQgNyAqLworI2RlZmluZSAgQ0FOX0YwUjJfRkI4ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDggKi8KKyNkZWZpbmUgIENBTl9GMFIyX0ZCOSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCA5ICovCisjZGVmaW5lICBDQU5fRjBSMl9GQjEwICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTAgKi8KKyNkZWZpbmUgIENBTl9GMFIyX0ZCMTEgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxMSAqLworI2RlZmluZSAgQ0FOX0YwUjJfRkIxMiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDEyICovCisjZGVmaW5lICBDQU5fRjBSMl9GQjEzICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTMgKi8KKyNkZWZpbmUgIENBTl9GMFIyX0ZCMTQgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxNCAqLworI2RlZmluZSAgQ0FOX0YwUjJfRkIxNSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDE1ICovCisjZGVmaW5lICBDQU5fRjBSMl9GQjE2ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMTAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTYgKi8KKyNkZWZpbmUgIENBTl9GMFIyX0ZCMTcgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxNyAqLworI2RlZmluZSAgQ0FOX0YwUjJfRkIxOCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDQwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDE4ICovCisjZGVmaW5lICBDQU5fRjBSMl9GQjE5ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTkgKi8KKyNkZWZpbmUgIENBTl9GMFIyX0ZCMjAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDEwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyMCAqLworI2RlZmluZSAgQ0FOX0YwUjJfRkIyMSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMjAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDIxICovCisjZGVmaW5lICBDQU5fRjBSMl9GQjIyICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjIgKi8KKyNkZWZpbmUgIENBTl9GMFIyX0ZCMjMgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDgwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyMyAqLworI2RlZmluZSAgQ0FOX0YwUjJfRkIyNCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAxMDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDI0ICovCisjZGVmaW5lICBDQU5fRjBSMl9GQjI1ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDIwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjUgKi8KKyNkZWZpbmUgIENBTl9GMFIyX0ZCMjYgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwNDAwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyNiAqLworI2RlZmluZSAgQ0FOX0YwUjJfRkIyNyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA4MDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDI3ICovCisjZGVmaW5lICBDQU5fRjBSMl9GQjI4ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjggKi8KKyNkZWZpbmUgIENBTl9GMFIyX0ZCMjkgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgyMDAwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyOSAqLworI2RlZmluZSAgQ0FOX0YwUjJfRkIzMCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDQwMDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDMwICovCisjZGVmaW5lICBDQU5fRjBSMl9GQjMxICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4ODAwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMzEgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBDQU5fRjFSMiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIENBTl9GMVIyX0ZCMCAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAwICovCisjZGVmaW5lICBDQU5fRjFSMl9GQjEgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IEZpbHRlciBiaXQgMSAqLworI2RlZmluZSAgQ0FOX0YxUjJfRkIyICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDIgKi8KKyNkZWZpbmUgIENBTl9GMVIyX0ZCMyAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAzICovCisjZGVmaW5lICBDQU5fRjFSMl9GQjQgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAgICAgICAvKiE8IEZpbHRlciBiaXQgNCAqLworI2RlZmluZSAgQ0FOX0YxUjJfRkI1ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDUgKi8KKyNkZWZpbmUgIENBTl9GMVIyX0ZCNiAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCA2ICovCisjZGVmaW5lICBDQU5fRjFSMl9GQjcgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApICAgICAgICAvKiE8IEZpbHRlciBiaXQgNyAqLworI2RlZmluZSAgQ0FOX0YxUjJfRkI4ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDggKi8KKyNkZWZpbmUgIENBTl9GMVIyX0ZCOSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCA5ICovCisjZGVmaW5lICBDQU5fRjFSMl9GQjEwICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTAgKi8KKyNkZWZpbmUgIENBTl9GMVIyX0ZCMTEgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxMSAqLworI2RlZmluZSAgQ0FOX0YxUjJfRkIxMiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDEyICovCisjZGVmaW5lICBDQU5fRjFSMl9GQjEzICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTMgKi8KKyNkZWZpbmUgIENBTl9GMVIyX0ZCMTQgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxNCAqLworI2RlZmluZSAgQ0FOX0YxUjJfRkIxNSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDE1ICovCisjZGVmaW5lICBDQU5fRjFSMl9GQjE2ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMTAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTYgKi8KKyNkZWZpbmUgIENBTl9GMVIyX0ZCMTcgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxNyAqLworI2RlZmluZSAgQ0FOX0YxUjJfRkIxOCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDQwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDE4ICovCisjZGVmaW5lICBDQU5fRjFSMl9GQjE5ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTkgKi8KKyNkZWZpbmUgIENBTl9GMVIyX0ZCMjAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDEwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyMCAqLworI2RlZmluZSAgQ0FOX0YxUjJfRkIyMSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMjAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDIxICovCisjZGVmaW5lICBDQU5fRjFSMl9GQjIyICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjIgKi8KKyNkZWZpbmUgIENBTl9GMVIyX0ZCMjMgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDgwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyMyAqLworI2RlZmluZSAgQ0FOX0YxUjJfRkIyNCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAxMDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDI0ICovCisjZGVmaW5lICBDQU5fRjFSMl9GQjI1ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDIwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjUgKi8KKyNkZWZpbmUgIENBTl9GMVIyX0ZCMjYgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwNDAwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyNiAqLworI2RlZmluZSAgQ0FOX0YxUjJfRkIyNyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA4MDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDI3ICovCisjZGVmaW5lICBDQU5fRjFSMl9GQjI4ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjggKi8KKyNkZWZpbmUgIENBTl9GMVIyX0ZCMjkgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgyMDAwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyOSAqLworI2RlZmluZSAgQ0FOX0YxUjJfRkIzMCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDQwMDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDMwICovCisjZGVmaW5lICBDQU5fRjFSMl9GQjMxICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4ODAwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMzEgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBDQU5fRjJSMiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIENBTl9GMlIyX0ZCMCAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAwICovCisjZGVmaW5lICBDQU5fRjJSMl9GQjEgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IEZpbHRlciBiaXQgMSAqLworI2RlZmluZSAgQ0FOX0YyUjJfRkIyICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDIgKi8KKyNkZWZpbmUgIENBTl9GMlIyX0ZCMyAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAzICovCisjZGVmaW5lICBDQU5fRjJSMl9GQjQgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAgICAgICAvKiE8IEZpbHRlciBiaXQgNCAqLworI2RlZmluZSAgQ0FOX0YyUjJfRkI1ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDUgKi8KKyNkZWZpbmUgIENBTl9GMlIyX0ZCNiAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCA2ICovCisjZGVmaW5lICBDQU5fRjJSMl9GQjcgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApICAgICAgICAvKiE8IEZpbHRlciBiaXQgNyAqLworI2RlZmluZSAgQ0FOX0YyUjJfRkI4ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDggKi8KKyNkZWZpbmUgIENBTl9GMlIyX0ZCOSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCA5ICovCisjZGVmaW5lICBDQU5fRjJSMl9GQjEwICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTAgKi8KKyNkZWZpbmUgIENBTl9GMlIyX0ZCMTEgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxMSAqLworI2RlZmluZSAgQ0FOX0YyUjJfRkIxMiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDEyICovCisjZGVmaW5lICBDQU5fRjJSMl9GQjEzICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTMgKi8KKyNkZWZpbmUgIENBTl9GMlIyX0ZCMTQgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxNCAqLworI2RlZmluZSAgQ0FOX0YyUjJfRkIxNSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDE1ICovCisjZGVmaW5lICBDQU5fRjJSMl9GQjE2ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMTAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTYgKi8KKyNkZWZpbmUgIENBTl9GMlIyX0ZCMTcgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxNyAqLworI2RlZmluZSAgQ0FOX0YyUjJfRkIxOCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDQwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDE4ICovCisjZGVmaW5lICBDQU5fRjJSMl9GQjE5ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTkgKi8KKyNkZWZpbmUgIENBTl9GMlIyX0ZCMjAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDEwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyMCAqLworI2RlZmluZSAgQ0FOX0YyUjJfRkIyMSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMjAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDIxICovCisjZGVmaW5lICBDQU5fRjJSMl9GQjIyICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjIgKi8KKyNkZWZpbmUgIENBTl9GMlIyX0ZCMjMgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDgwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyMyAqLworI2RlZmluZSAgQ0FOX0YyUjJfRkIyNCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAxMDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDI0ICovCisjZGVmaW5lICBDQU5fRjJSMl9GQjI1ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDIwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjUgKi8KKyNkZWZpbmUgIENBTl9GMlIyX0ZCMjYgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwNDAwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyNiAqLworI2RlZmluZSAgQ0FOX0YyUjJfRkIyNyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA4MDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDI3ICovCisjZGVmaW5lICBDQU5fRjJSMl9GQjI4ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjggKi8KKyNkZWZpbmUgIENBTl9GMlIyX0ZCMjkgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgyMDAwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyOSAqLworI2RlZmluZSAgQ0FOX0YyUjJfRkIzMCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDQwMDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDMwICovCisjZGVmaW5lICBDQU5fRjJSMl9GQjMxICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4ODAwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMzEgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBDQU5fRjNSMiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIENBTl9GM1IyX0ZCMCAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAwICovCisjZGVmaW5lICBDQU5fRjNSMl9GQjEgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IEZpbHRlciBiaXQgMSAqLworI2RlZmluZSAgQ0FOX0YzUjJfRkIyICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDIgKi8KKyNkZWZpbmUgIENBTl9GM1IyX0ZCMyAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAzICovCisjZGVmaW5lICBDQU5fRjNSMl9GQjQgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAgICAgICAvKiE8IEZpbHRlciBiaXQgNCAqLworI2RlZmluZSAgQ0FOX0YzUjJfRkI1ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDUgKi8KKyNkZWZpbmUgIENBTl9GM1IyX0ZCNiAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCA2ICovCisjZGVmaW5lICBDQU5fRjNSMl9GQjcgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApICAgICAgICAvKiE8IEZpbHRlciBiaXQgNyAqLworI2RlZmluZSAgQ0FOX0YzUjJfRkI4ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDggKi8KKyNkZWZpbmUgIENBTl9GM1IyX0ZCOSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCA5ICovCisjZGVmaW5lICBDQU5fRjNSMl9GQjEwICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTAgKi8KKyNkZWZpbmUgIENBTl9GM1IyX0ZCMTEgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxMSAqLworI2RlZmluZSAgQ0FOX0YzUjJfRkIxMiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDEyICovCisjZGVmaW5lICBDQU5fRjNSMl9GQjEzICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTMgKi8KKyNkZWZpbmUgIENBTl9GM1IyX0ZCMTQgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxNCAqLworI2RlZmluZSAgQ0FOX0YzUjJfRkIxNSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDE1ICovCisjZGVmaW5lICBDQU5fRjNSMl9GQjE2ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMTAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTYgKi8KKyNkZWZpbmUgIENBTl9GM1IyX0ZCMTcgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxNyAqLworI2RlZmluZSAgQ0FOX0YzUjJfRkIxOCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDQwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDE4ICovCisjZGVmaW5lICBDQU5fRjNSMl9GQjE5ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTkgKi8KKyNkZWZpbmUgIENBTl9GM1IyX0ZCMjAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDEwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyMCAqLworI2RlZmluZSAgQ0FOX0YzUjJfRkIyMSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMjAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDIxICovCisjZGVmaW5lICBDQU5fRjNSMl9GQjIyICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjIgKi8KKyNkZWZpbmUgIENBTl9GM1IyX0ZCMjMgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDgwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyMyAqLworI2RlZmluZSAgQ0FOX0YzUjJfRkIyNCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAxMDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDI0ICovCisjZGVmaW5lICBDQU5fRjNSMl9GQjI1ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDIwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjUgKi8KKyNkZWZpbmUgIENBTl9GM1IyX0ZCMjYgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwNDAwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyNiAqLworI2RlZmluZSAgQ0FOX0YzUjJfRkIyNyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA4MDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDI3ICovCisjZGVmaW5lICBDQU5fRjNSMl9GQjI4ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjggKi8KKyNkZWZpbmUgIENBTl9GM1IyX0ZCMjkgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgyMDAwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyOSAqLworI2RlZmluZSAgQ0FOX0YzUjJfRkIzMCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDQwMDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDMwICovCisjZGVmaW5lICBDQU5fRjNSMl9GQjMxICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4ODAwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMzEgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBDQU5fRjRSMiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIENBTl9GNFIyX0ZCMCAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAwICovCisjZGVmaW5lICBDQU5fRjRSMl9GQjEgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IEZpbHRlciBiaXQgMSAqLworI2RlZmluZSAgQ0FOX0Y0UjJfRkIyICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDIgKi8KKyNkZWZpbmUgIENBTl9GNFIyX0ZCMyAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAzICovCisjZGVmaW5lICBDQU5fRjRSMl9GQjQgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAgICAgICAvKiE8IEZpbHRlciBiaXQgNCAqLworI2RlZmluZSAgQ0FOX0Y0UjJfRkI1ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDUgKi8KKyNkZWZpbmUgIENBTl9GNFIyX0ZCNiAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCA2ICovCisjZGVmaW5lICBDQU5fRjRSMl9GQjcgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApICAgICAgICAvKiE8IEZpbHRlciBiaXQgNyAqLworI2RlZmluZSAgQ0FOX0Y0UjJfRkI4ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDggKi8KKyNkZWZpbmUgIENBTl9GNFIyX0ZCOSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCA5ICovCisjZGVmaW5lICBDQU5fRjRSMl9GQjEwICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTAgKi8KKyNkZWZpbmUgIENBTl9GNFIyX0ZCMTEgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxMSAqLworI2RlZmluZSAgQ0FOX0Y0UjJfRkIxMiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDEyICovCisjZGVmaW5lICBDQU5fRjRSMl9GQjEzICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTMgKi8KKyNkZWZpbmUgIENBTl9GNFIyX0ZCMTQgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxNCAqLworI2RlZmluZSAgQ0FOX0Y0UjJfRkIxNSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDE1ICovCisjZGVmaW5lICBDQU5fRjRSMl9GQjE2ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMTAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTYgKi8KKyNkZWZpbmUgIENBTl9GNFIyX0ZCMTcgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxNyAqLworI2RlZmluZSAgQ0FOX0Y0UjJfRkIxOCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDQwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDE4ICovCisjZGVmaW5lICBDQU5fRjRSMl9GQjE5ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTkgKi8KKyNkZWZpbmUgIENBTl9GNFIyX0ZCMjAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDEwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyMCAqLworI2RlZmluZSAgQ0FOX0Y0UjJfRkIyMSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMjAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDIxICovCisjZGVmaW5lICBDQU5fRjRSMl9GQjIyICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjIgKi8KKyNkZWZpbmUgIENBTl9GNFIyX0ZCMjMgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDgwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyMyAqLworI2RlZmluZSAgQ0FOX0Y0UjJfRkIyNCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAxMDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDI0ICovCisjZGVmaW5lICBDQU5fRjRSMl9GQjI1ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDIwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjUgKi8KKyNkZWZpbmUgIENBTl9GNFIyX0ZCMjYgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwNDAwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyNiAqLworI2RlZmluZSAgQ0FOX0Y0UjJfRkIyNyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA4MDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDI3ICovCisjZGVmaW5lICBDQU5fRjRSMl9GQjI4ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjggKi8KKyNkZWZpbmUgIENBTl9GNFIyX0ZCMjkgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgyMDAwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyOSAqLworI2RlZmluZSAgQ0FOX0Y0UjJfRkIzMCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDQwMDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDMwICovCisjZGVmaW5lICBDQU5fRjRSMl9GQjMxICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4ODAwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMzEgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBDQU5fRjVSMiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIENBTl9GNVIyX0ZCMCAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAwICovCisjZGVmaW5lICBDQU5fRjVSMl9GQjEgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IEZpbHRlciBiaXQgMSAqLworI2RlZmluZSAgQ0FOX0Y1UjJfRkIyICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDIgKi8KKyNkZWZpbmUgIENBTl9GNVIyX0ZCMyAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAzICovCisjZGVmaW5lICBDQU5fRjVSMl9GQjQgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAgICAgICAvKiE8IEZpbHRlciBiaXQgNCAqLworI2RlZmluZSAgQ0FOX0Y1UjJfRkI1ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDUgKi8KKyNkZWZpbmUgIENBTl9GNVIyX0ZCNiAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCA2ICovCisjZGVmaW5lICBDQU5fRjVSMl9GQjcgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApICAgICAgICAvKiE8IEZpbHRlciBiaXQgNyAqLworI2RlZmluZSAgQ0FOX0Y1UjJfRkI4ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDggKi8KKyNkZWZpbmUgIENBTl9GNVIyX0ZCOSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCA5ICovCisjZGVmaW5lICBDQU5fRjVSMl9GQjEwICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTAgKi8KKyNkZWZpbmUgIENBTl9GNVIyX0ZCMTEgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxMSAqLworI2RlZmluZSAgQ0FOX0Y1UjJfRkIxMiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDEyICovCisjZGVmaW5lICBDQU5fRjVSMl9GQjEzICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTMgKi8KKyNkZWZpbmUgIENBTl9GNVIyX0ZCMTQgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxNCAqLworI2RlZmluZSAgQ0FOX0Y1UjJfRkIxNSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDE1ICovCisjZGVmaW5lICBDQU5fRjVSMl9GQjE2ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMTAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTYgKi8KKyNkZWZpbmUgIENBTl9GNVIyX0ZCMTcgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxNyAqLworI2RlZmluZSAgQ0FOX0Y1UjJfRkIxOCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDQwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDE4ICovCisjZGVmaW5lICBDQU5fRjVSMl9GQjE5ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTkgKi8KKyNkZWZpbmUgIENBTl9GNVIyX0ZCMjAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDEwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyMCAqLworI2RlZmluZSAgQ0FOX0Y1UjJfRkIyMSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMjAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDIxICovCisjZGVmaW5lICBDQU5fRjVSMl9GQjIyICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjIgKi8KKyNkZWZpbmUgIENBTl9GNVIyX0ZCMjMgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDgwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyMyAqLworI2RlZmluZSAgQ0FOX0Y1UjJfRkIyNCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAxMDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDI0ICovCisjZGVmaW5lICBDQU5fRjVSMl9GQjI1ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDIwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjUgKi8KKyNkZWZpbmUgIENBTl9GNVIyX0ZCMjYgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwNDAwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyNiAqLworI2RlZmluZSAgQ0FOX0Y1UjJfRkIyNyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA4MDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDI3ICovCisjZGVmaW5lICBDQU5fRjVSMl9GQjI4ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjggKi8KKyNkZWZpbmUgIENBTl9GNVIyX0ZCMjkgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgyMDAwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyOSAqLworI2RlZmluZSAgQ0FOX0Y1UjJfRkIzMCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDQwMDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDMwICovCisjZGVmaW5lICBDQU5fRjVSMl9GQjMxICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4ODAwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMzEgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBDQU5fRjZSMiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIENBTl9GNlIyX0ZCMCAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAwICovCisjZGVmaW5lICBDQU5fRjZSMl9GQjEgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IEZpbHRlciBiaXQgMSAqLworI2RlZmluZSAgQ0FOX0Y2UjJfRkIyICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDIgKi8KKyNkZWZpbmUgIENBTl9GNlIyX0ZCMyAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAzICovCisjZGVmaW5lICBDQU5fRjZSMl9GQjQgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAgICAgICAvKiE8IEZpbHRlciBiaXQgNCAqLworI2RlZmluZSAgQ0FOX0Y2UjJfRkI1ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDUgKi8KKyNkZWZpbmUgIENBTl9GNlIyX0ZCNiAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCA2ICovCisjZGVmaW5lICBDQU5fRjZSMl9GQjcgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApICAgICAgICAvKiE8IEZpbHRlciBiaXQgNyAqLworI2RlZmluZSAgQ0FOX0Y2UjJfRkI4ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDggKi8KKyNkZWZpbmUgIENBTl9GNlIyX0ZCOSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCA5ICovCisjZGVmaW5lICBDQU5fRjZSMl9GQjEwICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTAgKi8KKyNkZWZpbmUgIENBTl9GNlIyX0ZCMTEgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxMSAqLworI2RlZmluZSAgQ0FOX0Y2UjJfRkIxMiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDEyICovCisjZGVmaW5lICBDQU5fRjZSMl9GQjEzICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTMgKi8KKyNkZWZpbmUgIENBTl9GNlIyX0ZCMTQgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxNCAqLworI2RlZmluZSAgQ0FOX0Y2UjJfRkIxNSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDE1ICovCisjZGVmaW5lICBDQU5fRjZSMl9GQjE2ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMTAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTYgKi8KKyNkZWZpbmUgIENBTl9GNlIyX0ZCMTcgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxNyAqLworI2RlZmluZSAgQ0FOX0Y2UjJfRkIxOCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDQwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDE4ICovCisjZGVmaW5lICBDQU5fRjZSMl9GQjE5ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTkgKi8KKyNkZWZpbmUgIENBTl9GNlIyX0ZCMjAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDEwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyMCAqLworI2RlZmluZSAgQ0FOX0Y2UjJfRkIyMSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMjAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDIxICovCisjZGVmaW5lICBDQU5fRjZSMl9GQjIyICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjIgKi8KKyNkZWZpbmUgIENBTl9GNlIyX0ZCMjMgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDgwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyMyAqLworI2RlZmluZSAgQ0FOX0Y2UjJfRkIyNCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAxMDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDI0ICovCisjZGVmaW5lICBDQU5fRjZSMl9GQjI1ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDIwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjUgKi8KKyNkZWZpbmUgIENBTl9GNlIyX0ZCMjYgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwNDAwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyNiAqLworI2RlZmluZSAgQ0FOX0Y2UjJfRkIyNyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA4MDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDI3ICovCisjZGVmaW5lICBDQU5fRjZSMl9GQjI4ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjggKi8KKyNkZWZpbmUgIENBTl9GNlIyX0ZCMjkgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgyMDAwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyOSAqLworI2RlZmluZSAgQ0FOX0Y2UjJfRkIzMCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDQwMDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDMwICovCisjZGVmaW5lICBDQU5fRjZSMl9GQjMxICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4ODAwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMzEgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBDQU5fRjdSMiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIENBTl9GN1IyX0ZCMCAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAwICovCisjZGVmaW5lICBDQU5fRjdSMl9GQjEgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IEZpbHRlciBiaXQgMSAqLworI2RlZmluZSAgQ0FOX0Y3UjJfRkIyICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDIgKi8KKyNkZWZpbmUgIENBTl9GN1IyX0ZCMyAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAzICovCisjZGVmaW5lICBDQU5fRjdSMl9GQjQgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAgICAgICAvKiE8IEZpbHRlciBiaXQgNCAqLworI2RlZmluZSAgQ0FOX0Y3UjJfRkI1ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDUgKi8KKyNkZWZpbmUgIENBTl9GN1IyX0ZCNiAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCA2ICovCisjZGVmaW5lICBDQU5fRjdSMl9GQjcgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApICAgICAgICAvKiE8IEZpbHRlciBiaXQgNyAqLworI2RlZmluZSAgQ0FOX0Y3UjJfRkI4ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDggKi8KKyNkZWZpbmUgIENBTl9GN1IyX0ZCOSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCA5ICovCisjZGVmaW5lICBDQU5fRjdSMl9GQjEwICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTAgKi8KKyNkZWZpbmUgIENBTl9GN1IyX0ZCMTEgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxMSAqLworI2RlZmluZSAgQ0FOX0Y3UjJfRkIxMiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDEyICovCisjZGVmaW5lICBDQU5fRjdSMl9GQjEzICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTMgKi8KKyNkZWZpbmUgIENBTl9GN1IyX0ZCMTQgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxNCAqLworI2RlZmluZSAgQ0FOX0Y3UjJfRkIxNSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDE1ICovCisjZGVmaW5lICBDQU5fRjdSMl9GQjE2ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMTAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTYgKi8KKyNkZWZpbmUgIENBTl9GN1IyX0ZCMTcgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxNyAqLworI2RlZmluZSAgQ0FOX0Y3UjJfRkIxOCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDQwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDE4ICovCisjZGVmaW5lICBDQU5fRjdSMl9GQjE5ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTkgKi8KKyNkZWZpbmUgIENBTl9GN1IyX0ZCMjAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDEwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyMCAqLworI2RlZmluZSAgQ0FOX0Y3UjJfRkIyMSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMjAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDIxICovCisjZGVmaW5lICBDQU5fRjdSMl9GQjIyICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjIgKi8KKyNkZWZpbmUgIENBTl9GN1IyX0ZCMjMgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDgwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyMyAqLworI2RlZmluZSAgQ0FOX0Y3UjJfRkIyNCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAxMDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDI0ICovCisjZGVmaW5lICBDQU5fRjdSMl9GQjI1ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDIwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjUgKi8KKyNkZWZpbmUgIENBTl9GN1IyX0ZCMjYgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwNDAwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyNiAqLworI2RlZmluZSAgQ0FOX0Y3UjJfRkIyNyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA4MDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDI3ICovCisjZGVmaW5lICBDQU5fRjdSMl9GQjI4ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjggKi8KKyNkZWZpbmUgIENBTl9GN1IyX0ZCMjkgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgyMDAwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyOSAqLworI2RlZmluZSAgQ0FOX0Y3UjJfRkIzMCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDQwMDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDMwICovCisjZGVmaW5lICBDQU5fRjdSMl9GQjMxICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4ODAwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMzEgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBDQU5fRjhSMiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIENBTl9GOFIyX0ZCMCAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAwICovCisjZGVmaW5lICBDQU5fRjhSMl9GQjEgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IEZpbHRlciBiaXQgMSAqLworI2RlZmluZSAgQ0FOX0Y4UjJfRkIyICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDIgKi8KKyNkZWZpbmUgIENBTl9GOFIyX0ZCMyAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAzICovCisjZGVmaW5lICBDQU5fRjhSMl9GQjQgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAgICAgICAvKiE8IEZpbHRlciBiaXQgNCAqLworI2RlZmluZSAgQ0FOX0Y4UjJfRkI1ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDUgKi8KKyNkZWZpbmUgIENBTl9GOFIyX0ZCNiAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCA2ICovCisjZGVmaW5lICBDQU5fRjhSMl9GQjcgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApICAgICAgICAvKiE8IEZpbHRlciBiaXQgNyAqLworI2RlZmluZSAgQ0FOX0Y4UjJfRkI4ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDggKi8KKyNkZWZpbmUgIENBTl9GOFIyX0ZCOSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCA5ICovCisjZGVmaW5lICBDQU5fRjhSMl9GQjEwICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTAgKi8KKyNkZWZpbmUgIENBTl9GOFIyX0ZCMTEgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxMSAqLworI2RlZmluZSAgQ0FOX0Y4UjJfRkIxMiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDEyICovCisjZGVmaW5lICBDQU5fRjhSMl9GQjEzICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTMgKi8KKyNkZWZpbmUgIENBTl9GOFIyX0ZCMTQgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxNCAqLworI2RlZmluZSAgQ0FOX0Y4UjJfRkIxNSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDE1ICovCisjZGVmaW5lICBDQU5fRjhSMl9GQjE2ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMTAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTYgKi8KKyNkZWZpbmUgIENBTl9GOFIyX0ZCMTcgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxNyAqLworI2RlZmluZSAgQ0FOX0Y4UjJfRkIxOCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDQwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDE4ICovCisjZGVmaW5lICBDQU5fRjhSMl9GQjE5ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTkgKi8KKyNkZWZpbmUgIENBTl9GOFIyX0ZCMjAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDEwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyMCAqLworI2RlZmluZSAgQ0FOX0Y4UjJfRkIyMSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMjAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDIxICovCisjZGVmaW5lICBDQU5fRjhSMl9GQjIyICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjIgKi8KKyNkZWZpbmUgIENBTl9GOFIyX0ZCMjMgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDgwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyMyAqLworI2RlZmluZSAgQ0FOX0Y4UjJfRkIyNCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAxMDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDI0ICovCisjZGVmaW5lICBDQU5fRjhSMl9GQjI1ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDIwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjUgKi8KKyNkZWZpbmUgIENBTl9GOFIyX0ZCMjYgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwNDAwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyNiAqLworI2RlZmluZSAgQ0FOX0Y4UjJfRkIyNyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA4MDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDI3ICovCisjZGVmaW5lICBDQU5fRjhSMl9GQjI4ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjggKi8KKyNkZWZpbmUgIENBTl9GOFIyX0ZCMjkgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgyMDAwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyOSAqLworI2RlZmluZSAgQ0FOX0Y4UjJfRkIzMCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDQwMDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDMwICovCisjZGVmaW5lICBDQU5fRjhSMl9GQjMxICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4ODAwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMzEgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBDQU5fRjlSMiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIENBTl9GOVIyX0ZCMCAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAwICovCisjZGVmaW5lICBDQU5fRjlSMl9GQjEgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IEZpbHRlciBiaXQgMSAqLworI2RlZmluZSAgQ0FOX0Y5UjJfRkIyICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDIgKi8KKyNkZWZpbmUgIENBTl9GOVIyX0ZCMyAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAzICovCisjZGVmaW5lICBDQU5fRjlSMl9GQjQgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAgICAgICAvKiE8IEZpbHRlciBiaXQgNCAqLworI2RlZmluZSAgQ0FOX0Y5UjJfRkI1ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDUgKi8KKyNkZWZpbmUgIENBTl9GOVIyX0ZCNiAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCA2ICovCisjZGVmaW5lICBDQU5fRjlSMl9GQjcgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApICAgICAgICAvKiE8IEZpbHRlciBiaXQgNyAqLworI2RlZmluZSAgQ0FOX0Y5UjJfRkI4ICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDggKi8KKyNkZWZpbmUgIENBTl9GOVIyX0ZCOSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCA5ICovCisjZGVmaW5lICBDQU5fRjlSMl9GQjEwICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTAgKi8KKyNkZWZpbmUgIENBTl9GOVIyX0ZCMTEgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxMSAqLworI2RlZmluZSAgQ0FOX0Y5UjJfRkIxMiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDEyICovCisjZGVmaW5lICBDQU5fRjlSMl9GQjEzICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTMgKi8KKyNkZWZpbmUgIENBTl9GOVIyX0ZCMTQgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxNCAqLworI2RlZmluZSAgQ0FOX0Y5UjJfRkIxNSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDE1ICovCisjZGVmaW5lICBDQU5fRjlSMl9GQjE2ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMTAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTYgKi8KKyNkZWZpbmUgIENBTl9GOVIyX0ZCMTcgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxNyAqLworI2RlZmluZSAgQ0FOX0Y5UjJfRkIxOCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDQwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDE4ICovCisjZGVmaW5lICBDQU5fRjlSMl9GQjE5ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTkgKi8KKyNkZWZpbmUgIENBTl9GOVIyX0ZCMjAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDEwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyMCAqLworI2RlZmluZSAgQ0FOX0Y5UjJfRkIyMSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMjAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDIxICovCisjZGVmaW5lICBDQU5fRjlSMl9GQjIyICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjIgKi8KKyNkZWZpbmUgIENBTl9GOVIyX0ZCMjMgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDgwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyMyAqLworI2RlZmluZSAgQ0FOX0Y5UjJfRkIyNCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAxMDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDI0ICovCisjZGVmaW5lICBDQU5fRjlSMl9GQjI1ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDIwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjUgKi8KKyNkZWZpbmUgIENBTl9GOVIyX0ZCMjYgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwNDAwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyNiAqLworI2RlZmluZSAgQ0FOX0Y5UjJfRkIyNyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA4MDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDI3ICovCisjZGVmaW5lICBDQU5fRjlSMl9GQjI4ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjggKi8KKyNkZWZpbmUgIENBTl9GOVIyX0ZCMjkgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgyMDAwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyOSAqLworI2RlZmluZSAgQ0FOX0Y5UjJfRkIzMCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDQwMDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDMwICovCisjZGVmaW5lICBDQU5fRjlSMl9GQjMxICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4ODAwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMzEgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBDQU5fRjEwUjIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIENBTl9GMTBSMl9GQjAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAwICovCisjZGVmaW5lICBDQU5fRjEwUjJfRkIxICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IEZpbHRlciBiaXQgMSAqLworI2RlZmluZSAgQ0FOX0YxMFIyX0ZCMiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDIgKi8KKyNkZWZpbmUgIENBTl9GMTBSMl9GQjMgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAzICovCisjZGVmaW5lICBDQU5fRjEwUjJfRkI0ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAgICAgICAvKiE8IEZpbHRlciBiaXQgNCAqLworI2RlZmluZSAgQ0FOX0YxMFIyX0ZCNSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDUgKi8KKyNkZWZpbmUgIENBTl9GMTBSMl9GQjYgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCA2ICovCisjZGVmaW5lICBDQU5fRjEwUjJfRkI3ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApICAgICAgICAvKiE8IEZpbHRlciBiaXQgNyAqLworI2RlZmluZSAgQ0FOX0YxMFIyX0ZCOCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDggKi8KKyNkZWZpbmUgIENBTl9GMTBSMl9GQjkgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCA5ICovCisjZGVmaW5lICBDQU5fRjEwUjJfRkIxMCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTAgKi8KKyNkZWZpbmUgIENBTl9GMTBSMl9GQjExICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxMSAqLworI2RlZmluZSAgQ0FOX0YxMFIyX0ZCMTIgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDEyICovCisjZGVmaW5lICBDQU5fRjEwUjJfRkIxMyAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTMgKi8KKyNkZWZpbmUgIENBTl9GMTBSMl9GQjE0ICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxNCAqLworI2RlZmluZSAgQ0FOX0YxMFIyX0ZCMTUgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDE1ICovCisjZGVmaW5lICBDQU5fRjEwUjJfRkIxNiAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMTAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTYgKi8KKyNkZWZpbmUgIENBTl9GMTBSMl9GQjE3ICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxNyAqLworI2RlZmluZSAgQ0FOX0YxMFIyX0ZCMTggICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDQwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDE4ICovCisjZGVmaW5lICBDQU5fRjEwUjJfRkIxOSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTkgKi8KKyNkZWZpbmUgIENBTl9GMTBSMl9GQjIwICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDEwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyMCAqLworI2RlZmluZSAgQ0FOX0YxMFIyX0ZCMjEgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMjAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDIxICovCisjZGVmaW5lICBDQU5fRjEwUjJfRkIyMiAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjIgKi8KKyNkZWZpbmUgIENBTl9GMTBSMl9GQjIzICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDgwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyMyAqLworI2RlZmluZSAgQ0FOX0YxMFIyX0ZCMjQgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAxMDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDI0ICovCisjZGVmaW5lICBDQU5fRjEwUjJfRkIyNSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDIwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjUgKi8KKyNkZWZpbmUgIENBTl9GMTBSMl9GQjI2ICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwNDAwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyNiAqLworI2RlZmluZSAgQ0FOX0YxMFIyX0ZCMjcgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA4MDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDI3ICovCisjZGVmaW5lICBDQU5fRjEwUjJfRkIyOCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjggKi8KKyNkZWZpbmUgIENBTl9GMTBSMl9GQjI5ICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgyMDAwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyOSAqLworI2RlZmluZSAgQ0FOX0YxMFIyX0ZCMzAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDQwMDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDMwICovCisjZGVmaW5lICBDQU5fRjEwUjJfRkIzMSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4ODAwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMzEgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBDQU5fRjExUjIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIENBTl9GMTFSMl9GQjAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAwICovCisjZGVmaW5lICBDQU5fRjExUjJfRkIxICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IEZpbHRlciBiaXQgMSAqLworI2RlZmluZSAgQ0FOX0YxMVIyX0ZCMiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDIgKi8KKyNkZWZpbmUgIENBTl9GMTFSMl9GQjMgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAzICovCisjZGVmaW5lICBDQU5fRjExUjJfRkI0ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAgICAgICAvKiE8IEZpbHRlciBiaXQgNCAqLworI2RlZmluZSAgQ0FOX0YxMVIyX0ZCNSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDUgKi8KKyNkZWZpbmUgIENBTl9GMTFSMl9GQjYgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCA2ICovCisjZGVmaW5lICBDQU5fRjExUjJfRkI3ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApICAgICAgICAvKiE8IEZpbHRlciBiaXQgNyAqLworI2RlZmluZSAgQ0FOX0YxMVIyX0ZCOCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDggKi8KKyNkZWZpbmUgIENBTl9GMTFSMl9GQjkgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCA5ICovCisjZGVmaW5lICBDQU5fRjExUjJfRkIxMCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTAgKi8KKyNkZWZpbmUgIENBTl9GMTFSMl9GQjExICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxMSAqLworI2RlZmluZSAgQ0FOX0YxMVIyX0ZCMTIgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDEyICovCisjZGVmaW5lICBDQU5fRjExUjJfRkIxMyAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTMgKi8KKyNkZWZpbmUgIENBTl9GMTFSMl9GQjE0ICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxNCAqLworI2RlZmluZSAgQ0FOX0YxMVIyX0ZCMTUgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDE1ICovCisjZGVmaW5lICBDQU5fRjExUjJfRkIxNiAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMTAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTYgKi8KKyNkZWZpbmUgIENBTl9GMTFSMl9GQjE3ICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxNyAqLworI2RlZmluZSAgQ0FOX0YxMVIyX0ZCMTggICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDQwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDE4ICovCisjZGVmaW5lICBDQU5fRjExUjJfRkIxOSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTkgKi8KKyNkZWZpbmUgIENBTl9GMTFSMl9GQjIwICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDEwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyMCAqLworI2RlZmluZSAgQ0FOX0YxMVIyX0ZCMjEgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMjAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDIxICovCisjZGVmaW5lICBDQU5fRjExUjJfRkIyMiAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjIgKi8KKyNkZWZpbmUgIENBTl9GMTFSMl9GQjIzICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDgwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyMyAqLworI2RlZmluZSAgQ0FOX0YxMVIyX0ZCMjQgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAxMDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDI0ICovCisjZGVmaW5lICBDQU5fRjExUjJfRkIyNSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDIwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjUgKi8KKyNkZWZpbmUgIENBTl9GMTFSMl9GQjI2ICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwNDAwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyNiAqLworI2RlZmluZSAgQ0FOX0YxMVIyX0ZCMjcgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA4MDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDI3ICovCisjZGVmaW5lICBDQU5fRjExUjJfRkIyOCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjggKi8KKyNkZWZpbmUgIENBTl9GMTFSMl9GQjI5ICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgyMDAwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyOSAqLworI2RlZmluZSAgQ0FOX0YxMVIyX0ZCMzAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDQwMDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDMwICovCisjZGVmaW5lICBDQU5fRjExUjJfRkIzMSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4ODAwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMzEgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBDQU5fRjEyUjIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIENBTl9GMTJSMl9GQjAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAwICovCisjZGVmaW5lICBDQU5fRjEyUjJfRkIxICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IEZpbHRlciBiaXQgMSAqLworI2RlZmluZSAgQ0FOX0YxMlIyX0ZCMiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDIgKi8KKyNkZWZpbmUgIENBTl9GMTJSMl9GQjMgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAzICovCisjZGVmaW5lICBDQU5fRjEyUjJfRkI0ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAgICAgICAvKiE8IEZpbHRlciBiaXQgNCAqLworI2RlZmluZSAgQ0FOX0YxMlIyX0ZCNSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDUgKi8KKyNkZWZpbmUgIENBTl9GMTJSMl9GQjYgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCA2ICovCisjZGVmaW5lICBDQU5fRjEyUjJfRkI3ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApICAgICAgICAvKiE8IEZpbHRlciBiaXQgNyAqLworI2RlZmluZSAgQ0FOX0YxMlIyX0ZCOCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDggKi8KKyNkZWZpbmUgIENBTl9GMTJSMl9GQjkgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCA5ICovCisjZGVmaW5lICBDQU5fRjEyUjJfRkIxMCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTAgKi8KKyNkZWZpbmUgIENBTl9GMTJSMl9GQjExICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxMSAqLworI2RlZmluZSAgQ0FOX0YxMlIyX0ZCMTIgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDEyICovCisjZGVmaW5lICBDQU5fRjEyUjJfRkIxMyAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTMgKi8KKyNkZWZpbmUgIENBTl9GMTJSMl9GQjE0ICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxNCAqLworI2RlZmluZSAgQ0FOX0YxMlIyX0ZCMTUgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDE1ICovCisjZGVmaW5lICBDQU5fRjEyUjJfRkIxNiAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMTAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTYgKi8KKyNkZWZpbmUgIENBTl9GMTJSMl9GQjE3ICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxNyAqLworI2RlZmluZSAgQ0FOX0YxMlIyX0ZCMTggICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDQwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDE4ICovCisjZGVmaW5lICBDQU5fRjEyUjJfRkIxOSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTkgKi8KKyNkZWZpbmUgIENBTl9GMTJSMl9GQjIwICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDEwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyMCAqLworI2RlZmluZSAgQ0FOX0YxMlIyX0ZCMjEgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMjAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDIxICovCisjZGVmaW5lICBDQU5fRjEyUjJfRkIyMiAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjIgKi8KKyNkZWZpbmUgIENBTl9GMTJSMl9GQjIzICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDgwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyMyAqLworI2RlZmluZSAgQ0FOX0YxMlIyX0ZCMjQgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAxMDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDI0ICovCisjZGVmaW5lICBDQU5fRjEyUjJfRkIyNSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDIwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjUgKi8KKyNkZWZpbmUgIENBTl9GMTJSMl9GQjI2ICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwNDAwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyNiAqLworI2RlZmluZSAgQ0FOX0YxMlIyX0ZCMjcgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA4MDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDI3ICovCisjZGVmaW5lICBDQU5fRjEyUjJfRkIyOCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjggKi8KKyNkZWZpbmUgIENBTl9GMTJSMl9GQjI5ICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgyMDAwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyOSAqLworI2RlZmluZSAgQ0FOX0YxMlIyX0ZCMzAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDQwMDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDMwICovCisjZGVmaW5lICBDQU5fRjEyUjJfRkIzMSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4ODAwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMzEgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBDQU5fRjEzUjIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIENBTl9GMTNSMl9GQjAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAwICovCisjZGVmaW5lICBDQU5fRjEzUjJfRkIxICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAgICAgICAvKiE8IEZpbHRlciBiaXQgMSAqLworI2RlZmluZSAgQ0FOX0YxM1IyX0ZCMiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDIgKi8KKyNkZWZpbmUgIENBTl9GMTNSMl9GQjMgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAzICovCisjZGVmaW5lICBDQU5fRjEzUjJfRkI0ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAgICAgICAvKiE8IEZpbHRlciBiaXQgNCAqLworI2RlZmluZSAgQ0FOX0YxM1IyX0ZCNSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDUgKi8KKyNkZWZpbmUgIENBTl9GMTNSMl9GQjYgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCA2ICovCisjZGVmaW5lICBDQU5fRjEzUjJfRkI3ICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApICAgICAgICAvKiE8IEZpbHRlciBiaXQgNyAqLworI2RlZmluZSAgQ0FOX0YxM1IyX0ZCOCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMTAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDggKi8KKyNkZWZpbmUgIENBTl9GMTNSMl9GQjkgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCA5ICovCisjZGVmaW5lICBDQU5fRjEzUjJfRkIxMCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTAgKi8KKyNkZWZpbmUgIENBTl9GMTNSMl9GQjExICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxMSAqLworI2RlZmluZSAgQ0FOX0YxM1IyX0ZCMTIgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAxMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDEyICovCisjZGVmaW5lICBDQU5fRjEzUjJfRkIxMyAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTMgKi8KKyNkZWZpbmUgIENBTl9GMTNSMl9GQjE0ICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxNCAqLworI2RlZmluZSAgQ0FOX0YxM1IyX0ZCMTUgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDE1ICovCisjZGVmaW5lICBDQU5fRjEzUjJfRkIxNiAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMTAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTYgKi8KKyNkZWZpbmUgIENBTl9GMTNSMl9GQjE3ICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAxNyAqLworI2RlZmluZSAgQ0FOX0YxM1IyX0ZCMTggICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDQwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDE4ICovCisjZGVmaW5lICBDQU5fRjEzUjJfRkIxOSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMTkgKi8KKyNkZWZpbmUgIENBTl9GMTNSMl9GQjIwICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDEwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyMCAqLworI2RlZmluZSAgQ0FOX0YxM1IyX0ZCMjEgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMjAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDIxICovCisjZGVmaW5lICBDQU5fRjEzUjJfRkIyMiAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjIgKi8KKyNkZWZpbmUgIENBTl9GMTNSMl9GQjIzICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDgwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyMyAqLworI2RlZmluZSAgQ0FOX0YxM1IyX0ZCMjQgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAxMDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDI0ICovCisjZGVmaW5lICBDQU5fRjEzUjJfRkIyNSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDIwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjUgKi8KKyNkZWZpbmUgIENBTl9GMTNSMl9GQjI2ICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwNDAwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyNiAqLworI2RlZmluZSAgQ0FOX0YxM1IyX0ZCMjcgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA4MDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDI3ICovCisjZGVmaW5lICBDQU5fRjEzUjJfRkIyOCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MTAwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMjggKi8KKyNkZWZpbmUgIENBTl9GMTNSMl9GQjI5ICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgyMDAwMDAwMCkgICAgICAgIC8qITwgRmlsdGVyIGJpdCAyOSAqLworI2RlZmluZSAgQ0FOX0YxM1IyX0ZCMzAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDQwMDAwMDAwKSAgICAgICAgLyohPCBGaWx0ZXIgYml0IDMwICovCisjZGVmaW5lICBDQU5fRjEzUjJfRkIzMSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4ODAwMDAwMDApICAgICAgICAvKiE8IEZpbHRlciBiaXQgMzEgKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgIFNlcmlhbCBQZXJpcGhlcmFsIEludGVyZmFjZSAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgU1BJX0NSMSByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBTUElfQ1IxX0NQSEEgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMSkgICAgICAgICAgICAvKiE8IENsb2NrIFBoYXNlICovCisjZGVmaW5lICBTUElfQ1IxX0NQT0wgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMikgICAgICAgICAgICAvKiE8IENsb2NrIFBvbGFyaXR5ICovCisjZGVmaW5lICBTUElfQ1IxX01TVFIgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwNCkgICAgICAgICAgICAvKiE8IE1hc3RlciBTZWxlY3Rpb24gKi8KKworI2RlZmluZSAgU1BJX0NSMV9CUiAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMzgpICAgICAgICAgICAgLyohPCBCUlsyOjBdIGJpdHMgKEJhdWQgUmF0ZSBDb250cm9sKSAqLworI2RlZmluZSAgU1BJX0NSMV9CUl8wICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDgpICAgICAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgU1BJX0NSMV9CUl8xICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMTApICAgICAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgU1BJX0NSMV9CUl8yICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMjApICAgICAgICAgICAgLyohPCBCaXQgMiAqLworCisjZGVmaW5lICBTUElfQ1IxX1NQRSAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA0MCkgICAgICAgICAgICAvKiE8IFNQSSBFbmFibGUgKi8KKyNkZWZpbmUgIFNQSV9DUjFfTFNCRklSU1QgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDgwKSAgICAgICAgICAgIC8qITwgRnJhbWUgRm9ybWF0ICovCisjZGVmaW5lICBTUElfQ1IxX1NTSSAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDEwMCkgICAgICAgICAgICAvKiE8IEludGVybmFsIHNsYXZlIHNlbGVjdCAqLworI2RlZmluZSAgU1BJX0NSMV9TU00gICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAyMDApICAgICAgICAgICAgLyohPCBTb2Z0d2FyZSBzbGF2ZSBtYW5hZ2VtZW50ICovCisjZGVmaW5lICBTUElfQ1IxX1JYT05MWSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDQwMCkgICAgICAgICAgICAvKiE8IFJlY2VpdmUgb25seSAqLworI2RlZmluZSAgU1BJX0NSMV9ERkYgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDA4MDApICAgICAgICAgICAgLyohPCBEYXRhIEZyYW1lIEZvcm1hdCAqLworI2RlZmluZSAgU1BJX0NSMV9DUkNORVhUICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDEwMDApICAgICAgICAgICAgLyohPCBUcmFuc21pdCBDUkMgbmV4dCAqLworI2RlZmluZSAgU1BJX0NSMV9DUkNFTiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDIwMDApICAgICAgICAgICAgLyohPCBIYXJkd2FyZSBDUkMgY2FsY3VsYXRpb24gZW5hYmxlICovCisjZGVmaW5lICBTUElfQ1IxX0JJRElPRSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4NDAwMCkgICAgICAgICAgICAvKiE8IE91dHB1dCBlbmFibGUgaW4gYmlkaXJlY3Rpb25hbCBtb2RlICovCisjZGVmaW5lICBTUElfQ1IxX0JJRElNT0RFICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4ODAwMCkgICAgICAgICAgICAvKiE8IEJpZGlyZWN0aW9uYWwgZGF0YSBtb2RlIGVuYWJsZSAqLworCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFNQSV9DUjIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgU1BJX0NSMl9SWERNQUVOICAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MDEpICAgICAgICAgICAgICAgLyohPCBSeCBCdWZmZXIgRE1BIEVuYWJsZSAqLworI2RlZmluZSAgU1BJX0NSMl9UWERNQUVOICAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MDIpICAgICAgICAgICAgICAgLyohPCBUeCBCdWZmZXIgRE1BIEVuYWJsZSAqLworI2RlZmluZSAgU1BJX0NSMl9TU09FICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MDQpICAgICAgICAgICAgICAgLyohPCBTUyBPdXRwdXQgRW5hYmxlICovCisjZGVmaW5lICBTUElfQ1IyX0VSUklFICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgyMCkgICAgICAgICAgICAgICAvKiE8IEVycm9yIEludGVycnVwdCBFbmFibGUgKi8KKyNkZWZpbmUgIFNQSV9DUjJfUlhORUlFICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDQwKSAgICAgICAgICAgICAgIC8qITwgUlggYnVmZmVyIE5vdCBFbXB0eSBJbnRlcnJ1cHQgRW5hYmxlICovCisjZGVmaW5lICBTUElfQ1IyX1RYRUlFICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHg4MCkgICAgICAgICAgICAgICAvKiE8IFR4IGJ1ZmZlciBFbXB0eSBJbnRlcnJ1cHQgRW5hYmxlICovCisKKy8qKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFNQSV9TUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBTUElfU1JfUlhORSAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwMSkgICAgICAgICAgICAgICAvKiE8IFJlY2VpdmUgYnVmZmVyIE5vdCBFbXB0eSAqLworI2RlZmluZSAgU1BJX1NSX1RYRSAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MDIpICAgICAgICAgICAgICAgLyohPCBUcmFuc21pdCBidWZmZXIgRW1wdHkgKi8KKyNkZWZpbmUgIFNQSV9TUl9DSFNJREUgICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDA0KSAgICAgICAgICAgICAgIC8qITwgQ2hhbm5lbCBzaWRlICovCisjZGVmaW5lICBTUElfU1JfVURSICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwOCkgICAgICAgICAgICAgICAvKiE8IFVuZGVycnVuIGZsYWcgKi8KKyNkZWZpbmUgIFNQSV9TUl9DUkNFUlIgICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDEwKSAgICAgICAgICAgICAgIC8qITwgQ1JDIEVycm9yIGZsYWcgKi8KKyNkZWZpbmUgIFNQSV9TUl9NT0RGICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDIwKSAgICAgICAgICAgICAgIC8qITwgTW9kZSBmYXVsdCAqLworI2RlZmluZSAgU1BJX1NSX09WUiAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4NDApICAgICAgICAgICAgICAgLyohPCBPdmVycnVuIGZsYWcgKi8KKyNkZWZpbmUgIFNQSV9TUl9CU1kgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDgwKSAgICAgICAgICAgICAgIC8qITwgQnVzeSBmbGFnICovCisKKy8qKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFNQSV9EUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBTUElfRFJfRFIgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4RkZGRikgICAgICAgICAgICAvKiE8IERhdGEgUmVnaXN0ZXIgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBTUElfQ1JDUFIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIFNQSV9DUkNQUl9DUkNQT0xZICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHhGRkZGKSAgICAgICAgICAgIC8qITwgQ1JDIHBvbHlub21pYWwgcmVnaXN0ZXIgKi8KKworLyoqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFNQSV9SWENSQ1IgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIFNQSV9SWENSQ1JfUlhDUkMgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHhGRkZGKSAgICAgICAgICAgIC8qITwgUnggQ1JDIFJlZ2lzdGVyICovCisKKy8qKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBTUElfVFhDUkNSIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBTUElfVFhDUkNSX1RYQ1JDICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4RkZGRikgICAgICAgICAgICAvKiE8IFR4IENSQyBSZWdpc3RlciAqLworCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgU1BJX0kyU0NGR1IgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqLworI2RlZmluZSAgU1BJX0kyU0NGR1JfQ0hMRU4gICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDEpICAgICAgICAgICAgLyohPCBDaGFubmVsIGxlbmd0aCAobnVtYmVyIG9mIGJpdHMgcGVyIGF1ZGlvIGNoYW5uZWwpICovCisKKyNkZWZpbmUgIFNQSV9JMlNDRkdSX0RBVExFTiAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA2KSAgICAgICAgICAgIC8qITwgREFUTEVOWzE6MF0gYml0cyAoRGF0YSBsZW5ndGggdG8gYmUgdHJhbnNmZXJyZWQpICovCisjZGVmaW5lICBTUElfSTJTQ0ZHUl9EQVRMRU5fMCAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMikgICAgICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBTUElfSTJTQ0ZHUl9EQVRMRU5fMSAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwNCkgICAgICAgICAgICAvKiE8IEJpdCAxICovCisKKyNkZWZpbmUgIFNQSV9JMlNDRkdSX0NLUE9MICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA4KSAgICAgICAgICAgIC8qITwgc3RlYWR5IHN0YXRlIGNsb2NrIHBvbGFyaXR5ICovCisKKyNkZWZpbmUgIFNQSV9JMlNDRkdSX0kyU1NURCAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDMwKSAgICAgICAgICAgIC8qITwgSTJTU1REWzE6MF0gYml0cyAoSTJTIHN0YW5kYXJkIHNlbGVjdGlvbikgKi8KKyNkZWZpbmUgIFNQSV9JMlNDRkdSX0kyU1NURF8wICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDEwKSAgICAgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIFNQSV9JMlNDRkdSX0kyU1NURF8xICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDIwKSAgICAgICAgICAgIC8qITwgQml0IDEgKi8KKworI2RlZmluZSAgU1BJX0kyU0NGR1JfUENNU1lOQyAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwODApICAgICAgICAgICAgLyohPCBQQ00gZnJhbWUgc3luY2hyb25pemF0aW9uICovCisKKyNkZWZpbmUgIFNQSV9JMlNDRkdSX0kyU0NGRyAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMzAwKSAgICAgICAgICAgIC8qITwgSTJTQ0ZHWzE6MF0gYml0cyAoSTJTIGNvbmZpZ3VyYXRpb24gbW9kZSkgKi8KKyNkZWZpbmUgIFNQSV9JMlNDRkdSX0kyU0NGR18wICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMTAwKSAgICAgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIFNQSV9JMlNDRkdSX0kyU0NGR18xICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMjAwKSAgICAgICAgICAgIC8qITwgQml0IDEgKi8KKworI2RlZmluZSAgU1BJX0kyU0NGR1JfSTJTRSAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDA0MDApICAgICAgICAgICAgLyohPCBJMlMgRW5hYmxlICovCisjZGVmaW5lICBTUElfSTJTQ0ZHUl9JMlNNT0QgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDgwMCkgICAgICAgICAgICAvKiE8IEkyUyBtb2RlIHNlbGVjdGlvbiAqLworCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgU1BJX0kyU1BSIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgU1BJX0kyU1BSX0kyU0RJViAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwRkYpICAgICAgICAgICAgLyohPCBJMlMgTGluZWFyIHByZXNjYWxlciAqLworI2RlZmluZSAgU1BJX0kyU1BSX09ERCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAxMDApICAgICAgICAgICAgLyohPCBPZGQgZmFjdG9yIGZvciB0aGUgcHJlc2NhbGVyICovCisjZGVmaW5lICBTUElfSTJTUFJfTUNLT0UgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDIwMCkgICAgICAgICAgICAvKiE8IE1hc3RlciBDbG9jayBPdXRwdXQgRW5hYmxlICovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgSW50ZXItaW50ZWdyYXRlZCBDaXJjdWl0IEludGVyZmFjZSAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIEkyQ19DUjEgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgSTJDX0NSMV9QRSAgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDEpICAgICAgICAgICAgLyohPCBQZXJpcGhlcmFsIEVuYWJsZSAqLworI2RlZmluZSAgSTJDX0NSMV9TTUJVUyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDIpICAgICAgICAgICAgLyohPCBTTUJ1cyBNb2RlICovCisjZGVmaW5lICBJMkNfQ1IxX1NNQlRZUEUgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwOCkgICAgICAgICAgICAvKiE8IFNNQnVzIFR5cGUgKi8KKyNkZWZpbmUgIEkyQ19DUjFfRU5BUlAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDEwKSAgICAgICAgICAgIC8qITwgQVJQIEVuYWJsZSAqLworI2RlZmluZSAgSTJDX0NSMV9FTlBFQyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMjApICAgICAgICAgICAgLyohPCBQRUMgRW5hYmxlICovCisjZGVmaW5lICBJMkNfQ1IxX0VOR0MgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA0MCkgICAgICAgICAgICAvKiE8IEdlbmVyYWwgQ2FsbCBFbmFibGUgKi8KKyNkZWZpbmUgIEkyQ19DUjFfTk9TVFJFVENIICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDgwKSAgICAgICAgICAgIC8qITwgQ2xvY2sgU3RyZXRjaGluZyBEaXNhYmxlIChTbGF2ZSBtb2RlKSAqLworI2RlZmluZSAgSTJDX0NSMV9TVEFSVCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAxMDApICAgICAgICAgICAgLyohPCBTdGFydCBHZW5lcmF0aW9uICovCisjZGVmaW5lICBJMkNfQ1IxX1NUT1AgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDIwMCkgICAgICAgICAgICAvKiE8IFN0b3AgR2VuZXJhdGlvbiAqLworI2RlZmluZSAgSTJDX0NSMV9BQ0sgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDA0MDApICAgICAgICAgICAgLyohPCBBY2tub3dsZWRnZSBFbmFibGUgKi8KKyNkZWZpbmUgIEkyQ19DUjFfUE9TICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwODAwKSAgICAgICAgICAgIC8qITwgQWNrbm93bGVkZ2UvUEVDIFBvc2l0aW9uIChmb3IgZGF0YSByZWNlcHRpb24pICovCisjZGVmaW5lICBJMkNfQ1IxX1BFQyAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MTAwMCkgICAgICAgICAgICAvKiE8IFBhY2tldCBFcnJvciBDaGVja2luZyAqLworI2RlZmluZSAgSTJDX0NSMV9BTEVSVCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDIwMDApICAgICAgICAgICAgLyohPCBTTUJ1cyBBbGVydCAqLworI2RlZmluZSAgSTJDX0NSMV9TV1JTVCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDgwMDApICAgICAgICAgICAgLyohPCBTb2Z0d2FyZSBSZXNldCAqLworCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIEkyQ19DUjIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgSTJDX0NSMl9GUkVRICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwM0YpICAgICAgICAgICAgLyohPCBGUkVRWzU6MF0gYml0cyAoUGVyaXBoZXJhbCBDbG9jayBGcmVxdWVuY3kpICovCisjZGVmaW5lICBJMkNfQ1IyX0ZSRVFfMCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMSkgICAgICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBJMkNfQ1IyX0ZSRVFfMSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMikgICAgICAgICAgICAvKiE8IEJpdCAxICovCisjZGVmaW5lICBJMkNfQ1IyX0ZSRVFfMiAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwNCkgICAgICAgICAgICAvKiE8IEJpdCAyICovCisjZGVmaW5lICBJMkNfQ1IyX0ZSRVFfMyAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwOCkgICAgICAgICAgICAvKiE8IEJpdCAzICovCisjZGVmaW5lICBJMkNfQ1IyX0ZSRVFfNCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAxMCkgICAgICAgICAgICAvKiE8IEJpdCA0ICovCisjZGVmaW5lICBJMkNfQ1IyX0ZSRVFfNSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAyMCkgICAgICAgICAgICAvKiE8IEJpdCA1ICovCisKKyNkZWZpbmUgIEkyQ19DUjJfSVRFUlJFTiAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMTAwKSAgICAgICAgICAgIC8qITwgRXJyb3IgSW50ZXJydXB0IEVuYWJsZSAqLworI2RlZmluZSAgSTJDX0NSMl9JVEVWVEVOICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAyMDApICAgICAgICAgICAgLyohPCBFdmVudCBJbnRlcnJ1cHQgRW5hYmxlICovCisjZGVmaW5lICBJMkNfQ1IyX0lUQlVGRU4gICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDQwMCkgICAgICAgICAgICAvKiE8IEJ1ZmZlciBJbnRlcnJ1cHQgRW5hYmxlICovCisjZGVmaW5lICBJMkNfQ1IyX0RNQUVOICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDgwMCkgICAgICAgICAgICAvKiE8IERNQSBSZXF1ZXN0cyBFbmFibGUgKi8KKyNkZWZpbmUgIEkyQ19DUjJfTEFTVCAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgxMDAwKSAgICAgICAgICAgIC8qITwgRE1BIExhc3QgVHJhbnNmZXIgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBJMkNfT0FSMSByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIEkyQ19PQVIxX0FERDFfNyAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMEZFKSAgICAgICAgICAgIC8qITwgSW50ZXJmYWNlIEFkZHJlc3MgKi8KKyNkZWZpbmUgIEkyQ19PQVIxX0FERDhfOSAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMzAwKSAgICAgICAgICAgIC8qITwgSW50ZXJmYWNlIEFkZHJlc3MgKi8KKworI2RlZmluZSAgSTJDX09BUjFfQUREMCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDEpICAgICAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgSTJDX09BUjFfQUREMSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDIpICAgICAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgSTJDX09BUjFfQUREMiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDQpICAgICAgICAgICAgLyohPCBCaXQgMiAqLworI2RlZmluZSAgSTJDX09BUjFfQUREMyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDgpICAgICAgICAgICAgLyohPCBCaXQgMyAqLworI2RlZmluZSAgSTJDX09BUjFfQURENCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMTApICAgICAgICAgICAgLyohPCBCaXQgNCAqLworI2RlZmluZSAgSTJDX09BUjFfQURENSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMjApICAgICAgICAgICAgLyohPCBCaXQgNSAqLworI2RlZmluZSAgSTJDX09BUjFfQURENiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwNDApICAgICAgICAgICAgLyohPCBCaXQgNiAqLworI2RlZmluZSAgSTJDX09BUjFfQURENyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwODApICAgICAgICAgICAgLyohPCBCaXQgNyAqLworI2RlZmluZSAgSTJDX09BUjFfQUREOCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAxMDApICAgICAgICAgICAgLyohPCBCaXQgOCAqLworI2RlZmluZSAgSTJDX09BUjFfQUREOSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAyMDApICAgICAgICAgICAgLyohPCBCaXQgOSAqLworCisjZGVmaW5lICBJMkNfT0FSMV9BRERNT0RFICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4ODAwMCkgICAgICAgICAgICAvKiE8IEFkZHJlc3NpbmcgTW9kZSAoU2xhdmUgbW9kZSkgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBJMkNfT0FSMiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIEkyQ19PQVIyX0VORFVBTCAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDAxKSAgICAgICAgICAgICAgIC8qITwgRHVhbCBhZGRyZXNzaW5nIG1vZGUgZW5hYmxlICovCisjZGVmaW5lICBJMkNfT0FSMl9BREQyICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHhGRSkgICAgICAgICAgICAgICAvKiE8IEludGVyZmFjZSBhZGRyZXNzICovCisKKy8qKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIEkyQ19EUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBJMkNfRFJfRFIgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHhGRikgICAgICAgICAgICAgICAvKiE8IDgtYml0IERhdGEgUmVnaXN0ZXIgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBJMkNfU1IxIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIEkyQ19TUjFfU0IgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAxKSAgICAgICAgICAgIC8qITwgU3RhcnQgQml0IChNYXN0ZXIgbW9kZSkgKi8KKyNkZWZpbmUgIEkyQ19TUjFfQUREUiAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAyKSAgICAgICAgICAgIC8qITwgQWRkcmVzcyBzZW50IChtYXN0ZXIgbW9kZSkvbWF0Y2hlZCAoc2xhdmUgbW9kZSkgKi8KKyNkZWZpbmUgIEkyQ19TUjFfQlRGICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA0KSAgICAgICAgICAgIC8qITwgQnl0ZSBUcmFuc2ZlciBGaW5pc2hlZCAqLworI2RlZmluZSAgSTJDX1NSMV9BREQxMCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDgpICAgICAgICAgICAgLyohPCAxMC1iaXQgaGVhZGVyIHNlbnQgKE1hc3RlciBtb2RlKSAqLworI2RlZmluZSAgSTJDX1NSMV9TVE9QRiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMTApICAgICAgICAgICAgLyohPCBTdG9wIGRldGVjdGlvbiAoU2xhdmUgbW9kZSkgKi8KKyNkZWZpbmUgIEkyQ19TUjFfUlhORSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDQwKSAgICAgICAgICAgIC8qITwgRGF0YSBSZWdpc3RlciBub3QgRW1wdHkgKHJlY2VpdmVycykgKi8KKyNkZWZpbmUgIEkyQ19TUjFfVFhFICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDgwKSAgICAgICAgICAgIC8qITwgRGF0YSBSZWdpc3RlciBFbXB0eSAodHJhbnNtaXR0ZXJzKSAqLworI2RlZmluZSAgSTJDX1NSMV9CRVJSICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAxMDApICAgICAgICAgICAgLyohPCBCdXMgRXJyb3IgKi8KKyNkZWZpbmUgIEkyQ19TUjFfQVJMTyAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMjAwKSAgICAgICAgICAgIC8qITwgQXJiaXRyYXRpb24gTG9zdCAobWFzdGVyIG1vZGUpICovCisjZGVmaW5lICBJMkNfU1IxX0FGICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDQwMCkgICAgICAgICAgICAvKiE8IEFja25vd2xlZGdlIEZhaWx1cmUgKi8KKyNkZWZpbmUgIEkyQ19TUjFfT1ZSICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwODAwKSAgICAgICAgICAgIC8qITwgT3ZlcnJ1bi9VbmRlcnJ1biAqLworI2RlZmluZSAgSTJDX1NSMV9QRUNFUlIgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDEwMDApICAgICAgICAgICAgLyohPCBQRUMgRXJyb3IgaW4gcmVjZXB0aW9uICovCisjZGVmaW5lICBJMkNfU1IxX1RJTUVPVVQgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4NDAwMCkgICAgICAgICAgICAvKiE8IFRpbWVvdXQgb3IgVGxvdyBFcnJvciAqLworI2RlZmluZSAgSTJDX1NSMV9TTUJBTEVSVCAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDgwMDApICAgICAgICAgICAgLyohPCBTTUJ1cyBBbGVydCAqLworCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIEkyQ19TUjIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgSTJDX1NSMl9NU0wgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDEpICAgICAgICAgICAgLyohPCBNYXN0ZXIvU2xhdmUgKi8KKyNkZWZpbmUgIEkyQ19TUjJfQlVTWSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAyKSAgICAgICAgICAgIC8qITwgQnVzIEJ1c3kgKi8KKyNkZWZpbmUgIEkyQ19TUjJfVFJBICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA0KSAgICAgICAgICAgIC8qITwgVHJhbnNtaXR0ZXIvUmVjZWl2ZXIgKi8KKyNkZWZpbmUgIEkyQ19TUjJfR0VOQ0FMTCAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDEwKSAgICAgICAgICAgIC8qITwgR2VuZXJhbCBDYWxsIEFkZHJlc3MgKFNsYXZlIG1vZGUpICovCisjZGVmaW5lICBJMkNfU1IyX1NNQkRFRkFVTFQgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAyMCkgICAgICAgICAgICAvKiE8IFNNQnVzIERldmljZSBEZWZhdWx0IEFkZHJlc3MgKFNsYXZlIG1vZGUpICovCisjZGVmaW5lICBJMkNfU1IyX1NNQkhPU1QgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA0MCkgICAgICAgICAgICAvKiE8IFNNQnVzIEhvc3QgSGVhZGVyIChTbGF2ZSBtb2RlKSAqLworI2RlZmluZSAgSTJDX1NSMl9EVUFMRiAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwODApICAgICAgICAgICAgLyohPCBEdWFsIEZsYWcgKFNsYXZlIG1vZGUpICovCisjZGVmaW5lICBJMkNfU1IyX1BFQyAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4RkYwMCkgICAgICAgICAgICAvKiE8IFBhY2tldCBFcnJvciBDaGVja2luZyBSZWdpc3RlciAqLworCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIEkyQ19DQ1IgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgSTJDX0NDUl9DQ1IgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDBGRkYpICAgICAgICAgICAgLyohPCBDbG9jayBDb250cm9sIFJlZ2lzdGVyIGluIEZhc3QvU3RhbmRhcmQgbW9kZSAoTWFzdGVyIG1vZGUpICovCisjZGVmaW5lICBJMkNfQ0NSX0RVVFkgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4NDAwMCkgICAgICAgICAgICAvKiE8IEZhc3QgTW9kZSBEdXR5IEN5Y2xlICovCisjZGVmaW5lICBJMkNfQ0NSX0ZTICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4ODAwMCkgICAgICAgICAgICAvKiE8IEkyQyBNYXN0ZXIgTW9kZSBTZWxlY3Rpb24gKi8KKworLyoqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIEkyQ19UUklTRSByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIEkyQ19UUklTRV9UUklTRSAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDNGKSAgICAgICAgICAgICAgIC8qITwgTWF4aW11bSBSaXNlIFRpbWUgaW4gRmFzdC9TdGFuZGFyZCBtb2RlIChNYXN0ZXIgbW9kZSkgKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgIFVuaXZlcnNhbCBTeW5jaHJvbm91cyBBc3luY2hyb25vdXMgUmVjZWl2ZXIgVHJhbnNtaXR0ZXIgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgVVNBUlRfU1IgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBVU0FSVF9TUl9QRSAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMSkgICAgICAgICAgICAvKiE8IFBhcml0eSBFcnJvciAqLworI2RlZmluZSAgVVNBUlRfU1JfRkUgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDIpICAgICAgICAgICAgLyohPCBGcmFtaW5nIEVycm9yICovCisjZGVmaW5lICBVU0FSVF9TUl9ORSAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwNCkgICAgICAgICAgICAvKiE8IE5vaXNlIEVycm9yIEZsYWcgKi8KKyNkZWZpbmUgIFVTQVJUX1NSX09SRSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA4KSAgICAgICAgICAgIC8qITwgT3ZlclJ1biBFcnJvciAqLworI2RlZmluZSAgVVNBUlRfU1JfSURMRSAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMTApICAgICAgICAgICAgLyohPCBJRExFIGxpbmUgZGV0ZWN0ZWQgKi8KKyNkZWZpbmUgIFVTQVJUX1NSX1JYTkUgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDIwKSAgICAgICAgICAgIC8qITwgUmVhZCBEYXRhIFJlZ2lzdGVyIE5vdCBFbXB0eSAqLworI2RlZmluZSAgVVNBUlRfU1JfVEMgICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwNDApICAgICAgICAgICAgLyohPCBUcmFuc21pc3Npb24gQ29tcGxldGUgKi8KKyNkZWZpbmUgIFVTQVJUX1NSX1RYRSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDgwKSAgICAgICAgICAgIC8qITwgVHJhbnNtaXQgRGF0YSBSZWdpc3RlciBFbXB0eSAqLworI2RlZmluZSAgVVNBUlRfU1JfTEJEICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAxMDApICAgICAgICAgICAgLyohPCBMSU4gQnJlYWsgRGV0ZWN0aW9uIEZsYWcgKi8KKyNkZWZpbmUgIFVTQVJUX1NSX0NUUyAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMjAwKSAgICAgICAgICAgIC8qITwgQ1RTIEZsYWcgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBVU0FSVF9EUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIFVTQVJUX0RSX0RSICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMUZGKSAgICAgICAgICAgIC8qITwgRGF0YSB2YWx1ZSAqLworCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgVVNBUlRfQlJSIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgVVNBUlRfQlJSX0RJVl9GcmFjdGlvbiAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMEYpICAgICAgICAgICAgLyohPCBGcmFjdGlvbiBvZiBVU0FSVERJViAqLworI2RlZmluZSAgVVNBUlRfQlJSX0RJVl9NYW50aXNzYSAgICAgICAgICAgICAgKCh1aW50MTZfdCkweEZGRjApICAgICAgICAgICAgLyohPCBNYW50aXNzYSBvZiBVU0FSVERJViAqLworCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgVVNBUlRfQ1IxIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgVVNBUlRfQ1IxX1NCSyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDEpICAgICAgICAgICAgLyohPCBTZW5kIEJyZWFrICovCisjZGVmaW5lICBVU0FSVF9DUjFfUldVICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMikgICAgICAgICAgICAvKiE8IFJlY2VpdmVyIHdha2V1cCAqLworI2RlZmluZSAgVVNBUlRfQ1IxX1JFICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDQpICAgICAgICAgICAgLyohPCBSZWNlaXZlciBFbmFibGUgKi8KKyNkZWZpbmUgIFVTQVJUX0NSMV9URSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA4KSAgICAgICAgICAgIC8qITwgVHJhbnNtaXR0ZXIgRW5hYmxlICovCisjZGVmaW5lICBVU0FSVF9DUjFfSURMRUlFICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAxMCkgICAgICAgICAgICAvKiE8IElETEUgSW50ZXJydXB0IEVuYWJsZSAqLworI2RlZmluZSAgVVNBUlRfQ1IxX1JYTkVJRSAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMjApICAgICAgICAgICAgLyohPCBSWE5FIEludGVycnVwdCBFbmFibGUgKi8KKyNkZWZpbmUgIFVTQVJUX0NSMV9UQ0lFICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDQwKSAgICAgICAgICAgIC8qITwgVHJhbnNtaXNzaW9uIENvbXBsZXRlIEludGVycnVwdCBFbmFibGUgKi8KKyNkZWZpbmUgIFVTQVJUX0NSMV9UWEVJRSAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDgwKSAgICAgICAgICAgIC8qITwgUEUgSW50ZXJydXB0IEVuYWJsZSAqLworI2RlZmluZSAgVVNBUlRfQ1IxX1BFSUUgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAxMDApICAgICAgICAgICAgLyohPCBQRSBJbnRlcnJ1cHQgRW5hYmxlICovCisjZGVmaW5lICBVU0FSVF9DUjFfUFMgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDIwMCkgICAgICAgICAgICAvKiE8IFBhcml0eSBTZWxlY3Rpb24gKi8KKyNkZWZpbmUgIFVTQVJUX0NSMV9QQ0UgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwNDAwKSAgICAgICAgICAgIC8qITwgUGFyaXR5IENvbnRyb2wgRW5hYmxlICovCisjZGVmaW5lICBVU0FSVF9DUjFfV0FLRSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDgwMCkgICAgICAgICAgICAvKiE8IFdha2V1cCBtZXRob2QgKi8KKyNkZWZpbmUgIFVTQVJUX0NSMV9NICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgxMDAwKSAgICAgICAgICAgIC8qITwgV29yZCBsZW5ndGggKi8KKyNkZWZpbmUgIFVTQVJUX0NSMV9VRSAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgyMDAwKSAgICAgICAgICAgIC8qITwgVVNBUlQgRW5hYmxlICovCisjZGVmaW5lICBVU0FSVF9DUjFfT1ZFUjggICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4ODAwMCkgICAgICAgICAgICAvKiE8IFVTQVJUIE92ZXJzbWFwbGluZyA4LWJpdHMgKi8KKworLyoqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFVTQVJUX0NSMiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIFVTQVJUX0NSMl9BREQgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDBGKSAgICAgICAgICAgIC8qITwgQWRkcmVzcyBvZiB0aGUgVVNBUlQgbm9kZSAqLworI2RlZmluZSAgVVNBUlRfQ1IyX0xCREwgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMjApICAgICAgICAgICAgLyohPCBMSU4gQnJlYWsgRGV0ZWN0aW9uIExlbmd0aCAqLworI2RlZmluZSAgVVNBUlRfQ1IyX0xCRElFICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwNDApICAgICAgICAgICAgLyohPCBMSU4gQnJlYWsgRGV0ZWN0aW9uIEludGVycnVwdCBFbmFibGUgKi8KKyNkZWZpbmUgIFVTQVJUX0NSMl9MQkNMICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMTAwKSAgICAgICAgICAgIC8qITwgTGFzdCBCaXQgQ2xvY2sgcHVsc2UgKi8KKyNkZWZpbmUgIFVTQVJUX0NSMl9DUEhBICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMjAwKSAgICAgICAgICAgIC8qITwgQ2xvY2sgUGhhc2UgKi8KKyNkZWZpbmUgIFVTQVJUX0NSMl9DUE9MICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwNDAwKSAgICAgICAgICAgIC8qITwgQ2xvY2sgUG9sYXJpdHkgKi8KKyNkZWZpbmUgIFVTQVJUX0NSMl9DTEtFTiAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwODAwKSAgICAgICAgICAgIC8qITwgQ2xvY2sgRW5hYmxlICovCisKKyNkZWZpbmUgIFVTQVJUX0NSMl9TVE9QICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgzMDAwKSAgICAgICAgICAgIC8qITwgU1RPUFsxOjBdIGJpdHMgKFNUT1AgYml0cykgKi8KKyNkZWZpbmUgIFVTQVJUX0NSMl9TVE9QXzAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgxMDAwKSAgICAgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIFVTQVJUX0NSMl9TVE9QXzEgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgyMDAwKSAgICAgICAgICAgIC8qITwgQml0IDEgKi8KKworI2RlZmluZSAgVVNBUlRfQ1IyX0xJTkVOICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDQwMDApICAgICAgICAgICAgLyohPCBMSU4gbW9kZSBlbmFibGUgKi8KKworLyoqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFVTQVJUX0NSMyByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIFVTQVJUX0NSM19FSUUgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDAxKSAgICAgICAgICAgIC8qITwgRXJyb3IgSW50ZXJydXB0IEVuYWJsZSAqLworI2RlZmluZSAgVVNBUlRfQ1IzX0lSRU4gICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDIpICAgICAgICAgICAgLyohPCBJckRBIG1vZGUgRW5hYmxlICovCisjZGVmaW5lICBVU0FSVF9DUjNfSVJMUCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwNCkgICAgICAgICAgICAvKiE8IElyREEgTG93LVBvd2VyICovCisjZGVmaW5lICBVU0FSVF9DUjNfSERTRUwgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwOCkgICAgICAgICAgICAvKiE8IEhhbGYtRHVwbGV4IFNlbGVjdGlvbiAqLworI2RlZmluZSAgVVNBUlRfQ1IzX05BQ0sgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMTApICAgICAgICAgICAgLyohPCBTbWFydGNhcmQgTkFDSyBlbmFibGUgKi8KKyNkZWZpbmUgIFVTQVJUX0NSM19TQ0VOICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDIwKSAgICAgICAgICAgIC8qITwgU21hcnRjYXJkIG1vZGUgZW5hYmxlICovCisjZGVmaW5lICBVU0FSVF9DUjNfRE1BUiAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDA0MCkgICAgICAgICAgICAvKiE8IERNQSBFbmFibGUgUmVjZWl2ZXIgKi8KKyNkZWZpbmUgIFVTQVJUX0NSM19ETUFUICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDgwKSAgICAgICAgICAgIC8qITwgRE1BIEVuYWJsZSBUcmFuc21pdHRlciAqLworI2RlZmluZSAgVVNBUlRfQ1IzX1JUU0UgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAxMDApICAgICAgICAgICAgLyohPCBSVFMgRW5hYmxlICovCisjZGVmaW5lICBVU0FSVF9DUjNfQ1RTRSAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDIwMCkgICAgICAgICAgICAvKiE8IENUUyBFbmFibGUgKi8KKyNkZWZpbmUgIFVTQVJUX0NSM19DVFNJRSAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwNDAwKSAgICAgICAgICAgIC8qITwgQ1RTIEludGVycnVwdCBFbmFibGUgKi8KKyNkZWZpbmUgIFVTQVJUX0NSM19PTkVCSVQgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwODAwKSAgICAgICAgICAgIC8qITwgT25lIEJpdCBtZXRob2QgKi8KKworLyoqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIFVTQVJUX0dUUFIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIFVTQVJUX0dUUFJfUFNDICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMEZGKSAgICAgICAgICAgIC8qITwgUFNDWzc6MF0gYml0cyAoUHJlc2NhbGVyIHZhbHVlKSAqLworI2RlZmluZSAgVVNBUlRfR1RQUl9QU0NfMCAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDEpICAgICAgICAgICAgLyohPCBCaXQgMCAqLworI2RlZmluZSAgVVNBUlRfR1RQUl9QU0NfMSAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDIpICAgICAgICAgICAgLyohPCBCaXQgMSAqLworI2RlZmluZSAgVVNBUlRfR1RQUl9QU0NfMiAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDQpICAgICAgICAgICAgLyohPCBCaXQgMiAqLworI2RlZmluZSAgVVNBUlRfR1RQUl9QU0NfMyAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDgpICAgICAgICAgICAgLyohPCBCaXQgMyAqLworI2RlZmluZSAgVVNBUlRfR1RQUl9QU0NfNCAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMTApICAgICAgICAgICAgLyohPCBCaXQgNCAqLworI2RlZmluZSAgVVNBUlRfR1RQUl9QU0NfNSAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMjApICAgICAgICAgICAgLyohPCBCaXQgNSAqLworI2RlZmluZSAgVVNBUlRfR1RQUl9QU0NfNiAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwNDApICAgICAgICAgICAgLyohPCBCaXQgNiAqLworI2RlZmluZSAgVVNBUlRfR1RQUl9QU0NfNyAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwODApICAgICAgICAgICAgLyohPCBCaXQgNyAqLworCisjZGVmaW5lICBVU0FSVF9HVFBSX0dUICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4RkYwMCkgICAgICAgICAgICAvKiE8IEd1YXJkIHRpbWUgdmFsdWUgKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlYnVnIE1DVSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgREJHTUNVX0lEQ09ERSByZWdpc3RlciAgKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBEQkdNQ1VfSURDT0RFX0RFVl9JRCAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDBGRkYpICAgICAgICAvKiE8IERldmljZSBJZGVudGlmaWVyICovCisKKyNkZWZpbmUgIERCR01DVV9JRENPREVfUkVWX0lEICAgICAgICAgICAgICAgICgodWludDMyX3QpMHhGRkZGMDAwMCkgICAgICAgIC8qITwgUkVWX0lEWzE1OjBdIGJpdHMgKFJldmlzaW9uIElkZW50aWZpZXIpICovCisjZGVmaW5lICBEQkdNQ1VfSURDT0RFX1JFVl9JRF8wICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMTAwMDApICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBEQkdNQ1VfSURDT0RFX1JFVl9JRF8xICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMjAwMDApICAgICAgICAvKiE8IEJpdCAxICovCisjZGVmaW5lICBEQkdNQ1VfSURDT0RFX1JFVl9JRF8yICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwNDAwMDApICAgICAgICAvKiE8IEJpdCAyICovCisjZGVmaW5lICBEQkdNQ1VfSURDT0RFX1JFVl9JRF8zICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAgICAgICAvKiE8IEJpdCAzICovCisjZGVmaW5lICBEQkdNQ1VfSURDT0RFX1JFVl9JRF80ICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAxMDAwMDApICAgICAgICAvKiE8IEJpdCA0ICovCisjZGVmaW5lICBEQkdNQ1VfSURDT0RFX1JFVl9JRF81ICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAyMDAwMDApICAgICAgICAvKiE8IEJpdCA1ICovCisjZGVmaW5lICBEQkdNQ1VfSURDT0RFX1JFVl9JRF82ICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApICAgICAgICAvKiE8IEJpdCA2ICovCisjZGVmaW5lICBEQkdNQ1VfSURDT0RFX1JFVl9JRF83ICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDA4MDAwMDApICAgICAgICAvKiE8IEJpdCA3ICovCisjZGVmaW5lICBEQkdNQ1VfSURDT0RFX1JFVl9JRF84ICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDEwMDAwMDApICAgICAgICAvKiE8IEJpdCA4ICovCisjZGVmaW5lICBEQkdNQ1VfSURDT0RFX1JFVl9JRF85ICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDIwMDAwMDApICAgICAgICAvKiE8IEJpdCA5ICovCisjZGVmaW5lICBEQkdNQ1VfSURDT0RFX1JFVl9JRF8xMCAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDQwMDAwMDApICAgICAgICAvKiE8IEJpdCAxMCAqLworI2RlZmluZSAgREJHTUNVX0lEQ09ERV9SRVZfSURfMTEgICAgICAgICAgICAgKCh1aW50MzJfdCkweDA4MDAwMDAwKSAgICAgICAgLyohPCBCaXQgMTEgKi8KKyNkZWZpbmUgIERCR01DVV9JRENPREVfUkVWX0lEXzEyICAgICAgICAgICAgICgodWludDMyX3QpMHgxMDAwMDAwMCkgICAgICAgIC8qITwgQml0IDEyICovCisjZGVmaW5lICBEQkdNQ1VfSURDT0RFX1JFVl9JRF8xMyAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MjAwMDAwMDApICAgICAgICAvKiE8IEJpdCAxMyAqLworI2RlZmluZSAgREJHTUNVX0lEQ09ERV9SRVZfSURfMTQgICAgICAgICAgICAgKCh1aW50MzJfdCkweDQwMDAwMDAwKSAgICAgICAgLyohPCBCaXQgMTQgKi8KKyNkZWZpbmUgIERCR01DVV9JRENPREVfUkVWX0lEXzE1ICAgICAgICAgICAgICgodWludDMyX3QpMHg4MDAwMDAwMCkgICAgICAgIC8qITwgQml0IDE1ICovCisKKy8qKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBEQkdNQ1VfQ1IgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBEQkdNQ1VfQ1JfREJHX1NMRUVQICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDEpICAgICAgICAvKiE8IERlYnVnIFNsZWVwIE1vZGUgKi8KKyNkZWZpbmUgIERCR01DVV9DUl9EQkdfU1RPUCAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMikgICAgICAgIC8qITwgRGVidWcgU3RvcCBNb2RlICovCisjZGVmaW5lICBEQkdNQ1VfQ1JfREJHX1NUQU5EQlkgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDQpICAgICAgICAvKiE8IERlYnVnIFN0YW5kYnkgbW9kZSAqLworI2RlZmluZSAgREJHTUNVX0NSX1RSQUNFX0lPRU4gICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKSAgICAgICAgLyohPCBUcmFjZSBQaW4gQXNzaWdubWVudCBDb250cm9sICovCisKKyNkZWZpbmUgIERCR01DVV9DUl9UUkFDRV9NT0RFICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDBDMCkgICAgICAgIC8qITwgVFJBQ0VfTU9ERVsxOjBdIGJpdHMgKFRyYWNlIFBpbiBBc3NpZ25tZW50IENvbnRyb2wpICovCisjZGVmaW5lICBEQkdNQ1VfQ1JfVFJBQ0VfTU9ERV8wICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwNDApICAgICAgICAvKiE8IEJpdCAwICovCisjZGVmaW5lICBEQkdNQ1VfQ1JfVFJBQ0VfTU9ERV8xICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApICAgICAgICAvKiE8IEJpdCAxICovCisKKyNkZWZpbmUgIERCR01DVV9DUl9EQkdfSVdER19TVE9QICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDEwMCkgICAgICAgIC8qITwgRGVidWcgSW5kZXBlbmRlbnQgV2F0Y2hkb2cgc3RvcHBlZCB3aGVuIENvcmUgaXMgaGFsdGVkICovCisjZGVmaW5lICBEQkdNQ1VfQ1JfREJHX1dXREdfU1RPUCAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAyMDApICAgICAgICAvKiE8IERlYnVnIFdpbmRvdyBXYXRjaGRvZyBzdG9wcGVkIHdoZW4gQ29yZSBpcyBoYWx0ZWQgKi8KKyNkZWZpbmUgIERCR01DVV9DUl9EQkdfVElNMV9TVE9QICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDQwMCkgICAgICAgIC8qITwgVElNMSBjb3VudGVyIHN0b3BwZWQgd2hlbiBjb3JlIGlzIGhhbHRlZCAqLworI2RlZmluZSAgREJHTUNVX0NSX0RCR19USU0yX1NUT1AgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwODAwKSAgICAgICAgLyohPCBUSU0yIGNvdW50ZXIgc3RvcHBlZCB3aGVuIGNvcmUgaXMgaGFsdGVkICovCisjZGVmaW5lICBEQkdNQ1VfQ1JfREJHX1RJTTNfU1RPUCAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDEwMDApICAgICAgICAvKiE8IFRJTTMgY291bnRlciBzdG9wcGVkIHdoZW4gY29yZSBpcyBoYWx0ZWQgKi8KKyNkZWZpbmUgIERCR01DVV9DUl9EQkdfVElNNF9TVE9QICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMjAwMCkgICAgICAgIC8qITwgVElNNCBjb3VudGVyIHN0b3BwZWQgd2hlbiBjb3JlIGlzIGhhbHRlZCAqLworI2RlZmluZSAgREJHTUNVX0NSX0RCR19DQU4xX1NUT1AgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDA0MDAwKSAgICAgICAgLyohPCBEZWJ1ZyBDQU4xIHN0b3BwZWQgd2hlbiBDb3JlIGlzIGhhbHRlZCAqLworI2RlZmluZSAgREJHTUNVX0NSX0RCR19JMkMxX1NNQlVTX1RJTUVPVVQgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKSAgICAgICAgLyohPCBTTUJVUyB0aW1lb3V0IG1vZGUgc3RvcHBlZCB3aGVuIENvcmUgaXMgaGFsdGVkICovCisjZGVmaW5lICBEQkdNQ1VfQ1JfREJHX0kyQzJfU01CVVNfVElNRU9VVCAgICAoKHVpbnQzMl90KTB4MDAwMTAwMDApICAgICAgICAvKiE8IFNNQlVTIHRpbWVvdXQgbW9kZSBzdG9wcGVkIHdoZW4gQ29yZSBpcyBoYWx0ZWQgKi8KKyNkZWZpbmUgIERCR01DVV9DUl9EQkdfVElNOF9TVE9QICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkgICAgICAgIC8qITwgVElNOCBjb3VudGVyIHN0b3BwZWQgd2hlbiBjb3JlIGlzIGhhbHRlZCAqLworI2RlZmluZSAgREJHTUNVX0NSX0RCR19USU01X1NUT1AgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDQwMDAwKSAgICAgICAgLyohPCBUSU01IGNvdW50ZXIgc3RvcHBlZCB3aGVuIGNvcmUgaXMgaGFsdGVkICovCisjZGVmaW5lICBEQkdNQ1VfQ1JfREJHX1RJTTZfU1RPUCAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAgICAgICAvKiE8IFRJTTYgY291bnRlciBzdG9wcGVkIHdoZW4gY29yZSBpcyBoYWx0ZWQgKi8KKyNkZWZpbmUgIERCR01DVV9DUl9EQkdfVElNN19TVE9QICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDEwMDAwMCkgICAgICAgIC8qITwgVElNNyBjb3VudGVyIHN0b3BwZWQgd2hlbiBjb3JlIGlzIGhhbHRlZCAqLworI2RlZmluZSAgREJHTUNVX0NSX0RCR19DQU4yX1NUT1AgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMjAwMDAwKSAgICAgICAgLyohPCBEZWJ1ZyBDQU4yIHN0b3BwZWQgd2hlbiBDb3JlIGlzIGhhbHRlZCAqLworI2RlZmluZSAgREJHTUNVX0NSX0RCR19USU0xNV9TVE9QICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwNDAwMDAwKSAgICAgICAgLyohPCBEZWJ1ZyBUSU0xNSBzdG9wcGVkIHdoZW4gQ29yZSBpcyBoYWx0ZWQgKi8KKyNkZWZpbmUgIERCR01DVV9DUl9EQkdfVElNMTZfU1RPUCAgICAgICAgICAgICgodWludDMyX3QpMHgwMDgwMDAwMCkgICAgICAgIC8qITwgRGVidWcgVElNMTYgc3RvcHBlZCB3aGVuIENvcmUgaXMgaGFsdGVkICovCisjZGVmaW5lICBEQkdNQ1VfQ1JfREJHX1RJTTE3X1NUT1AgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDEwMDAwMDApICAgICAgICAvKiE8IERlYnVnIFRJTTE3IHN0b3BwZWQgd2hlbiBDb3JlIGlzIGhhbHRlZCAqLworI2RlZmluZSAgREJHTUNVX0NSX0RCR19USU0xMl9TVE9QICAgICAgICAgICAgKCh1aW50MzJfdCkweDAyMDAwMDAwKSAgICAgICAgLyohPCBEZWJ1ZyBUSU0xMiBzdG9wcGVkIHdoZW4gQ29yZSBpcyBoYWx0ZWQgKi8KKyNkZWZpbmUgIERCR01DVV9DUl9EQkdfVElNMTNfU1RPUCAgICAgICAgICAgICgodWludDMyX3QpMHgwNDAwMDAwMCkgICAgICAgIC8qITwgRGVidWcgVElNMTMgc3RvcHBlZCB3aGVuIENvcmUgaXMgaGFsdGVkICovCisjZGVmaW5lICBEQkdNQ1VfQ1JfREJHX1RJTTE0X1NUT1AgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDgwMDAwMDApICAgICAgICAvKiE8IERlYnVnIFRJTTE0IHN0b3BwZWQgd2hlbiBDb3JlIGlzIGhhbHRlZCAqLworI2RlZmluZSAgREJHTUNVX0NSX0RCR19USU05X1NUT1AgICAgICAgICAgICAgKCh1aW50MzJfdCkweDEwMDAwMDAwKSAgICAgICAgLyohPCBEZWJ1ZyBUSU05IHN0b3BwZWQgd2hlbiBDb3JlIGlzIGhhbHRlZCAqLworI2RlZmluZSAgREJHTUNVX0NSX0RCR19USU0xMF9TVE9QICAgICAgICAgICAgKCh1aW50MzJfdCkweDIwMDAwMDAwKSAgICAgICAgLyohPCBEZWJ1ZyBUSU0xMCBzdG9wcGVkIHdoZW4gQ29yZSBpcyBoYWx0ZWQgKi8KKyNkZWZpbmUgIERCR01DVV9DUl9EQkdfVElNMTFfU1RPUCAgICAgICAgICAgICgodWludDMyX3QpMHg0MDAwMDAwMCkgICAgICAgIC8qITwgRGVidWcgVElNMTEgc3RvcHBlZCB3aGVuIENvcmUgaXMgaGFsdGVkICovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgRkxBU0ggYW5kIE9wdGlvbiBCeXRlcyBSZWdpc3RlcnMgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKioqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIEZMQVNIX0FDUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgRkxBU0hfQUNSX0xBVEVOQ1kgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MDMpICAgICAgICAgICAgICAgLyohPCBMQVRFTkNZWzI6MF0gYml0cyAoTGF0ZW5jeSkgKi8KKyNkZWZpbmUgIEZMQVNIX0FDUl9MQVRFTkNZXzAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDAwKSAgICAgICAgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIEZMQVNIX0FDUl9MQVRFTkNZXzEgICAgICAgICAgICAgICAgICgodWludDhfdCkweDAxKSAgICAgICAgICAgICAgIC8qITwgQml0IDAgKi8KKyNkZWZpbmUgIEZMQVNIX0FDUl9MQVRFTkNZXzIgICAgICAgICAgICAgICAgICgodWludDhfdCkweDAyKSAgICAgICAgICAgICAgIC8qITwgQml0IDEgKi8KKworI2RlZmluZSAgRkxBU0hfQUNSX0hMRkNZQSAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MDgpICAgICAgICAgICAgICAgLyohPCBGbGFzaCBIYWxmIEN5Y2xlIEFjY2VzcyBFbmFibGUgKi8KKyNkZWZpbmUgIEZMQVNIX0FDUl9QUkZUQkUgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDEwKSAgICAgICAgICAgICAgIC8qITwgUHJlZmV0Y2ggQnVmZmVyIEVuYWJsZSAqLworI2RlZmluZSAgRkxBU0hfQUNSX1BSRlRCUyAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MjApICAgICAgICAgICAgICAgLyohPCBQcmVmZXRjaCBCdWZmZXIgU3RhdHVzICovCisKKy8qKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBGTEFTSF9LRVlSIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBGTEFTSF9LRVlSX0ZLRVlSICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4RkZGRkZGRkYpICAgICAgICAvKiE8IEZQRUMgS2V5ICovCisKKy8qKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIEZMQVNIX09QVEtFWVIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKiovCisjZGVmaW5lICBGTEFTSF9PUFRLRVlSX09QVEtFWVIgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4RkZGRkZGRkYpICAgICAgICAvKiE8IE9wdGlvbiBCeXRlIEtleSAqLworCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgRkxBU0hfU1IgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBGTEFTSF9TUl9CU1kgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMHgwMSkgICAgICAgICAgICAgICAvKiE8IEJ1c3kgKi8KKyNkZWZpbmUgIEZMQVNIX1NSX1BHRVJSICAgICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDA0KSAgICAgICAgICAgICAgIC8qITwgUHJvZ3JhbW1pbmcgRXJyb3IgKi8KKyNkZWZpbmUgIEZMQVNIX1NSX1dSUFJURVJSICAgICAgICAgICAgICAgICAgICgodWludDhfdCkweDEwKSAgICAgICAgICAgICAgIC8qITwgV3JpdGUgUHJvdGVjdGlvbiBFcnJvciAqLworI2RlZmluZSAgRkxBU0hfU1JfRU9QICAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KTB4MjApICAgICAgICAgICAgICAgLyohPCBFbmQgb2Ygb3BlcmF0aW9uICovCisKKy8qKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgRkxBU0hfQ1IgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBGTEFTSF9DUl9QRyAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMSkgICAgICAgICAgICAvKiE8IFByb2dyYW1taW5nICovCisjZGVmaW5lICBGTEFTSF9DUl9QRVIgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAwMikgICAgICAgICAgICAvKiE8IFBhZ2UgRXJhc2UgKi8KKyNkZWZpbmUgIEZMQVNIX0NSX01FUiAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA0KSAgICAgICAgICAgIC8qITwgTWFzcyBFcmFzZSAqLworI2RlZmluZSAgRkxBU0hfQ1JfT1BUUEcgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMTApICAgICAgICAgICAgLyohPCBPcHRpb24gQnl0ZSBQcm9ncmFtbWluZyAqLworI2RlZmluZSAgRkxBU0hfQ1JfT1BURVIgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMjApICAgICAgICAgICAgLyohPCBPcHRpb24gQnl0ZSBFcmFzZSAqLworI2RlZmluZSAgRkxBU0hfQ1JfU1RSVCAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwNDApICAgICAgICAgICAgLyohPCBTdGFydCAqLworI2RlZmluZSAgRkxBU0hfQ1JfTE9DSyAgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwODApICAgICAgICAgICAgLyohPCBMb2NrICovCisjZGVmaW5lICBGTEFTSF9DUl9PUFRXUkUgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDIwMCkgICAgICAgICAgICAvKiE8IE9wdGlvbiBCeXRlcyBXcml0ZSBFbmFibGUgKi8KKyNkZWZpbmUgIEZMQVNIX0NSX0VSUklFICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwNDAwKSAgICAgICAgICAgIC8qITwgRXJyb3IgSW50ZXJydXB0IEVuYWJsZSAqLworI2RlZmluZSAgRkxBU0hfQ1JfRU9QSUUgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDEwMDApICAgICAgICAgICAgLyohPCBFbmQgb2Ygb3BlcmF0aW9uIGludGVycnVwdCBlbmFibGUgKi8KKworLyoqKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBGTEFTSF9BUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIEZMQVNIX0FSX0ZBUiAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHhGRkZGRkZGRikgICAgICAgIC8qITwgRmxhc2ggQWRkcmVzcyAqLworCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgRkxBU0hfT0JSIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgRkxBU0hfT0JSX09QVEVSUiAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDEpICAgICAgICAgICAgLyohPCBPcHRpb24gQnl0ZSBFcnJvciAqLworI2RlZmluZSAgRkxBU0hfT0JSX1JEUFJUICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDIpICAgICAgICAgICAgLyohPCBSZWFkIHByb3RlY3Rpb24gKi8KKworI2RlZmluZSAgRkxBU0hfT0JSX1VTRVIgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAzRkMpICAgICAgICAgICAgLyohPCBVc2VyIE9wdGlvbiBCeXRlcyAqLworI2RlZmluZSAgRkxBU0hfT0JSX1dER19TVyAgICAgICAgICAgICAgICAgICAgKCh1aW50MTZfdCkweDAwMDQpICAgICAgICAgICAgLyohPCBXREdfU1cgKi8KKyNkZWZpbmUgIEZMQVNIX09CUl9uUlNUX1NUT1AgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDA4KSAgICAgICAgICAgIC8qITwgblJTVF9TVE9QICovCisjZGVmaW5lICBGTEFTSF9PQlJfblJTVF9TVERCWSAgICAgICAgICAgICAgICAoKHVpbnQxNl90KTB4MDAxMCkgICAgICAgICAgICAvKiE8IG5SU1RfU1REQlkgKi8KKyNkZWZpbmUgIEZMQVNIX09CUl9CRkIyICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpMHgwMDIwKSAgICAgICAgICAgIC8qITwgQkZCMiAqLworCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgRkxBU0hfV1JQUiByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqLworI2RlZmluZSAgRkxBU0hfV1JQUl9XUlAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4RkZGRkZGRkYpICAgICAgICAvKiE8IFdyaXRlIFByb3RlY3QgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworLyoqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIEZMQVNIX1JEUCByZWdpc3RlciAgKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIEZMQVNIX1JEUF9SRFAgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDBGRikgICAgICAgIC8qITwgUmVhZCBwcm90ZWN0aW9uIG9wdGlvbiBieXRlICovCisjZGVmaW5lICBGTEFTSF9SRFBfblJEUCAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMEZGMDApICAgICAgICAvKiE8IFJlYWQgcHJvdGVjdGlvbiBjb21wbGVtZW50ZWQgb3B0aW9uIGJ5dGUgKi8KKworLyoqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIEZMQVNIX1VTRVIgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIEZMQVNIX1VTRVJfVVNFUiAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMEZGMDAwMCkgICAgICAgIC8qITwgVXNlciBvcHRpb24gYnl0ZSAqLworI2RlZmluZSAgRkxBU0hfVVNFUl9uVVNFUiAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGMDAwMDAwKSAgICAgICAgLyohPCBVc2VyIGNvbXBsZW1lbnRlZCBvcHRpb24gYnl0ZSAqLworCisvKioqKioqKioqKioqKioqKioqICBCaXQgZGVmaW5pdGlvbiBmb3IgRkxBU0hfRGF0YTAgcmVnaXN0ZXIgICoqKioqKioqKioqKioqKioqLworI2RlZmluZSAgRkxBU0hfRGF0YTBfRGF0YTAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMEZGKSAgICAgICAgLyohPCBVc2VyIGRhdGEgc3RvcmFnZSBvcHRpb24gYnl0ZSAqLworI2RlZmluZSAgRkxBU0hfRGF0YTBfbkRhdGEwICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDBGRjAwKSAgICAgICAgLyohPCBVc2VyIGRhdGEgc3RvcmFnZSBjb21wbGVtZW50ZWQgb3B0aW9uIGJ5dGUgKi8KKworLyoqKioqKioqKioqKioqKioqKiAgQml0IGRlZmluaXRpb24gZm9yIEZMQVNIX0RhdGExIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgIEZMQVNIX0RhdGExX0RhdGExICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMEZGMDAwMCkgICAgICAgIC8qITwgVXNlciBkYXRhIHN0b3JhZ2Ugb3B0aW9uIGJ5dGUgKi8KKyNkZWZpbmUgIEZMQVNIX0RhdGExX25EYXRhMSAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHhGRjAwMDAwMCkgICAgICAgIC8qITwgVXNlciBkYXRhIHN0b3JhZ2UgY29tcGxlbWVudGVkIG9wdGlvbiBieXRlICovCisKKy8qKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBGTEFTSF9XUlAwIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBGTEFTSF9XUlAwX1dSUDAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwRkYpICAgICAgICAvKiE8IEZsYXNoIG1lbW9yeSB3cml0ZSBwcm90ZWN0aW9uIG9wdGlvbiBieXRlcyAqLworI2RlZmluZSAgRkxBU0hfV1JQMF9uV1JQMCAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDBGRjAwKSAgICAgICAgLyohPCBGbGFzaCBtZW1vcnkgd3JpdGUgcHJvdGVjdGlvbiBjb21wbGVtZW50ZWQgb3B0aW9uIGJ5dGVzICovCisKKy8qKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBGTEFTSF9XUlAxIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBGTEFTSF9XUlAxX1dSUDEgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDBGRjAwMDApICAgICAgICAvKiE8IEZsYXNoIG1lbW9yeSB3cml0ZSBwcm90ZWN0aW9uIG9wdGlvbiBieXRlcyAqLworI2RlZmluZSAgRkxBU0hfV1JQMV9uV1JQMSAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGMDAwMDAwKSAgICAgICAgLyohPCBGbGFzaCBtZW1vcnkgd3JpdGUgcHJvdGVjdGlvbiBjb21wbGVtZW50ZWQgb3B0aW9uIGJ5dGVzICovCisKKy8qKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBGTEFTSF9XUlAyIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBGTEFTSF9XUlAyX1dSUDIgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwRkYpICAgICAgICAvKiE8IEZsYXNoIG1lbW9yeSB3cml0ZSBwcm90ZWN0aW9uIG9wdGlvbiBieXRlcyAqLworI2RlZmluZSAgRkxBU0hfV1JQMl9uV1JQMiAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDBGRjAwKSAgICAgICAgLyohPCBGbGFzaCBtZW1vcnkgd3JpdGUgcHJvdGVjdGlvbiBjb21wbGVtZW50ZWQgb3B0aW9uIGJ5dGVzICovCisKKy8qKioqKioqKioqKioqKioqKiogIEJpdCBkZWZpbml0aW9uIGZvciBGTEFTSF9XUlAzIHJlZ2lzdGVyICAqKioqKioqKioqKioqKioqKiovCisjZGVmaW5lICBGTEFTSF9XUlAzX1dSUDMgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDBGRjAwMDApICAgICAgICAvKiE8IEZsYXNoIG1lbW9yeSB3cml0ZSBwcm90ZWN0aW9uIG9wdGlvbiBieXRlcyAqLworI2RlZmluZSAgRkxBU0hfV1JQM19uV1JQMyAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweEZGMDAwMDAwKSAgICAgICAgLyohPCBGbGFzaCBtZW1vcnkgd3JpdGUgcHJvdGVjdGlvbiBjb21wbGVtZW50ZWQgb3B0aW9uIGJ5dGVzICovCisKKyNpZmRlZiBTVE0zMkYxMFhfQ0wKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICBFdGhlcm5ldCBNQUMgUmVnaXN0ZXJzIGJpdHMgZGVmaW5pdGlvbnMgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIEJpdCBkZWZpbml0aW9uIGZvciBFdGhlcm5ldCBNQUMgQ29udHJvbCBSZWdpc3RlciByZWdpc3RlciAqLworI2RlZmluZSBFVEhfTUFDQ1JfV0QgICAgICAoKHVpbnQzMl90KTB4MDA4MDAwMDApICAvKiBXYXRjaGRvZyBkaXNhYmxlICovCisjZGVmaW5lIEVUSF9NQUNDUl9KRCAgICAgICgodWludDMyX3QpMHgwMDQwMDAwMCkgIC8qIEphYmJlciBkaXNhYmxlICovCisjZGVmaW5lIEVUSF9NQUNDUl9JRkcgICAgICgodWludDMyX3QpMHgwMDBFMDAwMCkgIC8qIEludGVyLWZyYW1lIGdhcCAqLworICAjZGVmaW5lIEVUSF9NQUNDUl9JRkdfOTZCaXQgICAgICgodWludDMyX3QpMHgwMDAwMDAwMCkgIC8qIE1pbmltdW0gSUZHIGJldHdlZW4gZnJhbWVzIGR1cmluZyB0cmFuc21pc3Npb24gaXMgOTZCaXQgKi8KKyAgI2RlZmluZSBFVEhfTUFDQ1JfSUZHXzg4Qml0ICAgICAoKHVpbnQzMl90KTB4MDAwMjAwMDApICAvKiBNaW5pbXVtIElGRyBiZXR3ZWVuIGZyYW1lcyBkdXJpbmcgdHJhbnNtaXNzaW9uIGlzIDg4Qml0ICovCisgICNkZWZpbmUgRVRIX01BQ0NSX0lGR184MEJpdCAgICAgKCh1aW50MzJfdCkweDAwMDQwMDAwKSAgLyogTWluaW11bSBJRkcgYmV0d2VlbiBmcmFtZXMgZHVyaW5nIHRyYW5zbWlzc2lvbiBpcyA4MEJpdCAqLworICAjZGVmaW5lIEVUSF9NQUNDUl9JRkdfNzJCaXQgICAgICgodWludDMyX3QpMHgwMDA2MDAwMCkgIC8qIE1pbmltdW0gSUZHIGJldHdlZW4gZnJhbWVzIGR1cmluZyB0cmFuc21pc3Npb24gaXMgNzJCaXQgKi8KKyAgI2RlZmluZSBFVEhfTUFDQ1JfSUZHXzY0Qml0ICAgICAoKHVpbnQzMl90KTB4MDAwODAwMDApICAvKiBNaW5pbXVtIElGRyBiZXR3ZWVuIGZyYW1lcyBkdXJpbmcgdHJhbnNtaXNzaW9uIGlzIDY0Qml0ICovICAgICAgICAKKyAgI2RlZmluZSBFVEhfTUFDQ1JfSUZHXzU2Qml0ICAgICAoKHVpbnQzMl90KTB4MDAwQTAwMDApICAvKiBNaW5pbXVtIElGRyBiZXR3ZWVuIGZyYW1lcyBkdXJpbmcgdHJhbnNtaXNzaW9uIGlzIDU2Qml0ICovCisgICNkZWZpbmUgRVRIX01BQ0NSX0lGR180OEJpdCAgICAgKCh1aW50MzJfdCkweDAwMEMwMDAwKSAgLyogTWluaW11bSBJRkcgYmV0d2VlbiBmcmFtZXMgZHVyaW5nIHRyYW5zbWlzc2lvbiBpcyA0OEJpdCAqLworICAjZGVmaW5lIEVUSF9NQUNDUl9JRkdfNDBCaXQgICAgICgodWludDMyX3QpMHgwMDBFMDAwMCkgIC8qIE1pbmltdW0gSUZHIGJldHdlZW4gZnJhbWVzIGR1cmluZyB0cmFuc21pc3Npb24gaXMgNDBCaXQgKi8gICAgICAgICAgICAgIAorI2RlZmluZSBFVEhfTUFDQ1JfQ1NEICAgICAoKHVpbnQzMl90KTB4MDAwMTAwMDApICAvKiBDYXJyaWVyIHNlbnNlIGRpc2FibGUgKGR1cmluZyB0cmFuc21pc3Npb24pICovCisjZGVmaW5lIEVUSF9NQUNDUl9GRVMgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgIC8qIEZhc3QgZXRoZXJuZXQgc3BlZWQgKi8KKyNkZWZpbmUgRVRIX01BQ0NSX1JPRCAgICAgKCh1aW50MzJfdCkweDAwMDAyMDAwKSAgLyogUmVjZWl2ZSBvd24gZGlzYWJsZSAqLworI2RlZmluZSBFVEhfTUFDQ1JfTE0gICAgICAoKHVpbnQzMl90KTB4MDAwMDEwMDApICAvKiBsb29wYmFjayBtb2RlICovCisjZGVmaW5lIEVUSF9NQUNDUl9ETSAgICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgIC8qIER1cGxleCBtb2RlICovCisjZGVmaW5lIEVUSF9NQUNDUl9JUENPICAgICgodWludDMyX3QpMHgwMDAwMDQwMCkgIC8qIElQIENoZWNrc3VtIG9mZmxvYWQgKi8KKyNkZWZpbmUgRVRIX01BQ0NSX1JEICAgICAgKCh1aW50MzJfdCkweDAwMDAwMjAwKSAgLyogUmV0cnkgZGlzYWJsZSAqLworI2RlZmluZSBFVEhfTUFDQ1JfQVBDUyAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApICAvKiBBdXRvbWF0aWMgUGFkL0NSQyBzdHJpcHBpbmcgKi8KKyNkZWZpbmUgRVRIX01BQ0NSX0JMICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDYwKSAgLyogQmFjay1vZmYgbGltaXQ6IHJhbmRvbSBpbnRlZ2VyIG51bWJlciAocikgb2Ygc2xvdCB0aW1lIGRlbGF5cyBiZWZvcmUgcmVzY2hlZHVsaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSB0cmFuc21pc3Npb24gYXR0ZW1wdCBkdXJpbmcgcmV0cmllcyBhZnRlciBhIGNvbGxpc2lvbjogMCA9PCByIDwyXmsgKi8KKyAgI2RlZmluZSBFVEhfTUFDQ1JfQkxfMTAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAwKSAgLyogayA9IG1pbiAobiwgMTApICovCisgICNkZWZpbmUgRVRIX01BQ0NSX0JMXzggICAgICgodWludDMyX3QpMHgwMDAwMDAyMCkgIC8qIGsgPSBtaW4gKG4sIDgpICovCisgICNkZWZpbmUgRVRIX01BQ0NSX0JMXzQgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgIC8qIGsgPSBtaW4gKG4sIDQpICovCisgICNkZWZpbmUgRVRIX01BQ0NSX0JMXzEgICAgICgodWludDMyX3QpMHgwMDAwMDA2MCkgIC8qIGsgPSBtaW4gKG4sIDEpICovIAorI2RlZmluZSBFVEhfTUFDQ1JfREMgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAvKiBEZWZmZXJhbCBjaGVjayAqLworI2RlZmluZSBFVEhfTUFDQ1JfVEUgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDgpICAvKiBUcmFuc21pdHRlciBlbmFibGUgKi8KKyNkZWZpbmUgRVRIX01BQ0NSX1JFICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgLyogUmVjZWl2ZXIgZW5hYmxlICovCisKKy8qIEJpdCBkZWZpbml0aW9uIGZvciBFdGhlcm5ldCBNQUMgRnJhbWUgRmlsdGVyIFJlZ2lzdGVyICovCisjZGVmaW5lIEVUSF9NQUNGRlJfUkEgICAgICgodWludDMyX3QpMHg4MDAwMDAwMCkgIC8qIFJlY2VpdmUgYWxsICovIAorI2RlZmluZSBFVEhfTUFDRkZSX0hQRiAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApICAvKiBIYXNoIG9yIHBlcmZlY3QgZmlsdGVyICovIAorI2RlZmluZSBFVEhfTUFDRkZSX1NBRiAgICAoKHVpbnQzMl90KTB4MDAwMDAyMDApICAvKiBTb3VyY2UgYWRkcmVzcyBmaWx0ZXIgZW5hYmxlICovIAorI2RlZmluZSBFVEhfTUFDRkZSX1NBSUYgICAoKHVpbnQzMl90KTB4MDAwMDAxMDApICAvKiBTQSBpbnZlcnNlIGZpbHRlcmluZyAqLyAKKyNkZWZpbmUgRVRIX01BQ0ZGUl9QQ0YgICAgKCh1aW50MzJfdCkweDAwMDAwMEMwKSAgLyogUGFzcyBjb250cm9sIGZyYW1lczogMyBjYXNlcyAqLworICAjZGVmaW5lIEVUSF9NQUNGRlJfUENGX0Jsb2NrQWxsICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgIC8qIE1BQyBmaWx0ZXJzIGFsbCBjb250cm9sIGZyYW1lcyBmcm9tIHJlYWNoaW5nIHRoZSBhcHBsaWNhdGlvbiAqLworICAjZGVmaW5lIEVUSF9NQUNGRlJfUENGX0ZvcndhcmRBbGwgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA4MCkgIC8qIE1BQyBmb3J3YXJkcyBhbGwgY29udHJvbCBmcmFtZXMgdG8gYXBwbGljYXRpb24gZXZlbiBpZiB0aGV5IGZhaWwgdGhlIEFkZHJlc3MgRmlsdGVyICovCisgICNkZWZpbmUgRVRIX01BQ0ZGUl9QQ0ZfRm9yd2FyZFBhc3NlZEFkZHJGaWx0ZXIgKCh1aW50MzJfdCkweDAwMDAwMEMwKSAgLyogTUFDIGZvcndhcmRzIGNvbnRyb2wgZnJhbWVzIHRoYXQgcGFzcyB0aGUgQWRkcmVzcyBGaWx0ZXIuICovIAorI2RlZmluZSBFVEhfTUFDRkZSX0JGRCAgICAoKHVpbnQzMl90KTB4MDAwMDAwMjApICAvKiBCcm9hZGNhc3QgZnJhbWUgZGlzYWJsZSAqLyAKKyNkZWZpbmUgRVRIX01BQ0ZGUl9QQU0gCSAgKCh1aW50MzJfdCkweDAwMDAwMDEwKSAgLyogUGFzcyBhbGwgbXV0bGljYXN0ICovIAorI2RlZmluZSBFVEhfTUFDRkZSX0RBSUYgICAoKHVpbnQzMl90KTB4MDAwMDAwMDgpICAvKiBEQSBJbnZlcnNlIGZpbHRlcmluZyAqLyAKKyNkZWZpbmUgRVRIX01BQ0ZGUl9ITSAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgLyogSGFzaCBtdWx0aWNhc3QgKi8gCisjZGVmaW5lIEVUSF9NQUNGRlJfSFUgICAgICgodWludDMyX3QpMHgwMDAwMDAwMikgIC8qIEhhc2ggdW5pY2FzdCAqLworI2RlZmluZSBFVEhfTUFDRkZSX1BNICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDEpICAvKiBQcm9taXNjdW91cyBtb2RlICovCisKKy8qIEJpdCBkZWZpbml0aW9uIGZvciBFdGhlcm5ldCBNQUMgSGFzaCBUYWJsZSBIaWdoIFJlZ2lzdGVyICovCisjZGVmaW5lIEVUSF9NQUNIVEhSX0hUSCAgICgodWludDMyX3QpMHhGRkZGRkZGRikgIC8qIEhhc2ggdGFibGUgaGlnaCAqLworCisvKiBCaXQgZGVmaW5pdGlvbiBmb3IgRXRoZXJuZXQgTUFDIEhhc2ggVGFibGUgTG93IFJlZ2lzdGVyICovCisjZGVmaW5lIEVUSF9NQUNIVExSX0hUTCAgICgodWludDMyX3QpMHhGRkZGRkZGRikgIC8qIEhhc2ggdGFibGUgbG93ICovCisKKy8qIEJpdCBkZWZpbml0aW9uIGZvciBFdGhlcm5ldCBNQUMgTUlJIEFkZHJlc3MgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgRVRIX01BQ01JSUFSX1BBICAgKCh1aW50MzJfdCkweDAwMDBGODAwKSAgLyogUGh5c2ljYWwgbGF5ZXIgYWRkcmVzcyAqLyAKKyNkZWZpbmUgRVRIX01BQ01JSUFSX01SICAgKCh1aW50MzJfdCkweDAwMDAwN0MwKSAgLyogTUlJIHJlZ2lzdGVyIGluIHRoZSBzZWxlY3RlZCBQSFkgKi8gCisjZGVmaW5lIEVUSF9NQUNNSUlBUl9DUiAgICgodWludDMyX3QpMHgwMDAwMDAxQykgIC8qIENSIGNsb2NrIHJhbmdlOiA2IGNhc2VzICovIAorICAjZGVmaW5lIEVUSF9NQUNNSUlBUl9DUl9EaXY0MiAgICgodWludDMyX3QpMHgwMDAwMDAwMCkgIC8qIEhDTEs6NjAtNzIgTUh6OyBNREMgY2xvY2s9IEhDTEsvNDIgKi8KKyAgI2RlZmluZSBFVEhfTUFDTUlJQVJfQ1JfRGl2MTYgICAoKHVpbnQzMl90KTB4MDAwMDAwMDgpICAvKiBIQ0xLOjIwLTM1IE1IejsgTURDIGNsb2NrPSBIQ0xLLzE2ICovCisgICNkZWZpbmUgRVRIX01BQ01JSUFSX0NSX0RpdjI2ICAgKCh1aW50MzJfdCkweDAwMDAwMDBDKSAgLyogSENMSzozNS02MCBNSHo7IE1EQyBjbG9jaz0gSENMSy8yNiAqLworI2RlZmluZSBFVEhfTUFDTUlJQVJfTVcgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAvKiBNSUkgd3JpdGUgKi8gCisjZGVmaW5lIEVUSF9NQUNNSUlBUl9NQiAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgIC8qIE1JSSBidXN5ICovIAorICAKKy8qIEJpdCBkZWZpbml0aW9uIGZvciBFdGhlcm5ldCBNQUMgTUlJIERhdGEgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgRVRIX01BQ01JSURSX01EICAgKCh1aW50MzJfdCkweDAwMDBGRkZGKSAgLyogTUlJIGRhdGE6IHJlYWQvd3JpdGUgZGF0YSBmcm9tL3RvIFBIWSAqLworCisvKiBCaXQgZGVmaW5pdGlvbiBmb3IgRXRoZXJuZXQgTUFDIEZsb3cgQ29udHJvbCBSZWdpc3RlciAqLworI2RlZmluZSBFVEhfTUFDRkNSX1BUICAgICAoKHVpbnQzMl90KTB4RkZGRjAwMDApICAvKiBQYXVzZSB0aW1lICovCisjZGVmaW5lIEVUSF9NQUNGQ1JfWlFQRCAgICgodWludDMyX3QpMHgwMDAwMDA4MCkgIC8qIFplcm8tcXVhbnRhIHBhdXNlIGRpc2FibGUgKi8KKyNkZWZpbmUgRVRIX01BQ0ZDUl9QTFQgICAgKCh1aW50MzJfdCkweDAwMDAwMDMwKSAgLyogUGF1c2UgbG93IHRocmVzaG9sZDogNCBjYXNlcyAqLworICAjZGVmaW5lIEVUSF9NQUNGQ1JfUExUX01pbnVzNCAgICgodWludDMyX3QpMHgwMDAwMDAwMCkgIC8qIFBhdXNlIHRpbWUgbWludXMgNCBzbG90IHRpbWVzICovCisgICNkZWZpbmUgRVRIX01BQ0ZDUl9QTFRfTWludXMyOCAgKCh1aW50MzJfdCkweDAwMDAwMDEwKSAgLyogUGF1c2UgdGltZSBtaW51cyAyOCBzbG90IHRpbWVzICovCisgICNkZWZpbmUgRVRIX01BQ0ZDUl9QTFRfTWludXMxNDQgKCh1aW50MzJfdCkweDAwMDAwMDIwKSAgLyogUGF1c2UgdGltZSBtaW51cyAxNDQgc2xvdCB0aW1lcyAqLworICAjZGVmaW5lIEVUSF9NQUNGQ1JfUExUX01pbnVzMjU2ICgodWludDMyX3QpMHgwMDAwMDAzMCkgIC8qIFBhdXNlIHRpbWUgbWludXMgMjU2IHNsb3QgdGltZXMgKi8gICAgICAKKyNkZWZpbmUgRVRIX01BQ0ZDUl9VUEZEICAgKCh1aW50MzJfdCkweDAwMDAwMDA4KSAgLyogVW5pY2FzdCBwYXVzZSBmcmFtZSBkZXRlY3QgKi8KKyNkZWZpbmUgRVRIX01BQ0ZDUl9SRkNFICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgLyogUmVjZWl2ZSBmbG93IGNvbnRyb2wgZW5hYmxlICovCisjZGVmaW5lIEVUSF9NQUNGQ1JfVEZDRSAgICgodWludDMyX3QpMHgwMDAwMDAwMikgIC8qIFRyYW5zbWl0IGZsb3cgY29udHJvbCBlbmFibGUgKi8KKyNkZWZpbmUgRVRIX01BQ0ZDUl9GQ0JCUEEgKCh1aW50MzJfdCkweDAwMDAwMDAxKSAgLyogRmxvdyBjb250cm9sIGJ1c3kvYmFja3ByZXNzdXJlIGFjdGl2YXRlICovCisKKy8qIEJpdCBkZWZpbml0aW9uIGZvciBFdGhlcm5ldCBNQUMgVkxBTiBUYWcgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgRVRIX01BQ1ZMQU5UUl9WTEFOVEMgKCh1aW50MzJfdCkweDAwMDEwMDAwKSAgLyogMTItYml0IFZMQU4gdGFnIGNvbXBhcmlzb24gKi8KKyNkZWZpbmUgRVRIX01BQ1ZMQU5UUl9WTEFOVEkgKCh1aW50MzJfdCkweDAwMDBGRkZGKSAgLyogVkxBTiB0YWcgaWRlbnRpZmllciAoZm9yIHJlY2VpdmUgZnJhbWVzKSAqLworCisvKiBCaXQgZGVmaW5pdGlvbiBmb3IgRXRoZXJuZXQgTUFDIFJlbW90ZSBXYWtlLVVwRnJhbWUgRmlsdGVyIFJlZ2lzdGVyICovIAorI2RlZmluZSBFVEhfTUFDUldVRkZSX0QgICAoKHVpbnQzMl90KTB4RkZGRkZGRkYpICAvKiBXYWtlLXVwIGZyYW1lIGZpbHRlciByZWdpc3RlciBkYXRhICovCisvKiBFaWdodCBzZXF1ZW50aWFsIFdyaXRlcyB0byB0aGlzIGFkZHJlc3MgKG9mZnNldCAweDI4KSB3aWxsIHdyaXRlIGFsbCBXYWtlLVVwRnJhbWUgRmlsdGVyIFJlZ2lzdGVycy4KKyAgIEVpZ2h0IHNlcXVlbnRpYWwgUmVhZHMgZnJvbSB0aGlzIGFkZHJlc3MgKG9mZnNldCAweDI4KSB3aWxsIHJlYWQgYWxsIFdha2UtVXBGcmFtZSBGaWx0ZXIgUmVnaXN0ZXJzLiAqLworLyogV2FrZS1VcEZyYW1lIEZpbHRlciBSZWcwIDogRmlsdGVyIDAgQnl0ZSBNYXNrCisgICBXYWtlLVVwRnJhbWUgRmlsdGVyIFJlZzEgOiBGaWx0ZXIgMSBCeXRlIE1hc2sKKyAgIFdha2UtVXBGcmFtZSBGaWx0ZXIgUmVnMiA6IEZpbHRlciAyIEJ5dGUgTWFzaworICAgV2FrZS1VcEZyYW1lIEZpbHRlciBSZWczIDogRmlsdGVyIDMgQnl0ZSBNYXNrCisgICBXYWtlLVVwRnJhbWUgRmlsdGVyIFJlZzQgOiBSU1ZEIC0gRmlsdGVyMyBDb21tYW5kIC0gUlNWRCAtIEZpbHRlcjIgQ29tbWFuZCAtIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUlNWRCAtIEZpbHRlcjEgQ29tbWFuZCAtIFJTVkQgLSBGaWx0ZXIwIENvbW1hbmQKKyAgIFdha2UtVXBGcmFtZSBGaWx0ZXIgUmU1IDogRmlsdGVyMyBPZmZzZXQgLSBGaWx0ZXIyIE9mZnNldCAtIEZpbHRlcjEgT2Zmc2V0IC0gRmlsdGVyMCBPZmZzZXQKKyAgIFdha2UtVXBGcmFtZSBGaWx0ZXIgUmU2IDogRmlsdGVyMSBDUkMxNiAtIEZpbHRlcjAgQ1JDMTYKKyAgIFdha2UtVXBGcmFtZSBGaWx0ZXIgUmU3IDogRmlsdGVyMyBDUkMxNiAtIEZpbHRlcjIgQ1JDMTYgKi8KKworLyogQml0IGRlZmluaXRpb24gZm9yIEV0aGVybmV0IE1BQyBQTVQgQ29udHJvbCBhbmQgU3RhdHVzIFJlZ2lzdGVyICovIAorI2RlZmluZSBFVEhfTUFDUE1UQ1NSX1dGRlJQUiAoKHVpbnQzMl90KTB4ODAwMDAwMDApICAvKiBXYWtlLVVwIEZyYW1lIEZpbHRlciBSZWdpc3RlciBQb2ludGVyIFJlc2V0ICovCisjZGVmaW5lIEVUSF9NQUNQTVRDU1JfR1UgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkgIC8qIEdsb2JhbCBVbmljYXN0ICovCisjZGVmaW5lIEVUSF9NQUNQTVRDU1JfV0ZSICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgIC8qIFdha2UtVXAgRnJhbWUgUmVjZWl2ZWQgKi8KKyNkZWZpbmUgRVRIX01BQ1BNVENTUl9NUFIgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKSAgLyogTWFnaWMgUGFja2V0IFJlY2VpdmVkICovCisjZGVmaW5lIEVUSF9NQUNQTVRDU1JfV0ZFICAgICgodWludDMyX3QpMHgwMDAwMDAwNCkgIC8qIFdha2UtVXAgRnJhbWUgRW5hYmxlICovCisjZGVmaW5lIEVUSF9NQUNQTVRDU1JfTVBFICAgICgodWludDMyX3QpMHgwMDAwMDAwMikgIC8qIE1hZ2ljIFBhY2tldCBFbmFibGUgKi8KKyNkZWZpbmUgRVRIX01BQ1BNVENTUl9QRCAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxKSAgLyogUG93ZXIgRG93biAqLworCisvKiBCaXQgZGVmaW5pdGlvbiBmb3IgRXRoZXJuZXQgTUFDIFN0YXR1cyBSZWdpc3RlciAqLworI2RlZmluZSBFVEhfTUFDU1JfVFNUUyAgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkgIC8qIFRpbWUgc3RhbXAgdHJpZ2dlciBzdGF0dXMgKi8KKyNkZWZpbmUgRVRIX01BQ1NSX01NQ1RTICAgICAoKHVpbnQzMl90KTB4MDAwMDAwNDApICAvKiBNTUMgdHJhbnNtaXQgc3RhdHVzICovCisjZGVmaW5lIEVUSF9NQUNTUl9NTU1DUlMgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKSAgLyogTU1DIHJlY2VpdmUgc3RhdHVzICovCisjZGVmaW5lIEVUSF9NQUNTUl9NTUNTICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDEwKSAgLyogTU1DIHN0YXR1cyAqLworI2RlZmluZSBFVEhfTUFDU1JfUE1UUyAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgIC8qIFBNVCBzdGF0dXMgKi8KKworLyogQml0IGRlZmluaXRpb24gZm9yIEV0aGVybmV0IE1BQyBJbnRlcnJ1cHQgTWFzayBSZWdpc3RlciAqLworI2RlZmluZSBFVEhfTUFDSU1SX1RTVElNICAgICAoKHVpbnQzMl90KTB4MDAwMDAyMDApICAvKiBUaW1lIHN0YW1wIHRyaWdnZXIgaW50ZXJydXB0IG1hc2sgKi8KKyNkZWZpbmUgRVRIX01BQ0lNUl9QTVRJTSAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA4KSAgLyogUE1UIGludGVycnVwdCBtYXNrICovCisKKy8qIEJpdCBkZWZpbml0aW9uIGZvciBFdGhlcm5ldCBNQUMgQWRkcmVzczAgSGlnaCBSZWdpc3RlciAqLworI2RlZmluZSBFVEhfTUFDQTBIUl9NQUNBMEggICAoKHVpbnQzMl90KTB4MDAwMEZGRkYpICAvKiBNQUMgYWRkcmVzczAgaGlnaCAqLworCisvKiBCaXQgZGVmaW5pdGlvbiBmb3IgRXRoZXJuZXQgTUFDIEFkZHJlc3MwIExvdyBSZWdpc3RlciAqLworI2RlZmluZSBFVEhfTUFDQTBMUl9NQUNBMEwgICAoKHVpbnQzMl90KTB4RkZGRkZGRkYpICAvKiBNQUMgYWRkcmVzczAgbG93ICovCisKKy8qIEJpdCBkZWZpbml0aW9uIGZvciBFdGhlcm5ldCBNQUMgQWRkcmVzczEgSGlnaCBSZWdpc3RlciAqLworI2RlZmluZSBFVEhfTUFDQTFIUl9BRSAgICAgICAoKHVpbnQzMl90KTB4ODAwMDAwMDApICAvKiBBZGRyZXNzIGVuYWJsZSAqLworI2RlZmluZSBFVEhfTUFDQTFIUl9TQSAgICAgICAoKHVpbnQzMl90KTB4NDAwMDAwMDApICAvKiBTb3VyY2UgYWRkcmVzcyAqLworI2RlZmluZSBFVEhfTUFDQTFIUl9NQkMgICAgICAoKHVpbnQzMl90KTB4M0YwMDAwMDApICAvKiBNYXNrIGJ5dGUgY29udHJvbDogYml0cyB0byBtYXNrIGZvciBjb21wYXJpc29uIG9mIHRoZSBNQUMgQWRkcmVzcyBieXRlcyAqLworICAjZGVmaW5lIEVUSF9NQUNBMUhSX01CQ19IQml0czE1XzggICAgKCh1aW50MzJfdCkweDIwMDAwMDAwKSAgLyogTWFzayBNQUMgQWRkcmVzcyBoaWdoIHJlZyBiaXRzIFsxNTo4XSAqLworICAjZGVmaW5lIEVUSF9NQUNBMUhSX01CQ19IQml0czdfMCAgICAgKCh1aW50MzJfdCkweDEwMDAwMDAwKSAgLyogTWFzayBNQUMgQWRkcmVzcyBoaWdoIHJlZyBiaXRzIFs3OjBdICovCisgICNkZWZpbmUgRVRIX01BQ0ExSFJfTUJDX0xCaXRzMzFfMjQgICAoKHVpbnQzMl90KTB4MDgwMDAwMDApICAvKiBNYXNrIE1BQyBBZGRyZXNzIGxvdyByZWcgYml0cyBbMzE6MjRdICovCisgICNkZWZpbmUgRVRIX01BQ0ExSFJfTUJDX0xCaXRzMjNfMTYgICAoKHVpbnQzMl90KTB4MDQwMDAwMDApICAvKiBNYXNrIE1BQyBBZGRyZXNzIGxvdyByZWcgYml0cyBbMjM6MTZdICovCisgICNkZWZpbmUgRVRIX01BQ0ExSFJfTUJDX0xCaXRzMTVfOCAgICAoKHVpbnQzMl90KTB4MDIwMDAwMDApICAvKiBNYXNrIE1BQyBBZGRyZXNzIGxvdyByZWcgYml0cyBbMTU6OF0gKi8KKyAgI2RlZmluZSBFVEhfTUFDQTFIUl9NQkNfTEJpdHM3XzAgICAgICgodWludDMyX3QpMHgwMTAwMDAwMCkgIC8qIE1hc2sgTUFDIEFkZHJlc3MgbG93IHJlZyBiaXRzIFs3OjBdICovIAorI2RlZmluZSBFVEhfTUFDQTFIUl9NQUNBMUggICAoKHVpbnQzMl90KTB4MDAwMEZGRkYpICAvKiBNQUMgYWRkcmVzczEgaGlnaCAqLworCisvKiBCaXQgZGVmaW5pdGlvbiBmb3IgRXRoZXJuZXQgTUFDIEFkZHJlc3MxIExvdyBSZWdpc3RlciAqLworI2RlZmluZSBFVEhfTUFDQTFMUl9NQUNBMUwgICAoKHVpbnQzMl90KTB4RkZGRkZGRkYpICAvKiBNQUMgYWRkcmVzczEgbG93ICovCisKKy8qIEJpdCBkZWZpbml0aW9uIGZvciBFdGhlcm5ldCBNQUMgQWRkcmVzczIgSGlnaCBSZWdpc3RlciAqLworI2RlZmluZSBFVEhfTUFDQTJIUl9BRSAgICAgICAoKHVpbnQzMl90KTB4ODAwMDAwMDApICAvKiBBZGRyZXNzIGVuYWJsZSAqLworI2RlZmluZSBFVEhfTUFDQTJIUl9TQSAgICAgICAoKHVpbnQzMl90KTB4NDAwMDAwMDApICAvKiBTb3VyY2UgYWRkcmVzcyAqLworI2RlZmluZSBFVEhfTUFDQTJIUl9NQkMgICAgICAoKHVpbnQzMl90KTB4M0YwMDAwMDApICAvKiBNYXNrIGJ5dGUgY29udHJvbCAqLworICAjZGVmaW5lIEVUSF9NQUNBMkhSX01CQ19IQml0czE1XzggICAgKCh1aW50MzJfdCkweDIwMDAwMDAwKSAgLyogTWFzayBNQUMgQWRkcmVzcyBoaWdoIHJlZyBiaXRzIFsxNTo4XSAqLworICAjZGVmaW5lIEVUSF9NQUNBMkhSX01CQ19IQml0czdfMCAgICAgKCh1aW50MzJfdCkweDEwMDAwMDAwKSAgLyogTWFzayBNQUMgQWRkcmVzcyBoaWdoIHJlZyBiaXRzIFs3OjBdICovCisgICNkZWZpbmUgRVRIX01BQ0EySFJfTUJDX0xCaXRzMzFfMjQgICAoKHVpbnQzMl90KTB4MDgwMDAwMDApICAvKiBNYXNrIE1BQyBBZGRyZXNzIGxvdyByZWcgYml0cyBbMzE6MjRdICovCisgICNkZWZpbmUgRVRIX01BQ0EySFJfTUJDX0xCaXRzMjNfMTYgICAoKHVpbnQzMl90KTB4MDQwMDAwMDApICAvKiBNYXNrIE1BQyBBZGRyZXNzIGxvdyByZWcgYml0cyBbMjM6MTZdICovCisgICNkZWZpbmUgRVRIX01BQ0EySFJfTUJDX0xCaXRzMTVfOCAgICAoKHVpbnQzMl90KTB4MDIwMDAwMDApICAvKiBNYXNrIE1BQyBBZGRyZXNzIGxvdyByZWcgYml0cyBbMTU6OF0gKi8KKyAgI2RlZmluZSBFVEhfTUFDQTJIUl9NQkNfTEJpdHM3XzAgICAgICgodWludDMyX3QpMHgwMTAwMDAwMCkgIC8qIE1hc2sgTUFDIEFkZHJlc3MgbG93IHJlZyBiaXRzIFs3MF0gKi8KKyNkZWZpbmUgRVRIX01BQ0EySFJfTUFDQTJIICAgKCh1aW50MzJfdCkweDAwMDBGRkZGKSAgLyogTUFDIGFkZHJlc3MxIGhpZ2ggKi8KKworLyogQml0IGRlZmluaXRpb24gZm9yIEV0aGVybmV0IE1BQyBBZGRyZXNzMiBMb3cgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgRVRIX01BQ0EyTFJfTUFDQTJMICAgKCh1aW50MzJfdCkweEZGRkZGRkZGKSAgLyogTUFDIGFkZHJlc3MyIGxvdyAqLworCisvKiBCaXQgZGVmaW5pdGlvbiBmb3IgRXRoZXJuZXQgTUFDIEFkZHJlc3MzIEhpZ2ggUmVnaXN0ZXIgKi8KKyNkZWZpbmUgRVRIX01BQ0EzSFJfQUUgICAgICAgKCh1aW50MzJfdCkweDgwMDAwMDAwKSAgLyogQWRkcmVzcyBlbmFibGUgKi8KKyNkZWZpbmUgRVRIX01BQ0EzSFJfU0EgICAgICAgKCh1aW50MzJfdCkweDQwMDAwMDAwKSAgLyogU291cmNlIGFkZHJlc3MgKi8KKyNkZWZpbmUgRVRIX01BQ0EzSFJfTUJDICAgICAgKCh1aW50MzJfdCkweDNGMDAwMDAwKSAgLyogTWFzayBieXRlIGNvbnRyb2wgKi8KKyAgI2RlZmluZSBFVEhfTUFDQTNIUl9NQkNfSEJpdHMxNV84ICAgICgodWludDMyX3QpMHgyMDAwMDAwMCkgIC8qIE1hc2sgTUFDIEFkZHJlc3MgaGlnaCByZWcgYml0cyBbMTU6OF0gKi8KKyAgI2RlZmluZSBFVEhfTUFDQTNIUl9NQkNfSEJpdHM3XzAgICAgICgodWludDMyX3QpMHgxMDAwMDAwMCkgIC8qIE1hc2sgTUFDIEFkZHJlc3MgaGlnaCByZWcgYml0cyBbNzowXSAqLworICAjZGVmaW5lIEVUSF9NQUNBM0hSX01CQ19MQml0czMxXzI0ICAgKCh1aW50MzJfdCkweDA4MDAwMDAwKSAgLyogTWFzayBNQUMgQWRkcmVzcyBsb3cgcmVnIGJpdHMgWzMxOjI0XSAqLworICAjZGVmaW5lIEVUSF9NQUNBM0hSX01CQ19MQml0czIzXzE2ICAgKCh1aW50MzJfdCkweDA0MDAwMDAwKSAgLyogTWFzayBNQUMgQWRkcmVzcyBsb3cgcmVnIGJpdHMgWzIzOjE2XSAqLworICAjZGVmaW5lIEVUSF9NQUNBM0hSX01CQ19MQml0czE1XzggICAgKCh1aW50MzJfdCkweDAyMDAwMDAwKSAgLyogTWFzayBNQUMgQWRkcmVzcyBsb3cgcmVnIGJpdHMgWzE1OjhdICovCisgICNkZWZpbmUgRVRIX01BQ0EzSFJfTUJDX0xCaXRzN18wICAgICAoKHVpbnQzMl90KTB4MDEwMDAwMDApICAvKiBNYXNrIE1BQyBBZGRyZXNzIGxvdyByZWcgYml0cyBbNzBdICovCisjZGVmaW5lIEVUSF9NQUNBM0hSX01BQ0EzSCAgICgodWludDMyX3QpMHgwMDAwRkZGRikgIC8qIE1BQyBhZGRyZXNzMyBoaWdoICovCisKKy8qIEJpdCBkZWZpbml0aW9uIGZvciBFdGhlcm5ldCBNQUMgQWRkcmVzczMgTG93IFJlZ2lzdGVyICovCisjZGVmaW5lIEVUSF9NQUNBM0xSX01BQ0EzTCAgICgodWludDMyX3QpMHhGRkZGRkZGRikgIC8qIE1BQyBhZGRyZXNzMyBsb3cgKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgIEV0aGVybmV0IE1NQyBSZWdpc3RlcnMgYml0cyBkZWZpbml0aW9uICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiBCaXQgZGVmaW5pdGlvbiBmb3IgRXRoZXJuZXQgTU1DIENvbnRvbCBSZWdpc3RlciAqLworI2RlZmluZSBFVEhfTU1DQ1JfTUNGICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDgpICAvKiBNTUMgQ291bnRlciBGcmVlemUgKi8KKyNkZWZpbmUgRVRIX01NQ0NSX1JPUiAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgLyogUmVzZXQgb24gUmVhZCAqLworI2RlZmluZSBFVEhfTU1DQ1JfQ1NSICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAvKiBDb3VudGVyIFN0b3AgUm9sbG92ZXIgKi8KKyNkZWZpbmUgRVRIX01NQ0NSX0NSICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxKSAgLyogQ291bnRlcnMgUmVzZXQgKi8KKworLyogQml0IGRlZmluaXRpb24gZm9yIEV0aGVybmV0IE1NQyBSZWNlaXZlIEludGVycnVwdCBSZWdpc3RlciAqLworI2RlZmluZSBFVEhfTU1DUklSX1JHVUZTICAgICAoKHVpbnQzMl90KTB4MDAwMjAwMDApICAvKiBTZXQgd2hlbiBSeCBnb29kIHVuaWNhc3QgZnJhbWVzIGNvdW50ZXIgcmVhY2hlcyBoYWxmIHRoZSBtYXhpbXVtIHZhbHVlICovCisjZGVmaW5lIEVUSF9NTUNSSVJfUkZBRVMgICAgICgodWludDMyX3QpMHgwMDAwMDA0MCkgIC8qIFNldCB3aGVuIFJ4IGFsaWdubWVudCBlcnJvciBjb3VudGVyIHJlYWNoZXMgaGFsZiB0aGUgbWF4aW11bSB2YWx1ZSAqLworI2RlZmluZSBFVEhfTU1DUklSX1JGQ0VTICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMjApICAvKiBTZXQgd2hlbiBSeCBjcmMgZXJyb3IgY291bnRlciByZWFjaGVzIGhhbGYgdGhlIG1heGltdW0gdmFsdWUgKi8KKworLyogQml0IGRlZmluaXRpb24gZm9yIEV0aGVybmV0IE1NQyBUcmFuc21pdCBJbnRlcnJ1cHQgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgRVRIX01NQ1RJUl9UR0ZTICAgICAgKCh1aW50MzJfdCkweDAwMjAwMDAwKSAgLyogU2V0IHdoZW4gVHggZ29vZCBmcmFtZSBjb3VudCBjb3VudGVyIHJlYWNoZXMgaGFsZiB0aGUgbWF4aW11bSB2YWx1ZSAqLworI2RlZmluZSBFVEhfTU1DVElSX1RHRk1TQ1MgICAoKHVpbnQzMl90KTB4MDAwMDgwMDApICAvKiBTZXQgd2hlbiBUeCBnb29kIG11bHRpIGNvbCBjb3VudGVyIHJlYWNoZXMgaGFsZiB0aGUgbWF4aW11bSB2YWx1ZSAqLworI2RlZmluZSBFVEhfTU1DVElSX1RHRlNDUyAgICAoKHVpbnQzMl90KTB4MDAwMDQwMDApICAvKiBTZXQgd2hlbiBUeCBnb29kIHNpbmdsZSBjb2wgY291bnRlciByZWFjaGVzIGhhbGYgdGhlIG1heGltdW0gdmFsdWUgKi8KKworLyogQml0IGRlZmluaXRpb24gZm9yIEV0aGVybmV0IE1NQyBSZWNlaXZlIEludGVycnVwdCBNYXNrIFJlZ2lzdGVyICovCisjZGVmaW5lIEVUSF9NTUNSSU1SX1JHVUZNICAgICgodWludDMyX3QpMHgwMDAyMDAwMCkgIC8qIE1hc2sgdGhlIGludGVycnVwdCB3aGVuIFJ4IGdvb2QgdW5pY2FzdCBmcmFtZXMgY291bnRlciByZWFjaGVzIGhhbGYgdGhlIG1heGltdW0gdmFsdWUgKi8KKyNkZWZpbmUgRVRIX01NQ1JJTVJfUkZBRU0gICAgKCh1aW50MzJfdCkweDAwMDAwMDQwKSAgLyogTWFzayB0aGUgaW50ZXJydXB0IHdoZW4gd2hlbiBSeCBhbGlnbm1lbnQgZXJyb3IgY291bnRlciByZWFjaGVzIGhhbGYgdGhlIG1heGltdW0gdmFsdWUgKi8KKyNkZWZpbmUgRVRIX01NQ1JJTVJfUkZDRU0gICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKSAgLyogTWFzayB0aGUgaW50ZXJydXB0IHdoZW4gUnggY3JjIGVycm9yIGNvdW50ZXIgcmVhY2hlcyBoYWxmIHRoZSBtYXhpbXVtIHZhbHVlICovCisKKy8qIEJpdCBkZWZpbml0aW9uIGZvciBFdGhlcm5ldCBNTUMgVHJhbnNtaXQgSW50ZXJydXB0IE1hc2sgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgRVRIX01NQ1RJTVJfVEdGTSAgICAgKCh1aW50MzJfdCkweDAwMjAwMDAwKSAgLyogTWFzayB0aGUgaW50ZXJydXB0IHdoZW4gVHggZ29vZCBmcmFtZSBjb3VudCBjb3VudGVyIHJlYWNoZXMgaGFsZiB0aGUgbWF4aW11bSB2YWx1ZSAqLworI2RlZmluZSBFVEhfTU1DVElNUl9UR0ZNU0NNICAoKHVpbnQzMl90KTB4MDAwMDgwMDApICAvKiBNYXNrIHRoZSBpbnRlcnJ1cHQgd2hlbiBUeCBnb29kIG11bHRpIGNvbCBjb3VudGVyIHJlYWNoZXMgaGFsZiB0aGUgbWF4aW11bSB2YWx1ZSAqLworI2RlZmluZSBFVEhfTU1DVElNUl9UR0ZTQ00gICAoKHVpbnQzMl90KTB4MDAwMDQwMDApICAvKiBNYXNrIHRoZSBpbnRlcnJ1cHQgd2hlbiBUeCBnb29kIHNpbmdsZSBjb2wgY291bnRlciByZWFjaGVzIGhhbGYgdGhlIG1heGltdW0gdmFsdWUgKi8KKworLyogQml0IGRlZmluaXRpb24gZm9yIEV0aGVybmV0IE1NQyBUcmFuc21pdHRlZCBHb29kIEZyYW1lcyBhZnRlciBTaW5nbGUgQ29sbGlzaW9uIENvdW50ZXIgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgRVRIX01NQ1RHRlNDQ1JfVEdGU0NDICAgICAoKHVpbnQzMl90KTB4RkZGRkZGRkYpICAvKiBOdW1iZXIgb2Ygc3VjY2Vzc2Z1bGx5IHRyYW5zbWl0dGVkIGZyYW1lcyBhZnRlciBhIHNpbmdsZSBjb2xsaXNpb24gaW4gSGFsZi1kdXBsZXggbW9kZS4gKi8KKworLyogQml0IGRlZmluaXRpb24gZm9yIEV0aGVybmV0IE1NQyBUcmFuc21pdHRlZCBHb29kIEZyYW1lcyBhZnRlciBNb3JlIHRoYW4gYSBTaW5nbGUgQ29sbGlzaW9uIENvdW50ZXIgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgRVRIX01NQ1RHRk1TQ0NSX1RHRk1TQ0MgICAoKHVpbnQzMl90KTB4RkZGRkZGRkYpICAvKiBOdW1iZXIgb2Ygc3VjY2Vzc2Z1bGx5IHRyYW5zbWl0dGVkIGZyYW1lcyBhZnRlciBtb3JlIHRoYW4gYSBzaW5nbGUgY29sbGlzaW9uIGluIEhhbGYtZHVwbGV4IG1vZGUuICovCisKKy8qIEJpdCBkZWZpbml0aW9uIGZvciBFdGhlcm5ldCBNTUMgVHJhbnNtaXR0ZWQgR29vZCBGcmFtZXMgQ291bnRlciBSZWdpc3RlciAqLworI2RlZmluZSBFVEhfTU1DVEdGQ1JfVEdGQyAgICAoKHVpbnQzMl90KTB4RkZGRkZGRkYpICAvKiBOdW1iZXIgb2YgZ29vZCBmcmFtZXMgdHJhbnNtaXR0ZWQuICovCisKKy8qIEJpdCBkZWZpbml0aW9uIGZvciBFdGhlcm5ldCBNTUMgUmVjZWl2ZWQgRnJhbWVzIHdpdGggQ1JDIEVycm9yIENvdW50ZXIgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgRVRIX01NQ1JGQ0VDUl9SRkNFQyAgKCh1aW50MzJfdCkweEZGRkZGRkZGKSAgLyogTnVtYmVyIG9mIGZyYW1lcyByZWNlaXZlZCB3aXRoIENSQyBlcnJvci4gKi8KKworLyogQml0IGRlZmluaXRpb24gZm9yIEV0aGVybmV0IE1NQyBSZWNlaXZlZCBGcmFtZXMgd2l0aCBBbGlnbmVtZW50IEVycm9yIENvdW50ZXIgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgRVRIX01NQ1JGQUVDUl9SRkFFQyAgKCh1aW50MzJfdCkweEZGRkZGRkZGKSAgLyogTnVtYmVyIG9mIGZyYW1lcyByZWNlaXZlZCB3aXRoIGFsaWdubWVudCAoZHJpYmJsZSkgZXJyb3IgKi8KKworLyogQml0IGRlZmluaXRpb24gZm9yIEV0aGVybmV0IE1NQyBSZWNlaXZlZCBHb29kIFVuaWNhc3QgRnJhbWVzIENvdW50ZXIgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgRVRIX01NQ1JHVUZDUl9SR1VGQyAgKCh1aW50MzJfdCkweEZGRkZGRkZGKSAgLyogTnVtYmVyIG9mIGdvb2QgdW5pY2FzdCBmcmFtZXMgcmVjZWl2ZWQuICovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgIEV0aGVybmV0IFBUUCBSZWdpc3RlcnMgYml0cyBkZWZpbml0aW9uICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogQml0IGRlZmluaXRpb24gZm9yIEV0aGVybmV0IFBUUCBUaW1lIFN0YW1wIENvbnRvbCBSZWdpc3RlciAqLworI2RlZmluZSBFVEhfUFRQVFNDUl9UU0FSVSAgICAoKHVpbnQzMl90KTB4MDAwMDAwMjApICAvKiBBZGRlbmQgcmVnaXN0ZXIgdXBkYXRlICovCisjZGVmaW5lIEVUSF9QVFBUU0NSX1RTSVRFICAgICgodWludDMyX3QpMHgwMDAwMDAxMCkgIC8qIFRpbWUgc3RhbXAgaW50ZXJydXB0IHRyaWdnZXIgZW5hYmxlICovCisjZGVmaW5lIEVUSF9QVFBUU0NSX1RTU1RVICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgIC8qIFRpbWUgc3RhbXAgdXBkYXRlICovCisjZGVmaW5lIEVUSF9QVFBUU0NSX1RTU1RJICAgICgodWludDMyX3QpMHgwMDAwMDAwNCkgIC8qIFRpbWUgc3RhbXAgaW5pdGlhbGl6ZSAqLworI2RlZmluZSBFVEhfUFRQVFNDUl9UU0ZDVSAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAvKiBUaW1lIHN0YW1wIGZpbmUgb3IgY29hcnNlIHVwZGF0ZSAqLworI2RlZmluZSBFVEhfUFRQVFNDUl9UU0UgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDEpICAvKiBUaW1lIHN0YW1wIGVuYWJsZSAqLworCisvKiBCaXQgZGVmaW5pdGlvbiBmb3IgRXRoZXJuZXQgUFRQIFN1Yi1TZWNvbmQgSW5jcmVtZW50IFJlZ2lzdGVyICovCisjZGVmaW5lIEVUSF9QVFBTU0lSX1NUU1NJICAgICgodWludDMyX3QpMHgwMDAwMDBGRikgIC8qIFN5c3RlbSB0aW1lIFN1Yi1zZWNvbmQgaW5jcmVtZW50IHZhbHVlICovCisKKy8qIEJpdCBkZWZpbml0aW9uIGZvciBFdGhlcm5ldCBQVFAgVGltZSBTdGFtcCBIaWdoIFJlZ2lzdGVyICovCisjZGVmaW5lIEVUSF9QVFBUU0hSX1NUUyAgICAgICgodWludDMyX3QpMHhGRkZGRkZGRikgIC8qIFN5c3RlbSBUaW1lIHNlY29uZCAqLworCisvKiBCaXQgZGVmaW5pdGlvbiBmb3IgRXRoZXJuZXQgUFRQIFRpbWUgU3RhbXAgTG93IFJlZ2lzdGVyICovCisjZGVmaW5lIEVUSF9QVFBUU0xSX1NUUE5TICAgICgodWludDMyX3QpMHg4MDAwMDAwMCkgIC8qIFN5c3RlbSBUaW1lIFBvc2l0aXZlIG9yIG5lZ2F0aXZlIHRpbWUgKi8KKyNkZWZpbmUgRVRIX1BUUFRTTFJfU1RTUyAgICAgKCh1aW50MzJfdCkweDdGRkZGRkZGKSAgLyogU3lzdGVtIFRpbWUgc3ViLXNlY29uZHMgKi8KKworLyogQml0IGRlZmluaXRpb24gZm9yIEV0aGVybmV0IFBUUCBUaW1lIFN0YW1wIEhpZ2ggVXBkYXRlIFJlZ2lzdGVyICovCisjZGVmaW5lIEVUSF9QVFBUU0hVUl9UU1VTICAgICgodWludDMyX3QpMHhGRkZGRkZGRikgIC8qIFRpbWUgc3RhbXAgdXBkYXRlIHNlY29uZHMgKi8KKworLyogQml0IGRlZmluaXRpb24gZm9yIEV0aGVybmV0IFBUUCBUaW1lIFN0YW1wIExvdyBVcGRhdGUgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgRVRIX1BUUFRTTFVSX1RTVVBOUyAgKCh1aW50MzJfdCkweDgwMDAwMDAwKSAgLyogVGltZSBzdGFtcCB1cGRhdGUgUG9zaXRpdmUgb3IgbmVnYXRpdmUgdGltZSAqLworI2RlZmluZSBFVEhfUFRQVFNMVVJfVFNVU1MgICAoKHVpbnQzMl90KTB4N0ZGRkZGRkYpICAvKiBUaW1lIHN0YW1wIHVwZGF0ZSBzdWItc2Vjb25kcyAqLworCisvKiBCaXQgZGVmaW5pdGlvbiBmb3IgRXRoZXJuZXQgUFRQIFRpbWUgU3RhbXAgQWRkZW5kIFJlZ2lzdGVyICovCisjZGVmaW5lIEVUSF9QVFBUU0FSX1RTQSAgICAgICgodWludDMyX3QpMHhGRkZGRkZGRikgIC8qIFRpbWUgc3RhbXAgYWRkZW5kICovCisKKy8qIEJpdCBkZWZpbml0aW9uIGZvciBFdGhlcm5ldCBQVFAgVGFyZ2V0IFRpbWUgSGlnaCBSZWdpc3RlciAqLworI2RlZmluZSBFVEhfUFRQVFRIUl9UVFNIICAgICAoKHVpbnQzMl90KTB4RkZGRkZGRkYpICAvKiBUYXJnZXQgdGltZSBzdGFtcCBoaWdoICovCisKKy8qIEJpdCBkZWZpbml0aW9uIGZvciBFdGhlcm5ldCBQVFAgVGFyZ2V0IFRpbWUgTG93IFJlZ2lzdGVyICovCisjZGVmaW5lIEVUSF9QVFBUVExSX1RUU0wgICAgICgodWludDMyX3QpMHhGRkZGRkZGRikgIC8qIFRhcmdldCB0aW1lIHN0YW1wIGxvdyAqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgIEV0aGVybmV0IERNQSBSZWdpc3RlcnMgYml0cyBkZWZpbml0aW9uICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIEJpdCBkZWZpbml0aW9uIGZvciBFdGhlcm5ldCBETUEgQnVzIE1vZGUgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgRVRIX0RNQUJNUl9BQUIgICAgICAgKCh1aW50MzJfdCkweDAyMDAwMDAwKSAgLyogQWRkcmVzcy1BbGlnbmVkIGJlYXRzICovCisjZGVmaW5lIEVUSF9ETUFCTVJfRlBNICAgICAgICAoKHVpbnQzMl90KTB4MDEwMDAwMDApICAvKiA0eFBCTCBtb2RlICovCisjZGVmaW5lIEVUSF9ETUFCTVJfVVNQICAgICAgICgodWludDMyX3QpMHgwMDgwMDAwMCkgIC8qIFVzZSBzZXBhcmF0ZSBQQkwgKi8KKyNkZWZpbmUgRVRIX0RNQUJNUl9SRFAgICAgICAgKCh1aW50MzJfdCkweDAwN0UwMDAwKSAgLyogUnhETUEgUEJMICovCisgICNkZWZpbmUgRVRIX0RNQUJNUl9SRFBfMUJlYXQgICAgKCh1aW50MzJfdCkweDAwMDIwMDAwKSAgLyogbWF4aW11bSBudW1iZXIgb2YgYmVhdHMgdG8gYmUgdHJhbnNmZXJyZWQgaW4gb25lIFJ4RE1BIHRyYW5zYWN0aW9uIGlzIDEgKi8KKyAgI2RlZmluZSBFVEhfRE1BQk1SX1JEUF8yQmVhdCAgICAoKHVpbnQzMl90KTB4MDAwNDAwMDApICAvKiBtYXhpbXVtIG51bWJlciBvZiBiZWF0cyB0byBiZSB0cmFuc2ZlcnJlZCBpbiBvbmUgUnhETUEgdHJhbnNhY3Rpb24gaXMgMiAqLworICAjZGVmaW5lIEVUSF9ETUFCTVJfUkRQXzRCZWF0ICAgICgodWludDMyX3QpMHgwMDA4MDAwMCkgIC8qIG1heGltdW0gbnVtYmVyIG9mIGJlYXRzIHRvIGJlIHRyYW5zZmVycmVkIGluIG9uZSBSeERNQSB0cmFuc2FjdGlvbiBpcyA0ICovCisgICNkZWZpbmUgRVRIX0RNQUJNUl9SRFBfOEJlYXQgICAgKCh1aW50MzJfdCkweDAwMTAwMDAwKSAgLyogbWF4aW11bSBudW1iZXIgb2YgYmVhdHMgdG8gYmUgdHJhbnNmZXJyZWQgaW4gb25lIFJ4RE1BIHRyYW5zYWN0aW9uIGlzIDggKi8KKyAgI2RlZmluZSBFVEhfRE1BQk1SX1JEUF8xNkJlYXQgICAoKHVpbnQzMl90KTB4MDAyMDAwMDApICAvKiBtYXhpbXVtIG51bWJlciBvZiBiZWF0cyB0byBiZSB0cmFuc2ZlcnJlZCBpbiBvbmUgUnhETUEgdHJhbnNhY3Rpb24gaXMgMTYgKi8KKyAgI2RlZmluZSBFVEhfRE1BQk1SX1JEUF8zMkJlYXQgICAoKHVpbnQzMl90KTB4MDA0MDAwMDApICAvKiBtYXhpbXVtIG51bWJlciBvZiBiZWF0cyB0byBiZSB0cmFuc2ZlcnJlZCBpbiBvbmUgUnhETUEgdHJhbnNhY3Rpb24gaXMgMzIgKi8gICAgICAgICAgICAgICAgCisgICNkZWZpbmUgRVRIX0RNQUJNUl9SRFBfNHhQQkxfNEJlYXQgICAoKHVpbnQzMl90KTB4MDEwMjAwMDApICAvKiBtYXhpbXVtIG51bWJlciBvZiBiZWF0cyB0byBiZSB0cmFuc2ZlcnJlZCBpbiBvbmUgUnhETUEgdHJhbnNhY3Rpb24gaXMgNCAqLworICAjZGVmaW5lIEVUSF9ETUFCTVJfUkRQXzR4UEJMXzhCZWF0ICAgKCh1aW50MzJfdCkweDAxMDQwMDAwKSAgLyogbWF4aW11bSBudW1iZXIgb2YgYmVhdHMgdG8gYmUgdHJhbnNmZXJyZWQgaW4gb25lIFJ4RE1BIHRyYW5zYWN0aW9uIGlzIDggKi8KKyAgI2RlZmluZSBFVEhfRE1BQk1SX1JEUF80eFBCTF8xNkJlYXQgICgodWludDMyX3QpMHgwMTA4MDAwMCkgIC8qIG1heGltdW0gbnVtYmVyIG9mIGJlYXRzIHRvIGJlIHRyYW5zZmVycmVkIGluIG9uZSBSeERNQSB0cmFuc2FjdGlvbiBpcyAxNiAqLworICAjZGVmaW5lIEVUSF9ETUFCTVJfUkRQXzR4UEJMXzMyQmVhdCAgKCh1aW50MzJfdCkweDAxMTAwMDAwKSAgLyogbWF4aW11bSBudW1iZXIgb2YgYmVhdHMgdG8gYmUgdHJhbnNmZXJyZWQgaW4gb25lIFJ4RE1BIHRyYW5zYWN0aW9uIGlzIDMyICovCisgICNkZWZpbmUgRVRIX0RNQUJNUl9SRFBfNHhQQkxfNjRCZWF0ICAoKHVpbnQzMl90KTB4MDEyMDAwMDApICAvKiBtYXhpbXVtIG51bWJlciBvZiBiZWF0cyB0byBiZSB0cmFuc2ZlcnJlZCBpbiBvbmUgUnhETUEgdHJhbnNhY3Rpb24gaXMgNjQgKi8KKyAgI2RlZmluZSBFVEhfRE1BQk1SX1JEUF80eFBCTF8xMjhCZWF0ICgodWludDMyX3QpMHgwMTQwMDAwMCkgIC8qIG1heGltdW0gbnVtYmVyIG9mIGJlYXRzIHRvIGJlIHRyYW5zZmVycmVkIGluIG9uZSBSeERNQSB0cmFuc2FjdGlvbiBpcyAxMjggKi8gIAorI2RlZmluZSBFVEhfRE1BQk1SX0ZCICAgICAgICAoKHVpbnQzMl90KTB4MDAwMTAwMDApICAvKiBGaXhlZCBCdXJzdCAqLworI2RlZmluZSBFVEhfRE1BQk1SX1JUUFIgICAgICAoKHVpbnQzMl90KTB4MDAwMEMwMDApICAvKiBSeCBUeCBwcmlvcml0eSByYXRpbyAqLworICAjZGVmaW5lIEVUSF9ETUFCTVJfUlRQUl8xXzEgICAgICgodWludDMyX3QpMHgwMDAwMDAwMCkgIC8qIFJ4IFR4IHByaW9yaXR5IHJhdGlvICovCisgICNkZWZpbmUgRVRIX0RNQUJNUl9SVFBSXzJfMSAgICAgKCh1aW50MzJfdCkweDAwMDA0MDAwKSAgLyogUnggVHggcHJpb3JpdHkgcmF0aW8gKi8KKyAgI2RlZmluZSBFVEhfRE1BQk1SX1JUUFJfM18xICAgICAoKHVpbnQzMl90KTB4MDAwMDgwMDApICAvKiBSeCBUeCBwcmlvcml0eSByYXRpbyAqLworICAjZGVmaW5lIEVUSF9ETUFCTVJfUlRQUl80XzEgICAgICgodWludDMyX3QpMHgwMDAwQzAwMCkgIC8qIFJ4IFR4IHByaW9yaXR5IHJhdGlvICovICAKKyNkZWZpbmUgRVRIX0RNQUJNUl9QQkwgICAgKCh1aW50MzJfdCkweDAwMDAzRjAwKSAgLyogUHJvZ3JhbW1hYmxlIGJ1cnN0IGxlbmd0aCAqLworICAjZGVmaW5lIEVUSF9ETUFCTVJfUEJMXzFCZWF0ICAgICgodWludDMyX3QpMHgwMDAwMDEwMCkgIC8qIG1heGltdW0gbnVtYmVyIG9mIGJlYXRzIHRvIGJlIHRyYW5zZmVycmVkIGluIG9uZSBUeERNQSAob3IgYm90aCkgdHJhbnNhY3Rpb24gaXMgMSAqLworICAjZGVmaW5lIEVUSF9ETUFCTVJfUEJMXzJCZWF0ICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkgIC8qIG1heGltdW0gbnVtYmVyIG9mIGJlYXRzIHRvIGJlIHRyYW5zZmVycmVkIGluIG9uZSBUeERNQSAob3IgYm90aCkgdHJhbnNhY3Rpb24gaXMgMiAqLworICAjZGVmaW5lIEVUSF9ETUFCTVJfUEJMXzRCZWF0ICAgICgodWludDMyX3QpMHgwMDAwMDQwMCkgIC8qIG1heGltdW0gbnVtYmVyIG9mIGJlYXRzIHRvIGJlIHRyYW5zZmVycmVkIGluIG9uZSBUeERNQSAob3IgYm90aCkgdHJhbnNhY3Rpb24gaXMgNCAqLworICAjZGVmaW5lIEVUSF9ETUFCTVJfUEJMXzhCZWF0ICAgICgodWludDMyX3QpMHgwMDAwMDgwMCkgIC8qIG1heGltdW0gbnVtYmVyIG9mIGJlYXRzIHRvIGJlIHRyYW5zZmVycmVkIGluIG9uZSBUeERNQSAob3IgYm90aCkgdHJhbnNhY3Rpb24gaXMgOCAqLworICAjZGVmaW5lIEVUSF9ETUFCTVJfUEJMXzE2QmVhdCAgICgodWludDMyX3QpMHgwMDAwMTAwMCkgIC8qIG1heGltdW0gbnVtYmVyIG9mIGJlYXRzIHRvIGJlIHRyYW5zZmVycmVkIGluIG9uZSBUeERNQSAob3IgYm90aCkgdHJhbnNhY3Rpb24gaXMgMTYgKi8KKyAgI2RlZmluZSBFVEhfRE1BQk1SX1BCTF8zMkJlYXQgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAvKiBtYXhpbXVtIG51bWJlciBvZiBiZWF0cyB0byBiZSB0cmFuc2ZlcnJlZCBpbiBvbmUgVHhETUEgKG9yIGJvdGgpIHRyYW5zYWN0aW9uIGlzIDMyICovICAgICAgICAgICAgICAgIAorICAjZGVmaW5lIEVUSF9ETUFCTVJfUEJMXzR4UEJMXzRCZWF0ICAgKCh1aW50MzJfdCkweDAxMDAwMTAwKSAgLyogbWF4aW11bSBudW1iZXIgb2YgYmVhdHMgdG8gYmUgdHJhbnNmZXJyZWQgaW4gb25lIFR4RE1BIChvciBib3RoKSB0cmFuc2FjdGlvbiBpcyA0ICovCisgICNkZWZpbmUgRVRIX0RNQUJNUl9QQkxfNHhQQkxfOEJlYXQgICAoKHVpbnQzMl90KTB4MDEwMDAyMDApICAvKiBtYXhpbXVtIG51bWJlciBvZiBiZWF0cyB0byBiZSB0cmFuc2ZlcnJlZCBpbiBvbmUgVHhETUEgKG9yIGJvdGgpIHRyYW5zYWN0aW9uIGlzIDggKi8KKyAgI2RlZmluZSBFVEhfRE1BQk1SX1BCTF80eFBCTF8xNkJlYXQgICgodWludDMyX3QpMHgwMTAwMDQwMCkgIC8qIG1heGltdW0gbnVtYmVyIG9mIGJlYXRzIHRvIGJlIHRyYW5zZmVycmVkIGluIG9uZSBUeERNQSAob3IgYm90aCkgdHJhbnNhY3Rpb24gaXMgMTYgKi8KKyAgI2RlZmluZSBFVEhfRE1BQk1SX1BCTF80eFBCTF8zMkJlYXQgICgodWludDMyX3QpMHgwMTAwMDgwMCkgIC8qIG1heGltdW0gbnVtYmVyIG9mIGJlYXRzIHRvIGJlIHRyYW5zZmVycmVkIGluIG9uZSBUeERNQSAob3IgYm90aCkgdHJhbnNhY3Rpb24gaXMgMzIgKi8KKyAgI2RlZmluZSBFVEhfRE1BQk1SX1BCTF80eFBCTF82NEJlYXQgICgodWludDMyX3QpMHgwMTAwMTAwMCkgIC8qIG1heGltdW0gbnVtYmVyIG9mIGJlYXRzIHRvIGJlIHRyYW5zZmVycmVkIGluIG9uZSBUeERNQSAob3IgYm90aCkgdHJhbnNhY3Rpb24gaXMgNjQgKi8KKyAgI2RlZmluZSBFVEhfRE1BQk1SX1BCTF80eFBCTF8xMjhCZWF0ICgodWludDMyX3QpMHgwMTAwMjAwMCkgIC8qIG1heGltdW0gbnVtYmVyIG9mIGJlYXRzIHRvIGJlIHRyYW5zZmVycmVkIGluIG9uZSBUeERNQSAob3IgYm90aCkgdHJhbnNhY3Rpb24gaXMgMTI4ICovCisjZGVmaW5lIEVUSF9ETUFCTVJfRFNMICAgICAgICgodWludDMyX3QpMHgwMDAwMDA3QykgIC8qIERlc2NyaXB0b3IgU2tpcCBMZW5ndGggKi8KKyNkZWZpbmUgRVRIX0RNQUJNUl9EQSAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAyKSAgLyogRE1BIGFyYml0cmF0aW9uIHNjaGVtZSAqLworI2RlZmluZSBFVEhfRE1BQk1SX1NSICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDEpICAvKiBTb2Z0d2FyZSByZXNldCAqLworCisvKiBCaXQgZGVmaW5pdGlvbiBmb3IgRXRoZXJuZXQgRE1BIFRyYW5zbWl0IFBvbGwgRGVtYW5kIFJlZ2lzdGVyICovCisjZGVmaW5lIEVUSF9ETUFUUERSX1RQRCAgICAgICgodWludDMyX3QpMHhGRkZGRkZGRikgIC8qIFRyYW5zbWl0IHBvbGwgZGVtYW5kICovCisKKy8qIEJpdCBkZWZpbml0aW9uIGZvciBFdGhlcm5ldCBETUEgUmVjZWl2ZSBQb2xsIERlbWFuZCBSZWdpc3RlciAqLworI2RlZmluZSBFVEhfRE1BUlBEUl9SUEQgICAgICAoKHVpbnQzMl90KTB4RkZGRkZGRkYpICAvKiBSZWNlaXZlIHBvbGwgZGVtYW5kICAqLworCisvKiBCaXQgZGVmaW5pdGlvbiBmb3IgRXRoZXJuZXQgRE1BIFJlY2VpdmUgRGVzY3JpcHRvciBMaXN0IEFkZHJlc3MgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgRVRIX0RNQVJETEFSX1NSTCAgICAgKCh1aW50MzJfdCkweEZGRkZGRkZGKSAgLyogU3RhcnQgb2YgcmVjZWl2ZSBsaXN0ICovCisKKy8qIEJpdCBkZWZpbml0aW9uIGZvciBFdGhlcm5ldCBETUEgVHJhbnNtaXQgRGVzY3JpcHRvciBMaXN0IEFkZHJlc3MgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgRVRIX0RNQVRETEFSX1NUTCAgICAgKCh1aW50MzJfdCkweEZGRkZGRkZGKSAgLyogU3RhcnQgb2YgdHJhbnNtaXQgbGlzdCAqLworCisvKiBCaXQgZGVmaW5pdGlvbiBmb3IgRXRoZXJuZXQgRE1BIFN0YXR1cyBSZWdpc3RlciAqLworI2RlZmluZSBFVEhfRE1BU1JfVFNUUyAgICAgICAoKHVpbnQzMl90KTB4MjAwMDAwMDApICAvKiBUaW1lLXN0YW1wIHRyaWdnZXIgc3RhdHVzICovCisjZGVmaW5lIEVUSF9ETUFTUl9QTVRTICAgICAgICgodWludDMyX3QpMHgxMDAwMDAwMCkgIC8qIFBNVCBzdGF0dXMgKi8KKyNkZWZpbmUgRVRIX0RNQVNSX01NQ1MgICAgICAgKCh1aW50MzJfdCkweDA4MDAwMDAwKSAgLyogTU1DIHN0YXR1cyAqLworI2RlZmluZSBFVEhfRE1BU1JfRUJTICAgICAgICAoKHVpbnQzMl90KTB4MDM4MDAwMDApICAvKiBFcnJvciBiaXRzIHN0YXR1cyAqLworICAvKiBjb21iaW5hdGlvbiB3aXRoIEVCU1syOjBdIGZvciBHZXRGbGFnU3RhdHVzIGZ1bmN0aW9uICovCisgICNkZWZpbmUgRVRIX0RNQVNSX0VCU19EZXNjQWNjZXNzICAgICAgKCh1aW50MzJfdCkweDAyMDAwMDAwKSAgLyogRXJyb3IgYml0cyAwLWRhdGEgYnVmZmVyLCAxLWRlc2MuIGFjY2VzcyAqLworICAjZGVmaW5lIEVUSF9ETUFTUl9FQlNfUmVhZFRyYW5zZiAgICAgICgodWludDMyX3QpMHgwMTAwMDAwMCkgIC8qIEVycm9yIGJpdHMgMC13cml0ZSB0cm5zZiwgMS1yZWFkIHRyYW5zZnIgKi8KKyAgI2RlZmluZSBFVEhfRE1BU1JfRUJTX0RhdGFUcmFuc2ZUeCAgICAoKHVpbnQzMl90KTB4MDA4MDAwMDApICAvKiBFcnJvciBiaXRzIDAtUnggRE1BLCAxLVR4IERNQSAqLworI2RlZmluZSBFVEhfRE1BU1JfVFBTICAgICAgICAgKCh1aW50MzJfdCkweDAwNzAwMDAwKSAgLyogVHJhbnNtaXQgcHJvY2VzcyBzdGF0ZSAqLworICAjZGVmaW5lIEVUSF9ETUFTUl9UUFNfU3RvcHBlZCAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMCkgIC8qIFN0b3BwZWQgLSBSZXNldCBvciBTdG9wIFR4IENvbW1hbmQgaXNzdWVkICAqLworICAjZGVmaW5lIEVUSF9ETUFTUl9UUFNfRmV0Y2hpbmcgICAgICAgICgodWludDMyX3QpMHgwMDEwMDAwMCkgIC8qIFJ1bm5pbmcgLSBmZXRjaGluZyB0aGUgVHggZGVzY3JpcHRvciAqLworICAjZGVmaW5lIEVUSF9ETUFTUl9UUFNfV2FpdGluZyAgICAgICAgICgodWludDMyX3QpMHgwMDIwMDAwMCkgIC8qIFJ1bm5pbmcgLSB3YWl0aW5nIGZvciBzdGF0dXMgKi8KKyAgI2RlZmluZSBFVEhfRE1BU1JfVFBTX1JlYWRpbmcgICAgICAgICAoKHVpbnQzMl90KTB4MDAzMDAwMDApICAvKiBSdW5uaW5nIC0gcmVhZGluZyB0aGUgZGF0YSBmcm9tIGhvc3QgbWVtb3J5ICovCisgICNkZWZpbmUgRVRIX0RNQVNSX1RQU19TdXNwZW5kZWQgICAgICAgKCh1aW50MzJfdCkweDAwNjAwMDAwKSAgLyogU3VzcGVuZGVkIC0gVHggRGVzY3JpcHRvciB1bmF2YWlsYWJlICovCisgICNkZWZpbmUgRVRIX0RNQVNSX1RQU19DbG9zaW5nICAgICAgICAgKCh1aW50MzJfdCkweDAwNzAwMDAwKSAgLyogUnVubmluZyAtIGNsb3NpbmcgUnggZGVzY3JpcHRvciAqLworI2RlZmluZSBFVEhfRE1BU1JfUlBTICAgICAgICAgKCh1aW50MzJfdCkweDAwMEUwMDAwKSAgLyogUmVjZWl2ZSBwcm9jZXNzIHN0YXRlICovCisgICNkZWZpbmUgRVRIX0RNQVNSX1JQU19TdG9wcGVkICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAwKSAgLyogU3RvcHBlZCAtIFJlc2V0IG9yIFN0b3AgUnggQ29tbWFuZCBpc3N1ZWQgKi8KKyAgI2RlZmluZSBFVEhfRE1BU1JfUlBTX0ZldGNoaW5nICAgICAgICAoKHVpbnQzMl90KTB4MDAwMjAwMDApICAvKiBSdW5uaW5nIC0gZmV0Y2hpbmcgdGhlIFJ4IGRlc2NyaXB0b3IgKi8KKyAgI2RlZmluZSBFVEhfRE1BU1JfUlBTX1dhaXRpbmcgICAgICAgICAoKHVpbnQzMl90KTB4MDAwNjAwMDApICAvKiBSdW5uaW5nIC0gd2FpdGluZyBmb3IgcGFja2V0ICovCisgICNkZWZpbmUgRVRIX0RNQVNSX1JQU19TdXNwZW5kZWQgICAgICAgKCh1aW50MzJfdCkweDAwMDgwMDAwKSAgLyogU3VzcGVuZGVkIC0gUnggRGVzY3JpcHRvciB1bmF2YWlsYWJsZSAqLworICAjZGVmaW5lIEVUSF9ETUFTUl9SUFNfQ2xvc2luZyAgICAgICAgICgodWludDMyX3QpMHgwMDBBMDAwMCkgIC8qIFJ1bm5pbmcgLSBjbG9zaW5nIGRlc2NyaXB0b3IgKi8KKyAgI2RlZmluZSBFVEhfRE1BU1JfUlBTX1F1ZXVpbmcgICAgICAgICAoKHVpbnQzMl90KTB4MDAwRTAwMDApICAvKiBSdW5uaW5nIC0gcXVldWluZyB0aGUgcmVjaWV2ZSBmcmFtZSBpbnRvIGhvc3QgbWVtb3J5ICovCisjZGVmaW5lIEVUSF9ETUFTUl9OSVMgICAgICAgICgodWludDMyX3QpMHgwMDAxMDAwMCkgIC8qIE5vcm1hbCBpbnRlcnJ1cHQgc3VtbWFyeSAqLworI2RlZmluZSBFVEhfRE1BU1JfQUlTICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDgwMDApICAvKiBBYm5vcm1hbCBpbnRlcnJ1cHQgc3VtbWFyeSAqLworI2RlZmluZSBFVEhfRE1BU1JfRVJTICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDQwMDApICAvKiBFYXJseSByZWNlaXZlIHN0YXR1cyAqLworI2RlZmluZSBFVEhfRE1BU1JfRkJFUyAgICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAvKiBGYXRhbCBidXMgZXJyb3Igc3RhdHVzICovCisjZGVmaW5lIEVUSF9ETUFTUl9FVFMgICAgICAgICgodWludDMyX3QpMHgwMDAwMDQwMCkgIC8qIEVhcmx5IHRyYW5zbWl0IHN0YXR1cyAqLworI2RlZmluZSBFVEhfRE1BU1JfUldUUyAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAyMDApICAvKiBSZWNlaXZlIHdhdGNoZG9nIHRpbWVvdXQgc3RhdHVzICovCisjZGVmaW5lIEVUSF9ETUFTUl9SUFNTICAgICAgICgodWludDMyX3QpMHgwMDAwMDEwMCkgIC8qIFJlY2VpdmUgcHJvY2VzcyBzdG9wcGVkIHN0YXR1cyAqLworI2RlZmluZSBFVEhfRE1BU1JfUkJVUyAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApICAvKiBSZWNlaXZlIGJ1ZmZlciB1bmF2YWlsYWJsZSBzdGF0dXMgKi8KKyNkZWZpbmUgRVRIX0RNQVNSX1JTICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDQwKSAgLyogUmVjZWl2ZSBzdGF0dXMgKi8KKyNkZWZpbmUgRVRIX0RNQVNSX1RVUyAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKSAgLyogVHJhbnNtaXQgdW5kZXJmbG93IHN0YXR1cyAqLworI2RlZmluZSBFVEhfRE1BU1JfUk9TICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTApICAvKiBSZWNlaXZlIG92ZXJmbG93IHN0YXR1cyAqLworI2RlZmluZSBFVEhfRE1BU1JfVEpUUyAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDgpICAvKiBUcmFuc21pdCBqYWJiZXIgdGltZW91dCBzdGF0dXMgKi8KKyNkZWZpbmUgRVRIX0RNQVNSX1RCVVMgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgLyogVHJhbnNtaXQgYnVmZmVyIHVuYXZhaWxhYmxlIHN0YXR1cyAqLworI2RlZmluZSBFVEhfRE1BU1JfVFBTUyAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAvKiBUcmFuc21pdCBwcm9jZXNzIHN0b3BwZWQgc3RhdHVzICovCisjZGVmaW5lIEVUSF9ETUFTUl9UUyAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMSkgIC8qIFRyYW5zbWl0IHN0YXR1cyAqLworCisvKiBCaXQgZGVmaW5pdGlvbiBmb3IgRXRoZXJuZXQgRE1BIE9wZXJhdGlvbiBNb2RlIFJlZ2lzdGVyICovCisjZGVmaW5lIEVUSF9ETUFPTVJfRFRDRUZEICAgICgodWludDMyX3QpMHgwNDAwMDAwMCkgIC8qIERpc2FibGUgRHJvcHBpbmcgb2YgVENQL0lQIGNoZWNrc3VtIGVycm9yIGZyYW1lcyAqLworI2RlZmluZSBFVEhfRE1BT01SX1JTRiAgICAgICAoKHVpbnQzMl90KTB4MDIwMDAwMDApICAvKiBSZWNlaXZlIHN0b3JlIGFuZCBmb3J3YXJkICovCisjZGVmaW5lIEVUSF9ETUFPTVJfREZSRiAgICAgICgodWludDMyX3QpMHgwMTAwMDAwMCkgIC8qIERpc2FibGUgZmx1c2hpbmcgb2YgcmVjZWl2ZWQgZnJhbWVzICovCisjZGVmaW5lIEVUSF9ETUFPTVJfVFNGICAgICAgICgodWludDMyX3QpMHgwMDIwMDAwMCkgIC8qIFRyYW5zbWl0IHN0b3JlIGFuZCBmb3J3YXJkICovCisjZGVmaW5lIEVUSF9ETUFPTVJfRlRGICAgICAgICgodWludDMyX3QpMHgwMDEwMDAwMCkgIC8qIEZsdXNoIHRyYW5zbWl0IEZJRk8gKi8KKyNkZWZpbmUgRVRIX0RNQU9NUl9UVEMgICAgICAgKCh1aW50MzJfdCkweDAwMDFDMDAwKSAgLyogVHJhbnNtaXQgdGhyZXNob2xkIGNvbnRyb2wgKi8KKyAgI2RlZmluZSBFVEhfRE1BT01SX1RUQ182NEJ5dGVzICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMCkgIC8qIHRocmVzaG9sZCBsZXZlbCBvZiB0aGUgTVRMIFRyYW5zbWl0IEZJRk8gaXMgNjQgQnl0ZXMgKi8KKyAgI2RlZmluZSBFVEhfRE1BT01SX1RUQ18xMjhCeXRlcyAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgIC8qIHRocmVzaG9sZCBsZXZlbCBvZiB0aGUgTVRMIFRyYW5zbWl0IEZJRk8gaXMgMTI4IEJ5dGVzICovCisgICNkZWZpbmUgRVRIX0RNQU9NUl9UVENfMTkyQnl0ZXMgICAgICAoKHVpbnQzMl90KTB4MDAwMDgwMDApICAvKiB0aHJlc2hvbGQgbGV2ZWwgb2YgdGhlIE1UTCBUcmFuc21pdCBGSUZPIGlzIDE5MiBCeXRlcyAqLworICAjZGVmaW5lIEVUSF9ETUFPTVJfVFRDXzI1NkJ5dGVzICAgICAgKCh1aW50MzJfdCkweDAwMDBDMDAwKSAgLyogdGhyZXNob2xkIGxldmVsIG9mIHRoZSBNVEwgVHJhbnNtaXQgRklGTyBpcyAyNTYgQnl0ZXMgKi8KKyAgI2RlZmluZSBFVEhfRE1BT01SX1RUQ180MEJ5dGVzICAgICAgICgodWludDMyX3QpMHgwMDAxMDAwMCkgIC8qIHRocmVzaG9sZCBsZXZlbCBvZiB0aGUgTVRMIFRyYW5zbWl0IEZJRk8gaXMgNDAgQnl0ZXMgKi8KKyAgI2RlZmluZSBFVEhfRE1BT01SX1RUQ18zMkJ5dGVzICAgICAgICgodWludDMyX3QpMHgwMDAxNDAwMCkgIC8qIHRocmVzaG9sZCBsZXZlbCBvZiB0aGUgTVRMIFRyYW5zbWl0IEZJRk8gaXMgMzIgQnl0ZXMgKi8KKyAgI2RlZmluZSBFVEhfRE1BT01SX1RUQ18yNEJ5dGVzICAgICAgICgodWludDMyX3QpMHgwMDAxODAwMCkgIC8qIHRocmVzaG9sZCBsZXZlbCBvZiB0aGUgTVRMIFRyYW5zbWl0IEZJRk8gaXMgMjQgQnl0ZXMgKi8KKyAgI2RlZmluZSBFVEhfRE1BT01SX1RUQ18xNkJ5dGVzICAgICAgICgodWludDMyX3QpMHgwMDAxQzAwMCkgIC8qIHRocmVzaG9sZCBsZXZlbCBvZiB0aGUgTVRMIFRyYW5zbWl0IEZJRk8gaXMgMTYgQnl0ZXMgKi8KKyNkZWZpbmUgRVRIX0RNQU9NUl9TVCAgICAgICAgKCh1aW50MzJfdCkweDAwMDAyMDAwKSAgLyogU3RhcnQvc3RvcCB0cmFuc21pc3Npb24gY29tbWFuZCAqLworI2RlZmluZSBFVEhfRE1BT01SX0ZFRiAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwODApICAvKiBGb3J3YXJkIGVycm9yIGZyYW1lcyAqLworI2RlZmluZSBFVEhfRE1BT01SX0ZVR0YgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwNDApICAvKiBGb3J3YXJkIHVuZGVyc2l6ZWQgZ29vZCBmcmFtZXMgKi8KKyNkZWZpbmUgRVRIX0RNQU9NUl9SVEMgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDE4KSAgLyogcmVjZWl2ZSB0aHJlc2hvbGQgY29udHJvbCAqLworICAjZGVmaW5lIEVUSF9ETUFPTVJfUlRDXzY0Qnl0ZXMgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAwKSAgLyogdGhyZXNob2xkIGxldmVsIG9mIHRoZSBNVEwgUmVjZWl2ZSBGSUZPIGlzIDY0IEJ5dGVzICovCisgICNkZWZpbmUgRVRIX0RNQU9NUl9SVENfMzJCeXRlcyAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDgpICAvKiB0aHJlc2hvbGQgbGV2ZWwgb2YgdGhlIE1UTCBSZWNlaXZlIEZJRk8gaXMgMzIgQnl0ZXMgKi8KKyAgI2RlZmluZSBFVEhfRE1BT01SX1JUQ185NkJ5dGVzICAgICAgICgodWludDMyX3QpMHgwMDAwMDAxMCkgIC8qIHRocmVzaG9sZCBsZXZlbCBvZiB0aGUgTVRMIFJlY2VpdmUgRklGTyBpcyA5NiBCeXRlcyAqLworICAjZGVmaW5lIEVUSF9ETUFPTVJfUlRDXzEyOEJ5dGVzICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDE4KSAgLyogdGhyZXNob2xkIGxldmVsIG9mIHRoZSBNVEwgUmVjZWl2ZSBGSUZPIGlzIDEyOCBCeXRlcyAqLworI2RlZmluZSBFVEhfRE1BT01SX09TRiAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDQpICAvKiBvcGVyYXRlIG9uIHNlY29uZCBmcmFtZSAqLworI2RlZmluZSBFVEhfRE1BT01SX1NSICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDIpICAvKiBTdGFydC9zdG9wIHJlY2VpdmUgKi8KKworLyogQml0IGRlZmluaXRpb24gZm9yIEV0aGVybmV0IERNQSBJbnRlcnJ1cHQgRW5hYmxlIFJlZ2lzdGVyICovCisjZGVmaW5lIEVUSF9ETUFJRVJfTklTRSAgICAgICgodWludDMyX3QpMHgwMDAxMDAwMCkgIC8qIE5vcm1hbCBpbnRlcnJ1cHQgc3VtbWFyeSBlbmFibGUgKi8KKyNkZWZpbmUgRVRIX0RNQUlFUl9BSVNFICAgICAgKCh1aW50MzJfdCkweDAwMDA4MDAwKSAgLyogQWJub3JtYWwgaW50ZXJydXB0IHN1bW1hcnkgZW5hYmxlICovCisjZGVmaW5lIEVUSF9ETUFJRVJfRVJJRSAgICAgICgodWludDMyX3QpMHgwMDAwNDAwMCkgIC8qIEVhcmx5IHJlY2VpdmUgaW50ZXJydXB0IGVuYWJsZSAqLworI2RlZmluZSBFVEhfRE1BSUVSX0ZCRUlFICAgICAoKHVpbnQzMl90KTB4MDAwMDIwMDApICAvKiBGYXRhbCBidXMgZXJyb3IgaW50ZXJydXB0IGVuYWJsZSAqLworI2RlZmluZSBFVEhfRE1BSUVSX0VUSUUgICAgICAoKHVpbnQzMl90KTB4MDAwMDA0MDApICAvKiBFYXJseSB0cmFuc21pdCBpbnRlcnJ1cHQgZW5hYmxlICovCisjZGVmaW5lIEVUSF9ETUFJRVJfUldUSUUgICAgICgodWludDMyX3QpMHgwMDAwMDIwMCkgIC8qIFJlY2VpdmUgd2F0Y2hkb2cgdGltZW91dCBpbnRlcnJ1cHQgZW5hYmxlICovCisjZGVmaW5lIEVUSF9ETUFJRVJfUlBTSUUgICAgICgodWludDMyX3QpMHgwMDAwMDEwMCkgIC8qIFJlY2VpdmUgcHJvY2VzcyBzdG9wcGVkIGludGVycnVwdCBlbmFibGUgKi8KKyNkZWZpbmUgRVRIX0RNQUlFUl9SQlVJRSAgICAgKCh1aW50MzJfdCkweDAwMDAwMDgwKSAgLyogUmVjZWl2ZSBidWZmZXIgdW5hdmFpbGFibGUgaW50ZXJydXB0IGVuYWJsZSAqLworI2RlZmluZSBFVEhfRE1BSUVSX1JJRSAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwNDApICAvKiBSZWNlaXZlIGludGVycnVwdCBlbmFibGUgKi8KKyNkZWZpbmUgRVRIX0RNQUlFUl9UVUlFICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwKSAgLyogVHJhbnNtaXQgVW5kZXJmbG93IGludGVycnVwdCBlbmFibGUgKi8KKyNkZWZpbmUgRVRIX0RNQUlFUl9ST0lFICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDEwKSAgLyogUmVjZWl2ZSBPdmVyZmxvdyBpbnRlcnJ1cHQgZW5hYmxlICovCisjZGVmaW5lIEVUSF9ETUFJRVJfVEpUSUUgICAgICgodWludDMyX3QpMHgwMDAwMDAwOCkgIC8qIFRyYW5zbWl0IGphYmJlciB0aW1lb3V0IGludGVycnVwdCBlbmFibGUgKi8KKyNkZWZpbmUgRVRIX0RNQUlFUl9UQlVJRSAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0KSAgLyogVHJhbnNtaXQgYnVmZmVyIHVuYXZhaWxhYmxlIGludGVycnVwdCBlbmFibGUgKi8KKyNkZWZpbmUgRVRIX0RNQUlFUl9UUFNJRSAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAyKSAgLyogVHJhbnNtaXQgcHJvY2VzcyBzdG9wcGVkIGludGVycnVwdCBlbmFibGUgKi8KKyNkZWZpbmUgRVRIX0RNQUlFUl9USUUgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxKSAgLyogVHJhbnNtaXQgaW50ZXJydXB0IGVuYWJsZSAqLworCisvKiBCaXQgZGVmaW5pdGlvbiBmb3IgRXRoZXJuZXQgRE1BIE1pc3NlZCBGcmFtZSBhbmQgQnVmZmVyIE92ZXJmbG93IENvdW50ZXIgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgRVRIX0RNQU1GQk9DUl9PRk9DICAgKCh1aW50MzJfdCkweDEwMDAwMDAwKSAgLyogT3ZlcmZsb3cgYml0IGZvciBGSUZPIG92ZXJmbG93IGNvdW50ZXIgKi8KKyNkZWZpbmUgRVRIX0RNQU1GQk9DUl9NRkEgICAgKCh1aW50MzJfdCkweDBGRkUwMDAwKSAgLyogTnVtYmVyIG9mIGZyYW1lcyBtaXNzZWQgYnkgdGhlIGFwcGxpY2F0aW9uICovCisjZGVmaW5lIEVUSF9ETUFNRkJPQ1JfT01GQyAgICgodWludDMyX3QpMHgwMDAxMDAwMCkgIC8qIE92ZXJmbG93IGJpdCBmb3IgbWlzc2VkIGZyYW1lIGNvdW50ZXIgKi8KKyNkZWZpbmUgRVRIX0RNQU1GQk9DUl9NRkMgICAgKCh1aW50MzJfdCkweDAwMDBGRkZGKSAgLyogTnVtYmVyIG9mIGZyYW1lcyBtaXNzZWQgYnkgdGhlIGNvbnRyb2xsZXIgKi8KKworLyogQml0IGRlZmluaXRpb24gZm9yIEV0aGVybmV0IERNQSBDdXJyZW50IEhvc3QgVHJhbnNtaXQgRGVzY3JpcHRvciBSZWdpc3RlciAqLworI2RlZmluZSBFVEhfRE1BQ0hURFJfSFREQVAgICAoKHVpbnQzMl90KTB4RkZGRkZGRkYpICAvKiBIb3N0IHRyYW5zbWl0IGRlc2NyaXB0b3IgYWRkcmVzcyBwb2ludGVyICovCisKKy8qIEJpdCBkZWZpbml0aW9uIGZvciBFdGhlcm5ldCBETUEgQ3VycmVudCBIb3N0IFJlY2VpdmUgRGVzY3JpcHRvciBSZWdpc3RlciAqLworI2RlZmluZSBFVEhfRE1BQ0hSRFJfSFJEQVAgICAoKHVpbnQzMl90KTB4RkZGRkZGRkYpICAvKiBIb3N0IHJlY2VpdmUgZGVzY3JpcHRvciBhZGRyZXNzIHBvaW50ZXIgKi8KKworLyogQml0IGRlZmluaXRpb24gZm9yIEV0aGVybmV0IERNQSBDdXJyZW50IEhvc3QgVHJhbnNtaXQgQnVmZmVyIEFkZHJlc3MgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgRVRIX0RNQUNIVEJBUl9IVEJBUCAgKCh1aW50MzJfdCkweEZGRkZGRkZGKSAgLyogSG9zdCB0cmFuc21pdCBidWZmZXIgYWRkcmVzcyBwb2ludGVyICovCisKKy8qIEJpdCBkZWZpbml0aW9uIGZvciBFdGhlcm5ldCBETUEgQ3VycmVudCBIb3N0IFJlY2VpdmUgQnVmZmVyIEFkZHJlc3MgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgRVRIX0RNQUNIUkJBUl9IUkJBUCAgKCh1aW50MzJfdCkweEZGRkZGRkZGKSAgLyogSG9zdCByZWNlaXZlIGJ1ZmZlciBhZGRyZXNzIHBvaW50ZXIgKi8KKyNlbmRpZiAvKiBTVE0zMkYxMFhfQ0wgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworIC8qKgorICAqIEB9CisgICovIAorCisjaWZkZWYgVVNFX1NURFBFUklQSF9EUklWRVIKKyAgI2luY2x1ZGUgInN0bTMyZjEweF9jb25mLmgiCisjZW5kaWYKKworLyoqIEBhZGR0b2dyb3VwIEV4cG9ydGVkX21hY3JvCisgICogQHsKKyAgKi8KKworI2RlZmluZSBTRVRfQklUKFJFRywgQklUKSAgICAgKChSRUcpIHw9IChCSVQpKQorCisjZGVmaW5lIENMRUFSX0JJVChSRUcsIEJJVCkgICAoKFJFRykgJj0gfihCSVQpKQorCisjZGVmaW5lIFJFQURfQklUKFJFRywgQklUKSAgICAoKFJFRykgJiAoQklUKSkKKworI2RlZmluZSBDTEVBUl9SRUcoUkVHKSAgICAgICAgKChSRUcpID0gKDB4MCkpCisKKyNkZWZpbmUgV1JJVEVfUkVHKFJFRywgVkFMKSAgICgoUkVHKSA9IChWQUwpKQorCisjZGVmaW5lIFJFQURfUkVHKFJFRykgICAgICAgICAoKFJFRykpCisKKyNkZWZpbmUgTU9ESUZZX1JFRyhSRUcsIENMRUFSTUFTSywgU0VUTUFTSykgIFdSSVRFX1JFRygoUkVHKSwgKCgoUkVBRF9SRUcoUkVHKSkgJiAofihDTEVBUk1BU0spKSkgfCAoU0VUTUFTSykpKQorCisvKioKKyAgKiBAfQorICAqLworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyogX19TVE0zMkYxMHhfSCAqLworCisvKioKKyAgKiBAfQorICAqLworCisgIC8qKgorICAqIEB9CisgICovCisKKy8qKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgMjAxMSBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9zdF9md19saWIvc3RtMzJmMTB4X2NvbmYuaCBiL3N0X2Z3X2xpYi9zdG0zMmYxMHhfY29uZi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwYTBkZjIKLS0tIC9kZXYvbnVsbAorKysgYi9zdF9md19saWIvc3RtMzJmMTB4X2NvbmYuaApAQCAtMCwwICsxLDc3IEBACisvKioKKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICogQGZpbGUgICAgUHJvamVjdC9TVE0zMkYxMHhfU3RkUGVyaXBoX1RlbXBsYXRlL3N0bTMyZjEweF9jb25mLmggCisgICogQGF1dGhvciAgTUNEIEFwcGxpY2F0aW9uIFRlYW0KKyAgKiBAdmVyc2lvbiBWMy41LjAKKyAgKiBAZGF0ZSAgICAwOC1BcHJpbC0yMDExCisgICogQGJyaWVmICAgTGlicmFyeSBjb25maWd1cmF0aW9uIGZpbGUuCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqIEBhdHRlbnRpb24KKyAgKgorICAqIFRIRSBQUkVTRU5UIEZJUk1XQVJFIFdISUNIIElTIEZPUiBHVUlEQU5DRSBPTkxZIEFJTVMgQVQgUFJPVklESU5HIENVU1RPTUVSUworICAqIFdJVEggQ09ESU5HIElORk9STUFUSU9OIFJFR0FSRElORyBUSEVJUiBQUk9EVUNUUyBJTiBPUkRFUiBGT1IgVEhFTSBUTyBTQVZFCisgICogVElNRS4gQVMgQSBSRVNVTFQsIFNUTUlDUk9FTEVDVFJPTklDUyBTSEFMTCBOT1QgQkUgSEVMRCBMSUFCTEUgRk9SIEFOWQorICAqIERJUkVDVCwgSU5ESVJFQ1QgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIFdJVEggUkVTUEVDVCBUTyBBTlkgQ0xBSU1TIEFSSVNJTkcKKyAgKiBGUk9NIFRIRSBDT05URU5UIE9GIFNVQ0ggRklSTVdBUkUgQU5EL09SIFRIRSBVU0UgTUFERSBCWSBDVVNUT01FUlMgT0YgVEhFCisgICogQ09ESU5HIElORk9STUFUSU9OIENPTlRBSU5FRCBIRVJFSU4gSU4gQ09OTkVDVElPTiBXSVRIIFRIRUlSIFBST0RVQ1RTLgorICAqCisgICogPGgyPjxjZW50ZXI+JmNvcHk7IENPUFlSSUdIVCAyMDExIFNUTWljcm9lbGVjdHJvbmljczwvY2VudGVyPjwvaDI+CisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqLworCisvKiBEZWZpbmUgdG8gcHJldmVudCByZWN1cnNpdmUgaW5jbHVzaW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworI2lmbmRlZiBfX1NUTTMyRjEweF9DT05GX0gKKyNkZWZpbmUgX19TVE0zMkYxMHhfQ09ORl9ICisKKy8qIEluY2x1ZGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKiBVbmNvbW1lbnQvQ29tbWVudCB0aGUgbGluZSBiZWxvdyB0byBlbmFibGUvZGlzYWJsZSBwZXJpcGhlcmFsIGhlYWRlciBmaWxlIGluY2x1c2lvbiAqLworI2luY2x1ZGUgImluYy9zdG0zMmYxMHhfYWRjLmgiCisjaW5jbHVkZSAiaW5jL3N0bTMyZjEweF9ia3AuaCIKKyNpbmNsdWRlICJpbmMvc3RtMzJmMTB4X2Nhbi5oIgorI2luY2x1ZGUgImluYy9zdG0zMmYxMHhfY2VjLmgiCisjaW5jbHVkZSAiaW5jL3N0bTMyZjEweF9jcmMuaCIKKyNpbmNsdWRlICJpbmMvc3RtMzJmMTB4X2RhYy5oIgorI2luY2x1ZGUgImluYy9zdG0zMmYxMHhfZGJnbWN1LmgiCisjaW5jbHVkZSAiaW5jL3N0bTMyZjEweF9kbWEuaCIKKyNpbmNsdWRlICJpbmMvc3RtMzJmMTB4X2V4dGkuaCIKKyNpbmNsdWRlICJpbmMvc3RtMzJmMTB4X2ZsYXNoLmgiCisjaW5jbHVkZSAiaW5jL3N0bTMyZjEweF9mc21jLmgiCisjaW5jbHVkZSAiaW5jL3N0bTMyZjEweF9ncGlvLmgiCisjaW5jbHVkZSAiaW5jL3N0bTMyZjEweF9pMmMuaCIKKyNpbmNsdWRlICJpbmMvc3RtMzJmMTB4X2l3ZGcuaCIKKyNpbmNsdWRlICJpbmMvc3RtMzJmMTB4X3B3ci5oIgorI2luY2x1ZGUgImluYy9zdG0zMmYxMHhfcmNjLmgiCisjaW5jbHVkZSAiaW5jL3N0bTMyZjEweF9ydGMuaCIKKyNpbmNsdWRlICJpbmMvc3RtMzJmMTB4X3NkaW8uaCIKKyNpbmNsdWRlICJpbmMvc3RtMzJmMTB4X3NwaS5oIgorI2luY2x1ZGUgImluYy9zdG0zMmYxMHhfdGltLmgiCisjaW5jbHVkZSAiaW5jL3N0bTMyZjEweF91c2FydC5oIgorI2luY2x1ZGUgImluYy9zdG0zMmYxMHhfd3dkZy5oIgorI2luY2x1ZGUgImluYy9taXNjLmgiIC8qIEhpZ2ggbGV2ZWwgZnVuY3Rpb25zIGZvciBOVklDIGFuZCBTeXNUaWNrIChhZGQtb24gdG8gQ01TSVMgZnVuY3Rpb25zKSAqLworCisvKiBFeHBvcnRlZCB0eXBlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyogRXhwb3J0ZWQgY29uc3RhbnRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qIFVuY29tbWVudCB0aGUgbGluZSBiZWxvdyB0byBleHBhbnNlIHRoZSAiYXNzZXJ0X3BhcmFtIiBtYWNybyBpbiB0aGUgCisgICBTdGFuZGFyZCBQZXJpcGhlcmFsIExpYnJhcnkgZHJpdmVycyBjb2RlICovCisvKiAjZGVmaW5lIFVTRV9GVUxMX0FTU0VSVCAgICAxICovCisKKy8qIEV4cG9ydGVkIG1hY3JvIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisjaWZkZWYgIFVTRV9GVUxMX0FTU0VSVAorCisvKioKKyAgKiBAYnJpZWYgIFRoZSBhc3NlcnRfcGFyYW0gbWFjcm8gaXMgdXNlZCBmb3IgZnVuY3Rpb24ncyBwYXJhbWV0ZXJzIGNoZWNrLgorICAqIEBwYXJhbSAgZXhwcjogSWYgZXhwciBpcyBmYWxzZSwgaXQgY2FsbHMgYXNzZXJ0X2ZhaWxlZCBmdW5jdGlvbiB3aGljaCByZXBvcnRzIAorICAqICAgICAgICAgdGhlIG5hbWUgb2YgdGhlIHNvdXJjZSBmaWxlIGFuZCB0aGUgc291cmNlIGxpbmUgbnVtYmVyIG9mIHRoZSBjYWxsIAorICAqICAgICAgICAgdGhhdCBmYWlsZWQuIElmIGV4cHIgaXMgdHJ1ZSwgaXQgcmV0dXJucyBubyB2YWx1ZS4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KKyAgI2RlZmluZSBhc3NlcnRfcGFyYW0oZXhwcikgKChleHByKSA/ICh2b2lkKTAgOiBhc3NlcnRfZmFpbGVkKCh1aW50OF90ICopX19GSUxFX18sIF9fTElORV9fKSkKKy8qIEV4cG9ydGVkIGZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgIHZvaWQgYXNzZXJ0X2ZhaWxlZCh1aW50OF90KiBmaWxlLCB1aW50MzJfdCBsaW5lKTsKKyNlbHNlCisgICNkZWZpbmUgYXNzZXJ0X3BhcmFtKGV4cHIpICgodm9pZCkwKQorI2VuZGlmIC8qIFVTRV9GVUxMX0FTU0VSVCAqLworCisjZW5kaWYgLyogX19TVE0zMkYxMHhfQ09ORl9IICovCisKKy8qKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgMjAxMSBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9zdF9md19saWIvc3lzdGVtX3N0bTMyZjEweC5jIGIvc3RfZndfbGliL3N5c3RlbV9zdG0zMmYxMHguYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xY2I3NjBlCi0tLSAvZGV2L251bGwKKysrIGIvc3RfZndfbGliL3N5c3RlbV9zdG0zMmYxMHguYwpAQCAtMCwwICsxLDEwOTQgQEAKKy8qKgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKiBAZmlsZSAgICBzeXN0ZW1fc3RtMzJmMTB4LmMKKyAgKiBAYXV0aG9yICBNQ0QgQXBwbGljYXRpb24gVGVhbQorICAqIEB2ZXJzaW9uIFYzLjUuMAorICAqIEBkYXRlICAgIDA4LUFwcmlsLTIwMTEKKyAgKiBAYnJpZWYgICBDTVNJUyBDb3J0ZXgtTTMgRGV2aWNlIFBlcmlwaGVyYWwgQWNjZXNzIExheWVyIFN5c3RlbSBTb3VyY2UgRmlsZS4KKyAgKiAKKyAgKiAxLiAgVGhpcyBmaWxlIHByb3ZpZGVzIHR3byBmdW5jdGlvbnMgYW5kIG9uZSBnbG9iYWwgdmFyaWFibGUgdG8gYmUgY2FsbGVkIGZyb20gCisgICogICAgIHVzZXIgYXBwbGljYXRpb246CisgICogICAgICAtIFN5c3RlbUluaXQoKTogU2V0dXBzIHRoZSBzeXN0ZW0gY2xvY2sgKFN5c3RlbSBjbG9jayBzb3VyY2UsIFBMTCBNdWx0aXBsaWVyCisgICogICAgICAgICAgICAgICAgICAgICAgZmFjdG9ycywgQUhCL0FQQnggcHJlc2NhbGVycyBhbmQgRmxhc2ggc2V0dGluZ3MpLiAKKyAgKiAgICAgICAgICAgICAgICAgICAgICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBhdCBzdGFydHVwIGp1c3QgYWZ0ZXIgcmVzZXQgYW5kIAorICAqICAgICAgICAgICAgICAgICAgICAgIGJlZm9yZSBicmFuY2ggdG8gbWFpbiBwcm9ncmFtLiBUaGlzIGNhbGwgaXMgbWFkZSBpbnNpZGUKKyAgKiAgICAgICAgICAgICAgICAgICAgICB0aGUgInN0YXJ0dXBfc3RtMzJmMTB4X3h4LnMiIGZpbGUuCisgICoKKyAgKiAgICAgIC0gU3lzdGVtQ29yZUNsb2NrIHZhcmlhYmxlOiBDb250YWlucyB0aGUgY29yZSBjbG9jayAoSENMSyksIGl0IGNhbiBiZSB1c2VkCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgdGhlIHVzZXIgYXBwbGljYXRpb24gdG8gc2V0dXAgdGhlIFN5c1RpY2sgCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZXIgb3IgY29uZmlndXJlIG90aGVyIHBhcmFtZXRlcnMuCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICogICAgICAtIFN5c3RlbUNvcmVDbG9ja1VwZGF0ZSgpOiBVcGRhdGVzIHRoZSB2YXJpYWJsZSBTeXN0ZW1Db3JlQ2xvY2sgYW5kIG11c3QKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlIGNhbGxlZCB3aGVuZXZlciB0aGUgY29yZSBjbG9jayBpcyBjaGFuZ2VkCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdXJpbmcgcHJvZ3JhbSBleGVjdXRpb24uCisgICoKKyAgKiAyLiBBZnRlciBlYWNoIGRldmljZSByZXNldCB0aGUgSFNJICg4IE1IeikgaXMgdXNlZCBhcyBzeXN0ZW0gY2xvY2sgc291cmNlLgorICAqICAgIFRoZW4gU3lzdGVtSW5pdCgpIGZ1bmN0aW9uIGlzIGNhbGxlZCwgaW4gInN0YXJ0dXBfc3RtMzJmMTB4X3h4LnMiIGZpbGUsIHRvCisgICogICAgY29uZmlndXJlIHRoZSBzeXN0ZW0gY2xvY2sgYmVmb3JlIHRvIGJyYW5jaCB0byBtYWluIHByb2dyYW0uCisgICoKKyAgKiAzLiBJZiB0aGUgc3lzdGVtIGNsb2NrIHNvdXJjZSBzZWxlY3RlZCBieSB1c2VyIGZhaWxzIHRvIHN0YXJ0dXAsIHRoZSBTeXN0ZW1Jbml0KCkKKyAgKiAgICBmdW5jdGlvbiB3aWxsIGRvIG5vdGhpbmcgYW5kIEhTSSBzdGlsbCB1c2VkIGFzIHN5c3RlbSBjbG9jayBzb3VyY2UuIFVzZXIgY2FuIAorICAqICAgIGFkZCBzb21lIGNvZGUgdG8gZGVhbCB3aXRoIHRoaXMgaXNzdWUgaW5zaWRlIHRoZSBTZXRTeXNDbG9jaygpIGZ1bmN0aW9uLgorICAqCisgICogNC4gVGhlIGRlZmF1bHQgdmFsdWUgb2YgSFNFIGNyeXN0YWwgaXMgc2V0IHRvIDggTUh6IChvciAyNSBNSHosIGRlcGVkbmluZyBvbgorICAqICAgIHRoZSBwcm9kdWN0IHVzZWQpLCByZWZlciB0byAiSFNFX1ZBTFVFIiBkZWZpbmUgaW4gInN0bTMyZjEweC5oIiBmaWxlLiAKKyAgKiAgICBXaGVuIEhTRSBpcyB1c2VkIGFzIHN5c3RlbSBjbG9jayBzb3VyY2UsIGRpcmVjdGx5IG9yIHRocm91Z2ggUExMLCBhbmQgeW91CisgICogICAgYXJlIHVzaW5nIGRpZmZlcmVudCBjcnlzdGFsIHlvdSBoYXZlIHRvIGFkYXB0IHRoZSBIU0UgdmFsdWUgdG8geW91ciBvd24KKyAgKiAgICBjb25maWd1cmF0aW9uLgorICAqICAgICAgICAKKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICogQGF0dGVudGlvbgorICAqCisgICogVEhFIFBSRVNFTlQgRklSTVdBUkUgV0hJQ0ggSVMgRk9SIEdVSURBTkNFIE9OTFkgQUlNUyBBVCBQUk9WSURJTkcgQ1VTVE9NRVJTCisgICogV0lUSCBDT0RJTkcgSU5GT1JNQVRJT04gUkVHQVJESU5HIFRIRUlSIFBST0RVQ1RTIElOIE9SREVSIEZPUiBUSEVNIFRPIFNBVkUKKyAgKiBUSU1FLiBBUyBBIFJFU1VMVCwgU1RNSUNST0VMRUNUUk9OSUNTIFNIQUxMIE5PVCBCRSBIRUxEIExJQUJMRSBGT1IgQU5ZCisgICogRElSRUNULCBJTkRJUkVDVCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgV0lUSCBSRVNQRUNUIFRPIEFOWSBDTEFJTVMgQVJJU0lORworICAqIEZST00gVEhFIENPTlRFTlQgT0YgU1VDSCBGSVJNV0FSRSBBTkQvT1IgVEhFIFVTRSBNQURFIEJZIENVU1RPTUVSUyBPRiBUSEUKKyAgKiBDT0RJTkcgSU5GT1JNQVRJT04gQ09OVEFJTkVEIEhFUkVJTiBJTiBDT05ORUNUSU9OIFdJVEggVEhFSVIgUFJPRFVDVFMuCisgICoKKyAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ09QWVJJR0hUIDIwMTEgU1RNaWNyb2VsZWN0cm9uaWNzPC9jZW50ZXI+PC9oMj4KKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICovCisKKy8qKiBAYWRkdG9ncm91cCBDTVNJUworICAqIEB7CisgICovCisKKy8qKiBAYWRkdG9ncm91cCBzdG0zMmYxMHhfc3lzdGVtCisgICogQHsKKyAgKi8gIAorICAKKy8qKiBAYWRkdG9ncm91cCBTVE0zMkYxMHhfU3lzdGVtX1ByaXZhdGVfSW5jbHVkZXMKKyAgKiBAeworICAqLworCisjaW5jbHVkZSAic3RtMzJmMTB4LmgiCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAYWRkdG9ncm91cCBTVE0zMkYxMHhfU3lzdGVtX1ByaXZhdGVfVHlwZXNEZWZpbml0aW9ucworICAqIEB7CisgICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAYWRkdG9ncm91cCBTVE0zMkYxMHhfU3lzdGVtX1ByaXZhdGVfRGVmaW5lcworICAqIEB7CisgICovCisKKy8qITwgVW5jb21tZW50IHRoZSBsaW5lIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGRlc2lyZWQgU3lzdGVtIGNsb2NrIChTWVNDTEspCisgICBmcmVxdWVuY3kgKGFmdGVyIHJlc2V0IHRoZSBIU0kgaXMgdXNlZCBhcyBTWVNDTEsgc291cmNlKQorICAgCisgICBJTVBPUlRBTlQgTk9URToKKyAgID09PT09PT09PT09PT09IAorICAgMS4gQWZ0ZXIgZWFjaCBkZXZpY2UgcmVzZXQgdGhlIEhTSSBpcyB1c2VkIGFzIFN5c3RlbSBjbG9jayBzb3VyY2UuCisKKyAgIDIuIFBsZWFzZSBtYWtlIHN1cmUgdGhhdCB0aGUgc2VsZWN0ZWQgU3lzdGVtIGNsb2NrIGRvZXNuJ3QgZXhjZWVkIHlvdXIgZGV2aWNlJ3MKKyAgICAgIG1heGltdW0gZnJlcXVlbmN5LgorICAgICAgCisgICAzLiBJZiBub25lIG9mIHRoZSBkZWZpbmUgYmVsb3cgaXMgZW5hYmxlZCwgdGhlIEhTSSBpcyB1c2VkIGFzIFN5c3RlbSBjbG9jaworICAgIHNvdXJjZS4KKworICAgNC4gVGhlIFN5c3RlbSBjbG9jayBjb25maWd1cmF0aW9uIGZ1bmN0aW9ucyBwcm92aWRlZCB3aXRoaW4gdGhpcyBmaWxlIGFzc3VtZSB0aGF0OgorICAgICAgICAtIEZvciBMb3csIE1lZGl1bSBhbmQgSGlnaCBkZW5zaXR5IFZhbHVlIGxpbmUgZGV2aWNlcyBhbiBleHRlcm5hbCA4TUh6IAorICAgICAgICAgIGNyeXN0YWwgaXMgdXNlZCB0byBkcml2ZSB0aGUgU3lzdGVtIGNsb2NrLgorICAgICAgICAtIEZvciBMb3csIE1lZGl1bSBhbmQgSGlnaCBkZW5zaXR5IGRldmljZXMgYW4gZXh0ZXJuYWwgOE1IeiBjcnlzdGFsIGlzCisgICAgICAgICAgdXNlZCB0byBkcml2ZSB0aGUgU3lzdGVtIGNsb2NrLgorICAgICAgICAtIEZvciBDb25uZWN0aXZpdHkgbGluZSBkZXZpY2VzIGFuIGV4dGVybmFsIDI1TUh6IGNyeXN0YWwgaXMgdXNlZCB0byBkcml2ZQorICAgICAgICAgIHRoZSBTeXN0ZW0gY2xvY2suCisgICAgIElmIHlvdSBhcmUgdXNpbmcgZGlmZmVyZW50IGNyeXN0YWwgeW91IGhhdmUgdG8gYWRhcHQgdGhvc2UgZnVuY3Rpb25zIGFjY29yZGluZ2x5LgorICAgICovCisgICAgCisjaWYgZGVmaW5lZCAoU1RNMzJGMTBYX0xEX1ZMKSB8fCAoZGVmaW5lZCBTVE0zMkYxMFhfTURfVkwpIHx8IChkZWZpbmVkIFNUTTMyRjEwWF9IRF9WTCkKKy8qICNkZWZpbmUgU1lTQ0xLX0ZSRVFfSFNFICAgIEhTRV9WQUxVRSAqLworICNkZWZpbmUgU1lTQ0xLX0ZSRVFfMjRNSHogIDI0MDAwMDAwCisjZWxzZQorLyogI2RlZmluZSBTWVNDTEtfRlJFUV9IU0UgICAgSFNFX1ZBTFVFICovCisvKiAjZGVmaW5lIFNZU0NMS19GUkVRXzI0TUh6ICAyNDAwMDAwMCAqLyAKKy8qICNkZWZpbmUgU1lTQ0xLX0ZSRVFfMzZNSHogIDM2MDAwMDAwICovCisvKiAjZGVmaW5lIFNZU0NMS19GUkVRXzQ4TUh6ICA0ODAwMDAwMCAqLworLyogI2RlZmluZSBTWVNDTEtfRlJFUV81Nk1IeiAgNTYwMDAwMDAgKi8KKyNkZWZpbmUgU1lTQ0xLX0ZSRVFfNzJNSHogIDcyMDAwMDAwCisjZW5kaWYKKworLyohPCBVbmNvbW1lbnQgdGhlIGZvbGxvd2luZyBsaW5lIGlmIHlvdSBuZWVkIHRvIHVzZSBleHRlcm5hbCBTUkFNIG1vdW50ZWQKKyAgICAgb24gU1RNMzIxMEUtRVZBTCBib2FyZCAoU1RNMzIgSGlnaCBkZW5zaXR5IGFuZCBYTC1kZW5zaXR5IGRldmljZXMpIG9yIG9uIAorICAgICBTVE0zMjEwMEUtRVZBTCBib2FyZCAoU1RNMzIgSGlnaC1kZW5zaXR5IHZhbHVlIGxpbmUgZGV2aWNlcykgYXMgZGF0YSBtZW1vcnkgKi8gCisjaWYgZGVmaW5lZCAoU1RNMzJGMTBYX0hEKSB8fCAoZGVmaW5lZCBTVE0zMkYxMFhfWEwpIHx8IChkZWZpbmVkIFNUTTMyRjEwWF9IRF9WTCkKKy8qICNkZWZpbmUgREFUQV9JTl9FeHRTUkFNICovCisjZW5kaWYKKworLyohPCBVbmNvbW1lbnQgdGhlIGZvbGxvd2luZyBsaW5lIGlmIHlvdSBuZWVkIHRvIHJlbG9jYXRlIHlvdXIgdmVjdG9yIFRhYmxlIGluCisgICAgIEludGVybmFsIFNSQU0uICovIAorLyogI2RlZmluZSBWRUNUX1RBQl9TUkFNICovCisjZGVmaW5lIFZFQ1RfVEFCX09GRlNFVCAgMHg0MDAwIC8qITwgVmVjdG9yIFRhYmxlIGJhc2Ugb2Zmc2V0IGZpZWxkLiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHZhbHVlIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAweDIwMC4gKi8KKworCisvKioKKyAgKiBAfQorICAqLworCisvKiogQGFkZHRvZ3JvdXAgU1RNMzJGMTB4X1N5c3RlbV9Qcml2YXRlX01hY3JvcworICAqIEB7CisgICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAYWRkdG9ncm91cCBTVE0zMkYxMHhfU3lzdGVtX1ByaXZhdGVfVmFyaWFibGVzCisgICogQHsKKyAgKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogIENsb2NrIERlZmluaXRpb25zCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworI2lmZGVmIFNZU0NMS19GUkVRX0hTRQorICB1aW50MzJfdCBTeXN0ZW1Db3JlQ2xvY2sgICAgICAgICA9IFNZU0NMS19GUkVRX0hTRTsgICAgICAgIC8qITwgU3lzdGVtIENsb2NrIEZyZXF1ZW5jeSAoQ29yZSBDbG9jaykgKi8KKyNlbGlmIGRlZmluZWQgU1lTQ0xLX0ZSRVFfMjRNSHoKKyAgdWludDMyX3QgU3lzdGVtQ29yZUNsb2NrICAgICAgICAgPSBTWVNDTEtfRlJFUV8yNE1IejsgICAgICAgIC8qITwgU3lzdGVtIENsb2NrIEZyZXF1ZW5jeSAoQ29yZSBDbG9jaykgKi8KKyNlbGlmIGRlZmluZWQgU1lTQ0xLX0ZSRVFfMzZNSHoKKyAgdWludDMyX3QgU3lzdGVtQ29yZUNsb2NrICAgICAgICAgPSBTWVNDTEtfRlJFUV8zNk1IejsgICAgICAgIC8qITwgU3lzdGVtIENsb2NrIEZyZXF1ZW5jeSAoQ29yZSBDbG9jaykgKi8KKyNlbGlmIGRlZmluZWQgU1lTQ0xLX0ZSRVFfNDhNSHoKKyAgdWludDMyX3QgU3lzdGVtQ29yZUNsb2NrICAgICAgICAgPSBTWVNDTEtfRlJFUV80OE1IejsgICAgICAgIC8qITwgU3lzdGVtIENsb2NrIEZyZXF1ZW5jeSAoQ29yZSBDbG9jaykgKi8KKyNlbGlmIGRlZmluZWQgU1lTQ0xLX0ZSRVFfNTZNSHoKKyAgdWludDMyX3QgU3lzdGVtQ29yZUNsb2NrICAgICAgICAgPSBTWVNDTEtfRlJFUV81Nk1IejsgICAgICAgIC8qITwgU3lzdGVtIENsb2NrIEZyZXF1ZW5jeSAoQ29yZSBDbG9jaykgKi8KKyNlbGlmIGRlZmluZWQgU1lTQ0xLX0ZSRVFfNzJNSHoKKyAgdWludDMyX3QgU3lzdGVtQ29yZUNsb2NrICAgICAgICAgPSBTWVNDTEtfRlJFUV83Mk1IejsgICAgICAgIC8qITwgU3lzdGVtIENsb2NrIEZyZXF1ZW5jeSAoQ29yZSBDbG9jaykgKi8KKyNlbHNlIC8qITwgSFNJIFNlbGVjdGVkIGFzIFN5c3RlbSBDbG9jayBzb3VyY2UgKi8KKyAgdWludDMyX3QgU3lzdGVtQ29yZUNsb2NrICAgICAgICAgPSBIU0lfVkFMVUU7ICAgICAgICAvKiE8IFN5c3RlbSBDbG9jayBGcmVxdWVuY3kgKENvcmUgQ2xvY2spICovCisjZW5kaWYKKworX19JIHVpbnQ4X3QgQUhCUHJlc2NUYWJsZVsxNl0gPSB7MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSwgMiwgMywgNCwgNiwgNywgOCwgOX07CisvKioKKyAgKiBAfQorICAqLworCisvKiogQGFkZHRvZ3JvdXAgU1RNMzJGMTB4X1N5c3RlbV9Qcml2YXRlX0Z1bmN0aW9uUHJvdG90eXBlcworICAqIEB7CisgICovCisKK3N0YXRpYyB2b2lkIFNldFN5c0Nsb2NrKHZvaWQpOworCisjaWZkZWYgU1lTQ0xLX0ZSRVFfSFNFCisgIHN0YXRpYyB2b2lkIFNldFN5c0Nsb2NrVG9IU0Uodm9pZCk7CisjZWxpZiBkZWZpbmVkIFNZU0NMS19GUkVRXzI0TUh6CisgIHN0YXRpYyB2b2lkIFNldFN5c0Nsb2NrVG8yNCh2b2lkKTsKKyNlbGlmIGRlZmluZWQgU1lTQ0xLX0ZSRVFfMzZNSHoKKyAgc3RhdGljIHZvaWQgU2V0U3lzQ2xvY2tUbzM2KHZvaWQpOworI2VsaWYgZGVmaW5lZCBTWVNDTEtfRlJFUV80OE1IegorICBzdGF0aWMgdm9pZCBTZXRTeXNDbG9ja1RvNDgodm9pZCk7CisjZWxpZiBkZWZpbmVkIFNZU0NMS19GUkVRXzU2TUh6CisgIHN0YXRpYyB2b2lkIFNldFN5c0Nsb2NrVG81Nih2b2lkKTsgIAorI2VsaWYgZGVmaW5lZCBTWVNDTEtfRlJFUV83Mk1IegorICBzdGF0aWMgdm9pZCBTZXRTeXNDbG9ja1RvNzIodm9pZCk7CisjZW5kaWYKKworI2lmZGVmIERBVEFfSU5fRXh0U1JBTQorICBzdGF0aWMgdm9pZCBTeXN0ZW1Jbml0X0V4dE1lbUN0bCh2b2lkKTsgCisjZW5kaWYgLyogREFUQV9JTl9FeHRTUkFNICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAYWRkdG9ncm91cCBTVE0zMkYxMHhfU3lzdGVtX1ByaXZhdGVfRnVuY3Rpb25zCisgICogQHsKKyAgKi8KKworLyoqCisgICogQGJyaWVmICBTZXR1cCB0aGUgbWljcm9jb250cm9sbGVyIHN5c3RlbQorICAqICAgICAgICAgSW5pdGlhbGl6ZSB0aGUgRW1iZWRkZWQgRmxhc2ggSW50ZXJmYWNlLCB0aGUgUExMIGFuZCB1cGRhdGUgdGhlIAorICAqICAgICAgICAgU3lzdGVtQ29yZUNsb2NrIHZhcmlhYmxlLgorICAqIEBub3RlICAgVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgdXNlZCBvbmx5IGFmdGVyIHJlc2V0LgorICAqIEBwYXJhbSAgTm9uZQorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBTeXN0ZW1Jbml0ICh2b2lkKQoreworICAvKiBSZXNldCB0aGUgUkNDIGNsb2NrIGNvbmZpZ3VyYXRpb24gdG8gdGhlIGRlZmF1bHQgcmVzZXQgc3RhdGUoZm9yIGRlYnVnIHB1cnBvc2UpICovCisgIC8qIFNldCBIU0lPTiBiaXQgKi8KKyAgUkNDLT5DUiB8PSAodWludDMyX3QpMHgwMDAwMDAwMTsKKworICAvKiBSZXNldCBTVywgSFBSRSwgUFBSRTEsIFBQUkUyLCBBRENQUkUgYW5kIE1DTyBiaXRzICovCisjaWZuZGVmIFNUTTMyRjEwWF9DTAorICBSQ0MtPkNGR1IgJj0gKHVpbnQzMl90KTB4RjhGRjAwMDA7CisjZWxzZQorICBSQ0MtPkNGR1IgJj0gKHVpbnQzMl90KTB4RjBGRjAwMDA7CisjZW5kaWYgLyogU1RNMzJGMTBYX0NMICovICAgCisgIAorICAvKiBSZXNldCBIU0VPTiwgQ1NTT04gYW5kIFBMTE9OIGJpdHMgKi8KKyAgUkNDLT5DUiAmPSAodWludDMyX3QpMHhGRUY2RkZGRjsKKworICAvKiBSZXNldCBIU0VCWVAgYml0ICovCisgIFJDQy0+Q1IgJj0gKHVpbnQzMl90KTB4RkZGQkZGRkY7CisKKyAgLyogUmVzZXQgUExMU1JDLCBQTExYVFBSRSwgUExMTVVMIGFuZCBVU0JQUkUvT1RHRlNQUkUgYml0cyAqLworICBSQ0MtPkNGR1IgJj0gKHVpbnQzMl90KTB4RkY4MEZGRkY7CisKKyNpZmRlZiBTVE0zMkYxMFhfQ0wKKyAgLyogUmVzZXQgUExMMk9OIGFuZCBQTEwzT04gYml0cyAqLworICBSQ0MtPkNSICY9ICh1aW50MzJfdCkweEVCRkZGRkZGOworCisgIC8qIERpc2FibGUgYWxsIGludGVycnVwdHMgYW5kIGNsZWFyIHBlbmRpbmcgYml0cyAgKi8KKyAgUkNDLT5DSVIgPSAweDAwRkYwMDAwOworCisgIC8qIFJlc2V0IENGR1IyIHJlZ2lzdGVyICovCisgIFJDQy0+Q0ZHUjIgPSAweDAwMDAwMDAwOworI2VsaWYgZGVmaW5lZCAoU1RNMzJGMTBYX0xEX1ZMKSB8fCBkZWZpbmVkIChTVE0zMkYxMFhfTURfVkwpIHx8IChkZWZpbmVkIFNUTTMyRjEwWF9IRF9WTCkKKyAgLyogRGlzYWJsZSBhbGwgaW50ZXJydXB0cyBhbmQgY2xlYXIgcGVuZGluZyBiaXRzICAqLworICBSQ0MtPkNJUiA9IDB4MDA5RjAwMDA7CisKKyAgLyogUmVzZXQgQ0ZHUjIgcmVnaXN0ZXIgKi8KKyAgUkNDLT5DRkdSMiA9IDB4MDAwMDAwMDA7ICAgICAgCisjZWxzZQorICAvKiBEaXNhYmxlIGFsbCBpbnRlcnJ1cHRzIGFuZCBjbGVhciBwZW5kaW5nIGJpdHMgICovCisgIFJDQy0+Q0lSID0gMHgwMDlGMDAwMDsKKyNlbmRpZiAvKiBTVE0zMkYxMFhfQ0wgKi8KKyAgICAKKyNpZiBkZWZpbmVkIChTVE0zMkYxMFhfSEQpIHx8IChkZWZpbmVkIFNUTTMyRjEwWF9YTCkgfHwgKGRlZmluZWQgU1RNMzJGMTBYX0hEX1ZMKQorICAjaWZkZWYgREFUQV9JTl9FeHRTUkFNCisgICAgU3lzdGVtSW5pdF9FeHRNZW1DdGwoKTsgCisgICNlbmRpZiAvKiBEQVRBX0lOX0V4dFNSQU0gKi8KKyNlbmRpZiAKKworICAvKiBDb25maWd1cmUgdGhlIFN5c3RlbSBjbG9jayBmcmVxdWVuY3ksIEhDTEssIFBDTEsyIGFuZCBQQ0xLMSBwcmVzY2FsZXJzICovCisgIC8qIENvbmZpZ3VyZSB0aGUgRmxhc2ggTGF0ZW5jeSBjeWNsZXMgYW5kIGVuYWJsZSBwcmVmZXRjaCBidWZmZXIgKi8KKyAgU2V0U3lzQ2xvY2soKTsKKworI2lmZGVmIFZFQ1RfVEFCX1NSQU0KKyAgU0NCLT5WVE9SID0gU1JBTV9CQVNFIHwgVkVDVF9UQUJfT0ZGU0VUOyAvKiBWZWN0b3IgVGFibGUgUmVsb2NhdGlvbiBpbiBJbnRlcm5hbCBTUkFNLiAqLworI2Vsc2UKKyAgU0NCLT5WVE9SID0gRkxBU0hfQkFTRSB8IFZFQ1RfVEFCX09GRlNFVDsgLyogVmVjdG9yIFRhYmxlIFJlbG9jYXRpb24gaW4gSW50ZXJuYWwgRkxBU0guICovCisjZW5kaWYgCit9CisKKy8qKgorICAqIEBicmllZiAgVXBkYXRlIFN5c3RlbUNvcmVDbG9jayB2YXJpYWJsZSBhY2NvcmRpbmcgdG8gQ2xvY2sgUmVnaXN0ZXIgVmFsdWVzLgorICAqICAgICAgICAgVGhlIFN5c3RlbUNvcmVDbG9jayB2YXJpYWJsZSBjb250YWlucyB0aGUgY29yZSBjbG9jayAoSENMSyksIGl0IGNhbgorICAqICAgICAgICAgYmUgdXNlZCBieSB0aGUgdXNlciBhcHBsaWNhdGlvbiB0byBzZXR1cCB0aGUgU3lzVGljayB0aW1lciBvciBjb25maWd1cmUKKyAgKiAgICAgICAgIG90aGVyIHBhcmFtZXRlcnMuCisgICogICAgICAgICAgIAorICAqIEBub3RlICAgRWFjaCB0aW1lIHRoZSBjb3JlIGNsb2NrIChIQ0xLKSBjaGFuZ2VzLCB0aGlzIGZ1bmN0aW9uIG11c3QgYmUgY2FsbGVkCisgICogICAgICAgICB0byB1cGRhdGUgU3lzdGVtQ29yZUNsb2NrIHZhcmlhYmxlIHZhbHVlLiBPdGhlcndpc2UsIGFueSBjb25maWd1cmF0aW9uCisgICogICAgICAgICBiYXNlZCBvbiB0aGlzIHZhcmlhYmxlIHdpbGwgYmUgaW5jb3JyZWN0LiAgICAgICAgIAorICAqICAgICAKKyAgKiBAbm90ZSAgIC0gVGhlIHN5c3RlbSBmcmVxdWVuY3kgY29tcHV0ZWQgYnkgdGhpcyBmdW5jdGlvbiBpcyBub3QgdGhlIHJlYWwgCisgICogICAgICAgICAgIGZyZXF1ZW5jeSBpbiB0aGUgY2hpcC4gSXQgaXMgY2FsY3VsYXRlZCBiYXNlZCBvbiB0aGUgcHJlZGVmaW5lZCAKKyAgKiAgICAgICAgICAgY29uc3RhbnQgYW5kIHRoZSBzZWxlY3RlZCBjbG9jayBzb3VyY2U6CisgICogICAgICAgICAgICAgCisgICogICAgICAgICAgIC0gSWYgU1lTQ0xLIHNvdXJjZSBpcyBIU0ksIFN5c3RlbUNvcmVDbG9jayB3aWxsIGNvbnRhaW4gdGhlIEhTSV9WQUxVRSgqKQorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAqICAgICAgICAgICAtIElmIFNZU0NMSyBzb3VyY2UgaXMgSFNFLCBTeXN0ZW1Db3JlQ2xvY2sgd2lsbCBjb250YWluIHRoZSBIU0VfVkFMVUUoKiopCisgICogICAgICAgICAgICAgICAgICAgICAgICAgIAorICAqICAgICAgICAgICAtIElmIFNZU0NMSyBzb3VyY2UgaXMgUExMLCBTeXN0ZW1Db3JlQ2xvY2sgd2lsbCBjb250YWluIHRoZSBIU0VfVkFMVUUoKiopIAorICAqICAgICAgICAgICAgIG9yIEhTSV9WQUxVRSgqKSBtdWx0aXBsaWVkIGJ5IHRoZSBQTEwgZmFjdG9ycy4KKyAgKiAgICAgICAgIAorICAqICAgICAgICAgKCopIEhTSV9WQUxVRSBpcyBhIGNvbnN0YW50IGRlZmluZWQgaW4gc3RtMzJmMXh4LmggZmlsZSAoZGVmYXVsdCB2YWx1ZQorICAqICAgICAgICAgICAgIDggTUh6KSBidXQgdGhlIHJlYWwgdmFsdWUgbWF5IHZhcnkgZGVwZW5kaW5nIG9uIHRoZSB2YXJpYXRpb25zCisgICogICAgICAgICAgICAgaW4gdm9sdGFnZSBhbmQgdGVtcGVyYXR1cmUuICAgCisgICogICAgCisgICogICAgICAgICAoKiopIEhTRV9WQUxVRSBpcyBhIGNvbnN0YW50IGRlZmluZWQgaW4gc3RtMzJmMXh4LmggZmlsZSAoZGVmYXVsdCB2YWx1ZQorICAqICAgICAgICAgICAgICA4IE1IeiBvciAyNSBNSHosIGRlcGVkbmluZyBvbiB0aGUgcHJvZHVjdCB1c2VkKSwgdXNlciBoYXMgdG8gZW5zdXJlCisgICogICAgICAgICAgICAgIHRoYXQgSFNFX1ZBTFVFIGlzIHNhbWUgYXMgdGhlIHJlYWwgZnJlcXVlbmN5IG9mIHRoZSBjcnlzdGFsIHVzZWQuCisgICogICAgICAgICAgICAgIE90aGVyd2lzZSwgdGhpcyBmdW5jdGlvbiBtYXkgaGF2ZSB3cm9uZyByZXN1bHQuCisgICogICAgICAgICAgICAgICAgCisgICogICAgICAgICAtIFRoZSByZXN1bHQgb2YgdGhpcyBmdW5jdGlvbiBjb3VsZCBiZSBub3QgY29ycmVjdCB3aGVuIHVzaW5nIGZyYWN0aW9uYWwKKyAgKiAgICAgICAgICAgdmFsdWUgZm9yIEhTRSBjcnlzdGFsLgorICAqIEBwYXJhbSAgTm9uZQorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBTeXN0ZW1Db3JlQ2xvY2tVcGRhdGUgKHZvaWQpCit7CisgIHVpbnQzMl90IHRtcCA9IDAsIHBsbG11bGwgPSAwLCBwbGxzb3VyY2UgPSAwOworCisjaWZkZWYgIFNUTTMyRjEwWF9DTAorICB1aW50MzJfdCBwcmVkaXYxc291cmNlID0gMCwgcHJlZGl2MWZhY3RvciA9IDAsIHByZWRpdjJmYWN0b3IgPSAwLCBwbGwybXVsbCA9IDA7CisjZW5kaWYgLyogU1RNMzJGMTBYX0NMICovCisKKyNpZiBkZWZpbmVkIChTVE0zMkYxMFhfTERfVkwpIHx8IGRlZmluZWQgKFNUTTMyRjEwWF9NRF9WTCkgfHwgKGRlZmluZWQgU1RNMzJGMTBYX0hEX1ZMKQorICB1aW50MzJfdCBwcmVkaXYxZmFjdG9yID0gMDsKKyNlbmRpZiAvKiBTVE0zMkYxMFhfTERfVkwgb3IgU1RNMzJGMTBYX01EX1ZMIG9yIFNUTTMyRjEwWF9IRF9WTCAqLworICAgIAorICAvKiBHZXQgU1lTQ0xLIHNvdXJjZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyAgdG1wID0gUkNDLT5DRkdSICYgUkNDX0NGR1JfU1dTOworICAKKyAgc3dpdGNoICh0bXApCisgIHsKKyAgICBjYXNlIDB4MDA6ICAvKiBIU0kgdXNlZCBhcyBzeXN0ZW0gY2xvY2sgKi8KKyAgICAgIFN5c3RlbUNvcmVDbG9jayA9IEhTSV9WQUxVRTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgMHgwNDogIC8qIEhTRSB1c2VkIGFzIHN5c3RlbSBjbG9jayAqLworICAgICAgU3lzdGVtQ29yZUNsb2NrID0gSFNFX1ZBTFVFOworICAgICAgYnJlYWs7CisgICAgY2FzZSAweDA4OiAgLyogUExMIHVzZWQgYXMgc3lzdGVtIGNsb2NrICovCisKKyAgICAgIC8qIEdldCBQTEwgY2xvY2sgc291cmNlIGFuZCBtdWx0aXBsaWNhdGlvbiBmYWN0b3IgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisgICAgICBwbGxtdWxsID0gUkNDLT5DRkdSICYgUkNDX0NGR1JfUExMTVVMTDsKKyAgICAgIHBsbHNvdXJjZSA9IFJDQy0+Q0ZHUiAmIFJDQ19DRkdSX1BMTFNSQzsKKyAgICAgIAorI2lmbmRlZiBTVE0zMkYxMFhfQ0wgICAgICAKKyAgICAgIHBsbG11bGwgPSAoIHBsbG11bGwgPj4gMTgpICsgMjsKKyAgICAgIAorICAgICAgaWYgKHBsbHNvdXJjZSA9PSAweDAwKQorICAgICAgeworICAgICAgICAvKiBIU0kgb3NjaWxsYXRvciBjbG9jayBkaXZpZGVkIGJ5IDIgc2VsZWN0ZWQgYXMgUExMIGNsb2NrIGVudHJ5ICovCisgICAgICAgIFN5c3RlbUNvcmVDbG9jayA9IChIU0lfVkFMVUUgPj4gMSkgKiBwbGxtdWxsOworICAgICAgfQorICAgICAgZWxzZQorICAgICAgeworICNpZiBkZWZpbmVkIChTVE0zMkYxMFhfTERfVkwpIHx8IGRlZmluZWQgKFNUTTMyRjEwWF9NRF9WTCkgfHwgKGRlZmluZWQgU1RNMzJGMTBYX0hEX1ZMKQorICAgICAgIHByZWRpdjFmYWN0b3IgPSAoUkNDLT5DRkdSMiAmIFJDQ19DRkdSMl9QUkVESVYxKSArIDE7CisgICAgICAgLyogSFNFIG9zY2lsbGF0b3IgY2xvY2sgc2VsZWN0ZWQgYXMgUFJFRElWMSBjbG9jayBlbnRyeSAqLworICAgICAgIFN5c3RlbUNvcmVDbG9jayA9IChIU0VfVkFMVUUgLyBwcmVkaXYxZmFjdG9yKSAqIHBsbG11bGw7IAorICNlbHNlCisgICAgICAgIC8qIEhTRSBzZWxlY3RlZCBhcyBQTEwgY2xvY2sgZW50cnkgKi8KKyAgICAgICAgaWYgKChSQ0MtPkNGR1IgJiBSQ0NfQ0ZHUl9QTExYVFBSRSkgIT0gKHVpbnQzMl90KVJFU0VUKQorICAgICAgICB7LyogSFNFIG9zY2lsbGF0b3IgY2xvY2sgZGl2aWRlZCBieSAyICovCisgICAgICAgICAgU3lzdGVtQ29yZUNsb2NrID0gKEhTRV9WQUxVRSA+PiAxKSAqIHBsbG11bGw7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgU3lzdGVtQ29yZUNsb2NrID0gSFNFX1ZBTFVFICogcGxsbXVsbDsKKyAgICAgICAgfQorICNlbmRpZgorICAgICAgfQorI2Vsc2UKKyAgICAgIHBsbG11bGwgPSBwbGxtdWxsID4+IDE4OworICAgICAgCisgICAgICBpZiAocGxsbXVsbCAhPSAweDBEKQorICAgICAgeworICAgICAgICAgcGxsbXVsbCArPSAyOworICAgICAgfQorICAgICAgZWxzZQorICAgICAgeyAvKiBQTEwgbXVsdGlwbGljYXRpb24gZmFjdG9yID0gUExMIGlucHV0IGNsb2NrICogNi41ICovCisgICAgICAgIHBsbG11bGwgPSAxMyAvIDI7IAorICAgICAgfQorICAgICAgICAgICAgCisgICAgICBpZiAocGxsc291cmNlID09IDB4MDApCisgICAgICB7CisgICAgICAgIC8qIEhTSSBvc2NpbGxhdG9yIGNsb2NrIGRpdmlkZWQgYnkgMiBzZWxlY3RlZCBhcyBQTEwgY2xvY2sgZW50cnkgKi8KKyAgICAgICAgU3lzdGVtQ29yZUNsb2NrID0gKEhTSV9WQUxVRSA+PiAxKSAqIHBsbG11bGw7CisgICAgICB9CisgICAgICBlbHNlCisgICAgICB7LyogUFJFRElWMSBzZWxlY3RlZCBhcyBQTEwgY2xvY2sgZW50cnkgKi8KKyAgICAgICAgCisgICAgICAgIC8qIEdldCBQUkVESVYxIGNsb2NrIHNvdXJjZSBhbmQgZGl2aXNpb24gZmFjdG9yICovCisgICAgICAgIHByZWRpdjFzb3VyY2UgPSBSQ0MtPkNGR1IyICYgUkNDX0NGR1IyX1BSRURJVjFTUkM7CisgICAgICAgIHByZWRpdjFmYWN0b3IgPSAoUkNDLT5DRkdSMiAmIFJDQ19DRkdSMl9QUkVESVYxKSArIDE7CisgICAgICAgIAorICAgICAgICBpZiAocHJlZGl2MXNvdXJjZSA9PSAwKQorICAgICAgICB7IAorICAgICAgICAgIC8qIEhTRSBvc2NpbGxhdG9yIGNsb2NrIHNlbGVjdGVkIGFzIFBSRURJVjEgY2xvY2sgZW50cnkgKi8KKyAgICAgICAgICBTeXN0ZW1Db3JlQ2xvY2sgPSAoSFNFX1ZBTFVFIC8gcHJlZGl2MWZhY3RvcikgKiBwbGxtdWxsOyAgICAgICAgICAKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsvKiBQTEwyIGNsb2NrIHNlbGVjdGVkIGFzIFBSRURJVjEgY2xvY2sgZW50cnkgKi8KKyAgICAgICAgICAKKyAgICAgICAgICAvKiBHZXQgUFJFRElWMiBkaXZpc2lvbiBmYWN0b3IgYW5kIFBMTDIgbXVsdGlwbGljYXRpb24gZmFjdG9yICovCisgICAgICAgICAgcHJlZGl2MmZhY3RvciA9ICgoUkNDLT5DRkdSMiAmIFJDQ19DRkdSMl9QUkVESVYyKSA+PiA0KSArIDE7CisgICAgICAgICAgcGxsMm11bGwgPSAoKFJDQy0+Q0ZHUjIgJiBSQ0NfQ0ZHUjJfUExMMk1VTCkgPj4gOCApICsgMjsgCisgICAgICAgICAgU3lzdGVtQ29yZUNsb2NrID0gKCgoSFNFX1ZBTFVFIC8gcHJlZGl2MmZhY3RvcikgKiBwbGwybXVsbCkgLyBwcmVkaXYxZmFjdG9yKSAqIHBsbG11bGw7ICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICB9CisgICAgICB9CisjZW5kaWYgLyogU1RNMzJGMTBYX0NMICovIAorICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgU3lzdGVtQ29yZUNsb2NrID0gSFNJX1ZBTFVFOworICAgICAgYnJlYWs7CisgIH0KKyAgCisgIC8qIENvbXB1dGUgSENMSyBjbG9jayBmcmVxdWVuY3kgLS0tLS0tLS0tLS0tLS0tLSovCisgIC8qIEdldCBIQ0xLIHByZXNjYWxlciAqLworICB0bXAgPSBBSEJQcmVzY1RhYmxlWygoUkNDLT5DRkdSICYgUkNDX0NGR1JfSFBSRSkgPj4gNCldOworICAvKiBIQ0xLIGNsb2NrIGZyZXF1ZW5jeSAqLworICBTeXN0ZW1Db3JlQ2xvY2sgPj49IHRtcDsgIAorfQorCisvKioKKyAgKiBAYnJpZWYgIENvbmZpZ3VyZXMgdGhlIFN5c3RlbSBjbG9jayBmcmVxdWVuY3ksIEhDTEssIFBDTEsyIGFuZCBQQ0xLMSBwcmVzY2FsZXJzLgorICAqIEBwYXJhbSAgTm9uZQorICAqIEByZXR2YWwgTm9uZQorICAqLworc3RhdGljIHZvaWQgU2V0U3lzQ2xvY2sodm9pZCkKK3sKKyNpZmRlZiBTWVNDTEtfRlJFUV9IU0UKKyAgU2V0U3lzQ2xvY2tUb0hTRSgpOworI2VsaWYgZGVmaW5lZCBTWVNDTEtfRlJFUV8yNE1IegorICBTZXRTeXNDbG9ja1RvMjQoKTsKKyNlbGlmIGRlZmluZWQgU1lTQ0xLX0ZSRVFfMzZNSHoKKyAgU2V0U3lzQ2xvY2tUbzM2KCk7CisjZWxpZiBkZWZpbmVkIFNZU0NMS19GUkVRXzQ4TUh6CisgIFNldFN5c0Nsb2NrVG80OCgpOworI2VsaWYgZGVmaW5lZCBTWVNDTEtfRlJFUV81Nk1IegorICBTZXRTeXNDbG9ja1RvNTYoKTsgIAorI2VsaWYgZGVmaW5lZCBTWVNDTEtfRlJFUV83Mk1IegorICBTZXRTeXNDbG9ja1RvNzIoKTsKKyNlbmRpZgorIAorIC8qIElmIG5vbmUgb2YgdGhlIGRlZmluZSBhYm92ZSBpcyBlbmFibGVkLCB0aGUgSFNJIGlzIHVzZWQgYXMgU3lzdGVtIGNsb2NrCisgICAgc291cmNlIChkZWZhdWx0IGFmdGVyIHJlc2V0KSAqLyAKK30KKworLyoqCisgICogQGJyaWVmICBTZXR1cCB0aGUgZXh0ZXJuYWwgbWVtb3J5IGNvbnRyb2xsZXIuIENhbGxlZCBpbiBzdGFydHVwX3N0bTMyZjEweC5zIAorICAqICAgICAgICAgIGJlZm9yZSBqdW1wIHRvIF9fbWFpbgorICAqIEBwYXJhbSAgTm9uZQorICAqIEByZXR2YWwgTm9uZQorICAqLyAKKyNpZmRlZiBEQVRBX0lOX0V4dFNSQU0KKy8qKgorICAqIEBicmllZiAgU2V0dXAgdGhlIGV4dGVybmFsIG1lbW9yeSBjb250cm9sbGVyLiAKKyAgKiAgICAgICAgIENhbGxlZCBpbiBzdGFydHVwX3N0bTMyZjEweF94eC5zLy5jIGJlZm9yZSBqdW1wIHRvIG1haW4uCisgICogCSAgICAgIFRoaXMgZnVuY3Rpb24gY29uZmlndXJlcyB0aGUgZXh0ZXJuYWwgU1JBTSBtb3VudGVkIG9uIFNUTTMyMTBFLUVWQUwKKyAgKiAgICAgICAgIGJvYXJkIChTVE0zMiBIaWdoIGRlbnNpdHkgZGV2aWNlcykuIFRoaXMgU1JBTSB3aWxsIGJlIHVzZWQgYXMgcHJvZ3JhbQorICAqICAgICAgICAgZGF0YSBtZW1vcnkgKGluY2x1ZGluZyBoZWFwIGFuZCBzdGFjaykuCisgICogQHBhcmFtICBOb25lCisgICogQHJldHZhbCBOb25lCisgICovIAordm9pZCBTeXN0ZW1Jbml0X0V4dE1lbUN0bCh2b2lkKSAKK3sKKy8qITwgRlNNQyBCYW5rMSBOT1IvU1JBTTMgaXMgdXNlZCBmb3IgdGhlIFNUTTMyMTBFLUVWQUwsIGlmIGFub3RoZXIgQmFuayBpcyAKKyAgcmVxdWlyZWQsIHRoZW4gYWRqdXN0IHRoZSBSZWdpc3RlciBBZGRyZXNzZXMgKi8KKworICAvKiBFbmFibGUgRlNNQyBjbG9jayAqLworICBSQ0MtPkFIQkVOUiA9IDB4MDAwMDAxMTQ7CisgIAorICAvKiBFbmFibGUgR1BJT0QsIEdQSU9FLCBHUElPRiBhbmQgR1BJT0cgY2xvY2tzICovICAKKyAgUkNDLT5BUEIyRU5SID0gMHgwMDAwMDFFMDsKKyAgCisvKiAtLS0tLS0tLS0tLS0tLS0gIFNSQU0gRGF0YSBsaW5lcywgTk9FIGFuZCBOV0UgY29uZmlndXJhdGlvbiAtLS0tLS0tLS0tLS0tLS0qLworLyotLS0tLS0tLS0tLS0tLS0tICBTUkFNIEFkZHJlc3MgbGluZXMgY29uZmlndXJhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qLS0tLS0tLS0tLS0tLS0tLSAgTk9FIGFuZCBOV0UgY29uZmlndXJhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovICAKKy8qLS0tLS0tLS0tLS0tLS0tLSAgTkUzIGNvbmZpZ3VyYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKi0tLS0tLS0tLS0tLS0tLS0gIE5CTDAsIE5CTDEgY29uZmlndXJhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworICAKKyAgR1BJT0QtPkNSTCA9IDB4NDRCQjQ0QkI7ICAKKyAgR1BJT0QtPkNSSCA9IDB4QkJCQkJCQkI7CisKKyAgR1BJT0UtPkNSTCA9IDB4QjQ0NDQ0QkI7ICAKKyAgR1BJT0UtPkNSSCA9IDB4QkJCQkJCQkI7CisKKyAgR1BJT0YtPkNSTCA9IDB4NDRCQkJCQkI7ICAKKyAgR1BJT0YtPkNSSCA9IDB4QkJCQjQ0NDQ7CisKKyAgR1BJT0ctPkNSTCA9IDB4NDRCQkJCQkI7ICAKKyAgR1BJT0ctPkNSSCA9IDB4NDQ0NDRCNDQ7CisgICAKKy8qLS0tLS0tLS0tLS0tLS0tLSAgRlNNQyBDb25maWd1cmF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovICAKKy8qLS0tLS0tLS0tLS0tLS0tLSAgRW5hYmxlIEZTTUMgQmFuazFfU1JBTSBCYW5rIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisgIAorICBGU01DX0JhbmsxLT5CVENSWzRdID0gMHgwMDAwMTAxMTsKKyAgRlNNQ19CYW5rMS0+QlRDUls1XSA9IDB4MDAwMDAyMDA7Cit9CisjZW5kaWYgLyogREFUQV9JTl9FeHRTUkFNICovCisKKyNpZmRlZiBTWVNDTEtfRlJFUV9IU0UKKy8qKgorICAqIEBicmllZiAgU2VsZWN0cyBIU0UgYXMgU3lzdGVtIGNsb2NrIHNvdXJjZSBhbmQgY29uZmlndXJlIEhDTEssIFBDTEsyCisgICogICAgICAgICBhbmQgUENMSzEgcHJlc2NhbGVycy4KKyAgKiBAbm90ZSAgIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIHVzZWQgb25seSBhZnRlciByZXNldC4KKyAgKiBAcGFyYW0gIE5vbmUKKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3N0YXRpYyB2b2lkIFNldFN5c0Nsb2NrVG9IU0Uodm9pZCkKK3sKKyAgX19JTyB1aW50MzJfdCBTdGFydFVwQ291bnRlciA9IDAsIEhTRVN0YXR1cyA9IDA7CisgIAorICAvKiBTWVNDTEssIEhDTEssIFBDTEsyIGFuZCBQQ0xLMSBjb25maWd1cmF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovICAgIAorICAvKiBFbmFibGUgSFNFICovICAgIAorICBSQ0MtPkNSIHw9ICgodWludDMyX3QpUkNDX0NSX0hTRU9OKTsKKyAKKyAgLyogV2FpdCB0aWxsIEhTRSBpcyByZWFkeSBhbmQgaWYgVGltZSBvdXQgaXMgcmVhY2hlZCBleGl0ICovCisgIGRvCisgIHsKKyAgICBIU0VTdGF0dXMgPSBSQ0MtPkNSICYgUkNDX0NSX0hTRVJEWTsKKyAgICBTdGFydFVwQ291bnRlcisrOyAgCisgIH0gd2hpbGUoKEhTRVN0YXR1cyA9PSAwKSAmJiAoU3RhcnRVcENvdW50ZXIgIT0gSFNFX1NUQVJUVVBfVElNRU9VVCkpOworCisgIGlmICgoUkNDLT5DUiAmIFJDQ19DUl9IU0VSRFkpICE9IFJFU0VUKQorICB7CisgICAgSFNFU3RhdHVzID0gKHVpbnQzMl90KTB4MDE7CisgIH0KKyAgZWxzZQorICB7CisgICAgSFNFU3RhdHVzID0gKHVpbnQzMl90KTB4MDA7CisgIH0gIAorCisgIGlmIChIU0VTdGF0dXMgPT0gKHVpbnQzMl90KTB4MDEpCisgIHsKKworI2lmICFkZWZpbmVkIFNUTTMyRjEwWF9MRF9WTCAmJiAhZGVmaW5lZCBTVE0zMkYxMFhfTURfVkwgJiYgIWRlZmluZWQgU1RNMzJGMTBYX0hEX1ZMCisgICAgLyogRW5hYmxlIFByZWZldGNoIEJ1ZmZlciAqLworICAgIEZMQVNILT5BQ1IgfD0gRkxBU0hfQUNSX1BSRlRCRTsKKworICAgIC8qIEZsYXNoIDAgd2FpdCBzdGF0ZSAqLworICAgIEZMQVNILT5BQ1IgJj0gKHVpbnQzMl90KSgodWludDMyX3QpfkZMQVNIX0FDUl9MQVRFTkNZKTsKKworI2lmbmRlZiBTVE0zMkYxMFhfQ0wKKyAgICBGTEFTSC0+QUNSIHw9ICh1aW50MzJfdClGTEFTSF9BQ1JfTEFURU5DWV8wOworI2Vsc2UKKyAgICBpZiAoSFNFX1ZBTFVFIDw9IDI0MDAwMDAwKQorCXsKKyAgICAgIEZMQVNILT5BQ1IgfD0gKHVpbnQzMl90KUZMQVNIX0FDUl9MQVRFTkNZXzA7CisJfQorCWVsc2UKKwl7CisgICAgICBGTEFTSC0+QUNSIHw9ICh1aW50MzJfdClGTEFTSF9BQ1JfTEFURU5DWV8xOworCX0KKyNlbmRpZiAvKiBTVE0zMkYxMFhfQ0wgKi8KKyNlbmRpZgorIAorICAgIC8qIEhDTEsgPSBTWVNDTEsgKi8KKyAgICBSQ0MtPkNGR1IgfD0gKHVpbnQzMl90KVJDQ19DRkdSX0hQUkVfRElWMTsKKyAgICAgIAorICAgIC8qIFBDTEsyID0gSENMSyAqLworICAgIFJDQy0+Q0ZHUiB8PSAodWludDMyX3QpUkNDX0NGR1JfUFBSRTJfRElWMTsKKyAgICAKKyAgICAvKiBQQ0xLMSA9IEhDTEsgKi8KKyAgICBSQ0MtPkNGR1IgfD0gKHVpbnQzMl90KVJDQ19DRkdSX1BQUkUxX0RJVjE7CisgICAgCisgICAgLyogU2VsZWN0IEhTRSBhcyBzeXN0ZW0gY2xvY2sgc291cmNlICovCisgICAgUkNDLT5DRkdSICY9ICh1aW50MzJfdCkoKHVpbnQzMl90KX4oUkNDX0NGR1JfU1cpKTsKKyAgICBSQ0MtPkNGR1IgfD0gKHVpbnQzMl90KVJDQ19DRkdSX1NXX0hTRTsgICAgCisKKyAgICAvKiBXYWl0IHRpbGwgSFNFIGlzIHVzZWQgYXMgc3lzdGVtIGNsb2NrIHNvdXJjZSAqLworICAgIHdoaWxlICgoUkNDLT5DRkdSICYgKHVpbnQzMl90KVJDQ19DRkdSX1NXUykgIT0gKHVpbnQzMl90KTB4MDQpCisgICAgeworICAgIH0KKyAgfQorICBlbHNlCisgIHsgLyogSWYgSFNFIGZhaWxzIHRvIHN0YXJ0LXVwLCB0aGUgYXBwbGljYXRpb24gd2lsbCBoYXZlIHdyb25nIGNsb2NrIAorICAgICAgICAgY29uZmlndXJhdGlvbi4gVXNlciBjYW4gYWRkIGhlcmUgc29tZSBjb2RlIHRvIGRlYWwgd2l0aCB0aGlzIGVycm9yICovCisgIH0gIAorfQorI2VsaWYgZGVmaW5lZCBTWVNDTEtfRlJFUV8yNE1IegorLyoqCisgICogQGJyaWVmICBTZXRzIFN5c3RlbSBjbG9jayBmcmVxdWVuY3kgdG8gMjRNSHogYW5kIGNvbmZpZ3VyZSBIQ0xLLCBQQ0xLMiAKKyAgKiAgICAgICAgIGFuZCBQQ0xLMSBwcmVzY2FsZXJzLgorICAqIEBub3RlICAgVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgdXNlZCBvbmx5IGFmdGVyIHJlc2V0LgorICAqIEBwYXJhbSAgTm9uZQorICAqIEByZXR2YWwgTm9uZQorICAqLworc3RhdGljIHZvaWQgU2V0U3lzQ2xvY2tUbzI0KHZvaWQpCit7CisgIF9fSU8gdWludDMyX3QgU3RhcnRVcENvdW50ZXIgPSAwLCBIU0VTdGF0dXMgPSAwOworICAKKyAgLyogU1lTQ0xLLCBIQ0xLLCBQQ0xLMiBhbmQgUENMSzEgY29uZmlndXJhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyAgICAKKyAgLyogRW5hYmxlIEhTRSAqLyAgICAKKyAgUkNDLT5DUiB8PSAoKHVpbnQzMl90KVJDQ19DUl9IU0VPTik7CisgCisgIC8qIFdhaXQgdGlsbCBIU0UgaXMgcmVhZHkgYW5kIGlmIFRpbWUgb3V0IGlzIHJlYWNoZWQgZXhpdCAqLworICBkbworICB7CisgICAgSFNFU3RhdHVzID0gUkNDLT5DUiAmIFJDQ19DUl9IU0VSRFk7CisgICAgU3RhcnRVcENvdW50ZXIrKzsgIAorICB9IHdoaWxlKChIU0VTdGF0dXMgPT0gMCkgJiYgKFN0YXJ0VXBDb3VudGVyICE9IEhTRV9TVEFSVFVQX1RJTUVPVVQpKTsKKworICBpZiAoKFJDQy0+Q1IgJiBSQ0NfQ1JfSFNFUkRZKSAhPSBSRVNFVCkKKyAgeworICAgIEhTRVN0YXR1cyA9ICh1aW50MzJfdCkweDAxOworICB9CisgIGVsc2UKKyAgeworICAgIEhTRVN0YXR1cyA9ICh1aW50MzJfdCkweDAwOworICB9ICAKKworICBpZiAoSFNFU3RhdHVzID09ICh1aW50MzJfdCkweDAxKQorICB7CisjaWYgIWRlZmluZWQgU1RNMzJGMTBYX0xEX1ZMICYmICFkZWZpbmVkIFNUTTMyRjEwWF9NRF9WTCAmJiAhZGVmaW5lZCBTVE0zMkYxMFhfSERfVkwgCisgICAgLyogRW5hYmxlIFByZWZldGNoIEJ1ZmZlciAqLworICAgIEZMQVNILT5BQ1IgfD0gRkxBU0hfQUNSX1BSRlRCRTsKKworICAgIC8qIEZsYXNoIDAgd2FpdCBzdGF0ZSAqLworICAgIEZMQVNILT5BQ1IgJj0gKHVpbnQzMl90KSgodWludDMyX3QpfkZMQVNIX0FDUl9MQVRFTkNZKTsKKyAgICBGTEFTSC0+QUNSIHw9ICh1aW50MzJfdClGTEFTSF9BQ1JfTEFURU5DWV8wOyAgICAKKyNlbmRpZgorIAorICAgIC8qIEhDTEsgPSBTWVNDTEsgKi8KKyAgICBSQ0MtPkNGR1IgfD0gKHVpbnQzMl90KVJDQ19DRkdSX0hQUkVfRElWMTsKKyAgICAgIAorICAgIC8qIFBDTEsyID0gSENMSyAqLworICAgIFJDQy0+Q0ZHUiB8PSAodWludDMyX3QpUkNDX0NGR1JfUFBSRTJfRElWMTsKKyAgICAKKyAgICAvKiBQQ0xLMSA9IEhDTEsgKi8KKyAgICBSQ0MtPkNGR1IgfD0gKHVpbnQzMl90KVJDQ19DRkdSX1BQUkUxX0RJVjE7CisgICAgCisjaWZkZWYgU1RNMzJGMTBYX0NMCisgICAgLyogQ29uZmlndXJlIFBMTHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyAgICAvKiBQTEwgY29uZmlndXJhdGlvbjogUExMQ0xLID0gUFJFRElWMSAqIDYgPSAyNCBNSHogKi8gCisgICAgUkNDLT5DRkdSICY9ICh1aW50MzJfdCl+KFJDQ19DRkdSX1BMTFhUUFJFIHwgUkNDX0NGR1JfUExMU1JDIHwgUkNDX0NGR1JfUExMTVVMTCk7CisgICAgUkNDLT5DRkdSIHw9ICh1aW50MzJfdCkoUkNDX0NGR1JfUExMWFRQUkVfUFJFRElWMSB8IFJDQ19DRkdSX1BMTFNSQ19QUkVESVYxIHwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkNDX0NGR1JfUExMTVVMTDYpOyAKKworICAgIC8qIFBMTDIgY29uZmlndXJhdGlvbjogUExMMkNMSyA9IChIU0UgLyA1KSAqIDggPSA0MCBNSHogKi8KKyAgICAvKiBQUkVESVYxIGNvbmZpZ3VyYXRpb246IFBSRURJVjFDTEsgPSBQTEwyIC8gMTAgPSA0IE1IeiAqLyAgICAgICAKKyAgICBSQ0MtPkNGR1IyICY9ICh1aW50MzJfdCl+KFJDQ19DRkdSMl9QUkVESVYyIHwgUkNDX0NGR1IyX1BMTDJNVUwgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkNDX0NGR1IyX1BSRURJVjEgfCBSQ0NfQ0ZHUjJfUFJFRElWMVNSQyk7CisgICAgUkNDLT5DRkdSMiB8PSAodWludDMyX3QpKFJDQ19DRkdSMl9QUkVESVYyX0RJVjUgfCBSQ0NfQ0ZHUjJfUExMMk1VTDggfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSQ0NfQ0ZHUjJfUFJFRElWMVNSQ19QTEwyIHwgUkNDX0NGR1IyX1BSRURJVjFfRElWMTApOworICAKKyAgICAvKiBFbmFibGUgUExMMiAqLworICAgIFJDQy0+Q1IgfD0gUkNDX0NSX1BMTDJPTjsKKyAgICAvKiBXYWl0IHRpbGwgUExMMiBpcyByZWFkeSAqLworICAgIHdoaWxlKChSQ0MtPkNSICYgUkNDX0NSX1BMTDJSRFkpID09IDApCisgICAgeworICAgIH0gICAKKyNlbGlmIGRlZmluZWQgKFNUTTMyRjEwWF9MRF9WTCkgfHwgZGVmaW5lZCAoU1RNMzJGMTBYX01EX1ZMKSB8fCBkZWZpbmVkIChTVE0zMkYxMFhfSERfVkwpCisgICAgLyogIFBMTCBjb25maWd1cmF0aW9uOiAgPSAoSFNFIC8gMikgKiA2ID0gMjQgTUh6ICovCisgICAgUkNDLT5DRkdSICY9ICh1aW50MzJfdCkoKHVpbnQzMl90KX4oUkNDX0NGR1JfUExMU1JDIHwgUkNDX0NGR1JfUExMWFRQUkUgfCBSQ0NfQ0ZHUl9QTExNVUxMKSk7CisgICAgUkNDLT5DRkdSIHw9ICh1aW50MzJfdCkoUkNDX0NGR1JfUExMU1JDX1BSRURJVjEgfCBSQ0NfQ0ZHUl9QTExYVFBSRV9QUkVESVYxX0RpdjIgfCBSQ0NfQ0ZHUl9QTExNVUxMNik7CisjZWxzZSAgICAKKyAgICAvKiAgUExMIGNvbmZpZ3VyYXRpb246ICA9IChIU0UgLyAyKSAqIDYgPSAyNCBNSHogKi8KKyAgICBSQ0MtPkNGR1IgJj0gKHVpbnQzMl90KSgodWludDMyX3QpfihSQ0NfQ0ZHUl9QTExTUkMgfCBSQ0NfQ0ZHUl9QTExYVFBSRSB8IFJDQ19DRkdSX1BMTE1VTEwpKTsKKyAgICBSQ0MtPkNGR1IgfD0gKHVpbnQzMl90KShSQ0NfQ0ZHUl9QTExTUkNfSFNFIHwgUkNDX0NGR1JfUExMWFRQUkVfSFNFX0RpdjIgfCBSQ0NfQ0ZHUl9QTExNVUxMNik7CisjZW5kaWYgLyogU1RNMzJGMTBYX0NMICovCisKKyAgICAvKiBFbmFibGUgUExMICovCisgICAgUkNDLT5DUiB8PSBSQ0NfQ1JfUExMT047CisKKyAgICAvKiBXYWl0IHRpbGwgUExMIGlzIHJlYWR5ICovCisgICAgd2hpbGUoKFJDQy0+Q1IgJiBSQ0NfQ1JfUExMUkRZKSA9PSAwKQorICAgIHsKKyAgICB9CisKKyAgICAvKiBTZWxlY3QgUExMIGFzIHN5c3RlbSBjbG9jayBzb3VyY2UgKi8KKyAgICBSQ0MtPkNGR1IgJj0gKHVpbnQzMl90KSgodWludDMyX3QpfihSQ0NfQ0ZHUl9TVykpOworICAgIFJDQy0+Q0ZHUiB8PSAodWludDMyX3QpUkNDX0NGR1JfU1dfUExMOyAgICAKKworICAgIC8qIFdhaXQgdGlsbCBQTEwgaXMgdXNlZCBhcyBzeXN0ZW0gY2xvY2sgc291cmNlICovCisgICAgd2hpbGUgKChSQ0MtPkNGR1IgJiAodWludDMyX3QpUkNDX0NGR1JfU1dTKSAhPSAodWludDMyX3QpMHgwOCkKKyAgICB7CisgICAgfQorICB9CisgIGVsc2UKKyAgeyAvKiBJZiBIU0UgZmFpbHMgdG8gc3RhcnQtdXAsIHRoZSBhcHBsaWNhdGlvbiB3aWxsIGhhdmUgd3JvbmcgY2xvY2sgCisgICAgICAgICBjb25maWd1cmF0aW9uLiBVc2VyIGNhbiBhZGQgaGVyZSBzb21lIGNvZGUgdG8gZGVhbCB3aXRoIHRoaXMgZXJyb3IgKi8KKyAgfSAKK30KKyNlbGlmIGRlZmluZWQgU1lTQ0xLX0ZSRVFfMzZNSHoKKy8qKgorICAqIEBicmllZiAgU2V0cyBTeXN0ZW0gY2xvY2sgZnJlcXVlbmN5IHRvIDM2TUh6IGFuZCBjb25maWd1cmUgSENMSywgUENMSzIgCisgICogICAgICAgICBhbmQgUENMSzEgcHJlc2NhbGVycy4gCisgICogQG5vdGUgICBUaGlzIGZ1bmN0aW9uIHNob3VsZCBiZSB1c2VkIG9ubHkgYWZ0ZXIgcmVzZXQuCisgICogQHBhcmFtICBOb25lCisgICogQHJldHZhbCBOb25lCisgICovCitzdGF0aWMgdm9pZCBTZXRTeXNDbG9ja1RvMzYodm9pZCkKK3sKKyAgX19JTyB1aW50MzJfdCBTdGFydFVwQ291bnRlciA9IDAsIEhTRVN0YXR1cyA9IDA7CisgIAorICAvKiBTWVNDTEssIEhDTEssIFBDTEsyIGFuZCBQQ0xLMSBjb25maWd1cmF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovICAgIAorICAvKiBFbmFibGUgSFNFICovICAgIAorICBSQ0MtPkNSIHw9ICgodWludDMyX3QpUkNDX0NSX0hTRU9OKTsKKyAKKyAgLyogV2FpdCB0aWxsIEhTRSBpcyByZWFkeSBhbmQgaWYgVGltZSBvdXQgaXMgcmVhY2hlZCBleGl0ICovCisgIGRvCisgIHsKKyAgICBIU0VTdGF0dXMgPSBSQ0MtPkNSICYgUkNDX0NSX0hTRVJEWTsKKyAgICBTdGFydFVwQ291bnRlcisrOyAgCisgIH0gd2hpbGUoKEhTRVN0YXR1cyA9PSAwKSAmJiAoU3RhcnRVcENvdW50ZXIgIT0gSFNFX1NUQVJUVVBfVElNRU9VVCkpOworCisgIGlmICgoUkNDLT5DUiAmIFJDQ19DUl9IU0VSRFkpICE9IFJFU0VUKQorICB7CisgICAgSFNFU3RhdHVzID0gKHVpbnQzMl90KTB4MDE7CisgIH0KKyAgZWxzZQorICB7CisgICAgSFNFU3RhdHVzID0gKHVpbnQzMl90KTB4MDA7CisgIH0gIAorCisgIGlmIChIU0VTdGF0dXMgPT0gKHVpbnQzMl90KTB4MDEpCisgIHsKKyAgICAvKiBFbmFibGUgUHJlZmV0Y2ggQnVmZmVyICovCisgICAgRkxBU0gtPkFDUiB8PSBGTEFTSF9BQ1JfUFJGVEJFOworCisgICAgLyogRmxhc2ggMSB3YWl0IHN0YXRlICovCisgICAgRkxBU0gtPkFDUiAmPSAodWludDMyX3QpKCh1aW50MzJfdCl+RkxBU0hfQUNSX0xBVEVOQ1kpOworICAgIEZMQVNILT5BQ1IgfD0gKHVpbnQzMl90KUZMQVNIX0FDUl9MQVRFTkNZXzE7ICAgIAorIAorICAgIC8qIEhDTEsgPSBTWVNDTEsgKi8KKyAgICBSQ0MtPkNGR1IgfD0gKHVpbnQzMl90KVJDQ19DRkdSX0hQUkVfRElWMTsKKyAgICAgIAorICAgIC8qIFBDTEsyID0gSENMSyAqLworICAgIFJDQy0+Q0ZHUiB8PSAodWludDMyX3QpUkNDX0NGR1JfUFBSRTJfRElWMTsKKyAgICAKKyAgICAvKiBQQ0xLMSA9IEhDTEsgKi8KKyAgICBSQ0MtPkNGR1IgfD0gKHVpbnQzMl90KVJDQ19DRkdSX1BQUkUxX0RJVjE7CisgICAgCisjaWZkZWYgU1RNMzJGMTBYX0NMCisgICAgLyogQ29uZmlndXJlIFBMTHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyAgICAKKyAgICAvKiBQTEwgY29uZmlndXJhdGlvbjogUExMQ0xLID0gUFJFRElWMSAqIDkgPSAzNiBNSHogKi8gCisgICAgUkNDLT5DRkdSICY9ICh1aW50MzJfdCl+KFJDQ19DRkdSX1BMTFhUUFJFIHwgUkNDX0NGR1JfUExMU1JDIHwgUkNDX0NGR1JfUExMTVVMTCk7CisgICAgUkNDLT5DRkdSIHw9ICh1aW50MzJfdCkoUkNDX0NGR1JfUExMWFRQUkVfUFJFRElWMSB8IFJDQ19DRkdSX1BMTFNSQ19QUkVESVYxIHwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkNDX0NGR1JfUExMTVVMTDkpOyAKKworCS8qITwgUExMMiBjb25maWd1cmF0aW9uOiBQTEwyQ0xLID0gKEhTRSAvIDUpICogOCA9IDQwIE1IeiAqLworICAgIC8qIFBSRURJVjEgY29uZmlndXJhdGlvbjogUFJFRElWMUNMSyA9IFBMTDIgLyAxMCA9IDQgTUh6ICovCisgICAgICAgIAorICAgIFJDQy0+Q0ZHUjIgJj0gKHVpbnQzMl90KX4oUkNDX0NGR1IyX1BSRURJVjIgfCBSQ0NfQ0ZHUjJfUExMMk1VTCB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSQ0NfQ0ZHUjJfUFJFRElWMSB8IFJDQ19DRkdSMl9QUkVESVYxU1JDKTsKKyAgICBSQ0MtPkNGR1IyIHw9ICh1aW50MzJfdCkoUkNDX0NGR1IyX1BSRURJVjJfRElWNSB8IFJDQ19DRkdSMl9QTEwyTVVMOCB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJDQ19DRkdSMl9QUkVESVYxU1JDX1BMTDIgfCBSQ0NfQ0ZHUjJfUFJFRElWMV9ESVYxMCk7CisgIAorICAgIC8qIEVuYWJsZSBQTEwyICovCisgICAgUkNDLT5DUiB8PSBSQ0NfQ1JfUExMMk9OOworICAgIC8qIFdhaXQgdGlsbCBQTEwyIGlzIHJlYWR5ICovCisgICAgd2hpbGUoKFJDQy0+Q1IgJiBSQ0NfQ1JfUExMMlJEWSkgPT0gMCkKKyAgICB7CisgICAgfQorICAgIAorI2Vsc2UgICAgCisgICAgLyogIFBMTCBjb25maWd1cmF0aW9uOiBQTExDTEsgPSAoSFNFIC8gMikgKiA5ID0gMzYgTUh6ICovCisgICAgUkNDLT5DRkdSICY9ICh1aW50MzJfdCkoKHVpbnQzMl90KX4oUkNDX0NGR1JfUExMU1JDIHwgUkNDX0NGR1JfUExMWFRQUkUgfCBSQ0NfQ0ZHUl9QTExNVUxMKSk7CisgICAgUkNDLT5DRkdSIHw9ICh1aW50MzJfdCkoUkNDX0NGR1JfUExMU1JDX0hTRSB8IFJDQ19DRkdSX1BMTFhUUFJFX0hTRV9EaXYyIHwgUkNDX0NGR1JfUExMTVVMTDkpOworI2VuZGlmIC8qIFNUTTMyRjEwWF9DTCAqLworCisgICAgLyogRW5hYmxlIFBMTCAqLworICAgIFJDQy0+Q1IgfD0gUkNDX0NSX1BMTE9OOworCisgICAgLyogV2FpdCB0aWxsIFBMTCBpcyByZWFkeSAqLworICAgIHdoaWxlKChSQ0MtPkNSICYgUkNDX0NSX1BMTFJEWSkgPT0gMCkKKyAgICB7CisgICAgfQorCisgICAgLyogU2VsZWN0IFBMTCBhcyBzeXN0ZW0gY2xvY2sgc291cmNlICovCisgICAgUkNDLT5DRkdSICY9ICh1aW50MzJfdCkoKHVpbnQzMl90KX4oUkNDX0NGR1JfU1cpKTsKKyAgICBSQ0MtPkNGR1IgfD0gKHVpbnQzMl90KVJDQ19DRkdSX1NXX1BMTDsgICAgCisKKyAgICAvKiBXYWl0IHRpbGwgUExMIGlzIHVzZWQgYXMgc3lzdGVtIGNsb2NrIHNvdXJjZSAqLworICAgIHdoaWxlICgoUkNDLT5DRkdSICYgKHVpbnQzMl90KVJDQ19DRkdSX1NXUykgIT0gKHVpbnQzMl90KTB4MDgpCisgICAgeworICAgIH0KKyAgfQorICBlbHNlCisgIHsgLyogSWYgSFNFIGZhaWxzIHRvIHN0YXJ0LXVwLCB0aGUgYXBwbGljYXRpb24gd2lsbCBoYXZlIHdyb25nIGNsb2NrIAorICAgICAgICAgY29uZmlndXJhdGlvbi4gVXNlciBjYW4gYWRkIGhlcmUgc29tZSBjb2RlIHRvIGRlYWwgd2l0aCB0aGlzIGVycm9yICovCisgIH0gCit9CisjZWxpZiBkZWZpbmVkIFNZU0NMS19GUkVRXzQ4TUh6CisvKioKKyAgKiBAYnJpZWYgIFNldHMgU3lzdGVtIGNsb2NrIGZyZXF1ZW5jeSB0byA0OE1IeiBhbmQgY29uZmlndXJlIEhDTEssIFBDTEsyIAorICAqICAgICAgICAgYW5kIFBDTEsxIHByZXNjYWxlcnMuIAorICAqIEBub3RlICAgVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgdXNlZCBvbmx5IGFmdGVyIHJlc2V0LgorICAqIEBwYXJhbSAgTm9uZQorICAqIEByZXR2YWwgTm9uZQorICAqLworc3RhdGljIHZvaWQgU2V0U3lzQ2xvY2tUbzQ4KHZvaWQpCit7CisgIF9fSU8gdWludDMyX3QgU3RhcnRVcENvdW50ZXIgPSAwLCBIU0VTdGF0dXMgPSAwOworICAKKyAgLyogU1lTQ0xLLCBIQ0xLLCBQQ0xLMiBhbmQgUENMSzEgY29uZmlndXJhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyAgICAKKyAgLyogRW5hYmxlIEhTRSAqLyAgICAKKyAgUkNDLT5DUiB8PSAoKHVpbnQzMl90KVJDQ19DUl9IU0VPTik7CisgCisgIC8qIFdhaXQgdGlsbCBIU0UgaXMgcmVhZHkgYW5kIGlmIFRpbWUgb3V0IGlzIHJlYWNoZWQgZXhpdCAqLworICBkbworICB7CisgICAgSFNFU3RhdHVzID0gUkNDLT5DUiAmIFJDQ19DUl9IU0VSRFk7CisgICAgU3RhcnRVcENvdW50ZXIrKzsgIAorICB9IHdoaWxlKChIU0VTdGF0dXMgPT0gMCkgJiYgKFN0YXJ0VXBDb3VudGVyICE9IEhTRV9TVEFSVFVQX1RJTUVPVVQpKTsKKworICBpZiAoKFJDQy0+Q1IgJiBSQ0NfQ1JfSFNFUkRZKSAhPSBSRVNFVCkKKyAgeworICAgIEhTRVN0YXR1cyA9ICh1aW50MzJfdCkweDAxOworICB9CisgIGVsc2UKKyAgeworICAgIEhTRVN0YXR1cyA9ICh1aW50MzJfdCkweDAwOworICB9ICAKKworICBpZiAoSFNFU3RhdHVzID09ICh1aW50MzJfdCkweDAxKQorICB7CisgICAgLyogRW5hYmxlIFByZWZldGNoIEJ1ZmZlciAqLworICAgIEZMQVNILT5BQ1IgfD0gRkxBU0hfQUNSX1BSRlRCRTsKKworICAgIC8qIEZsYXNoIDEgd2FpdCBzdGF0ZSAqLworICAgIEZMQVNILT5BQ1IgJj0gKHVpbnQzMl90KSgodWludDMyX3QpfkZMQVNIX0FDUl9MQVRFTkNZKTsKKyAgICBGTEFTSC0+QUNSIHw9ICh1aW50MzJfdClGTEFTSF9BQ1JfTEFURU5DWV8xOyAgICAKKyAKKyAgICAvKiBIQ0xLID0gU1lTQ0xLICovCisgICAgUkNDLT5DRkdSIHw9ICh1aW50MzJfdClSQ0NfQ0ZHUl9IUFJFX0RJVjE7CisgICAgICAKKyAgICAvKiBQQ0xLMiA9IEhDTEsgKi8KKyAgICBSQ0MtPkNGR1IgfD0gKHVpbnQzMl90KVJDQ19DRkdSX1BQUkUyX0RJVjE7CisgICAgCisgICAgLyogUENMSzEgPSBIQ0xLICovCisgICAgUkNDLT5DRkdSIHw9ICh1aW50MzJfdClSQ0NfQ0ZHUl9QUFJFMV9ESVYyOworICAgIAorI2lmZGVmIFNUTTMyRjEwWF9DTAorICAgIC8qIENvbmZpZ3VyZSBQTExzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisgICAgLyogUExMMiBjb25maWd1cmF0aW9uOiBQTEwyQ0xLID0gKEhTRSAvIDUpICogOCA9IDQwIE1IeiAqLworICAgIC8qIFBSRURJVjEgY29uZmlndXJhdGlvbjogUFJFRElWMUNMSyA9IFBMTDIgLyA1ID0gOCBNSHogKi8KKyAgICAgICAgCisgICAgUkNDLT5DRkdSMiAmPSAodWludDMyX3QpfihSQ0NfQ0ZHUjJfUFJFRElWMiB8IFJDQ19DRkdSMl9QTEwyTVVMIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJDQ19DRkdSMl9QUkVESVYxIHwgUkNDX0NGR1IyX1BSRURJVjFTUkMpOworICAgIFJDQy0+Q0ZHUjIgfD0gKHVpbnQzMl90KShSQ0NfQ0ZHUjJfUFJFRElWMl9ESVY1IHwgUkNDX0NGR1IyX1BMTDJNVUw4IHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkNDX0NGR1IyX1BSRURJVjFTUkNfUExMMiB8IFJDQ19DRkdSMl9QUkVESVYxX0RJVjUpOworICAKKyAgICAvKiBFbmFibGUgUExMMiAqLworICAgIFJDQy0+Q1IgfD0gUkNDX0NSX1BMTDJPTjsKKyAgICAvKiBXYWl0IHRpbGwgUExMMiBpcyByZWFkeSAqLworICAgIHdoaWxlKChSQ0MtPkNSICYgUkNDX0NSX1BMTDJSRFkpID09IDApCisgICAgeworICAgIH0KKyAgICAKKyAgIAorICAgIC8qIFBMTCBjb25maWd1cmF0aW9uOiBQTExDTEsgPSBQUkVESVYxICogNiA9IDQ4IE1IeiAqLyAKKyAgICBSQ0MtPkNGR1IgJj0gKHVpbnQzMl90KX4oUkNDX0NGR1JfUExMWFRQUkUgfCBSQ0NfQ0ZHUl9QTExTUkMgfCBSQ0NfQ0ZHUl9QTExNVUxMKTsKKyAgICBSQ0MtPkNGR1IgfD0gKHVpbnQzMl90KShSQ0NfQ0ZHUl9QTExYVFBSRV9QUkVESVYxIHwgUkNDX0NGR1JfUExMU1JDX1BSRURJVjEgfCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBSQ0NfQ0ZHUl9QTExNVUxMNik7IAorI2Vsc2UgICAgCisgICAgLyogIFBMTCBjb25maWd1cmF0aW9uOiBQTExDTEsgPSBIU0UgKiA2ID0gNDggTUh6ICovCisgICAgUkNDLT5DRkdSICY9ICh1aW50MzJfdCkoKHVpbnQzMl90KX4oUkNDX0NGR1JfUExMU1JDIHwgUkNDX0NGR1JfUExMWFRQUkUgfCBSQ0NfQ0ZHUl9QTExNVUxMKSk7CisgICAgUkNDLT5DRkdSIHw9ICh1aW50MzJfdCkoUkNDX0NGR1JfUExMU1JDX0hTRSB8IFJDQ19DRkdSX1BMTE1VTEw2KTsKKyNlbmRpZiAvKiBTVE0zMkYxMFhfQ0wgKi8KKworICAgIC8qIEVuYWJsZSBQTEwgKi8KKyAgICBSQ0MtPkNSIHw9IFJDQ19DUl9QTExPTjsKKworICAgIC8qIFdhaXQgdGlsbCBQTEwgaXMgcmVhZHkgKi8KKyAgICB3aGlsZSgoUkNDLT5DUiAmIFJDQ19DUl9QTExSRFkpID09IDApCisgICAgeworICAgIH0KKworICAgIC8qIFNlbGVjdCBQTEwgYXMgc3lzdGVtIGNsb2NrIHNvdXJjZSAqLworICAgIFJDQy0+Q0ZHUiAmPSAodWludDMyX3QpKCh1aW50MzJfdCl+KFJDQ19DRkdSX1NXKSk7CisgICAgUkNDLT5DRkdSIHw9ICh1aW50MzJfdClSQ0NfQ0ZHUl9TV19QTEw7ICAgIAorCisgICAgLyogV2FpdCB0aWxsIFBMTCBpcyB1c2VkIGFzIHN5c3RlbSBjbG9jayBzb3VyY2UgKi8KKyAgICB3aGlsZSAoKFJDQy0+Q0ZHUiAmICh1aW50MzJfdClSQ0NfQ0ZHUl9TV1MpICE9ICh1aW50MzJfdCkweDA4KQorICAgIHsKKyAgICB9CisgIH0KKyAgZWxzZQorICB7IC8qIElmIEhTRSBmYWlscyB0byBzdGFydC11cCwgdGhlIGFwcGxpY2F0aW9uIHdpbGwgaGF2ZSB3cm9uZyBjbG9jayAKKyAgICAgICAgIGNvbmZpZ3VyYXRpb24uIFVzZXIgY2FuIGFkZCBoZXJlIHNvbWUgY29kZSB0byBkZWFsIHdpdGggdGhpcyBlcnJvciAqLworICB9IAorfQorCisjZWxpZiBkZWZpbmVkIFNZU0NMS19GUkVRXzU2TUh6CisvKioKKyAgKiBAYnJpZWYgIFNldHMgU3lzdGVtIGNsb2NrIGZyZXF1ZW5jeSB0byA1Nk1IeiBhbmQgY29uZmlndXJlIEhDTEssIFBDTEsyIAorICAqICAgICAgICAgYW5kIFBDTEsxIHByZXNjYWxlcnMuIAorICAqIEBub3RlICAgVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgdXNlZCBvbmx5IGFmdGVyIHJlc2V0LgorICAqIEBwYXJhbSAgTm9uZQorICAqIEByZXR2YWwgTm9uZQorICAqLworc3RhdGljIHZvaWQgU2V0U3lzQ2xvY2tUbzU2KHZvaWQpCit7CisgIF9fSU8gdWludDMyX3QgU3RhcnRVcENvdW50ZXIgPSAwLCBIU0VTdGF0dXMgPSAwOworICAKKyAgLyogU1lTQ0xLLCBIQ0xLLCBQQ0xLMiBhbmQgUENMSzEgY29uZmlndXJhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyAgIAorICAvKiBFbmFibGUgSFNFICovICAgIAorICBSQ0MtPkNSIHw9ICgodWludDMyX3QpUkNDX0NSX0hTRU9OKTsKKyAKKyAgLyogV2FpdCB0aWxsIEhTRSBpcyByZWFkeSBhbmQgaWYgVGltZSBvdXQgaXMgcmVhY2hlZCBleGl0ICovCisgIGRvCisgIHsKKyAgICBIU0VTdGF0dXMgPSBSQ0MtPkNSICYgUkNDX0NSX0hTRVJEWTsKKyAgICBTdGFydFVwQ291bnRlcisrOyAgCisgIH0gd2hpbGUoKEhTRVN0YXR1cyA9PSAwKSAmJiAoU3RhcnRVcENvdW50ZXIgIT0gSFNFX1NUQVJUVVBfVElNRU9VVCkpOworCisgIGlmICgoUkNDLT5DUiAmIFJDQ19DUl9IU0VSRFkpICE9IFJFU0VUKQorICB7CisgICAgSFNFU3RhdHVzID0gKHVpbnQzMl90KTB4MDE7CisgIH0KKyAgZWxzZQorICB7CisgICAgSFNFU3RhdHVzID0gKHVpbnQzMl90KTB4MDA7CisgIH0gIAorCisgIGlmIChIU0VTdGF0dXMgPT0gKHVpbnQzMl90KTB4MDEpCisgIHsKKyAgICAvKiBFbmFibGUgUHJlZmV0Y2ggQnVmZmVyICovCisgICAgRkxBU0gtPkFDUiB8PSBGTEFTSF9BQ1JfUFJGVEJFOworCisgICAgLyogRmxhc2ggMiB3YWl0IHN0YXRlICovCisgICAgRkxBU0gtPkFDUiAmPSAodWludDMyX3QpKCh1aW50MzJfdCl+RkxBU0hfQUNSX0xBVEVOQ1kpOworICAgIEZMQVNILT5BQ1IgfD0gKHVpbnQzMl90KUZMQVNIX0FDUl9MQVRFTkNZXzI7ICAgIAorIAorICAgIC8qIEhDTEsgPSBTWVNDTEsgKi8KKyAgICBSQ0MtPkNGR1IgfD0gKHVpbnQzMl90KVJDQ19DRkdSX0hQUkVfRElWMTsKKyAgICAgIAorICAgIC8qIFBDTEsyID0gSENMSyAqLworICAgIFJDQy0+Q0ZHUiB8PSAodWludDMyX3QpUkNDX0NGR1JfUFBSRTJfRElWMTsKKyAgICAKKyAgICAvKiBQQ0xLMSA9IEhDTEsgKi8KKyAgICBSQ0MtPkNGR1IgfD0gKHVpbnQzMl90KVJDQ19DRkdSX1BQUkUxX0RJVjI7CisKKyNpZmRlZiBTVE0zMkYxMFhfQ0wKKyAgICAvKiBDb25maWd1cmUgUExMcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworICAgIC8qIFBMTDIgY29uZmlndXJhdGlvbjogUExMMkNMSyA9IChIU0UgLyA1KSAqIDggPSA0MCBNSHogKi8KKyAgICAvKiBQUkVESVYxIGNvbmZpZ3VyYXRpb246IFBSRURJVjFDTEsgPSBQTEwyIC8gNSA9IDggTUh6ICovCisgICAgICAgIAorICAgIFJDQy0+Q0ZHUjIgJj0gKHVpbnQzMl90KX4oUkNDX0NGR1IyX1BSRURJVjIgfCBSQ0NfQ0ZHUjJfUExMMk1VTCB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSQ0NfQ0ZHUjJfUFJFRElWMSB8IFJDQ19DRkdSMl9QUkVESVYxU1JDKTsKKyAgICBSQ0MtPkNGR1IyIHw9ICh1aW50MzJfdCkoUkNDX0NGR1IyX1BSRURJVjJfRElWNSB8IFJDQ19DRkdSMl9QTEwyTVVMOCB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJDQ19DRkdSMl9QUkVESVYxU1JDX1BMTDIgfCBSQ0NfQ0ZHUjJfUFJFRElWMV9ESVY1KTsKKyAgCisgICAgLyogRW5hYmxlIFBMTDIgKi8KKyAgICBSQ0MtPkNSIHw9IFJDQ19DUl9QTEwyT047CisgICAgLyogV2FpdCB0aWxsIFBMTDIgaXMgcmVhZHkgKi8KKyAgICB3aGlsZSgoUkNDLT5DUiAmIFJDQ19DUl9QTEwyUkRZKSA9PSAwKQorICAgIHsKKyAgICB9CisgICAgCisgICAKKyAgICAvKiBQTEwgY29uZmlndXJhdGlvbjogUExMQ0xLID0gUFJFRElWMSAqIDcgPSA1NiBNSHogKi8gCisgICAgUkNDLT5DRkdSICY9ICh1aW50MzJfdCl+KFJDQ19DRkdSX1BMTFhUUFJFIHwgUkNDX0NGR1JfUExMU1JDIHwgUkNDX0NGR1JfUExMTVVMTCk7CisgICAgUkNDLT5DRkdSIHw9ICh1aW50MzJfdCkoUkNDX0NGR1JfUExMWFRQUkVfUFJFRElWMSB8IFJDQ19DRkdSX1BMTFNSQ19QUkVESVYxIHwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkNDX0NGR1JfUExMTVVMTDcpOyAKKyNlbHNlICAgICAKKyAgICAvKiBQTEwgY29uZmlndXJhdGlvbjogUExMQ0xLID0gSFNFICogNyA9IDU2IE1IeiAqLworICAgIFJDQy0+Q0ZHUiAmPSAodWludDMyX3QpKCh1aW50MzJfdCl+KFJDQ19DRkdSX1BMTFNSQyB8IFJDQ19DRkdSX1BMTFhUUFJFIHwgUkNDX0NGR1JfUExMTVVMTCkpOworICAgIFJDQy0+Q0ZHUiB8PSAodWludDMyX3QpKFJDQ19DRkdSX1BMTFNSQ19IU0UgfCBSQ0NfQ0ZHUl9QTExNVUxMNyk7CisKKyNlbmRpZiAvKiBTVE0zMkYxMFhfQ0wgKi8KKworICAgIC8qIEVuYWJsZSBQTEwgKi8KKyAgICBSQ0MtPkNSIHw9IFJDQ19DUl9QTExPTjsKKworICAgIC8qIFdhaXQgdGlsbCBQTEwgaXMgcmVhZHkgKi8KKyAgICB3aGlsZSgoUkNDLT5DUiAmIFJDQ19DUl9QTExSRFkpID09IDApCisgICAgeworICAgIH0KKworICAgIC8qIFNlbGVjdCBQTEwgYXMgc3lzdGVtIGNsb2NrIHNvdXJjZSAqLworICAgIFJDQy0+Q0ZHUiAmPSAodWludDMyX3QpKCh1aW50MzJfdCl+KFJDQ19DRkdSX1NXKSk7CisgICAgUkNDLT5DRkdSIHw9ICh1aW50MzJfdClSQ0NfQ0ZHUl9TV19QTEw7ICAgIAorCisgICAgLyogV2FpdCB0aWxsIFBMTCBpcyB1c2VkIGFzIHN5c3RlbSBjbG9jayBzb3VyY2UgKi8KKyAgICB3aGlsZSAoKFJDQy0+Q0ZHUiAmICh1aW50MzJfdClSQ0NfQ0ZHUl9TV1MpICE9ICh1aW50MzJfdCkweDA4KQorICAgIHsKKyAgICB9CisgIH0KKyAgZWxzZQorICB7IC8qIElmIEhTRSBmYWlscyB0byBzdGFydC11cCwgdGhlIGFwcGxpY2F0aW9uIHdpbGwgaGF2ZSB3cm9uZyBjbG9jayAKKyAgICAgICAgIGNvbmZpZ3VyYXRpb24uIFVzZXIgY2FuIGFkZCBoZXJlIHNvbWUgY29kZSB0byBkZWFsIHdpdGggdGhpcyBlcnJvciAqLworICB9IAorfQorCisjZWxpZiBkZWZpbmVkIFNZU0NMS19GUkVRXzcyTUh6CisvKioKKyAgKiBAYnJpZWYgIFNldHMgU3lzdGVtIGNsb2NrIGZyZXF1ZW5jeSB0byA3Mk1IeiBhbmQgY29uZmlndXJlIEhDTEssIFBDTEsyIAorICAqICAgICAgICAgYW5kIFBDTEsxIHByZXNjYWxlcnMuIAorICAqIEBub3RlICAgVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgdXNlZCBvbmx5IGFmdGVyIHJlc2V0LgorICAqIEBwYXJhbSAgTm9uZQorICAqIEByZXR2YWwgTm9uZQorICAqLworc3RhdGljIHZvaWQgU2V0U3lzQ2xvY2tUbzcyKHZvaWQpCit7CisgIF9fSU8gdWludDMyX3QgU3RhcnRVcENvdW50ZXIgPSAwLCBIU0VTdGF0dXMgPSAwOworICAKKyAgLyogU1lTQ0xLLCBIQ0xLLCBQQ0xLMiBhbmQgUENMSzEgY29uZmlndXJhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyAgICAKKyAgLyogRW5hYmxlIEhTRSAqLyAgICAKKyAgUkNDLT5DUiB8PSAoKHVpbnQzMl90KVJDQ19DUl9IU0VPTik7CisgCisgIC8qIFdhaXQgdGlsbCBIU0UgaXMgcmVhZHkgYW5kIGlmIFRpbWUgb3V0IGlzIHJlYWNoZWQgZXhpdCAqLworICBkbworICB7CisgICAgSFNFU3RhdHVzID0gUkNDLT5DUiAmIFJDQ19DUl9IU0VSRFk7CisgICAgU3RhcnRVcENvdW50ZXIrKzsgIAorICB9IHdoaWxlKChIU0VTdGF0dXMgPT0gMCkgJiYgKFN0YXJ0VXBDb3VudGVyICE9IEhTRV9TVEFSVFVQX1RJTUVPVVQpKTsKKworICBpZiAoKFJDQy0+Q1IgJiBSQ0NfQ1JfSFNFUkRZKSAhPSBSRVNFVCkKKyAgeworICAgIEhTRVN0YXR1cyA9ICh1aW50MzJfdCkweDAxOworICB9CisgIGVsc2UKKyAgeworICAgIEhTRVN0YXR1cyA9ICh1aW50MzJfdCkweDAwOworICB9ICAKKworICBpZiAoSFNFU3RhdHVzID09ICh1aW50MzJfdCkweDAxKQorICB7CisgICAgLyogRW5hYmxlIFByZWZldGNoIEJ1ZmZlciAqLworICAgIEZMQVNILT5BQ1IgfD0gRkxBU0hfQUNSX1BSRlRCRTsKKworICAgIC8qIEZsYXNoIDIgd2FpdCBzdGF0ZSAqLworICAgIEZMQVNILT5BQ1IgJj0gKHVpbnQzMl90KSgodWludDMyX3QpfkZMQVNIX0FDUl9MQVRFTkNZKTsKKyAgICBGTEFTSC0+QUNSIHw9ICh1aW50MzJfdClGTEFTSF9BQ1JfTEFURU5DWV8yOyAgICAKKworIAorICAgIC8qIEhDTEsgPSBTWVNDTEsgKi8KKyAgICBSQ0MtPkNGR1IgfD0gKHVpbnQzMl90KVJDQ19DRkdSX0hQUkVfRElWMTsKKyAgICAgIAorICAgIC8qIFBDTEsyID0gSENMSyAqLworICAgIFJDQy0+Q0ZHUiB8PSAodWludDMyX3QpUkNDX0NGR1JfUFBSRTJfRElWMTsKKyAgICAKKyAgICAvKiBQQ0xLMSA9IEhDTEsgKi8KKyAgICBSQ0MtPkNGR1IgfD0gKHVpbnQzMl90KVJDQ19DRkdSX1BQUkUxX0RJVjI7CisKKyNpZmRlZiBTVE0zMkYxMFhfQ0wKKyAgICAvKiBDb25maWd1cmUgUExMcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworICAgIC8qIFBMTDIgY29uZmlndXJhdGlvbjogUExMMkNMSyA9IChIU0UgLyA1KSAqIDggPSA0MCBNSHogKi8KKyAgICAvKiBQUkVESVYxIGNvbmZpZ3VyYXRpb246IFBSRURJVjFDTEsgPSBQTEwyIC8gNSA9IDggTUh6ICovCisgICAgICAgIAorICAgIFJDQy0+Q0ZHUjIgJj0gKHVpbnQzMl90KX4oUkNDX0NGR1IyX1BSRURJVjIgfCBSQ0NfQ0ZHUjJfUExMMk1VTCB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSQ0NfQ0ZHUjJfUFJFRElWMSB8IFJDQ19DRkdSMl9QUkVESVYxU1JDKTsKKyAgICBSQ0MtPkNGR1IyIHw9ICh1aW50MzJfdCkoUkNDX0NGR1IyX1BSRURJVjJfRElWNSB8IFJDQ19DRkdSMl9QTEwyTVVMOCB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJDQ19DRkdSMl9QUkVESVYxU1JDX1BMTDIgfCBSQ0NfQ0ZHUjJfUFJFRElWMV9ESVY1KTsKKyAgCisgICAgLyogRW5hYmxlIFBMTDIgKi8KKyAgICBSQ0MtPkNSIHw9IFJDQ19DUl9QTEwyT047CisgICAgLyogV2FpdCB0aWxsIFBMTDIgaXMgcmVhZHkgKi8KKyAgICB3aGlsZSgoUkNDLT5DUiAmIFJDQ19DUl9QTEwyUkRZKSA9PSAwKQorICAgIHsKKyAgICB9CisgICAgCisgICAKKyAgICAvKiBQTEwgY29uZmlndXJhdGlvbjogUExMQ0xLID0gUFJFRElWMSAqIDkgPSA3MiBNSHogKi8gCisgICAgUkNDLT5DRkdSICY9ICh1aW50MzJfdCl+KFJDQ19DRkdSX1BMTFhUUFJFIHwgUkNDX0NGR1JfUExMU1JDIHwgUkNDX0NGR1JfUExMTVVMTCk7CisgICAgUkNDLT5DRkdSIHw9ICh1aW50MzJfdCkoUkNDX0NGR1JfUExMWFRQUkVfUFJFRElWMSB8IFJDQ19DRkdSX1BMTFNSQ19QUkVESVYxIHwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkNDX0NGR1JfUExMTVVMTDkpOyAKKyNlbHNlICAgIAorICAgIC8qICBQTEwgY29uZmlndXJhdGlvbjogUExMQ0xLID0gSFNFICogOSA9IDcyIE1IeiAqLworICAgIFJDQy0+Q0ZHUiAmPSAodWludDMyX3QpKCh1aW50MzJfdCl+KFJDQ19DRkdSX1BMTFNSQyB8IFJDQ19DRkdSX1BMTFhUUFJFIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSQ0NfQ0ZHUl9QTExNVUxMKSk7CisgICAgUkNDLT5DRkdSIHw9ICh1aW50MzJfdCkoUkNDX0NGR1JfUExMU1JDX0hTRSB8IFJDQ19DRkdSX1BMTE1VTEw5KTsKKyNlbmRpZiAvKiBTVE0zMkYxMFhfQ0wgKi8KKworICAgIC8qIEVuYWJsZSBQTEwgKi8KKyAgICBSQ0MtPkNSIHw9IFJDQ19DUl9QTExPTjsKKworICAgIC8qIFdhaXQgdGlsbCBQTEwgaXMgcmVhZHkgKi8KKyAgICB3aGlsZSgoUkNDLT5DUiAmIFJDQ19DUl9QTExSRFkpID09IDApCisgICAgeworICAgIH0KKyAgICAKKyAgICAvKiBTZWxlY3QgUExMIGFzIHN5c3RlbSBjbG9jayBzb3VyY2UgKi8KKyAgICBSQ0MtPkNGR1IgJj0gKHVpbnQzMl90KSgodWludDMyX3QpfihSQ0NfQ0ZHUl9TVykpOworICAgIFJDQy0+Q0ZHUiB8PSAodWludDMyX3QpUkNDX0NGR1JfU1dfUExMOyAgICAKKworICAgIC8qIFdhaXQgdGlsbCBQTEwgaXMgdXNlZCBhcyBzeXN0ZW0gY2xvY2sgc291cmNlICovCisgICAgd2hpbGUgKChSQ0MtPkNGR1IgJiAodWludDMyX3QpUkNDX0NGR1JfU1dTKSAhPSAodWludDMyX3QpMHgwOCkKKyAgICB7CisgICAgfQorICB9CisgIGVsc2UKKyAgeyAvKiBJZiBIU0UgZmFpbHMgdG8gc3RhcnQtdXAsIHRoZSBhcHBsaWNhdGlvbiB3aWxsIGhhdmUgd3JvbmcgY2xvY2sgCisgICAgICAgICBjb25maWd1cmF0aW9uLiBVc2VyIGNhbiBhZGQgaGVyZSBzb21lIGNvZGUgdG8gZGVhbCB3aXRoIHRoaXMgZXJyb3IgKi8KKyAgfQorfQorI2VuZGlmCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKgorICAqIEB9CisgICovCisgIAorLyoqCisgICogQH0KKyAgKi8gICAgCisvKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIDIwMTEgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvc3RfZndfbGliL3N5c3RlbV9zdG0zMmYxMHguaCBiL3N0X2Z3X2xpYi9zeXN0ZW1fc3RtMzJmMTB4LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTRiYzFhYgotLS0gL2Rldi9udWxsCisrKyBiL3N0X2Z3X2xpYi9zeXN0ZW1fc3RtMzJmMTB4LmgKQEAgLTAsMCArMSw5OCBAQAorLyoqCisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqIEBmaWxlICAgIHN5c3RlbV9zdG0zMmYxMHguaAorICAqIEBhdXRob3IgIE1DRCBBcHBsaWNhdGlvbiBUZWFtCisgICogQHZlcnNpb24gVjMuNS4wCisgICogQGRhdGUgICAgMTEtTWFyY2gtMjAxMQorICAqIEBicmllZiAgIENNU0lTIENvcnRleC1NMyBEZXZpY2UgUGVyaXBoZXJhbCBBY2Nlc3MgTGF5ZXIgU3lzdGVtIEhlYWRlciBGaWxlLgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKiBAYXR0ZW50aW9uCisgICoKKyAgKiBUSEUgUFJFU0VOVCBGSVJNV0FSRSBXSElDSCBJUyBGT1IgR1VJREFOQ0UgT05MWSBBSU1TIEFUIFBST1ZJRElORyBDVVNUT01FUlMKKyAgKiBXSVRIIENPRElORyBJTkZPUk1BVElPTiBSRUdBUkRJTkcgVEhFSVIgUFJPRFVDVFMgSU4gT1JERVIgRk9SIFRIRU0gVE8gU0FWRQorICAqIFRJTUUuIEFTIEEgUkVTVUxULCBTVE1JQ1JPRUxFQ1RST05JQ1MgU0hBTEwgTk9UIEJFIEhFTEQgTElBQkxFIEZPUiBBTlkKKyAgKiBESVJFQ1QsIElORElSRUNUIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBXSVRIIFJFU1BFQ1QgVE8gQU5ZIENMQUlNUyBBUklTSU5HCisgICogRlJPTSBUSEUgQ09OVEVOVCBPRiBTVUNIIEZJUk1XQVJFIEFORC9PUiBUSEUgVVNFIE1BREUgQlkgQ1VTVE9NRVJTIE9GIFRIRQorICAqIENPRElORyBJTkZPUk1BVElPTiBDT05UQUlORUQgSEVSRUlOIElOIENPTk5FQ1RJT04gV0lUSCBUSEVJUiBQUk9EVUNUUy4KKyAgKgorICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDT1BZUklHSFQgMjAxMSBTVE1pY3JvZWxlY3Ryb25pY3M8L2NlbnRlcj48L2gyPgorICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKi8KKworLyoqIEBhZGR0b2dyb3VwIENNU0lTCisgICogQHsKKyAgKi8KKworLyoqIEBhZGR0b2dyb3VwIHN0bTMyZjEweF9zeXN0ZW0KKyAgKiBAeworICAqLyAgCisgIAorLyoqCisgICogQGJyaWVmIERlZmluZSB0byBwcmV2ZW50IHJlY3Vyc2l2ZSBpbmNsdXNpb24KKyAgKi8KKyNpZm5kZWYgX19TWVNURU1fU1RNMzJGMTBYX0gKKyNkZWZpbmUgX19TWVNURU1fU1RNMzJGMTBYX0gKKworI2lmZGVmIF9fY3BsdXNwbHVzCisgZXh0ZXJuICJDIiB7CisjZW5kaWYgCisKKy8qKiBAYWRkdG9ncm91cCBTVE0zMkYxMHhfU3lzdGVtX0luY2x1ZGVzCisgICogQHsKKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworCisvKiogQGFkZHRvZ3JvdXAgU1RNMzJGMTB4X1N5c3RlbV9FeHBvcnRlZF90eXBlcworICAqIEB7CisgICovCisKK2V4dGVybiB1aW50MzJfdCBTeXN0ZW1Db3JlQ2xvY2s7ICAgICAgICAgIC8qITwgU3lzdGVtIENsb2NrIEZyZXF1ZW5jeSAoQ29yZSBDbG9jaykgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBhZGR0b2dyb3VwIFNUTTMyRjEweF9TeXN0ZW1fRXhwb3J0ZWRfQ29uc3RhbnRzCisgICogQHsKKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBhZGR0b2dyb3VwIFNUTTMyRjEweF9TeXN0ZW1fRXhwb3J0ZWRfTWFjcm9zCisgICogQHsKKyAgKi8KKworLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBhZGR0b2dyb3VwIFNUTTMyRjEweF9TeXN0ZW1fRXhwb3J0ZWRfRnVuY3Rpb25zCisgICogQHsKKyAgKi8KKyAgCitleHRlcm4gdm9pZCBTeXN0ZW1Jbml0KHZvaWQpOworZXh0ZXJuIHZvaWQgU3lzdGVtQ29yZUNsb2NrVXBkYXRlKHZvaWQpOworLyoqCisgICogQH0KKyAgKi8KKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8qX19TWVNURU1fU1RNMzJGMTBYX0ggKi8KKworLyoqCisgICogQH0KKyAgKi8KKyAgCisvKioKKyAgKiBAfQorICAqLyAgCisvKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIDIwMTEgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvc3Vwd2lzZG9tL21haW4uYyBiL3N1cHdpc2RvbS9tYWluLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzVmZGM5NwotLS0gL2Rldi9udWxsCisrKyBiL3N1cHdpc2RvbS9tYWluLmMKQEAgLTAsMCArMSw1MyBAQAorLy/Qwr+qxtXLrr/Ys8zQ8gorI2luY2x1ZGUgInN0ZGlvLmgiCisjaW5jbHVkZSAic3RkbGliLmgiCisjaW5jbHVkZSAic3RyaW5nLmgiCisjaW5jbHVkZSAic3BfY29uZmlnLmgiCisjaW5jbHVkZSAic3BfZGlzcGxheS5oIgorI2luY2x1ZGUgInNwX2RhdGEuaCIKKyNpbmNsdWRlICJzcF91dGlsLmgiCisjaW5jbHVkZSAic3BfY29uc3VtZS5oIgorI2luY2x1ZGUgInNwX2NvbW11bmljYXRlLmgiCisKK3N0YXRpYyBzcF9wb3NfdCBQT1M7CisKK2ludCBtYWluKHZvaWQpCit7CisgIHVpbnQzMiB0aWNrID0gMDsKKyAgdWludDMyIGxhc3R0aWNrID0gMDsKKyAgc3BfY2FyZHdvcmtzdGF0ZV90IGNhcmRXb3JrU3RhdGU7CisgIE1FTUNMRUFSKCZQT1MsIHNpemVvZihQT1MpKTsKKyAgTUVNQ0xFQVIoJmNhcmRXb3JrU3RhdGUsIHNpemVvZihjYXJkV29ya1N0YXRlKSk7CisgIHNwX2luaXQoKTsKKyAgc3Bfa2V5X2luaXQoKTsKKyAgRGVsYXlfbXMoREVMQVlfVElNRTFzKTsKKyAgc3BfbG9hZF9jb25maWcoJlBPUyk7CisKKyAgc2hvd19ob21lKCZQT1MpOworCisgIHdoaWxlKDEpCisgIHsKKyAgICB0aWNrID0gc3BfZ2V0X3RpY2tlcigpOworICAgIHNwX2ZlZWRfZG9nKCk7CisgICAgc3BfdmFsdmVfY29udHJvbCgpOworICAgIHNwX2NvbmZpcm1fcGF5bW9kZSgmUE9TLCAmY2FyZFdvcmtTdGF0ZSk7CisgICAgc3BfY29tbXVuaWNhdGUoJlBPUyk7CisgICAgaWYoUE9TLnBheW1vZGUgPT0gUEFZTU9ERV9RUkNPREUpCisgICAgeworICAgICAgaWYodGljayAtIGxhc3R0aWNrID49IERFTEFZX1RJTUUxMDBtcykKKyAgICAgIHsKKyAgICAgICAgbGFzdHRpY2sgPSB0aWNrOworICAgICAgICBzcF9xcmNvZGVfaGFuZGxlKCZQT1MsICZjYXJkV29ya1N0YXRlKTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgIGlmKHRpY2sgLSBsYXN0dGljayA+PSBERUxBWV9USU1FMTAwbXMpCisgICAgICB7CisgICAgICAgIGxhc3R0aWNrID0gdGljazsKKyAgICAgICAgc3BfdGVzdF9jYXJkX3N0YXRlKCZQT1MsICZjYXJkV29ya1N0YXRlLCB0aWNrKTsKKyAgICAgICAgc3BfY2FyZF9oYW5kbGUoJlBPUywgJmNhcmRXb3JrU3RhdGUpOworICAgICAgfQorICAgIH0KKyAgfQorfQpkaWZmIC0tZ2l0IGEvc3Vwd2lzZG9tL3NwX2NhcmQuYyBiL3N1cHdpc2RvbS9zcF9jYXJkLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWM2Nzk2YQotLS0gL2Rldi9udWxsCisrKyBiL3N1cHdpc2RvbS9zcF9jYXJkLmMKQEAgLTAsMCArMSw5OCBAQAorI2luY2x1ZGUgIi4uL25lY19hcGR1LmgiCisjaW5jbHVkZSAic3BfZGVzLmgiCisjaW5jbHVkZSAic3BfY29uc3RhbnQuaCIKKyNpbmNsdWRlICJzcF91dGlsLmgiCisjaW5jbHVkZSAic3BfY2FyZC5oIgorCitzdGF0aWMgdWludDgqIHByY3ZfYnVmZiA9IE5VTEw7CitzdGF0aWMgdWludDggcmN2X2xlbiA9IDA7CisKK3VpbnQxNiBzcF9zZWxlY3Rfc2ZpKHVpbnQ4IHNmaVsyXSkKK3sKKyAgdWludDE2IHJldDsKKyAgdWludDggIGNtZF9idWZmWzEwXTsKKworICBjbWRfYnVmZlswXSA9IDB4MDA7IC8vQ0xBCisgIGNtZF9idWZmWzFdID0gMHhBNDsgLy9JTlMKKyAgY21kX2J1ZmZbMl0gPSAweDAwOyAvL1AxCisgIGNtZF9idWZmWzNdID0gMHgwMDsgLy9QMgorICBjbWRfYnVmZls0XSA9IDB4MDI7IC8vTGMKKyAgbWVtY3B5KGNtZF9idWZmICsgNSwgc2ZpLCAyKTsKKworICByZXQgPSBjYXJkX2NwdV9leGNoYW5nZShjbWRfYnVmZiwgMiArIDUsIDAsICZwcmN2X2J1ZmYsICZyY3ZfbGVuKTsKKyAgaWYocmV0ICE9IFJFVENPREVfT0spCisgIHsKKyAgICByZXR1cm4gcmV0OworICB9CisgIHJldHVybiAwOworfQorCit1aW50MTYgc3Bfc2VsZWN0X2FkZih2b2lkKQoreworICB1aW50MTYgcmV0OworICB1aW50OCAgY21kX2J1ZmZbXSA9IHsiXHgwMFx4QTRceDA0XHgwMFx4MEZceEQxXHg1Nlx4MDBceDAwXHgwMVx4QkRceEYwXHhDQVx4Q0JceEI0XHhFRlx4RDZceEE3XHhCOFx4QjYifTsKKyAgcmV0ID0gY2FyZF9jcHVfZXhjaGFuZ2UoY21kX2J1ZmYsIHNpemVvZihjbWRfYnVmZikgLSAxLCAwLCAmcHJjdl9idWZmLCAmcmN2X2xlbik7CisgIGlmKHJldCAhPSBSRVRDT0RFX09LKQorICB7CisgICAgcmV0dXJuIHJldDsKKyAgfQorICByZXR1cm4gMDsKK30KKwordWludDggc3BfY2FyZF9yZXF1ZXN0KHNwX2NhcmRfdCogY2FyZHBjZCkKK3sKKworICB1aW50OCBzYWs7CisgIHVpbnQ4IHNucls4XTsKKworICBpZighY2FyZF9yZXF1ZXN0KCZzYWssIHNucikpCisgIHsKKyAgICBpZigoc2FrICYgMHgyMCkpCisgICAgeworICAgICAgaWYoIWNhcmRfY3B1X21vZGUoKSkKKyAgICAgIHsKKyAgICAgICAgRGVsYXlfbXMoMjAwKTsKKwkJaWYoc3Bfc2VsZWN0X3NmaSgiXHgzZlx4MDAiKSA9PSAwKQorICAgICAgICB7CisgICAgICAgICAgc3Bfc2VsZWN0X2FkZigpOworICAgICAgICAgIGNhcmRwY2QtPmNhcmRwaHlpZFswXSA9IHNuclszXTsKKyAgICAgICAgICBjYXJkcGNkLT5jYXJkcGh5aWRbMV0gPSBzbnJbMl07CisgICAgICAgICAgY2FyZHBjZC0+Y2FyZHBoeWlkWzJdID0gc25yWzFdOworICAgICAgICAgIGNhcmRwY2QtPmNhcmRwaHlpZFszXSA9IHNuclswXTsKKyAgICAgICAgICBjYXJkcGNkLT5jYXJkdHlwZSA9IFRBR19UWVBFX0NQVTsKKyAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgY2FyZHBjZC0+Y2FyZHR5cGUgPSBUQUdfVFlQRV9VTktPTldOOworCSAgcmV0dXJuIDE7CisgICAgfQorICB9CisgIHJldHVybiAxOworfQorCitpbnQ4IHNwX2NoZWNrX2NwdV9leGlzdCh2b2lkKQoreworICByZXR1cm4gY2FyZF9jcHVfZXhpc3QoKTsKK30KKworc3RhdGljIHVpbnQxNiBzcF9jcHVfcmVhZChzcF9jYXJkX3QqIGNhcmQpCit7CisgIHVpbnQxNiByZXQgPSAwOworICBNRU1DTEVBUihjYXJkLT5jaXRpemVuX2NhcmRubywgc2l6ZW9mKGNhcmQtPmNpdGl6ZW5fY2FyZG5vKSk7CisgIE1FTUNQWShjYXJkLT5leHBpcmVkYXRlLCAiXHgyMFx4MjJceDA4XHgwMiIsIDQpOworICByZXR1cm4gcmV0OworfQorCit1aW50MTYgc3BfY2FyZF9yZWFkKHNwX2NhcmRfdCogY2FyZCkKK3sKKyAgc3dpdGNoKGNhcmQtPmNhcmR0eXBlKQorICB7CisgIGNhc2UgVEFHX1RZUEVfQ1BVOgorICAgIHJldHVybiBzcF9jcHVfcmVhZChjYXJkKTsKKyAgZGVmYXVsdDoKKyAgICByZXR1cm4gMTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvc3Vwd2lzZG9tL3NwX2NhcmQuaCBiL3N1cHdpc2RvbS9zcF9jYXJkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTk4MWNmYQotLS0gL2Rldi9udWxsCisrKyBiL3N1cHdpc2RvbS9zcF9jYXJkLmgKQEAgLTAsMCArMSwyNiBAQAorI2lmbmRlZiBfU1BfQ0FSRF9IXworI2RlZmluZSBfU1BfQ0FSRF9IXworCisjaW5jbHVkZSAic3BfY29uZmlnLmgiCisKKyNkZWZpbmUgU1BfRklMRTA5IDB4MDEKKyNkZWZpbmUgU1BfRklMRTEwIDB4MDIKKyNkZWZpbmUgU1BfRklMRTEyIDB4MDQKKyNkZWZpbmUgU1BfRklMRTE1IDB4MDgKKworI2RlZmluZSBXQVRFUl9SRUNPUkRfTk8gNAorI2RlZmluZSBSRVRDT0RFX09LICAweDkwMDAKKyNkZWZpbmUgUkVUQ09ERV9JTlNVRkZJQ0lFTlQgIDB4OTQwMSAgICAvL9Pgtu6yu9fjCisjZGVmaW5lIFJDX0NQVV9GSUxFTk9URk9VTkQgMHg2QTgyCisjZGVmaW5lIFJDX0NQVV9OT19FWFRBVVRIICAgMHg2OTgyCisjZGVmaW5lIFJDX0NQVV9GSUxFX05PVF9FWElTVCAweDZBODMKKyNkZWZpbmUgUkNfQ1BVX05PTUFDICAgICAgICAweDk0MDYKKworI2RlZmluZSBDQVJEX1NUQVRVU19PSyAwCisKK3VpbnQ4IHNwX2NhcmRfcmVxdWVzdChzcF9jYXJkX3QqIGNhcmRwY2QpOworaW50OCBzcF9jaGVja19jcHVfZXhpc3Qodm9pZCk7CitpbnQ4IHNwX2NhcmRfcmZfcmVzZXQodm9pZCk7Cit1aW50MTYgc3BfY2FyZF9yZWFkKHNwX2NhcmRfdCogY2FyZCk7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvc3Vwd2lzZG9tL3NwX2NvbW11bmljYXRlLmMgYi9zdXB3aXNkb20vc3BfY29tbXVuaWNhdGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZTNhYzY5Ci0tLSAvZGV2L251bGwKKysrIGIvc3Vwd2lzZG9tL3NwX2NvbW11bmljYXRlLmMKQEAgLTAsMCArMSw1OTAgQEAKKyNpbmNsdWRlICJzcF9jb21tdW5pY2F0ZS5oIgorI2luY2x1ZGUgInNwX3V0aWwuaCIKKyNpbmNsdWRlICJzcF9mbGFzaC5oIgorI2luY2x1ZGUgInNwX2NvbnN0YW50LmgiCisjaW5jbHVkZSAic3BfZGF0YS5oIgorI2luY2x1ZGUgInNwX21zZ3BhY2suaCIKKyNpbmNsdWRlICJzcF9kaXNwbGF5LmgiCisjaW5jbHVkZSAiLi4vc3lzX2h3L2Rydl91c2FydC5oIgorCitzdGF0aWMgdm9pZCBzcF91c2FydF9zZW5kKHNwX3Bvc190KiBwb3MsIHNwX3Byb3RvY29sX3JlcXVlc3RfdCogcmVxKQoreworICB1aW50OCBzZW5kQnVmZlsyNjRdOworICBNRU1DTEVBUihzZW5kQnVmZiwgc2l6ZW9mKHNlbmRCdWZmKSk7CisKKyAgcG9zLT5sYXN0X2NvbW1fc3RhdHVzLmNvbW1hbmQgPSByZXEtPmV4Y21kOworICBwb3MtPmxhc3RfY29tbV9zdGF0dXMuc2VuZHRpbWUgPSBzcF9nZXRfdGlja2VyKCk7CisKKyAgc3BfcHJvdG9jb2xfY3JjKCh1aW50OCopcmVxICsyLCByZXEtPmRhdGFsZW4sICh1aW50OCopcmVxICsyICtyZXEtPmRhdGFsZW4pOworICByZXEtPmRhdGFsZW4gKz0gMjsKKyAgTUVNQ1BZKHNlbmRCdWZmLCByZXEsIHJlcS0+ZGF0YWxlbisyKTsKKyAgdXNhcnRfc2VuZChzZW5kQnVmZiwgcmVxLT5kYXRhbGVuKzIpOworfQorCitzdGF0aWMgdWludDggc3BfdXNhcnRfcmVjdihzcF9wb3NfdCogcG9zLCBzcF9wcm90b2NvbF9yZXNwb25zZV90KiByZXNwLCBpbnQzMiB0aW1lb3V0X21zKQoreworICB1aW50MzIgdGljayA9IDA7CisgIHRpY2sgPSBzcF9nZXRfdGlja2VyKCk7CisgIHdoaWxlKDEpCisgIHsKKyAgICBNRU1DTEVBUihyZXNwLCBzaXplb2Yoc3BfcHJvdG9jb2xfcmVzcG9uc2VfdCkpOworICAgIHVzYXJ0X3JlYWQoKHU4KilyZXNwLCBzaXplb2Yoc3BfcHJvdG9jb2xfcmVzcG9uc2VfdCkpOworICAgIGlmKHBvcy0+bGFzdF9jb21tX3N0YXR1cy5jb21tYW5kID09IHJlc3AtPmV4Y21kKQorICAgIHsKKyAgICAgIE1FTUNMRUFSKCYocG9zLT5sYXN0X2NvbW1fc3RhdHVzKSwgc2l6ZW9mKHNwX2NvbW1fc3RhdHVzX3QpKTsKKyAgICAgIHJldHVybiByZXNwLT5yZXRjb2RlOworICAgIH0KKyAgICBpZigoc3BfZ2V0X3RpY2tlcigpIC0gdGljaykgPj0gdGltZW91dF9tcykKKyAgICB7CisgICAgICByZXR1cm4gMTsKKyAgICB9CisgIH0KK30KK3VpbnQ4IHNwX2NvbW1fY2FsbChzcF9wb3NfdCogcG9zLCBzcF9wcm90b2NvbF9yZXF1ZXN0X3QqIHJlcSwKKyAgICAgICAgICAgICAgICAgICBzcF9wcm90b2NvbF9yZXNwb25zZV90KiByZXNwLCBpbnQzMiB0aW1lb3V0X21zKQoreworICBzcF91c2FydF9zZW5kKHBvcywgcmVxKTsKKyAgcmV0dXJuIHNwX3VzYXJ0X3JlY3YocG9zLCByZXNwLCB0aW1lb3V0X21zKTsKK30KKwordm9pZCBzcF9wcm90b2NvbF9yZXFfaW5pdChzcF9wcm90b2NvbF9yZXF1ZXN0X3QqIHJlcSwgdWludDggY29tbWFuZCkKK3sKKyAgTUVNQ0xFQVIocmVxLHNpemVvZihzcF9wcm90b2NvbF9yZXF1ZXN0X3QpKTsKKyAgcmVxLT5jb21tYW5kID0gUFJPVE9DT0xfQ09NTUFORF9WMjsKKyAgcmVxLT5leGNtZCA9IGNvbW1hbmQ7CisgIHJlcS0+ZmxhZyA9IFBST1RPQ09MX0ZMQUdfUEFDSyhyZXEtPmZsYWcpOworICByZXEtPmZsYWcgPSBQUk9UT0NPTF9XSVRIT1VUX01BQyhyZXEtPmZsYWcpOworICByZXEtPmRhdGFsZW4gPSAzOworfQorCitzdGF0aWMgdWludDE2IHNwX2NvbmZpcm1fY2FyZF9hdXRoZW50aWNhdGlvbihzcF9wb3NfdCogcG9zLCBzcF9jYXJkX3QqIGNhcmQpCit7CisgIHVpbnQ4IHNpemU7CisgIHVpbnQxNiByZXQ7CisgIGludDMyIHRpbWVvdXRfbXMgPSBDT01NX1dBSVRfVElNRTsKKyAgY3dfdW5wYWNrX2NvbnRleHQgdW5wYWNrOworICB1bnBhY2tfZmllbGRfdCBmaWVsZDsKKyAgc3BfcHJvdG9jb2xfcmVzcG9uc2VfdCByZXNwOworCisgIGRpc3BfaGludF9pbmZvKHBvcywi1f3U2sntt93Iz9ak1tAiLERFTEFZX1RJTUUycyk7CisgIHJldCA9IHNwX3VzYXJ0X3JlY3YocG9zLCAmcmVzcCwgdGltZW91dF9tcyk7CisgIGlmKHJldCkKKyAgeworICAgIHJldCA9IFJDX0NBUkRfQVVUSEVOVElDQVRJT047CisgICAgcmV0dXJuIHJldDsKKyAgfQorCisgIHNwX3VucGFja19pbml0KCZ1bnBhY2sscmVzcC5kYXRhLHJlc3AuZGF0YWxlbik7CisgIHNpemUgPSBzcF91bnBhY2tfbWFwX3NpemUoJnVucGFjayk7CisgIHdoaWxlKHNpemUtLSA+IDApCisgIHsKKyAgICBzcF91bnBhY2tfdmFsdWUoJnVucGFjaywmZmllbGQpOworICAgIGlmKElTX0tFWShQS19JTlRfV0FURVJMSU1JVCxmaWVsZC5rZXkpKQorICAgIHsKKyAgICAgIGNhcmQtPndhdGVybGltaXQgPSBmaWVsZC52YWwuaW50dmFsOworICAgIH0KKyAgICBlbHNlIGlmKElTX0tFWShQS19CSU5fQklMTE5PLGZpZWxkLmtleSkpCisgICAgeworICAgICAgTUVNQ1BZKGNhcmQtPmJpbGxubywgZmllbGQudmFsLmJpbnZhbCwgZmllbGQuc3RybGVuKTsKKyAgICB9CisgICAgZWxzZSBpZihJU19LRVkoUEtfSU5UX0ZFRUFNT1VOVCxmaWVsZC5rZXkpKQorICAgIHsKKyAgICAgIGNhcmQtPmZlZXBhcmEuZmVlX2FtdCA9IGZpZWxkLnZhbC5pbnR2YWw7CisgICAgfQorICAgIGVsc2UgaWYoSVNfS0VZKFBLX0lOVF9GRUVVTklULCBmaWVsZC5rZXkpKQorICAgIHsKKyAgICAgIGNhcmQtPmZlZXBhcmEuZmVlX3VuaXQgPSBmaWVsZC52YWwuaW50dmFsOworICAgIH0KKyAgICBlbHNlIGlmKElTX0tFWShQS19JTlRfRkVFU1RBUlQsIGZpZWxkLmtleSkpCisgICAgeworICAgICAgY2FyZC0+ZmVlcGFyYS5mZWVfc3RhcnQgPSBmaWVsZC52YWwuaW50dmFsOworICAgIH0KKyAgfQorICBkaXNwX2hpbnRfaW5mbyhwb3MsIsntt93Iz9aks8m5piIsREVMQVlfVElNRTFzKTsKKyAgcmV0dXJuIDA7Cit9CisKKy8vuvPMqLbUv6i1xMntt93Iz9akCit1aW50MTYgc3BfY2FyZF9hdXRoZW50aWNhdGlvbihzcF9wb3NfdCogcG9zLCBzcF9jYXJkX3QqIGNhcmQpCit7CisgIHVpbnQ4IGN0aW1lWzZdOworICBzcF9wcm90b2NvbF9yZXF1ZXN0X3QgcmVxOworICBjd19wYWNrX2NvbnRleHQgcGFjazsKKyAgTUVNQ0xFQVIoJnJlcSwgc2l6ZW9mKHJlcSkpOworICBNRU1DTEVBUigmcGFjaywgc2l6ZW9mKHJlcSkpOworICBNRU1DTEVBUihjdGltZSwgc2l6ZW9mIGN0aW1lKTsKKworICBzcF9nZXRfYmNkdGltZShjdGltZSk7CisgIHNwX3Byb3RvY29sX3JlcV9pbml0KCZyZXEsIFNQX0NNRF9DQVJEX0FVVEhFTlRJQ0FUSU9OKTsKKyAgc3BfcGFja19pbml0KCZwYWNrLCByZXEuZGF0YSwgc2l6ZW9mKHJlcS5kYXRhKSk7CisgIGN3X3BhY2tfbWFwX3NpemUoJnBhY2ssNCk7CisKKyAgc3BfcGFja19wdXRfYmluKCZwYWNrLCBQS19CSU5fQ0FSRFBIWUlELCBjYXJkLT5jYXJkcGh5aWQsIDQpOworICBzcF9wYWNrX3B1dF9iaW4oJnBhY2ssIFBLX0JJTl9DSVRJWkVOX0NBUkROTywgY2FyZC0+Y2l0aXplbl9jYXJkbm8sIDEyKTsKKyAgc3BfcGFja19wdXRfYmluKCZwYWNrLCBQS19CSU5fREVWUEhZSUQsIHBvcy0+ZGV2cGh5aWQsIDQpOworICBzcF9wYWNrX3B1dF9iaW4oJnBhY2ssIFBLX0JJTl9ERVZUSU1FLCBjdGltZSwgNik7CisKKyAgcmVxLmRhdGFsZW4gKz0gc3BfcGFja19sZW5ndGgoJnBhY2spOworICBzcF91c2FydF9zZW5kKHBvcywgJnJlcSk7CisgIHJldHVybiBzcF9jb25maXJtX2NhcmRfYXV0aGVudGljYXRpb24ocG9zLCBjYXJkKTsKK30KKworLy/J6LG4x6m1vQordWludDE2IHNwX2FzeW5jX2VxdWlwbWVudF9sb2dpbihzcF9wb3NfdCogcG9zKQoreworICBzcF9wcm90b2NvbF9yZXF1ZXN0X3QgcmVxOworICBjd19wYWNrX2NvbnRleHQgcGFjazsKKyAgdWludDggY3RpbWVbNl07CisgIE1FTUNMRUFSKGN0aW1lLCBzaXplb2YoY3RpbWUpKTsKKyAgcG9zLT5oZWFydGJlYXQuaGVhcnRfc3RhdHVzID0gSEVBUlRfU0VORDsKKworICBzcF9nZXRfYmNkdGltZShjdGltZSk7CisgIHNwX3Byb3RvY29sX3JlcV9pbml0KCZyZXEsIFNQX0NNRF9MT0dJTik7CisgIHNwX3BhY2tfaW5pdCgmcGFjaywgcmVxLmRhdGEsIHNpemVvZihyZXEuZGF0YSkpOworICBjd19wYWNrX21hcF9zaXplKCZwYWNrLCA1KTsKKworICBzcF9wYWNrX3B1dF9iaW4oJnBhY2ssIFBLX0JJTl9ERVZQSFlJRCwgcG9zLT5kZXZwaHlpZCwgNCk7CisgIHNwX3BhY2tfcHV0X2JpbigmcGFjaywgUEtfQklOX0RFVlRJTUUsIGN0aW1lLCA2KTsKKyAgc3BfcGFja19wdXRfc3RyKCZwYWNrLCBQS19TVFJfREVWVFlQRSwgREVWX1RZUEUpOworICBzcF9wYWNrX3B1dF9zdHIoJnBhY2ssIFBLX1NUUl9WRVJTSU9OLCBQUk9fVkVSU0lPTik7CisgIHNwX3BhY2tfcHV0X2JpbigmcGFjaywgUEtfQklOX0RFVklDRUtFWSwgKHBvcy0+c3lzY29uZi5kZXZpY2VLZXkpLCA4KTsKKworICByZXEuZGF0YWxlbiArPSBzcF9wYWNrX2xlbmd0aCgmcGFjayk7CisgIHNwX3VzYXJ0X3NlbmQocG9zLCAmcmVxKTsKKyAgcmV0dXJuIDA7Cit9CisKKy8v0MTM+Mi3yM+jrLzssuLN+MLnyse38dX9s6MKK3VpbnQxNiBzcF9hc3luY19oZWFydGJlYXQoc3BfcG9zX3QqIHBvcykKK3sKKyAgdWludDggY3RpbWVbNl07CisgIHVpbnQ4IHVuY29uZmlybV90cmFuc251bSA9IDA7CisgIHNwX3Byb3RvY29sX3JlcXVlc3RfdCByZXE7CisgIGN3X3BhY2tfY29udGV4dCBwYWNrOworCisgIHBvcy0+aGVhcnRiZWF0LmhlYXJ0X3N0YXR1cyA9IEhFQVJUX1NFTkQ7CisgIGlmKHBvcy0+dW5jb25maXJtX3RyYW5zZHRsLnRyYW5zYWRkciA8PSBwb3MtPmxhc3RfdHJhbnNkdGwudHJhbnNhZGRyKQorICB7CisgICAgdW5jb25maXJtX3RyYW5zbnVtID0gKChwb3MtPmxhc3RfdHJhbnNkdGwudHJhbnNhZGRyIC0gcG9zLT51bmNvbmZpcm1fdHJhbnNkdGwudHJhbnNhZGRyKSAvCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihzcF90cmFuc2R0bF90KSkgKyAxOworICB9CisgIGVsc2UKKyAgeworICAgIHVuY29uZmlybV90cmFuc251bSA9IDA7CisgIH0KKyAgc3BfcHJvdG9jb2xfcmVxX2luaXQoJnJlcSwgU1BfQ01EX0hFQVJUQkVBVCk7CisgIHNwX3BhY2tfaW5pdCgmcGFjaywgcmVxLmRhdGEsIHNpemVvZihyZXEuZGF0YSkpOworICBjd19wYWNrX21hcF9zaXplKCZwYWNrLCA2KTsKKworICBzcF9nZXRfYmNkdGltZShjdGltZSk7CisgIHNwX3BhY2tfcHV0X2JpbigmcGFjaywgUEtfQklOX0RFVlBIWUlELCBwb3MtPmRldnBoeWlkLCA0KTsKKyAgc3BfcGFja19wdXRfYmluKCZwYWNrLCBQS19CSU5fREVWVElNRSwgY3RpbWUsIDYpOworICBzcF9wYWNrX3B1dF9zdHIoJnBhY2ssIFBLX1NUUl9ERVZUWVBFLCBERVZfVFlQRSk7CisgIHNwX3BhY2tfcHV0X3N0cigmcGFjaywgUEtfU1RSX1ZFUlNJT04sIFBST19WRVJTSU9OKTsKKyAgc3BfcGFja19wdXRfaW50KCZwYWNrLCBQS19JTlRfVU5UUkFOU0NPTlNULCB1bmNvbmZpcm1fdHJhbnNudW0pOworICBzcF9wYWNrX3B1dF9pbnQoJnBhY2ssIFBLX0lOVF9XT1JLTU9ERSwgcG9zLT5zeXNjb25mLndvcmtfbW9kZSk7CisKKyAgcmVxLmRhdGFsZW4gKz0gc3BfcGFja19sZW5ndGgoJnBhY2spOworICBzcF91c2FydF9zZW5kKHBvcywgJnJlcSk7CisgIHJldHVybiAwOworfQorCitzdGF0aWMgdWludDE2IHNwX2NvbmZpcm1fcXJjb2RlX2luaXQoc3BfcG9zX3QqIHBvcywgc3BfY2FyZF90KiBjYXJkKQoreworICB1aW50OCBzaXplOworICB1aW50MTYgcmV0OworICBpbnQzMiB0aW1lb3V0X21zID0gQ09NTV9XQUlUX1RJTUU7CisgIGN3X3VucGFja19jb250ZXh0IHVucGFjazsKKyAgdW5wYWNrX2ZpZWxkX3QgZmllbGQ7CisgIHNwX3Byb3RvY29sX3Jlc3BvbnNlX3QgcmVzcDsKKworICByZXQgPSBzcF91c2FydF9yZWN2KHBvcywgJnJlc3AsIHRpbWVvdXRfbXMpOworICBpZihyZXQpCisgIHsKKyAgICByZXQgPSBSQ19RUkNPREVfRkFJTFVSRTsKKyAgICByZXR1cm4gcmV0OworICB9CisKKyAgc3BfdW5wYWNrX2luaXQoJnVucGFjayxyZXNwLmRhdGEscmVzcC5kYXRhbGVuKTsKKyAgc2l6ZSA9IHNwX3VucGFja19tYXBfc2l6ZSgmdW5wYWNrKTsKKyAgd2hpbGUoc2l6ZS0tID4gMCkKKyAgeworICAgIHNwX3VucGFja192YWx1ZSgmdW5wYWNrLCZmaWVsZCk7CisgICAgaWYoSVNfS0VZKFBLX1NUUl9TSE9SVF9VUkwsIGZpZWxkLmtleSkpCisgICAgeworICAgICAgTUVNQ1BZKGNhcmQtPnFyY29kZS5xcmNvZGVfdXJsLCBmaWVsZC52YWwuc3RydmFsLCBmaWVsZC5zdHJsZW4pOworICAgIH0KKyAgICBlbHNlIGlmKElTX0tFWShQS19CSU5fQklMTE5PLCBmaWVsZC5rZXkpKQorICAgIHsKKyAgICAgIE1FTUNQWShjYXJkLT5iaWxsbm8sIGZpZWxkLnZhbC5iaW52YWwsIGZpZWxkLnN0cmxlbik7CisgICAgfQorICAgIGVsc2UgaWYoSVNfS0VZKFBLX0lOVF9WQUlMRFRJTUUsIGZpZWxkLmtleSkpCisgICAgeworICAgICAgY2FyZC0+cXJjb2RlLnZhbGlkdGltZSA9IGZpZWxkLnZhbC5pbnR2YWw7CisgICAgfQorICB9CisgIGNhcmQtPnFyY29kZS5zdGFydHRpbWUgPSBzcF9nZXRfdGlja2VyKCk7CisgIHJldHVybiAwOworfQorCisvL7b+zqzC67vxyKEKK3VpbnQxNiBzcF9xcmNvZGVfaW5pdChzcF9wb3NfdCogcG9zLCBzcF9jYXJkX3QqIGNhcmQpCit7CisgIHVpbnQ4IGN0aW1lWzZdOworICBzcF9wcm90b2NvbF9yZXF1ZXN0X3QgcmVxOworICBjd19wYWNrX2NvbnRleHQgcGFjazsKKworICBzcF9nZXRfYmNkdGltZShjdGltZSk7CisgIHNwX3Byb3RvY29sX3JlcV9pbml0KCZyZXEsIFNQX0NNRF9TSE9SVFVSTCk7CisgIHNwX3BhY2tfaW5pdCgmcGFjaywgcmVxLmRhdGEsIHNpemVvZihyZXEuZGF0YSkpOworICBjd19wYWNrX21hcF9zaXplKCZwYWNrLCAyKTsKKworICBzcF9wYWNrX3B1dF9iaW4oJnBhY2ssIFBLX0JJTl9ERVZQSFlJRCwgcG9zLT5kZXZwaHlpZCwgNCk7CisgIHNwX3BhY2tfcHV0X2JpbigmcGFjaywgUEtfQklOX0RFVlRJTUUsIGN0aW1lLCA2KTsKKworICByZXEuZGF0YWxlbiArPSBzcF9wYWNrX2xlbmd0aCgmcGFjayk7CisgIHNwX3VzYXJ0X3NlbmQocG9zLCAmcmVxKTsKKyAgcmV0dXJuIHNwX2NvbmZpcm1fcXJjb2RlX2luaXQocG9zLCBjYXJkKTsKK30KKworLy+2/s6swuvIt8jPo6y78cih1qe4tte0zKwKK3N0YXRpYyB1aW50MTYgc3BfY29uZmlybV9xcmNvZGVfcXVlcnkoc3BfcG9zX3QqIHBvcywgc3BfY2FyZF90KiBjYXJkKQoreworICB1aW50OCBzaXplOworICB1aW50MTYgcmV0OworICBpbnQzMiB0aW1lb3V0X21zID0gQ09NTV9XQUlUX1RJTUU7CisgIGN3X3VucGFja19jb250ZXh0IHVucGFjazsKKyAgdW5wYWNrX2ZpZWxkX3QgZmllbGQ7CisgIHNwX3Byb3RvY29sX3Jlc3BvbnNlX3QgcmVzcDsKKworICByZXQgPSBzcF91c2FydF9yZWN2KHBvcywgJnJlc3AsIHRpbWVvdXRfbXMpOworICBpZihyZXQpCisgIHsKKyAgICByZXQgPSBSQ19RUkNPREVfUVVFUllfRkFJTDsKKyAgICByZXR1cm4gcmV0OworICB9CisKKyAgc3BfdW5wYWNrX2luaXQoJnVucGFjayxyZXNwLmRhdGEscmVzcC5kYXRhbGVuKTsKKyAgc2l6ZSA9IHNwX3VucGFja19tYXBfc2l6ZSgmdW5wYWNrKTsKKyAgd2hpbGUoc2l6ZS0tID4gMCkKKyAgeworICAgIHNwX3VucGFja192YWx1ZSgmdW5wYWNrLCZmaWVsZCk7CisgICAgaWYoSVNfS0VZKFBLX0JJTl9CSUxMTk8sIGZpZWxkLmtleSkpCisgICAgeworICAgICAgTUVNQ1BZKGNhcmQtPmJpbGxubywgZmllbGQudmFsLmJpbnZhbCwgZmllbGQuc3RybGVuKTsKKyAgICB9CisgICAgZWxzZSBpZihJU19LRVkoUEtfSU5UX0FVVEhTVEFUVVMsIGZpZWxkLmtleSkpCisgICAgeworICAgICAgY2FyZC0+cXJjb2RlLmF1dGhzdGF0dXMgPSBmaWVsZC52YWwuaW50dmFsOworICAgIH0KKyAgICBlbHNlIGlmKElTX0tFWShQS19JTlRfUEFZU1RBVFVTLCBmaWVsZC5rZXkpKQorICAgIHsKKyAgICAgIGNhcmQtPnFyY29kZS5wYXlzdGF0dXMgPSBmaWVsZC52YWwuaW50dmFsOworICAgIH0KKyAgICBlbHNlIGlmKElTX0tFWShQS19JTlRfUEFZQU1ULCBmaWVsZC5rZXkpKQorICAgIHsKKyAgICAgIGNhcmQtPnFyY29kZS5wYWlkQW1vdW50ID0gZmllbGQudmFsLmludHZhbDsKKyAgICB9CisgICAgZWxzZSBpZihJU19LRVkoUEtfSU5UX0ZFRUFNT1VOVCxmaWVsZC5rZXkpKQorICAgIHsKKyAgICAgIGNhcmQtPmZlZXBhcmEuZmVlX2FtdCA9IGZpZWxkLnZhbC5pbnR2YWw7CisgICAgfQorICAgIGVsc2UgaWYoSVNfS0VZKFBLX0lOVF9GRUVVTklULCBmaWVsZC5rZXkpKQorICAgIHsKKyAgICAgIGNhcmQtPmZlZXBhcmEuZmVlX3VuaXQgPSBmaWVsZC52YWwuaW50dmFsOworICAgIH0KKyAgfQorICByZXR1cm4gcmVzcC5yZXRjb2RlOworfQorCit1aW50MTYgc3BfcXJjb2RlX3F1ZXJ5KHNwX3Bvc190KiBwb3MsIHNwX2NhcmRfdCogY2FyZCkKK3sKKyAgdWludDggY3RpbWVbNl07CisgIHNwX3Byb3RvY29sX3JlcXVlc3RfdCByZXE7CisgIGN3X3BhY2tfY29udGV4dCBwYWNrOworCisgIHNwX2dldF9iY2R0aW1lKGN0aW1lKTsKKyAgc3BfcHJvdG9jb2xfcmVxX2luaXQoJnJlcSwgU1BfQ01EX1FSQ09ERV9QQVlfUVVFUlkpOworICBzcF9wYWNrX2luaXQoJnBhY2ssIHJlcS5kYXRhLCBzaXplb2YocmVxLmRhdGEpKTsKKyAgY3dfcGFja19tYXBfc2l6ZSgmcGFjaywgMik7CisKKyAgc3BfcGFja19wdXRfYmluKCZwYWNrLCBQS19CSU5fREVWUEhZSUQsIHBvcy0+ZGV2cGh5aWQsIDQpOworICBzcF9wYWNrX3B1dF9iaW4oJnBhY2ssIFBLX0JJTl9CSUxMTk8sIGNhcmQtPmJpbGxubywgc2l6ZW9mKGNhcmQtPmJpbGxubykpOworCisgIHJlcS5kYXRhbGVuICs9IHNwX3BhY2tfbGVuZ3RoKCZwYWNrKTsKKyAgc3BfdXNhcnRfc2VuZChwb3MsICZyZXEpOworICByZXR1cm4gc3BfY29uZmlybV9xcmNvZGVfcXVlcnkocG9zLCBjYXJkKTsKK30KKworLy/B98uuyc+0qworc3RhdGljIHVpbnQ4IHRyYW5zZHRsX2FjY291bnRfYmlsTG5vWzEwXTsKK3N0YXRpYyB1aW50MTYgc3BfYXN5bmNfdXBsb2FkX3RyYW5zZHRsKHNwX3Bvc190KiBwb3MsIHNwX3RyYW5zZHRsX3QqIHRyYW5zZHRsKQoreworICB1aW50OCBjcmNbMl07CisgIGN3X3BhY2tfY29udGV4dCBwYWNrOworICBzcF9wcm90b2NvbF9yZXF1ZXN0X3QgcmVxOworCisgIE1FTUNQWSh0cmFuc2R0bF9hY2NvdW50X2JpbExubywgdHJhbnNkdGwtPmJpbGxubywgc2l6ZW9mKHRyYW5zZHRsLT5iaWxsbm8pKTsKKyAgc3BfcHJvdG9jb2xfcmVxX2luaXQoJnJlcSwgU1BfQ01EX1RSQU5TRFRMX0FDQ09VTlQpOworICBzcF9wYWNrX2luaXQoJnBhY2sscmVxLmRhdGEsc2l6ZW9mKHJlcS5kYXRhKSk7CisgIGN3X3BhY2tfbWFwX3NpemUoJnBhY2ssMTApOworCisgIHNwX3BhY2tfcHV0X2JpbigmcGFjaywgUEtfQklOX0RFVlBIWUlELCB0cmFuc2R0bC0+ZGV2cGh5aWQsNCk7CisgIHNwX3BhY2tfcHV0X2JpbigmcGFjaywgUEtfQklOX1RSQU5TREFURSwgdHJhbnNkdGwtPnRyYW5zZGF0ZSwzKTsKKyAgc3BfcGFja19wdXRfYmluKCZwYWNrLCBQS19CSU5fVFJBTlNUSU1FLCB0cmFuc2R0bC0+dHJhbnN0aW1lLDMpOworICBzcF9wYWNrX3B1dF9iaW4oJnBhY2ssIFBLX0JJTl9CSUxMTk8sIHRyYW5zZHRsLT5iaWxsbm8sIHNpemVvZih0cmFuc2R0bC0+YmlsbG5vKSk7CisgIHNwX3BhY2tfcHV0X2JpbigmcGFjaywgUEtfQklOX0NBUkRQSFlJRCwgdHJhbnNkdGwtPmNhcmRwaHlpZCwKKyAgICAgICAgICAgICAgICAgIHNpemVvZih0cmFuc2R0bC0+Y2FyZHBoeWlkKSk7CisgIHNwX3BhY2tfcHV0X2ludCgmcGFjaywgUEtfSU5UX1RSQU5TV0FZLCB0cmFuc2R0bC0+dHJhbnN3YXkpOworICBzcF9wYWNrX3B1dF9pbnQoJnBhY2ssIFBLX0lOVF9BTU9VTlQsIHRyYW5zZHRsLT5hbW91bnQpOworICBzcF9wYWNrX3B1dF9pbnQoJnBhY2ssIFBLX0lOVF9QQVlBTVQsIHRyYW5zZHRsLT5wYWlkQW1vdW50KTsKKyAgc3BfcGFja19wdXRfaW50KCZwYWNrLCBQS19JTlRfRkxPV1NFTlNPUlMsIHRyYW5zZHRsLT5mbG93c2Vuc29ycyk7CisgIHNwX3BhY2tfcHV0X2ludCgmcGFjaywgUEtfSU5UX0ZMQUcsIHRyYW5zZHRsLT50cmFuc3RhdHVzKTsKKworICBzcF9wcm90b2NvbF9jcmMoKHVpbnQ4Kil0cmFuc2R0bCwgc2l6ZW9mKHNwX3RyYW5zZHRsX3QpLTIsY3JjKTsKKyAgcmVxLmRhdGFsZW4gKz0gc3BfcGFja19sZW5ndGgoJnBhY2spOworICBzcF91c2FydF9zZW5kKHBvcywgJnJlcSk7CisgIHJldHVybiAwOworfQorCisvL8i3yM/B98uu17TMrAorc3RhdGljIHVpbnQ4IHNwX2NvbmZpcm1fdHJhbnNkdGxfYWNjb3VudChzcF9wcm90b2NvbF9yZXNwb25zZV90KiByZXNwLCBzcF9wb3NfdCogcG9zKQoreworICB1aW50OCBzaXplOworICBjd191bnBhY2tfY29udGV4dCB1bnBhY2s7CisgIHVucGFja19maWVsZF90IGZpZWxkOworCisgIGlmKCFyZXNwLT5yZXRjb2RlKQorICB7CisgICAgc3BfdW5wYWNrX2luaXQoJnVucGFjaywgcmVzcC0+ZGF0YSwgcmVzcC0+ZGF0YWxlbik7CisgICAgc2l6ZSA9IHNwX3VucGFja19tYXBfc2l6ZSgmdW5wYWNrKTsKKyAgICB3aGlsZShzaXplLS0gPiAwKQorICAgIHsKKyAgICAgIHNwX3VucGFja192YWx1ZSgmdW5wYWNrLCZmaWVsZCk7CisgICAgICBpZihJU19LRVkoUEtfQklOX0JJTExOTyxmaWVsZC5rZXkpKQorICAgICAgeworICAgICAgICBpZihNRU1DTVAoZmllbGQudmFsLmJpbnZhbCwgdHJhbnNkdGxfYWNjb3VudF9iaWxMbm8sCisgICAgICAgICAgICAgICAgICBzaXplb2YodHJhbnNkdGxfYWNjb3VudF9iaWxMbm8pKSA9PSAwKQorICAgICAgICB7CisgICAgICAgICAgcG9zLT51bmNvbmZpcm1fdHJhbnNkdGwudHJhbnNhZGRyKz0gc2l6ZW9mKHNwX3RyYW5zZHRsX3QpOworICAgICAgICAgIGlmKEFERFJfVFJBTlNEVExfRU5EIDw9IHBvcy0+dW5jb25maXJtX3RyYW5zZHRsLnRyYW5zYWRkcikKKyAgICAgICAgICB7CisgICAgICAgICAgICBwb3MtPnVuY29uZmlybV90cmFuc2R0bC50cmFuc2FkZHI9IEFERFJfVFJBTlNEVExfQkVHSU47CisgICAgICAgICAgfQorICAgICAgICAgIHJldHVybiBzcF93cml0ZV91bmNvbmZpcm1fcmVjb3JkKHBvcyk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgIH0KKyAgcmV0dXJuIHJlc3AtPnJldGNvZGU7CisKK30KKworc3RhdGljIHVpbnQ4IHNwX2NvbmZpcm1faGVhcnRiZWF0KHNwX3Byb3RvY29sX3Jlc3BvbnNlX3QqIHJlc3AsIHNwX3Bvc190KiBwb3MpCit7CisgIHVpbnQ4IHNpemU7CisgIHVpbnQ4IGN0aW1lWzZdOworICB1aW50OCBzeXN0aW1lWzddOworICB1aW50OCBsb2dpbl9mbGFnID0gMDsKKyAgY3dfdW5wYWNrX2NvbnRleHQgdW5wYWNrOworICB1bnBhY2tfZmllbGRfdCBmaWVsZDsKKworICBpZihyZXNwLT5yZXRjb2RlKQorICB7CisgICAgcmV0dXJuIHJlc3AtPnJldGNvZGU7CisgIH0KKyAgcG9zLT5oZWFydGJlYXQuaGVhcnRfc3RhdHVzID0gSEVBUlRfUkVDVjsKKworICBzcF91bnBhY2tfaW5pdCgmdW5wYWNrLHJlc3AtPmRhdGEscmVzcC0+ZGF0YWxlbik7CisgIHNpemUgPSBzcF91bnBhY2tfbWFwX3NpemUoJnVucGFjayk7CisgIHdoaWxlKHNpemUtLSA+IDApCisgIHsKKyAgICBzcF91bnBhY2tfdmFsdWUoJnVucGFjaywmZmllbGQpOworICAgIGlmKElTX0tFWShQS19CSU5fU1lTVElNRSwgZmllbGQua2V5KSkKKyAgICB7CisgICAgICBpZihmaWVsZC5zdHJsZW4gPT0gNykKKyAgICAgIHsKKyAgICAgICAgTUVNQ1BZKHN5c3RpbWUsZmllbGQudmFsLmJpbnZhbCw3KTsKKyAgICAgICAgc3BfZ2V0X2JjZHRpbWUoY3RpbWUpOworICAgICAgICBpZihNRU1DTVAoY3RpbWUsc3lzdGltZSArMSw1KSAhPSAwKQorICAgICAgICB7CisgICAgICAgICAgaWYoIXNwX2NoZWNrX3RpbWVfdmFsaWQoc3lzdGltZSArMSkpCisgICAgICAgICAgeworICAgICAgICAgICAgc3Bfc2V0X2JjZHRpbWUoc3lzdGltZSArMSk7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfQorICAgIGVsc2UgaWYoSVNfS0VZKFBLX1NUUl9TVEFUVVMsIGZpZWxkLmtleSkpCisgICAgeworICAgICAgaWYoTUVNQ01QKGZpZWxkLnZhbC5zdHJ2YWwsICJub3JtYWwiLCBmaWVsZC5zdHJsZW4pID09IDApCisgICAgICB7CisgICAgICAgIGxvZ2luX2ZsYWcgPSAxOworICAgICAgfQorICAgICAgZWxzZSBpZihNRU1DTVAoZmllbGQudmFsLnN0cnZhbCwgImxvZ291dCIsIGZpZWxkLnN0cmxlbikgPT0gMCkKKyAgICAgIHsKKyAgICAgICAgbG9naW5fZmxhZyA9IDA7CisgICAgICB9CisgICAgICBlbHNlIGlmKE1FTUNNUChmaWVsZC52YWwuc3RydmFsLCAiY2xvc2VkIiwgZmllbGQuc3RybGVuKSA9PSAwKQorICAgICAgeworICAgICAgICBsb2dpbl9mbGFnID0gMjsKKyAgICAgIH0KKyAgICB9CisgIH0KKyAgc3Bfc2F2ZV9oZWFydGJlYXRfaW5mbyhwb3MsIGxvZ2luX2ZsYWcpOworICByZXR1cm4gcmVzcC0+cmV0Y29kZTsKK30KKwordWludDggc3BfY29uZmlybV9sb2dpbihzcF9wcm90b2NvbF9yZXNwb25zZV90KiByZXNwLCBzcF9wb3NfdCogcG9zKQoreworICB1aW50OCBzaXplOworICB1aW50OCBjdGltZVs2XTsKKyAgdWludDggc3lzdGltZVs3XTsKKyAgdWludDggbG9naW5fZmxhZyA9IDA7CisgIHVpbnQ4IHVuaXQgPSAwOworICB1aW50OCBvZmZsaW5lX21heGhvdXIgPSAwOworICBjd191bnBhY2tfY29udGV4dCB1bnBhY2s7CisgIHVucGFja19maWVsZF90IGZpZWxkOworCisgIE1FTUNMRUFSKGN0aW1lLCBzaXplb2YoY3RpbWUpKTsKKyAgTUVNQ0xFQVIoc3lzdGltZSwgc2l6ZW9mKHN5c3RpbWUpKTsKKyAgaWYocmVzcC0+cmV0Y29kZSkKKyAgeworICAgIHJldHVybiByZXNwLT5yZXRjb2RlOworICB9CisgIHBvcy0+aGVhcnRiZWF0LmhlYXJ0X3N0YXR1cyA9IEhFQVJUX1JFQ1Y7CisKKyAgc3BfdW5wYWNrX2luaXQoJnVucGFjayxyZXNwLT5kYXRhLHJlc3AtPmRhdGFsZW4pOworICBzaXplID0gc3BfdW5wYWNrX21hcF9zaXplKCZ1bnBhY2spOworICB3aGlsZShzaXplLS0gPiAwKQorICB7CisgICAgc3BfdW5wYWNrX3ZhbHVlKCZ1bnBhY2ssJmZpZWxkKTsKKyAgICBpZihJU19LRVkoUEtfSU5UX09GRkxJTkVNQVhIT1VSLCBmaWVsZC5rZXkpKQorICAgIHsKKyAgICAgIG9mZmxpbmVfbWF4aG91ciA9IGZpZWxkLnZhbC5pbnR2YWw7CisgICAgfQorICAgIGVsc2UgaWYoSVNfS0VZKFBLX0lOVF9QVUxTRUlOSE1MLCBmaWVsZC5rZXkpKQorICAgIHsKKyAgICAgIHVuaXQgPSBmaWVsZC52YWwuaW50dmFsOworICAgIH0KKyAgICBlbHNlIGlmKElTX0tFWShQS19CSU5fU1lTVElNRSwgZmllbGQua2V5KSkKKyAgICB7CisgICAgICBpZihmaWVsZC5zdHJsZW4gPT0gNykKKyAgICAgIHsKKyAgICAgICAgTUVNQ1BZKHN5c3RpbWUsZmllbGQudmFsLmJpbnZhbCw3KTsKKyAgICAgICAgc3BfZ2V0X2JjZHRpbWUoY3RpbWUpOworICAgICAgICBpZihNRU1DTVAoY3RpbWUsc3lzdGltZSArMSw1KSAhPSAwKQorICAgICAgICB7CisgICAgICAgICAgaWYoIXNwX2NoZWNrX3RpbWVfdmFsaWQoc3lzdGltZSArMSkpCisgICAgICAgICAgeworICAgICAgICAgICAgc3Bfc2V0X2JjZHRpbWUoc3lzdGltZSArMSk7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9CisKKyAgbG9naW5fZmxhZyA9IDE7CisgIHNwX3NhdmVfbG9naW5faW5mbyhwb3MsIGxvZ2luX2ZsYWcsIHVuaXQsIG9mZmxpbmVfbWF4aG91cik7CisgIHJldHVybiByZXNwLT5yZXRjb2RlOworfQorCitzdGF0aWMgcHJvdG9jb2xfY21kX3QgcHJvdG9jb2xfY21kc1tdID0KK3sKKyAge1NQX0NNRF9UUkFOU0RUTF9BQ0NPVU5ULCBzcF9jb25maXJtX3RyYW5zZHRsX2FjY291bnR9LAorICB7U1BfQ01EX0hFQVJUQkVBVCwgc3BfY29uZmlybV9oZWFydGJlYXR9LAorICB7U1BfQ01EX0xPR0lOLCBzcF9jb25maXJtX2xvZ2lufSwKKyAgezAsIE5VTEx9Cit9OworCitzdGF0aWMgdWludDE2IHNwX2FzeW5jX2NvbmZpcm1fcHJvY2VzcyhzcF9wb3NfdCogcG9zKQoreworICB1aW50OCByZXQgPSAwOworICB1aW50OCBpID0gMDsKKyAgaW50MzIgdGltZW91dF9tcyA9IENPTU1fV0FJVF9USU1FOworICBzcF9wcm90b2NvbF9yZXNwb25zZV90IHJlc3A7CisKKyAgcmV0ID0gc3BfdXNhcnRfcmVjdihwb3MsICZyZXNwLCB0aW1lb3V0X21zKTsKKyAgaWYocmV0KQorICB7CisgICAgcmV0dXJuIHJldDsKKyAgfQorICB3aGlsZShwcm90b2NvbF9jbWRzW2ldLmZ1bmMgIT0gTlVMTCAmJiBwcm90b2NvbF9jbWRzW2ldLmNtZCAhPSAwKQorICB7CisgICAgaWYocHJvdG9jb2xfY21kc1tpXS5jbWQgPT0gcmVzcC5leGNtZCkKKyAgICB7CisgICAgICByZXR1cm4gcHJvdG9jb2xfY21kc1tpXS5mdW5jKCZyZXNwLCBwb3MpOworICAgIH0KKyAgICArK2k7CisgIH0KKyAgcmV0dXJuIDE7Cit9CisKKy8vvOyy4snosbjNqNG217TMrKOsv9XP0MqxvOS9+NDQwffLrrSmwO21yLmk1/cKK3N0YXRpYyB2b2lkIHNwX2NoZWNrX2FuZF9zd2l0Y2hfbGlua3N0YXQoc3BfcG9zX3QqIHBvcykKK3sKKyAgaWYocG9zLT5oZWFydGJlYXQuaGVhcnRfc3RhdHVzID09IEhFQVJUX1NFTkQpCisgIHsKKyAgICAvL9LRt6LLzdDEzPijrM60ytW1vdOmtPAKKyAgICBwb3MtPmxpbmtfc3RhdCA9IDA7CisgICAgcG9zLT5oZWFydGJlYXQuaGVhcnRfc3RhdHVzID0gSEVBUlRfSU5JVDsKKyAgfQorICBlbHNlIGlmKHBvcy0+aGVhcnRiZWF0LmhlYXJ0X3N0YXR1cyA9PSBIRUFSVF9SRUNWKQorICB7CisgICAgLy/S0beiy83QxMz4o6zK1bW906a08AorICAgIHBvcy0+bGlua19zdGF0ID0gMTsKKyAgICBwb3MtPmhlYXJ0YmVhdC5oZWFydF9zdGF0dXMgPSBIRUFSVF9JTklUOworICB9Cit9CisKK3ZvaWQgc3BfY29tbXVuaWNhdGUoc3BfcG9zX3QqIHBvcykKK3sKKyAgdWludDE2IHJldCA9IDA7CisgIHVpbnQzMiB0aWNrZXIgPSAwOworICBzcF90cmFuc2R0bF90IHRyYW5zZHRsOworCisgIGlmKHBvcy0+ZGV2aWNlbm8gPT0gMCkKKyAgeworICAgIHJldHVybjsKKyAgfQorICB0aWNrZXIgPSBzcF9nZXRfdGlja2VyKCk7CisgIGlmKHRpY2tlciAtIHBvcy0+bGFzdF9jb21tX3N0YXR1cy5zZW5kdGltZSA+IENPTU1fV0FJVF9USU1FKQorICB7CisgICAgaWYocG9zLT5kZXZsb2dpbi5sYXN0X2xvZ2luX3RpY2tlciA9PSAwIHx8IHBvcy0+ZGV2bG9naW4ubG9naW5fZmxhZyA9PSAwCisgICAgICAgIHx8ICh0aWNrZXIgLSBwb3MtPmRldmxvZ2luLmxhc3RfbG9naW5fdGlja2VyKSA+IERFTEFZX1RJTUU2MHMqNjAqMjQpCisgICAgeworICAgICAgcG9zLT5kZXZsb2dpbi5sYXN0X2xvZ2luX3RpY2tlciA9IHRpY2tlcjsKKyAgICAgIHNwX2FzeW5jX2VxdWlwbWVudF9sb2dpbihwb3MpOworICAgIH0KKyAgICBlbHNlIGlmKHRpY2tlciA8IHBvcy0+aGVhcnRiZWF0Lmxhc3RfaGVhcnRiZWF0X3RpY2tlcgorICAgICAgICAgICAgfHwgcG9zLT5oZWFydGJlYXQubGFzdF9oZWFydGJlYXRfdGlja2VyID09IDAKKyAgICAgICAgICAgIHx8ICh0aWNrZXIgLSBwb3MtPmhlYXJ0YmVhdC5sYXN0X2hlYXJ0YmVhdF90aWNrZXIpID4gREVMQVlfVElNRTYwcyoyKQorICAgIHsKKyAgICAgIHBvcy0+aGVhcnRiZWF0Lmxhc3RfaGVhcnRiZWF0X3RpY2tlciA9IHRpY2tlcjsKKyAgICAgIHNwX2FzeW5jX2hlYXJ0YmVhdChwb3MpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgc3BfY2hlY2tfYW5kX3N3aXRjaF9saW5rc3RhdChwb3MpOworICAgICAgaWYocG9zLT5saW5rX3N0YXQpCisgICAgICB7CisgICAgICAgIC8vvOyy4rWxx7DKx7fx09DOtMnPtKu1xMH3y64KKyAgICAgICAgaWYocG9zLT51bmNvbmZpcm1fdHJhbnNkdGwudHJhbnNhZGRyIDw9IHBvcy0+bGFzdF90cmFuc2R0bC50cmFuc2FkZHIpCisgICAgICAgIHsKKyAgICAgICAgICByZXQgPSBzcF9mbGFzaF9yZWFkKCh1aW50MzIpcG9zLT51bmNvbmZpcm1fdHJhbnNkdGwudHJhbnNhZGRyLCAodWludDgqKSZ0cmFuc2R0bCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZih0cmFuc2R0bCkpOworICAgICAgICAgIGlmKCFyZXQpCisgICAgICAgICAgeworICAgICAgICAgICAgaWYoIXBvcy0+c3lzY29uZi53b3JrX21vZGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIHBvcy0+aGVhcnRiZWF0Lmxhc3RfaGVhcnRiZWF0X3RpY2tlciA9IHRpY2tlcjsKKyAgICAgICAgICAgICAgc3BfYXN5bmNfdXBsb2FkX3RyYW5zZHRsKHBvcywgJnRyYW5zZHRsKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgIH0KKworICBzcF9hc3luY19jb25maXJtX3Byb2Nlc3MocG9zKTsKK30KZGlmZiAtLWdpdCBhL3N1cHdpc2RvbS9zcF9jb21tdW5pY2F0ZS5oIGIvc3Vwd2lzZG9tL3NwX2NvbW11bmljYXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjhkYWY3NwotLS0gL2Rldi9udWxsCisrKyBiL3N1cHdpc2RvbS9zcF9jb21tdW5pY2F0ZS5oCkBAIC0wLDAgKzEsMTM5IEBACisjaWZuZGVmIF9TUF9DT01NVU5JQ0FURV9IXworI2RlZmluZSBfU1BfQ09NTVVOSUNBVEVfSF8KKworI2luY2x1ZGUgInNwX2NvbmZpZy5oIgorCisjZGVmaW5lIFBST1RPQ09MX0NPTU1BTkRfVjIgCQkweDgwCisjZGVmaW5lIFBST1RPQ09MX1dJVEhfTUFDKHgpIAkJKCh4KSB8IDB4ODApCisjZGVmaW5lIFBST1RPQ09MX1dJVEhPVVRfTUFDKHgpIAkoKHgpICYgMHg3RikKKyNkZWZpbmUgUFJPVE9DT0xfRkxBR19QQUNLKHgpIAkJKCh4KSB8IDB4MDEpCisjZGVmaW5lIFBST1RPQ09MX0ZMQUdfREVTX1BBQ0soeCkgCSgoeCkgJiAweEZFKQorCisjZGVmaW5lIFBLX0JJTl9ERVZQSFlJRCAJCQkiYSIKKyNkZWZpbmUgUEtfSU5UX0NBUkROTyAJCQkJImIiCisjZGVmaW5lIFBLX0JJTl9DQVJEVkVSTk8gCQkJImMiCisjZGVmaW5lIFBLX0lOVF9ERVZTRVFOTyAJCQkiZCIKKyNkZWZpbmUgUEtfU1RSX1ZFUlNJT04gCQkJCSJlIgorI2RlZmluZSBQS19JTlRfQkxLSU5ERVggCQkJImYiCisjZGVmaW5lIFBLX0JJTl9UUkFOU0RBVEUgCQkJImciCisjZGVmaW5lIFBLX0JJTl9UUkFOU1RJTUUgCQkJImgiCisjZGVmaW5lIFBLX0lOVF9QQVlBTVQgCQkJCSJpIgorI2RlZmluZSBQS19JTlRfQU1PVU5UIAkJCQkiaiIKKyNkZWZpbmUgUEtfSU5UX0ZMQUcgCQkJCSJrIgorI2RlZmluZSBQS19TVFJfQVZBSUFCTEUgCQkJImwiCisjZGVmaW5lIFBLX0JJTl9TWVNUSU1FIAkJCQkibSIKKyNkZWZpbmUgUEtfU1RSX1VQR1JBREUgCQkJCSJuIgorI2RlZmluZSBQS19CSU5fQkxLQklUTUFQIAkJCSJvIgorI2RlZmluZSBQS19CSU5fRklMRUNSQyAJCQkJInAiCisjZGVmaW5lIFBLX0lOVF9GSUxFU0laRSAJCQkicSIKKyNkZWZpbmUgUEtfSU5UX1NFUU5PIAkJCQkiciIKKyNkZWZpbmUgUEtfQklOX0ZJTEVEQVRBIAkJCSJzIgorI2RlZmluZSBQS19JTlRfTUFYU0VRTk8gCQkJInQiCisjZGVmaW5lIFBLX0lOVF9TRUNPTkRTIAkJCQkidSIKKyNkZWZpbmUgUEtfSU5UX0NSRURJVF9UT1RBTCAgCQkidiIKKyNkZWZpbmUgUEtfSU5UX0NSRURJVF9QQVlDTlQgIAkJInciCisjZGVmaW5lIFBLX0lOVF9DUkVESVRfQVZBSUxBQkFMICAJIngiCisjZGVmaW5lIFBLX0lOVF9DUkVESVRfTk8gIAkJCSJ5IgorI2RlZmluZSBQS19CSU5fRVhQSVJFICAJCQkJInoiCisjZGVmaW5lIFBLX0lOVF9GRUVUWVBFICAJCQkiQSIKKyNkZWZpbmUgUEtfQklOX0NBUkRQSFlJRCAgCQkJIkIiCisjZGVmaW5lIFBLX1NUUl9TVEFUVVMgIAkJCQkiQyIKKyNkZWZpbmUgUEtfSU5UX0JBTEFOQ0UgIAkJCSJEIgorI2RlZmluZSBQS19JTlRfT0ZGTElORV9GT1JCSURfRkxBRyAgIkUiCisjZGVmaW5lIFBLX0lOVF9DUkVESVRfUEFZQ05UX0xBQ0sgIAkiRiIKKyNkZWZpbmUgUEtfSU5UX09OQ0VUSU1FX0xJTUlUICAJCSJHIgorI2RlZmluZSBQS19JTlRfREFZVE9UQUxfTElNSVQgIAkJIkgiCisjZGVmaW5lIFBLX0lOVF9DT1VOVCAJCQkJIkoiCisjZGVmaW5lIFBLX0JJTl9CTEtMSVNUIAkJCQkiSyIKKyNkZWZpbmUgUEtfSU5UX0NSRURJVF9ORVhUX05PIAkJIkwiCisjZGVmaW5lIFBLX0JJTl9SQU5ET00gIAkJCQkiTSIKKyNkZWZpbmUgUEtfSU5UX0RFVklDRU5PICAJCQkiTiIKKyNkZWZpbmUgUEtfQklOX0RFVlRJTUUgIAkJCSJPIgorI2RlZmluZSBQS19TVFJfREVWVFlQRSAgCQkJIlAiCisjZGVmaW5lIFBLX0JJTl9TQU1OTyAgCQkJCSJRIgorI2RlZmluZSBQS19JTlRfUEFSQVZFUk5PICAJCQkiUiIKKyNkZWZpbmUgUEtfSU5UX1BBUkFfR1JPVVBJRCAgCQkiUyIKKyNkZWZpbmUgUEtfSU5UX0ZFRVZFUk5PICAJCQkiVCIKKyNkZWZpbmUgUEtfSU5UX0ZFRV9DRkdJRCAgCQkJIlUiCisjZGVmaW5lIFBLX0JJTl9XU0NMSUVOVF9JRCAgCQkiViIKKyNkZWZpbmUgUEtfSU5UX1dTQ0xJRU5UX1NUQVRVUyAgCSJXIgorI2RlZmluZSBQS19JTlRfRkxPV1NFTlNPUlMJCQkiWCIKKyNkZWZpbmUgUEtfQklOX1NPRlRfTUQ1ICAJCQkiWSIKKyNkZWZpbmUgUEtfSU5UX0NVU1RJRAkJCQkiWiIKKyNkZWZpbmUgUEtfU1RSX1NIT1JUX1VSTAkJCSIwIgorI2RlZmluZSBQS19JTlRfV0FURVJTVEFUVVMgIAkJIjEiCisjZGVmaW5lIFBLX0lOVF9XQVRFUk1VQ0ggIAkJCSIyIgorCisjZGVmaW5lIFBLX0JJTl9CSUxMTk8gCQkJCSIzIgorI2RlZmluZSBQS19JTlRfVFJBTlNXQVkgCQkJIjQiCisjZGVmaW5lIFBLX0lOVF9VTlRSQU5TQ09OU1QgCQkiNSIKKyNkZWZpbmUgUEtfQklOX0RFVklDRUtFWSAJCQkiNiIKKyNkZWZpbmUgUEtfSU5UX1dPUktNT0RFIAkJCSI3IgorI2RlZmluZSBQS19JTlRfT0ZGTElORU1BWEhPVVIgCQkiOCIKKyNkZWZpbmUgUEtfSU5UX1BVTFNFSU5ITUwgCQkJIjkiCisjZGVmaW5lIFBLX0JJTl9DSVRJWkVOX0NBUkROTwkJIjEwIgorI2RlZmluZSBQS19JTlRfV0FURVJMSU1JVCAJIAkJIjExIgorI2RlZmluZSBQS19JTlRfRkVFQU1PVU5UIAkJCSIxMiIKKyNkZWZpbmUgUEtfSU5UX0ZFRVVOSVQgCQkJCSIxMyIKKyNkZWZpbmUgUEtfSU5UX1ZBSUxEVElNRQkJCSIxNCIKKyNkZWZpbmUgUEtfSU5UX0FVVEhTVEFUVVMJCQkiMTUiCisjZGVmaW5lIFBLX0lOVF9QQVlTVEFUVVMJCQkiMTYiCisjZGVmaW5lIFBLX0lOVF9GRUVTVEFSVAkJCQkiMTciCisKKyNkZWZpbmUgU1BfQ01EX1VQR1JBREUgMHgyMCAgICAgICAgIAkvL9Taz9/J/by2CisjZGVmaW5lIFNQX0NNRF9UUkFOU0RUTF9BQ0NPVU5UIDB4MjIgICAgLy+8x9XLwffLrgorI2RlZmluZSBTUF9DTURfSEVBUlRCRUFUIDB4MjQgCQkJLy/QxMz4CisjZGVmaW5lIFNQX0NNRF9DQVJEX0FVVEhFTlRJQ0FUSU9OIDB4MjYJLy+/qNTaz9/Iz9akCisjZGVmaW5lIFNQX0NNRF9MT0dJTgkweDJDCQkJLy+1x8K8CisjZGVmaW5lIFNQX0NNRF9GQUNUT1JZX0xJTktfVEVTVCAweDJFCS8vuaSzp8G0wrey4srUCisjZGVmaW5lIFNQX0NNRF9TSE9SVFVSTAkweDI4CQkJLy+78cihtv7OrMLrtsy12Na3CisjZGVmaW5lIFNQX0NNRF9RUkNPREVfUEFZX1FVRVJZCTB4MkEJLy+2/s6swuvP+7fRyLfIzworCisjZGVmaW5lIElTX1BVU0hfRkxPVyhjbWQpICgweDEmKGNtZCkpCisKKyNwcmFnbWEgcGFjayhwdXNoKQorI3ByYWdtYSBwYWNrKDEpCisKK3R5cGVkZWYgc3RydWN0Cit7CisgIHVpbnQxNiBkYXRhbGVuOworICB1aW50OCBjb21tYW5kOworICB1aW50OCBleGNtZDsgLy8gx+vH88P8we7SqsfzxbzK/QorICB1aW50OCBmbGFnOworICB1aW50OCBkYXRhWzI1Nl07Cit9IHNwX3Byb3RvY29sX3JlcXVlc3RfdDsKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgdWludDE2IGRhdGFsZW47CisgIHVpbnQ4IGNvbW1hbmQ7CisgIHVpbnQ4IGV4Y21kOyAvLyDH68fzw/zB7tKqx/PFvMr9CisgIHVpbnQ4IGZsYWc7CisgIHVpbnQ4IHJldGNvZGU7CisgIHVpbnQ4IGRhdGFbMjU2XTsKK30gc3BfcHJvdG9jb2xfcmVzcG9uc2VfdDsKKworI3ByYWdtYSBwYWNrKHBvcCkKKwordHlwZWRlZiB1aW50OCgqIHByb3RvY29sX2NtZF9mdW5jX3QpKHNwX3Byb3RvY29sX3Jlc3BvbnNlX3QqIHJlc3AsIHNwX3Bvc190KiBwb3MpOworCit0eXBlZGVmIHN0cnVjdAoreworICB1aW50OCBjbWQ7CisgIHByb3RvY29sX2NtZF9mdW5jX3QgZnVuYzsKK30gcHJvdG9jb2xfY21kX3Q7CisKK3ZvaWQgc3BfY29tbXVuaWNhdGUoc3BfcG9zX3QqIHBvcyk7Cit1aW50MTYgc3BfY2FyZF9hdXRoZW50aWNhdGlvbihzcF9wb3NfdCogcG9zLCBzcF9jYXJkX3QqIGNhcmQpOwordWludDE2IHNwX2FzeW5jX2VxdWlwbWVudF9sb2dpbihzcF9wb3NfdCogcG9zKTsKK3VpbnQxNiBzcF9hc3luY19oZWFydGJlYXQoc3BfcG9zX3QqIHBvcyk7Cit1aW50MTYgc3BfYXN5bmNfdXBsb2FkX3RyYW5zZHRsKHNwX3Bvc190KiBwb3MsIHNwX3RyYW5zZHRsX3QqIGR0bCk7Cit1aW50MTYgc3BfcXJjb2RlX2luaXQoc3BfcG9zX3QqIHBvcywgc3BfY2FyZF90KiBjYXJkKTsKK3VpbnQxNiBzcF9xcmNvZGVfcXVlcnkoc3BfcG9zX3QqIHBvcywgc3BfY2FyZF90KiBjYXJkKTsKKworLy/NqNG2Cit1aW50OCBzcF9jb21tX2NhbGwoc3BfcG9zX3QqIHBvcywgc3BfcHJvdG9jb2xfcmVxdWVzdF90KiByZXEsCisgICAgICAgICAgICAgICAgICAgc3BfcHJvdG9jb2xfcmVzcG9uc2VfdCogcmVzcCwgaW50MzIgdGltZW91dF9tcyk7Cit2b2lkIHNwX3Byb3RvY29sX3JlcV9pbml0KHNwX3Byb3RvY29sX3JlcXVlc3RfdCogcmVxLCB1aW50OCBjb21tYW5kKTsKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9zdXB3aXNkb20vc3BfY29uZmlnLmggYi9zdXB3aXNkb20vc3BfY29uZmlnLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODFmNDE0MAotLS0gL2Rldi9udWxsCisrKyBiL3N1cHdpc2RvbS9zcF9jb25maWcuaApAQCAtMCwwICsxLDI4MCBAQAorI2lmbmRlZiBfU1BfQ09ORklHX0gKKyNkZWZpbmUgX1NQX0NPTkZJR19ICisKKyNpbmNsdWRlICJzcF92ZXJzaW9uLmgiCisjaW5jbHVkZSAiLi4vbmVjX2hhcmR3YXJlLmgiCisKKyNpZm5kZWYgaW50OAorI2RlZmluZSBpbnQ4IHNpZ25lZCBjaGFyCisjZW5kaWYKKworI2lmbmRlZiB1aW50OAorI2RlZmluZSB1aW50OCB1bnNpZ25lZCBjaGFyCisjZW5kaWYKKworI2lmbmRlZiBpbnQxNgorI2RlZmluZSBpbnQxNiBzaWduZWQgc2hvcnQKKyNlbmRpZgorCisjaWZuZGVmIHVpbnQxNgorI2RlZmluZSB1aW50MTYgdW5zaWduZWQgc2hvcnQKKyNlbmRpZgorCisjaWZuZGVmIGludDMyCisjZGVmaW5lIGludDMyIHNpZ25lZCBpbnQKKyNlbmRpZgorCisjaWZuZGVmIHVpbnQzMgorI2RlZmluZSB1aW50MzIgdW5zaWduZWQgaW50CisjZW5kaWYKKworI2lmbmRlZiBOVUxMCisjZGVmaW5lIE5VTEwgKCh2b2lkICopMCkKKyNlbmRpZgorCisjZGVmaW5lIERFVl9UWVBFICJHNDAxMzAyIgorI2RlZmluZSBERVZfT0ZGTElORV9ERUZBVUxUX0hPVVIgMTY4CisjZGVmaW5lIERFVl9CTEtCSVRNQVBfRE9ORSAxOTg0CisjZGVmaW5lIERFVl9NQVhfREVWSUNFTk8gOTkKKworI2RlZmluZSBQUk9fVkVSU0lPTiBHSVRfVkVSU0lPTgorI2RlZmluZSBCVUlMRF9EQVRFIF9fREFURV9fIAkJLy8gIiAiIF9fVElNRV9fCisjaWZkZWYgRkxPV1NFTlNPUgorI2RlZmluZSBQVVJDSEFTRV9GTE9XU0VOU09SIDEKKyNlbHNlCisjZGVmaW5lIFBVUkNIQVNFX0ZMT1dTRU5TT1IgMAorI2VuZGlmCisKK2VudW0KK3sKKyAgU1BfS0VZX05PTkUgPSAweEZGLAorICBTUF9LRVlfMCA9IDAsCisgIFNQX0tFWV8xID0gMSwKKyAgU1BfS0VZXzIgPSAyLAorICBTUF9LRVlfMyA9IDMsCisgIFNQX0tFWV80ID0gNCwKKyAgU1BfS0VZXzUgPSA1LAorICBTUF9LRVlfNiA9IDYsCisgIFNQX0tFWV83ID0gNywKKyAgU1BfS0VZXzggPSA4LAorICBTUF9LRVlfOSA9IDksCisgIFNQX0tFWV9FTlRFUiA9IDEyLAorICBTUF9LRVlfQ0xFQVIgPSAxMQorfTsKKwordHlwZWRlZiBlbnVtCit7CisgIFBBWU1PREVfSU5JVCA9IDAsCisgIFBBWU1PREVfQ0FSRCA9IDEsCisgIFBBWU1PREVfUVJDT0RFID0gMiwKK30gc3BfcGF5bW9kZV9lOworCisjcHJhZ21hIHBhY2socHVzaCkKKyNwcmFnbWEgcGFjaygxKQorCit0eXBlZGVmIHN0cnVjdAoreworICB1aW50OCBjb21tYW5kOworICB1aW50MzIgc2VuZHRpbWU7Cit9IHNwX2NvbW1fc3RhdHVzX3Q7CisKK3R5cGVkZWYgc3RydWN0Cit7CisgIHVpbnQzMiBsYXN0X2hlYXJ0YmVhdF90aWNrZXI7CisgIHVpbnQ4IGh3VmVyWzE2XTsJCQkJLy/J6LG4sOaxvrrFCisgIHVpbnQ4IG9mZmxpbmVSZWNvcmRDb3VudDsJCS8vzrTJz7SrwffLrsr9wb8KKyAgdWludDggd29ya01vZGU7CQkJCS8vtbHHsNe0zKyjrDAtv9XP0KOsMS3V/dTayrnTw6OsOS3SycvGucrVzworICB1aW50OCBoZWFydF9zdGF0dXM7CS8v0MTM+Ne0zKyjrDAts/XKvLuvo6wxLbeiy82jrDItvdPK1QorfSBzcF9oZWFydGJlYXRfdDsKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgdWludDMyIGxhc3RfbG9naW5fdGlja2VyOworICB1aW50OCBsb2dpbl9mbGFnOwkJCS8vMC3OtMeptb2jrDEt0tHHqbW9o6wyLdeiz/oKKyAgdWludDggaHdWZXJbMTZdOwkJCS8vyeixuLDmsb66xQorICB1aW50OCBkZXZpY2VLZXk7CQkJLy/J6LG4uaTX98Pc1L8KK30gc3BfbG9naW5fdDsKKworLy/P+7fRwffLrtDFz6K94bm5Cit0eXBlZGVmIHN0cnVjdAoreworICB1aW50OCBkZXZwaHlpZFs0XTsJLy/J6LG4seC6xQorICB1aW50OCB0cmFuc2RhdGVbM107CS8vWVlERE1NuPHKvcjVxtoKKyAgdWludDggdHJhbnN0aW1lWzNdOworICB1aW50OCBiaWxsbm9bMTBdOwkJLy+9u9LXtqm1pbHgusUKKyAgdWludDggY2FyZHBoeWlkWzRdOwkvL7+ozu/A7WlkCisgIHVpbnQ4IHRyYW5zd2F5OwkJLy+9u9LXt73KvaOsMC2z9cq8o6wxLcuiv6ijrDItyajC6worICB1aW50OCBhbW91bnQ7CQkJLy/KtbzK1qe4tr3wtu4KKyAgdWludDggcGFpZEFtb3VudDsJCS8v0tHWp7i2vfC27qOstbHKx8/Iv9u30cSjyr3PwqOsvMfCvNLR1qe4trXEvfC27gorICB1aW50OCBmbG93c2Vuc29yczsJLy/KtbzKyrnTw7zGwb+jqLWlzrujurDZusHJ/aOpCisgIHVpbnQ4IHRyYW5zdGF0dXM7CQkvL8H3y67XtMyso6wwLbP1yryjrDEts8m5pqOsMi3Kp7DcCisgIHVpbnQ4IHJldmVyc2VbMV07CQkvL9W8zru3+worICB1aW50OCBjcmNbMl07IAkJLy9sZW49MzIKK30gc3BfdHJhbnNkdGxfdDsKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgdWludDggb2ZmbGluZV93b3JrX2hvdXI7ICAgCS8v1MrQ7c3Ru/q5pNf31+6089ChyrEJICAwIH4gMTY4INChyrGjrDAgse3KvrK7z97WxgorICB1aW50OCBkZXZpY2VubzsgCQkJCS8vu/q6xQorICB1aW50OCBkZXZwaHlpZFs0XTsJCQkvL87vwO1JRAorICB1aW50OCBmbG93c2Vuc29yX3VuaXQ7IAkJLy8gMTAwbWy21NOmwvaz5cr9CisgIHVpbnQ4IHVudXNlZFs1NF07CisgIHVpbnQ4IGxvZ2luX2ZsYWc7IAkJCS8vMC3OtMeptb2jrDEt0tHHqbW9o6wyLdLR16LP+gorICB1aW50OCBjcmNbMl07Cit9IHNwX2NvbmZpZ190OworCit0eXBlZGVmIHN0cnVjdAoreworICB1aW50MzIgdHJhbnNhZGRyOwkJLy+12Na3CisgIHVpbnQxNiB0aGlzX29mZnNldDsJLy/Ss8ar0sbOuworICB1aW50OCBjcmNbMl07IAkJLy9sZW49OAorfSBzcF9sYXN0X3RyYW5zZHRsX3Q7CisKK3R5cGVkZWYgc3RydWN0Cit7CisgIHVpbnQzMiB0cmFuc2FkZHI7CQkvL7XY1rcKKyAgdWludDE2IHRoaXNfb2Zmc2V0OwkvL9KzxqvSxs67CisgIHVpbnQ4IGNyY1syXTsgCQkvL2xlbj04Cit9IHNwX3VuY29uZmlybV90cmFuc2R0bF90OworCisvL8/7t9HQxc+iCit0eXBlZGVmIHN0cnVjdAoreworICB1aW50MzIgZnJlZV91c2VkX251bTsgLy/S0cPit9HKudPDvMbBvyi1pc67OjEwMG1sKQorCisgIHVpbnQ4IHN0YXJ0dGltZVs2XTsgIAkvL8uiv6jKsbzkCisgIC8qz8i/27/uuvOz9suuKi8KKyAgdWludDE2IHByZXBhaWRfbnVtOwkvL7WltM6/ydPDvMbBvyi1pc67OjEwMG1sKQorICB1aW50MTYgcHJlcGFpZF9hbXQ7CS8vtaW0ztSkuLa98MeuCisKKyAgdWludDE2IHBhaWRfbnVtOyAJCS8vwNu8xr/J08O8xsG/KLWlzrs6MTAwbWwpCisgIHVpbnQxNiBwYWlkX3N1bTsgIAkvL8DbvMbWp7i2vfC27gorICB1aW50MTYgdXNlZF9udW07IAkJLy/S0cq508O8xsG/KLWlzrs6MTAwbWwpCit9IHNwX3B1cmNoYXNlX3Q7CisKKy8vtv7OrMLr0MXPogordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgY2hhciBxcmNvZGVfdXJsWzMyXTsgCS8vL7b+zqzC67bMwusKKyAgdWludDMyIHN0YXJ0dGltZTsJCS8vtv7OrMLrv6rKvMqxvOQKKyAgdWludDMyIG5vd3RpbWU7CQkvL7b+zqzC67Wxx7DKsbzkCisgIHVpbnQzMiB2YWxpZHRpbWU7CQkvL7b+zqzC69PQ0KfKsbzkCisgIHVpbnQ4IGF1dGhzdGF0dXM7CQkvL9PDu6fIt8jP17TMrKOoMC3OtMi3yM+jrDEt0tHIt8jPo6kKKyAgdWludDggcGF5c3RhdHVzOwkJLy/Wp7i217TMrKOoMC20/danuLajrCAxLdLR1qe4tqOsIDIttPq/26OsMyAtILnYsdWjqQorICB1aW50OCBwYWlkQW1vdW50OwkJLy+1sbaptaXKx9LR1qe4tte0zKyjrLe1u9jWp7i2s8m5pr3wtu4go6wgt/HU8srHIDAKK30gc3BfcXJjb2RlX3Q7CisKKy8vyeixuLLOyv0KK3R5cGVkZWYgc3RydWN0Cit7CisgIHVpbnQ4IGRldl9vZmZsaW5lX21heGhvdXI7CS8vyeixuM3Ru/rX7rTzuaTX98qxvOQo0KHKsSksMC2yu8/e1sYsMTY4LcSsyM/KsbzkCisgIHVpbnQ4IGZsb3dzZW5zb3JfdW5pdDsgCQkvLzEwMG1sttTTpsL2s+XK/QorICB1aW50OCBod1ZlclsxNl07CQkJCS8vyeixuLDmsb66xQorICB1aW50OCBkZXZpY2VLZXlbOF07CQkJCS8vyeixuLmk1/fD2NS/CisgIHVpbnQ4IHdvcmtfbW9kZTsJCQkJLy/J6LG4uaTX99e0zKwKK30gc3Bfc3lzY29uZl90OworCisKK3R5cGVkZWYgc3RydWN0Cit7CisgIHVpbnQ4IHRhZ190eXBlOworICB1aW50OCBjdXJfc3RhdGU7CisgIHVpbnQ4IHNucls4XTsKKyAgdWludDMyIGZpcnN0dGljazsJLy/K17TOtsG/qMqxvOQKKyAgdWludDMyIGxhc3R0aWNrOwkvL9fuuvO2wb+oyrG85AorfSBzcF9jYXJkc3RhdGVfdDsKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgdWludDggY3VycmVudF9zdGF0ZTsJLy+1scewuaTX99e0zKwKKyAgdWludDE2IGVycmNvZGU7CisgIHVpbnQzMiB0aWNrOworICB1aW50OCBsYXN0X3N0YXRlOwkJLy/Jz9K7tM7XtMysCisKKyAgdWludDggcGF1c2Vfc3RhdHVzOwkvL9PDu6fKudPD17TMrKOsMC0tyrnTw9bQo6whMC0t1N3NoworICB1aW50MzIgcGF1c2VfdGljazsJCS8v1N3No8qxtcTKsbzkCit9IHNwX2NhcmR3b3Jrc3RhdGVfdDsKKworLy/Lrr/YxvfJ6LG40MXPogordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgdWludDggbGlua19zdGF0OwkJCS8vMC0twbTCt7mk1/fW0KOsMS0tLcG0wre/ydPDCisgIHVpbnQ4IGxvYWRfcGFyYV9zdGF0dXM7CS8vMC0t1f2zo6OsITAtLbTtzvMKKyAgdWludDggZGV2aWNlbm87CisgIHVpbnQ4IGxvY2FsX2RldmljZW5vOwkJCisgIHVpbnQ4IGRldnBoeWlkWzRdOworCisgIHNwX2NhcmRzdGF0ZV90IGNhcmRTdGF0ZTsKKyAgc3Bfc3lzY29uZl90IHN5c2NvbmY7CisgIHNwX2NvbW1fc3RhdHVzX3QgbGFzdF9jb21tX3N0YXR1czsKKyAgc3BfaGVhcnRiZWF0X3QgaGVhcnRiZWF0OworICBzcF9sb2dpbl90IGRldmxvZ2luOworICBzcF9sYXN0X3RyYW5zZHRsX3QgbGFzdF90cmFuc2R0bDsKKyAgc3BfdW5jb25maXJtX3RyYW5zZHRsX3QgdW5jb25maXJtX3RyYW5zZHRsOworCisgIHNwX3BheW1vZGVfZSBwYXltb2RlOworICBzcF9wdXJjaGFzZV90IHB1cmNoYXNlOworfSBzcF9wb3NfdDsKKworLy+30cLK0MXPogordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgdWludDggZmVlX3N0YXJ0OwkvL1Sw2brByf2/qsq8OworICB1aW50OCBmZWVfdW5pdDsJLy+1pbTOv9u30b/J08PB98G/o6i1pc67OjEwMG1so6kKKyAgdWludDggZmVlX2FtdDsJLy+1pbTOv9u30b3wtu6jrNLUt9bOqrWlzrsKK30gc3BfZmVlcGFyYV90OworCisvL7+oveG5udDFz6IKK3R5cGVkZWYgc3RydWN0Cit7CisgIHVpbnQ4IGNhcmRwaHlpZFs0XTsKKyAgdWludDggY2l0aXplbl9jYXJkbm9bMTJdOwkvL8rQw/G6xQorICB1aW50OCBjYXJkdHlwZTsKKyAgdWludDggZXhwaXJlZGF0ZVs0XTsKKworICB1aW50OCB3YXRlcmxpbWl0OwkJLy+1pbTOs/bLrsnPz96jqDEwMG1so6kKKyAgdWludDggYmlsbG5vWzEwXTsJCS8vvbvS17aptaWx4LrFLEJDRMLrCisgIHNwX3FyY29kZV90IHFyY29kZTsJLy+2/s6swusKKyAgc3BfZmVlcGFyYV90IGZlZXBhcmE7Cit9IHNwX2NhcmRfdDsKKworI3ByYWdtYSBwYWNrKHBvcCkKKwordHlwZWRlZiBlbnVtCit7CisgIEhFQVJUX0lOSVQgPSAwLAorICBIRUFSVF9TRU5EID0gMSwKKyAgSEVBUlRfUkVDViA9IDIKK30gc3BfaGVhcnRfc3RhdHVzX3Q7CisKK3R5cGVkZWYgZW51bQoreworICBUQUdfVFlQRV9VTktPTldOID0gMCwgIAkvL8601qq/qMDg0M0KKyAgVEFHX1RZUEVfTTEsICAgICAgICAgCQkvL00xv6gKKyAgVEFHX1RZUEVfQ1BVICAgICAgICAgCQkvL0NQVb+oCit9IHNwX2NhcmRUYWdfdHlwZTsKKwordHlwZWRlZiBlbnVtCit7CisgIFNUQVRFX05PTkUgPSAwLAorICBTVEFURV9FWElTVCwKKyAgU1RBVEVfRVJST1I9MHhGRgorfSBzcF9jYXJkU3RhdGVfdHlwZTsKKwordHlwZWRlZiBlbnVtCit7CisgIENBUkRXT1JLU1RBVFVTX05PTkUgPSAwLAorICBDQVJEV09SS1NUQVRVU19SRUFEWSwKKyAgQ0FSRFdPUktTVEFUVVNfV09SS0lORywKKyAgQ0FSRFdPUktTVEFUVVNfV09SS0lOR19XSVRIT1VUQ0FSRCwKKyAgQ0FSRFdPUktTVEFUVVNfUEFVU0UsCisgIENBUkRXT1JLU1RBVFVTX1NUT1BQSU5HLAorICBDQVJEV09SS1NUQVRVU19TVE9QUEVELAorICBDQVJEV09SS1NUQVRVU19UQUtFT0ZGLAorICBDQVJEV09SS1NUQVRVU19XT1JLRVJST1IsCisgIENBUkRXT1JLU1RBVFVTX0ZFRUNBUkRfV09SS0lORywKKyAgQ0FSRFdPUktTVEFUVVNfU0VUX0RFViwKKyAgQ0FSRFdPUktTVEFUVVNfRVJST1I9MHhmZgorfSBzcF9jYXJkV29ya1N0YXRlX3R5cGU7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvc3Vwd2lzZG9tL3NwX2NvbnN0YW50LmggYi9zdXB3aXNkb20vc3BfY29uc3RhbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMDgxZmMwCi0tLSAvZGV2L251bGwKKysrIGIvc3Vwd2lzZG9tL3NwX2NvbnN0YW50LmgKQEAgLTAsMCArMSw1OCBAQAorI2lmbmRlZiBfU1BfQ09OU1RBTlRfSF8KKyNkZWZpbmUgX1NQX0NPTlNUQU5UX0hfCisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKyNkZWZpbmUgUkNfQ1BVX0ZJTEVOT1RGT1VORCAweDZBODIKKyNkZWZpbmUgUkNfQ1BVX1JFQ09SRE5PVEZPVU5EIDB4NkE4MworI2RlZmluZSBSQ19DUFVfTk9NQUMgICAgICAgIDB4OTQwNgorCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworI2RlZmluZSBSQ19TVUNDRVNTIAkJCQkJCTAgCS8vILPJuaYKKyNkZWZpbmUgUkNfUFNBTV9FUlIJCQkJCQkxICAgLy9TQU24tM67yqew3AorI2RlZmluZSBSQ19DQVJEX0xPR0lOCQkJCQkyCS8v0enWpMPc1L/Kp7DcCisjZGVmaW5lIFJDX0NBUkRfUkVBRAkJCQkJMwkvL7bBv6jKp7DcCisjZGVmaW5lIFJDX0NBUkRfV1JJVEUJCQkJCTQJLy/QtL+oyqew3AorI2RlZmluZSBSQ19GTEFTSF9FUlIJCQkJCTUJLy9GTEFTSLTtzvMKKyNkZWZpbmUgUkNfSEFSRFdBUkVfRVJSCQkJCQk2ICAvL9OyvP6809TYtO3O8worI2RlZmluZSBSQ19GTEFTSF9OT19SSUdIVAkJCQk3IC8vt8e/ydC0Zmxhc2gKKworI2RlZmluZSBSQ19DQVJEX05PUklHSFQgCQkJCTExCS8vv6jO3sioz94KKyNkZWZpbmUgUkNfQ0FSRF9FWFBJUkVECQkJCQkxMiAJLy+5/cbav6gKKyNkZWZpbmUgUkNfQ0FSRF9BVVRIRU5USUNBVElPTgkJCTEzCS8vv6jIz9akyqew3AorI2RlZmluZSBSQ19DQVJEX0xPU1QJCQkJCTE0CS8vutrD+7Wlv6gKKyNkZWZpbmUgUkNfQ0FSRE5PX0VYQ0VQVAkJCQkxNwkvL7+ousXS7LOjCisjZGVmaW5lIFJDX0NBUkRfVElNRU9VVAkJCQkJMTgJLy/KudPDyrG85Myrs6QKKyNkZWZpbmUgUkNfQ0FSREJBTF9FWENFUFQJCQkJMTkJLy+/qNPgtu7S7LOjCisjZGVmaW5lIFJDX0NBUkRCQUxfTEFDSwkJCQkJMjAJLy+/qNPgtu6yu9fjCisKKyNkZWZpbmUgUkNfREVWUEhZSURfTk9UU0VUCQkJCTIxIAkvL8nosbi12Na3zrTJ6NbDCisjZGVmaW5lIFJDX0ZFRVJBVEVfTk9UU0VUCQkJCTIyIAkvL7fRwsrOtLP1yry7rworI2RlZmluZSBSQ19ERVZfT0ZGTElORV9FUlJPUgkJCTIzICAvLyDJ6LG4zdG7+rmk1/fMq7OkCisjZGVmaW5lIFJDX0ZJTEUwOV9DUkNfRVJSCQkJCTI1CS8vLy+8x8K8Q1JDtO3O8worI2RlZmluZSBSQ19GSUxFMTBfQ1JDX0VSUgkJCQkyNiAJLy/Lrr/Yx66w/ENSQ7TtzvMKKyNkZWZpbmUgUkNfQ0FSRF9JTlZBTElECQkJCQkyNwkvL87e0Ke/qAorI2RlZmluZSBSQ19GRUVOVU1fRVJST1IJCQkJCTI4CS8vt9HCyrj2yv207c7zCisjZGVmaW5lIFJDX05PVFNVUFBPUlQJCQkJCTI5CS8vsrvWp7PWCQkKKyNkZWZpbmUgUkNfTk9UX1NBTUVfQ0FSRAkJCQkzMAkvL7K7zay/qAorCisjZGVmaW5lIFJDX01PREVfTk9UX1NVUFBPUlQJCQkJNDIJLy/P+7fRxKPKvbK71qez1gorI2RlZmluZSBSQ19VUERQUk9HX0VSUgkJCQkJNDMJLy/J/by2yqew3AorCisjZGVmaW5lIFJDX0NPTkZQQVJBX0NSQ19FUlIgICAJCQk1NSAgLy/F5NbDss7K/WNyY7TtzvMKKyNkZWZpbmUgUkNfVFJBTlNEVExfRlVMTAkJCQk1OAkvLwnB98uu0tHC+gorI2RlZmluZSBSQ19UUkFOU0RUTF9OT19FUlIJCQkJNTkJLy/B98uuusXS7LOjCisjZGVmaW5lIFJDX0RFVklDRU5PX09VVAkJCQkJNjAJLy8gu/q6xbn9tPMKKworI2RlZmluZSBSQ19RUkNPREVfRkFJTFVSRQkJCQk2MQkvL7b+zqzC67vxyKHKp7DcCisjZGVmaW5lIFJDX1FSQ09ERV9USU1FT1VUCQkJCTYyCS8vtv7OrMLrs6zKsQorI2RlZmluZSBSQ19RUkNPREVfUVVFUllfRkFJTAkJCTYzCS8vtv7OrMLryM/WpMqnsNwKKworI2RlZmluZSBSQ19ERVZfTE9HSU5fRkFJTAkJCQk2NAkvL8nosbi1x8K8yqew3AorI2RlZmluZSBSQ19ERVZfTk9UX0xPR0lOCQkJCTY1CS8vyeixuM60x6m1vQorI2RlZmluZSBSQ19ERVZfRkFVTFQJCQkJCTY2ICAvL8nosbjSycvGucrVzworI2RlZmluZSBSQ19ERVZfTk9TRVRfRkxPV1NFTlNPUl9VTklUCTY3ICAvL8nosbjB98G/vMbL47WlzrvOtMno1sMKKyNkZWZpbmUgU1RBVFVTX0tFRVBPUEVOCQkJCQkxCS8vs6O/qr+oCisjZGVmaW5lIFNUQVRVU19DTE9TRUQJCQkJCTAJLy/Ioc/7s6O/qr+oCisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9zdXB3aXNkb20vc3BfY29uc3VtZS5jIGIvc3Vwd2lzZG9tL3NwX2NvbnN1bWUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ODdlMmE0Ci0tLSAvZGV2L251bGwKKysrIGIvc3Vwd2lzZG9tL3NwX2NvbnN1bWUuYwpAQCAtMCwwICsxLDcyOSBAQAorI2luY2x1ZGUgInNwX3V0aWwuaCIKKyNpbmNsdWRlICJzcF9jb25zdGFudC5oIgorI2luY2x1ZGUgInNwX2Rpc3BsYXkuaCIKKyNpbmNsdWRlICJzcF9mbGFzaC5oIgorI2luY2x1ZGUgInNwX2NhcmQuaCIKKyNpbmNsdWRlICJzcF9kZXMuaCIKKyNpbmNsdWRlICJzcF9tc2dwYWNrLmgiCisjaW5jbHVkZSAic3BfbWVudS5oIgorI2luY2x1ZGUgInNwX2RhdGEuaCIKKyNpbmNsdWRlICJzcF9jb25zdW1lLmgiCisjaW5jbHVkZSAic3BfY29tbXVuaWNhdGUuaCIKKworc3RhdGljIGludCBjb3VudCA9IDA7CitzdGF0aWMgdWludDE2IHNwX2NhbGNfcGF5YW10X2J5X2Zsb3dzZW5zb3Ioc3BfcG9zX3QqIHBvcywgc3BfY2FyZF90KiBjYXJkKQoreworICB1aW50MzIgdXNlZGNvdW50ID0gMDsKKworICBpZihwb3MtPnB1cmNoYXNlLnBhaWRfbnVtIDwgMSkKKyAgeworICAgIC8vytfPyNSkv9vSu7HKCisgICAgaWYoY2FyZC0+ZmVlcGFyYS5mZWVfc3RhcnQgPiAwKQorICAgIHsKKyAgICAgIC8vx7Buy67D4rfRCisgICAgICBwb3MtPnB1cmNoYXNlLnByZXBhaWRfbnVtID0gY2FyZC0+ZmVlcGFyYS5mZWVfc3RhcnQ7CisgICAgICBwb3MtPnB1cmNoYXNlLnByZXBhaWRfYW10ID0gMDsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgIHBvcy0+cHVyY2hhc2UucHJlcGFpZF9udW0gPSBjYXJkLT5mZWVwYXJhLmZlZV91bml0OworICAgICAgcG9zLT5wdXJjaGFzZS5wcmVwYWlkX2FtdCA9IGNhcmQtPmZlZXBhcmEuZmVlX2FtdDsKKyAgICB9CisgICAgcG9zLT5wdXJjaGFzZS51c2VkX251bSA9IDA7CisgICAgcmV0dXJuIDA7CisgIH0KKyAgLy91c2VkY291bnQgPSBzcF9mbG93c2Vuc29yX2dldF9jb3VudCgpL3Bvcy0+c3lzY29uZi5mbG93c2Vuc29yX3VpbnQ7CisgIHVzZWRjb3VudCA9IGNvdW50L3Bvcy0+c3lzY29uZi5mbG93c2Vuc29yX3VuaXQ7CisgIGNvdW50Kys7CisgIGlmKHVzZWRjb3VudCA8IHBvcy0+cHVyY2hhc2UucGFpZF9udW0pCisgIHsKKyAgICAvL8O709C077W9v9u30cH3wb8KKyAgICByZXR1cm4gMDsKKyAgfQorICBwb3MtPnB1cmNoYXNlLnVzZWRfbnVtID0gcG9zLT5wdXJjaGFzZS5wYWlkX251bTsKKyAgcG9zLT5wdXJjaGFzZS5wcmVwYWlkX251bSA9IGNhcmQtPmZlZXBhcmEuZmVlX3VuaXQ7CisgIHBvcy0+cHVyY2hhc2UucHJlcGFpZF9hbXQgPSBjYXJkLT5mZWVwYXJhLmZlZV9hbXQ7CisgIHJldHVybiAwOworfQorCisvL7zH1cvEo8q9z/u30QordWludDE2IHNwX2FjY291bnRfcHVyY2hhc2UodWludDE2IGFtb3VudCkKK3sKKyAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB1aW50OCBnUElDQ19TTlJbNF07CQkJICAgLyogv6jGrFNOusUgKi8KKwordm9pZCBzcF90ZXN0X2NhcmRfc3RhdGUoc3BfcG9zX3QqIHBvcywgc3BfY2FyZHdvcmtzdGF0ZV90KiBjYXJkV29ya1N0YXRlLCB1aW50MzIgdGljaykKK3sKKyAgdWludDggcmV0ID0gMDsKKyAgc3BfY2FyZF90IGNhcmRwY2Q7CisgIHN3aXRjaChwb3MtPmNhcmRTdGF0ZS5jdXJfc3RhdGUpCisgIHsKKyAgY2FzZSBTVEFURV9OT05FOgorICAgIE1FTUNMRUFSKCZjYXJkcGNkLCBzaXplb2YoY2FyZHBjZCkpOworICAgIGlmKHNwX2NhcmRfcmVxdWVzdCgmY2FyZHBjZCkgPT0gMCkKKyAgICB7CisgICAgICBNRU1DUFkocG9zLT5jYXJkU3RhdGUuc25yLCBjYXJkcGNkLmNhcmRwaHlpZCwgc2l6ZW9mKGNhcmRwY2QuY2FyZHBoeWlkKSk7CisgICAgICBNRU1DUFkoZ1BJQ0NfU05SLCBjYXJkcGNkLmNhcmRwaHlpZCwgc2l6ZW9mKGNhcmRwY2QuY2FyZHBoeWlkKSk7CisgICAgICBwb3MtPmNhcmRTdGF0ZS50YWdfdHlwZSA9IGNhcmRwY2QuY2FyZHR5cGU7CisgICAgICBwb3MtPmNhcmRTdGF0ZS5jdXJfc3RhdGUgPSBTVEFURV9FWElTVDsKKyAgICAgIHBvcy0+Y2FyZFN0YXRlLmZpcnN0dGljayA9IHRpY2s7CisgICAgICBwb3MtPmNhcmRTdGF0ZS5sYXN0dGljayA9IHRpY2s7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICBjYXJkV29ya1N0YXRlLT5lcnJjb2RlID0gUkNfQ0FSRF9JTlZBTElEOworICAgIH0KKyAgICBicmVhazsKKyAgY2FzZSBTVEFURV9FWElTVDoKKyAgICAvL7zssuK/qMrHt/G8zND4tObU2gorICAgIGlmKHBvcy0+Y2FyZFN0YXRlLnRhZ190eXBlID09IFRBR19UWVBFX0NQVSkKKyAgICB7CisgICAgICByZXQgPSBzcF9jaGVja19jcHVfZXhpc3QoKTsKKyAgICAgIGlmKHJldCkKKyAgICAgIHsKKyAgICAgICAgcG9zLT5jYXJkU3RhdGUuY3VyX3N0YXRlID0gU1RBVEVfTk9ORTsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgICBlbHNlCisgICAgICB7CisgICAgICAgIG1lbWNweShwb3MtPmNhcmRTdGF0ZS5zbnIsIGdQSUNDX1NOUiwgOCk7CisgICAgICAgIHBvcy0+Y2FyZFN0YXRlLmxhc3R0aWNrID0gdGljazsKKyAgICAgIH0KKyAgICB9CisgICAgYnJlYWs7CisgIGRlZmF1bHQ6CisgICAgcG9zLT5jYXJkU3RhdGUuY3VyX3N0YXRlID0gU1RBVEVfTk9ORTsKKyAgICBicmVhazsKKyAgfQorfQorCitzdGF0aWMgdWludDE2IHNwX2Rldl9jb25maWdfY2hlY2soY29uc3Qgc3BfcG9zX3QqIHBvcykKK3sKKyAgdWludDggZGV2cGh5aWRbNF07CisgIE1FTUNMRUFSKGRldnBoeWlkLCBzaXplb2YoZGV2cGh5aWQpKTsKKyAgaWYoTUVNQ01QKHBvcy0+ZGV2cGh5aWQsIGRldnBoeWlkLCBzaXplb2YoZGV2cGh5aWQpKSA9PSAwKQorICB7CisgICAgcmV0dXJuIFJDX0RFVlBIWUlEX05PVFNFVDsKKyAgfQorICBpZihwb3MtPmRldmxvZ2luLmxvZ2luX2ZsYWcgIT0gMSkKKyAgeworICAgIHJldHVybiBSQ19ERVZfTk9UX0xPR0lOOworICB9CisgIGlmKHBvcy0+c3lzY29uZi53b3JrX21vZGUgPT0gOSkKKyAgeworICAgIHJldHVybiBSQ19ERVZfRkFVTFQ7CisgIH0KKyAgaWYocG9zLT5zeXNjb25mLmZsb3dzZW5zb3JfdW5pdCA9PSAwKQorICB7CisgICAgcmV0dXJuIFJDX0RFVl9OT1NFVF9GTE9XU0VOU09SX1VOSVQ7CisgIH0KKyAgcmV0dXJuIDA7Cit9CisKKy8vtsHIobXa0ruxys60yc+0q8H3y67P+7fRyNXG2sqxvOQKK3N0YXRpYyB1aW50OCBzcF9yZWFkX3VuY29uZmlybV9maXJzdF9yZWNvcmQodWludDggdGVybXRpbWVbNl0pCit7CisgIHJldHVybiAxOworfQorCitzdGF0aWMgdWludDE2IHNwX2Rldl9vZmZsaW5lX2NoZWNrKGNvbnN0IHNwX3Bvc190KiBwb3MpCit7CisgIHVpbnQ4IHJldDsKKyAgdWludDggcmVjb3JkX3Rlcm10aW1lWzZdOworICB1aW50OCBjdGltZVs2XTsKKyAgaW50MzIgbm93dGltZTsKKyAgaW50MzIgZHRsdGltZTsKKworICBpZihwb3MtPnN5c2NvbmYuZGV2X29mZmxpbmVfbWF4aG91ciA9PSAwKQorICB7CisgICAgcmV0dXJuIDA7CisgIH0KKyAgbWVtc2V0KHJlY29yZF90ZXJtdGltZSwwLHNpemVvZihyZWNvcmRfdGVybXRpbWUpKTsKKyAgcmV0ID0gc3BfcmVhZF91bmNvbmZpcm1fZmlyc3RfcmVjb3JkKHJlY29yZF90ZXJtdGltZSk7CisgIGlmKHJldCkKKyAgeworICAgIHJldHVybiAwOworICB9CisgIHNwX2dldF9iY2R0aW1lKGN0aW1lKTsKKyAgbm93dGltZSA9IGZvcm1hdF90aW1lX2NvdmVydF9zZWNzKGN0aW1lKTsKKyAgZHRsdGltZSA9IGZvcm1hdF90aW1lX2NvdmVydF9zZWNzKHJlY29yZF90ZXJtdGltZSk7CisKKyAgLyoqCisgICrB98uuyrG85LTz09rJ6LG4yrHW08fSs6y5/TI00KHKsQorICAqKi8KKyAgaWYoKGR0bHRpbWUgPiBub3d0aW1lKSAmJgorICAgICAgKChkdGx0aW1lIC0gbm93dGltZSkgPiAoMjQqNjAqREVMQVlfVElNRTYwcykpKQorICB7CisgICAgaWYoc3BfdmFsdmVfc3RhdGUoKSkKKyAgICB7CisgICAgICBzcF92YWx2ZV9vZmYoKTsKKyAgICB9CisgICAgcmV0dXJuIFJDX0RFVl9PRkZMSU5FX0VSUk9SOworICB9CisgIC8qKgorICAqwffLrsqxvOTQodPayeixuMqx1tPH0rOsuf3j0Na1CisgICoqLworICBpZigoZHRsdGltZSA8IG5vd3RpbWUpICYmCisgICAgICAoKG5vd3RpbWUgLSBkdGx0aW1lKSA+IChwb3MtPnN5c2NvbmYuZGV2X29mZmxpbmVfbWF4aG91ciozNjAwKSkpCisgIHsKKyAgICBpZihzcF92YWx2ZV9zdGF0ZSgpKQorICAgIHsKKyAgICAgIHNwX3ZhbHZlX29mZigpOworICAgIH0KKyAgICByZXR1cm4gUkNfREVWX09GRkxJTkVfRVJST1I7CisgIH0KKyAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB1aW50MTYgc3BfY2FyZF92YWxpZF9jaGVjayhjb25zdCBzcF9jYXJkX3QqIGNhcmQpCit7CisgIHVpbnQ4IGN0aW1lWzZdOworICAvKgorICBpZihjYXJkLT5jYXJkbm8gPCAxKQorICB7CisgICAgcmV0dXJuIFJDX0NBUkROT19FWENFUFQ7CisgIH0KKyAgKi8KKyAgc3BfZ2V0X2JjZHRpbWUoY3RpbWUpOworICBpZihtZW1jbXAoY2FyZC0+ZXhwaXJlZGF0ZSArMSwgY3RpbWUsIDMpIDwgMCkKKyAgeworICAgIHJldHVybiBSQ19DQVJEX0VYUElSRUQ7CisgIH0KKyAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB1aW50MTYgc3BfY2hlY2tfZGV2KGNvbnN0IHNwX3Bvc190KiBwb3MpCit7CisgIHVpbnQxNiByZXQgPSAwOworICB1aW50OCBjdGltZVs2XTsKKyAgTUVNQ0xFQVIoY3RpbWUsIHNpemVvZihjdGltZSkpOworICBzcF9nZXRfYmNkdGltZShjdGltZSk7CisgIGlmKHBvcy0+bG9hZF9wYXJhX3N0YXR1cykKKyAgeworICAgIHJldHVybiBwb3MtPmxvYWRfcGFyYV9zdGF0dXM7CisgIH0KKyAgcmV0ID0gc3BfZGV2X2NvbmZpZ19jaGVjayhwb3MpOworICBpZihyZXQpCisgIHsKKyAgICByZXR1cm4gcmV0OworICB9CisgIHJldCA9IHNwX2Rldl9vZmZsaW5lX2NoZWNrKHBvcyk7CisgIGlmKHJldCkKKyAgeworICAgIHJldHVybiByZXQ7CisgIH0KKworICByZXR1cm4gMDsKK30KKworc3RhdGljIHVpbnQxNiBkb19pZGxlKHNwX3Bvc190KiBwb3MpCit7CisgIHVpbnQ4IGN0aW1lWzZdOworICBNRU1DTEVBUihjdGltZSwgc2l6ZW9mKGN0aW1lKSk7CisgIHNwX2dldF9iY2R0aW1lKGN0aW1lKTsKKyAgc2hvd19ob21lKHBvcyk7CisgIHJldHVybiAwOworfQorCitzdGF0aWMgdWludDE2IGRvX25ldyhzcF9wb3NfdCogcG9zLCBzcF9jYXJkX3QqIGNhcmQpCit7CisgIHVpbnQxNiByZXQgPSAwOworICBzcF90cmFuc2R0bF90IHJlY29yZDsKKyAgTUVNQ0xFQVIoJnJlY29yZCwgc2l6ZW9mKHJlY29yZCkpOworICBjYXJkLT5jYXJkdHlwZSA9IHBvcy0+Y2FyZFN0YXRlLnRhZ190eXBlOworICBNRU1DUFkoY2FyZC0+Y2FyZHBoeWlkLCBwb3MtPmNhcmRTdGF0ZS5zbnIsIDQpOworICByZXQgPSBzcF9jYXJkX3JlYWQoY2FyZCk7CisgIGlmKHJldCkKKyAgeworICAgIHJldCA9IFJDX0NBUkRfSU5WQUxJRDsKKyAgICByZXR1cm4gcmV0OworICB9CisgIHJldCA9IHNwX2NhcmRfYXV0aGVudGljYXRpb24ocG9zLCBjYXJkKTsKKyAgaWYocmV0KQorICB7CisgICAgcmV0ID0gUkNfQ0FSRF9BVVRIRU5USUNBVElPTjsKKyAgICByZXR1cm4gcmV0OworICB9CisgIGlmKHBvcy0+bG9hZF9wYXJhX3N0YXR1cykKKyAgeworICAgIHJldHVybiBwb3MtPmxvYWRfcGFyYV9zdGF0dXM7CisgIH0KKyAgcmV0ID0gc3BfZGV2X2NvbmZpZ19jaGVjayhwb3MpOworICBpZihyZXQpCisgIHsKKyAgICByZXR1cm4gcmV0OworICB9CisgIHJldCA9IHNwX2Rldl9vZmZsaW5lX2NoZWNrKHBvcyk7CisgIGlmKHJldCkKKyAgeworICAgIHJldHVybiByZXQ7CisgIH0KKworICByZXQgPSBzcF9jYXJkX3ZhbGlkX2NoZWNrKGNhcmQpOworICBpZihyZXQpCisgIHsKKyAgICByZXR1cm4gcmV0OworICB9CisgIHJldCA9IHNwX3ByZXBhcmVfYmVoYWxmX3RyYW5zZHRsKHBvcywgY2FyZCwgJnJlY29yZCk7CisgIGlmKHJldCkKKyAgeworICAgIHJldHVybiByZXQ7CisgIH0KKyAgcG9zLT5zeXNjb25mLndvcmtfbW9kZSA9IDE7CisgIHBvcy0+cGF5bW9kZSA9IFBBWU1PREVfQ0FSRDsKKyAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB1aW50MTYgZG9fc3RhcnQoc3BfcG9zX3QqIHBvcykKK3sKKyAgTUVNQ0xFQVIoJnBvcy0+cHVyY2hhc2Usc2l6ZW9mKHNwX3B1cmNoYXNlX3QpKTsKKyAgc3BfZmxvd3NlbnNvcl9jb3VudF9jbGVhcigpOworICBzcF9nZXRfYmNkdGltZShwb3MtPnB1cmNoYXNlLnN0YXJ0dGltZSk7CisgIHNwX3ZhbHZlX29uKCk7CisgIHNob3dfbW9uZXkocG9zLCBwb3MtPnB1cmNoYXNlLnBhaWRfc3VtKTsKKyAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB1aW50MTYgZG9fd29ya19jaGVjayhjb25zdCBzcF9wb3NfdCogcG9zKQoreworICAvL8XQts/P+7fRvfC27sjnufu089PaMjC78tXfwazQ+M/7t9GzrLn9MtChyrGjrNTyzaPWubP2y64KKyAgaWYocG9zLT5wdXJjaGFzZS51c2VkX251bSA+PSAxMDAwIHx8IHBvcy0+cHVyY2hhc2UucGFpZF9zdW0gPj0gMTAwMCkKKyAgeworICAgIHJldHVybiBSQ19DQVJEX1RJTUVPVVQ7CisgIH0KKyAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB1aW50MTYgZG9fd29yayhzcF9wb3NfdCogcG9zLCBzcF9jYXJkX3QqIGNhcmQpCit7CisgIHVpbnQxNiByZXQgPSAwOworICBzcF92YWx2ZV9vbigpOworICByZXQgPSBkb193b3JrX2NoZWNrKHBvcyk7CisgIGlmKHJldCkKKyAgeworICAgIHJldHVybiByZXQ7CisgIH0KKyAgLy+8xsvjz/u30b3wtu4KKyAgcmV0ID0gc3BfY2FsY19wYXlhbXRfYnlfZmxvd3NlbnNvcihwb3MsIGNhcmQpOworICBpZihyZXQpCisgIHsKKyAgICByZXR1cm4gcmV0OworICB9CisgIGlmKHBvcy0+cHVyY2hhc2UucHJlcGFpZF9hbXQgPiAwKQorICB7CisgICAgLy/ErMjPvMfVy8Sjyr0KKyAgICByZXQgPSBzcF9hY2NvdW50X3B1cmNoYXNlKHBvcy0+cHVyY2hhc2UucHJlcGFpZF9hbXQpOworICAgIGlmKHJldCkKKyAgICB7CisgICAgICByZXR1cm4gcmV0OworICAgIH0KKyAgfQorCisgIGlmKHBvcy0+cHVyY2hhc2UucHJlcGFpZF9udW0gPiAwKQorICB7CisgICAgcG9zLT5wdXJjaGFzZS5wYWlkX251bSArPSBwb3MtPnB1cmNoYXNlLnByZXBhaWRfbnVtOworICAgIHBvcy0+cHVyY2hhc2UucGFpZF9zdW0gKz0gcG9zLT5wdXJjaGFzZS5wcmVwYWlkX2FtdDsKKyAgICBwb3MtPnB1cmNoYXNlLnByZXBhaWRfbnVtID0gMDsKKyAgICBwb3MtPnB1cmNoYXNlLnByZXBhaWRfYW10ID0gMDsKKyAgfQorICBzaG93X21vbmV5KHBvcywgcG9zLT5wdXJjaGFzZS5wYWlkX3N1bSk7CisgIHJldHVybiAwOworfQorCitzdGF0aWMgdWludDE2IGRvX3N0b3Aoc3BfcG9zX3QqIHBvcywgc3BfY2FyZF90KiBjYXJkKQoreworICB1aW50MTYgcmV0OworICBzcF90cmFuc2R0bF90IHJlY29yZDsKKyAgc3BfdmFsdmVfb2ZmKCk7CisKKyAgaWYocG9zLT5wdXJjaGFzZS5wYWlkX251bSA+IDApCisgIHsKKyAgICBNRU1DTEVBUigmcmVjb3JkLCBzaXplb2YocmVjb3JkKSk7CisgICAgcmV0ID0gc3BfcHJlcGFyZV9iZWxvd190cmFuc2R0bChwb3MsIGNhcmQsICZyZWNvcmQpOworICAgIGlmKHJldCkKKyAgICB7CisgICAgICByZXR1cm4gcmV0OworICAgIH0KKyAgfQorICBwb3MtPnBheW1vZGUgPSBQQVlNT0RFX0lOSVQ7CisgIHBvcy0+c3lzY29uZi53b3JrX21vZGUgPSAwOworICBjb3VudCA9IDA7CisgIE1FTUNMRUFSKCZwb3MtPnB1cmNoYXNlLCBzaXplb2Yoc3BfcHVyY2hhc2VfdCkpOworICBNRU1DTEVBUihjYXJkLCBzaXplb2Yoc3BfY2FyZF90KSk7CisgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBkb19wYXVzZShzcF9wb3NfdCogcG9zKQoreworICBjaGFyIG1zZ1sxN107CisgIE1FTUNMRUFSKG1zZywgc2l6ZW9mKG1zZykpOworICBzcF92YWx2ZV9vZmYoKTsKKyAgaWYocG9zLT5wdXJjaGFzZS5wYWlkX3N1bSA+IDApCisgIHsKKyAgICBzcHJpbnRmKG1zZywiubK8xiAlMC4yZtSqIixwb3MtPnB1cmNoYXNlLnBhaWRfc3VtLzEwMC4wZik7CisgICAgZGlzcF9oaW50X2luZm9fdHdvKHBvcywiveHK+LzGt9EiLG1zZyxERUxBWV9USU1FMnMpOworICB9CisgIGVsc2UKKyAgeworICAgIGRpc3BfaGludF9pbmZvX3R3byhwb3MsIr3hyvi8xrfRIiwiw+K30cq508MiLERFTEFZX1RJTUUycyk7CisgIH0KK30KKworc3RhdGljIHZvaWQgZG9fZXJyb3Ioc3BfcG9zX3QqIHBvcywgdWludDE2IGVycmNvZGUpCit7CisgIGlmKGVycmNvZGUpCisgIHsKKyAgICBzaG93X2Vycm9yKHBvcywistnX98qnsNw6IixlcnJjb2RlKTsKKyAgICBwb3MtPnBheW1vZGUgPSBQQVlNT0RFX0lOSVQ7CisgICAgcG9zLT5zeXNjb25mLndvcmtfbW9kZSA9IDA7CisgICAgY291bnQgPSAwOworICAgIE1FTUNMRUFSKCZwb3MtPnB1cmNoYXNlLCBzaXplb2Yoc3BfcHVyY2hhc2VfdCkpOworICB9Cit9CisKK3N0YXRpYyB1aW50MTYgc3BfY2FyZF9leGlzdF9oYW5kbGUoc3BfcG9zX3QqIHBvcywgc3BfY2FyZF90KiBjYXJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcF9jYXJkd29ya3N0YXRlX3QqIGNhcmRXb3JrU3RhdGUpCit7CisgIHVpbnQxNiByZXQgPSAwOworICB1aW50MTYgZXJyID0gMDsKKyAgc3BfY2FyZF90IGNhcmRwY2Q7CisgIHN3aXRjaChjYXJkV29ya1N0YXRlLT5jdXJyZW50X3N0YXRlKQorICB7CisgIGNhc2UgQ0FSRFdPUktTVEFUVVNfTk9ORToKKyAgICBpZih0aW1lcl9nZXRfdGlja2VyKCkgLSBwb3MtPmNhcmRTdGF0ZS5maXJzdHRpY2sgPCAxNTAwKQorICAgIHsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXQgPSBkb19uZXcocG9zLCBjYXJkKTsKKyAgICBpZihyZXQpCisgICAgeworICAgICAgaWYoMHgxMDE4ID09IHJldCB8fCAweDIwMDEgPT0gcmV0fHwKKyAgICAgICAgICAweDEwMTQgPT0gcmV0IHx8IDB4MTAzMCA9PSByZXQpCisgICAgICB7CisgICAgICAgIGlmKDAgPT0gc3BfY2FyZF9yZXF1ZXN0KCZjYXJkcGNkKSkKKyAgICAgICAgeworICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICB9CisgICAgICBjYXJkV29ya1N0YXRlLT5lcnJjb2RlID0gcmV0OworICAgICAgY2FyZFdvcmtTdGF0ZS0+Y3VycmVudF9zdGF0ZSA9IENBUkRXT1JLU1RBVFVTX0VSUk9SOworICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhcmRXb3JrU3RhdGUtPmN1cnJlbnRfc3RhdGUgPSBDQVJEV09SS1NUQVRVU19SRUFEWTsKKyAgICBicmVhazsKKyAgY2FzZSBDQVJEV09SS1NUQVRVU19SRUFEWToKKyAgICBpZihNRU1DTVAocG9zLT5jYXJkU3RhdGUuc25yLCBjYXJkLT5jYXJkcGh5aWQsIDQpICE9IDApCisgICAgeworICAgICAgY2FyZFdvcmtTdGF0ZS0+Y3VycmVudF9zdGF0ZSA9IENBUkRXT1JLU1RBVFVTX05PTkU7CisgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0ID0gZG9fc3RhcnQocG9zKTsKKyAgICBpZihyZXQpCisgICAgeworICAgICAgY2FyZFdvcmtTdGF0ZS0+Y3VycmVudF9zdGF0ZSA9IENBUkRXT1JLU1RBVFVTX0VSUk9SOworICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhcmRXb3JrU3RhdGUtPmN1cnJlbnRfc3RhdGUgPSBDQVJEV09SS1NUQVRVU19XT1JLSU5HOworICAgIGJyZWFrOworICBjYXNlIENBUkRXT1JLU1RBVFVTX1BBVVNFOgorICAgIGNhcmRXb3JrU3RhdGUtPmN1cnJlbnRfc3RhdGUgPSBDQVJEV09SS1NUQVRVU19XT1JLSU5HOworICAgIGJyZWFrOworICBjYXNlIENBUkRXT1JLU1RBVFVTX1dPUktJTkc6CisgICAgaWYoTUVNQ01QKHBvcy0+Y2FyZFN0YXRlLnNuciwgY2FyZC0+Y2FyZHBoeWlkLCA0KSAhPSAwKQorICAgIHsKKyAgICAgIHJldCA9IFJDX05PVF9TQU1FX0NBUkQ7CisgICAgICBjYXJkV29ya1N0YXRlLT5jdXJyZW50X3N0YXRlID0gQ0FSRFdPUktTVEFUVVNfU1RPUFBJTkc7CisgICAgICBicmVhazsKKyAgICB9CisgICAgY2FyZFdvcmtTdGF0ZS0+cGF1c2Vfc3RhdHVzID0gMDsKKyAgICByZXQgPSBkb193b3JrKHBvcywgY2FyZCk7CisgICAgaWYocmV0KQorICAgIHsKKyAgICAgIHNob3dfZXJyb3IocG9zLCLP+7fRyqew3CIscmV0KTsKKyAgICAgIGVyciA9IGRvX3N0b3AocG9zLCBjYXJkKTsKKyAgICAgIGlmKGVyciAhPSAwKQorICAgICAgeworICAgICAgICByZXQgPSBlcnI7CisgICAgICB9CisgICAgICBjYXJkV29ya1N0YXRlLT5jdXJyZW50X3N0YXRlID0gQ0FSRFdPUktTVEFUVVNfRVJST1I7CisgICAgICBicmVhazsKKyAgICB9CisgICAgaWYocG9zLT5wdXJjaGFzZS5wYWlkX251bSA+IGNhcmQtPndhdGVybGltaXQpCisgICAgeworICAgICAgZGlzcF9oaW50X2luZm8ocG9zLCLS0bTvtaW0zrP2y67Jz8/eIixERUxBWV9USU1FMnMpOworICAgICAgY2FyZFdvcmtTdGF0ZS0+Y3VycmVudF9zdGF0ZSA9IENBUkRXT1JLU1RBVFVTX1NUT1BQSU5HOworICAgIH0KKyAgICBjYXJkV29ya1N0YXRlLT5wYXVzZV90aWNrID0gdGltZXJfZ2V0X3RpY2tlcigpOworICAgIGJyZWFrOworICBjYXNlIENBUkRXT1JLU1RBVFVTX1NUT1BQSU5HOgorICAgIHJldCA9IGRvX3N0b3AocG9zLCBjYXJkKTsKKyAgICBpZihyZXQpCisgICAgeworICAgICAgY2FyZFdvcmtTdGF0ZS0+ZXJyY29kZSA9IHJldDsKKyAgICAgIGNhcmRXb3JrU3RhdGUtPmN1cnJlbnRfc3RhdGUgPSBDQVJEV09SS1NUQVRVU19FUlJPUjsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXJkV29ya1N0YXRlLT5jdXJyZW50X3N0YXRlID0gQ0FSRFdPUktTVEFUVVNfU1RPUFBFRDsKKyAgICBicmVhazsKKyAgY2FzZSBDQVJEV09SS1NUQVRVU19TVE9QUEVEOgorICAgIGNhcmRXb3JrU3RhdGUtPmN1cnJlbnRfc3RhdGUgPSBDQVJEV09SS1NUQVRVU19OT05FOworICAgIGJyZWFrOworICBjYXNlIENBUkRXT1JLU1RBVFVTX0ZFRUNBUkRfV09SS0lORzoKKyAgICBpZihNRU1DTVAocG9zLT5jYXJkU3RhdGUuc25yLCBjYXJkLT5jYXJkcGh5aWQsIDQpICE9IDApCisgICAgeworICAgICAgY2FyZFdvcmtTdGF0ZS0+Y3VycmVudF9zdGF0ZSA9IENBUkRXT1JLU1RBVFVTX05PTkU7CisgICAgICBicmVhazsKKyAgICB9CisgICAgLy9zaG93X21lbnVfb3B0aW9ucygpOworICAgIGJyZWFrOworICBjYXNlIENBUkRXT1JLU1RBVFVTX0VSUk9SOgorICAgIGRvX2Vycm9yKHBvcywgY2FyZFdvcmtTdGF0ZS0+ZXJyY29kZSk7CisgICAgY2FyZFdvcmtTdGF0ZS0+Y3VycmVudF9zdGF0ZSA9IENBUkRXT1JLU1RBVFVTX05PTkU7CisgICAgYnJlYWs7CisgIGRlZmF1bHQ6CisgICAgRGVsYXlfbXMoREVMQVlfVElNRTIwMG1zKTsKKyAgICBjYXJkV29ya1N0YXRlLT5jdXJyZW50X3N0YXRlID0gQ0FSRFdPUktTVEFUVVNfTk9ORTsKKyAgICBicmVhazsKKyAgfQorICBjYXJkV29ya1N0YXRlLT5lcnJjb2RlID0gcmV0OworICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgdWludDE2IHNwX2NhcmRfbm9leGlzdF9oYW5kbGUoc3BfcG9zX3QqIHBvcywgc3BfY2FyZF90KiBjYXJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwX2NhcmR3b3Jrc3RhdGVfdCogY2FyZFdvcmtTdGF0ZSkKK3sKKyAgLy/T0L+otb3O3r+oCisgIHVpbnQxNiByZXQgPSAwOworICBzd2l0Y2goY2FyZFdvcmtTdGF0ZS0+Y3VycmVudF9zdGF0ZSkKKyAgeworICBjYXNlIENBUkRXT1JLU1RBVFVTX05PTkU6CisgICAgZG9faWRsZShwb3MpOworICAgIGJyZWFrOworICBjYXNlIENBUkRXT1JLU1RBVFVTX1JFQURZOgorICAgIGNhcmRXb3JrU3RhdGUtPmN1cnJlbnRfc3RhdGUgPSBDQVJEV09SS1NUQVRVU19OT05FOworICAgIGJyZWFrOworICBjYXNlIENBUkRXT1JLU1RBVFVTX1dPUktJTkc6CisgICAgY2FyZFdvcmtTdGF0ZS0+Y3VycmVudF9zdGF0ZSA9IENBUkRXT1JLU1RBVFVTX1BBVVNFOworICAgIGJyZWFrOworICBjYXNlIENBUkRXT1JLU1RBVFVTX1BBVVNFOgorICAgIGlmKE1FTUNNUChwb3MtPmNhcmRTdGF0ZS5zbnIsIGNhcmQtPmNhcmRwaHlpZCwgNCkgPT0gMCkKKyAgICB7CisgICAgICAvL7+oxMPX39K7t9bW09auxNrErMjP1N3No8q508MKKyAgICAgIGlmKCh0aW1lcl9nZXRfdGlja2VyKCkgLSBjYXJkV29ya1N0YXRlLT5wYXVzZV90aWNrKSA8PSBERUxBWV9USU1FNjBzKQorICAgICAgeworICAgICAgICBpZighY2FyZFdvcmtTdGF0ZS0+cGF1c2Vfc3RhdHVzKQorICAgICAgICB7CisgICAgICAgICAgZG9fcGF1c2UocG9zKTsKKyAgICAgICAgICBzaG93X2hvbWUocG9zKTsKKyAgICAgICAgfQorICAgICAgICBzaG93X2hvbWUocG9zKTsKKyAgICAgICAgY2FyZFdvcmtTdGF0ZS0+cGF1c2Vfc3RhdHVzID0gMTsKKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgIHsKKyAgICAgICAgY2FyZFdvcmtTdGF0ZS0+Y3VycmVudF9zdGF0ZSA9IENBUkRXT1JLU1RBVFVTX1NUT1BQSU5HOworICAgICAgICBjYXJkV29ya1N0YXRlLT5wYXVzZV9zdGF0dXMgPSAwOworICAgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgY2FyZFdvcmtTdGF0ZS0+Y3VycmVudF9zdGF0ZSA9IENBUkRXT1JLU1RBVFVTX1NUT1BQSU5HOworICAgICAgY2FyZFdvcmtTdGF0ZS0+cGF1c2Vfc3RhdHVzID0gMDsKKyAgICB9CisgICAgY2FyZFdvcmtTdGF0ZS0+bGFzdF9zdGF0ZSA9IENBUkRXT1JLU1RBVFVTX1BBVVNFOworICAgIGJyZWFrOworICBjYXNlIENBUkRXT1JLU1RBVFVTX1NUT1BQSU5HOgorICAgIHJldCA9IGRvX3N0b3AocG9zLCBjYXJkKTsKKyAgICBpZihyZXQpCisgICAgeworICAgICAgY2FyZFdvcmtTdGF0ZS0+Y3VycmVudF9zdGF0ZSA9IENBUkRXT1JLU1RBVFVTX0VSUk9SOworICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhcmRXb3JrU3RhdGUtPmN1cnJlbnRfc3RhdGUgPSBDQVJEV09SS1NUQVRVU19TVE9QUEVEOworICAgIGNhcmRXb3JrU3RhdGUtPnRpY2sgPSB0aW1lcl9nZXRfdGlja2VyKCk7CisgICAgYnJlYWs7CisgIGNhc2UgQ0FSRFdPUktTVEFUVVNfU1RPUFBFRDoKKyAgICBpZih0aW1lcl9nZXRfdGlja2VyKCkgLSBjYXJkV29ya1N0YXRlLT50aWNrID4gREVMQVlfVElNRTNzKQorICAgIHsKKyAgICAgIGNhcmRXb3JrU3RhdGUtPmN1cnJlbnRfc3RhdGUgPSBDQVJEV09SS1NUQVRVU19OT05FOworICAgICAgY2FyZFdvcmtTdGF0ZS0+bGFzdF9zdGF0ZSA9IGNhcmRXb3JrU3RhdGUtPmN1cnJlbnRfc3RhdGU7CisgICAgICBjYXJkV29ya1N0YXRlLT50aWNrID0gMDsKKyAgICB9CisgICAgYnJlYWs7CisgIGNhc2UgQ0FSRFdPUktTVEFUVVNfU0VUX0RFVjoKKyAgICBpZihzcF9jaGVja19wYXNzd2QocG9zLCAiyeixuLncwO3D3MLrIiwgIlx4OVx4MVx4NFx4M1x4OFx4NyIpID09IDApCisgICAgeworICAgICAgc3BfbWVudV9vcHRpb25zKHBvcyk7CisgICAgfQorICAgIGNhcmRXb3JrU3RhdGUtPmN1cnJlbnRfc3RhdGUgPSBDQVJEV09SS1NUQVRVU19OT05FOworICAgIGJyZWFrOworICBjYXNlIENBUkRXT1JLU1RBVFVTX0VSUk9SOgorICAgIGRvX2Vycm9yKHBvcyxjYXJkV29ya1N0YXRlLT5lcnJjb2RlKTsKKyAgICBjYXJkV29ya1N0YXRlLT5jdXJyZW50X3N0YXRlID0gQ0FSRFdPUktTVEFUVVNfTk9ORTsKKyAgICBicmVhazsKKyAgZGVmYXVsdDoKKyAgICBEZWxheV9tcyhERUxBWV9USU1FMjAwbXMpOworICAgIGNhcmRXb3JrU3RhdGUtPmN1cnJlbnRfc3RhdGUgPSBDQVJEV09SS1NUQVRVU19OT05FOworICAgIGJyZWFrOworICB9CisgIGNhcmRXb3JrU3RhdGUtPmVycmNvZGUgPSByZXQ7CisgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBzcF9jYXJkX3QgQ0FSRDsKK3ZvaWQgc3BfY2FyZF9oYW5kbGUoc3BfcG9zX3QqIHBvcywgc3BfY2FyZHdvcmtzdGF0ZV90KiBjYXJkV29ya1N0YXRlKQoreworICBpZihwb3MtPmNhcmRTdGF0ZS5jdXJfc3RhdGUpCisgIHsKKyAgICBzcF9jYXJkX2V4aXN0X2hhbmRsZShwb3MsICZDQVJELCBjYXJkV29ya1N0YXRlKTsKKyAgfQorICBlbHNlCisgIHsKKyAgICBzcF9jYXJkX25vZXhpc3RfaGFuZGxlKHBvcywgJkNBUkQsIGNhcmRXb3JrU3RhdGUpOworICB9Cit9CisKK3ZvaWQgc3BfY29uZmlybV9wYXltb2RlKHNwX3Bvc190KiBwb3MsIHNwX2NhcmR3b3Jrc3RhdGVfdCogY2FyZFdvcmtTdGF0ZSkKK3sKKyAgdWludDgga2V5Y29kZSA9IFNQX0tFWV9OT05FOworICBrZXljb2RlID0gc3BfZ2V0X2tleSgpOworICAvL9Tav6jP+7fR1N3No8fpv/bPwrC0yM7S4rz8zqq94cr4tbHHsM/7t9HXtMysCisgIGlmKGtleWNvZGUgPj0gU1BfS0VZXzAgJiYga2V5Y29kZSA8PSBTUF9LRVlfRU5URVIgJiYgcG9zLT5jYXJkU3RhdGUuY3VyX3N0YXRlID09IFNUQVRFX05PTkUKKyAgICAgICYmIGNhcmRXb3JrU3RhdGUtPmN1cnJlbnRfc3RhdGUgPT0gQ0FSRFdPUktTVEFUVVNfUEFVU0UgJiYgcG9zLT5wYXltb2RlID09IFBBWU1PREVfQ0FSRCkKKyAgeworICAJY2FyZFdvcmtTdGF0ZS0+Y3VycmVudF9zdGF0ZSA9IENBUkRXT1JLU1RBVFVTX1NUT1BQSU5HOworCXJldHVybjsKKyAgfQorICAvL8/7t9HEo8q9s/XKvLuv17TMrM/CsLTIt8jPvPzRodTxtv7OrMLrz/u30QorICBpZigoa2V5Y29kZSA9PSBTUF9LRVlfRU5URVIpICYmIChwb3MtPnBheW1vZGUgPT0gUEFZTU9ERV9JTklUKSkKKyAgeworICAgIGNhcmRXb3JrU3RhdGUtPmN1cnJlbnRfc3RhdGUgPSBDQVJEV09SS1NUQVRVU19OT05FOworICAgIHBvcy0+cGF5bW9kZSA9IFBBWU1PREVfUVJDT0RFOworCXJldHVybjsKKyAgfQorICAvL7b+zqzC68Sjyr3PwrC0yKHP+7z8zqrNo9a5uaTX9worICBpZigocG9zLT5wYXltb2RlID09IFBBWU1PREVfUVJDT0RFKSAmJiAoa2V5Y29kZSA9PSBTUF9LRVlfQ0xFQVIpKQorICB7CisgICAgY2FyZFdvcmtTdGF0ZS0+Y3VycmVudF9zdGF0ZSA9IENBUkRXT1JLU1RBVFVTX1NUT1BQSU5HOworCXJldHVybjsKKyAgfQorICAvL7C0MLz8vfjI68nosbiy2df3vefD5gorICBpZihrZXljb2RlID09IFNQX0tFWV8wICYmIChwb3MtPnBheW1vZGUgPT0gUEFZTU9ERV9JTklUKSkKKyAgeworICAgIGNhcmRXb3JrU3RhdGUtPmN1cnJlbnRfc3RhdGUgPSBDQVJEV09SS1NUQVRVU19TRVRfREVWOworCXJldHVybjsKKyAgfQorfQorCisvL7b+zqzC68/7t9G0psDtCit1aW50MzIgdGljayA9IDA7Cit2b2lkIHNwX3FyY29kZV9oYW5kbGUoc3BfcG9zX3QqIHBvcywgc3BfY2FyZHdvcmtzdGF0ZV90KiBjYXJkV29ya1N0YXRlKQoreworICB1aW50MTYgcmV0ID0gMDsKKyAgc3BfdHJhbnNkdGxfdCByZWNvcmQ7CisgIE1FTUNMRUFSKCZyZWNvcmQsIHNpemVvZihyZWNvcmQpKTsKKyAgc3dpdGNoKGNhcmRXb3JrU3RhdGUtPmN1cnJlbnRfc3RhdGUpCisgIHsKKyAgY2FzZSBDQVJEV09SS1NUQVRVU19OT05FOgorICAgIHJldCA9IHNwX2NoZWNrX2Rldihwb3MpOworICAgIGlmKHJldCkKKyAgICB7CisgICAgICBjYXJkV29ya1N0YXRlLT5lcnJjb2RlID0gcmV0OworICAgICAgY2FyZFdvcmtTdGF0ZS0+Y3VycmVudF9zdGF0ZSA9IENBUkRXT1JLU1RBVFVTX0VSUk9SOworICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldCA9IHNwX3FyY29kZV9pbml0KHBvcywgJkNBUkQpOworICAgIGlmKHJldCkKKyAgICB7CisgICAgICBjYXJkV29ya1N0YXRlLT5lcnJjb2RlID0gcmV0OworICAgICAgY2FyZFdvcmtTdGF0ZS0+Y3VycmVudF9zdGF0ZSA9IENBUkRXT1JLU1RBVFVTX0VSUk9SOworICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldCA9IHNwX3ByZXBhcmVfYmVoYWxmX3RyYW5zZHRsKHBvcywgJkNBUkQsICZyZWNvcmQpOworICAgIGlmKHJldCkKKyAgICB7CisgICAgICBjYXJkV29ya1N0YXRlLT5lcnJjb2RlID0gUkNfUVJDT0RFX1RJTUVPVVQ7CisgICAgICBjYXJkV29ya1N0YXRlLT5jdXJyZW50X3N0YXRlID0gQ0FSRFdPUktTVEFUVVNfRVJST1I7CisgICAgICBicmVhazsKKyAgICB9CisgICAgcG9zLT5zeXNjb25mLndvcmtfbW9kZSA9IDE7CisgICAgQ0FSRC5xcmNvZGUuc3RhcnR0aW1lID0gc3BfZ2V0X3RpY2tlcigpOworICAgIGRpc3BfaGludF9pbmZvKHBvcywgItX91NrJ+rPJtv7OrMLrIiwgREVMQVlfVElNRTJzKTsKKyAgICBjYXJkV29ya1N0YXRlLT5sYXN0X3N0YXRlID0gY2FyZFdvcmtTdGF0ZS0+Y3VycmVudF9zdGF0ZTsKKyAgICBjYXJkV29ya1N0YXRlLT5jdXJyZW50X3N0YXRlID0gQ0FSRFdPUktTVEFUVVNfUkVBRFk7CisgICAgYnJlYWs7CisgIGNhc2UgQ0FSRFdPUktTVEFUVVNfUkVBRFk6CisgICAgQ0FSRC5xcmNvZGUubm93dGltZSA9IHNwX2dldF90aWNrZXIoKTsKKyAgICBpZigoQ0FSRC5xcmNvZGUubm93dGltZSAtIENBUkQucXJjb2RlLnN0YXJ0dGltZSkgPiBDQVJELnFyY29kZS52YWxpZHRpbWUpCisgICAgeworICAgICAgc2hvd19ob21lKHBvcyk7CisgICAgICBzaG93X2hvbWVfcXJjb2RlKENBUkQucXJjb2RlLnFyY29kZV91cmwpOworICAgICAgaWYoQ0FSRC5xcmNvZGUubm93dGltZSAtIHRpY2sgPiBERUxBWV9USU1FM3MpCisgICAgICB7CisgICAgICAgIHRpY2sgPSBDQVJELnFyY29kZS5ub3d0aW1lOworICAgICAgICByZXQgPSBzcF9xcmNvZGVfcXVlcnkocG9zLCAmQ0FSRCk7CisgICAgICAgIGlmKCFyZXQgJiYgQ0FSRC5xcmNvZGUuYXV0aHN0YXR1cykKKyAgICAgICAgeworICAgICAgICAgIGRvX3N0YXJ0KHBvcyk7CisgICAgICAgICAgY2FyZFdvcmtTdGF0ZS0+bGFzdF9zdGF0ZSA9IGNhcmRXb3JrU3RhdGUtPmN1cnJlbnRfc3RhdGU7CisgICAgICAgICAgY2FyZFdvcmtTdGF0ZS0+Y3VycmVudF9zdGF0ZSA9IENBUkRXT1JLU1RBVFVTX1dPUktJTkc7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgIGNhcmRXb3JrU3RhdGUtPmVycmNvZGUgPSBSQ19RUkNPREVfVElNRU9VVDsKKyAgICAgIGNhcmRXb3JrU3RhdGUtPmN1cnJlbnRfc3RhdGUgPSBDQVJEV09SS1NUQVRVU19FUlJPUjsKKyAgICB9CisgICAgYnJlYWs7CisgIGNhc2UgQ0FSRFdPUktTVEFUVVNfV09SS0lORzoKKyAgICByZXQgPSBkb193b3JrKHBvcywgJkNBUkQpOworICAgIGlmKHJldCkKKyAgICB7CisgICAgICBzaG93X2Vycm9yKHBvcywiz/u30cqnsNwiLHJldCk7CisgICAgICByZXQgPSBkb19zdG9wKHBvcywgJkNBUkQpOworICAgICAgaWYocmV0KQorICAgICAgeworICAgICAgICBjYXJkV29ya1N0YXRlLT5lcnJjb2RlID0gcmV0OworICAgICAgfQorICAgICAgY2FyZFdvcmtTdGF0ZS0+Y3VycmVudF9zdGF0ZSA9IENBUkRXT1JLU1RBVFVTX0VSUk9SOworICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhcmRXb3JrU3RhdGUtPmxhc3Rfc3RhdGUgPSBjYXJkV29ya1N0YXRlLT5jdXJyZW50X3N0YXRlOworICAgIGNhcmRXb3JrU3RhdGUtPnBhdXNlX3RpY2sgPSBzcF9nZXRfdGlja2VyKCk7CisgICAgYnJlYWs7CisgIGNhc2UgQ0FSRFdPUktTVEFUVVNfU1RPUFBJTkc6CisgICAgaWYoY2FyZFdvcmtTdGF0ZS0+bGFzdF9zdGF0ZSA9PSBDQVJEV09SS1NUQVRVU19OT05FCisgICAgICAgIHx8IGNhcmRXb3JrU3RhdGUtPmxhc3Rfc3RhdGUgPT0gQ0FSRFdPUktTVEFUVVNfUkVBRFkpCisgICAgeworICAgICAgZGlzcF9oaW50X2luZm8ocG9zLCLIoc/7y6LC6yEiLCBERUxBWV9USU1FMnMpOworICAgICAgcG9zLT5wYXltb2RlID0gUEFZTU9ERV9JTklUOworICAgICAgcG9zLT5zeXNjb25mLndvcmtfbW9kZSA9IDA7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICBpZihjYXJkV29ya1N0YXRlLT5sYXN0X3N0YXRlICE9IENBUkRXT1JLU1RBVFVTX1BBVVNFKQorICAgICAgICBkb19wYXVzZShwb3MpOworICAgICAgcmV0ID0gZG9fc3RvcChwb3MsICZDQVJEKTsKKyAgICAgIGlmKHJldCkKKyAgICAgIHsKKyAgICAgICAgY2FyZFdvcmtTdGF0ZS0+ZXJyY29kZSA9IHJldDsKKyAgICAgICAgY2FyZFdvcmtTdGF0ZS0+Y3VycmVudF9zdGF0ZSA9IENBUkRXT1JLU1RBVFVTX0VSUk9SOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICB9CisgICAgY2FyZFdvcmtTdGF0ZS0+Y3VycmVudF9zdGF0ZSA9IENBUkRXT1JLU1RBVFVTX05PTkU7CisgICAgY2FyZFdvcmtTdGF0ZS0+bGFzdF9zdGF0ZSA9IGNhcmRXb3JrU3RhdGUtPmN1cnJlbnRfc3RhdGU7CisgICAgYnJlYWs7CisgIGNhc2UgQ0FSRFdPUktTVEFUVVNfRVJST1I6CisgICAgZG9fZXJyb3IocG9zLGNhcmRXb3JrU3RhdGUtPmVycmNvZGUpOworICAgIGNhcmRXb3JrU3RhdGUtPmN1cnJlbnRfc3RhdGUgPSBDQVJEV09SS1NUQVRVU19OT05FOworICAgIGNhcmRXb3JrU3RhdGUtPmxhc3Rfc3RhdGUgPSBjYXJkV29ya1N0YXRlLT5jdXJyZW50X3N0YXRlOworICAgIGJyZWFrOworICBkZWZhdWx0OgorICAgIERlbGF5X21zKERFTEFZX1RJTUUyMDBtcyk7CisgICAgYnJlYWs7CisgIH0KK30KZGlmZiAtLWdpdCBhL3N1cHdpc2RvbS9zcF9jb25zdW1lLmggYi9zdXB3aXNkb20vc3BfY29uc3VtZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2YmE2MmMKLS0tIC9kZXYvbnVsbAorKysgYi9zdXB3aXNkb20vc3BfY29uc3VtZS5oCkBAIC0wLDAgKzEsMTIgQEAKKyNpZm5kZWYgQ09OU1VNRV9IXworI2RlZmluZSBDT05TVU1FX0hfCisKKyNpbmNsdWRlICJzcF9jb25maWcuaCIKKwordm9pZCBzcF9jYXJkX2hhbmRsZShzcF9wb3NfdCogcG9zLCBzcF9jYXJkd29ya3N0YXRlX3QqIGNhcmRXb3JrU3RhdGUpOwordm9pZCBzcF90ZXN0X2NhcmRfc3RhdGUoc3BfcG9zX3QqIHBvcywgc3BfY2FyZHdvcmtzdGF0ZV90KiBjYXJkV29ya1N0YXRlLCB1aW50MzIgdGljayk7Cit2b2lkIHNwX3FyY29kZV9oYW5kbGUoc3BfcG9zX3QqIHBvcywgc3BfY2FyZHdvcmtzdGF0ZV90KiBjYXJkV29ya1N0YXRlKTsKK3ZvaWQgc3BfY29uZmlybV9wYXltb2RlKHNwX3Bvc190KiBwb3MsIHNwX2NhcmR3b3Jrc3RhdGVfdCogY2FyZFdvcmtTdGF0ZSk7CisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9zdXB3aXNkb20vc3BfZGF0YS5jIGIvc3Vwd2lzZG9tL3NwX2RhdGEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMjBiNDc2Ci0tLSAvZGV2L251bGwKKysrIGIvc3Vwd2lzZG9tL3NwX2RhdGEuYwpAQCAtMCwwICsxLDM2NiBAQAorI2luY2x1ZGUgInNwX2RhdGEuaCIKKyNpbmNsdWRlICJzcF91dGlsLmgiCisjaW5jbHVkZSAic3BfZmxhc2guaCIKKyNpbmNsdWRlICJzcF9jb25zdGFudC5oIgorI2luY2x1ZGUgInNwX2Rpc3BsYXkuaCIKKworI2RlZmluZSByZWNvcmRfYmVoYWxmX2xlbiAyNQorI2RlZmluZSByZWNvcmRfYmVsb3dfbGVuIDcKKworLy/Rrbu3vMfCvMO/0ruxysH3y668x8K8tcS12Na3CitzdGF0aWMgdWludDE2IHNwX3dyaXRlX2xhc3RfcmVjb3JkKHNwX3Bvc190KiBwb3MpCit7CisgIHVpbnQ4IGNyY1syXTsKKyAgdWludDggYnVmZltzaXplb2Yoc3BfbGFzdF90cmFuc2R0bF90KV07CisgIE1FTUNMRUFSKGJ1ZmYsIHNpemVvZihidWZmKSk7CisKKyAgcG9zLT5sYXN0X3RyYW5zZHRsLnRoaXNfb2Zmc2V0ICs9IHNpemVvZihzcF9sYXN0X3RyYW5zZHRsX3QpOworICBpZihwb3MtPmxhc3RfdHJhbnNkdGwudGhpc19vZmZzZXQgPj0gREVGX0ZMQVNIX1BhZ2VTaXplKQorICB7CisgICAgc3BfZmxhc2hfZXJhc2UoQUREUl9MQVNUX1RSQU5TTk8pOworICAgIHBvcy0+bGFzdF90cmFuc2R0bC50aGlzX29mZnNldCA9IDA7CisgIH0KKyAgc3BfcHJvdG9jb2xfY3JjKCh1aW50OCopJnBvcy0+bGFzdF90cmFuc2R0bCwgc2l6ZW9mKGJ1ZmYpLTIsIHBvcy0+bGFzdF90cmFuc2R0bC5jcmMpOworICBzcF9mbGFzaF93cml0ZShwb3MtPmxhc3RfdHJhbnNkdGwudGhpc19vZmZzZXQrQUREUl9MQVNUX1RSQU5TTk8sCisgICAgICAgICAgICAgICAgICh1aW50OCopJnBvcy0+bGFzdF90cmFuc2R0bCwgc2l6ZW9mKGJ1ZmYpKTsKKworICBzcF9mbGFzaF9yZWFkKHBvcy0+bGFzdF90cmFuc2R0bC50aGlzX29mZnNldCtBRERSX0xBU1RfVFJBTlNOTywgYnVmZiwgc2l6ZW9mKGJ1ZmYpKTsKKyAgc3BfcHJvdG9jb2xfY3JjKGJ1ZmYsIHNpemVvZihidWZmKS0yLCBjcmMpOworICBpZihNRU1DTVAocG9zLT5sYXN0X3RyYW5zZHRsLmNyYyxjcmMsMikhPTApCisgIHsKKyAgICBwb3MtPmxvYWRfcGFyYV9zdGF0dXMgPSBSQ19GTEFTSF9FUlI7CisgICAgcmV0dXJuIFJDX0ZMQVNIX0VSUjsKKyAgfQorICByZXR1cm4gMDsKK30KKworc3RhdGljIHVpbnQxNiBzcF93cml0ZV9iZWhhbGZfcmVjb3JkKHNwX3Bvc190KiBwb3MsIHNwX3RyYW5zZHRsX3QqIHJlY29yZCkKK3sKKyAgdWludDggYnVmW3JlY29yZF9iZWhhbGZfbGVuXTsKKyAgTUVNQ0xFQVIoYnVmLCBzaXplb2YoYnVmKSk7CisKKyAgcG9zLT5sYXN0X3RyYW5zZHRsLnRyYW5zYWRkciArPSBzaXplb2Yoc3BfdHJhbnNkdGxfdCk7CisgIGlmKHBvcy0+bGFzdF90cmFuc2R0bC50cmFuc2FkZHIgJSBERUZfRkxBU0hfUGFnZVNpemUgPT0gMCkKKyAgeworICAgIGlmKHBvcy0+bGFzdF90cmFuc2R0bC50cmFuc2FkZHIgPj0gQUREUl9UUkFOU0RUTF9FTkQpCisgICAgeworICAgICAgcG9zLT5sYXN0X3RyYW5zZHRsLnRyYW5zYWRkciA9IEFERFJfVFJBTlNEVExfQkVHSU47CisgICAgfQorICAgIHNwX2ZsYXNoX2VyYXNlKHBvcy0+bGFzdF90cmFuc2R0bC50cmFuc2FkZHIpOworICB9CisgIHNwX2ZsYXNoX3dyaXRlKHBvcy0+bGFzdF90cmFuc2R0bC50cmFuc2FkZHIsICh1aW50OCopcmVjb3JkLCBzaXplb2YoYnVmKSk7CisgIHJldHVybiAwOworfQorCitzdGF0aWMgdWludDE2IHNwX3dyaXRlX2JlbG93X3JlY29yZChzcF9wb3NfdCogcG9zLCBzcF90cmFuc2R0bF90KiByZWNvcmQpCit7CisgIHVpbnQ4IGNyY1syXTsKKyAgdWludDggYnVmZltzaXplb2Yoc3BfdHJhbnNkdGxfdCldOworICBNRU1DTEVBUihjcmMsIHNpemVvZihjcmMpKTsKKyAgTUVNQ0xFQVIoYnVmZiwgc2l6ZW9mKGJ1ZmYpKTsKKworICBzcF9wcm90b2NvbF9jcmMoKHVpbnQ4KilyZWNvcmQsIHNpemVvZihidWZmKS0yLCByZWNvcmQtPmNyYyk7CisgIHNwX2ZsYXNoX3dyaXRlKHBvcy0+bGFzdF90cmFuc2R0bC50cmFuc2FkZHIrcmVjb3JkX2JlaGFsZl9sZW4sCisgICAgICAgICAgICAgICAgICh1aW50OCopcmVjb3JkK3JlY29yZF9iZWhhbGZfbGVuLCByZWNvcmRfYmVsb3dfbGVuKTsKKyAgc3BfZmxhc2hfcmVhZChwb3MtPmxhc3RfdHJhbnNkdGwudHJhbnNhZGRyLCBidWZmLCBzaXplb2YoYnVmZikpOworICBzcF9wcm90b2NvbF9jcmMoYnVmZiwgc2l6ZW9mKGJ1ZmYpLTIsIGNyYyk7CisgIGlmKE1FTUNNUChyZWNvcmQtPmNyYywgY3JjLCAyKSAhPSAwKQorICB7CisgICAgcG9zLT5sb2FkX3BhcmFfc3RhdHVzID0gUkNfRkxBU0hfRVJSOworICAgIHJldHVybiBSQ19GTEFTSF9FUlI7CisgIH0KKyAgcmV0dXJuIDA7Cit9CisKKy8vz/u30bP1yry7r7rztOa0osnPsOuyv7fWwffLrqOst8DWuc/7t9HKp7Dczt7B98uu0MXPogordWludDE2IHNwX3ByZXBhcmVfYmVoYWxmX3RyYW5zZHRsKHNwX3Bvc190KiBwb3MsIHNwX2NhcmRfdCogY2FyZCwgc3BfdHJhbnNkdGxfdCogcmVjb3JkKQoreworICB1aW50OCByZXQgPSAwOworICB1aW50OCBjdGltZVs2XTsKKyAgTUVNQ0xFQVIoY3RpbWUsIHNpemVvZihjdGltZSkpOworCisgIHNwX2dldF9iY2R0aW1lKGN0aW1lKTsKKyAgbWVtY3B5KHJlY29yZC0+ZGV2cGh5aWQsIHBvcy0+ZGV2cGh5aWQsIHNpemVvZihwb3MtPmRldnBoeWlkKSk7CisgIG1lbWNweShyZWNvcmQtPnRyYW5zZGF0ZSwgY3RpbWUsIDMpOworICBtZW1jcHkocmVjb3JkLT50cmFuc3RpbWUsIGN0aW1lKzMsIDMpOworICBtZW1jcHkocmVjb3JkLT5iaWxsbm8sIGNhcmQtPmJpbGxubywgc2l6ZW9mKGNhcmQtPmJpbGxubykpOworICBtZW1jcHkocmVjb3JkLT5jYXJkcGh5aWQsIGNhcmQtPmNhcmRwaHlpZCwgc2l6ZW9mKGNhcmQtPmNhcmRwaHlpZCkpOworICBpZihwb3MtPnBheW1vZGUgPT0gUEFZTU9ERV9RUkNPREUpCisgIHsKKyAgICByZWNvcmQtPnRyYW5zd2F5ID0gMjsKKyAgfQorICBlbHNlCisgIHsKKyAgICByZWNvcmQtPnRyYW5zd2F5ID0gMTsKKyAgfQorICByZXQgPSBzcF93cml0ZV9iZWhhbGZfcmVjb3JkKHBvcywgcmVjb3JkKTsKKyAgaWYocmV0KQorICAgIHJldHVybiByZXQ7CisgIHJldHVybiBzcF93cml0ZV9sYXN0X3JlY29yZChwb3MpOworfQorCisvL8j0z/u30bPJuaajrLTmtKLPwrDrsr+31sH3y67Qxc+iCit1aW50MTYgc3BfcHJlcGFyZV9iZWxvd190cmFuc2R0bChzcF9wb3NfdCogcG9zLCBzcF9jYXJkX3QqIGNhcmQsIHNwX3RyYW5zZHRsX3QqIHJlY29yZCkKK3sKKyAgdWludDggYnVmZltyZWNvcmRfYmVoYWxmX2xlbl07CisgIE1FTUNMRUFSKGJ1ZmYsIHNpemVvZihidWZmKSk7CisKKyAgcmVjb3JkLT5hbW91bnQgPSBwb3MtPnB1cmNoYXNlLnBhaWRfc3VtOworICBpZihwb3MtPnBheW1vZGUgPT0gUEFZTU9ERV9RUkNPREUpCisgIHsKKyAgICByZWNvcmQtPnBhaWRBbW91bnQgPSBjYXJkLT5xcmNvZGUucGFpZEFtb3VudDsKKyAgfQorICBlbHNlCisgIHsKKyAgICByZWNvcmQtPnBhaWRBbW91bnQgPSAwOworICB9CisgIHJlY29yZC0+Zmxvd3NlbnNvcnMgPSBwb3MtPnB1cmNoYXNlLnBhaWRfbnVtOworICByZWNvcmQtPnRyYW5zdGF0dXMgPSAxOworICBzcF9mbGFzaF9yZWFkKHBvcy0+bGFzdF90cmFuc2R0bC50cmFuc2FkZHIsIGJ1ZmYsIHNpemVvZihidWZmKSk7CisgIE1FTUNQWShyZWNvcmQsIGJ1ZmYsIHNpemVvZihidWZmKSk7CisgIHJldHVybiBzcF93cml0ZV9iZWxvd19yZWNvcmQocG9zLCByZWNvcmQpOworfQorCisvL9Gtu7e05rSiw7/Su7HKzrTJz7SrwffLrrzHwry1xLXY1rcKK3VpbnQxNiBzcF93cml0ZV91bmNvbmZpcm1fcmVjb3JkKHNwX3Bvc190KiBwb3MpCit7CisgIHVpbnQ4IGNyY1syXTsKKyAgdWludDggYnVmZltzaXplb2Yoc3BfdW5jb25maXJtX3RyYW5zZHRsX3QpXTsKKyAgTUVNQ0xFQVIoYnVmZiwgc2l6ZW9mKGJ1ZmYpKTsKKworICBwb3MtPnVuY29uZmlybV90cmFuc2R0bC50aGlzX29mZnNldCArPSBzaXplb2YoYnVmZik7CisgIGlmKHBvcy0+dW5jb25maXJtX3RyYW5zZHRsLnRoaXNfb2Zmc2V0ID49IERFRl9GTEFTSF9QYWdlU2l6ZSkKKyAgeworICAgIHNwX2ZsYXNoX2VyYXNlKEFERFJfVU5DT05GSVJNX1RSQU5TTk8pOworICAgIHBvcy0+dW5jb25maXJtX3RyYW5zZHRsLnRoaXNfb2Zmc2V0ID0gMDsKKyAgfQorICBzcF9wcm90b2NvbF9jcmMoKHVpbnQ4KikmcG9zLT51bmNvbmZpcm1fdHJhbnNkdGwsIHNpemVvZihidWZmKS0yLAorICAgICAgICAgICAgICAgICAgcG9zLT51bmNvbmZpcm1fdHJhbnNkdGwuY3JjKTsKKyAgc3BfZmxhc2hfd3JpdGUocG9zLT51bmNvbmZpcm1fdHJhbnNkdGwudGhpc19vZmZzZXQrQUREUl9VTkNPTkZJUk1fVFJBTlNOTywKKyAgICAgICAgICAgICAgICAgKHVpbnQ4KikmcG9zLT51bmNvbmZpcm1fdHJhbnNkdGwsIHNpemVvZihidWZmKSk7CisKKyAgc3BfZmxhc2hfcmVhZChwb3MtPnVuY29uZmlybV90cmFuc2R0bC50aGlzX29mZnNldCtBRERSX1VOQ09ORklSTV9UUkFOU05PLCBidWZmLAorICAgICAgICAgICAgICAgIHNpemVvZihidWZmKSk7CisgIHNwX3Byb3RvY29sX2NyYyhidWZmLCBzaXplb2YoYnVmZiktMiwgY3JjKTsKKyAgaWYoTUVNQ01QKHBvcy0+dW5jb25maXJtX3RyYW5zZHRsLmNyYywgY3JjLCAyKSAhPTApCisgIHsKKyAgICBwb3MtPmxvYWRfcGFyYV9zdGF0dXMgPSBSQ19GTEFTSF9FUlI7CisgICAgcmV0dXJuIFJDX0ZMQVNIX0VSUjsKKyAgfQorICByZXR1cm4gMDsKK30KKworc3RhdGljIHVpbnQxNiBzcF9pbml0X2xhc3RfdHJhbnNkdGxfcHRyKHNwX2xhc3RfdHJhbnNkdGxfdCogcmVjb3JkKQoreworICByZWNvcmQtPnRyYW5zYWRkciA9IEFERFJfVFJBTlNEVExfQkVHSU4gLXNpemVvZihzcF90cmFuc2R0bF90KTsKKyAgcmVjb3JkLT50aGlzX29mZnNldCA9IDA7CisgIHNwX3Byb3RvY29sX2NyYygodWludDgqKXJlY29yZCxzaXplb2Yoc3BfbGFzdF90cmFuc2R0bF90KSAtMixyZWNvcmQtPmNyYyk7CisgIHJldHVybiBzcF9mbGFzaF9wYWdlX3dyaXRlKEFERFJfTEFTVF9UUkFOU05PLCh1aW50OCopcmVjb3JkLHNpemVvZihzcF9sYXN0X3RyYW5zZHRsX3QpKTsKK30KKworc3RhdGljIHVpbnQxNiBzcF9pbml0X3VuY29uZmlybV90cmFuc2R0bF9wdHIoc3BfdW5jb25maXJtX3RyYW5zZHRsX3QqIHJlY29yZCkKK3sKKyAgcmVjb3JkLT50cmFuc2FkZHIgPSBBRERSX1RSQU5TRFRMX0JFR0lOOworICByZWNvcmQtPnRoaXNfb2Zmc2V0ID0gMDsKKyAgc3BfcHJvdG9jb2xfY3JjKCh1aW50OCopcmVjb3JkLHNpemVvZihzcF91bmNvbmZpcm1fdHJhbnNkdGxfdCkgLTIscmVjb3JkLT5jcmMpOworICByZXR1cm4gc3BfZmxhc2hfcGFnZV93cml0ZShBRERSX1VOQ09ORklSTV9UUkFOU05PLCh1aW50OCopcmVjb3JkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yoc3BfdW5jb25maXJtX3RyYW5zZHRsX3QpKTsKK30KKworc3RhdGljIHVpbnQ4IHNwX2xvYWRfbGFzdF90cmFuc2R0bF9wdHIoc3BfcG9zX3QqIHBvcykKK3sKKyAgdWludDggY3JjWzJdOworICBzcF9mbGFzaF9wYWdlX3JlYWQoQUREUl9MQVNUX1RSQU5TTk8sKHVpbnQ4KikmcG9zLT5sYXN0X3RyYW5zZHRsLAorICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHNwX2xhc3RfdHJhbnNkdGxfdCkpOworICBzcF9wcm90b2NvbF9jcmMoKHVpbnQ4KikmcG9zLT5sYXN0X3RyYW5zZHRsLHNpemVvZihzcF9sYXN0X3RyYW5zZHRsX3QpIC0yLGNyYyk7CisgIGlmKE1FTUNNUChwb3MtPmxhc3RfdHJhbnNkdGwuY3JjLGNyYywyKSAhPSAwKQorICB7CisgICAgc3BfaW5pdF9sYXN0X3RyYW5zZHRsX3B0cigmcG9zLT5sYXN0X3RyYW5zZHRsKTsKKyAgfQorICByZXR1cm4gMDsKK30KK3N0YXRpYyB1aW50OCBzcF9sb2FkX3VuY29uZmlybV90cmFuc2R0bF9wdHIoc3BfcG9zX3QqIHBvcykKK3sKKyAgdWludDggY3JjWzJdOworICBzcF9mbGFzaF9wYWdlX3JlYWQoQUREUl9VTkNPTkZJUk1fVFJBTlNOTywodWludDgqKSZwb3MtPnVuY29uZmlybV90cmFuc2R0bCwKKyAgICAgICAgICAgICAgICAgICAgIHNpemVvZihzcF91bmNvbmZpcm1fdHJhbnNkdGxfdCkpOworICBzcF9wcm90b2NvbF9jcmMoKHVpbnQ4KikmcG9zLT51bmNvbmZpcm1fdHJhbnNkdGwsc2l6ZW9mKHNwX3VuY29uZmlybV90cmFuc2R0bF90KSAtMixjcmMpOworICBpZihNRU1DTVAocG9zLT51bmNvbmZpcm1fdHJhbnNkdGwuY3JjLGNyYywyKSAhPSAwKQorICB7CisgICAgc3BfaW5pdF91bmNvbmZpcm1fdHJhbnNkdGxfcHRyKCZwb3MtPnVuY29uZmlybV90cmFuc2R0bCk7CisgIH0KKyAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB1aW50MTYgc3BfcGFyc2VfY29uZmlnKHNwX3Bvc190KiBwb3MsIHNwX2NvbmZpZ190KiBjb25maWcpCit7CisgIHBvcy0+c3lzY29uZi5kZXZfb2ZmbGluZV9tYXhob3VyID0gY29uZmlnLT5vZmZsaW5lX3dvcmtfaG91cjsKKyAgaWYocG9zLT5zeXNjb25mLmRldl9vZmZsaW5lX21heGhvdXIgPT0gMCkKKyAgeworICAgIHBvcy0+c3lzY29uZi5kZXZfb2ZmbGluZV9tYXhob3VyID0gREVWX09GRkxJTkVfREVGQVVMVF9IT1VSOworICB9CisgIHBvcy0+c3lzY29uZi5mbG93c2Vuc29yX3VuaXQgPSBjb25maWctPmZsb3dzZW5zb3JfdW5pdDsKKyAgcG9zLT5kZXZpY2VubyA9IGNvbmZpZy0+ZGV2aWNlbm87CisgIHBvcy0+ZGV2bG9naW4ubG9naW5fZmxhZyA9IGNvbmZpZy0+bG9naW5fZmxhZzsKKyAgTUVNQ1BZKHBvcy0+ZGV2cGh5aWQsY29uZmlnLT5kZXZwaHlpZCw0KTsKKyAgcmV0dXJuIDA7Cit9CitzdGF0aWMgdWludDE2IHNwX3JlYWRfY29uZmlnKHNwX3Bvc190KiBwb3MsIHNwX2NvbmZpZ190KiBjb25maWcpCit7CisgIHVpbnQ4IGNyY1syXTsKKyAgc3BfZmxhc2hfcmVhZChBRERSX0NPTkZJR19QQVJBLCh1aW50OCopY29uZmlnLHNpemVvZihzcF9jb25maWdfdCkpOworICBzcF9wcm90b2NvbF9jcmMoKHVpbnQ4Kiljb25maWcsc2l6ZW9mKHNwX2NvbmZpZ190KSAtMixjcmMpOworICBpZihtZW1jbXAoY29uZmlnLT5jcmMsY3JjLDIpICE9IDApCisgIHsKKyAgICByZXR1cm4gUkNfQ09ORlBBUkFfQ1JDX0VSUjsKKyAgfQorICBzcF9wYXJzZV9jb25maWcocG9zLCBjb25maWcpOworICByZXR1cm4gMDsKK30KKwordWludDE2IHNwX2NsZWFyX3RyYW5zZHRsKHNwX3Bvc190KiBwb3MpCit7CisgIHVpbnQzMiBpOworICB1aW50MTYgcmV0ID0gc3BfZmxhc2hfZXJhc2UoQUREUl9MQVNUX1RSQU5TTk8pOworICByZXQgfD0gc3BfZmxhc2hfZXJhc2UoQUREUl9VTkNPTkZJUk1fVFJBTlNOTyk7CisgIGZvcihpID0gQUREUl9UUkFOU0RUTF9CRUdJTjsgaSA8IEFERFJfVFJBTlNEVExfRU5EOyBpICs9IERFRl9GTEFTSF9QYWdlU2l6ZSkKKyAgeworICAgIHJldCB8PSBzcF9mbGFzaF9lcmFzZShpKTsKKyAgfQorICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgdWludDE2IHNwX2luaXRfZGV2aWNlKHNwX3Bvc190KiBwb3MpCit7CisgIHVpbnQxNiByZXQ7CisgIGRpc3BfaGludF9pbmZvX3R3byhwb3MsIsnosbiz9cq8u68iLCLH5b/VwffLriIsMCk7CisgIHJldCB8PSBzcF9jbGVhcl90cmFuc2R0bChwb3MpOworICByZXR1cm4gIHJldDsKK30KKwordm9pZCBzcF9yZXNldF9mYWN0b3J5KHNwX3Bvc190KiBwb3MpCit7CisgIHVpbnQxNiByZXQ7CisgIGRpc3BfaGludF9pbmZvX3R3byhwb3MsIrvWuLSz9rOn1tAiLCLH68nUtcguLi4iLDApOworICByZXQgPSBzcF9mbGFzaF9lcmFzZShBRERSX0NPTkZJR19QQVJBKTsKKyAgcmV0IHw9c3BfY2xlYXJfdHJhbnNkdGwocG9zKTsKKyAgaWYoIXJldCkKKyAgeworICAgIGRpc3BfaGludF9pbmZvX3R3byhwb3MsIrP1yry7r7PJuaYiLCK1yLT91tjG9CIsMCk7CisgIH0KKyAgZWxzZQorICB7CisgICAgZGlzcF9oaW50X2luZm9fdHdvKHBvcywis/XKvLuvyqew3CIsIrXItP3W2Mb0IiwwKTsKKyAgfQorICBzcF9yZXNldCgpOworfQorCit1aW50MTYgc3BfbG9hZF9jb25maWcoc3BfcG9zX3QqIHBvcykKK3sKKyAgdWludDE2IHJldDsKKyAgc3BfY29uZmlnX3QgY29uZmlnOworICBNRU1DTEVBUigmY29uZmlnLHNpemVvZiBjb25maWcpOworICByZXQgfD0gc3BfcmVhZF9jb25maWcocG9zLCAmY29uZmlnKTsKKyAgaWYocmV0KQorICB7CisgICAgc3BfY29uZmlnX2luaXQocG9zKTsKKyAgICBzcF9pbml0X2RldmljZShwb3MpOworICB9CisgIHJldCB8PSBzcF9sb2FkX2xhc3RfdHJhbnNkdGxfcHRyKHBvcyk7CisgIHJldCB8PSBzcF9sb2FkX3VuY29uZmlybV90cmFuc2R0bF9wdHIocG9zKTsKKyAgcmV0dXJuIHJldDsKK30KKwordWludDE2IHNwX3NhdmVfY29uZmlnKHNwX3Bvc190KiBwb3MsIHNwX2NvbmZpZ190KiBjb25maWcpCit7CisgIHVpbnQ4IGJ1ZmZlcltzaXplb2Yoc3BfY29uZmlnX3QpXTsKKyAgdWludDggY3JjWzJdOworICBzcF9wcm90b2NvbF9jcmMoKHVpbnQ4Kiljb25maWcsc2l6ZW9mKHNwX2NvbmZpZ190KS0yLGNvbmZpZy0+Y3JjKTsKKyAgc3BfZmxhc2hfZXJhc2UoQUREUl9DT05GSUdfUEFSQSk7CisgIHNwX2ZsYXNoX3dyaXRlKEFERFJfQ09ORklHX1BBUkEsKHVpbnQ4Kiljb25maWcsc2l6ZW9mKHNwX2NvbmZpZ190KSk7CisgIHNwX2ZsYXNoX3JlYWQoQUREUl9DT05GSUdfUEFSQSxidWZmZXIsc2l6ZW9mIGJ1ZmZlcik7CisgIHNwX3Byb3RvY29sX2NyYyhidWZmZXIsc2l6ZW9mKGJ1ZmZlciktMixjcmMpOworICBpZihtZW1jbXAoY29uZmlnLT5jcmMsY3JjLDIpICE9IDApCisgIHsKKyAgICByZXR1cm4gUkNfQ09ORlBBUkFfQ1JDX0VSUjsKKyAgfQorICBzcF9wYXJzZV9jb25maWcocG9zLCBjb25maWcpOworICByZXR1cm4gMDsKK30KKwordWludDE2IHNwX3NhdmVfZGV2aWNlbm8oc3BfcG9zX3QqIHBvcywgdWludDggZGV2aWNlbm8pCit7CisgIHVpbnQxNiByZXQ7CisgIHNwX2NvbmZpZ190IGNvbmZpZzsKKyAgTUVNQ0xFQVIoJmNvbmZpZywgc2l6ZW9mIGNvbmZpZyk7CisgIHJldCA9IHNwX3JlYWRfY29uZmlnKHBvcywgJmNvbmZpZyk7CisgIGlmKHJldCkKKyAgeworICAgIHJldHVybiByZXQ7CisgIH0KKyAgY29uZmlnLmRldmljZW5vID0gZGV2aWNlbm87CisgIHJldHVybiBzcF9zYXZlX2NvbmZpZyhwb3MsICZjb25maWcpOworfQordWludDE2IHNwX3NhdmVfZGV2cGh5aWQoc3BfcG9zX3QqIHBvcywgdWludDggZGV2cGh5aWRbNF0pCit7CisgIHVpbnQxNiByZXQ7CisgIHNwX2NvbmZpZ190IGNvbmZpZzsKKyAgTUVNQ0xFQVIoJmNvbmZpZywgc2l6ZW9mIGNvbmZpZyk7CisgIHJldCA9IHNwX3JlYWRfY29uZmlnKHBvcywgJmNvbmZpZyk7CisgIGlmKHJldCkKKyAgeworICAgIHJldHVybiByZXQ7CisgIH0KKyAgTUVNQ1BZKGNvbmZpZy5kZXZwaHlpZCxkZXZwaHlpZCw0KTsKKyAgcmV0dXJuIHNwX3NhdmVfY29uZmlnKHBvcywgJmNvbmZpZyk7Cit9Cit1aW50MTYgc3Bfc2F2ZV9sb2dpbl9pbmZvKHNwX3Bvc190KiBwb3MsIHVpbnQ4IGZsYWcsIHVpbnQ4IHVuaXQsIHVpbnQ4IG9mZmxpbmVfbWF4aG91cikKK3sKKyAgdWludDE2IHJldDsKKyAgc3BfY29uZmlnX3QgY29uZmlnOworICBNRU1DTEVBUigmY29uZmlnLCBzaXplb2YgY29uZmlnKTsKKyAgcmV0ID0gc3BfcmVhZF9jb25maWcocG9zLCAmY29uZmlnKTsKKyAgaWYocmV0KQorICB7CisgICAgcmV0dXJuIHJldDsKKyAgfQorICBjb25maWcubG9naW5fZmxhZyA9IGZsYWc7CisgIGNvbmZpZy5mbG93c2Vuc29yX3VuaXQgPSB1bml0OworICBjb25maWcub2ZmbGluZV93b3JrX2hvdXIgPSBvZmZsaW5lX21heGhvdXI7CisgIHJldHVybiBzcF9zYXZlX2NvbmZpZyhwb3MsICZjb25maWcpOworfQorCit1aW50MTYgc3Bfc2F2ZV9oZWFydGJlYXRfaW5mbyhzcF9wb3NfdCogcG9zLCB1aW50OCBmbGFnKQoreworICB1aW50MTYgcmV0OworICBzcF9jb25maWdfdCBjb25maWc7CisgIE1FTUNMRUFSKCZjb25maWcsIHNpemVvZiBjb25maWcpOworICByZXQgPSBzcF9yZWFkX2NvbmZpZyhwb3MsICZjb25maWcpOworICBpZihyZXQpCisgIHsKKyAgICByZXR1cm4gcmV0OworICB9CisgIGNvbmZpZy5sb2dpbl9mbGFnID0gZmxhZzsKKyAgcmV0dXJuIHNwX3NhdmVfY29uZmlnKHBvcywgJmNvbmZpZyk7CisKK30KKwordWludDE2IHNwX2NvbmZpZ19pbml0KHNwX3Bvc190KiBwb3MpCit7CisgIHVpbnQxNiByZXQgPSAwOworICB1aW50OCBjcmNbMl07CisgIHNwX2NvbmZpZ190IGNvbmZpZzsKKyAgTUVNQ0xFQVIoJmNvbmZpZywgc2l6ZW9mKGNvbmZpZykpOworICBkaXNwX2hpbnRfaW5mbyhwb3MsIsnosbiyzsr9s/XKvLuvIiwgREVMQVlfVElNRTJzKTsKKyAgc3BfcHJvdG9jb2xfY3JjKCh1aW50OCopJmNvbmZpZyxzaXplb2Yoc3BfY29uZmlnX3QpLTIsY29uZmlnLmNyYyk7CisgIHNwX2ZsYXNoX2VyYXNlKEFERFJfQ09ORklHX1BBUkEpOworICBzcF9mbGFzaF93cml0ZShBRERSX0NPTkZJR19QQVJBLCh1aW50OCopJmNvbmZpZyxzaXplb2Yoc3BfY29uZmlnX3QpKTsKKyAgc3BfZmxhc2hfcmVhZChBRERSX0NPTkZJR19QQVJBLCh1aW50OCopJmNvbmZpZyxzaXplb2YoY29uZmlnKSk7CisgIHNwX3Byb3RvY29sX2NyYygodWludDgqKSZjb25maWcsc2l6ZW9mKHNwX2NvbmZpZ190KS0yLGNyYyk7CisgIGlmKG1lbWNtcChjb25maWcuY3JjLGNyYywyKSAhPSAwKQorICB7CisgICAgcmV0dXJuIFJDX0NPTkZQQVJBX0NSQ19FUlI7CisgIH0KKyAgcmV0ID0gc3BfZmxhc2hfZXJhc2UoQUREUl9DT05GSUdfUEFSQSk7CisgIHJldHVybiByZXQ7Cit9CmRpZmYgLS1naXQgYS9zdXB3aXNkb20vc3BfZGF0YS5oIGIvc3Vwd2lzZG9tL3NwX2RhdGEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZWQ0OTQyCi0tLSAvZGV2L251bGwKKysrIGIvc3Vwd2lzZG9tL3NwX2RhdGEuaApAQCAtMCwwICsxLDMwIEBACisjaWZuZGVmIF9TUF9EQVRBX0hfCisjZGVmaW5lIF9TUF9EQVRBX0hfCisKKyNpbmNsdWRlICJzcF9jb25maWcuaCIKKyNpbmNsdWRlICJzcF9jb21tdW5pY2F0ZS5oIgorCisvL8H3y660psDtCit1aW50MTYgc3BfcHJlcGFyZV9iZWhhbGZfdHJhbnNkdGwoc3BfcG9zX3QqIHBvcywgc3BfY2FyZF90KiBjYXJkLCBzcF90cmFuc2R0bF90KiByZWNvcmQpOwordWludDE2IHNwX3ByZXBhcmVfYmVsb3dfdHJhbnNkdGwoc3BfcG9zX3QqIHBvcywgc3BfY2FyZF90KiBjYXJkLCBzcF90cmFuc2R0bF90KiByZWNvcmQpOwordWludDE2IHNwX3JlYWRfbGFzdHJlY29yZChjb25zdCBzcF9wb3NfdCogcG9zLCBzcF90cmFuc2R0bF90KiBkdGwpOwordWludDE2IHNwX2NvbmZpcm1fcmVjb3JkKGNvbnN0IHNwX3Bvc190KiBwb3MsIHNwX3RyYW5zZHRsX3QqIGR0bCk7Cit1aW50MTYgc3BfcXVlcnlfcmVjb3JkKGNvbnN0IHNwX3Bvc190KiBwb3MsIHVpbnQ4IHJlZm5vWzE2XSwgc3BfdHJhbnNkdGxfdCogZHRsKTsKK3VpbnQxNiBzcF9jbGVhcl90cmFuc2R0bChzcF9wb3NfdCogcG9zKTsKK3VpbnQxNiBzcF93cml0ZV91bmNvbmZpcm1fcmVjb3JkKHNwX3Bvc190KiBwb3MpOworCisvL8+1zbOyzsr9yejWwwordm9pZCBzcF9yZXNldF9mYWN0b3J5KHNwX3Bvc190KiBwb3MpOwordWludDE2IHNwX2xvYWRfY29uZmlnKHNwX3Bvc190KiBwb3MpOwordWludDE2IHNwX3NhdmVfY29uZmlnKHNwX3Bvc190KiBwb3MsIHNwX2NvbmZpZ190KiBjb25maWcpOwordWludDE2IHNwX3NhdmVfZGV2aWNlbm8oc3BfcG9zX3QqIHBvcywgdWludDggZGV2aWNlbm8pOwordWludDE2IHNwX3NhdmVfZGV2cGh5aWQoc3BfcG9zX3QqIHBvcywgdWludDggZGV2cGh5aWRbNF0pOwordWludDE2IHNwX2NvbmZpZ19pbml0KHNwX3Bvc190KiBwb3MpOwordWludDE2IHNwX3NhdmVfbG9naW5faW5mbyhzcF9wb3NfdCogcG9zLCB1aW50OCBmbGFnLCB1aW50OCB1bml0LCB1aW50OCBvZmZsaW5lX21heGhvdXIpOwordWludDE2IHNwX3NhdmVfaGVhcnRiZWF0X2luZm8oc3BfcG9zX3QqIHBvcywgdWludDggZmxhZyk7CisKKy8vyeixuMrWtq+y2df3vdO/2gordWludDggc3BfY29uZmlybV9sb2dpbihzcF9wcm90b2NvbF9yZXNwb25zZV90KiByZXNwLCBzcF9wb3NfdCogcG9zKTsKKworI2VuZGlmCisKZGlmZiAtLWdpdCBhL3N1cHdpc2RvbS9zcF9kZXMuYyBiL3N1cHdpc2RvbS9zcF9kZXMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZDE5OTE2Ci0tLSAvZGV2L251bGwKKysrIGIvc3Vwd2lzZG9tL3NwX2Rlcy5jCkBAIC0wLDAgKzEsMzkgQEAKKyNpbmNsdWRlICJzdHJpbmcuaCIKKyNpbmNsdWRlICIuLi9pY2NfYXBkdV9saWIvZGVzLmgiCisKKyNpbmNsdWRlICJzcF9kZXMuaCIKKworc3RhdGljIGRlc19jb250ZXh0IGRlc2N0eDsKK3N0YXRpYyBkZXMzX2NvbnRleHQgZGVzM2N0eDsKKwordWludDggc2luZ2xlX2Rlc19zZXRfa2V5cyh1aW50OCBrZXlbOF0pCit7CisgIHJldHVybiBkZXNfc2V0X2tleSgmZGVzY3R4LCBrZXkpOworfQorCit2b2lkIHNpbmdsZV9kZXNfZW5jcnlwdCh1aW50OCBzcmNbOF0sIHVpbnQ4IGRlc3RbOF0pCit7CisgIGRlc19lbmNyeXB0KCZkZXNjdHgsIHNyYywgZGVzdCk7Cit9CisKK3ZvaWQgc2luZ2xlX2Rlc19kZWNyeXB0KHVpbnQ4IHNyY1s4XSwgdWludDggZGVzdFs4XSkKK3sKKyAgZGVzX2RlY3J5cHQoJmRlc2N0eCwgc3JjLCBkZXN0KTsKK30KKwordWludDggdHJpcGxlX2Rlc19zZXRfa2V5cyh1aW50OCBrZXlbMTZdKQoreworICByZXR1cm4gZGVzM19zZXRfMmtleXMoJmRlczNjdHgsIGtleSwga2V5KzgpOworfQorCit2b2lkIHRyaXBsZV9kZXNfZW5jcnlwdCh1aW50OCBzcmNbOF0sIHVpbnQ4IGRlc3RbOF0pCit7CisgIGRlczNfZW5jcnlwdCgmZGVzM2N0eCwgc3JjLCBkZXN0KTsKK30KKwordm9pZCB0cmlwbGVfZGVzX2RlY3J5cHQodWludDggc3JjWzhdLCB1aW50OCBkZXN0WzhdKQoreworICBkZXMzX2RlY3J5cHQoJmRlczNjdHgsIHNyYywgZGVzdCk7Cit9CisKKwpkaWZmIC0tZ2l0IGEvc3Vwd2lzZG9tL3NwX2Rlcy5oIGIvc3Vwd2lzZG9tL3NwX2Rlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjOGE3YzcKLS0tIC9kZXYvbnVsbAorKysgYi9zdXB3aXNkb20vc3BfZGVzLmgKQEAgLTAsMCArMSwyNyBAQAorI2lmbmRlZiBfU1BfREVTX0hfCisjZGVmaW5lIF9TUF9ERVNfSF8KKworI2luY2x1ZGUgIi4uL2NvbmZpZy5oIgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmIAorCit1aW50OCBzaW5nbGVfZGVzX3NldF9rZXlzKHVpbnQ4IGtleVs4XSk7CisKK3ZvaWQgc2luZ2xlX2Rlc19lbmNyeXB0KHVpbnQ4IHNyY1s4XSwgdWludDggZGVzdFs4XSk7CisKK3ZvaWQgc2luZ2xlX2Rlc19kZWNyeXB0KHVpbnQ4IHNyY1s4XSwgdWludDggZGVzdFs4XSk7CisKK3VpbnQ4IHRyaXBsZV9kZXNfc2V0X2tleXModWludDgga2V5WzE2XSk7CisKK3ZvaWQgdHJpcGxlX2Rlc19lbmNyeXB0KHVpbnQ4IHNyY1s4XSwgdWludDggZGVzdFs4XSk7CisKK3ZvaWQgdHJpcGxlX2Rlc19kZWNyeXB0KHVpbnQ4IHNyY1s4XSwgdWludDggZGVzdFs4XSk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmIAorCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvc3Vwd2lzZG9tL3NwX2Rpc3BsYXkuYyBiL3N1cHdpc2RvbS9zcF9kaXNwbGF5LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmIwNDE3YwotLS0gL2Rldi9udWxsCisrKyBiL3N1cHdpc2RvbS9zcF9kaXNwbGF5LmMKQEAgLTAsMCArMSwzNTYgQEAKKyNpbmNsdWRlICJnbGNkLmgiCisjaW5jbHVkZSAiLi4vemsvZ2IyMzEyXzE2LmgiCisjaW5jbHVkZSAiLi4vbGlicXIvcXJlbmNvZGUuaCIKKyNpbmNsdWRlICJzcF91dGlsLmgiCisjaW5jbHVkZSAic3BfY29uc3RhbnQuaCIKKyNpbmNsdWRlICJzcF9kaXNwbGF5LmgiCisKKyNkZWZpbmUgR0xDRF9USVRMRV9YIDAKKyNkZWZpbmUgR0xDRF9USVRMRV9ZIDAKKyNkZWZpbmUgR0xDRF9USVRMRV9MSU5FIDgKKyNkZWZpbmUgR0xDRF9DT05URU5UX1lfT05FIDB4MTAKKyNkZWZpbmUgR0xDRF9DT05URU5UX1lfVFdPIDB4MjAKKyNkZWZpbmUgR0xDRF9DT05URU5UX1lfVEhSRUUgMHgzMAorI2RlZmluZSBHTENEX0JVVFRPTV9ZIDU2CisjZGVmaW5lIEdMQ0RfTElORV9MRU5HVEggMHgxMAorCitzdGF0aWMgY2hhciBsaW5lX2J1ZmZbMTddOworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoguq/K/ShOYW1lKSAgICAgIDogdm9pZCAgU2hvd19Nb25leSh1aW50MzIgbW9uZXkpCisqILmmxNwoRnVuY3Rpb24pICA6IM/Uyr698LbuCisqILLOyv0oUGFyYW1ldGVyKSA6IG1vbmV5LS2/qNPgtu4otaXOuzrUqikKKyogt7W72ChSZXR1cm4pICAgIDogzt4KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCit2b2lkIHNob3dfbW9uZXkoc3BfcG9zX3QqIHBvcywgdWludDMyIG1vbmV5KQoreworICBjaGFyIG1zZ1szMl07CisgIHNwcmludGYobXNnLCIgICAgICUuMDJmINSqIixtb25leS8xMDAuMGYpOworICBkaXNwX2hpbnRfaW5mb190d28ocG9zLCLA27zGy6630ToiLG1zZywwKTsKK30KKwordm9pZCBnbGNkX3RpbnlfaW5pdCh2b2lkKQoreworICB1aW50OCByZXRyeTsKKyAgZ2xjZF90aW55X3NldF9mb250KEZvbnQ1eDcsNSw3LDMyLDEyNyk7CisgIGdsY2RfY2xlYXJfYnVmZmVyKCk7CisgIGdsY2Rfd3JpdGUoKTsKKyAgZm9yKHJldHJ5PTA7IHJldHJ5PDM7IHJldHJ5KyspCisgIHsKKyAgICBpZihnYjIzMTJfMTZfdmVyaWZ5KCkgPT0gMCkKKyAgICB7CisgICAgICBicmVhazsKKyAgICB9CisgIH0KKyAgZ2xjZF93cml0ZSgpOworfQorc3RhdGljIHZvaWQgc2hvd190aXRsZSh2b2lkKQoreworICB1aW50OCBjdGltZVs3XTsKKyAgZ2xjZF90aW55X3NldF9mb250KEZvbnQ1eDcsNSw3LDMyLDEyNyk7CisgIGdsY2RfY2xlYXJfYnVmZmVyKCk7CisgIHNwX2dldF9iY2R0aW1lKGN0aW1lKTsKKyAgc3ByaW50ZihsaW5lX2J1ZmYsICIlMDJ4LSUwMngtJTAyeCAlMDJ4OiUwMng6JTAyeCIsCisgICAgICAgICAgY3RpbWVbMF0sY3RpbWVbMV0sY3RpbWVbMl0sCisgICAgICAgICAgY3RpbWVbM10sY3RpbWVbNF0sY3RpbWVbNV0pOworICBnbGNkX2RyYXdfc3RyaW5nX3h5KDAsIDAsIGxpbmVfYnVmZik7CisgIGdsY2RfZHJhd19saW5lKDAsIEdMQ0RfVElUTEVfTElORSwgMTI3LCA4LCBCTEFDSyk7Cit9CisKK3N0YXRpYyB2b2lkIHNob3dfYm90dG9tKHNwX3Bvc190KiBwb3MpCit7CisgIHNwcmludGYobGluZV9idWZmLCIlMDJkOiUwMnglMDJ4JTAyeCUwMngiLHBvcy0+ZGV2aWNlbm8sIHBvcy0+ZGV2cGh5aWRbMF0sCisgICAgICAgICAgcG9zLT5kZXZwaHlpZFsxXSwgcG9zLT5kZXZwaHlpZFsyXSwgcG9zLT5kZXZwaHlpZFszXSk7CisgIGdsY2RfZHJhd19zdHJpbmdfeHkoMCwgR0xDRF9CVVRUT01fWSwgbGluZV9idWZmKTsKK30KKworc3RhdGljIGNoYXIgbGFzdF9xcmNvZGVfdXJsWzMyXT0gezB9Owordm9pZCBzaG93X2hvbWVfcXJjb2RlKGNoYXIqIHFyY29kZV91cmwpCit7CisgIHVpbnQ4IGksajsKKyAgaWYoTUVNQ01QKHFyY29kZV91cmwsbGFzdF9xcmNvZGVfdXJsLChpbnQpc3RybGVuKHFyY29kZV91cmwpKSAhPSAwKQorICB7CisgICAgc3ByaW50ZihsYXN0X3FyY29kZV91cmwsIiVzIixxcmNvZGVfdXJsKTsKKyAgICAvL7b+zqzC68n6s8m149XzCisgICAgUVJlbmNvZGUobGFzdF9xcmNvZGVfdXJsLCBOVUxMKTsKKyAgfQorICAvL7b+zqzC67Xj1fPP1Mq+CisgIGZvcihpPTA7IGk8TUFYX01PRFVMRVNJWkUqMjsgaSsrKQorICB7CisgICAgZm9yKGo9MDsgajxNQVhfTU9EVUxFU0laRSoyOyBqKyspCisgICAgeworICAgICAgdWludDhfdCBwaXhlbCA9IG1fYnlNb2R1bGVEYXRhW2kvMl1bai8yXTsKKworICAgICAgZ2xjZF9zZXRfcGl4ZWwoais3MCwgMTIraSwgcGl4ZWwpOworICAgICAgZ2xjZF9zZXRfcGl4ZWwoais3MCwgMTIraSsxLCBwaXhlbCk7CisgICAgICBqICsrOworICAgICAgZ2xjZF9zZXRfcGl4ZWwoais3MCwgMTIraSwgcGl4ZWwpOworICAgICAgZ2xjZF9zZXRfcGl4ZWwoais3MCwgMTIraSsxLCBwaXhlbCk7CisgICAgfQorICAgIGkgKys7CisgIH0KKyAgZ2xjZF93cml0ZSgpOworCit9CitzdGF0aWMgdWludDggbGFzdF9jdGltZVs2XTsKK3ZvaWQgc2hvd19ob21lKHNwX3Bvc190KiBwb3MpCit7CisgIHVpbnQ4IGN0aW1lWzZdOworICBzcF9nZXRfYmNkdGltZShjdGltZSk7CisgIGlmKE1FTUNNUChjdGltZSxsYXN0X2N0aW1lLDYpICE9IDApCisgIHsKKyAgICBNRU1DUFkobGFzdF9jdGltZSxjdGltZSw2KTsKKyAgICBkaXNwX2hpbnRfaW5mb190d28ocG9zLCJGsOaxviIsUFJPX1ZFUlNJT04sMCk7CisJLyoKKyAgICBpZihwb3MtPnN5c2NvbmYucmVnaXN0ZXJfZmxhZykKKyAgICB7CisgICAgICBpZihwb3MtPmR5bmFtaWMud3NfY2xpZW50X3N0YXQpCisgICAgICB7CisgICAgICAgIHNob3dfaG9tZV9xcmNvZGUocG9zLT5keW5hbWljLnFyY29kZV91cmwpOworICAgICAgfQorICAgIH0KKwkqLworICB9Cit9CisKK3ZvaWQgc2hvd19zZXRfZGV2bm8oc3BfcG9zX3QqIHBvcywgdWludDggZGV2bm8pCit7CisgIGNoYXIgbXNnWzMyXTsKKyAgc3ByaW50Zihtc2csIrv6usU9JWQiLGRldm5vKTsKKyAgZGlzcF9oaW50X2luZm9fdHdvKHBvcywgIsno1sO7+rrFs8m5piIsbXNnLERFTEFZX1RJTUUxcyk7Cit9Cit2b2lkIHNob3dfc2V0X2RldnBoeWlkKHNwX3Bvc190KiBwb3MsIHVpbnQ4IGRldnBoeWlkWzRdKQoreworICBjaGFyIG1zZ1szMl07CisgIHNwcmludGYobXNnLCJJRD0lMDJ4JTAyeCUwMnglMDJ4IiwKKyAgICAgICAgICBkZXZwaHlpZFswXSxkZXZwaHlpZFsxXSxkZXZwaHlpZFsyXSxkZXZwaHlpZFszXSk7CisgIGRpc3BfaGludF9pbmZvX3R3byhwb3MsIsno1sPO78DtSUSzybmmIixtc2csREVMQVlfVElNRTFzKTsKK30KK3ZvaWQgc2hvd19zZXRfZGV2X29mZmxpbmVfbWF4aG91cihzcF9wb3NfdCogcG9zLCB1aW50MTYgbWF4aG91cikKK3sKKyAgY2hhciBtc2dbMzJdOworICBzcHJpbnRmKG1zZywizdG7+rmk1/fKsbzkPSVkIixtYXhob3VyKTsKKyAgZGlzcF9oaW50X2luZm9fdHdvKHBvcywgIsno1sPN0bv6uaTX98qxvOSzybmmIixtc2csREVMQVlfVElNRTFzKTsKK30KKwordm9pZCBzaG93X21hbmFnZV9wYXNzd2Qoc3BfcG9zX3QqIHBvcywgY29uc3QgY2hhciogaGludCx1aW50OCBwYXNzd2RbXSx1aW50OCBsZW4pCit7CisgIGNoYXIgbXNnWzMyXTsKKyAgc3dpdGNoKGxlbikKKyAgeworICBjYXNlIDA6CisgICAgc3ByaW50Zihtc2csIiIpOworICAgIGJyZWFrOworICBjYXNlIDE6CisgICAgc3ByaW50Zihtc2csIiVkIixwYXNzd2RbMF0pOworICAgIGJyZWFrOworICBjYXNlIDI6CisgICAgc3ByaW50Zihtc2csIiVkJWQiLHBhc3N3ZFswXSxwYXNzd2RbMV0pOworICAgIGJyZWFrOworICBjYXNlIDM6CisgICAgc3ByaW50Zihtc2csIiVkJWQlZCIscGFzc3dkWzBdLHBhc3N3ZFsxXSxwYXNzd2RbMl0pOworICAgIGJyZWFrOworICBjYXNlIDQ6CisgICAgc3ByaW50Zihtc2csIiVkJWQlZCVkIixwYXNzd2RbMF0scGFzc3dkWzFdLHBhc3N3ZFsyXSxwYXNzd2RbM10pOworICAgIGJyZWFrOworICBjYXNlIDU6CisgICAgc3ByaW50Zihtc2csIiVkJWQlZCVkJWQiLHBhc3N3ZFswXSxwYXNzd2RbMV0scGFzc3dkWzJdLHBhc3N3ZFszXSxwYXNzd2RbNF0pOworICAgIGJyZWFrOworICBjYXNlIDY6CisgICAgc3ByaW50Zihtc2csIiVkJWQlZCVkJWQlZCIscGFzc3dkWzBdLHBhc3N3ZFsxXSxwYXNzd2RbMl0scGFzc3dkWzNdLHBhc3N3ZFs0XSxwYXNzd2RbNV0pOworICAgIGJyZWFrOworICBkZWZhdWx0OgorICAgIHNwcmludGYobXNnLCIiKTsKKyAgfQorICBkaXNwX2hpbnRfaW5mb190d28ocG9zLGhpbnQsbXNnLDApOworfQorCit2b2lkIHNob3dfZXJyb3Ioc3BfcG9zX3QqIHBvcywgY29uc3QgY2hhciogaGludCwgdWludDE2IGVycmNvZGUpCit7CisgIGNoYXIgbXNnWzMyXTsKKyAgc3dpdGNoKGVycmNvZGUpCisgIHsKKyAgY2FzZSBSQ19QU0FNX0VSUjoKKyAgICBzcHJpbnRmKG1zZywiJXMiLCAiU0FNuLTOu8qnsNwiKTsKKyAgICBicmVhazsKKyAgY2FzZSBSQ19DQVJEX0xPR0lOOgorICAgIHNwcmludGYobXNnLCIlcyIsICLR6dakw9jUv8qnsNwiKTsKKyAgICBicmVhazsKKyAgY2FzZSBSQ19DQVJEX1JFQUQ6CisgICAgc3ByaW50Zihtc2csIiVzIiwgIrbBv6jKp7DcIik7CisgICAgYnJlYWs7CisgIGNhc2UgUkNfQ0FSRF9XUklURToKKyAgICBzcHJpbnRmKG1zZywiJXMiLCAi0LS/qMqnsNwiKTsKKyAgICBicmVhazsKKyAgY2FzZSBSQ19GTEFTSF9FUlI6CisgICAgc3ByaW50Zihtc2csIiVzIiwgIkZMQVNI0uyzoyIpOworICAgIGJyZWFrOworICBjYXNlIFJDX0hBUkRXQVJFX0VSUjoKKyAgICBzcHJpbnRmKG1zZywiJXMiLCAiucy8/tLss6MiKTsKKyAgICBicmVhazsKKyAgY2FzZSBSQ19GTEFTSF9OT19SSUdIVDoKKyAgICBzcHJpbnRmKG1zZywiJXMiLCAiRkxBU0jP3tbGIik7CisgICAgYnJlYWs7CisgIGNhc2UgUkNfQ0FSRF9OT1JJR0hUOgorICAgIHNwcmludGYobXNnLCIlcyIsICK/qM7eyKjP3iIpOworICAgIGJyZWFrOworICBjYXNlIFJDX0NBUkRfRVhQSVJFRDoKKyAgICBzcHJpbnRmKG1zZywiJXMiLCAiv6jS0bn9xtoiKTsKKyAgICBicmVhazsKKyAgY2FzZSBSQ19DQVJEX0xPU1Q6CisgICAgc3ByaW50Zihtc2csIiVzIiwgIr+o0tHL+LaoIik7CisgICAgYnJlYWs7CisgIGNhc2UgUkNfQ0FSRE5PX0VYQ0VQVDoKKyAgICBzcHJpbnRmKG1zZywiJXMiLCAiv6jS7LOjIik7CisgICAgYnJlYWs7CisgIGNhc2UgUkNfQ0FSRF9USU1FT1VUOgorICAgIHNwcmludGYobXNnLCIlcyIsICLKudPDzKu+wyIpOworICAgIGJyZWFrOworICBjYXNlIFJDX0NBUkRCQUxfRVhDRVBUOgorICAgIHNwcmludGYobXNnLCIlcyIsICLT4Lbu0uyzoyIpOworICAgIGJyZWFrOworICBjYXNlIFJDX0NBUkRCQUxfTEFDSzoKKyAgICBzcHJpbnRmKG1zZywiJXMiLCAix+vBqrv6z/u30SIpOworICAgIGJyZWFrOworICBjYXNlIFJDX0RFVlBIWUlEX05PVFNFVDoKKyAgICBzcHJpbnRmKG1zZywiJXMiLCAizrTJ6NbDu/q6xSIpOworICAgIGJyZWFrOworICBjYXNlIFJDX0ZFRVJBVEVfTk9UU0VUOgorICAgIHNwcmludGYobXNnLCIlcyIsICLOtMno1sO30cLKIik7CisgICAgYnJlYWs7CisgIGNhc2UgUkNfREVWX09GRkxJTkVfRVJST1I6CisgICAgc3ByaW50Zihtc2csIiVzIiwgIsnosbjN0bv6zKu+wyIpOworICAgIGJyZWFrOworICBjYXNlIFJDX1RSQU5TRFRMX0ZVTEw6CisgICAgc3ByaW50Zihtc2csIiVzIiwgIsH3y67S0cL6Iik7CisgICAgYnJlYWs7CisgIGNhc2UgUkNfRklMRTA5X0NSQ19FUlI6CisgICAgc3ByaW50Zihtc2csIiVzIiwgIjA5Q1JDtO3O8yIpOworICAgIGJyZWFrOworICBjYXNlIFJDX0ZJTEUxMF9DUkNfRVJSOgorICAgIHNwcmludGYobXNnLCIlcyIsICIxMENSQ7TtzvMiKTsKKyAgICBicmVhazsKKyAgY2FzZSBSQ19DQVJEX0lOVkFMSUQ6CisgICAgc3ByaW50Zihtc2csIiVzIiwgIs7e0Ke/qCIpOworICAgIGJyZWFrOworICBjYXNlIFJDX0ZFRU5VTV9FUlJPUjoKKyAgICBzcHJpbnRmKG1zZywiJXMiLCAit9HCyrj2yv207c7zIik7CisgICAgYnJlYWs7CisgIGNhc2UgUkNfTk9UU1VQUE9SVDoKKyAgICBzcHJpbnRmKG1zZywiJXMiLCAisrvWp7PWIik7CisgICAgYnJlYWs7CisgIGNhc2UgUkNfTk9UX1NBTUVfQ0FSRDoKKyAgICBzcHJpbnRmKG1zZywiJXMiLCAisrvNrL+oIik7CisgICAgYnJlYWs7CisgIGNhc2UgUkNfTU9ERV9OT1RfU1VQUE9SVDoKKyAgICBzcHJpbnRmKG1zZywiJXMiLCAixKPKvbK71qez1iIpOworICAgIGJyZWFrOworICBjYXNlIFJDX1VQRFBST0dfRVJSOgorICAgIHNwcmludGYobXNnLCIlcyIsICLJ/by2yqew3CIpOworICAgIGJyZWFrOworICBjYXNlIFJDX0NPTkZQQVJBX0NSQ19FUlI6CisgICAgc3ByaW50Zihtc2csIiVzIiwgIsXk1sNDUkO07c7zIik7CisgICAgYnJlYWs7CisgIGNhc2UgUkNfVFJBTlNEVExfTk9fRVJSOgorICAgIHNwcmludGYobXNnLCIlcyIsICLB98uuusXS7LOjIik7CisgICAgYnJlYWs7CisgIGNhc2UgUkNfREVWSUNFTk9fT1VUOgorICAgIHNwcmludGYobXNnLCIlcyIsICK7+rrFuf208yIpOworICAgIGJyZWFrOworICBjYXNlIFJDX1FSQ09ERV9GQUlMVVJFOgorICAJc3ByaW50Zihtc2csIiVzIiwgIrb+zqzC67vxyKHKp7DcIik7CisJYnJlYWs7CisgIGNhc2UgUkNfUVJDT0RFX1RJTUVPVVQ6CisgIAlzcHJpbnRmKG1zZywiJXMiLCAitv7OrMLrs6zKsSIpOworCWJyZWFrOworICBjYXNlIFJDX1FSQ09ERV9RVUVSWV9GQUlMOgorICAJc3ByaW50Zihtc2csIiVzIiwgIrb+zqzC68jP1qTKp7DcIik7CisJYnJlYWs7CisgIGNhc2UgUkNfREVWX05PVF9MT0dJTjoKKyAgCXNwcmludGYobXNnLCIlcyIsICLJ6LG4zrTHqbW9Iik7CisJYnJlYWs7CisgIGNhc2UgUkNfREVWX0ZBVUxUOgorICAJc3ByaW50Zihtc2csIiVzIiwgIsnosbjSycvGucrVzyIpOworCWJyZWFrOworICBjYXNlIFJDX0RFVl9OT1NFVF9GTE9XU0VOU09SX1VOSVQ6CisgIAlzcHJpbnRmKG1zZywiJXMiLCAiwffBv7zGy+O1pc67zrTJ6NbDIik7CisJYnJlYWs7CisgIGNhc2UgUkNfQ0FSRF9BVVRIRU5USUNBVElPTjoKKyAgCXNwcmludGYobXNnLCIlcyIsICK/qMjP1qTKp7DcIik7CisJYnJlYWs7CisgIGRlZmF1bHQ6CisgICAgc3ByaW50Zihtc2csIrTtzvPC6z0weCUwNHgiLGVycmNvZGUpOworICB9CisgIGRpc3BfaGludF9pbmZvX3R3byhwb3MsaGludCxtc2csREVMQVlfVElNRTNzKTsKK30KKwordm9pZCBkaXNwX2hpbnRfaW5mb190aHJlZShzcF9wb3NfdCogcG9zLGNvbnN0IGNoYXIqIG1zZzEsY29uc3QgY2hhciogbXNnMixjb25zdCBjaGFyKiBtc2czLHVpbnQzMiBtcykKK3sKKyAgc2hvd190aXRsZSgpOworICBzaG93X2JvdHRvbShwb3MpOworCisgIHNucHJpbnRmKGxpbmVfYnVmZixzaXplb2YgbGluZV9idWZmLCIlcyAgICAgICAgICAgICAgICIsbXNnMSk7CisgIGdiMjMxMl8xNl9kcmF3X3N0cigwLCBHTENEX0NPTlRFTlRfWV9PTkUsIGxpbmVfYnVmZik7CisgIHNucHJpbnRmKGxpbmVfYnVmZixzaXplb2YgbGluZV9idWZmLCIlcyAgICAgICAgICAgICAgICIsbXNnMik7CisgIGdiMjMxMl8xNl9kcmF3X3N0cigwLCBHTENEX0NPTlRFTlRfWV9UV08sIGxpbmVfYnVmZik7CisgIHNucHJpbnRmKGxpbmVfYnVmZixzaXplb2YgbGluZV9idWZmLCIlcyAgICAgICAgICAgICAgICIsbXNnMyk7CisgIGdiMjMxMl8xNl9kcmF3X3N0cigwLCBHTENEX0NPTlRFTlRfWV9USFJFRSwgbGluZV9idWZmKTsKKworICBnbGNkX3dyaXRlKCk7CisgIGlmKG1zID4gMCkKKyAgeworICAgIERlbGF5X21zKG1zKTsKKyAgfQorfQorCit2b2lkIGRpc3BfaGludF9pbmZvX3R3byhzcF9wb3NfdCogcG9zLGNvbnN0IGNoYXIqIG1zZzEsY29uc3QgY2hhciogbXNnMix1aW50MzIgbXMpCit7CisgIHNob3dfdGl0bGUoKTsKKyAgc2hvd19ib3R0b20ocG9zKTsKKworICBzbnByaW50ZihsaW5lX2J1ZmYsc2l6ZW9mIGxpbmVfYnVmZiwiJXMgICAgICAgICAgICAgICAiLG1zZzEpOworICBnYjIzMTJfMTZfZHJhd19zdHIoMCwgR0xDRF9DT05URU5UX1lfT05FLCBsaW5lX2J1ZmYpOworICBzbnByaW50ZihsaW5lX2J1ZmYsc2l6ZW9mIGxpbmVfYnVmZiwiJXMgICAgICAgICAgICAgICAiLG1zZzIpOworICBnYjIzMTJfMTZfZHJhd19zdHIoMCwgR0xDRF9DT05URU5UX1lfVFdPLCBsaW5lX2J1ZmYpOworCisgIGdsY2Rfd3JpdGUoKTsKKyAgaWYobXMgPiAwKQorICB7CisgICAgRGVsYXlfbXMobXMpOworICB9Cit9Cit2b2lkIGRpc3BfaGludF9pbmZvKHNwX3Bvc190KiBwb3MsY29uc3QgY2hhciogbXNnMSx1aW50MzIgbXMpCit7CisgIHNob3dfdGl0bGUoKTsKKyAgc2hvd19ib3R0b20ocG9zKTsKKworICBzbnByaW50ZihsaW5lX2J1ZmYsc2l6ZW9mIGxpbmVfYnVmZiwiJXMgICAgICAgICAgICAgICAiLG1zZzEpOworICBnYjIzMTJfMTZfZHJhd19zdHIoMCwgR0xDRF9DT05URU5UX1lfT05FLCBsaW5lX2J1ZmYpOworICBzbnByaW50ZihsaW5lX2J1ZmYsc2l6ZW9mIGxpbmVfYnVmZiwiICAgICAgICAgICAgICAgICAgIik7CisgIGdiMjMxMl8xNl9kcmF3X3N0cigwLCBHTENEX0NPTlRFTlRfWV9UV08sIGxpbmVfYnVmZik7CisKKyAgZ2xjZF93cml0ZSgpOworICBpZihtcyA+IDApCisgIHsKKyAgICBEZWxheV9tcyhtcyk7CisgIH0KK30KK3ZvaWQgZGlzcF9zZXJ2ZXJfZXJybXNnKHNwX3Bvc190KiBwb3MsY29uc3QgY2hhciogaGludCx1aW50OCBkYXRhW10sdWludDE2IGxlbikKK3sKKyAgdWludDggc3RybGVuOworICBjaGFyIGVycm1zZ1s2NF07CisgIHN0cmxlbiA9IGRhdGFbMF07CisgIC8vY29tbWFuZCtjYW5pZCtleGNtZCtmbGFnK3JldGNvZGUrbGVuK2NyYworICBpZigoc3RybGVuICs4KSAhPSBsZW4pCisgIHsKKyAgICBkaXNwX2hpbnRfaW5mb190d28ocG9zLGhpbnQsIsfrx/OzrMqxIixERUxBWV9USU1FM3MpOworICAgIHJldHVybjsKKyAgfQorICBpZihzdHJsZW4gPiAzMikKKyAgeworICAgIHN0cmxlbiA9IDMyOworICB9CisgIHNucHJpbnRmKGVycm1zZyxzdHJsZW4rMSwiJXMiLGRhdGEgKzEpOworICBkaXNwX2hpbnRfaW5mb190d28ocG9zLGhpbnQsZXJybXNnLERFTEFZX1RJTUUzcyk7Cit9CisKZGlmZiAtLWdpdCBhL3N1cHdpc2RvbS9zcF9kaXNwbGF5LmggYi9zdXB3aXNkb20vc3BfZGlzcGxheS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxNjAyNDgKLS0tIC9kZXYvbnVsbAorKysgYi9zdXB3aXNkb20vc3BfZGlzcGxheS5oCkBAIC0wLDAgKzEsMzYgQEAKKyNpZm5kZWYgX1NQX0RJU1BMQVlfSF8KKyNkZWZpbmUgX1NQX0RJU1BMQVlfSF8KKworI2luY2x1ZGUgInNwX2NvbmZpZy5oIgorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiC6r8r9KE5hbWUpCSAgOiB2b2lkICBTaG93X0Vycm9yKHVpbnQzMiBlcnJjb2RlKQorKiC5psTcKEZ1bmN0aW9uKSAgOiDP1Mq+tO3O87T6wusKKyogss7K/ShQYXJhbWV0ZXIpIDogZXJyY29kZSAtLSC07c7ztPq6xQorKiC3tbvYKFJldHVybikJICA6IM7eCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3ZvaWQgZ2xjZF90aW55X2luaXQodm9pZCk7CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqILqvyv0oTmFtZSkJICA6IHZvaWQgIFNob3dfUGFzcyh2b2lkKQorKiC5psTcKEZ1bmN0aW9uKSAgOiDP1Mq+UEFTUworKiCyzsr9KFBhcmFtZXRlcikgOiBOVUxMCisqILe1u9goUmV0dXJuKQkgIDogzt4KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCXZvaWQgc2hvd19zZXRfZGV2bm8oc3BfcG9zX3QqIHBvcywgdWludDggZGV2bm8pOworCXZvaWQgc2hvd19zZXRfZGV2cGh5aWQoc3BfcG9zX3QqIHBvcywgdWludDggZGV2cGh5aWRbNF0pOworCXZvaWQgc2hvd19zZXRfZGV2X29mZmxpbmVfbWF4aG91cihzcF9wb3NfdCogcG9zLCB1aW50MTYgbWF4aG91cik7CisJdm9pZCBzaG93X2Vycm9yKHNwX3Bvc190KiBwb3MsIGNvbnN0IGNoYXIqIGhpbnQsdWludDE2IGNvZGUpOworCXZvaWQgc2hvd19ob21lKHNwX3Bvc190KiBwb3MpOworCXZvaWQgc2hvd19tb25leShzcF9wb3NfdCogcG9zLCB1aW50MzIgbW9uZXkpOworCXZvaWQgc2hvd19tYW5hZ2VfcGFzc3dkKHNwX3Bvc190KiBwb3MsIGNvbnN0IGNoYXIqIGhpbnQsdWludDggcGFzc3dkW10sdWludDggbGVuKTsKKwl2b2lkIHNob3dfaG9tZV9xcmNvZGUoY2hhciogcXJjb2RlX3VybCk7CisJCisJdm9pZCBkaXNwX2hpbnRfaW5mbyhzcF9wb3NfdCogcG9zLCBjb25zdCBjaGFyKiBtc2cxLHVpbnQzMiBtcyk7CisJdm9pZCBkaXNwX2hpbnRfaW5mb190d28oc3BfcG9zX3QqIHBvcywgY29uc3QgY2hhciogbXNnMSxjb25zdCBjaGFyKiBtc2cyLHVpbnQzMiBtcyk7CisJdm9pZCBkaXNwX2hpbnRfaW5mb190aHJlZShzcF9wb3NfdCogcG9zLCBjb25zdCBjaGFyKiBtc2cxLGNvbnN0IGNoYXIqIG1zZzIsCisJCQkJCQkJICBjb25zdCBjaGFyKiBtc2czLHVpbnQzMiBtcyk7CisJdm9pZCBkaXNwX3NlcnZlcl9lcnJtc2coc3BfcG9zX3QqIHBvcywgY29uc3QgY2hhciogaGludCx1aW50OCBkYXRhW10sdWludDE2IGxlbik7CisKKworI2VuZGlmCmRpZmYgLS1naXQgYS9zdXB3aXNkb20vc3BfZmxhc2guYyBiL3N1cHdpc2RvbS9zcF9mbGFzaC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3ODhhZWQKLS0tIC9kZXYvbnVsbAorKysgYi9zdXB3aXNkb20vc3BfZmxhc2guYwpAQCAtMCwwICsxLDEyMyBAQAorI2luY2x1ZGUgInNwX2NvbnN0YW50LmgiCisjaW5jbHVkZSAic3BfdXRpbC5oIgorCisjaW5jbHVkZSAic3BfZmxhc2guaCIKKwordWludDE2IHNwX2ZsYXNoX3JlYWQodWludDMyIGFkZHIsdWludDggYnVmW10sdWludDMyIGxlbikKK3sKKyAgcmV0dXJuIEhXX0ZsYXNoX1JlYWQoYWRkcixsZW4sYnVmKTsKK30KK3VpbnQxNiBzcF9mbGFzaF93cml0ZSh1aW50MzIgYWRkcix1aW50OCBidWZbXSx1aW50MzIgbGVuKQoreworICBpZihhZGRyIDwgREVGX0lBUF9CQVNFX0FERFIpCisgIHsKKyAgICByZXR1cm4gUkNfRkxBU0hfTk9fUklHSFQ7CisgIH0KKyAgcmV0dXJuIEhXX0ZsYXNoX05vdEVyYXNlV3JpdGUoYWRkcixsZW4sYnVmKTsKK30KK3VpbnQxNiBzcF9mbGFzaF9lcmFzZSh1aW50MzIgYWRkcikKK3sKKyAgaWYoYWRkciA8IERFRl9JQVBfQkFTRV9BRERSKQorICB7CisgICAgcmV0dXJuIFJDX0ZMQVNIX05PX1JJR0hUOworICB9CisgIHJldHVybiBIV19GbGFzaF9QYWdlRXJhc2UoYWRkciAvIEZMQVNIX1BBR0VfU0laRSk7Cit9CisKKy8qKgorKiq2wcih0rvSs8r9vt0syKtGRrHtyr7O3sr9vt0KKyoqQHBhcmFtIGxlbiA+IDEyOCBlcnJvcgorKipAcmV0dXJuILe1u9gwse3KvrLp1dLK/b7ds8m5pgorKipAcmV0dXJuILe1u9i3xzCx7cq+zt7T0NCnyv2+3QorKiovCit1aW50MTYgc3BfZmxhc2hfcGFnZV9yZWFkKHVpbnQzMiBhZGRyLHVpbnQ4IGJ1ZltdLHVpbnQzMiBsZW4pCit7CisgIHVpbnQzMiBpOworICB1aW50MzIgb2Zmc2V0ID0gMDsKKyAgdWludDggdGVtcFsxMjhdOworCisgIGlmKGxlbiA+IHNpemVvZih0ZW1wKSkKKyAgeworICAgIHJldHVybiAxOworICB9CisKKyAgd2hpbGUoMSkKKyAgeworICAgIGkgPSAwOworICAgIHNwX2ZsYXNoX3JlYWQoYWRkciArb2Zmc2V0LHRlbXAsIGxlbik7CisgICAgd2hpbGUoaSA8IGxlbikKKyAgICB7CisgICAgICBpZigweEZGID09IHRlbXBbaV0pCisgICAgICB7CisgICAgICAgICsraTsKKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgIHsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgfQorICAgIGlmKGxlbiA9PSBpKQorICAgIHsKKyAgICAgIGlmKDAgPT0gb2Zmc2V0KQorICAgICAgeworICAgICAgICAvL87eyv2+3QorICAgICAgICByZXR1cm4gMTsKKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgIHsKKyAgICAgICAgc3BfZmxhc2hfcmVhZChhZGRyICtvZmZzZXQgLWxlbixidWYsIGxlbik7CisgICAgICAgIHJldHVybiAwOworICAgICAgfQorICAgIH0KKyAgICBvZmZzZXQgKz0gbGVuOworICAgIGlmKERFRl9GTEFTSF9QYWdlU2l6ZSA8IChvZmZzZXQgK2xlbikpIC8vICCzrLn9tbHSs8601dK1vbe1u9gxCisgICAgeworICAgICAgcmV0dXJuIDE7CisgICAgfQorICB9Cit9CisvKioKKyoq0LTSu9Kzyv2+3QorKipAcGFyYW0gbGVuID4gMzIgZXJyb3IKKyoqQHJldHVybiC3tbvYMLHtyr68x8K8yv2+3bPJuaYKKyoqQHJldHVybiC3tbvYt8cwse3KvtC0RkxBU0jKp7DcCisqKi8KK3VpbnQxNiBzcF9mbGFzaF9wYWdlX3dyaXRlKHVpbnQzMiBhZGRyLHVpbnQ4IGJ1ZltdLHVpbnQzMiBsZW4pCit7CisgIHVpbnQzMiBpOworICB1aW50MzIgb2Zmc2V0ID0gMDsKKyAgdWludDggdGVtcFs2NF07CisKKyAgaWYobGVuID4gNjQpCisgIHsKKyAgICByZXR1cm4gMTsKKyAgfQorICB3aGlsZSgxKQorICB7CisgICAgaSA9IDA7CisgICAgc3BfZmxhc2hfcmVhZChhZGRyICtvZmZzZXQsdGVtcCwgbGVuKTsKKyAgICB3aGlsZShpIDwgbGVuKQorICAgIHsKKyAgICAgIGlmKDB4RkYgPT0gdGVtcFtpXSkKKyAgICAgIHsKKyAgICAgICAgKytpOworICAgICAgfQorICAgICAgZWxzZQorICAgICAgeworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICB9CisgICAgaWYoREVGX0ZMQVNIX1BhZ2VTaXplIDwgKG9mZnNldCArbGVuKSkgLy8gILOsuf21sdKzse3KvtLR0LTC+iyywbP91tjQtAorICAgIHsKKyAgICAgIHNwX2ZsYXNoX2VyYXNlKGFkZHIpOworICAgICAgcmV0dXJuIHNwX2ZsYXNoX3dyaXRlKGFkZHIsYnVmLCBsZW4pOworICAgIH0KKyAgICBpZihsZW4gPT0gaSkKKyAgICB7CisgICAgICAvL87eyv2+3QorICAgICAgcmV0dXJuIHNwX2ZsYXNoX3dyaXRlKGFkZHIgK29mZnNldCxidWYsIGxlbik7CisgICAgfQorICAgIG9mZnNldCArPSBsZW47CisgIH0KK30KKwpkaWZmIC0tZ2l0IGEvc3Vwd2lzZG9tL3NwX2ZsYXNoLmggYi9zdXB3aXNkb20vc3BfZmxhc2guaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMDE1MTdkCi0tLSAvZGV2L251bGwKKysrIGIvc3Vwd2lzZG9tL3NwX2ZsYXNoLmgKQEAgLTAsMCArMSw2MyBAQAorI2lmbmRlZiBfU1BfRkxBU0hfSF8KKyNkZWZpbmUgX1NQX0ZMQVNIX0hfCisKKyNpbmNsdWRlICIuLi9zeXNfaHcvUHJqX0ZsYXNoQ2ZnLkgiCisjaW5jbHVkZSAic3BfY29uZmlnLmgiCisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLy8vLy8vLy8vLy8vLy8vLy8vL0VFUFJPTSC/1bzkLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy9GTEFTSCC/1bzkLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCisjaWYgMAorI2RlZmluZSBBRERSX0ZMQVNIX0JFR0lOIAkJCTB4MTcwMDAgCS8vIGJhc2UgYWRkciAKKyNkZWZpbmUgQUREUl9DT05GSUdfUEFSQQkJCTB4MTcwMDAJCS8vxeTWw7LOyv0KKworI2RlZmluZSBBRERSX1RSQU5TRFRMX1BUUiAJCQkweDE4MDAwCQkvL8H3y67WuNXrCisjZGVmaW5lIEFERFJfVFJBTlNEVExfQkVHSU4gCQkweDIwMDAwMAkvL8H3y67G8Mq8CisjZGVmaW5lIEFERFJfVFJBTlNEVExfRU5EIAkJCTB4MzUwMDAwCS8vwffLrr3hyvgKKyNkZWZpbmUgQUREUl9NQVggCQkJCQkweDQwMDAwMAorI2VuZGlmCisvLyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworLyoqKioqKioqKtS2s8zJ/by2zsS8/rTmtKIxMDDSsyoqKioqKioqKioqKioqKioqKioqKi8KKy8qKioqKioqKirXotLiyf28trXY1rfT60JPT1TJ/by2tdjWt7Gjs9bSu9bCKiovCisjZGVmaW5lIERFRl9JQVBfQkFTRV9BRERSIAkJCShERUZfRkxBU0hfSUFQX0FwcENvZGVTdGFydEFkZCkKKyNkZWZpbmUgREVGX0lhcE1hcmtBZGRyCQkJCSggREVGX0lBUF9CQVNFX0FERFIgKyAxICogREVGX0ZMQVNIX1BhZ2VTaXplICkJCQkvL0lBUMn9vLax6rzHtdjWtworI2RlZmluZSBERUZfRXJhTWFya0FkZHIJCQkJKCBERUZfSUFQX0JBU0VfQUREUiArIDIgKiBERUZfRkxBU0hfUGFnZVNpemUgKQkJCS8vssGz/UZMQVNIseq8xworI2RlZmluZQlERUZfSWFwRGF0YUFkZHIJCQkJKCBERUZfSUFQX0JBU0VfQUREUiArIDMgKiBERUZfRkxBU0hfUGFnZVNpemUgKQkJCS8vSUFQyv2+3cf4xvDKvLXY1rcKKworI2RlZmluZSBERUZfRkxBU0hfY29kZVN0YXJ0QWRkCSAJKERFRl9JYXBEYXRhQWRkcikKKworI2RlZmluZSBBRERSX1VQR1JBREVfVVBJTkZPIAkJKEFERFJfRkxBU0hfRU5EICsgREVGX0ZMQVNIX1BhZ2VTaXplICoxKQorI2RlZmluZSBBRERSX0tFWV9QQVJBCQkJCShBRERSX1VQR1JBREVfVVBJTkZPICsgREVGX0ZMQVNIX1BhZ2VTaXplICoxKQorCisjZGVmaW5lIEFERFJfVVBHUkFERV9CRUdJTiAJCQkoREVGX0ZMQVNIX2NvZGVTdGFydEFkZCkKKyNkZWZpbmUgQUREUl9VUEdSQURFX0VORCAJCQkoREVGX0ZMQVNIX0lBUF9BcHBDb2RlRW5kQWRkIC1ERUZfRkxBU0hfUGFnZVNpemUpCisKKyNkZWZpbmUgQUREUl9BUFBMSUNBVElPTl9CQVNFCQkweDEzMDAwMCAgLy9iYXNlIGFkZHIKKyNkZWZpbmUgQUREUl9BUFBfVkVSU0lPTgkJCShBRERSX0FQUExJQ0FUSU9OX0JBU0UpICAvL7Dmsb6x6sq2CisKKyNkZWZpbmUgQUREUl9DT05GSUdfUEFSQQkJCShBRERSX0FQUF9WRVJTSU9OICtERUZfRkxBU0hfUGFnZVNpemUgKjEpLy/F5NbDss7K/QorCisjZGVmaW5lIEFERFJfTEFTVF9UUkFOU05PCQkJKEFERFJfQ09ORklHX1BBUkEgK0RFRl9GTEFTSF9QYWdlU2l6ZSAqMTApCisjZGVmaW5lIEFERFJfVU5DT05GSVJNX1RSQU5TTk8JCShBRERSX0xBU1RfVFJBTlNOTyArREVGX0ZMQVNIX1BhZ2VTaXplICoxKQorI2RlZmluZSBBRERSX1RSQU5TRFRMX0JFR0lOCQkJKEFERFJfVU5DT05GSVJNX1RSQU5TTk8gK0RFRl9GTEFTSF9QYWdlU2l6ZSAqMSkKKyNkZWZpbmUgQUREUl9UUkFOU0RUTF9FTkQgCQkJKEFERFJfVFJBTlNEVExfQkVHSU4gK0RFRl9GTEFTSF9QYWdlU2l6ZSAqMTAwKQorI2RlZmluZSBBRERSX0ZMQVNIX0VORAkJCQkoQUREUl9UUkFOU0RUTF9FTkQpCisjZGVmaW5lIEFERFJfTUFYIAkJCQkJMHg0MDAwMDAKKworLy8jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCit1aW50MTYgc3BfZmxhc2hfcmVhZCh1aW50MzIgYWRkcix1aW50OCBidWZbXSx1aW50MzIgbGVuKTsKK3VpbnQxNiBzcF9mbGFzaF93cml0ZSh1aW50MzIgYWRkcix1aW50OCBidWZbXSx1aW50MzIgbGVuKTsKK3VpbnQxNiBzcF9mbGFzaF9lcmFzZSh1aW50MzIgYWRkcik7Cit1aW50MTYgc3BfZmxhc2hfcGFnZV9yZWFkKHVpbnQzMiBhZGRyLHVpbnQ4IGJ1ZltdLHVpbnQzMiBsZW4pOwordWludDE2IHNwX2ZsYXNoX3BhZ2Vfd3JpdGUodWludDMyIGFkZHIsdWludDggYnVmW10sdWludDMyIGxlbik7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvc3Vwd2lzZG9tL3NwX21lbnUuYyBiL3N1cHdpc2RvbS9zcF9tZW51LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDQ0N2Q1MgotLS0gL2Rldi9udWxsCisrKyBiL3N1cHdpc2RvbS9zcF9tZW51LmMKQEAgLTAsMCArMSw2NTUgQEAKKyNpbmNsdWRlICJzcF9tZW51LmgiCisjaW5jbHVkZSAic3BfdXRpbC5oIgorI2luY2x1ZGUgInNwX2RhdGEuaCIKKyNpbmNsdWRlICJzdGRsaWIuaCIKKyNpbmNsdWRlICJzdGRpby5oIgorI2luY2x1ZGUgInNwX2NvbnN0YW50LmgiCisjaW5jbHVkZSAic3BfY29tbXVuaWNhdGUuaCIKKyNpbmNsdWRlICJzcF9kaXNwbGF5LmgiCisjaW5jbHVkZSAic3BfdXBncmFkZS5oIgorI2luY2x1ZGUgIi4uL25lY19oYXJkd2FyZS5oIgorCit0eXBlZGVmIHZvaWQoKm1lbnVfZnVuY190KShzcF9wb3NfdCogcG9zKTsKK3R5cGVkZWYgc3RydWN0Cit7CisgIGNoYXIqIGhpdDsKKyAgbWVudV9mdW5jX3QgZnVuYzsKK30gbWVudV90OworCitzdGF0aWMgdm9pZCBzcF9zaG93X3N5c3BhcmEoc3BfcG9zX3QqIHBvcykKK3sKKyAgdWludDMyIHRpY2tlcjsKKyAgdWludDgga2V5Y29kZTsKKyAgdWludDgga2V5X3ByZXNzID0gMTsKKyAgdWludDggbWF4X2NudCA9IDA7CisgIHVpbnQ4IG9mZnNldCA9IDA7CisgIHVpbnQ4IHVuY29uZmlybV90cmFuc251bTsKKyAgY2hhciBzeXNwYXJhWzldWzE3XTsKKworICBNRU1DTEVBUihzeXNwYXJhLCBzaXplb2Yoc3lzcGFyYSkpOworICBzcHJpbnRmKHN5c3BhcmFbb2Zmc2V0KytdLCAiyeixuNe0zKw6Iik7CisgIGlmKHBvcy0+ZGV2bG9naW4ubG9naW5fZmxhZyA9PSAxKQorICB7CisgICAgc3ByaW50ZihzeXNwYXJhW29mZnNldCsrXSwgItLRx6m1vSIpOworICB9CisgIGVsc2UgaWYocG9zLT5kZXZsb2dpbi5sb2dpbl9mbGFnID09IDApCisgIHsKKyAgICBzcHJpbnRmKHN5c3BhcmFbb2Zmc2V0KytdLCAizrTHqbW9Iik7CisgIH0KKyAgZWxzZSBpZihwb3MtPmRldmxvZ2luLmxvZ2luX2ZsYWcgPT0gMikKKyAgeworICAgIHNwcmludGYoc3lzcGFyYVtvZmZzZXQrK10sICLS0deiz/oiKTsKKyAgfQorICBzcHJpbnRmKHN5c3BhcmFbb2Zmc2V0KytdLCAiwbTCt9e0zKw6Iik7CisgIGlmKHBvcy0+bGlua19zdGF0KQorICB7CisgICAgc3ByaW50ZihzeXNwYXJhW29mZnNldCsrXSwgIsGqzfgiKTsKKyAgfQorICBlbHNlCisgIHsKKyAgICBzcHJpbnRmKHN5c3BhcmFbb2Zmc2V0KytdLCAi1tC2zyIpOworICB9CisgIHNwcmludGYoc3lzcGFyYVtvZmZzZXQrK10sICLOtMnPtKvB98uuOiIpOworICBpZihwb3MtPnVuY29uZmlybV90cmFuc2R0bC50cmFuc2FkZHIgPD0gcG9zLT5sYXN0X3RyYW5zZHRsLnRyYW5zYWRkcikKKyAgeworICAgIGlmKHBvcy0+dW5jb25maXJtX3RyYW5zZHRsLnRyYW5zYWRkciA9PSBwb3MtPmxhc3RfdHJhbnNkdGwudHJhbnNhZGRyKQorICAgIHsKKyAgICAgIHVuY29uZmlybV90cmFuc251bSA9IDE7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICB1bmNvbmZpcm1fdHJhbnNudW0gPSAoKHBvcy0+bGFzdF90cmFuc2R0bC50cmFuc2FkZHIgLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3MtPnVuY29uZmlybV90cmFuc2R0bC50cmFuc2FkZHIpL3NpemVvZihzcF90cmFuc2R0bF90KSk7CisgICAgfQorICB9CisgIGVsc2UKKyAgeworICAgIHVuY29uZmlybV90cmFuc251bSA9IDA7CisgIH0KKyAgc3ByaW50ZihzeXNwYXJhW29mZnNldCsrXSwgIiVkscoiLCB1bmNvbmZpcm1fdHJhbnNudW0pOworICBzcHJpbnRmKHN5c3BhcmFbb2Zmc2V0KytdLCAiz/u30cDg0M06Iik7CisgIHNwcmludGYoc3lzcGFyYVtvZmZzZXQrK10sICK8x9XLz/u30SIpOworCisgIG1heF9jbnQgPSBzaXplb2Yoc3lzcGFyYSkvc2l6ZW9mKHN5c3BhcmFbMF0pLzI7CisgIG9mZnNldCA9IDA7CisgIHRpY2tlciA9IHNwX2dldF90aWNrZXIoKTsKKyAgd2hpbGUoc3BfZ2V0X3RpY2tlcigpLXRpY2tlciA8PSBERUxBWV9USU1FNjBzKQorICB7CisgICAga2V5Y29kZSA9IHNwX2dldF9rZXkoKTsKKyAgICBpZihrZXljb2RlICE9IFNQX0tFWV9OT05FKQorICAgIHsKKyAgICAgIGtleV9wcmVzcyA9IDE7CisgICAgICBzd2l0Y2goa2V5Y29kZSkKKyAgICAgIHsKKyAgICAgIGNhc2UgU1BfS0VZXzA6CisgICAgICAgIGlmKG9mZnNldCA8IG1heF9jbnQtMSkKKyAgICAgICAgeworICAgICAgICAgIG9mZnNldCsrOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBTUF9LRVlfMToKKyAgICAgIGNhc2UgU1BfS0VZXzI6CisgICAgICBjYXNlIFNQX0tFWV8zOgorICAgICAgY2FzZSBTUF9LRVlfNDoKKyAgICAgIGNhc2UgU1BfS0VZXzU6CisgICAgICBjYXNlIFNQX0tFWV82OgorICAgICAgY2FzZSBTUF9LRVlfNzoKKyAgICAgIGNhc2UgU1BfS0VZXzg6CisgICAgICBjYXNlIFNQX0tFWV85OgorICAgICAgICBvZmZzZXQgPSBrZXljb2RlIC1TUF9LRVlfMDsKKyAgICAgICAgaWYob2Zmc2V0ID49IG1heF9jbnQpCisgICAgICAgIHsKKyAgICAgICAgICBvZmZzZXQgPSBtYXhfY250IC0xOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBTUF9LRVlfQ0xFQVI6CisgICAgICAgIHJldHVybjsKKyAgICAgIH0KKyAgICB9CisgICAgaWYoa2V5X3ByZXNzKQorICAgIHsKKyAgICAgIGRpc3BfaGludF9pbmZvX3R3byhwb3MsIHN5c3BhcmFbMipvZmZzZXRdLHN5c3BhcmFbMipvZmZzZXQrMV0sMCk7CisgICAgICBrZXlfcHJlc3MgPSAwOworICAgICAgdGlja2VyID0gc3BfZ2V0X3RpY2tlcigpOworICAgIH0KKyAgfQorfQorCitzdGF0aWMgdWludDggc3BfbGlua190ZXN0KHNwX3Bvc190KiBwb3MpCit7CisgIHVpbnQ4IHJldDsKKyAgc3BfcHJvdG9jb2xfcmVxdWVzdF90IHJlcTsKKyAgc3BfcHJvdG9jb2xfcmVzcG9uc2VfdCByZXNwOworICBNRU1DTEVBUigmcmVxLCBzaXplb2YocmVxKSk7CisgIE1FTUNMRUFSKCZyZXNwLCBzaXplb2YocmVzcCkpOworCisgIGRpc3BfaGludF9pbmZvX3R3byhwb3MsICLV/dTawbTCt7zssuIiLCAix+vJ1LXILi4uLi4iLCAwKTsKKyAgc3BfcHJvdG9jb2xfcmVxX2luaXQoJnJlcSwgU1BfQ01EX0ZBQ1RPUllfTElOS19URVNUKTsKKyAgcmVxLmRhdGFbMF0gPSAwOworICByZXEuZGF0YVsxXSA9IDB4NTU7CisgIHJlcS5kYXRhWzJdID0gMHhBQTsKKyAgcmVxLmRhdGFsZW4gKz0gMzsKKyAgcmV0ID0gc3BfY29tbV9jYWxsKHBvcywgJnJlcSwgJnJlc3AsIERFTEFZX1RJTUUzcyk7CisgIGlmKCFyZXQpCisgIHsKKyAgICBpZihyZXNwLmRhdGFbMF0gPT0gMHg1NSAmJiByZXNwLmRhdGFbMV0gPT0gMHhBQSkKKyAgICB7CisgICAgICBpZihzcF9jaGVja190aW1lX3ZhbGlkKHJlc3AuZGF0YSArMikpCisgICAgICB7CisgICAgICAgIGRpc3BfaGludF9pbmZvX3R3byhwb3MsICLBtMK3vOyy4rPJuaYiLCLKsdbTsru6z7eoIiwgREVMQVlfVElNRTNzKTsKKyAgICAgICAgcmV0dXJuIHJldDsKKyAgICAgIH0KKyAgICAgIHNwX3NldF9iY2R0aW1lKHJlc3AuZGF0YSArMik7CisgICAgICBkaXNwX2hpbnRfaW5mb190d28ocG9zLCAiwbTCt7zssuKzybmmIiwi0tHNrLK9yrHW0yIsIERFTEFZX1RJTUUzcyk7CisgICAgICByZXR1cm4gcmV0OworICAgIH0KKyAgICBkaXNwX2hpbnRfaW5mb190d28ocG9zLCAiwbTCt7zssuLKp7DcIiwiytW1vbTtzvOw/CIsIERFTEFZX1RJTUUzcyk7CisgICAgcmV0dXJuIDE7CisgIH0KKyAgZGlzcF9oaW50X2luZm9fdHdvKHBvcywgIsG0wre87LLiyqew3CIsIsfrvOyy4s/fwrciLCBERUxBWV9USU1FM3MpOworICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgdm9pZCBzaG93X2tleWJvYXJkX3Rlc3Qoc3BfcG9zX3QqIHBvcywgdWludDggb2Zmc2V0KQoreworICBjaGFyIG1zZ1tdPSB7IjAxMjM0NTY3ODlDIn07CisgIGNoYXIgdGVtcFsxN107CisgIHNucHJpbnRmKHRlbXAsb2Zmc2V0KzEsIiVzIixtc2cpOworICBkaXNwX2hpbnRfaW5mb190aHJlZShwb3MsICK8/MXM0sC0zsrkyOsiLCIwMTIzNDU2Nzg5QyIsdGVtcCwwKTsKK30KKworc3RhdGljIHVpbnQ4IHNwX2tleWJvYXJkX3Rlc3Qoc3BfcG9zX3QqIHBvcykKK3sKKyAgdWludDgga2NvZGU7CisgIHVpbnQzMiB0aWNrOworICB1aW50OCBvZmZzZXQgPSAwOworICB1aW50OCBrZXlidWZbMTJdPSB7U1BfS0VZXzAsU1BfS0VZXzEsU1BfS0VZXzIsU1BfS0VZXzMsCisgICAgICAgICAgICAgICAgICAgICBTUF9LRVlfNCxTUF9LRVlfNSxTUF9LRVlfNixTUF9LRVlfNywKKyAgICAgICAgICAgICAgICAgICAgIFNQX0tFWV84LFNQX0tFWV85LFNQX0tFWV9DTEVBUixTUF9LRVlfRU5URVIKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgc2hvd19rZXlib2FyZF90ZXN0KHBvcywgb2Zmc2V0KTsKKyAgdGljayA9IHNwX2dldF90aWNrZXIoKTsKKyAgd2hpbGUoKHNwX2dldF90aWNrZXIoKS10aWNrKSA8IERFTEFZX1RJTUU2MHMpCisgIHsKKyAgICBzcF9mZWVkX2RvZygpOworICAgIGtjb2RlID0gc3BfZ2V0X2tleSgpOworICAgIGlmKGtjb2RlICE9IFNQX0tFWV9OT05FKQorICAgIHsKKyAgICAgIHRpY2sgPSBzcF9nZXRfdGlja2VyKCk7CisgICAgICBzd2l0Y2goa2NvZGUpCisgICAgICB7CisgICAgICBjYXNlIFNQX0tFWV8wOgorICAgICAgICBpZihrZXlidWZbb2Zmc2V0XSA9PSBTUF9LRVlfMCkKKyAgICAgICAgeworICAgICAgICAgICsrb2Zmc2V0OworICAgICAgICAgIHNob3dfa2V5Ym9hcmRfdGVzdChwb3MsIG9mZnNldCk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIFNQX0tFWV8xOgorICAgICAgICBpZihrZXlidWZbb2Zmc2V0XSA9PSBTUF9LRVlfMSkKKyAgICAgICAgeworICAgICAgICAgICsrb2Zmc2V0OworICAgICAgICAgIHNob3dfa2V5Ym9hcmRfdGVzdChwb3MsIG9mZnNldCk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIFNQX0tFWV8yOgorICAgICAgICBpZihrZXlidWZbb2Zmc2V0XSA9PSBTUF9LRVlfMikKKyAgICAgICAgeworICAgICAgICAgICsrb2Zmc2V0OworICAgICAgICAgIHNob3dfa2V5Ym9hcmRfdGVzdChwb3MsIG9mZnNldCk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIFNQX0tFWV8zOgorICAgICAgICBpZihrZXlidWZbb2Zmc2V0XSA9PSBTUF9LRVlfMykKKyAgICAgICAgeworICAgICAgICAgICsrb2Zmc2V0OworICAgICAgICAgIHNob3dfa2V5Ym9hcmRfdGVzdChwb3MsIG9mZnNldCk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIFNQX0tFWV80OgorICAgICAgICBpZihrZXlidWZbb2Zmc2V0XSA9PSBTUF9LRVlfNCkKKyAgICAgICAgeworICAgICAgICAgICsrb2Zmc2V0OworICAgICAgICAgIHNob3dfa2V5Ym9hcmRfdGVzdChwb3MsIG9mZnNldCk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIFNQX0tFWV81OgorICAgICAgICBpZihrZXlidWZbb2Zmc2V0XSA9PSBTUF9LRVlfNSkKKyAgICAgICAgeworICAgICAgICAgICsrb2Zmc2V0OworICAgICAgICAgIHNob3dfa2V5Ym9hcmRfdGVzdChwb3MsIG9mZnNldCk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIFNQX0tFWV82OgorICAgICAgICBpZihrZXlidWZbb2Zmc2V0XSA9PSBTUF9LRVlfNikKKyAgICAgICAgeworICAgICAgICAgICsrb2Zmc2V0OworICAgICAgICAgIHNob3dfa2V5Ym9hcmRfdGVzdChwb3MsIG9mZnNldCk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIFNQX0tFWV83OgorICAgICAgICBpZihrZXlidWZbb2Zmc2V0XSA9PSBTUF9LRVlfNykKKyAgICAgICAgeworICAgICAgICAgICsrb2Zmc2V0OworICAgICAgICAgIHNob3dfa2V5Ym9hcmRfdGVzdChwb3MsIG9mZnNldCk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIFNQX0tFWV84OgorICAgICAgICBpZihrZXlidWZbb2Zmc2V0XSA9PSBTUF9LRVlfOCkKKyAgICAgICAgeworICAgICAgICAgICsrb2Zmc2V0OworICAgICAgICAgIHNob3dfa2V5Ym9hcmRfdGVzdChwb3MsIG9mZnNldCk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIFNQX0tFWV85OgorICAgICAgICBpZihrZXlidWZbb2Zmc2V0XSA9PSBTUF9LRVlfOSkKKyAgICAgICAgeworICAgICAgICAgICsrb2Zmc2V0OworICAgICAgICAgIHNob3dfa2V5Ym9hcmRfdGVzdChwb3MsIG9mZnNldCk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIFNQX0tFWV9DTEVBUjoKKyAgICAgICAgaWYob2Zmc2V0ID09IDApCisgICAgICAgIHsKKyAgICAgICAgICBkaXNwX2hpbnRfaW5mbyhwb3MsICLIoc/7sLS8/LzssuIiLERFTEFZX1RJTUUycyk7CisgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICAgICAgaWYoa2V5YnVmW29mZnNldF0gPT0gU1BfS0VZX0NMRUFSKQorICAgICAgICB7CisgICAgICAgICAgKytvZmZzZXQ7CisgICAgICAgICAgc2hvd19rZXlib2FyZF90ZXN0KHBvcywgb2Zmc2V0KTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgU1BfS0VZX0VOVEVSOgorICAgICAgICBpZihrZXlidWZbb2Zmc2V0XSA9PSBTUF9LRVlfRU5URVIpCisgICAgICAgIHsKKyAgICAgICAgICBkaXNwX2hpbnRfaW5mb190d28ocG9zLCAivPzFzLzssuLV/ci3IiwivPzFzNCj17zV/bOjIixERUxBWV9USU1FM3MpOworICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgfQorICB9CisgIHJldHVybiAxOworCit9CisKK3N0YXRpYyB2b2lkIHNwX2ZhY3RvcnlfY2hlY2soc3BfcG9zX3QqIHBvcykKK3sKKyAgc3BfbGlua190ZXN0KHBvcyk7CisgIHNwX2tleWJvYXJkX3Rlc3QocG9zKTsKK30KKworc3RhdGljIHZvaWQgc3Bfc2V0X2RldnRpbWUoc3BfcG9zX3QqIHBvcykKK3sKKyAgdWludDMyIHRpY2tlcjsKKyAgdWludDgga2NvZGU7CisgIHVpbnQ4IGtleV9wcmVzcyA9IDE7CisgIHVpbnQ4IGN0aW1lWzZdOworICB1aW50OCBvZmZzZXQ7CisgIGNoYXIgc3RyWzEzXTsKKyAgY2hhciBtc2dbMTddOworCisgIE1FTUNMRUFSKHN0cixzaXplb2Ygc3RyKTsKKyAgc3BfZ2V0X2JjZHRpbWUoY3RpbWUpOworICBvZmZzZXQgPSAxMDsKKyAgc3BfaGV4X3RvX3N0cihjdGltZSw1LHN0cik7CisgIHRpY2tlciA9IHNwX2dldF90aWNrZXIoKTsKKyAgd2hpbGUoc3BfZ2V0X3RpY2tlcigpIC10aWNrZXIgPCBERUxBWV9USU1FNjBzKQorICB7CisgICAga2NvZGUgPSBzcF9nZXRfa2V5KCk7CisgICAgaWYoa2NvZGUgIT0gU1BfS0VZX05PTkUpCisgICAgeworICAgICAga2V5X3ByZXNzID0gMTsKKyAgICAgIHN3aXRjaChrY29kZSkKKyAgICAgIHsKKyAgICAgIGNhc2UgU1BfS0VZXzA6CisgICAgICBjYXNlIFNQX0tFWV8xOgorICAgICAgY2FzZSBTUF9LRVlfMjoKKyAgICAgIGNhc2UgU1BfS0VZXzM6CisgICAgICBjYXNlIFNQX0tFWV80OgorICAgICAgY2FzZSBTUF9LRVlfNToKKyAgICAgIGNhc2UgU1BfS0VZXzY6CisgICAgICBjYXNlIFNQX0tFWV83OgorICAgICAgY2FzZSBTUF9LRVlfODoKKyAgICAgIGNhc2UgU1BfS0VZXzk6CisgICAgICAgIGlmKG9mZnNldCA8IDEwKQorICAgICAgICB7CisgICAgICAgICAgc3RyW29mZnNldCsrXSA9ICcwJyArIChrY29kZS0gU1BfS0VZXzApOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBTUF9LRVlfRU5URVI6CisgICAgICAgIGlmKG9mZnNldCA+PSAxMCkKKyAgICAgICAgeworICAgICAgICAgIE1FTUNMRUFSKGN0aW1lLHNpemVvZiBjdGltZSk7CisgICAgICAgICAgc3Bfc3RyX3RvX2JjZChzdHIsMTAsY3RpbWUpOworICAgICAgICAgIGlmKHNwX2NoZWNrX3RpbWVfdmFsaWQoY3RpbWUpKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIGRpc3BfaGludF9pbmZvX3R3byhwb3MsIsno1sPKsbzkyqew3CIsIsqxvOSyu7rPt6giLCBERUxBWV9USU1FM3MpOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlCisgICAgICAgICAgeworICAgICAgICAgICAgc3Bfc2V0X2JjZHRpbWUoY3RpbWUpOworICAgICAgICAgICAgZGlzcF9oaW50X2luZm9fdHdvKHBvcywiyejWw8qxvOSzybmmIiwiICIsIERFTEFZX1RJTUUycyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBTUF9LRVlfQ0xFQVI6CisgICAgICAgIGlmKG9mZnNldCA9PSAwKQorICAgICAgICB7CisgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIG9mZnNldC0tOworICAgICAgICBzdHJbb2Zmc2V0XSA9IDA7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgIH0KKyAgICBpZihrZXlfcHJlc3MpCisgICAgeworICAgICAgc3ByaW50Zihtc2csIiVzIixzdHIpOworICAgICAgZGlzcF9oaW50X2luZm9fdHdvKHBvcywiyejWw8qxvOQoeW1kSG0pIixtc2csMCk7CisgICAgICB0aWNrZXIgPSBzcF9nZXRfdGlja2VyKCk7CisgICAgICBrZXlfcHJlc3MgPSAwOworICAgIH0KKyAgfQorfQorCitzdGF0aWMgdm9pZCBzcF9tYW51YWxfbG9naW4oc3BfcG9zX3QqIHBvcykKK3sKKyAgdWludDE2IHJldDsKKyAgdWludDMyIHRpY2s7CisgIHNwX3Byb3RvY29sX3Jlc3BvbnNlX3QgcmVzcDsKKyAgTUVNQ0xFQVIoJnJlc3AsIHNpemVvZihyZXNwKSk7CisgIGRpc3BfaGludF9pbmZvX3R3byhwb3MsItX91Nq1x8K8Iiwix+vJ1LXILi4uIiwwKTsKKyAgc3BfYXN5bmNfZXF1aXBtZW50X2xvZ2luKHBvcyk7CisgIHRpY2sgPSBzcF9nZXRfdGlja2VyKCk7CisgIHdoaWxlKHNwX2dldF90aWNrZXIoKSAtIHRpY2sgPCBERUxBWV9USU1FM3MqMikKKyAgeworICAgIE1FTUNMRUFSKCZyZXNwLCBzaXplb2YocmVzcCkpOworICAgIHVzYXJ0X3JlYWQoKHU4KikmcmVzcCwgc2l6ZW9mKHJlc3ApKTsKKyAgICBpZihyZXNwLmV4Y21kID09IFNQX0NNRF9MT0dJTikKKyAgICB7CisgICAgICByZXQgPSBzcF9jb25maXJtX2xvZ2luKCZyZXNwLCBwb3MpOworICAgICAgYnJlYWs7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICByZXQgPSBSQ19ERVZfTE9HSU5fRkFJTDsKKyAgICB9CisgIH0KKyAgaWYocmV0KQorICB7CisgICAgY2hhciBtc2dbMzJdOworICAgIHNwcmludGYobXNnLCK07c7zwus9JWQiLHJldCk7CisgICAgZGlzcF9oaW50X2luZm9fdHdvKHBvcywix6m1vcqnsNwiLG1zZyxERUxBWV9USU1FM3MpOworICB9CisgIGVsc2UKKyAgeworICAgIGRpc3BfaGludF9pbmZvKHBvcywix6m1vbPJuaYiLERFTEFZX1RJTUUzcyk7CisgIH0KK30KKworc3RhdGljIHZvaWQgc3Bfc2V0X2RldnBoeWlkKHNwX3Bvc190KiBwb3MpCit7CisgIHVpbnQzMiB0aWNrZXI7CisgIHVpbnQ4IGtjb2RlOworICB1aW50MTYgcmV0ID0gMDsKKyAgdWludDgga2V5X3ByZXNzID0gMTsKKyAgY2hhciBtc2dbMTddOworICB1aW50OCBkZXZwaHlpZFs0XTsKKyAgdWludDggb2Zmc2V0OworICBjaGFyIHN0cls5XTsKKyAgTUVNQ1BZKGRldnBoeWlkLHBvcy0+ZGV2cGh5aWQsc2l6ZW9mKHBvcy0+ZGV2cGh5aWQpKTsKKyAgTUVNQ0xFQVIoc3RyLHNpemVvZiBzdHIpOworCisgIHRpY2tlciA9IHNwX2dldF90aWNrZXIoKTsKKyAgb2Zmc2V0ID0gODsKKyAgc3BfaGV4X3RvX3N0cihkZXZwaHlpZCw0LHN0cik7CisgIHdoaWxlKHNwX2dldF90aWNrZXIoKSAtdGlja2VyIDwgREVMQVlfVElNRTYwcykKKyAgeworICAgIGtjb2RlID0gc3BfZ2V0X2tleSgpOworICAgIGlmKGtjb2RlICE9IFNQX0tFWV9OT05FKQorICAgIHsKKyAgICAgIGtleV9wcmVzcyA9IDE7CisgICAgICBzd2l0Y2goa2NvZGUpCisgICAgICB7CisgICAgICBjYXNlIFNQX0tFWV8wOgorICAgICAgY2FzZSBTUF9LRVlfMToKKyAgICAgIGNhc2UgU1BfS0VZXzI6CisgICAgICBjYXNlIFNQX0tFWV8zOgorICAgICAgY2FzZSBTUF9LRVlfNDoKKyAgICAgIGNhc2UgU1BfS0VZXzU6CisgICAgICBjYXNlIFNQX0tFWV82OgorICAgICAgY2FzZSBTUF9LRVlfNzoKKyAgICAgIGNhc2UgU1BfS0VZXzg6CisgICAgICBjYXNlIFNQX0tFWV85OgorICAgICAgICBpZihvZmZzZXQgPCA4KQorICAgICAgICB7CisgICAgICAgICAgc3RyW29mZnNldCsrXSA9ICcwJyArKGtjb2RlIC1TUF9LRVlfMCk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIFNQX0tFWV9FTlRFUjoKKyAgICAgICAgaWYob2Zmc2V0ID49IDgpCisgICAgICAgIHsKKyAgICAgICAgICBzcF9zdHJfdG9faGV4KHN0ciw4LGRldnBoeWlkKTsKKyAgICAgICAgICBpZigwICE9IE1FTUNNUChwb3MtPmRldnBoeWlkLGRldnBoeWlkLDQpKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIHJldCA9IHNwX3NhdmVfZGV2cGh5aWQocG9zLCBkZXZwaHlpZCk7CisgICAgICAgICAgfQorICAgICAgICAgIGlmKCFyZXQpCisgICAgICAgICAgeworICAgICAgICAgICAgTUVNQ1BZKHBvcy0+ZGV2cGh5aWQsZGV2cGh5aWQsNCk7CisgICAgICAgICAgICBzcHJpbnRmKG1zZywiSUQ6ICUwMnglMDJ4JTAyeCUwMngiLGRldnBoeWlkWzBdLGRldnBoeWlkWzFdLGRldnBoeWlkWzJdLGRldnBoeWlkWzNdKTsKKyAgICAgICAgICAgIGRpc3BfaGludF9pbmZvX3R3byhwb3MsIsno1sPO78DtSUSzybmmIixtc2csIERFTEFZX1RJTUUycyk7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UKKyAgICAgICAgICB7CisgICAgICAgICAgICBzaG93X2Vycm9yKHBvcywisaO05s7vwO1JRMqnsNwiLHJldCk7CisgICAgICAgICAgfQorICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgU1BfS0VZX0NMRUFSOgorICAgICAgICBpZihvZmZzZXQgPiAwKQorICAgICAgICB7CisgICAgICAgICAgb2Zmc2V0LS07CisgICAgICAgICAgc3RyW29mZnNldF0gPSAwOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICB9CisgICAgaWYoa2V5X3ByZXNzKQorICAgIHsKKyAgICAgIHNwcmludGYobXNnLCIlcyIsc3RyKTsKKyAgICAgIGRpc3BfaGludF9pbmZvX3R3byhwb3MsIsno1sPO78DtSUQ6Iixtc2csMCk7CisgICAgICB0aWNrZXIgPSBzcF9nZXRfdGlja2VyKCk7CisgICAgICBrZXlfcHJlc3MgPSAwOworICAgIH0KKyAgfQorICByZXR1cm47Cit9CitzdGF0aWMgdm9pZCBzcF9zZXRfZGV2aWNlbm8oc3BfcG9zX3QqIHBvcykKK3sKKyAgdWludDMyIHRpY2tlcjsKKyAgdWludDgga2NvZGU7CisgIHVpbnQxNiByZXQgPSAwOworICB1aW50OCBrZXlfcHJlc3MgPSAxOworICB1aW50MTYgdGVtcG5vOworICB1aW50OCBkZXZpY2VubyA9IHBvcy0+ZGV2aWNlbm87CisgIGNoYXIgbXNnWzE3XTsKKyAgY2hhciB0ZW1wWzE3XTsKKyAgdGlja2VyID0gc3BfZ2V0X3RpY2tlcigpOworICB3aGlsZShzcF9nZXRfdGlja2VyKCkgLXRpY2tlciA8IERFTEFZX1RJTUU2MHMpCisgIHsKKyAgICBrY29kZSA9IHNwX2dldF9rZXkoKTsKKyAgICBpZihrY29kZSAhPSBTUF9LRVlfTk9ORSkKKyAgICB7CisgICAgICBrZXlfcHJlc3MgPSAxOworICAgICAgc3dpdGNoKGtjb2RlKQorICAgICAgeworICAgICAgY2FzZSBTUF9LRVlfMDoKKyAgICAgIGNhc2UgU1BfS0VZXzE6CisgICAgICBjYXNlIFNQX0tFWV8yOgorICAgICAgY2FzZSBTUF9LRVlfMzoKKyAgICAgIGNhc2UgU1BfS0VZXzQ6CisgICAgICBjYXNlIFNQX0tFWV81OgorICAgICAgY2FzZSBTUF9LRVlfNjoKKyAgICAgIGNhc2UgU1BfS0VZXzc6CisgICAgICBjYXNlIFNQX0tFWV84OgorICAgICAgY2FzZSBTUF9LRVlfOToKKyAgICAgICAgdGVtcG5vID0gKHVpbnQxNilkZXZpY2VubzsKKyAgICAgICAgdGVtcG5vICo9MTA7CisgICAgICAgIHRlbXBubyArPSAoa2NvZGUtU1BfS0VZXzApOworICAgICAgICBpZih0ZW1wbm8gPiAwICYmIHRlbXBubyA8IERFVl9NQVhfREVWSUNFTk8pCisgICAgICAgIHsKKyAgICAgICAgICBkZXZpY2VubyA9ICh1aW50OCl0ZW1wbm87CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIFNQX0tFWV9FTlRFUjoKKyAgICAgICAgaWYoZGV2aWNlbm8gPiAwICYmIGRldmljZW5vIDw9IERFVl9NQVhfREVWSUNFTk8pCisgICAgICAgIHsKKyAgICAgICAgICBpZihwb3MtPmRldmljZW5vICE9IGRldmljZW5vKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIHJldCA9IHNwX3NhdmVfZGV2aWNlbm8ocG9zLGRldmljZW5vKTsKKyAgICAgICAgICB9CisgICAgICAgICAgaWYoIXJldCkKKyAgICAgICAgICB7CisgICAgICAgICAgICBwb3MtPmRldmljZW5vID0gZGV2aWNlbm87CisgICAgICAgICAgICBzcHJpbnRmKG1zZywiu/q6xTogJWQiLGRldmljZW5vKTsKKyAgICAgICAgICAgIGRpc3BfaGludF9pbmZvX3R3byhwb3MsIsno1sO7+rrFs8m5piIsbXNnLCBERUxBWV9USU1FMnMpOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlCisgICAgICAgICAgeworICAgICAgICAgICAgc2hvd19lcnJvcihwb3MsIrGjtOa7+rrFyqew3CIscmV0KTsKKyAgICAgICAgICB9CisgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgIHNwcmludGYobXNnLCK3ts6nKDEtJWQpIixERVZfTUFYX0RFVklDRU5PKTsKKyAgICAgICAgICBkaXNwX2hpbnRfaW5mb190d28ocG9zLCK7+rrFtO3O8yIsbXNnLCBERUxBWV9USU1FM3MpOworICAgICAgICB9CisgICAgICBjYXNlIFNQX0tFWV9DTEVBUjoKKyAgICAgICAgaWYoZGV2aWNlbm8gPT0gMCkKKyAgICAgICAgeworICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBkZXZpY2VubyA9IDA7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgIH0KKyAgICBpZihrZXlfcHJlc3MpCisgICAgeworICAgICAgc3ByaW50Zih0ZW1wLCLJ6NbDu/q6xSgxLSVkKSIsREVWX01BWF9ERVZJQ0VOTyk7CisgICAgICBzcHJpbnRmKG1zZywiJWQiLGRldmljZW5vKTsKKyAgICAgIGRpc3BfaGludF9pbmZvX3R3byhwb3MsdGVtcCxtc2csMCk7CisgICAgICB0aWNrZXIgPSBzcF9nZXRfdGlja2VyKCk7CisgICAgICBrZXlfcHJlc3MgPSAwOworICAgIH0KKyAgfQorICByZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkIGNsZWFyX3RyYW5zZHRsKHNwX3Bvc190KiBwb3MpCit7CisgIGlmKDAgPT0gc3BfY2hlY2tfcGFzc3dkKHBvcywix+W/1cH3y67D3MLrOiIsIlx4OVx4MVx4NFx4M1x4OFx4NyIpKQorICB7CisgICAgZGlzcF9oaW50X2luZm9fdHdvKHBvcywix+W/1cH3y64iLCLH68nUtcguLi4iLDApOworICAgIHNwX2NsZWFyX3RyYW5zZHRsKHBvcyk7CisgIH0KK30KKworc3RhdGljIHZvaWQgbWFudWFsX3VwZ3JhZGUoc3BfcG9zX3QqIHBvcykKK3sKKyAgaWYoMCA9PSBzcF9jaGVja19wYXNzd2QocG9zLCAi1NrP38n9vLbD3MLrOiIsIlx4OVx4MVx4NFx4M1x4OFx4NyIpKQorICB7CisgICAgc3BfbWFudWFsX3VwZ3JhZGUocG9zKTsKKyAgfQorfQorCitzdGF0aWMgdm9pZCByZXNldF9mYWN0b3J5KHNwX3Bvc190KiBwb3MpCit7CisgIGlmKDAgPT0gc3BfY2hlY2tfcGFzc3dkKHBvcywgIrvWuLSz9rOnw9zC6zoiLCJceDlceDFceDRceDNceDhceDciKSkKKyAgeworICAgIHNwX3Jlc2V0X2ZhY3RvcnkocG9zKTsKKyAgfQorfQorCit2b2lkIHNwX21lbnVfb3B0aW9ucyhzcF9wb3NfdCogcG9zKQoreworICB1aW50MzIgdGlja2VyID0gMDsKKyAgdWludDgga2V5Y29kZTsKKyAgdWludDggcGFnZTsKKyAgdWludDggbWF4X2NudDsKKyAgdWludDgga2V5X3ByZXNzID0gMTsKKworICBtZW51X3QgbWVudXNbXSA9CisgIHsKKyAgICB7IjEusum/tLLOyv0iLCBzcF9zaG93X3N5c3BhcmF9LAorICAgIHsiMi65pLOnsuLK1CIsIHNwX2ZhY3RvcnlfY2hlY2t9LAorICAgIHsiMy7J6NbDyrG85CIsIHNwX3NldF9kZXZ0aW1lfSwKKyAgICB7IjQuyta2r7XHwrwiLCBzcF9tYW51YWxfbG9naW59LAorICAgIHsiNS7J6NbDzu/A7WlkIiwgc3Bfc2V0X2RldnBoeWlkfSwKKyAgICB7IjYuyejWw7v6usUiLCBzcF9zZXRfZGV2aWNlbm99LAorICAgIHsiNy7H5b/VwffLriIsIGNsZWFyX3RyYW5zZHRsfSwKKyAgICB7Ijgu1NrP38n9vLYiLCBtYW51YWxfdXBncmFkZX0sCisgICAgeyI5LrvWuLSz9rOnIiwgcmVzZXRfZmFjdG9yeX0KKyAgfTsKKyAgbWF4X2NudCA9IHNpemVvZihtZW51cykvc2l6ZW9mKG1lbnVfdCkvMzsKKyAgcGFnZSA9IDA7CisgIHRpY2tlciA9IHNwX2dldF90aWNrZXIoKTsKKyAgd2hpbGUoc3BfZ2V0X3RpY2tlcigpLXRpY2tlciA8PSBERUxBWV9USU1FNjBzKjUpCisgIHsKKyAgICBzcF9mZWVkX2RvZygpOworICAgIGtleWNvZGUgPSBzcF9nZXRfa2V5KCk7CisgICAgaWYoa2V5Y29kZSAhPSBTUF9LRVlfTk9ORSkKKyAgICB7CisgICAgICBrZXlfcHJlc3MgPSAxOworICAgICAgc3dpdGNoKGtleWNvZGUpCisgICAgICB7CisgICAgICBjYXNlIFNQX0tFWV8wOgorICAgICAgICBpZihwYWdlIDwgKG1heF9jbnQtMSkpCisgICAgICAgIHsKKyAgICAgICAgICBwYWdlKys7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIFNQX0tFWV8xOgorICAgICAgY2FzZSBTUF9LRVlfMjoKKyAgICAgIGNhc2UgU1BfS0VZXzM6CisgICAgICBjYXNlIFNQX0tFWV80OgorICAgICAgY2FzZSBTUF9LRVlfNToKKyAgICAgIGNhc2UgU1BfS0VZXzY6CisgICAgICBjYXNlIFNQX0tFWV83OgorICAgICAgY2FzZSBTUF9LRVlfODoKKyAgICAgIGNhc2UgU1BfS0VZXzk6CisgICAgICAgIGlmKG1lbnVzW2tleWNvZGUtU1BfS0VZXzFdLmZ1bmMgIT0gTlVMTCkKKyAgICAgICAgeworICAgICAgICAgIG1lbnVzW2tleWNvZGUtU1BfS0VZXzFdLmZ1bmMocG9zKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgU1BfS0VZX0NMRUFSOgorICAgICAgICBpZihwYWdlID09IDApCisgICAgICAgIHsKKyAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgcGFnZS0tOworICAgICAgICBicmVhazsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgIH0KKyAgICBpZihrZXlfcHJlc3MpCisgICAgeworICAgICAgZGlzcF9oaW50X2luZm9fdGhyZWUocG9zLCBtZW51c1twYWdlKjNdLmhpdCwgbWVudXNbcGFnZSozKzFdLmhpdCwgbWVudXNbcGFnZSozKzJdLmhpdCwgMCk7CisgICAgICBrZXlfcHJlc3MgPSAwOworICAgICAgdGlja2VyID0gc3BfZ2V0X3RpY2tlcigpOworICAgIH0KKyAgfQorfQpkaWZmIC0tZ2l0IGEvc3Vwd2lzZG9tL3NwX21lbnUuaCBiL3N1cHdpc2RvbS9zcF9tZW51LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzVmOGYzMgotLS0gL2Rldi9udWxsCisrKyBiL3N1cHdpc2RvbS9zcF9tZW51LmgKQEAgLTAsMCArMSw4IEBACisjaWZkZWYgX1NQX01FTlVfSF8KKyNkZWZpbmUgX1NQX01FTlVfSF8KKworI2luY2x1ZGUgInNwX2NvbmZpZy5oIgorCit2b2lkIHNwX21lbnVfb3B0aW9ucyhzcF9wb3NfdCogcG9zKTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9zdXB3aXNkb20vc3BfbXNncGFjay5jIGIvc3Vwd2lzZG9tL3NwX21zZ3BhY2suYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMTI1OGE5Ci0tLSAvZGV2L251bGwKKysrIGIvc3Vwd2lzZG9tL3NwX21zZ3BhY2suYwpAQCAtMCwwICsxLDg3IEBACisjaW5jbHVkZSAic3RyaW5nLmgiCisjaW5jbHVkZSAic3BfbXNncGFjay5oIgorCitpbnQzMiBzcF9wYWNrX2luaXQoY3dfcGFja19jb250ZXh0KiBwYWNrLHVpbnQ4KiBidWYsdWludDE2IGxlbikKK3sKKyAgbWVtc2V0KGJ1ZiwwLGxlbik7CisgIHJldHVybiBjd19wYWNrX2NvbnRleHRfaW5pdChwYWNrLGJ1ZixsZW4sMCk7Cit9CisKK3VpbnQxNiBzcF9wYWNrX2xlbmd0aChjd19wYWNrX2NvbnRleHQqIHBhY2spCit7CisgIGlmKHBhY2stPmN1cnJlbnQgIT0gTlVMTCAmJiBwYWNrLT5zdGFydCAhPSBOVUxMKQorICB7CisgICAgcmV0dXJuIChwYWNrLT5jdXJyZW50IC1wYWNrLT5zdGFydCk7CisgIH0KKyAgcmV0dXJuIDI1NjsKK30KK3ZvaWQgc3BfcGFja19wdXRfc3RyKGN3X3BhY2tfY29udGV4dCogcGFjayxjb25zdCBjaGFyKiBwYXJha2V5LGNvbnN0IGNoYXIqIHBhcmF2YWwpCit7CisgIGN3X3BhY2tfc3RyKHBhY2sscGFyYWtleSxzdHJsZW4ocGFyYWtleSkpOworICBjd19wYWNrX3N0cihwYWNrLHBhcmF2YWwsc3RybGVuKHBhcmF2YWwpKTsKK30KK3ZvaWQgc3BfcGFja19wdXRfaW50KGN3X3BhY2tfY29udGV4dCogcGFjayxjb25zdCBjaGFyKiBwYXJha2V5LGNvbnN0IGludCBwYXJhdmFsKQoreworICBjd19wYWNrX3N0cihwYWNrLHBhcmFrZXksc3RybGVuKHBhcmFrZXkpKTsKKyAgY3dfcGFja19zaWduZWQocGFjayxwYXJhdmFsKTsKK30KK3ZvaWQgc3BfcGFja19wdXRfYmluKGN3X3BhY2tfY29udGV4dCogcGFjayxjb25zdCBjaGFyKiBwYXJha2V5LGNvbnN0IHVpbnQ4KiBwYXJhdmFsLAorICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDE2IGxlbikKK3sKKyAgY3dfcGFja19zdHIocGFjayxwYXJha2V5LHN0cmxlbihwYXJha2V5KSk7CisgIGN3X3BhY2tfYmluKHBhY2sscGFyYXZhbCxsZW4pOworfQoraW50MzIgc3BfdW5wYWNrX2luaXQoY3dfdW5wYWNrX2NvbnRleHQqIHVucGFjayx1aW50OCogYnVmLHVpbnQxNiBsZW4pCit7CisgIGN3X3VucGFja19jb250ZXh0X2luaXQodW5wYWNrLGJ1ZixsZW4sMCk7CisgIHJldHVybiB1bnBhY2stPnJldHVybl9jb2RlOworfQorCit1aW50OCBzcF91bnBhY2tfbWFwX3NpemUoY3dfdW5wYWNrX2NvbnRleHQqIHVucGFjaykKK3sKKyAgY3dfdW5wYWNrX25leHQodW5wYWNrKTsKKyAgaWYodW5wYWNrLT5pdGVtLnR5cGUgPT0gQ1dQX0lURU1fTUFQKQorICB7CisgICAgcmV0dXJuICh1aW50OCl1bnBhY2stPml0ZW0uYXMubWFwLnNpemU7CisgIH0KKyAgcmV0dXJuIDA7Cit9CisKK3VpbnQ4IHNwX3VucGFja192YWx1ZShjd191bnBhY2tfY29udGV4dCogdW5wYWNrLHVucGFja19maWVsZF90KiBmaWVsZCkKK3sKKyAgY3dfdW5wYWNrX25leHQodW5wYWNrKTsKKyAgaWYodW5wYWNrLT5pdGVtLnR5cGUgPT0gQ1dQX0lURU1fU1RSKQorICB7CisgICAgZmllbGQtPmtleSA9IHVucGFjay0+aXRlbS5hcy5zdHIuc3RhcnQ7CisgICAgY3dfdW5wYWNrX25leHQodW5wYWNrKTsKKyAgICBpZih1bnBhY2stPml0ZW0udHlwZSA9PSBDV1BfSVRFTV9TVFIpCisgICAgeworICAgICAgZmllbGQtPnZhbC5zdHJ2YWwgPSB1bnBhY2stPml0ZW0uYXMuc3RyLnN0YXJ0OworICAgICAgZmllbGQtPnN0cmxlbiA9IHVucGFjay0+aXRlbS5hcy5zdHIubGVuZ3RoOworICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGVsc2UgaWYodW5wYWNrLT5pdGVtLnR5cGUgPT0gQ1dQX0lURU1fUE9TSVRJVkVfSU5URUdFUikKKyAgICB7CisgICAgICBmaWVsZC0+dmFsLmludHZhbD0gKGludDMyKXVucGFjay0+aXRlbS5hcy5pNjQ7CisgICAgICBmaWVsZC0+c3RybGVuID0gMDsKKyAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBlbHNlIGlmKHVucGFjay0+aXRlbS50eXBlID09IENXUF9JVEVNX0JJTikKKyAgICB7CisgICAgICBmaWVsZC0+dmFsLmJpbnZhbCA9IHVucGFjay0+aXRlbS5hcy5zdHIuc3RhcnQ7CisgICAgICBmaWVsZC0+c3RybGVuID0gdW5wYWNrLT5pdGVtLmFzLnN0ci5sZW5ndGg7CisgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgIGZpZWxkLT5zdHJsZW4gPSAwOworICAgICAgZmllbGQtPnZhbC5pbnR2YWwgPSAwOworICAgICAgcmV0dXJuIDE7CisgICAgfQorICB9CisgIHJldHVybiAxOworfQorCisKKworCmRpZmYgLS1naXQgYS9zdXB3aXNkb20vc3BfbXNncGFjay5oIGIvc3Vwd2lzZG9tL3NwX21zZ3BhY2suaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMDdhMDIxCi0tLSAvZGV2L251bGwKKysrIGIvc3Vwd2lzZG9tL3NwX21zZ3BhY2suaApAQCAtMCwwICsxLDQwIEBACisjaWZuZGVmIF9TUF9NU0dQQUNLX0hfCisjZGVmaW5lIF9TUF9NU0dQQUNLX0hfCisKKworI2luY2x1ZGUgIi4uL21zZ3BhY2svY3dwYWNrLmgiCisjaW5jbHVkZSAic3BfY29uZmlnLmgiCisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgY29uc3QgY2hhcioga2V5OworICB1bmlvbgorICB7CisgICAgaW50MzIgaW50dmFsOworICAgIGNvbnN0IGNoYXIqIHN0cnZhbDsKKwljb25zdCB1aW50OCogYmludmFsOworICB9IHZhbDsKKyAgaW50MzIgc3RybGVuOworfSB1bnBhY2tfZmllbGRfdDsKKworaW50MzIgc3BfcGFja19pbml0KGN3X3BhY2tfY29udGV4dCogcGFjayx1aW50OCogYnVmLHVpbnQxNiBsZW4pOwordm9pZCBzcF9wYWNrX3B1dF9zdHIoY3dfcGFja19jb250ZXh0KiBwYWNrLGNvbnN0IGNoYXIqIHBhcmFrZXksY29uc3QgY2hhciogcGFyYXZhbCk7Cit2b2lkIHNwX3BhY2tfcHV0X2ludChjd19wYWNrX2NvbnRleHQqIHBhY2ssY29uc3QgY2hhciogcGFyYWtleSxjb25zdCBpbnQgcGFyYXZhbCk7Cit2b2lkIHNwX3BhY2tfcHV0X2Jpbihjd19wYWNrX2NvbnRleHQqIHBhY2ssY29uc3QgY2hhciogcGFyYWtleSxjb25zdCB1aW50OCogcGFyYXZhbCwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQxNiBsZW4pOwordWludDE2IHNwX3BhY2tfbGVuZ3RoKGN3X3BhY2tfY29udGV4dCogcGFjayk7CisKK2ludDMyIHNwX3VucGFja19pbml0KGN3X3VucGFja19jb250ZXh0KiB1bnBhY2ssdWludDgqIGJ1Zix1aW50MTYgbGVuKTsKK3VpbnQ4IHNwX3VucGFja19tYXBfc2l6ZShjd191bnBhY2tfY29udGV4dCogdW5wYWNrKTsKK3VpbnQ4IHNwX3VucGFja192YWx1ZShjd191bnBhY2tfY29udGV4dCogdW5wYWNrLHVucGFja19maWVsZF90KiBmaWVsZCk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9zdXB3aXNkb20vc3BfdXBncmFkZS5jIGIvc3Vwd2lzZG9tL3NwX3VwZ3JhZGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZjJmZGI4Ci0tLSAvZGV2L251bGwKKysrIGIvc3Vwd2lzZG9tL3NwX3VwZ3JhZGUuYwpAQCAtMCwwICsxLDQxNiBAQAorI2luY2x1ZGUgInNwX21zZ3BhY2suaCIKKyNpbmNsdWRlICJzcF9mbGFzaC5oIgorI2luY2x1ZGUgInNwX3V0aWwuaCIKKyNpbmNsdWRlICJzcF9kaXNwbGF5LmgiCisjaW5jbHVkZSAic3BfY29tbXVuaWNhdGUuaCIKKyNpbmNsdWRlICJzcF91cGdyYWRlLmgiCisKK2V4dGVybiB1aW50MTYgY3JjX3RhYmxlW107CisKKyNwcmFnbWEgcGFjayhwdXNoKQorI3ByYWdtYSBwYWNrKDEpCit0eXBlZGVmIHN0cnVjdAoreworICB1aW50MzIgZmlsZV9zaXplOworICB1aW50OCBmaWxlX2NyY1syXTsKKyAgdWludDggZmlsZV9tZDVbMTZdOworfSBzcF91cGdyYWRlX2luZm9fdDsKKyNwcmFnbWEgcGFjayhwb3ApCisKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgkJCQkJCQkJCQkgICAgICBDUkMg0KMg0ekKKyogw+ggyvY6ICDQo9Hp0ru0rmNoYXLK/b7dtcRDUkMKKyoKKyogyuQgyOs6ICBDUFVfQ0hBUiAgICpzdHIgIAkJLSDSqtCj0enK/b7dtcTWuNXrCisqICAgICAgICAgQ1BVX0lOVDE2VSBzaXplCQktINKq0KPR6cr9vt21xLOktsgKKyoJCSAgQ1BVX0lOVDA4VSBtb2RlCQktINCj0em1xMSjyr0KKyoJCQkJCQkgICAgICAgICAxOiAgzqq4w7Suyv2+3dT2vNNDUkPQo9HpICDNrMqxt7W72NCj0em1xENSQ9a1CisqCQkJCQkJCSAgICAgMDogILjDtK7K/b7dyse38c2ouf3Qo9HpCbe1u9jQo9HptcRDUkPWtQorKiC3tSC72DoKKyoKKyog16Ig0uI6CisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KKy8vQ1JDyrnTwwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgdWludDgJIEw7CisgIHVpbnQ4CSBIOworfSBJTlRfMDhCSVRfMjsKKwordHlwZWRlZiB1bmlvbgoreworICB1aW50MTYgICBJbnQxNkJpdDsKKyAgSU5UXzA4QklUXzIgIEludDA4Qml0OworfSBJTlRfMTZCSVRfMDhCSVQ7CisKK3VpbnQxNiBBSF9DUkNfVmVyaWZ5KHVpbnQ4IHN0cltdLCB1aW50MTYgIHNpemUsIHVpbnQ4IG1vZGUpCit7CisgIHVpbnQzMiAgICAgICBpOworICBJTlRfMTZCSVRfMDhCSVQJIGNyYzsKKyAgSU5UXzE2QklUXzA4QklUCSB5OworCisgIGNyYy5JbnQxNkJpdCA9IDA7CisgIGZvcihpID0gMCA7IGkgPCBzaXplIDsgaSsrKQorICB7CisgICAgeS5JbnQxNkJpdCAgICA9IGNyY190YWJsZVsgc3RyWyBpIF0gXiBjcmMuSW50MDhCaXQuSCBdOworICAgIHkuSW50MDhCaXQuSCBePSBjcmMuSW50MDhCaXQuTDsKKyAgICBjcmMuSW50MTZCaXQgID0geS5JbnQxNkJpdDsKKyAgfQorICBpZihtb2RlID09IDEpCisgIHsKKyAgICBzdHJbIGkrKyBdID0geS5JbnQwOEJpdC5IIDsKKyAgICBzdHJbIGkgXSAgID0geS5JbnQwOEJpdC5MIDsKKyAgfQorICByZXR1cm4oY3JjLkludDE2Qml0KTsKK30KKworc3RhdGljIHVpbnQxNiB1cGRhdGVfdXBncmFkZV9tYXJrKHVpbnQzMiBDaGVja1N1bSwgdWludDMyIHNpemUpCit7CisgIHVpbnQxNiByZXQsaTsKKyAgdWludDggYnVmZlsxOF0gPSB7IDB4NWEsMHg0YiwweDNjLDB4MmQsMHgxZSwweDBmIH0gOworCisgIC8v0LTJ/by2yv2+3bPJuabQtMjrRkxBU0ix6rzHLCC6zdCj0enC6ywg09DQp7T6wuuzpLbI0LTI68r9vt1GTEFTSAorICBtZW1jcHkoYnVmZis2LCAodW5zaWduZWQgY2hhciopJihDaGVja1N1bSksIDQpIDsJICAgIC8v0KPR6brNCisgIG1lbWNweShidWZmKzEwLCh1bnNpZ25lZCBjaGFyKikmKHNpemUpICw0KSA7CQkgICAgLy/K/b7ds6S2yAorICBBSF9DUkNfVmVyaWZ5KGJ1ZmYsIDE0LCAxKTsKKworICBmb3IoaSA9IDA7IGk8NTsgaSsrKQorICB7CisgICAgcmV0ID0gc3BfZmxhc2hfZXJhc2UoREVGX0lhcE1hcmtBZGRyKTsKKyAgICBpZihyZXQpCisgICAgeworICAgICAgY29udGludWU7CisgICAgfQorICAgIHJldCA9IHNwX2ZsYXNoX3dyaXRlKERFRl9JYXBNYXJrQWRkciwgYnVmZiwgMTYpOworICAgIGlmKCFyZXQpCisgICAgeworICAgICAgYnJlYWs7CisgICAgfQorICB9CisgIGlmKGkgPj0gNSkKKyAgeworICAgIHJldHVybiAxOworICB9CisgIHJldHVybiAwOworfQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK7qvyv3D+7PGOiBVMzIgQVBQX0lhcERhdGFTdW1DaGVjayggVTMyIHN0YWFkZHIsIFUzMiBsZW4sIFUwOCBtb2RlICkKK7qvyv3X99PDOiC2wbP2RkxBU0jW0LXEyv2+3aOssqLQzrPJ0KPR6Qoruq/K/crkyOs6IHN0YWFkZHIgCS0gv6rKvLXY1rcKKwkJICBsZW4JICAJLSDK/b7ds6S2yAorCQkgIG1vZGUJCS0g0KPR6cSjyr0gMCDIobe0us3Qo9HpIDEgxtXNqLrN0KPR6Qoruq/K/crks/Y6IM7eCiu6r8r9t7W72Na1OiAwILPJuaYgxuTL+8qnsNwKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCit1aW50MzIgZG9fQVBQX0lhcERhdGFTdW1DaGVjayh1aW50MzIgc3RhYWRkciwgdWludDMyIGxlbiwgdWludDggbW9kZSkKK3sKKyAgdWludDMyIFN1bTsKKyAgdWludDMyIGFwcF9sZW4sIGNoZWNrc2l6ZSwgc2l6ZTsKKyAgdWludDE2IHJjb2RlLCBpOworICB1aW50OCBidWZmZXJbMTAyNF07Ly9JQVBfTUFYTEVOCisKKyAgYXBwX2xlbiA9IGxlbjsKKyAgY2hlY2tzaXplID0gMDsKKyAgU3VtID0gMDsKKyAgd2hpbGUoY2hlY2tzaXplIDwgYXBwX2xlbikKKyAgeworICAgIGlmKGxlbiA8IDEwMjQpCisgICAgeworICAgICAgc2l6ZSA9IGxlbjsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgIHNpemUgPSAxMDI0OworICAgIH0KKworICAgIGZvcihpPTA7IGk8NTsgaSsrKQorICAgIHsKKyAgICAgIHJjb2RlID0gc3BfZmxhc2hfcmVhZCgoc3RhYWRkciArIGNoZWNrc2l6ZSksIGJ1ZmZlciwgc2l6ZSk7CisgICAgICBpZighcmNvZGUpCisgICAgICB7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgIH0KKworICAgIGlmKG1vZGUgPT0gMCkKKyAgICB7CisgICAgICBmb3IoaSA9IDA7IGkgPCBzaXplOyBpKyspCisgICAgICB7CisgICAgICAgIFN1bSArPSAoKH5idWZmZXJbaV0pICYgMHhGRik7ICAgIC8v0MK1xMrHyKG3tLrNCisgICAgICB9CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICBmb3IoaSA9IDA7IGkgPCBzaXplOyBpKyspCisgICAgICB7CisgICAgICAgIFN1bSArPSBidWZmZXJbaV07IAkJCQkvL8DPtcTKx9axvdO6zQorICAgICAgfQorICAgIH0KKyAgICBjaGVja3NpemUgKz0gc2l6ZTsKKyAgICBsZW4gLT0gc2l6ZTsKKyAgfQorCisgIHJldHVybiAoU3VtKTsKK30KK3N0YXRpYyB1aW50OCBnZXRfZmlsZV9pbmZvKHNwX3Bvc190KiBwb3MsIHNwX3VwZ3JhZGVfaW5mb190KiB1cGdyYWRlaW5mbykKK3sKKyAgdWludDggcmV0OworICB1aW50OCBzaXplOworICBjaGFyIHRlbXBbMzJdOworICBzcF9wcm90b2NvbF9yZXF1ZXN0X3QgcmVxOworICBzcF9wcm90b2NvbF9yZXNwb25zZV90IHJlc3A7CisgIGN3X3BhY2tfY29udGV4dCBwYWNrOworICBjd191bnBhY2tfY29udGV4dCB1bnBhY2s7CisgIHVucGFja19maWVsZF90IGZpZWxkOworCisgIHNwX2ZsYXNoX3JlYWQoQUREUl9VUEdSQURFX1VQSU5GTywodWludDgqKXVwZ3JhZGVpbmZvLHNpemVvZihzcF91cGdyYWRlX2luZm9fdCkpOworCisgIC8qtsHIoc7EvP6zpLbIus1DUkMqLworICBzcF9wcm90b2NvbF9yZXFfaW5pdCgmcmVxLFNQX0NNRF9VUEdSQURFKTsKKyAgc3BfcGFja19pbml0KCZwYWNrLHJlcS5kYXRhLHNpemVvZihyZXEuZGF0YSkpOworICBjd19wYWNrX21hcF9zaXplKCZwYWNrLDUpOworCisgIHNwX3BhY2tfcHV0X2JpbigmcGFjayxQS19CSU5fREVWUEhZSUQsIHBvcy0+ZGV2cGh5aWQsIHNpemVvZihwb3MtPmRldnBoeWlkKSk7CisgIHNwX3BhY2tfcHV0X2ludCgmcGFjayxQS19JTlRfU0VRTk8gLDB4RkZGRik7CisgIHNwX3BhY2tfcHV0X3N0cigmcGFjayxQS19TVFJfREVWVFlQRSwgREVWX1RZUEUpOworICBzcF9wYWNrX3B1dF9zdHIoJnBhY2ssUEtfU1RSX1ZFUlNJT04sIFBST19WRVJTSU9OKTsKKyAgc3BfcGFja19wdXRfYmluKCZwYWNrLFBLX0JJTl9TT0ZUX01ENSx1cGdyYWRlaW5mby0+ZmlsZV9tZDUsMTYpOworCisgIHJlcS5kYXRhbGVuICs9IHNwX3BhY2tfbGVuZ3RoKCZwYWNrKTsKKyAgcmV0ID0gc3BfY29tbV9jYWxsKHBvcywgJnJlcSwgJnJlc3AsIENPTU1fV0FJVF9USU1FKTsKKyAgaWYoIXJldCkKKyAgeworICAgIHNwX3VucGFja19pbml0KCZ1bnBhY2sscmVzcC5kYXRhLHJlc3AuZGF0YWxlbik7CisgICAgLy9lcmFzZQorICAgIHNwX2ZsYXNoX2VyYXNlKEFERFJfVVBHUkFERV9VUElORk8pOworICAgIHNpemUJPSBzcF91bnBhY2tfbWFwX3NpemUoJnVucGFjayk7CisgICAgd2hpbGUoc2l6ZS0tID4gMCkKKyAgICB7CisgICAgICBzcF91bnBhY2tfdmFsdWUoJnVucGFjaywmZmllbGQpOworICAgICAgLy8gNCBieXRlIGZpbGVfbGVuZ3RoLDIgY3JjCisgICAgICBpZihJU19LRVkoUEtfSU5UX0ZJTEVTSVpFLGZpZWxkLmtleSkpCisgICAgICB7CisgICAgICAgIHVwZ3JhZGVpbmZvLT5maWxlX3NpemUgPSAodWludDMyKWZpZWxkLnZhbC5pbnR2YWw7CisgICAgICB9CisgICAgICBlbHNlIGlmKElTX0tFWShQS19CSU5fRklMRUNSQyxmaWVsZC5rZXkpKQorICAgICAgeworICAgICAgICBpZihmaWVsZC5zdHJsZW4gIT0gMikKKyAgICAgICAgeworICAgICAgICAgIHNwcmludGYodGVtcCwiQ1JDs6S2yD0lZCIsZmllbGQuc3RybGVuKTsKKyAgICAgICAgICBkaXNwX2hpbnRfaW5mb190d28ocG9zLCAiyf28tsqnsNwiLHRlbXAsREVMQVlfVElNRTNzKTsKKyAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgICAgICBNRU1DUFkodXBncmFkZWluZm8tPmZpbGVfY3JjLGZpZWxkLnZhbC5iaW52YWwsZmllbGQuc3RybGVuKTsKKyAgICAgIH0KKyAgICAgIGVsc2UgaWYoSVNfS0VZKFBLX0JJTl9TT0ZUX01ENSxmaWVsZC5rZXkpKQorICAgICAgeworICAgICAgICBNRU1DUFkodXBncmFkZWluZm8tPmZpbGVfbWQ1LGZpZWxkLnZhbC5iaW52YWwsZmllbGQuc3RybGVuKTsKKyAgICAgIH0KKyAgICB9CisgIH0KKyAgZWxzZQorICB7CisgICAgZGlzcF9zZXJ2ZXJfZXJybXNnKHBvcywgIsn9vLbKp7DcIixyZXNwLmRhdGEscmVzcC5kYXRhbGVuKTsKKyAgfQorICByZXR1cm4gcmV0OworfQorc3RhdGljIHVpbnQ4IGRvd25sb2FkX2ZpbGUoc3BfcG9zX3QqIHBvcykKK3sKKyAgdWludDggcmV0OworICB1aW50OCB0aW1lb3V0X3RyeWNudCA9IDA7CisgIHVpbnQ4IHNhbWVzZXFfdHJ5Y250ID0gMDsKKyAgdWludDggZGF0YV9sZW4gPSAwOworICB1aW50MTYgc2Vxbm8gPSAwOworICB1aW50MTYgcmVzcF9zZXFubyA9IDA7CisgIHVpbnQzMiBvZmZzZXQgPSAwOworICB1aW50OCBlbmRmbGFnID0gMDsKKyAgdWludDggc2l6ZTsKKyAgY2hhciB0ZW1wWzMyXTsKKyAgdWludDggYnVmWzEyOF07CisgIHNwX3Byb3RvY29sX3JlcXVlc3RfdCByZXE7CisgIHNwX3Byb3RvY29sX3Jlc3BvbnNlX3QgcmVzcDsKKyAgY3dfcGFja19jb250ZXh0IHBhY2s7CisgIGN3X3VucGFja19jb250ZXh0IHVucGFjazsKKyAgdW5wYWNrX2ZpZWxkX3QgZmllbGQ7CisKKyAgZm9yKG9mZnNldCA9IEFERFJfVVBHUkFERV9CRUdJTjsgb2Zmc2V0IDwgQUREUl9VUEdSQURFX0VORDsgb2Zmc2V0ICs9REVGX0ZMQVNIX1BhZ2VTaXplKQorICB7CisgICAgc3BfZmxhc2hfZXJhc2Uob2Zmc2V0KTsKKyAgfQorICBvZmZzZXQgPSAwOworICB3aGlsZSgxKQorICB7CisgICAgc3BfZmVlZF9kb2coKTsKKyAgICBzcF9wcm90b2NvbF9yZXFfaW5pdCgmcmVxLFNQX0NNRF9VUEdSQURFKTsKKyAgICBzcF9wYWNrX2luaXQoJnBhY2sscmVxLmRhdGEsc2l6ZW9mKHJlcS5kYXRhKSk7CisgICAgY3dfcGFja19tYXBfc2l6ZSgmcGFjaywyKTsKKworICAgIHNwX3BhY2tfcHV0X2JpbigmcGFjayxQS19CSU5fREVWUEhZSUQsIHBvcy0+ZGV2cGh5aWQsIHNpemVvZihwb3MtPmRldnBoeWlkKSk7CisgICAgc3BfcGFja19wdXRfaW50KCZwYWNrLFBLX0lOVF9TRVFOTyxzZXFubyk7CisKKyAgICByZXEuZGF0YWxlbiArPSBzcF9wYWNrX2xlbmd0aCgmcGFjayk7CisgICAgcmV0ID0gc3BfY29tbV9jYWxsKHBvcywgJnJlcSwmcmVzcCwgQ09NTV9XQUlUX1RJTUUpOworICAgIGlmKCFyZXQpCisgICAgeworICAgICAgdGltZW91dF90cnljbnQgPSAwOy8vc3VjY2VzcyByZXNldAorICAgICAgc3BfdW5wYWNrX2luaXQoJnVucGFjayxyZXNwLmRhdGEscmVzcC5kYXRhbGVuKTsKKyAgICAgIHNpemUgPSBzcF91bnBhY2tfbWFwX3NpemUoJnVucGFjayk7CisgICAgICB3aGlsZShzaXplLS0gPiAwKQorICAgICAgeworICAgICAgICBzcF91bnBhY2tfdmFsdWUoJnVucGFjaywmZmllbGQpOworICAgICAgICBpZihJU19LRVkoUEtfSU5UX1NFUU5PLGZpZWxkLmtleSkpCisgICAgICAgIHsKKyAgICAgICAgICByZXNwX3NlcW5vID0gKHVpbnQzMilmaWVsZC52YWwuaW50dmFsOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYoSVNfS0VZKFBLX0lOVF9GTEFHLGZpZWxkLmtleSkpCisgICAgICAgIHsKKyAgICAgICAgICBpZigwID09IE1FTUNNUCgiZW5kIixmaWVsZC52YWwuc3RydmFsLGZpZWxkLnN0cmxlbikpCisgICAgICAgICAgeworICAgICAgICAgICAgLy8gzsS8/s/C1NjN6rPJCisgICAgICAgICAgICBlbmRmbGFnID0gMTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZihJU19LRVkoUEtfQklOX0ZJTEVEQVRBLGZpZWxkLmtleSkpCisgICAgICAgIHsKKyAgICAgICAgICBkYXRhX2xlbiA9IGZpZWxkLnN0cmxlbjsKKyAgICAgICAgICBpZihkYXRhX2xlbiA+IHNpemVvZihidWYpKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIHNwcmludGYodGVtcCwitO3O87Oktsg9JWQiLGRhdGFfbGVuKTsKKyAgICAgICAgICAgIGRpc3BfaGludF9pbmZvX3R3byhwb3MsICLJ/by2yqew3CIsdGVtcCxERUxBWV9USU1FM3MpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgICAgfQorICAgICAgICAgIE1FTUNMRUFSKGJ1ZixzaXplb2YgYnVmKTsKKyAgICAgICAgICBNRU1DUFkoYnVmLGZpZWxkLnZhbC5iaW52YWwsZGF0YV9sZW4pOworICAgICAgICB9CisgICAgICB9CisKKyAgICAgIGlmKHJlc3Bfc2Vxbm8gIT0gc2Vxbm8gKzEpCisgICAgICB7CisgICAgICAgIGlmKDEwIDwgc2FtZXNlcV90cnljbnQpCisgICAgICAgIHsKKyAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgICAgICArK3NhbWVzZXFfdHJ5Y250OworICAgICAgICBjb250aW51ZTsKKyAgICAgIH0KKyAgICAgIHNhbWVzZXFfdHJ5Y250ID0gMDsKKworICAgICAgKytzZXFubzsKKyAgICAgIHNucHJpbnRmKHRlbXAsc2l6ZW9mIHRlbXAsInNlcW5vID0gJTA0ZCIsc2Vxbm8pOworICAgICAgZGlzcF9oaW50X2luZm9fdHdvKHBvcywgItX91NrJ/by2Li4uIix0ZW1wLDApOworCisgICAgICBzcF9mbGFzaF93cml0ZShBRERSX1VQR1JBREVfQkVHSU4rb2Zmc2V0LGJ1ZixkYXRhX2xlbik7CisgICAgICBpZihlbmRmbGFnKQorICAgICAgeworICAgICAgICByZXR1cm4gMDsKKyAgICAgIH0KKworICAgICAgb2Zmc2V0ICs9ICh1aW50MzIpZGF0YV9sZW47CisgICAgICBpZihBRERSX1VQR1JBREVfQkVHSU4gKyBvZmZzZXQgPj0gQUREUl9VUEdSQURFX0VORCkKKyAgICAgIHsKKyAgICAgICAgZGlzcF9oaW50X2luZm8ocG9zLCAiz8LU2M7EvP65/bTzIixERUxBWV9USU1FM3MpOworICAgICAgICByZXR1cm4gMTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgIGlmKDMgPCB0aW1lb3V0X3RyeWNudCkKKyAgICAgIHsKKyAgICAgICAgZGlzcF9oaW50X2luZm8ocG9zLCAiz8LU2M7EvP6zrMqxIixERUxBWV9USU1FM3MpOworICAgICAgICByZXR1cm4gMTsKKyAgICAgIH0KKyAgICAgIERlbGF5X21zKERFTEFZX1RJTUUxcyk7CisgICAgICArK3RpbWVvdXRfdHJ5Y250OworICAgIH0KKyAgfQorfQorc3RhdGljIHVpbnQ4IGNoZWNrX2ZpbGVfYW5kX3VwZ3JhZGUoc3BfcG9zX3QqIHBvcywgc3BfdXBncmFkZV9pbmZvX3QqIHVwZ3JhZGVpbmZvKQoreworICB1aW50MTYgcmV0OworICB1aW50OCBjcmNbMl07CisgIHVpbnQ4IHRlbXBfY3JjWzJdOworICB1aW50OCBidWZbMTI4XTsKKyAgdWludDMyIHN1bWNyYzsKKworICB1aW50MzIgcGFnZV9pbmRleCA9IDA7CisgIHVpbnQzMiBwYWdlX251bSA9ICh1cGdyYWRlaW5mby0+ZmlsZV9zaXplLTEpL3NpemVvZihidWYpICsgMTsKKyAgd2hpbGUoMSkKKyAgeworICAgIGlmKHBhZ2VfbnVtID09IHBhZ2VfaW5kZXggKzEpCisgICAgeworICAgICAgc3BfZmxhc2hfcmVhZChBRERSX1VQR1JBREVfQkVHSU4gK3BhZ2VfaW5kZXgqc2l6ZW9mKGJ1ZiksYnVmLAorICAgICAgICAgICAgICAgICAgICBzaXplb2YgYnVmKTsKKyAgICAgIG1lbWNweSh0ZW1wX2NyYyxjcmMsMik7CisgICAgICBpZih1cGdyYWRlaW5mby0+ZmlsZV9zaXplJXNpemVvZihidWYpID09IDApCisgICAgICB7CisgICAgICAgIHNwX3Byb3RvY29sX2NyY19pbml0KGJ1ZixzaXplb2YoYnVmKSx0ZW1wX2NyYyxjcmMpOworICAgICAgfQorICAgICAgZWxzZQorICAgICAgeworICAgICAgICBzcF9wcm90b2NvbF9jcmNfaW5pdChidWYsdXBncmFkZWluZm8tPmZpbGVfc2l6ZSVzaXplb2YoYnVmKSx0ZW1wX2NyYyxjcmMpOworICAgICAgfQorICAgICAgaWYoMCA9PSBNRU1DTVAodXBncmFkZWluZm8tPmZpbGVfY3JjLGNyYywyKSkKKyAgICAgIHsKKyAgICAgICAgc3BfZmxhc2hfd3JpdGUoQUREUl9VUEdSQURFX1VQSU5GTywodWludDgqKXVwZ3JhZGVpbmZvLHNpemVvZihzcF91cGdyYWRlX2luZm9fdCkpOworCisgICAgICAgIHN1bWNyYyA9IGRvX0FQUF9JYXBEYXRhU3VtQ2hlY2soQUREUl9VUEdSQURFX0JFR0lOLHVwZ3JhZGVpbmZvLT5maWxlX3NpemUsMCk7CisgICAgICAgIC8qyf28trrzLGJvb3Qgu+GywbP9uMPSs7zHwrwgKi8KKyAgICAgICAgLy+4/NDCserWvs671sPOuworICAgICAgICByZXQgPSB1cGRhdGVfdXBncmFkZV9tYXJrKHN1bWNyYyx1cGdyYWRlaW5mby0+ZmlsZV9zaXplKTsKKyAgICAgICAgaWYocmV0KQorICAgICAgICB7CisgICAgICAgICAgZGlzcF9oaW50X2luZm9fdHdvKHBvcywgIsn9vLbKp7DcIiwiuPzQwrHq1r7Kp7DcIixERUxBWV9USU1FMnMpOworICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgIGRpc3BfaGludF9pbmZvX3R3byhwb3MsICLV/dTayf28tiIsIsfrzvC2z7XnIixERUxBWV9USU1FMnMpOworICAgICAgICAgIHNwX3Jlc2V0KCk7CisgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgIHsKKyAgICAgICAgZGlzcF9oaW50X2luZm8ocG9zLCAizsS8/tCj0em07c7zIixERUxBWV9USU1FM3MpOworICAgICAgICByZXR1cm4gMTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgIHNwX2ZsYXNoX3JlYWQoQUREUl9VUEdSQURFX0JFR0lOK3BhZ2VfaW5kZXgqc2l6ZW9mKGJ1ZiksYnVmLHNpemVvZiBidWYpOworICAgICAgaWYoMCA9PSBwYWdlX2luZGV4KQorICAgICAgeworICAgICAgICBzcF9wcm90b2NvbF9jcmMoYnVmLHNpemVvZiBidWYsY3JjKTsKKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgIHsKKyAgICAgICAgbWVtY3B5KHRlbXBfY3JjLGNyYywyKTsKKyAgICAgICAgc3BfcHJvdG9jb2xfY3JjX2luaXQoYnVmLHNpemVvZiBidWYsdGVtcF9jcmMsY3JjKTsKKyAgICAgIH0KKyAgICAgICsrcGFnZV9pbmRleDsKKyAgICB9CisgIH0KK30KK3ZvaWQgc3BfbWFudWFsX3VwZ3JhZGUoc3BfcG9zX3QqIHBvcykKK3sKKyAgdWludDggcmV0OworICBzcF91cGdyYWRlX2luZm9fdCB1cGdyYWRlaW5mbzsKKworICBkaXNwX2hpbnRfaW5mb190d28ocG9zLCAi1f3U2sn9vLYuLiIsIs7wts+15yEhIiwwKTsKKyAgTUVNQ0xFQVIoJnVwZ3JhZGVpbmZvLHNpemVvZiB1cGdyYWRlaW5mbyk7CisgIHJldCA9IGdldF9maWxlX2luZm8ocG9zLCAmdXBncmFkZWluZm8pOworICBpZihyZXQpCisgIHsKKyAgICByZXR1cm47CisgIH0KKyAgcmV0ID0gZG93bmxvYWRfZmlsZShwb3MpOworICBpZihyZXQpCisgIHsKKyAgICByZXR1cm47CisgIH0KKyAgY2hlY2tfZmlsZV9hbmRfdXBncmFkZShwb3MsICZ1cGdyYWRlaW5mbyk7Cit9CisKZGlmZiAtLWdpdCBhL3N1cHdpc2RvbS9zcF91cGdyYWRlLmggYi9zdXB3aXNkb20vc3BfdXBncmFkZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjZDgxNjAKLS0tIC9kZXYvbnVsbAorKysgYi9zdXB3aXNkb20vc3BfdXBncmFkZS5oCkBAIC0wLDAgKzEsMTQgQEAKKyNpZm5kZWYgX1NQX1VQR1JBREVfSF8KKyNkZWZpbmUgX1NQX1VQR1JBREVfSF8KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCit2b2lkIHNwX21hbnVhbF91cGdyYWRlKHNwX3Bvc190KiBwb3MpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYKZGlmZiAtLWdpdCBhL3N1cHdpc2RvbS9zcF91dGlsLmMgYi9zdXB3aXNkb20vc3BfdXRpbC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmNzBiMTMKLS0tIC9kZXYvbnVsbAorKysgYi9zdXB3aXNkb20vc3BfdXRpbC5jCkBAIC0wLDAgKzEsNTMwIEBACisjaW5jbHVkZSAiLi4vc3lzX2h3L2tleXBhZC5oIgorI2luY2x1ZGUgIi4uL3N5c19ody9kcnZfYWRjLmgiCisjaW5jbHVkZSAic3BfZGlzcGxheS5oIgorCisjaW5jbHVkZSAic3BfdXRpbC5oIgorCit1aW50MTYgY3JjX3RhYmxlW10gPQoreworICAweDAwMDAsIDB4MTAyMSwgMHgyMDQyLCAweDMwNjMsIDB4NDA4NCwgMHg1MEE1LCAweDYwQzYsIDB4NzBFNywKKyAgMHg4MTA4LCAweDkxMjksIDB4QTE0QSwgMHhCMTZCLCAweEMxOEMsIDB4RDFBRCwgMHhFMUNFLCAweEYxRUYsCisgIDB4MTIzMSwgMHgwMjEwLCAweDMyNzMsIDB4MjI1MiwgMHg1MkI1LCAweDQyOTQsIDB4NzJGNywgMHg2MkQ2LAorICAweDkzMzksIDB4ODMxOCwgMHhCMzdCLCAweEEzNUEsIDB4RDNCRCwgMHhDMzlDLCAweEYzRkYsIDB4RTNERSwKKyAgMHgyNDYyLCAweDM0NDMsIDB4MDQyMCwgMHgxNDAxLCAweDY0RTYsIDB4NzRDNywgMHg0NEE0LCAweDU0ODUsCisgIDB4QTU2QSwgMHhCNTRCLCAweDg1MjgsIDB4OTUwOSwgMHhFNUVFLCAweEY1Q0YsIDB4QzVBQywgMHhENThELAorICAweDM2NTMsIDB4MjY3MiwgMHgxNjExLCAweDA2MzAsIDB4NzZENywgMHg2NkY2LCAweDU2OTUsIDB4NDZCNCwKKyAgMHhCNzVCLCAweEE3N0EsIDB4OTcxOSwgMHg4NzM4LCAweEY3REYsIDB4RTdGRSwgMHhENzlELCAweEM3QkMsCisgIDB4NDhDNCwgMHg1OEU1LCAweDY4ODYsIDB4NzhBNywgMHgwODQwLCAweDE4NjEsIDB4MjgwMiwgMHgzODIzLAorICAweEM5Q0MsIDB4RDlFRCwgMHhFOThFLCAweEY5QUYsIDB4ODk0OCwgMHg5OTY5LCAweEE5MEEsIDB4QjkyQiwKKyAgMHg1QUY1LCAweDRBRDQsIDB4N0FCNywgMHg2QTk2LCAweDFBNzEsIDB4MEE1MCwgMHgzQTMzLCAweDJBMTIsCisgIDB4REJGRCwgMHhDQkRDLCAweEZCQkYsIDB4RUI5RSwgMHg5Qjc5LCAweDhCNTgsIDB4QkIzQiwgMHhBQjFBLAorICAweDZDQTYsIDB4N0M4NywgMHg0Q0U0LCAweDVDQzUsIDB4MkMyMiwgMHgzQzAzLCAweDBDNjAsIDB4MUM0MSwKKyAgMHhFREFFLCAweEZEOEYsIDB4Q0RFQywgMHhERENELCAweEFEMkEsIDB4QkQwQiwgMHg4RDY4LCAweDlENDksCisgIDB4N0U5NywgMHg2RUI2LCAweDVFRDUsIDB4NEVGNCwgMHgzRTEzLCAweDJFMzIsIDB4MUU1MSwgMHgwRTcwLAorICAweEZGOUYsIDB4RUZCRSwgMHhERkRELCAweENGRkMsIDB4QkYxQiwgMHhBRjNBLCAweDlGNTksIDB4OEY3OCwKKyAgMHg5MTg4LCAweDgxQTksIDB4QjFDQSwgMHhBMUVCLCAweEQxMEMsIDB4QzEyRCwgMHhGMTRFLCAweEUxNkYsCisgIDB4MTA4MCwgMHgwMEExLCAweDMwQzIsIDB4MjBFMywgMHg1MDA0LCAweDQwMjUsIDB4NzA0NiwgMHg2MDY3LAorICAweDgzQjksIDB4OTM5OCwgMHhBM0ZCLCAweEIzREEsIDB4QzMzRCwgMHhEMzFDLCAweEUzN0YsIDB4RjM1RSwKKyAgMHgwMkIxLCAweDEyOTAsIDB4MjJGMywgMHgzMkQyLCAweDQyMzUsIDB4NTIxNCwgMHg2Mjc3LCAweDcyNTYsCisgIDB4QjVFQSwgMHhBNUNCLCAweDk1QTgsIDB4ODU4OSwgMHhGNTZFLCAweEU1NEYsIDB4RDUyQywgMHhDNTBELAorICAweDM0RTIsIDB4MjRDMywgMHgxNEEwLCAweDA0ODEsIDB4NzQ2NiwgMHg2NDQ3LCAweDU0MjQsIDB4NDQwNSwKKyAgMHhBN0RCLCAweEI3RkEsIDB4ODc5OSwgMHg5N0I4LCAweEU3NUYsIDB4Rjc3RSwgMHhDNzFELCAweEQ3M0MsCisgIDB4MjZEMywgMHgzNkYyLCAweDA2OTEsIDB4MTZCMCwgMHg2NjU3LCAweDc2NzYsIDB4NDYxNSwgMHg1NjM0LAorICAweEQ5NEMsIDB4Qzk2RCwgMHhGOTBFLCAweEU5MkYsIDB4OTlDOCwgMHg4OUU5LCAweEI5OEEsIDB4QTlBQiwKKyAgMHg1ODQ0LCAweDQ4NjUsIDB4NzgwNiwgMHg2ODI3LCAweDE4QzAsIDB4MDhFMSwgMHgzODgyLCAweDI4QTMsCisgIDB4Q0I3RCwgMHhEQjVDLCAweEVCM0YsIDB4RkIxRSwgMHg4QkY5LCAweDlCRDgsIDB4QUJCQiwgMHhCQjlBLAorICAweDRBNzUsIDB4NUE1NCwgMHg2QTM3LCAweDdBMTYsIDB4MEFGMSwgMHgxQUQwLCAweDJBQjMsIDB4M0E5MiwKKyAgMHhGRDJFLCAweEVEMEYsIDB4REQ2QywgMHhDRDRELCAweEJEQUEsIDB4QUQ4QiwgMHg5REU4LCAweDhEQzksCisgIDB4N0MyNiwgMHg2QzA3LCAweDVDNjQsIDB4NEM0NSwgMHgzQ0EyLCAweDJDODMsIDB4MUNFMCwgMHgwQ0MxLAorICAweEVGMUYsIDB4RkYzRSwgMHhDRjVELCAweERGN0MsIDB4QUY5QiwgMHhCRkJBLCAweDhGRDksIDB4OUZGOCwKKyAgMHg2RTE3LCAweDdFMzYsIDB4NEU1NSwgMHg1RTc0LCAweDJFOTMsIDB4M0VCMiwgMHgwRUQxLCAweDFFRjAKK307CisKK3ZvaWQgc3BfcHJvdG9jb2xfY3JjKGNvbnN0IHVpbnQ4KiBidWYsIHVpbnQxNiBsZW4sIHVpbnQ4IGNyY1syXSkKK3sKKyAgLy91aW50MTYJYWNjbnVtID0gMHhjNzhjOworICB1aW50OCB0ZW1wX2NyY1syXTsKKyAgdGVtcF9jcmNbMF0gPSAweGM3OworICB0ZW1wX2NyY1sxXSA9IDB4OGM7CisgIHNwX3Byb3RvY29sX2NyY19pbml0KGJ1ZixsZW4sdGVtcF9jcmMsY3JjKTsKK30KKwordm9pZCBzcF9wcm90b2NvbF9jcmNfaW5pdChjb25zdCB1aW50OCogYnVmLCB1aW50MTYgbGVuLHVpbnQ4IGluaXRbMl0sIHVpbnQ4IGNyY1syXSkKK3sKKyAgdWludDE2IGFjY251bSA9ICh1aW50MTYpaW5pdFswXTw8OCB8KHVpbnQxNilpbml0WzFdOworICB1aW50MTYgaTsKKyAgZm9yKGkgPSAwOyBpIDwgbGVuOyArK2kpCisgIHsKKyAgICBhY2NudW0gPSAoYWNjbnVtIDw8IDgpIF4gY3JjX3RhYmxlWygoYWNjbnVtID4+IDgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXiBidWZbaV0pICYgMHhGRl07CisgIH0KKyAgY3JjWzBdID0gKHVpbnQ4KSgoYWNjbnVtID4+IDgpICYgMHhGRik7CisgIGNyY1sxXSA9ICh1aW50OCkoYWNjbnVtICYgMHhGRik7Cit9CisKK3ZvaWQgc3Bfa2V5X2NhbGlicmF0ZSh2b2lkKQoreworICBjYWxpYnJhdGVfa2V5KDApOworfQorCit1aW50OCBzcF9rZXlfaW5pdCh2b2lkKQoreworICBhZGNfaW5pdCgpOworICByZXR1cm4ga2V5cGFkX2luaXQoKTsKK30KK3VpbnQ4IHNwX2dldF9rZXkodm9pZCkKK3sKKyAgdWludDgga2V5ID0ga2V5cGFkX2dldF9rZXkoKTsKKyAgc3dpdGNoKGtleSkKKyAgeworICBjYXNlIEtFWV9OT05FOgorICAgIHJldHVybiBTUF9LRVlfTk9ORTsKKyAgY2FzZSBLRVlfRElHMDoKKyAgICByZXR1cm4gU1BfS0VZXzA7CisgIGNhc2UgS0VZX0RJRzE6CisgICAgcmV0dXJuIFNQX0tFWV8xOworICBjYXNlIEtFWV9ESUcyOgorICAgIHJldHVybiBTUF9LRVlfMjsKKyAgY2FzZSBLRVlfRElHMzoKKyAgICByZXR1cm4gU1BfS0VZXzM7CisgIGNhc2UgS0VZX0RJRzQ6CisgICAgcmV0dXJuIFNQX0tFWV80OworICBjYXNlIEtFWV9ESUc1OgorICAgIHJldHVybiBTUF9LRVlfNTsKKyAgY2FzZSBLRVlfRElHNjoKKyAgICByZXR1cm4gU1BfS0VZXzY7CisgIGNhc2UgS0VZX0RJRzc6CisgICAgcmV0dXJuIFNQX0tFWV83OworICBjYXNlIEtFWV9ESUc4OgorICAgIHJldHVybiBTUF9LRVlfODsKKyAgY2FzZSBLRVlfRElHOToKKyAgICByZXR1cm4gU1BfS0VZXzk7CisgIGNhc2UgS0VZX0VOVEVSOgorICAgIHJldHVybiBTUF9LRVlfRU5URVI7CisgIGNhc2UgS0VZX0NBTkNFTDoKKyAgICByZXR1cm4gU1BfS0VZX0NMRUFSOworICBkZWZhdWx0OgorICAgIHJldHVybiBTUF9LRVlfTk9ORTsKKyAgfQorfQordm9pZCBzcF9yZXNldCh2b2lkKQoreworICB3aGlsZSgxKTsKK30KK3ZvaWQgc3BfYmNkX3RvX3N0cihjb25zdCB1aW50OCogYmNkLCB1aW50OCBiY2RfbGVuLCBjaGFyKiBzdHIpCit7CisgIHVpbnQ4IGk7CisgIHVpbnQxNiBqOworICBmb3IoaSA9IDA7IGkgPCBiY2RfbGVuOyArK2kpCisgIHsKKyAgICBqID0gaSA8PCAxOworICAgIHN0cltqXSA9ICgoYmNkW2ldID4+IDQpICYgMHgwRikgKyAweDMwOworICAgIHN0cltqICsgMV0gPSAoYmNkW2ldICYgMHgwRikgKyAweDMwOworICB9CisgIHN0cltpIDw8IDFdID0gMDsKK30KK3ZvaWQgc3Bfc3RyX3RvX2JjZChjb25zdCBjaGFyKiBzdHIsIHVpbnQ4IHN0cl9sZW4sIHVpbnQ4KiBiY2QpCit7CisgIHVpbnQ4IGksajsKKyAgZm9yKGkgPSAwOyBpIDwgc3RyX2xlbjsgaSArPSAyKQorICB7CisgICAgaiA9IGkvMjsKKyAgICBiY2Rbal0gPSAoKChzdHJbaV0tMHgzMCkgJiAweDBGKSA8PDQpIHwgKChzdHJbaSsxXS0weDMwKSAmIDB4MEYpOworICB9Cit9CitzdGF0aWMgdWludDggY2hhclRvaGV4KGNoYXIgY2gpCit7CisgIGlmKGNoID49ICcwJyAmJiBjaCA8PSAnOScpCisgIHsKKyAgICByZXR1cm4gKGNoIC0nMCcpOworICB9CisgIGlmKGNoID49ICdhJyAmJiBjaCA8PSAnZicpCisgIHsKKyAgICByZXR1cm4gKGNoIC0nYScgKzEwKTsKKyAgfQorICBpZihjaCA+PSAnQScgJiYgY2ggPD0gJ0YnKQorICB7CisgICAgcmV0dXJuIChjaCAtJ0EnICsxMCk7CisgIH0KKyAgcmV0dXJuIDA7Cit9Cit2b2lkIHNwX3N0cl90b19oZXgoY29uc3QgY2hhciogc3RyLGNvbnN0IHVpbnQxNiBsZW4sdWludDgqIGhleCkKK3sKKyAgdWludDggdCx0ZW1wOworICB1aW50MTYgaTsKKyAgZm9yKGkgPSAwOyBpIDwgbGVuOyBpICs9IDIpCisgIHsKKyAgICB0ZW1wID0gY2hhclRvaGV4KHN0cltpXSk7CisgICAgdCA9IHRlbXAgPDwgNDsKKyAgICB0ZW1wID0gY2hhclRvaGV4KHN0cltpKzFdKTsKKyAgICB0ICs9IHRlbXA7CisgICAgaGV4W2kvMl0gPSB0OworICB9Cit9CisKK3N0YXRpYyBjaGFyIGhleFRvQ2hhclRhYmxlW109IHsiMDEyMzQ1Njc4OUFCQ0RFRiJ9Owordm9pZCBzcF9oZXhfdG9fc3RyKGNvbnN0IHVpbnQ4KiBoZXgsY29uc3QgdWludDggbGVuLGNoYXIqIHN0cikKK3sKKyAgdWludDggaSxqOworICBmb3IoaSA9IDA7IGkgPCBsZW47IGkrKykKKyAgeworICAgIGogPSBpIDw8IDE7CisgICAgc3RyW2pdID0gaGV4VG9DaGFyVGFibGVbKGhleFtpXSA+PiA0KSAmMHgwRl07CisgICAgc3RyW2ogKzFdID0gaGV4VG9DaGFyVGFibGVbaGV4W2ldICYweDBGXTsKKyAgfQorICBzdHJbaSA8PCAxXSA9IDA7Cit9CisKK3ZvaWQgc3BfZ2V0X2JjZHRpbWUodWludDggY3RpbWVbNl0pCit7CisgIF9TeXN0ZW1UaW1lIHRpbWU7CisgIG1lbXNldCgmdGltZSwwLHNpemVvZiB0aW1lKTsKKyAgcnRjX2dldF90aW1lKCZ0aW1lKTsgLy9iY2QKKyAgY3RpbWVbMF0gPSB0aW1lLnllYXI7CisgIGN0aW1lWzFdID0gdGltZS5tb250aDsKKyAgY3RpbWVbMl0gPSB0aW1lLmRheTsKKyAgY3RpbWVbM10gPSB0aW1lLmhvdXI7CisgIGN0aW1lWzRdID0gdGltZS5taW51dGU7CisgIGN0aW1lWzVdID0gdGltZS5zZWNvbmQ7Cit9Cit2b2lkIHNwX3NldF9iY2R0aW1lKHVpbnQ4IGN0aW1lWzZdKQoreworICBfU3lzdGVtVGltZSB0aW1lOworICBtZW1zZXQoJnRpbWUsMCxzaXplb2YgdGltZSk7CisgIHRpbWUueWVhciA9IGN0aW1lWzBdOworICB0aW1lLm1vbnRoID0gY3RpbWVbMV07CisgIHRpbWUuZGF5ID0gY3RpbWVbMl07CisgIHRpbWUuaG91ciA9IGN0aW1lWzNdOworICB0aW1lLm1pbnV0ZSA9IGN0aW1lWzRdOworICB0aW1lLnNlY29uZCA9IGN0aW1lWzVdOworCisgIHJ0Y19zZXRfdGltZSgmdGltZSk7Cit9Cit1aW50OCBzcF9jaGVja190aW1lX3ZhbGlkKHVpbnQ4IGN0aW1lWzZdKQoreworICBpZihCQ0QyRGVjKGN0aW1lWzBdKSA8IDE4KQorICAgIHJldHVybiAxOworICBpZihCQ0QyRGVjKGN0aW1lWzFdKSA+IDEyKQorICAgIHJldHVybiAxOworICBpZihCQ0QyRGVjKGN0aW1lWzJdKSA+IDMxKQorICAgIHJldHVybiAxOworICBpZihCQ0QyRGVjKGN0aW1lWzNdKSA+IDIzKQorICAgIHJldHVybiAxOworICBpZihCQ0QyRGVjKGN0aW1lWzRdKSA+IDU5KQorICAgIHJldHVybiAxOworICBpZihCQ0QyRGVjKGN0aW1lWzVdKSA+IDU5KQorICAgIHJldHVybiAxOworCisgIHJldHVybiAwOworfQordWludDggc3BfY3JjX3N1bSh1aW50OCBidWZbXSx1aW50OCBsZW4pCit7CisgIHVpbnQ4IGk7CisgIHVpbnQ4IHN1bSA9IDA7CisgIC8vvMbL49Cj0em6zQorICBmb3IoaSA9IDA7IGkgPCBsZW47IGkrKykKKyAgeworICAgIHN1bSA9IHN1bSArIGJ1ZltpXTsKKyAgfQorICByZXR1cm4gc3VtOworfQorCitpbnQ4IGlzRkYodWludDggYnVmW10sdWludDE2IGxlbikKK3sKKyAgdWludDE2IGk7CisgIGZvcihpID0gMDsgaSA8IGxlbjsgaSsrKQorICB7CisgICAgaWYoMHhGRiAhPSBidWZbaV0pCisgICAgeworICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgfQorICByZXR1cm4gMDsKK30KKworLy9tcwordWludDMyIHNwX2dldF90aWNrZXIodm9pZCkKK3sKKyAgcmV0dXJuIHRpbWVyX2dldF90aWNrZXIoKTsKK30KKwordm9pZCBEZWxheV9tcyh1aW50MzIgbXMpCit7CisgIHVpbnQzMiB0ID0gc3BfZ2V0X3RpY2tlcigpOworICB3aGlsZShzcF9nZXRfdGlja2VyKCkgLSB0IDwgbXMpOworfQordm9pZCBzcF92YWx2ZV9vbih2b2lkKQoreworICB2YWx2ZV9zdGFfc2V0KHZhbHZlX3N0YXRlX29uKTsKKyAgdmFsdmVfY3RybCgpOworfQordm9pZCBzcF92YWx2ZV9vZmYodm9pZCkKK3sKKyAgdmFsdmVfc3RhX3NldCh2YWx2ZV9zdGF0ZV9vZmYpOworICB2YWx2ZV9jdHJsKCk7Cit9Cit1aW50OCBzcF92YWx2ZV9zdGF0ZSh2b2lkKQoreworICByZXR1cm4gdmFsdmVfc3RhX2dldCgpOworfQorCitpbnQxNiBnZXRfMmJ5dGVfaW50KHVpbnQ4IHZhbHVlX3N0clsyXSkKK3sKKyAgaW50MzIgciA9IDAsIHQgPSAwOworICB0ID0gdmFsdWVfc3RyWzBdOworICByID0gdCA8PCA4OworICByIHw9IHZhbHVlX3N0clsxXTsKKyAgcmV0dXJuIChpbnQxNilyOworfQoraW50MzIgZ2V0XzNieXRlX2ludCh1aW50OCB2YWx1ZV9zdHJbM10pCit7CisgIGludDMyIHIgPSAwLCB0ID0gMDsKKyAgdCA9IHZhbHVlX3N0clswXTsKKyAgciA9IHQgPDwgMTY7CisgIHQgPSB2YWx1ZV9zdHJbMV07CisgIHIgfD0gdCA8PCA4OworICByIHw9IHZhbHVlX3N0clsyXTsKKyAgcmV0dXJuIHI7Cit9CitpbnQzMiBnZXRfNGJ5dGVfaW50KHVpbnQ4IHZhbHVlX3N0cls0XSkKK3sKKyAgaW50MzIgciA9IDAsIHQgPSAwOworICB0ID0gdmFsdWVfc3RyWzBdOworICByID0gdCA8PCAyNDsKKyAgdCA9IHZhbHVlX3N0clsxXTsKKyAgciB8PSB0IDw8IDE2OworICB0ID0gdmFsdWVfc3RyWzJdOworICByIHw9IHQgPDwgODsKKyAgciB8PSB2YWx1ZV9zdHJbM107CisgIHJldHVybiByOworfQordm9pZCBzZXRfMmJ5dGVfaW50KHVpbnQ4IHZhbHVlX3N0clsyXSwgaW50IG51bSkKK3sKKyAgdmFsdWVfc3RyWzBdID0gKG51bSA+PiA4KSAmIDB4RkY7CisgIHZhbHVlX3N0clsxXSA9IG51bSAmIDB4RkY7Cit9Cit2b2lkIHNldF8zYnl0ZV9pbnQodWludDggdmFsdWVfc3RyWzNdLCBpbnQgbnVtKQoreworICB2YWx1ZV9zdHJbMF0gPSAobnVtID4+IDE2KSAmIDB4RkY7CisgIHZhbHVlX3N0clsxXSA9IChudW0gPj4gOCkgJiAweEZGOworICB2YWx1ZV9zdHJbMl0gPSBudW0gJiAweEZGOworfQordm9pZCBzZXRfNGJ5dGVfaW50KHVpbnQ4IHZhbHVlX3N0cls0XSwgaW50IG51bSkKK3sKKyAgdmFsdWVfc3RyWzBdID0gKG51bSA+PiAyNCkgJiAweEZGOworICB2YWx1ZV9zdHJbMV0gPSAobnVtID4+IDE2KSAmIDB4RkY7CisgIHZhbHVlX3N0clsyXSA9IChudW0gPj4gOCkgJiAweEZGOworICB2YWx1ZV9zdHJbM10gPSBudW0gJiAweEZGOworfQorCisvL7vxtcO1pdfWvdrW0MSz0rvOu7XE1rUKK2ludDMyIEdldDFCaXQodWludDggYnVmLCBpbnQgbikKK3sKKyAgcmV0dXJuIChidWYgPj4gbikgJiAweDAxOworfQorCitpbnQxNiBnZXRfMmJ5dGVfaW50X2xlKHVpbnQ4IHZhbHVlX3N0clsyXSkKK3sKKyAgaW50MzIgciA9IDAsIHQgPSAwOworICB0ID0gdmFsdWVfc3RyWzFdOworICByID0gdCA8PCA4OworICByIHw9IHZhbHVlX3N0clswXTsKKyAgcmV0dXJuIChpbnQxNilyOworfQorLy/QodfWvdrQ8goraW50MzIgZ2V0XzNieXRlX2ludF9sZSh1aW50OCB2YWx1ZV9zdHJbM10pCit7CisgIGludDMyIHIgPSAwLCB0ID0gMDsKKyAgdCA9IHZhbHVlX3N0clsyXTsKKyAgciA9IHQgPDwgMTY7CisgIHQgPSB2YWx1ZV9zdHJbMV07CisgIHIgfD0gdCA8PCA4OworICByIHw9IHZhbHVlX3N0clswXTsKKyAgcmV0dXJuIHI7Cit9CisvL9Ch19a92tDyCitpbnQzMiBnZXRfNGJ5dGVfaW50X2xlKHVpbnQ4IHZhbHVlX3N0cls0XSkKK3sKKyAgaW50MzIgciA9IDAsIHQgPSAwOworICB0ID0gdmFsdWVfc3RyWzNdOworICByID0gdCA8PCAyNDsKKyAgdCA9IHZhbHVlX3N0clsyXTsKKyAgciB8PSB0IDw8IDE2OworICB0ID0gdmFsdWVfc3RyWzFdOworICByIHw9IHQgPDwgODsKKyAgciB8PSB2YWx1ZV9zdHJbMF07CisgIHJldHVybiByOworfQorCit2b2lkIHNldF8yYnl0ZV9pbnRfbGUodWludDggdmFsdWVfc3RyWzJdLCBpbnQgbnVtKQoreworICB2YWx1ZV9zdHJbMV0gPSAobnVtID4+IDgpICYgMHhGRjsKKyAgdmFsdWVfc3RyWzBdID0gbnVtICYgMHhGRjsKK30KKwordm9pZCBzZXRfM2J5dGVfaW50X2xlKHVpbnQ4IHZhbHVlX3N0clszXSwgaW50IG51bSkKK3sKKyAgdmFsdWVfc3RyWzJdID0gKG51bSA+PiAxNikgJiAweEZGOworICB2YWx1ZV9zdHJbMV0gPSAobnVtID4+IDgpICYgMHhGRjsKKyAgdmFsdWVfc3RyWzBdID0gbnVtICYgMHhGRjsKK30KKworLyq8xsvjtNNiY2Qgc3RhcnR0aW1lILW9z9bU2rXEw+vK/SovCit1aW50MzIgZGlmZl90aW1lKHVpbnQ4IHN0YXJ0dGltZVs2XSkKK3sKKyAgdWludDggY3RpbWVbNl07CisgIHVpbnQzMiBzdGFydF9zZWNvbmQ7CisgIHVpbnQzMiBlbmRfc2Vjb25kOworCisgIHNwX2dldF9iY2R0aW1lKGN0aW1lKTsKKyAgc3RhcnRfc2Vjb25kID0gZm9ybWF0X3RpbWVfY292ZXJ0X3NlY3Moc3RhcnR0aW1lKTsKKyAgZW5kX3NlY29uZCA9IGZvcm1hdF90aW1lX2NvdmVydF9zZWNzKGN0aW1lKTsKKyAgaWYoZW5kX3NlY29uZCA8IHN0YXJ0X3NlY29uZCkKKyAgeworICAgIHJldHVybiAwOworICB9CisgIHJldHVybiAoZW5kX3NlY29uZCAtIHN0YXJ0X3NlY29uZCk7Cit9CisKK3ZvaWQgbXljcHkodm9pZCogZGVzdCwgY29uc3Qgdm9pZCogc3JjLCB1aW50MzIgbGVuKQoreworICBjaGFyKiB0bXBfZGVzdCA9IChjaGFyKilkZXN0OworICBjaGFyKiB0bXBfc3JjID0gKGNoYXIqKXNyYzsKKyAgd2hpbGUobGVuLS0pCisgIHsKKyAgICAqdG1wX2Rlc3QgPSAqdG1wX3NyYysrOworICAgIHRtcF9kZXN0Kys7CisgIH0KK30KKwordm9pZCBzcF9iY2QyYXNjKGNvbnN0IHVpbnQ4IGJjZGJ1ZltdLCB1aW50OCBiY2RsZW4sIHVpbnQ4KiBhc2NzdHIpCit7CisgIHVpbnQ4IGk7CisgIHVpbnQ4IGxjaCwgaGNoOworICBmb3IoaSA9IDA7IGkgPCBiY2RsZW47IGkrKykKKyAgeworICAgIGhjaCA9IChiY2RidWZbaV0gJiAweDBGKTsKKyAgICBsY2ggPSAoYmNkYnVmW2ldICYgMHhGMCk7CisgICAgbGNoID0gbGNoID4+IDQ7CisgICAgYXNjc3RyWzIgKiBpXSA9IGxjaCArICcwJzsKKyAgICBhc2NzdHJbMiAqIGkgKyAxXSA9IGhjaCArICcwJzsKKyAgfQorICBhc2NzdHJbMippXSA9IDA7Cit9CitpbnQzMiBzcF9hdG9pKGNvbnN0IGNoYXIqIHNyYykKK3sKKyAgaW50IGkgPSAwOworICB3aGlsZSgqc3JjICE9IDApCisgIHsKKyAgICBpID0gaSAqIDEwICsgKnNyYyAtICcwJzsKKyAgICBzcmMrKzsKKyAgfQorICByZXR1cm4gaTsKK30KKy8qKgorKioyMDAwLjAuMDowLjAuMMqxvOTOqrv5yv0KKyoqLworc3RhdGljIGludCBNSU5VVEVfU0VDUyA9IDYwOworc3RhdGljIGludCBIT1VSX1NFQ1MgPSAzNjAwOworc3RhdGljIGludCBEQVlfU0VDUyA9IDI0KjM2MDA7CitzdGF0aWMgaW50IFlFQVJfU0VDUyA9IDM2NSoyNCozNjAwOworc3RhdGljIGludCBGT1VSWUVBUl9TRUNTID0gKDM2NSozKzM2NikqMjQqMzYwMDsKK3N0YXRpYyBpbnQgbm9yTW90aFtdID0gezAsMzEsIDI4LCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMxLCAzMCwgMzEsIDMwLCAzMX07CitzdGF0aWMgaW50IGxlYXBNb3RoW10gPSB7MCwzMSwgMjksIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzEsIDMwLCAzMSwgMzAsIDMxfTsKKy8qdGltZTogc3RyaW5nKHl5eXlNTWRkSEhtbXNzKSB0byBpbnQgKi8KK2ludCBmb3JtYXRfdGltZV9jb3ZlcnRfc2Vjcyh1aW50OCBjdGltZVs2XSkKK3sKKyAgaW50IHNlY3M7CisgIGludCBpOworICBpbnQgcmVtYWluOworICBpbnQgeWVhciA9IEJDRDJEZWMoY3RpbWVbMF0pOworICBpbnQgbW9udGggPSBCQ0QyRGVjKGN0aW1lWzFdKTsKKyAgaW50IGRheSA9IEJDRDJEZWMoY3RpbWVbMl0pOworICBpbnQgaG91ciA9IEJDRDJEZWMoY3RpbWVbM10pOworICBpbnQgbWludXRlID0gQkNEMkRlYyhjdGltZVs0XSk7CisgIGludCBzZWNvbmQgPSBCQ0QyRGVjKGN0aW1lWzVdKTsKKworICBzZWNzID0geWVhci80ICpGT1VSWUVBUl9TRUNTOworICByZW1haW4gPSB5ZWFyJTQ7CisgIHNlY3MgKz0gcmVtYWluKllFQVJfU0VDUzsKKworICBpZihyZW1haW4gPT0gMCkKKyAgeworICAgIGZvcihpID0gMDsgaSA8IG1vbnRoOyArK2kpCisgICAgeworICAgICAgc2VjcyArPSBsZWFwTW90aFtpXSAqREFZX1NFQ1M7CisgICAgfQorICB9CisgIGVsc2UKKyAgeworICAgIGZvcihpID0gMDsgaSA8IG1vbnRoOyArK2kpCisgICAgeworICAgICAgc2VjcyArPSBub3JNb3RoW2ldICpEQVlfU0VDUzsKKyAgICB9CisgIH0KKyAgc2VjcyArPSBkYXkqREFZX1NFQ1M7CisgIHNlY3MgKz0gaG91ciAqSE9VUl9TRUNTOworICBzZWNzICs9IG1pbnV0ZSpNSU5VVEVfU0VDUzsKKyAgc2VjcyArPSBzZWNvbmQ7CisgIHJldHVybiBzZWNzOworfQorCit1aW50OCBzcF9jaGVja19wYXNzd2Qoc3BfcG9zX3QqIHBvcyxjb25zdCBjaGFyKiBoaW50LHVpbnQ4IHBhc3N3ZFs2XSkKK3sKKyAgdWludDggdGVtcFs2XTsKKyAgdWludDggb2Zmc2V0ID0gMDsKKyAgdWludDgga2NvZGU7CisgIHVpbnQzMiB0aWNrZXIgPSBzcF9nZXRfdGlja2VyKCk7CisKKyAgc2hvd19tYW5hZ2VfcGFzc3dkKHBvcyxoaW50LHRlbXAsb2Zmc2V0KTsKKyAgd2hpbGUoc3BfZ2V0X3RpY2tlcigpIC10aWNrZXIgPCBERUxBWV9USU1FNjBzKQorICB7CisgICAgc3BfZmVlZF9kb2coKTsKKyAgICBrY29kZSA9IHNwX2dldF9rZXkoKTsKKyAgICBpZihrY29kZSAhPSBTUF9LRVlfTk9ORSkKKyAgICB7CisgICAgICBzd2l0Y2goa2NvZGUpCisgICAgICB7CisgICAgICBjYXNlIFNQX0tFWV8wOgorICAgICAgY2FzZSBTUF9LRVlfMToKKyAgICAgIGNhc2UgU1BfS0VZXzI6CisgICAgICBjYXNlIFNQX0tFWV8zOgorICAgICAgY2FzZSBTUF9LRVlfNDoKKyAgICAgIGNhc2UgU1BfS0VZXzU6CisgICAgICBjYXNlIFNQX0tFWV82OgorICAgICAgY2FzZSBTUF9LRVlfNzoKKyAgICAgIGNhc2UgU1BfS0VZXzg6CisgICAgICBjYXNlIFNQX0tFWV85OgorICAgICAgICBpZihvZmZzZXQgPCA2KQorICAgICAgICB7CisgICAgICAgICAgdGVtcFtvZmZzZXQrK10gPSAodWludDgpKGtjb2RlLVNQX0tFWV8wKTsKKyAgICAgICAgICBzaG93X21hbmFnZV9wYXNzd2QocG9zLGhpbnQsdGVtcCxvZmZzZXQpOworICAgICAgICB9CisgICAgICAgIGlmKG9mZnNldCA+PSA2KQorICAgICAgICB7CisgICAgICAgICAgaWYoMCA9PSBNRU1DTVAodGVtcCxwYXNzd2QsNikpCisgICAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UKKyAgICAgICAgICB7CisgICAgICAgICAgICBkaXNwX2hpbnRfaW5mb190d28ocG9zLGhpbnQsIsPcwuu07c7zIixERUxBWV9USU1FMnMpOworICAgICAgICAgICAgTUVNQ0xFQVIodGVtcCwgc2l6ZW9mIHRlbXApOworICAgICAgICAgICAgb2Zmc2V0ID0gMDsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIFNQX0tFWV9DTEVBUjoKKyAgICAgICAgaWYob2Zmc2V0ID09IDApCisgICAgICAgIHsKKyAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgICAgICAtLW9mZnNldDsKKyAgICAgICAgdGVtcFtvZmZzZXRdID0gMDsKKyAgICAgICAgc2hvd19tYW5hZ2VfcGFzc3dkKHBvcyxoaW50LHRlbXAsb2Zmc2V0KTsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgfQorICB9CisgIHJldHVybiAxOworfQpkaWZmIC0tZ2l0IGEvc3Vwd2lzZG9tL3NwX3V0aWwuaCBiL3N1cHdpc2RvbS9zcF91dGlsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDU0YjkyOQotLS0gL2Rldi9udWxsCisrKyBiL3N1cHdpc2RvbS9zcF91dGlsLmgKQEAgLTAsMCArMSw3MCBAQAorI2lmbmRlZiBfU1BfVVRJTF9IXworI2RlZmluZSBfU1BfVVRJTF9IXworCisjaW5jbHVkZSAic3RyaW5nLmgiCisjaW5jbHVkZSAic3RkbGliLmgiCisjaW5jbHVkZSAic3RkaW8uaCIKKyNpbmNsdWRlICJzcF9jb25maWcuaCIKKworI2RlZmluZSBERUxBWV9USU1FMTAwbXMgMTAwCisjZGVmaW5lIERFTEFZX1RJTUUyMDBtcyAyMDAKKyNkZWZpbmUgREVMQVlfVElNRTFzIDEwMDAKKyNkZWZpbmUgREVMQVlfVElNRTJzIDIwMDAKKyNkZWZpbmUgREVMQVlfVElNRTNzIDMwMDAKKyNkZWZpbmUgREVMQVlfVElNRTE1cyAxNTAwMAorI2RlZmluZSBERUxBWV9USU1FNjBzIDYwMDAwCisjZGVmaW5lIENPTU1fV0FJVF9USU1FIDUwMDAKKworI2RlZmluZSBTVFJfQ09QWV9OKHgseSx6KSBkb3tzbnByaW50Zih4LHorMSwiJXMiLHkpO313aGlsZSgwKTsKKyNkZWZpbmUgTUVNQ0xFQVIoeCx6KSBtZW1zZXQoeCwwLHopCisjZGVmaW5lIE1FTUNNUCh4LHkseikgbWVtY21wKHgseSx6KQorI2RlZmluZSBNRU1DUFkoeCx5LHopIG1lbWNweSh4LHkseikKKyNkZWZpbmUgSVNfS0VZKGV4cGVjdCx2YWwpIChzdHJuY21wKGV4cGVjdCx2YWwsc3RybGVuKGV4cGVjdCkpID09IDApCisKKyNkZWZpbmUgRGVjMkJDRCh4KSAoKCh4KSAvIDEwKSAqIDE2ICsgKHgpICUgMTApCisjZGVmaW5lIEJDRDJEZWMoeCkgKCgoeCkgLyAxNikgKiAxMCArICh4KSAlIDE2KQorCit2b2lkIHNwX2dldF9iY2R0aW1lKHVpbnQ4IGN0aW1lWzZdKTsKK3ZvaWQgc3Bfc2V0X2JjZHRpbWUodWludDggY3RpbWVbNl0pOwordWludDggc3BfY2hlY2tfdGltZV92YWxpZCh1aW50OCBjdGltZVs2XSk7Cit1aW50OCBzcF9jcmNfc3VtKHVpbnQ4IGJ1ZltdLHVpbnQ4IGxlbik7Cit1aW50MzIgc3BfZ2V0X3RpY2tlcih2b2lkKTsKK3ZvaWQgRGVsYXlfbXModWludDMyIG1zKTsKK3ZvaWQgc3BfdmFsdmVfb24odm9pZCk7Cit2b2lkIHNwX3ZhbHZlX29mZih2b2lkKTsKK3VpbnQ4IHNwX3ZhbHZlX3N0YXRlKHZvaWQpOworaW50MTYgZ2V0XzJieXRlX2ludCh1aW50OCB2YWx1ZV9zdHJbMl0pOworaW50MzIgZ2V0XzNieXRlX2ludCh1aW50OCB2YWx1ZV9zdHJbM10pOworaW50MzIgZ2V0XzRieXRlX2ludCh1aW50OCB2YWx1ZV9zdHJbNF0pOwordm9pZCBzZXRfMmJ5dGVfaW50KHVpbnQ4IHZhbHVlX3N0clsyXSwgaW50IG51bSk7Cit2b2lkIHNldF8zYnl0ZV9pbnQodWludDggdmFsdWVfc3RyWzNdLCBpbnQgbnVtKTsKK3ZvaWQgc2V0XzRieXRlX2ludCh1aW50OCB2YWx1ZV9zdHJbNF0sIGludCBudW0pOworLy+78bXDtaXX1r3a1tDEs9K7zru1xNa1CitpbnQzMiBHZXQxQml0KHVpbnQ4IGJ1ZiwgaW50IG4pOworaW50MTYgZ2V0XzJieXRlX2ludF9sZSh1aW50OCB2YWx1ZV9zdHJbMl0pOworLy/QodfWvdrQ8goraW50MzIgZ2V0XzNieXRlX2ludF9sZSh1aW50OCB2YWx1ZV9zdHJbM10pOworLy/QodfWvdrQ8goraW50MzIgZ2V0XzRieXRlX2ludF9sZSh1aW50OCB2YWx1ZV9zdHJbNF0pOwordm9pZCBzZXRfMmJ5dGVfaW50X2xlKHVpbnQ4IHZhbHVlX3N0clsyXSwgaW50IG51bSk7Cit2b2lkIHNldF8zYnl0ZV9pbnRfbGUodWludDggdmFsdWVfc3RyWzNdLCBpbnQgbnVtKTsKKy8qvMbL47TTc3RhcnR0aW1lILW9z9bU2rXEw+vK/SovCit1aW50MzIgZGlmZl90aW1lKHVpbnQ4IHN0YXJ0dGltZVs2XSk7Cit2b2lkIG15Y3B5KHZvaWQqIGRlc3QsIGNvbnN0IHZvaWQqIHNyYywgdWludDMyIGxlbik7CitpbnQzMiBzcF9hdG9pKGNvbnN0IGNoYXIqIHNyYyk7Cit2b2lkIHNwX2JjZDJhc2MoY29uc3QgdWludDggYmNkYnVmW10sIHVpbnQ4IGJjZGxlbiwgdWludDgqIGFzY3N0cik7CitpbnQgZm9ybWF0X3RpbWVfY292ZXJ0X3NlY3ModWludDggY3RpbWVbNl0pOwordm9pZCBzcF9wcm90b2NvbF9jcmMoY29uc3QgdWludDgqIGJ1ZiwgdWludDE2IGxlbiwgdWludDggY3JjWzJdKTsKK3ZvaWQgc3BfcHJvdG9jb2xfY3JjX2luaXQoY29uc3QgdWludDgqIGJ1ZiwgdWludDE2IGxlbix1aW50OCBpbml0WzJdLCB1aW50OCBjcmNbMl0pOwordWludDggc3BfZ2V0X2tleSh2b2lkKTsKK3VpbnQ4IHNwX2tleV9pbml0KHZvaWQpOwordm9pZCBzcF9rZXlfY2FsaWJyYXRlKHZvaWQpOwordm9pZCBzcF9yZXNldCh2b2lkKTsKK3ZvaWQgc3BfYmNkX3RvX3N0cihjb25zdCB1aW50OCogYmNkLCB1aW50OCBiY2RfbGVuLCBjaGFyKiBzdHIpOwordm9pZCBzcF9zdHJfdG9fYmNkKGNvbnN0IGNoYXIqIHN0ciwgdWludDggc3RyX2xlbiwgdWludDgqIGJjZCk7Cit2b2lkIHNwX3N0cl90b19oZXgoY29uc3QgY2hhciogc3RyLGNvbnN0IHVpbnQxNiBsZW4sdWludDgqIGhleCk7Cit2b2lkIHNwX2hleF90b19zdHIoY29uc3QgdWludDgqIGhleCxjb25zdCB1aW50OCBsZW4sY2hhciogc3RyKTsKK3VpbnQ4IHNwX2NoZWNrX3Bhc3N3ZChzcF9wb3NfdCogcG9zLGNvbnN0IGNoYXIqIGhpbnQsdWludDggcGFzc3dkWzZdKTsKK2ludDggaXNGRih1aW50OCBidWZbXSx1aW50MTYgbGVuKTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9zeXNfaHcvQ3JjLmMgYi9zeXNfaHcvQ3JjLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTc5NzQzOQotLS0gL2Rldi9udWxsCisrKyBiL3N5c19ody9DcmMuYwpAQCAtMCwwICsxLDgzIEBACisjaW5jbHVkZSAiY3JjLmgiCisKK3N0YXRpYyB1MTYgY29uc3QgY3JjX3RhYmxlW10gPSAgCit7CisJLy9DUkNUQjE6IDs/MjU2Pz8KKwkweDAwMDAwLDB4MDEwMjEsMHgwMjA0MiwweDAzMDYzLAorCTB4MDQwODQsMHgwNTBhNSwweDA2MGM2LDB4MDcwZTcsCisJMHgwODEwOCwweDA5MTI5LDB4MGExNGEsMHgwYjE2YiwKKwkweDBjMThjLDB4MGQxYWQsMHgwZTFjZSwweDBmMWVmLAorCTB4MDEyMzEsMHgwMDIxMCwweDAzMjczLDB4MDIyNTIsCisJMHgwNTJiNSwweDA0Mjk0LDB4MDcyZjcsMHgwNjJkNiwKKwkweDA5MzM5LDB4MDgzMTgsMHgwYjM3YiwweDBhMzVhLAorCTB4MGQzYmQsMHgwYzM5YywweDBmM2ZmLDB4MGUzZGUsCisJMHgwMjQ2MiwweDAzNDQzLDB4MDA0MjAsMHgwMTQwMSwKKwkweDA2NGU2LDB4MDc0YzcsMHgwNDRhNCwweDA1NDg1LAorCTB4MGE1NmEsMHgwYjU0YiwweDA4NTI4LDB4MDk1MDksCisJMHgwZTVlZSwweDBmNWNmLDB4MGM1YWMsMHgwZDU4ZCwKKwkweDAzNjUzLDB4MDI2NzIsMHgwMTYxMSwweDAwNjMwLAorCTB4MDc2ZDcsMHgwNjZmNiwweDA1Njk1LDB4MDQ2YjQsCisJMHgwYjc1YiwweDBhNzdhLDB4MDk3MTksMHgwODczOCwKKwkweDBmN2RmLDB4MGU3ZmUsMHgwZDc5ZCwweDBjN2JjLAorCTB4MDQ4YzQsMHgwNThlNSwweDA2ODg2LDB4MDc4YTcsCisJMHgwMDg0MCwweDAxODYxLDB4MDI4MDIsMHgwMzgyMywKKwkweDBjOWNjLDB4MGQ5ZWQsMHgwZTk4ZSwweDBmOWFmLAorCTB4MDg5NDgsMHgwOTk2OSwweDBhOTBhLDB4MGI5MmIsCisJMHgwNWFmNSwweDA0YWQ0LDB4MDdhYjcsMHgwNmE5NiwKKwkweDAxYTcxLDB4MDBhNTAsMHgwM2EzMywweDAyYTEyLAorCTB4MGRiZmQsMHgwY2JkYywweDBmYmJmLDB4MGViOWUsCisJMHgwOWI3OSwweDA4YjU4LDB4MGJiM2IsMHgwYWIxYSwKKwkweDA2Y2E2LDB4MDdjODcsMHgwNGNlNCwweDA1Y2M1LAorCTB4MDJjMjIsMHgwM2MwMywweDAwYzYwLDB4MDFjNDEsCisJMHgwZWRhZSwweDBmZDhmLDB4MGNkZWMsMHgwZGRjZCwKKwkweDBhZDJhLDB4MGJkMGIsMHgwOGQ2OCwweDA5ZDQ5LAorCTB4MDdlOTcsMHgwNmViNiwweDA1ZWQ1LDB4MDRlZjQsCisJMHgwM2UxMywweDAyZTMyLDB4MDFlNTEsMHgwMGU3MCwKKwkweDBmZjlmLDB4MGVmYmUsMHgwZGZkZCwweDBjZmZjLAorCTB4MGJmMWIsMHgwYWYzYSwweDA5ZjU5LDB4MDhmNzgsCisJLy9DUkNUQjI6IDs/MjU2Pz8KKwkweDA5MTg4LDB4MDgxYTksMHgwYjFjYSwweDBhMWViLAorCTB4MGQxMGMsMHgwYzEyZCwweDBmMTRlLDB4MGUxNmYsCisJMHgwMTA4MCwweDAwMGExLDB4MDMwYzIsMHgwMjBlMywKKwkweDA1MDA0LDB4MDQwMjUsMHgwNzA0NiwweDA2MDY3LAorCTB4MDgzYjksMHgwOTM5OCwweDBhM2ZiLDB4MGIzZGEsCisJMHgwYzMzZCwweDBkMzFjLDB4MGUzN2YsMHgwZjM1ZSwKKwkweDAwMmIxLDB4MDEyOTAsMHgwMjJmMywweDAzMmQyLAorCTB4MDQyMzUsMHgwNTIxNCwweDA2Mjc3LDB4MDcyNTYsCisJMHgwYjVlYSwweDBhNWNiLDB4MDk1YTgsMHgwODU4OSwKKwkweDBmNTZlLDB4MGU1NGYsMHgwZDUyYywweDBjNTBkLAorCTB4MDM0ZTIsMHgwMjRjMywweDAxNGEwLDB4MDA0ODEsCisJMHgwNzQ2NiwweDA2NDQ3LDB4MDU0MjQsMHgwNDQwNSwKKwkweDBhN2RiLDB4MGI3ZmEsMHgwODc5OSwweDA5N2I4LAorCTB4MGU3NWYsMHgwZjc3ZSwweDBjNzFkLDB4MGQ3M2MsCisJMHgwMjZkMywweDAzNmYyLDB4MDA2OTEsMHgwMTZiMCwKKwkweDA2NjU3LDB4MDc2NzYsMHgwNDYxNSwweDA1NjM0LAorCTB4MGQ5NGMsMHgwYzk2ZCwweDBmOTBlLDB4MGU5MmYsCisJMHgwOTljOCwweDA4OWU5LDB4MGI5OGEsMHgwYTlhYiwKKwkweDA1ODQ0LDB4MDQ4NjUsMHgwNzgwNiwweDA2ODI3LAorCTB4MDE4YzAsMHgwMDhlMSwweDAzODgyLDB4MDI4YTMsCisJMHgwY2I3ZCwweDBkYjVjLDB4MGViM2YsMHgwZmIxZSwKKwkweDA4YmY5LDB4MDliZDgsMHgwYWJiYiwweDBiYjlhLAorCTB4MDRhNzUsMHgwNWE1NCwweDA2YTM3LDB4MDdhMTYsCisJMHgwMGFmMSwweDAxYWQwLDB4MDJhYjMsMHgwM2E5MiwKKwkweDBmZDJlLDB4MGVkMGYsMHgwZGQ2YywweDBjZDRkLAorCTB4MGJkYWEsMHgwYWQ4YiwweDA5ZGU4LDB4MDhkYzksCisJMHgwN2MyNiwweDA2YzA3LDB4MDVjNjQsMHgwNGM0NSwKKwkweDAzY2EyLDB4MDJjODMsMHgwMWNlMCwweDAwY2MxLAorCTB4MGVmMWYsMHgwZmYzZSwweDBjZjVkLDB4MGRmN2MsCisJMHgwYWY5YiwweDBiZmJhLDB4MDhmZDksMHgwOWZmOCwKKwkweDA2ZTE3LDB4MDdlMzYsMHgwNGU1NSwweDA1ZTc0LAorCTB4MDJlOTMsMHgwM2ViMiwweDAwZWQxLDB4MDFlZjAKK307CisKK3UxNiBjYWxjQ1JDKCB1OCAqcEJ1ZmZlciwgdTE2IEJ1ZmZlckxlbmd0aCkKK3sgICAgICAgICAgCisJdTE2IGNyY19yZWcgPSAwOworCisJd2hpbGUgKEJ1ZmZlckxlbmd0aC0tKQorCXsKKwkJY3JjX3JlZyA9IChjcmNfcmVnIDw8IDgpIF4gY3JjX3RhYmxlWyhjcmNfcmVnPj44KSBeICpwQnVmZmVyKytdOworCX0KKworCXJldHVybiBjcmNfcmVnOworfQpkaWZmIC0tZ2l0IGEvc3lzX2h3L0NyYy5oIGIvc3lzX2h3L0NyYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzODUxMjEKLS0tIC9kZXYvbnVsbAorKysgYi9zeXNfaHcvQ3JjLmgKQEAgLTAsMCArMSw4IEBACisjaWZuZGVmIF9fY3JjX2hfXworI2RlZmluZSBfX2NyY19oX18KKworI2luY2x1ZGUgInN0bTMyZjEweC5oIgorCitleHRlcm4gdTE2IGNhbGNDUkMoIHU4ICpwQnVmZmVyLCB1MTYgQnVmZmVyTGVuZ3RoKTsKKworI2VuZGlmICAvKiBfX2NyY19oX18gKi8KZGlmZiAtLWdpdCBhL3N5c19ody9QcmpfRmxhc2hDZmcuSCBiL3N5c19ody9QcmpfRmxhc2hDZmcuSApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YzliZWVlCi0tLSAvZGV2L251bGwKKysrIGIvc3lzX2h3L1Byal9GbGFzaENmZy5ICkBAIC0wLDAgKzEsMTAzNiBAQAorLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZMQVNIIMXkINbDIM7EILz+ILaoINLlCisqCisqICDD6CDK9qO6RkxBU0jF5NbDo7vU2sq1vMrTptPD1tCjrNei0uLL+dGh0M26xbXEvt/M5cXk1sOho8jnufuyu8Tc1f2zo7XExeTWw6Osss6/vL7fzOW1xLLOyv3P7s/e1sahoworKgorKiAgw/sgs8ajulByal9GbGFzaENmZy5ICisqCisqICCw5iCxvqO6VjMuMQorKgorKiAg1/cg1d+jutXFvfgKKyoKKyogIMqxIMbao7oyMDEwLzA3LzAzCisqCisqICAgIENvcHlyaWdodCAoYykgMjAwOC0yMDA5ICAgICAgICAgIEJyYW5kLU5FVyBDLkEuUCBFbGVjdHJvbmljcyBUZWNobm9sb2d5IENPLixMVEQKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworCisjaWZuZGVmIF9fUHJqX0ZsYXNoQ2ZnX0hfXworI2RlZmluZSBfX1Byal9GbGFzaENmZ19IX18KKworLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBLZWlsILLLtaXF5NbDv6rKvAorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisKKy8vLS0tLS0tLS0gPDw8IFVzZSBDb25maWd1cmF0aW9uIFdpemFyZCBpbiBDb250ZXh0IE1lbnUgPj4+IC0tLS0tLS0tLS0tLS0tLS0tCisKKy8vIDxlPkZMQVNIxeTWwyCp76nvqe8gsOaxvjogVjMuMiAoMjAxMC8wNy8wMykgqe+p76nvCisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gPGk+IEVuYWJsZSBvciBkaXNhYmxlIEZMQVNIxeTWwworI2RlZmluZSBGTEFTSF9DRkdfRU5BQkxFICAgICAxCisvLworLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0+PiAoMSkgPDw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIDxlPjEuIEZMQVNI07K8/sXk1sMKKy8vIDxpPiBFbmFibGUgb3IgZGlzYWJsZSBGTEFTSNOyvP7F5NbDCisjZGVmaW5lIEZMQVNIX0hXX0NGR19FTkFCTEUgICAgIDEKKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vCisvLyAgIDxzLjE1PkZMQVNI0M26xQorLy8gICA8aT4gtqjS5cv5yrnTw7XERkxBU0jQzbrFo6zP1Mq+1tW2y9DFz6LKscq508OhoworLy8gICA8aT4gyOejukFUNDVEQjE2MUQgINKqx/PQodPaMTXX1r3aCisvLyAgIDxpPiDErMjPOiAiQVQ0NURCMTYxRCIKKyNkZWZpbmUgREVGX0ZMQVNIX05BTUUgICAgICAgICAgICJXMjVYMzIiCisvLworLy8gICA8bz5GTEFTSMrZw/wgPDUwMDA9PiA1MDAwtM4gPDEwMDAwPT4gMc3ytM4gPDIwMDAwPT4gMs3ytM4KKy8vICAgICAgICAgICAgICAgIDwzMDAwMD0+IDPN8rTOIDw0MDAwMD0+IDTN8rTOIDw1MDAwMD0+IDXN8rTOCisvLyAgICAgICAgICAgICAgICA8NjAwMDA9PiA2zfK0ziA8NzAwMDA9PiA3zfK0ziA8ODAwMDA9PiA4zfK0zgorLy8gICAgICAgICAgICAgICAgPDkwMDAwPT4gOc3ytM4gPDEwMDAwMD0+IDEwzfK0zjwxMD0+IDEwtM4KKy8vICAgPGk+ILao0uVGTEFTSLXE09DQp8rZw/yjrNOm08PW0NLUtMvAtL340NDK2cP8vMbL4worLy8gICA8aT4gxKzIzzogNTAwMDAKKyNkZWZpbmUgREVGX0ZMQVNIX0xpbVRpbWVzICAgICAgIDgwMDAwCisvLworLy8gICA8bz5GTEFTSNfc0rPK/SjSsykgPDEwMjQtODE5MjoxPjwjLzE+CisvLyAgIDxpPiC2qNLlRkxBU0jQvsastcTX3NKzyv0KKy8vICAgPGk+IMSsyM86IDQwOTYKKyNkZWZpbmUgREVGX0ZMQVNIX1BhZ2VzICAgICAgICAgIDEwMjQKKy8vCisvLyAgIDxvPkZMQVNI0rO089ChKNfWvdopIDwyNTYtNDA5NjoxPjwjLzE+CisvLyAgIDxpPiC2qNLlRkxBU0jSu9KztcTX1r3ayv0KKy8vICAgPGk+IMSsyM86IDUyOAorI2RlZmluZSBERUZfRkxBU0hfUGFnZVNpemUgICAgICAgNDA5NgorLy8gPC9lPgorCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT4+ICgyKSA8PD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gPGU+Mi4gurrX1r/ixeTWwworI2RlZmluZSBGTEFTSF9HQjE2MjRfRU5BQkxFICAgICAgICAgICAgIAkJMQorCisvLz09PT09PT09PT09PT0+PiC6utfWv+LH+NPyCisvLz09PT09PT09PT09PT09PT09Pj4gMTYqMTbX1r/iCisvLyAJPGU+MDEuIDE2KjE2urrX1r/iCisjZGVmaW5lIERFRl9GTEFTSF9HQjE2MTZfRU5BQkxFCQkJCTEKKworI2RlZmluZSBERUZfRkxBU0hfR0IxNjE2UGFnZVNpemUgICAgICAgICAgICAgICAgKCA2NyApCSAvL9XiwO+5zLao1rUgICAgINfWv+IgIAorI2RlZmluZSBERUZfRkxBU0hfR0IxNjE2U3RhcnRBZGQgICAgICAgICAgICAgICAgKCAweDAwMDAwMDAwdWwgKQorLy/X1r/iv6rKvLXY1rcKKyNkZWZpbmUgREVGX0ZMQVNIX0dCMTYxNkVuZEFkZCAgICAgICAgICAgICAgICAgKCBERUZfRkxBU0hfR0IxNjE2U3RhcnRBZGQgKyAoIERFRl9GTEFTSF9HQjE2MTZQYWdlU2l6ZSAqIERFRl9GTEFTSF9QYWdlU2l6ZSAqIERFRl9GTEFTSF9HQjE2MTZfRU5BQkxFICkgKQorLy/X1r/iveHK+LXY1rcgICCyu7D8wKi0y7XY1rcKKy8vPT09PT09PT09PT09PT4+IM280M7NvLHq19a/4sf40/IKKyNkZWZpbmUgREVGX0ZMQVNIX1Bob3RvTGliUGFnZVNpemUgICAgICAgICAgICAgKCA1ICkJIC8v1eLA77nMtqjWtSAgICAgzbzQzs28seogICAgICAgIAorI2RlZmluZSBERUZfRkxBU0hfUGhvdG9MaWJTdGFydEFkZCAgICAgICAgICAgICAoIERFRl9GTEFTSF9HQjE2MTZFbmRBZGQgKQorLy/NvNDOzbyx6r/iv6rKvLXY1rcKKyNkZWZpbmUgREVGX0ZMQVNIX1Bob3RvTGliRW5kQWRkICAgICAgICAgICAgICAgKCBERUZfRkxBU0hfUGhvdG9MaWJTdGFydEFkZCArICggREVGX0ZMQVNIX1Bob3RvTGliUGFnZVNpemUgKiBERUZfRkxBU0hfUGFnZVNpemUgKiBERUZfRkxBU0hfR0IxNjE2X0VOQUJMRSApICkKKy8vzbzQzs28seq/4r3hyvi12Na3CisvLyAJPC9lPgorCisvLz09PT09PT09PT09PT09PT09Pj4gMjQqMjTX1r/iCisvLyAJPGU+MDIuIDI0KjI0urrX1r/iCisjZGVmaW5lIERFRl9GTEFTSF9HQjI0MjRfRU5BQkxFCQkJCQkxCisKKyNkZWZpbmUgREVGX0ZMQVNIX0dCMjQyNFBhZ2VTaXplICAgICAgICAgICAgICAgICggNzUgKQkgLy8yNCoyNNfWv+IgIAorCisjZGVmaW5lIERFRl9GTEFTSF9HQjI0MjRTdGFydEFkZCAgICAgICAgICAgICAgICAoIERFRl9GTEFTSF9QaG90b0xpYkVuZEFkZCApCisvL9fWv+K/qsq8tdjWtworI2RlZmluZSBERUZfRkxBU0hfR0IyNDI0RW5kQWRkICAgICAgICAgICAgICAgICAgKCBERUZfRkxBU0hfR0IyNDI0U3RhcnRBZGQgKyAoIERFRl9GTEFTSF9HQjI0MjRQYWdlU2l6ZSAqIERFRl9GTEFTSF9QYWdlU2l6ZSAqIERFRl9GTEFTSF9HQjI0MjRfRU5BQkxFICkgKQorLy8gCTwvZT4KKworCisvLyA8L2U+CisKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Pj4gKDMpIDw8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyA8ZT4zLiBJQVDJ/by2v9W85MXk1sMKKyNkZWZpbmUgRkxBU0hfSUFQX0FwcENvZGVfRU5BQkxFICAgICAgICAgICAgIDEKKyNkZWZpbmUgREVGX0ZMQVNIX0lBUF9BcHBDb2RlU3RhcnRBZGQgICAgICAgICAgKCBERUZfRkxBU0hfR0IyNDI0RW5kQWRkICkKKy8v06bTw7T6wuu05rSiv6rKvLXY1rcKKy8vPT09PT09PT09PT09PT09PT09PT09CisvLworLy8gICAgICAgICA8bz7J/by2tOa0otOm08O0+sLrv9W85LTz0KEo0rMpIDwzLTEwMDA6MT48Iy8xPgorLy8gICAgICAgICA8aT7ErMjPo7o1MDQKKyNkZWZpbmUgREVGX0ZMQVNIX0lBUF9BcHBDb2RlUGFnZVNpemUgICAgICAgICAgMTI4CisKKworI2RlZmluZSBERUZfRkxBU0hfSUFQX0FwcENvZGVFbmRBZGQgICAgICAgICAgICAoIERFRl9GTEFTSF9JQVBfQXBwQ29kZVN0YXJ0QWRkICsgICBcCisgICAgKCBERUZfRkxBU0hfSUFQX0FwcENvZGVQYWdlU2l6ZSAqIFwKKyAgICAgIERFRl9GTEFTSF9QYWdlU2l6ZSApKkZMQVNIX0lBUF9BcHBDb2RlX0VOQUJMRSApCisvL9Om08O0+sLrtOa0or3hyvi12Na3CisvLyA8L2U+CisKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Pj4gKDQpIDw8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyA8ZT40LiBGTEFTSNPDu6fOxLz+xeTWwworLy8gPGk+IEVuYWJsZSBvciBkaXNhYmxlIEZMQVNIvbvS17zHwrzF5NbDCisjZGVmaW5lIEZMQVNIX1VzZUZpbGVfQ0ZHX0VOQUJMRSAgICAgMQorCisjZGVmaW5lIERlZkNmZ19Vc2VGaWxlU3RhQWRkICAgICAgICAgICAgICggREVGX0ZMQVNIX0lBUF9BcHBDb2RlRW5kQWRkICkKKy8vRkxBU0i9u9LXvMfCvLTmtKK1xL+qyry12Na3CisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyAJPGU+MDEuIEZMQVNI08O7p87EvP4wMcf4CisjZGVmaW5lIERlZkNmZ19Vc2VGaWxlQmxvY2swMV9TdGEgICAgIDEKKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vICAgICAgPG8+08O7p87EvP7L+bfWxeS1xNfctPPQoSjSsykgPDEtODE5NjoxPjwjLzE+CisjZGVmaW5lIERlZkNmZ19Vc2VGaWxlMDFfRGlyUGFnZVNpemUgIAkgIAk0CisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjZGVmaW5lIERlZkNmZ19Vc2VGaWxlMDFfU3RhQWRkCQkoIERlZkNmZ19Vc2VGaWxlU3RhQWRkICkgCQkJLy+8x8K8v6rKvLXY1rcKKyNkZWZpbmUgRGVmQ2ZnX1VzZUZpbGUwMV9FbmRBZGQJCSggRGVmQ2ZnX1VzZUZpbGUwMV9TdGFBZGQgKyAJIAlcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIERlZkNmZ19Vc2VGaWxlMDFfRGlyUGFnZVNpemUgKiAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBERUZfRkxBU0hfUGFnZVNpemUgKgkJIAlcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZkNmZ19Vc2VGaWxlQmxvY2swMV9TdGEgKSApCS8vvMfCvL3hyvi12Na3CisvLyAJPC9lPgorLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gCTxlPjAyLiBGTEFTSNPDu6fOxLz+MDLH+AorI2RlZmluZSBEZWZDZmdfVXNlRmlsZUJsb2NrMDJfU3RhICAgICAxCisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyAgICAgIDxvPtPDu6fOxLz+y/m31sXktcTX3LTz0KEo0rMpIDwxLTgxOTY6MT48Iy8xPgorI2RlZmluZSBEZWZDZmdfVXNlRmlsZTAyX0RpclBhZ2VTaXplICAJICAJNAorLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorI2RlZmluZSBEZWZDZmdfVXNlRmlsZTAyX1N0YUFkZAkJKCBEZWZDZmdfVXNlRmlsZTAxX0VuZEFkZCApIAkJLy+8x8K8v6rKvLXY1rcKKyNkZWZpbmUgRGVmQ2ZnX1VzZUZpbGUwMl9FbmRBZGQJCSggRGVmQ2ZnX1VzZUZpbGUwMl9TdGFBZGQgKyAJIAlcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIERlZkNmZ19Vc2VGaWxlMDJfRGlyUGFnZVNpemUgKiAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBERUZfRkxBU0hfUGFnZVNpemUgKgkJIAlcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZkNmZ19Vc2VGaWxlQmxvY2swMl9TdGEgKSApCS8vvMfCvL3hyvi12Na3CisvLyAJPC9lPgorLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gCTxlPjAzLiBGTEFTSNPDu6fOxLz+MDPH+AorI2RlZmluZSBEZWZDZmdfVXNlRmlsZUJsb2NrMDNfU3RhICAgICAxCisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyAgICAgIDxvPtPDu6fOxLz+y/m31sXktcTX3LTz0KEo0rMpIDwxLTgxOTY6MT48Iy8xPgorI2RlZmluZSBEZWZDZmdfVXNlRmlsZTAzX0RpclBhZ2VTaXplICAJICAJNAorLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorI2RlZmluZSBEZWZDZmdfVXNlRmlsZTAzX1N0YUFkZAkJKCBEZWZDZmdfVXNlRmlsZTAyX0VuZEFkZCApIAkJLy+8x8K8v6rKvLXY1rcKKyNkZWZpbmUgRGVmQ2ZnX1VzZUZpbGUwM19FbmRBZGQJCSggRGVmQ2ZnX1VzZUZpbGUwM19TdGFBZGQgKyAJIAlcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIERlZkNmZ19Vc2VGaWxlMDNfRGlyUGFnZVNpemUgKiAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBERUZfRkxBU0hfUGFnZVNpemUgKgkJIAlcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZkNmZ19Vc2VGaWxlQmxvY2swM19TdGEgKSApCS8vvMfCvL3hyvi12Na3CisvLyAJPC9lPgorLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gCTxlPjA0LiBGTEFTSNPDu6fOxLz+MDTH+AorI2RlZmluZSBEZWZDZmdfVXNlRmlsZUJsb2NrMDRfU3RhICAgICAxCisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyAgICAgIDxvPtPDu6fOxLz+y/m31sXktcTX3LTz0KEo0rMpIDwxLTgxOTY6MT48Iy8xPgorI2RlZmluZSBEZWZDZmdfVXNlRmlsZTA0X0RpclBhZ2VTaXplICAJICAJNAorLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorI2RlZmluZSBEZWZDZmdfVXNlRmlsZTA0X1N0YUFkZAkJKCBEZWZDZmdfVXNlRmlsZTAzX0VuZEFkZCApIAkJLy+8x8K8v6rKvLXY1rcKKyNkZWZpbmUgRGVmQ2ZnX1VzZUZpbGUwNF9FbmRBZGQJCSggRGVmQ2ZnX1VzZUZpbGUwNF9TdGFBZGQgKyAJIAlcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIERlZkNmZ19Vc2VGaWxlMDRfRGlyUGFnZVNpemUgKiAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBERUZfRkxBU0hfUGFnZVNpemUgKgkJIAlcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZkNmZ19Vc2VGaWxlQmxvY2swNF9TdGEgKSApCS8vvMfCvL3hyvi12Na3CisvLyAJPC9lPgorLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gCTxlPjA1LiBGTEFTSNPDu6fOxLz+MDXH+AorI2RlZmluZSBEZWZDZmdfVXNlRmlsZUJsb2NrMDVfU3RhICAgICAxCisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyAgICAgIDxvPtPDu6fOxLz+y/m31sXktcTX3LTz0KEo0rMpIDwxLTgxOTY6MT48Iy8xPgorI2RlZmluZSBEZWZDZmdfVXNlRmlsZTA1X0RpclBhZ2VTaXplICAJICAJNAorLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorI2RlZmluZSBEZWZDZmdfVXNlRmlsZTA1X1N0YUFkZAkJKCBEZWZDZmdfVXNlRmlsZTA0X0VuZEFkZCApIAkJLy+8x8K8v6rKvLXY1rcKKyNkZWZpbmUgRGVmQ2ZnX1VzZUZpbGUwNV9FbmRBZGQJCSggRGVmQ2ZnX1VzZUZpbGUwNV9TdGFBZGQgKyAJIAlcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIERlZkNmZ19Vc2VGaWxlMDVfRGlyUGFnZVNpemUgKiAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBERUZfRkxBU0hfUGFnZVNpemUgKgkJIAlcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZkNmZ19Vc2VGaWxlQmxvY2swNV9TdGEgKSApCS8vvMfCvL3hyvi12Na3CisvLyAJPC9lPgorLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gCTxlPjA2LiBGTEFTSNPDu6fOxLz+MDbH+AorI2RlZmluZSBEZWZDZmdfVXNlRmlsZUJsb2NrMDZfU3RhICAgICAxCisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyAgICAgIDxvPtPDu6fOxLz+y/m31sXktcTX3LTz0KEo0rMpIDwxLTgxOTY6MT48Iy8xPgorI2RlZmluZSBEZWZDZmdfVXNlRmlsZTA2X0RpclBhZ2VTaXplICAJICAJMgorLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorI2RlZmluZSBEZWZDZmdfVXNlRmlsZTA2X1N0YUFkZAkJKCBEZWZDZmdfVXNlRmlsZTA1X0VuZEFkZCApIAkJLy+8x8K8v6rKvLXY1rcKKyNkZWZpbmUgRGVmQ2ZnX1VzZUZpbGUwNl9FbmRBZGQJCSggRGVmQ2ZnX1VzZUZpbGUwNl9TdGFBZGQgKyAJIAlcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIERlZkNmZ19Vc2VGaWxlMDZfRGlyUGFnZVNpemUgKiAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBERUZfRkxBU0hfUGFnZVNpemUgKgkJIAlcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZkNmZ19Vc2VGaWxlQmxvY2swNl9TdGEgKSApCS8vvMfCvL3hyvi12Na3CisvLyAJPC9lPgorLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gCTxlPjA3LiBGTEFTSNPDu6fOxLz+MDfH+AorI2RlZmluZSBEZWZDZmdfVXNlRmlsZUJsb2NrMDdfU3RhICAgICAxCisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyAgICAgIDxvPtPDu6fOxLz+y/m31sXktcTX3LTz0KEo0rMpIDwxLTgxOTY6MT48Iy8xPgorI2RlZmluZSBEZWZDZmdfVXNlRmlsZTA3X0RpclBhZ2VTaXplICAJICAJMgorLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorI2RlZmluZSBEZWZDZmdfVXNlRmlsZTA3X1N0YUFkZAkJKCBEZWZDZmdfVXNlRmlsZTA2X0VuZEFkZCApIAkJLy+8x8K8v6rKvLXY1rcKKyNkZWZpbmUgRGVmQ2ZnX1VzZUZpbGUwN19FbmRBZGQJCSggRGVmQ2ZnX1VzZUZpbGUwN19TdGFBZGQgKyAJIAlcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIERlZkNmZ19Vc2VGaWxlMDdfRGlyUGFnZVNpemUgKiAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBERUZfRkxBU0hfUGFnZVNpemUgKgkJIAlcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZkNmZ19Vc2VGaWxlQmxvY2swN19TdGEgKSApCS8vvMfCvL3hyvi12Na3CisvLyAJPC9lPgorLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gCTxlPjA4LiBGTEFTSNPDu6fOxLz+MDjH+AorI2RlZmluZSBEZWZDZmdfVXNlRmlsZUJsb2NrMDhfU3RhICAgICAwCisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyAgICAgIDxvPtPDu6fOxLz+y/m31sXktcTX3LTz0KEo0rMpIDwxLTgxOTY6MT48Iy8xPgorI2RlZmluZSBEZWZDZmdfVXNlRmlsZTA4X0RpclBhZ2VTaXplICAJICAJMQorLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorI2RlZmluZSBEZWZDZmdfVXNlRmlsZTA4X1N0YUFkZAkJKCBEZWZDZmdfVXNlRmlsZTA3X0VuZEFkZCApIAkJLy+8x8K8v6rKvLXY1rcKKyNkZWZpbmUgRGVmQ2ZnX1VzZUZpbGUwOF9FbmRBZGQJCSggRGVmQ2ZnX1VzZUZpbGUwOF9TdGFBZGQgKyAJIAlcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIERlZkNmZ19Vc2VGaWxlMDhfRGlyUGFnZVNpemUgKiAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBERUZfRkxBU0hfUGFnZVNpemUgKgkJIAlcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZkNmZ19Vc2VGaWxlQmxvY2swOF9TdGEgKSApCS8vvMfCvL3hyvi12Na3CisvLyAJPC9lPgorLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gCTxlPjA5LiBGTEFTSNPDu6fOxLz+MDnH+AorI2RlZmluZSBEZWZDZmdfVXNlRmlsZUJsb2NrMDlfU3RhICAgICAwCisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyAgICAgIDxvPtPDu6fOxLz+y/m31sXktcTX3LTz0KEo0rMpIDwxLTgxOTY6MT48Iy8xPgorI2RlZmluZSBEZWZDZmdfVXNlRmlsZTA5X0RpclBhZ2VTaXplICAJICAJMQorLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorI2RlZmluZSBEZWZDZmdfVXNlRmlsZTA5X1N0YUFkZAkJKCBEZWZDZmdfVXNlRmlsZTA4X0VuZEFkZCApIAkJLy+8x8K8v6rKvLXY1rcKKyNkZWZpbmUgRGVmQ2ZnX1VzZUZpbGUwOV9FbmRBZGQJCSggRGVmQ2ZnX1VzZUZpbGUwOV9TdGFBZGQgKyAJIAlcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIERlZkNmZ19Vc2VGaWxlMDlfRGlyUGFnZVNpemUgKiAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBERUZfRkxBU0hfUGFnZVNpemUgKgkJIAlcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZkNmZ19Vc2VGaWxlQmxvY2swOV9TdGEgKSApCS8vvMfCvL3hyvi12Na3CisvLyAJPC9lPgorLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gCTxlPjEwLiBGTEFTSNPDu6fOxLz+MTDH+AorI2RlZmluZSBEZWZDZmdfVXNlRmlsZUJsb2NrMTBfU3RhICAgICAwCisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyAgICAgIDxvPtPDu6fOxLz+y/m31sXktcTX3LTz0KEo0rMpIDwxLTgxOTY6MT48Iy8xPgorI2RlZmluZSBEZWZDZmdfVXNlRmlsZTEwX0RpclBhZ2VTaXplICAJICAJMQorLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorI2RlZmluZSBEZWZDZmdfVXNlRmlsZTEwX1N0YUFkZAkJKCBEZWZDZmdfVXNlRmlsZTA5X0VuZEFkZCApIAkJLy+8x8K8v6rKvLXY1rcKKyNkZWZpbmUgRGVmQ2ZnX1VzZUZpbGUxMF9FbmRBZGQJCSggRGVmQ2ZnX1VzZUZpbGUxMF9TdGFBZGQgKyAJIAlcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIERlZkNmZ19Vc2VGaWxlMTBfRGlyUGFnZVNpemUgKiAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBERUZfRkxBU0hfUGFnZVNpemUgKgkJIAlcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZkNmZ19Vc2VGaWxlQmxvY2sxMF9TdGEgKSApCS8vvMfCvL3hyvi12Na3CisvLyAJPC9lPgorCisKKyNkZWZpbmUgRGVmQ2ZnX1VzZUZpbGVFbmRBZGQgICAgICAgICAgICAgKCBEZWZDZmdfVXNlRmlsZTEwX0VuZEFkZCApCisvL0ZMQVNIvbvS17zHwry05rSitcS94cr4tdjWtworLy8gPC9lPgorCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT4+ICg1KSA8PD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gPGU+NS4gRkxBU0i9u9LXvMfCvMXk1sMKKy8vIDxpPiBFbmFibGUgb3IgZGlzYWJsZSBGTEFTSL270te8x8K8xeTWwworI2RlZmluZSBGTEFTSF9Mb2dfQ0ZHX0VOQUJMRSAgICAgMQorCisjZGVmaW5lIERlZkNmZ19Mb2dGaWxlU3RhQWRkICAgICAgICAgICAgICggRGVmQ2ZnX1VzZUZpbGVFbmRBZGQgKQorLy9GTEFTSL270te8x8K8tOa0orXEv6rKvLXY1rcKKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIAk8ZT4wMS4gRkxBU0i9u9LXvMfCvDAxx/gKKyNkZWZpbmUgRGVmQ2ZnX0xvZ0Jsb2NrMDFfU3RhICAgICAxCisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyAgICAgIDxvPrzHwrzEv8K8zsS8/sv5t9bF5LXE19y089ChKNKzKSA8MS04MTk2OjE+PCMvMT4KKyNkZWZpbmUgRGVmQ2ZnX0xvZ0ZpbGUwMV9EaXJQYWdlU2l6ZSAgCSAgCTM2CisvLyAgICAgIDxvPrzHwrzOxLz+y/m31sXktcTX3LTz0KEo0rMpIDwxLTgxOTY6MT48Iy8xPgorI2RlZmluZSBEZWZDZmdfTG9nRmlsZTAxX1BhZ2VTaXplICAJICAJCTQwMAorLy8gICAgICA8bz68x8K8zsS8/tSkwfS089ChKNKzKSA8MS0xMDoxPjwjLzE+CisjZGVmaW5lIERlZkNmZ19Mb2dGaWxlMDFfUGFnZVJWUwkgIAkgIAkyCisvLyAgICAgIDxvPsO/0rvM9bzHwryzpLbILLD8wKhDUkMo19a92ikgPDMtMzAwOjE+PCMvMT4KKyNkZWZpbmUgRGVmQ2ZnX0xvZ0ZpbGUwMV9SZWNMZW5ndGggICAgCQk5MQorLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorI2RlZmluZSBEZWZDZmdfTG9nRGlyRmlsZTAxX1N0YUFkZAkgICggRGVmQ2ZnX0xvZ0ZpbGVTdGFBZGQgKSAJCS8vvMfCvL+qyry12Na3CisjZGVmaW5lIERlZkNmZ19Mb2dEaXJGaWxlMDFfRW5kQWRkCSAgKCBEZWZDZmdfTG9nRGlyRmlsZTAxX1N0YUFkZCArIAlcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBEZWZDZmdfTG9nRmlsZTAxX0RpclBhZ2VTaXplICogIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREVGX0ZMQVNIX1BhZ2VTaXplICoJCSAJXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZDZmdfTG9nQmxvY2swMV9TdGEgKSApCS8vvMfCvL3hyvi12Na3CisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjZGVmaW5lIERlZkNmZ19Mb2dGaWxlMDFfU3RhQWRkCQkoIERlZkNmZ19Mb2dEaXJGaWxlMDFfRW5kQWRkICkgCS8vvMfCvL+qyry12Na3CisjZGVmaW5lIERlZkNmZ19Mb2dGaWxlMDFfRW5kQWRkCQkoIERlZkNmZ19Mb2dGaWxlMDFfU3RhQWRkICsgCSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIERlZkNmZ19Mb2dGaWxlMDFfUGFnZVNpemUgKiAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERFRl9GTEFTSF9QYWdlU2l6ZSAqCQkgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmQ2ZnX0xvZ0Jsb2NrMDFfU3RhICkgKQkgICAgLy+8x8K8veHK+LXY1rcKKyNpZiggRGVmQ2ZnX0xvZ0Jsb2NrMDFfU3RhICkKKyNpZiggRGVmQ2ZnX0xvZ0ZpbGUwMV9QYWdlU2l6ZSA8PSBEZWZDZmdfTG9nRmlsZTAxX1BhZ2VSVlMgKQorI2Vycm9yICIxOrfWxeS1xLzHwrzX3LTz0KGx2NDrtPPT2tSkwfS8x8K8tPPQoSIKKyNlbmRpZgorI2VuZGlmCisvLyAJPC9lPgorCisvLyAJPGU+MDIuIEZMQVNIvbvS17zHwrwwMsf4CisjZGVmaW5lIERlZkNmZ19Mb2dCbG9jazAyX1N0YSAgICAgMAorLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gICAgICA8bz68x8K8xL/CvM7EvP7L+bfWxeS1xNfctPPQoSjSsykgPDEtODE5NjoxPjwjLzE+CisjZGVmaW5lIERlZkNmZ19Mb2dGaWxlMDJfRGlyUGFnZVNpemUgIAkgIAkyNTYKKy8vICAgICAgPG8+vMfCvM7EvP7L+bfWxeS1xNfctPPQoSjSsykgPDEtODE5NjoxPjwjLzE+CisjZGVmaW5lIERlZkNmZ19Mb2dGaWxlMDJfUGFnZVNpemUgIAkgIAkJMTIwMAorLy8gICAgICA8bz68x8K8zsS8/tSkwfS089ChKNKzKSA8MS0xMDoxPjwjLzE+CisjZGVmaW5lIERlZkNmZ19Mb2dGaWxlMDJfUGFnZVJWUwkgIAkgIAkxMAorLy8gICAgICA8bz7Dv9K7zPW8x8K8s6S2yCyw/MCoQ1JDKNfWvdopIDwzLTMwMDoxPjwjLzE+CisjZGVmaW5lIERlZkNmZ19Mb2dGaWxlMDJfUmVjTGVuZ3RoICAgIAkJNzAKKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyNkZWZpbmUgRGVmQ2ZnX0xvZ0RpckZpbGUwMl9TdGFBZGQJICAoIERlZkNmZ19Mb2dGaWxlMDFfRW5kQWRkICkgCS8vvMfCvL+qyry12Na3CisjZGVmaW5lIERlZkNmZ19Mb2dEaXJGaWxlMDJfRW5kQWRkCSAgKCBEZWZDZmdfTG9nRGlyRmlsZTAyX1N0YUFkZCArIAlcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBEZWZDZmdfTG9nRmlsZTAyX0RpclBhZ2VTaXplICogIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREVGX0ZMQVNIX1BhZ2VTaXplICoJCSAJXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZDZmdfTG9nQmxvY2swMl9TdGEgKSApCS8vvMfCvL3hyvi12Na3CisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjZGVmaW5lIERlZkNmZ19Mb2dGaWxlMDJfU3RhQWRkCQkoIERlZkNmZ19Mb2dEaXJGaWxlMDJfRW5kQWRkICkgCS8vvMfCvL+qyry12Na3CisjZGVmaW5lIERlZkNmZ19Mb2dGaWxlMDJfRW5kQWRkCQkoIERlZkNmZ19Mb2dGaWxlMDJfU3RhQWRkICsgCSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIERlZkNmZ19Mb2dGaWxlMDJfUGFnZVNpemUgKiAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERFRl9GTEFTSF9QYWdlU2l6ZSAqCQkgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmQ2ZnX0xvZ0Jsb2NrMDJfU3RhICkgKQkgICAgLy+8x8K8veHK+LXY1rcKKyNpZiggRGVmQ2ZnX0xvZ0Jsb2NrMDJfU3RhICkKKyNpZiggRGVmQ2ZnX0xvZ0ZpbGUwMl9QYWdlU2l6ZSA8PSBEZWZDZmdfTG9nRmlsZTAyX1BhZ2VSVlMgKQorI2Vycm9yICIyOrfWxeS1xLzHwrzX3LTz0KGx2NDrtPPT2tSkwfS8x8K8tPPQoSIKKyNlbmRpZgorI2VuZGlmCisvLyAJPC9lPgorCisvLyAJPGU+MDMuIEZMQVNIvbvS17zHwrwwM8f4CisjZGVmaW5lIERlZkNmZ19Mb2dCbG9jazAzX1N0YSAgICAgMAorLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gICAgICA8bz68x8K8xL/CvM7EvP7L+bfWxeS1xNfctPPQoSjSsykgPDEtODE5NjoxPjwjLzE+CisjZGVmaW5lIERlZkNmZ19Mb2dGaWxlMDNfRGlyUGFnZVNpemUgIAkgIAkxMAorLy8gICAgICA8bz68x8K8zsS8/sv5t9bF5LXE19y089ChKNKzKSA8MS04MTk2OjE+PCMvMT4KKyNkZWZpbmUgRGVmQ2ZnX0xvZ0ZpbGUwM19QYWdlU2l6ZSAgCSAgCQkyMAorLy8gICAgICA8bz68x8K8zsS8/tSkwfS089ChKNKzKSA8MS0xMDoxPjwjLzE+CisjZGVmaW5lIERlZkNmZ19Mb2dGaWxlMDNfUGFnZVJWUwkgIAkgIAkzCisvLyAgICAgIDxvPsO/0rvM9bzHwryzpLbILLD8wKhDUkMo19a92ikgPDMtMzAwOjE+PCMvMT4KKyNkZWZpbmUgRGVmQ2ZnX0xvZ0ZpbGUwM19SZWNMZW5ndGggICAgCQk3MAorLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorI2RlZmluZSBEZWZDZmdfTG9nRGlyRmlsZTAzX1N0YUFkZAkgICggRGVmQ2ZnX0xvZ0ZpbGUwMl9FbmRBZGQgKSAJLy+8x8K8v6rKvLXY1rcKKyNkZWZpbmUgRGVmQ2ZnX0xvZ0RpckZpbGUwM19FbmRBZGQJICAoIERlZkNmZ19Mb2dEaXJGaWxlMDNfU3RhQWRkICsgCVwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIERlZkNmZ19Mb2dGaWxlMDNfRGlyUGFnZVNpemUgKiAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBERUZfRkxBU0hfUGFnZVNpemUgKgkJIAlcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZkNmZ19Mb2dCbG9jazAzX1N0YSApICkJLy+8x8K8veHK+LXY1rcKKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyNkZWZpbmUgRGVmQ2ZnX0xvZ0ZpbGUwM19TdGFBZGQJCSggRGVmQ2ZnX0xvZ0RpckZpbGUwM19FbmRBZGQgKSAJLy+8x8K8v6rKvLXY1rcKKyNkZWZpbmUgRGVmQ2ZnX0xvZ0ZpbGUwM19FbmRBZGQJCSggRGVmQ2ZnX0xvZ0ZpbGUwM19TdGFBZGQgKyAJIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggRGVmQ2ZnX0xvZ0ZpbGUwM19QYWdlU2l6ZSAqICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREVGX0ZMQVNIX1BhZ2VTaXplICoJCSAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZDZmdfTG9nQmxvY2swM19TdGEgKSApCSAgICAvL7zHwry94cr4tdjWtworI2lmKCBEZWZDZmdfTG9nQmxvY2swM19TdGEgKQorI2lmKCBEZWZDZmdfTG9nRmlsZTAzX1BhZ2VTaXplIDw9IERlZkNmZ19Mb2dGaWxlMDNfUGFnZVJWUyApCisjZXJyb3IgIjM6t9bF5LXEvMfCvNfctPPQobHY0Ou089Pa1KTB9LzHwry089ChIgorI2VuZGlmCisjZW5kaWYKKy8vIAk8L2U+CisKKy8vIAk8ZT4wNC4gRkxBU0i9u9LXvMfCvDA0x/gKKyNkZWZpbmUgRGVmQ2ZnX0xvZ0Jsb2NrMDRfU3RhICAgICAwCisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyAgICAgIDxvPrzHwrzEv8K8zsS8/sv5t9bF5LXE19y089ChKNKzKSA8MS04MTk2OjE+PCMvMT4KKyNkZWZpbmUgRGVmQ2ZnX0xvZ0ZpbGUwNF9EaXJQYWdlU2l6ZSAgCSAgCTEwCisvLyAgICAgIDxvPrzHwrzOxLz+y/m31sXktcTX3LTz0KEo0rMpIDwxLTgxOTY6MT48Iy8xPgorI2RlZmluZSBEZWZDZmdfTG9nRmlsZTA0X1BhZ2VTaXplICAJICAJCTIwCisvLyAgICAgIDxvPrzHwrzOxLz+1KTB9LTz0KEo0rMpIDwxLTEwOjE+PCMvMT4KKyNkZWZpbmUgRGVmQ2ZnX0xvZ0ZpbGUwNF9QYWdlUlZTCSAgCSAgCTMKKy8vICAgICAgPG8+w7/Su8z1vMfCvLOktsgssPzAqENSQyjX1r3aKSA8My0zMDA6MT48Iy8xPgorI2RlZmluZSBEZWZDZmdfTG9nRmlsZTA0X1JlY0xlbmd0aCAgICAJCTcwCisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjZGVmaW5lIERlZkNmZ19Mb2dEaXJGaWxlMDRfU3RhQWRkCSAgKCBEZWZDZmdfTG9nRmlsZTAzX0VuZEFkZCApIAkvL7zHwry/qsq8tdjWtworI2RlZmluZSBEZWZDZmdfTG9nRGlyRmlsZTA0X0VuZEFkZAkgICggRGVmQ2ZnX0xvZ0RpckZpbGUwNF9TdGFBZGQgKyAJXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggRGVmQ2ZnX0xvZ0ZpbGUwNF9EaXJQYWdlU2l6ZSAqICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERFRl9GTEFTSF9QYWdlU2l6ZSAqCQkgCVwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmQ2ZnX0xvZ0Jsb2NrMDRfU3RhICkgKQkvL7zHwry94cr4tdjWtworLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorI2RlZmluZSBEZWZDZmdfTG9nRmlsZTA0X1N0YUFkZAkJKCBEZWZDZmdfTG9nRGlyRmlsZTA0X0VuZEFkZCApIAkvL7zHwry/qsq8tdjWtworI2RlZmluZSBEZWZDZmdfTG9nRmlsZTA0X0VuZEFkZAkJKCBEZWZDZmdfTG9nRmlsZTA0X1N0YUFkZCArIAkgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBEZWZDZmdfTG9nRmlsZTA0X1BhZ2VTaXplICogICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBERUZfRkxBU0hfUGFnZVNpemUgKgkJICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZkNmZ19Mb2dCbG9jazA0X1N0YSApICkJICAgIC8vvMfCvL3hyvi12Na3CisjaWYoIERlZkNmZ19Mb2dCbG9jazA0X1N0YSApCisjaWYoIERlZkNmZ19Mb2dGaWxlMDRfUGFnZVNpemUgPD0gRGVmQ2ZnX0xvZ0ZpbGUwNF9QYWdlUlZTICkKKyNlcnJvciAiNDq31sXktcS8x8K819y089ChsdjQ67Tz09rUpMH0vMfCvLTz0KEiCisjZW5kaWYKKyNlbmRpZgorLy8gCTwvZT4KKworLy8gCTxlPjA1LiBGTEFTSL270te8x8K8MDXH+AorI2RlZmluZSBEZWZDZmdfTG9nQmxvY2swNV9TdGEgICAgIDAKKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vICAgICAgPG8+vMfCvMS/wrzOxLz+y/m31sXktcTX3LTz0KEo0rMpIDwxLTgxOTY6MT48Iy8xPgorI2RlZmluZSBEZWZDZmdfTG9nRmlsZTA1X0RpclBhZ2VTaXplICAJICAJMTAKKy8vICAgICAgPG8+vMfCvM7EvP7L+bfWxeS1xNfctPPQoSjSsykgPDEtODE5NjoxPjwjLzE+CisjZGVmaW5lIERlZkNmZ19Mb2dGaWxlMDVfUGFnZVNpemUgIAkgIAkJMjAKKy8vICAgICAgPG8+vMfCvM7EvP7UpMH0tPPQoSjSsykgPDEtMTA6MT48Iy8xPgorI2RlZmluZSBEZWZDZmdfTG9nRmlsZTA1X1BhZ2VSVlMJICAJICAJMworLy8gICAgICA8bz7Dv9K7zPW8x8K8s6S2yCyw/MCoQ1JDKNfWvdopIDwzLTMwMDoxPjwjLzE+CisjZGVmaW5lIERlZkNmZ19Mb2dGaWxlMDVfUmVjTGVuZ3RoICAgIAkJNzAKKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyNkZWZpbmUgRGVmQ2ZnX0xvZ0RpckZpbGUwNV9TdGFBZGQJICAoIERlZkNmZ19Mb2dGaWxlMDRfRW5kQWRkICkgCS8vvMfCvL+qyry12Na3CisjZGVmaW5lIERlZkNmZ19Mb2dEaXJGaWxlMDVfRW5kQWRkCSAgKCBEZWZDZmdfTG9nRGlyRmlsZTA1X1N0YUFkZCArIAlcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBEZWZDZmdfTG9nRmlsZTA1X0RpclBhZ2VTaXplICogIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREVGX0ZMQVNIX1BhZ2VTaXplICoJCSAJXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZDZmdfTG9nQmxvY2swNV9TdGEgKSApCS8vvMfCvL3hyvi12Na3CisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjZGVmaW5lIERlZkNmZ19Mb2dGaWxlMDVfU3RhQWRkCQkoIERlZkNmZ19Mb2dEaXJGaWxlMDVfRW5kQWRkICkgCS8vvMfCvL+qyry12Na3CisjZGVmaW5lIERlZkNmZ19Mb2dGaWxlMDVfRW5kQWRkCQkoIERlZkNmZ19Mb2dGaWxlMDVfU3RhQWRkICsgCSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIERlZkNmZ19Mb2dGaWxlMDVfUGFnZVNpemUgKiAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERFRl9GTEFTSF9QYWdlU2l6ZSAqCQkgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmQ2ZnX0xvZ0Jsb2NrMDVfU3RhICkgKQkgICAgLy+8x8K8veHK+LXY1rcKKyNpZiggRGVmQ2ZnX0xvZ0Jsb2NrMDVfU3RhICkKKyNpZiggRGVmQ2ZnX0xvZ0ZpbGUwNV9QYWdlU2l6ZSA8PSBEZWZDZmdfTG9nRmlsZTA1X1BhZ2VSVlMgKQorI2Vycm9yICI1OrfWxeS1xLzHwrzX3LTz0KGx2NDrtPPT2tSkwfS8x8K8tPPQoSIKKyNlbmRpZgorI2VuZGlmCisvLyAJPC9lPgorCisvLyAJPGU+MDYuIEZMQVNIvbvS17zHwrwwNsf4CisjZGVmaW5lIERlZkNmZ19Mb2dCbG9jazA2X1N0YSAgICAgMAorLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gICAgICA8bz68x8K8xL/CvM7EvP7L+bfWxeS1xNfctPPQoSjSsykgPDEtODE5NjoxPjwjLzE+CisjZGVmaW5lIERlZkNmZ19Mb2dGaWxlMDZfRGlyUGFnZVNpemUgIAkgIAk2CisvLyAgICAgIDxvPrzHwrzOxLz+y/m31sXktcTX3LTz0KEo0rMpIDwxLTgxOTY6MT48Iy8xPgorI2RlZmluZSBEZWZDZmdfTG9nRmlsZTA2X1BhZ2VTaXplICAJICAJCTUKKy8vICAgICAgPG8+vMfCvM7EvP7UpMH0tPPQoSjSsykgPDEtMTA6MT48Iy8xPgorI2RlZmluZSBEZWZDZmdfTG9nRmlsZTA2X1BhZ2VSVlMJICAJICAJMworLy8gICAgICA8bz7Dv9K7zPW8x8K8s6S2yCyw/MCoQ1JDKNfWvdopIDwzLTMwMDoxPjwjLzE+CisjZGVmaW5lIERlZkNmZ19Mb2dGaWxlMDZfUmVjTGVuZ3RoICAgIAkJMTMwCisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjZGVmaW5lIERlZkNmZ19Mb2dEaXJGaWxlMDZfU3RhQWRkCSAgKCBEZWZDZmdfTG9nRmlsZTA1X0VuZEFkZCApIAkvL7zHwry/qsq8tdjWtworI2RlZmluZSBEZWZDZmdfTG9nRGlyRmlsZTA2X0VuZEFkZAkgICggRGVmQ2ZnX0xvZ0RpckZpbGUwNl9TdGFBZGQgKyAJXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggRGVmQ2ZnX0xvZ0ZpbGUwNl9EaXJQYWdlU2l6ZSAqICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERFRl9GTEFTSF9QYWdlU2l6ZSAqCQkgCVwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmQ2ZnX0xvZ0Jsb2NrMDZfU3RhICkgKQkvL7zHwry94cr4tdjWtworLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorI2RlZmluZSBEZWZDZmdfTG9nRmlsZTA2X1N0YUFkZAkJKCBEZWZDZmdfTG9nRGlyRmlsZTA2X0VuZEFkZCApIAkvL7zHwry/qsq8tdjWtworI2RlZmluZSBEZWZDZmdfTG9nRmlsZTA2X0VuZEFkZAkJKCBEZWZDZmdfTG9nRmlsZTA2X1N0YUFkZCArIAkgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBEZWZDZmdfTG9nRmlsZTA2X1BhZ2VTaXplICogICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBERUZfRkxBU0hfUGFnZVNpemUgKgkJICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZkNmZ19Mb2dCbG9jazA2X1N0YSApICkJICAgIC8vvMfCvL3hyvi12Na3CisjaWYoIERlZkNmZ19Mb2dCbG9jazA2X1N0YSApCisjaWYoIERlZkNmZ19Mb2dGaWxlMDZfUGFnZVNpemUgPD0gRGVmQ2ZnX0xvZ0ZpbGUwNl9QYWdlUlZTICkKKyNlcnJvciAiNjq31sXktcS8x8K819y089ChsdjQ67Tz09rUpMH0vMfCvLTz0KEiCisjZW5kaWYKKyNlbmRpZgorLy8gCTwvZT4KKworLy8gCTxlPjA3LiBGTEFTSL270te8x8K8MDfH+AorI2RlZmluZSBEZWZDZmdfTG9nQmxvY2swN19TdGEgICAgIDAKKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vICAgICAgPG8+vMfCvMS/wrzOxLz+y/m31sXktcTX3LTz0KEo0rMpIDwxLTgxOTY6MT48Iy8xPgorI2RlZmluZSBEZWZDZmdfTG9nRmlsZTA3X0RpclBhZ2VTaXplICAJICAJNQorLy8gICAgICA8bz68x8K8zsS8/sv5t9bF5LXE19y089ChKNKzKSA8MS04MTk2OjE+PCMvMT4KKyNkZWZpbmUgRGVmQ2ZnX0xvZ0ZpbGUwN19QYWdlU2l6ZSAgCSAgCQk2CisvLyAgICAgIDxvPrzHwrzOxLz+1KTB9LTz0KEo0rMpIDwxLTEwOjE+PCMvMT4KKyNkZWZpbmUgRGVmQ2ZnX0xvZ0ZpbGUwN19QYWdlUlZTCSAgCSAgCTMKKy8vICAgICAgPG8+w7/Su8z1vMfCvLOktsgssPzAqENSQyjX1r3aKSA8My0zMDA6MT48Iy8xPgorI2RlZmluZSBEZWZDZmdfTG9nRmlsZTA3X1JlY0xlbmd0aCAgICAJCTE0MAorLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorI2RlZmluZSBEZWZDZmdfTG9nRGlyRmlsZTA3X1N0YUFkZAkgICggRGVmQ2ZnX0xvZ0ZpbGUwNl9FbmRBZGQgKSAJLy+8x8K8v6rKvLXY1rcKKyNkZWZpbmUgRGVmQ2ZnX0xvZ0RpckZpbGUwN19FbmRBZGQJICAoIERlZkNmZ19Mb2dEaXJGaWxlMDdfU3RhQWRkICsgCVwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIERlZkNmZ19Mb2dGaWxlMDdfRGlyUGFnZVNpemUgKiAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBERUZfRkxBU0hfUGFnZVNpemUgKgkJIAlcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZkNmZ19Mb2dCbG9jazA3X1N0YSApICkJLy+8x8K8veHK+LXY1rcKKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyNkZWZpbmUgRGVmQ2ZnX0xvZ0ZpbGUwN19TdGFBZGQJCSggRGVmQ2ZnX0xvZ0RpckZpbGUwN19FbmRBZGQgKSAJLy+8x8K8v6rKvLXY1rcKKyNkZWZpbmUgRGVmQ2ZnX0xvZ0ZpbGUwN19FbmRBZGQJCSggRGVmQ2ZnX0xvZ0ZpbGUwN19TdGFBZGQgKyAJIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggRGVmQ2ZnX0xvZ0ZpbGUwN19QYWdlU2l6ZSAqICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREVGX0ZMQVNIX1BhZ2VTaXplICoJCSAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZDZmdfTG9nQmxvY2swN19TdGEgKSApCSAgICAvL7zHwry94cr4tdjWtworI2lmKCBEZWZDZmdfTG9nQmxvY2swN19TdGEgKQorI2lmKCBEZWZDZmdfTG9nRmlsZTA3X1BhZ2VTaXplIDw9IERlZkNmZ19Mb2dGaWxlMDdfUGFnZVJWUyApCisjZXJyb3IgIjc6t9bF5LXEvMfCvNfctPPQobHY0Ou089Pa1KTB9LzHwry089ChIgorI2VuZGlmCisjZW5kaWYKKy8vIAk8L2U+CisKKy8vIAk8ZT4wOC4gRkxBU0i9u9LXvMfCvDA4x/gKKyNkZWZpbmUgRGVmQ2ZnX0xvZ0Jsb2NrMDhfU3RhICAgICAwCisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyAgICAgIDxvPrzHwrzEv8K8zsS8/sv5t9bF5LXE19y089ChKNKzKSA8MS04MTk2OjE+PCMvMT4KKyNkZWZpbmUgRGVmQ2ZnX0xvZ0ZpbGUwOF9EaXJQYWdlU2l6ZSAgCSAgCTUKKy8vICAgICAgPG8+vMfCvM7EvP7L+bfWxeS1xNfctPPQoSjSsykgPDEtODE5NjoxPjwjLzE+CisjZGVmaW5lIERlZkNmZ19Mb2dGaWxlMDhfUGFnZVNpemUgIAkgIAkJMTAKKy8vICAgICAgPG8+vMfCvM7EvP7UpMH0tPPQoSjSsykgPDEtMTA6MT48Iy8xPgorI2RlZmluZSBEZWZDZmdfTG9nRmlsZTA4X1BhZ2VSVlMJICAJICAJNAorLy8gICAgICA8bz7Dv9K7zPW8x8K8s6S2yCyw/MCoQ1JDKNfWvdopIDwzLTMwMDoxPjwjLzE+CisjZGVmaW5lIERlZkNmZ19Mb2dGaWxlMDhfUmVjTGVuZ3RoICAgIAkJMjUwCisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjZGVmaW5lIERlZkNmZ19Mb2dEaXJGaWxlMDhfU3RhQWRkCSAgKCBEZWZDZmdfTG9nRmlsZTA3X0VuZEFkZCApIAkvL7zHwry/qsq8tdjWtworI2RlZmluZSBEZWZDZmdfTG9nRGlyRmlsZTA4X0VuZEFkZAkgICggRGVmQ2ZnX0xvZ0RpckZpbGUwOF9TdGFBZGQgKyAJXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggRGVmQ2ZnX0xvZ0ZpbGUwOF9EaXJQYWdlU2l6ZSAqICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERFRl9GTEFTSF9QYWdlU2l6ZSAqCQkgCVwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmQ2ZnX0xvZ0Jsb2NrMDhfU3RhICkgKQkvL7zHwry94cr4tdjWtworLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorI2RlZmluZSBEZWZDZmdfTG9nRmlsZTA4X1N0YUFkZAkJKCBEZWZDZmdfTG9nRGlyRmlsZTA4X0VuZEFkZCApIAkvL7zHwry/qsq8tdjWtworI2RlZmluZSBEZWZDZmdfTG9nRmlsZTA4X0VuZEFkZAkJKCBEZWZDZmdfTG9nRmlsZTA4X1N0YUFkZCArIAkgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBEZWZDZmdfTG9nRmlsZTA4X1BhZ2VTaXplICogICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBERUZfRkxBU0hfUGFnZVNpemUgKgkJICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZkNmZ19Mb2dCbG9jazA4X1N0YSApICkJICAgIC8vvMfCvL3hyvi12Na3CisjaWYoIERlZkNmZ19Mb2dCbG9jazA4X1N0YSApCisjaWYoIERlZkNmZ19Mb2dGaWxlMDhfUGFnZVNpemUgPD0gRGVmQ2ZnX0xvZ0ZpbGUwOF9QYWdlUlZTICkKKyNlcnJvciAiODq31sXktcS8x8K819y089ChsdjQ67Tz09rUpMH0vMfCvLTz0KEiCisjZW5kaWYKKyNlbmRpZgorLy8gCTwvZT4KKworLy8gCTxlPjA5LiBGTEFTSL270te8x8K8MDnH+AorI2RlZmluZSBEZWZDZmdfTG9nQmxvY2swOV9TdGEgICAgIDAKKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vICAgICAgPG8+vMfCvMS/wrzOxLz+y/m31sXktcTX3LTz0KEo0rMpIDwxLTgxOTY6MT48Iy8xPgorI2RlZmluZSBEZWZDZmdfTG9nRmlsZTA5X0RpclBhZ2VTaXplICAJICAJMworLy8gICAgICA8bz68x8K8zsS8/sv5t9bF5LXE19y089ChKNKzKSA8MS04MTk2OjE+PCMvMT4KKyNkZWZpbmUgRGVmQ2ZnX0xvZ0ZpbGUwOV9QYWdlU2l6ZSAgCSAgCQkxMAorLy8gICAgICA8bz68x8K8zsS8/tSkwfS089ChKNKzKSA8MS0xMDoxPjwjLzE+CisjZGVmaW5lIERlZkNmZ19Mb2dGaWxlMDlfUGFnZVJWUwkgIAkgIAk0CisvLyAgICAgIDxvPsO/0rvM9bzHwryzpLbILLD8wKhDUkMo19a92ikgPDMtMzAwOjE+PCMvMT4KKyNkZWZpbmUgRGVmQ2ZnX0xvZ0ZpbGUwOV9SZWNMZW5ndGggICAgCQkyODAKKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyNkZWZpbmUgRGVmQ2ZnX0xvZ0RpckZpbGUwOV9TdGFBZGQJICAoIERlZkNmZ19Mb2dGaWxlMDhfRW5kQWRkICkgCS8vvMfCvL+qyry12Na3CisjZGVmaW5lIERlZkNmZ19Mb2dEaXJGaWxlMDlfRW5kQWRkCSAgKCBEZWZDZmdfTG9nRGlyRmlsZTA5X1N0YUFkZCArIAlcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBEZWZDZmdfTG9nRmlsZTA5X0RpclBhZ2VTaXplICogIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREVGX0ZMQVNIX1BhZ2VTaXplICoJCSAJXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZDZmdfTG9nQmxvY2swOV9TdGEgKSApCS8vvMfCvL3hyvi12Na3CisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjZGVmaW5lIERlZkNmZ19Mb2dGaWxlMDlfU3RhQWRkCQkoIERlZkNmZ19Mb2dEaXJGaWxlMDlfRW5kQWRkICkgCS8vvMfCvL+qyry12Na3CisjZGVmaW5lIERlZkNmZ19Mb2dGaWxlMDlfRW5kQWRkCQkoIERlZkNmZ19Mb2dGaWxlMDlfU3RhQWRkICsgCSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIERlZkNmZ19Mb2dGaWxlMDlfUGFnZVNpemUgKiAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERFRl9GTEFTSF9QYWdlU2l6ZSAqCQkgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmQ2ZnX0xvZ0Jsb2NrMDlfU3RhICkgKQkgICAgLy+8x8K8veHK+LXY1rcKKyNpZiggRGVmQ2ZnX0xvZ0Jsb2NrMDlfU3RhICkKKyNpZiggRGVmQ2ZnX0xvZ0ZpbGUwOV9QYWdlU2l6ZSA8PSBEZWZDZmdfTG9nRmlsZTA5X1BhZ2VSVlMgKQorI2Vycm9yICI5OrfWxeS1xLzHwrzX3LTz0KGx2NDrtPPT2tSkwfS8x8K8tPPQoSIKKyNlbmRpZgorI2VuZGlmCisvLyAJPC9lPgorCisvLyAJPGU+MTAuIEZMQVNIvbvS17zHwrwxMMf4CisjZGVmaW5lIERlZkNmZ19Mb2dCbG9jazEwX1N0YSAgICAgMAorLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gICAgICA8bz68x8K8xL/CvM7EvP7L+bfWxeS1xNfctPPQoSjSsykgPDEtODE5NjoxPjwjLzE+CisjZGVmaW5lIERlZkNmZ19Mb2dGaWxlMTBfRGlyUGFnZVNpemUgIAkgIAkzCisvLyAgICAgIDxvPrzHwrzOxLz+y/m31sXktcTX3LTz0KEo0rMpIDwxLTgxOTY6MT48Iy8xPgorI2RlZmluZSBEZWZDZmdfTG9nRmlsZTEwX1BhZ2VTaXplICAJICAJCTEwCisvLyAgICAgIDxvPrzHwrzOxLz+1KTB9LTz0KEo0rMpIDwxLTEwOjE+PCMvMT4KKyNkZWZpbmUgRGVmQ2ZnX0xvZ0ZpbGUxMF9QYWdlUlZTCSAgCSAgCTMKKy8vICAgICAgPG8+w7/Su8z1vMfCvLOktsgssPzAqENSQyjX1r3aKSA8My0zMDA6MT48Iy8xPgorI2RlZmluZSBEZWZDZmdfTG9nRmlsZTEwX1JlY0xlbmd0aCAgICAJCTMwMAorLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorI2RlZmluZSBEZWZDZmdfTG9nRGlyRmlsZTEwX1N0YUFkZAkgICggRGVmQ2ZnX0xvZ0ZpbGUwOV9FbmRBZGQgKSAJLy+8x8K8v6rKvLXY1rcKKyNkZWZpbmUgRGVmQ2ZnX0xvZ0RpckZpbGUxMF9FbmRBZGQJICAoIERlZkNmZ19Mb2dEaXJGaWxlMTBfU3RhQWRkICsgCVwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIERlZkNmZ19Mb2dGaWxlMTBfRGlyUGFnZVNpemUgKiAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBERUZfRkxBU0hfUGFnZVNpemUgKgkJIAlcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZkNmZ19Mb2dCbG9jazEwX1N0YSApICkJLy+8x8K8veHK+LXY1rcKKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyNkZWZpbmUgRGVmQ2ZnX0xvZ0ZpbGUxMF9TdGFBZGQJCSggRGVmQ2ZnX0xvZ0RpckZpbGUxMF9FbmRBZGQgKSAJLy+8x8K8v6rKvLXY1rcKKyNkZWZpbmUgRGVmQ2ZnX0xvZ0ZpbGUxMF9FbmRBZGQJCSggRGVmQ2ZnX0xvZ0ZpbGUxMF9TdGFBZGQgKyAJIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggRGVmQ2ZnX0xvZ0ZpbGUxMF9QYWdlU2l6ZSAqICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREVGX0ZMQVNIX1BhZ2VTaXplICoJCSAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZDZmdfTG9nQmxvY2sxMF9TdGEgKSApCSAgICAvL7zHwry94cr4tdjWtworI2lmKCBEZWZDZmdfTG9nQmxvY2sxMF9TdGEgKQorI2lmKCBEZWZDZmdfTG9nRmlsZTEwX1BhZ2VTaXplIDw9IERlZkNmZ19Mb2dGaWxlMTBfUGFnZVJWUyApCisjZXJyb3IgIjEwOrfWxeS1xLzHwrzX3LTz0KGx2NDrtPPT2tSkwfS8x8K8tPPQoSIKKyNlbmRpZgorI2VuZGlmCisvLyAJPC9lPgorI2RlZmluZSBEZWZDZmdfTG9nRmlsZUVuZEFkZCAgICAgICAgICAgICAoIERlZkNmZ19Mb2dGaWxlMTBfRW5kQWRkICkKKy8vRkxBU0i9u9LXvMfCvLTmtKK1xL3hyvi12Na3CisvLyA8L2U+CisKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Pj4gKDYpIDw8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyA8ZT42LiBGTEFTSLraw/u1pcf4xeTWwworLy8gPGk+IEVuYWJsZSBvciBkaXNhYmxlILraw/u1pcf4xeTWwworI2RlZmluZSBCTEFDS0xJU1RfQ0ZHX0VOQUJMRQkJMQorCisjZGVmaW5lCUJMQUNLTElTVF9TVEFSVF9BRERSRVNTCQkoIERlZkNmZ19Mb2dGaWxlRW5kQWRkICkKKy8vutrD+7WltOa0or+qyry12Na3CisjZGVmaW5lIEZMQVNIX1BBR0VfU0laRSAgICAgICAgICAgICAoIERFRl9GTEFTSF9QYWdlU2l6ZSApCisKKy8vPGU+MS4gtdrSu7raw/u1pcf4xeTWwworLy8gPGk+IEVuYWJsZSBvciBkaXNhYmxlILraw/u1pcf4v+nF5NbDo6jDv7/putrD+7Wlx/iw/Lqs09C24MnZv+lGTEFTSL/po6kKKyNkZWZpbmUgQkxBQ0tMSVNUMV9DRkdfRU5BQkxFCQkxCisKKworLy8gICA8bz662sP7taXEv8K8zsS8/sv5t9bF5LXE19y089ChKNKzKSA8MS04MTk2OjE+PCMvMT4KKyNkZWZpbmUgRGVmQ2ZnX0Jsa0ZpbGUwMV9EaXJQYWdlU2l6ZSAgCSAgCTIwCisKKyNkZWZpbmUgRGVmQ2ZnX0JsYWNrRmlsZTAxX1N0YUFkZAkJKCBCTEFDS0xJU1RfU1RBUlRfQUREUkVTUyApIAkJLy+62sP7MbWlv6rKvLXY1rcKKyNkZWZpbmUgRGVmQ2ZnX0JsYWNrRmlsZTAxX0VuZEFkZAkJRGVmQ2ZnX0JsYWNrRmlsZTAxX1N0YUFkZCArICggRkxBU0hfUEFHRV9TSVpFICAgICAgICAqIAkgXAorICAgIEJMQUNLTElTVDFfQ0ZHX0VOQUJMRSAgKiAJIFwKKyAgICBEZWZDZmdfQmxrRmlsZTAxX0RpclBhZ2VTaXplICkKKy8vutrD+zG1pb3hyvi12Na3CisjZGVmaW5lCUJMQUNLTElTVDFfU1RBUlRfQUREUkVTUwlEZWZDZmdfQmxhY2tGaWxlMDFfRW5kQWRkCisKKy8vCisvLyAgIDxvPsO/uPa62sP7taW/6bD8uqxGbGFzaL/p0rPK/SAgPDE9PiAx0rMgPDI9PiAy0rMgPDM9PiAz0rMgPDQ9PiA00rMKKy8vCQkJCQkJCQk8NT0+IDXSsyAgPDY9PiA20rMgPDc9PiA30rMKKy8vICAgPGk+ILao0uVGTEFTSLXE09DQp8rZw/yjrNOm08PW0NLUtMvAtL340NDK2cP8vMbL4worLy8gICA8aT4gxKzIzzogMTAKKyNkZWZpbmUgQkxBQ0tMSVNUMV9QQUdFX1NJWkUJCTEKKworLy8gICAgICAgICA8bz662sP7taXH+Mv5t9bF5LXEutrD+7Wlv+nK/SA8Ni0xMDAwOjI+PCMvMT4KKy8vICAgICAgICAgPGk+utrD+7Wlx/jL+bfWxeS1xLTz0KEKKy8vICAgICAgICAgPGk+xKzIz6O6ODAwCisjZGVmaW5lIEJMQUNLTElTVDFfU0VDVElPTl9TSVpFCQkyMTAKKworLy8gICAgICAgICA8bz7Dv7j2utrD+7WltcSzpLbIIDwzPT4gM9fWvdogPDQ9PiA019a92iA8NT0+IDXX1r3aCisvLwkJCQkJCQkgICA8Nj0+IDbX1r3aIDw4PT4gONfWvdoKKy8vICAgICAgICAgPGk+utrD+7Wlx/jK/cG/o6zAtNOm08O8uLj2utrD+7WlCisvLyAgICAgICAgIDxpPsSsyM+jujYKKyNkZWZpbmUgQkxBQ0tMSVNUMV9MRU5HVEgJCQk0CisKKy8vICAgICAgICAgPG8+utrD+7Wlsci9z7OktsggPDM9PiAz19a92iA8ND0+IDTX1r3aIDw1PT4gNdfWvdoKKy8vCQkJCQkJCSAgIDw2PT4gNtfWvdogPDc9PiA319a92iA8OD0+IDjX1r3aCisvLyAgICAgICAgIDxpPrraw/u1pcf4yv3Bv6OswLTTptPDvLi49rraw/u1pQorLy8gICAgICAgICA8aT7ErMjPo7o2CisjZGVmaW5lIEJMQUNLTElTVDFfQ09NUEFSRV9MRU5HVEgJNAorCisvLyAgICAgICAgIDxvPrraw/u1pbbUxuu3vbeoIDwwPT4g1/O21MbrIDwxPT4g09K21MbrCisvLyAgICAgICAgIDxpPrraw/u1pcf4yv3Bv6OswLTTptPDvLi49rraw/u1pQorLy8gICAgICAgICA8aT7ErMjPo7oxCisjZGVmaW5lCUJMQUNLTElTVDFfRkxVU0hfTUVUSE9ECQkxCisKKy8vIDwvZT4KKworCisvLzxlPjIuILXatv662sP7taXH+MXk1sMKKy8vIDxpPiBFbmFibGUgb3IgZGlzYWJsZSC62sP7taXH+L/pxeTWw6Oow7+/6braw/u1pcf4sPy6rNPQtuDJ2b/pRkxBU0i/6aOpCisjZGVmaW5lIEJMQUNLTElTVDJfQ0ZHX0VOQUJMRQkJMQorCisKKy8vCisvLyAgIDxvPrraw/u1pcS/wrzOxLz+y/m31sXktcTX3LTz0KEo0rMpIDwxLTgxOTY6MT48Iy8xPgorI2RlZmluZSBEZWZDZmdfQmxrRmlsZTAyX0RpclBhZ2VTaXplICAJICAJNgorCisjZGVmaW5lIERlZkNmZ19CbGFja0ZpbGUwMl9TdGFBZGQJCURlZkNmZ19CbGFja0ZpbGUwMV9FbmRBZGQgKyAoIEZMQVNIX1BBR0VfU0laRSAgICAgICAqIAkgXAorICAgIEJMQUNLTElTVDFfQ0ZHX0VOQUJMRSAqIAkgXAorICAgIEJMQUNLTElTVDFfUEFHRV9TSVpFICAqICAgIFwKKyAgICBCTEFDS0xJU1QxX1NFQ1RJT05fU0laRSApCisvL7raw/sxtaW/qsq8tdjWtworI2RlZmluZSBEZWZDZmdfQmxhY2tGaWxlMDJfRW5kQWRkCQlEZWZDZmdfQmxhY2tGaWxlMDJfU3RhQWRkICsgKCBGTEFTSF9QQUdFX1NJWkUgICAgICAgKiAJIFwKKyAgICBCTEFDS0xJU1QyX0NGR19FTkFCTEUgKiAJIFwKKyAgICBEZWZDZmdfQmxrRmlsZTAyX0RpclBhZ2VTaXplICkKKy8vutrD+zG1pb3hyvi12Na3CisjZGVmaW5lCUJMQUNLTElTVDJfU1RBUlRfQUREUkVTUwlEZWZDZmdfQmxhY2tGaWxlMDJfRW5kQWRkCisKKworCisvLyAgIDxvPsO/uPa62sP7taW/6bD8uqxGbGFzaL/pyv3BvyA8MT0+IDHSsyA8Mj0+IDLSsyA8Mz0+IDPSsyA8ND0+IDTSsworLy8JCQkJCQkJCTw1PT4gNdKzICA8Nj0+IDbSsyA8Nz0+IDfSsworLy8gICA8aT4gtqjS5UZMQVNItcTT0NCnytnD/KOs06bTw9bQ0tS0y8C0vfjQ0MrZw/y8xsvjCisvLyAgIDxpPiDErMjPOiAxMAorI2RlZmluZSBCTEFDS0xJU1QyX1BBR0VfU0laRQkJMQorCisvLyAgICAgICAgIDxvPrraw/u1pcf4y/m31sXktcS62sP7taW/6cr9IDw2LTEwMDA6Mj48Iy8xPgorLy8gICAgICAgICA8aT662sP7taXH+Mv5t9bF5LXEtPPQoQorLy8gICAgICAgICA8aT7ErMjPo7o2CisjZGVmaW5lIEJMQUNLTElTVDJfU0VDVElPTl9TSVpFCQkxMAorCisvLyAgICAgICAgIDxvPsO/uPa62sP7taW1xLOktsggPDI9PiAy19a92iA8Mz0+IDPX1r3aIDw0PT4gNNfWvdogPDU9PiA119a92gorLy8JCQkJCQkJICAgPDY9PiA219a92iA8Nz0+IDfX1r3aIDw4PT4gONfWvdoKKy8vICAgICAgICAgPGk+utrD+7Wlx/jK/cG/o6zAtNOm08O8uLj2utrD+7WlCisvLyAgICAgICAgIDxpPsSsyM+jujYKKyNkZWZpbmUgQkxBQ0tMSVNUMl9MRU5HVEgJCQkyCisKKy8vICAgICAgICAgPG8+utrD+7Wlsci9z7OktsggPDI9PiAy19a92iA8Mz0+IDPX1r3aIDw0PT4gNNfWvdogPDU9PiA119a92gorLy8JCQkJCQkJICAgPDY9PiA219a92iA8Nz0+IDfX1r3aIDw4PT4gONfWvdoKKy8vICAgICAgICAgPGk+utrD+7Wlx/jK/cG/o6zAtNOm08O8uLj2utrD+7WlCisvLyAgICAgICAgIDxpPsSsyM+jujYKKyNkZWZpbmUgQkxBQ0tMSVNUMl9DT01QQVJFX0xFTkdUSAkyCisKKy8vICAgICAgICAgPG8+utrD+7WlttTG67e9t6ggPDA9PiDX87bUxusgPDE9PiDT0rbUxusKKy8vICAgICAgICAgPGk+utrD+7Wlx/jK/cG/o6zAtNOm08O8uLj2utrD+7WlCisvLyAgICAgICAgIDxpPsSsyM+jujEKKyNkZWZpbmUJQkxBQ0tMSVNUMl9GTFVTSF9NRVRIT0QJCTEKKworLy8gPC9lPgorCisvLzxlPjMuILXayP262sP7taXH+MXk1sMKKy8vIDxpPiBFbmFibGUgb3IgZGlzYWJsZSC62sP7taXH+L/pxeTWw6Oow7+/6braw/u1pcf4sPy6rNPQtuDJ2b/pRkxBU0i/6aOpCisjZGVmaW5lIEJMQUNLTElTVDNfQ0ZHX0VOQUJMRQkJMAorCisvLworLy8gICA8bz662sP7taXEv8K8zsS8/sv5t9bF5LXE19y089ChKNKzKSA8MS04MTk2OjE+PCMvMT4KKyNkZWZpbmUgRGVmQ2ZnX0Jsa0ZpbGUwM19EaXJQYWdlU2l6ZSAgCSAgCTMKKworI2RlZmluZSBEZWZDZmdfQmxhY2tGaWxlMDNfU3RhQWRkCQlEZWZDZmdfQmxhY2tGaWxlMDJfRW5kQWRkICsgKCBGTEFTSF9QQUdFX1NJWkUgICAgICAgKiAJIFwKKyAgICBCTEFDS0xJU1QyX0NGR19FTkFCTEUgKiAJIFwKKyAgICBCTEFDS0xJU1QyX1BBR0VfU0laRSAgKiAgICBcCisgICAgQkxBQ0tMSVNUMl9TRUNUSU9OX1NJWkUgKQorLy+62sP7MbWlv6rKvLXY1rcKKyNkZWZpbmUgRGVmQ2ZnX0JsYWNrRmlsZTAzX0VuZEFkZAkJRGVmQ2ZnX0JsYWNrRmlsZTAzX1N0YUFkZCArICggRkxBU0hfUEFHRV9TSVpFICAgICAgICogCSBcCisgICAgQkxBQ0tMSVNUM19DRkdfRU5BQkxFICogCSBcCisgICAgRGVmQ2ZnX0Jsa0ZpbGUwM19EaXJQYWdlU2l6ZSApCisvL7raw/sxtaW94cr4tdjWtworI2RlZmluZQlCTEFDS0xJU1QzX1NUQVJUX0FERFJFU1MJRGVmQ2ZnX0JsYWNrRmlsZTAzX0VuZEFkZAorCisvLyAgIDxvPsO/uPa62sP7taW/6bD8uqxGbGFzaL/pyv3BvyA8ND0+IDS/6SA8NT0+IDW/6SA8Nj0+IDa/6SA8Nz0+IDe/6QorLy8JCQkJCQkJCTw4PT4gOL/pICA8OT0+IDm/6SA8MTA9PiAxML/pCisvLyAgIDxpPiC2qNLlRkxBU0i1xNPQ0KfK2cP8o6zTptPD1tDS1LTLwLS9+NDQytnD/LzGy+MKKy8vICAgPGk+IMSsyM86IDEwCisjZGVmaW5lIEJMQUNLTElTVDNfUEFHRV9TSVpFCQkxMAorCisvLyAgICAgICAgIDxvPrraw/u1pcf4y/m31sXktcS62sP7taW/6bTz0KEgPDYtMTAwMDoyPjwjLzE+CisvLyAgICAgICAgIDxpPrraw/u1pcf4y/m31sXktcS089ChCisvLyAgICAgICAgIDxpPsSsyM+jujYKKyNkZWZpbmUgQkxBQ0tMSVNUM19TRUNUSU9OX1NJWkUJCTgKKworLy8gICAgICAgICA8bz7Dv7j2utrD+7WltcSzpLbIIDwzPT4gM9fWvdogPDQ9PiA019a92iA8NT0+IDXX1r3aCisvLwkJCQkJCQkgICA8Nj0+IDbX1r3aIDw3PT4gN9fWvdogPDg9PiA419a92gorLy8gICAgICAgICA8aT662sP7taXH+Mr9wb+jrMC006bTw7y4uPa62sP7taUKKy8vICAgICAgICAgPGk+xKzIz6O6NgorI2RlZmluZSBCTEFDS0xJU1QzX0xFTkdUSAkJCTQKKworLy8gICAgICAgICA8bz662sP7taWxyL3Ps6S2yCA8Mz0+IDPX1r3aIDw0PT4gNNfWvdogPDU9PiA119a92gorLy8JCQkJCQkJICAgPDY9PiA219a92iA8Nz0+IDfX1r3aIDw4PT4gONfWvdoKKy8vICAgICAgICAgPGk+utrD+7Wlx/jK/cG/o6zAtNOm08O8uLj2utrD+7WlCisvLyAgICAgICAgIDxpPsSsyM+jujYKKyNkZWZpbmUgQkxBQ0tMSVNUM19DT01QQVJFX0xFTkdUSAk0CisKKy8vICAgICAgICAgPG8+utrD+7WlttTG67e9t6ggPDA9PiDX87bUxusgPDE9PiDT0rbUxusKKy8vICAgICAgICAgPGk+utrD+7Wlx/jK/cG/o6zAtNOm08O8uLj2utrD+7WlCisvLyAgICAgICAgIDxpPsSsyM+jujEKKyNkZWZpbmUJQkxBQ0tMSVNUM19GTFVTSF9NRVRIT0QJCTEKKworLy8gPC9lPgorCisvLzxlPjQuILXay8S62sP7taXH+MXk1sMKKy8vIDxpPiBFbmFibGUgb3IgZGlzYWJsZSC62sP7taXH+L/pxeTWw6Oow7+/6braw/u1pcf4sPy6rNPQtuDJ2b/pRkxBU0i/6aOpCisjZGVmaW5lIEJMQUNLTElTVDRfQ0ZHX0VOQUJMRQkJMAorCisvLworLy8gICA8bz662sP7taXEv8K8zsS8/sv5t9bF5LXE19y089ChKNKzKSA8MS04MTk2OjE+PCMvMT4KKyNkZWZpbmUgRGVmQ2ZnX0Jsa0ZpbGUwNF9EaXJQYWdlU2l6ZSAgCSAgCTMKKworI2RlZmluZSBEZWZDZmdfQmxhY2tGaWxlMDRfU3RhQWRkCQlEZWZDZmdfQmxhY2tGaWxlMDNfRW5kQWRkICsgKCBGTEFTSF9QQUdFX1NJWkUgICAgICAgKiAJIFwKKyAgICBCTEFDS0xJU1QzX0NGR19FTkFCTEUgKiAJIFwKKyAgICBCTEFDS0xJU1QzX1BBR0VfU0laRSAgKiAgICBcCisgICAgQkxBQ0tMSVNUM19TRUNUSU9OX1NJWkUgKQorLy+62sP7MbWlv6rKvLXY1rcKKyNkZWZpbmUgRGVmQ2ZnX0JsYWNrRmlsZTA0X0VuZEFkZAkJRGVmQ2ZnX0JsYWNrRmlsZTA0X1N0YUFkZCArICggRkxBU0hfUEFHRV9TSVpFICAgICAgICogCSBcCisgICAgQkxBQ0tMSVNUNF9DRkdfRU5BQkxFICogCSBcCisgICAgRGVmQ2ZnX0Jsa0ZpbGUwNF9EaXJQYWdlU2l6ZSApCisvL7raw/sxtaW94cr4tdjWtworI2RlZmluZQlCTEFDS0xJU1Q0X1NUQVJUX0FERFJFU1MJRGVmQ2ZnX0JsYWNrRmlsZTA0X0VuZEFkZAorCisvLyAgIDxvPsO/uPa62sP7taW/6bD8uqxGbGFzaL/pyv3BvyA8ND0+IDS/6SA8NT0+IDW/6SA8Nj0+IDa/6SA8Nz0+IDe/6QorLy8JCQkJCQkJCTw4PT4gOL/pICA8OT0+IDm/6SA8MTA9PiAxML/pCisvLyAgIDxpPiC2qNLlRkxBU0i1xNPQ0KfK2cP8o6zTptPD1tDS1LTLwLS9+NDQytnD/LzGy+MKKy8vICAgPGk+IMSsyM86IDEwCisjZGVmaW5lIEJMQUNLTElTVDRfUEFHRV9TSVpFIAkJMTAKKworLy8gICAgICAgICA8bz662sP7taXH+Mv5t9bF5LXEutrD+7Wlv+m089ChIDw2LTEwMDA6Mj48Iy8xPgorLy8gICAgICAgICA8aT662sP7taXH+Mv5t9bF5LXEtPPQoQorLy8gICAgICAgICA8aT7ErMjPo7o2CisjZGVmaW5lIEJMQUNLTElTVDRfU0VDVElPTl9TSVpFCQk4CisKKy8vICAgICAgICAgPG8+w7+49rraw/u1pbXEs6S2yCA8Mz0+IDPX1r3aIDw0PT4gNNfWvdogPDU9PiA119a92gorLy8JCQkJCQkJICAgPDY9PiA219a92iA8Nz0+IDfX1r3aIDw4PT4gONfWvdoKKy8vICAgICAgICAgPGk+utrD+7Wlx/jK/cG/o6zAtNOm08O8uLj2utrD+7WlCisvLyAgICAgICAgIDxpPsSsyM+jujYKKyNkZWZpbmUgQkxBQ0tMSVNUNF9MRU5HVEgJCQk0CisKKy8vICAgICAgICAgPG8+utrD+7Wlsci9z7OktsggPDM9PiAz19a92iA8ND0+IDTX1r3aIDw1PT4gNdfWvdoKKy8vCQkJCQkJCSAgIDw2PT4gNtfWvdogPDc9PiA319a92iA8OD0+IDjX1r3aCisvLyAgICAgICAgIDxpPrraw/u1pcf4yv3Bv6OswLTTptPDvLi49rraw/u1pQorLy8gICAgICAgICA8aT7ErMjPo7o2CisjZGVmaW5lIEJMQUNLTElTVDRfQ09NUEFSRV9MRU5HVEgJNAorCisvLyAgICAgICAgIDxvPrraw/u1pbbUxuu3vbeoIDwwPT4g1/O21MbrIDwxPT4g09K21MbrCisvLyAgICAgICAgIDxpPrraw/u1pcf4yv3Bv6OswLTTptPDvLi49rraw/u1pQorLy8gICAgICAgICA8aT7ErMjPo7oxCisjZGVmaW5lCUJMQUNLTElTVDRfRkxVU0hfTUVUSE9ECQkxCisKKy8vIDwvZT4KKworLy88ZT41LiC12s7lutrD+7Wlx/jF5NbDCisvLyA8aT4gRW5hYmxlIG9yIGRpc2FibGUgutrD+7Wlx/i/6cXk1sOjqMO/v+m62sP7taXH+LD8uqzT0Lbgydm/6UZMQVNIv+mjqQorI2RlZmluZSBCTEFDS0xJU1Q1X0NGR19FTkFCTEUJCTAKKworLy8KKy8vICAgPG8+utrD+7WlxL/CvM7EvP7L+bfWxeS1xNfctPPQoSjSsykgPDEtODE5NjoxPjwjLzE+CisjZGVmaW5lIERlZkNmZ19CbGtGaWxlMDVfRGlyUGFnZVNpemUgIAkgIAkzCisKKyNkZWZpbmUgRGVmQ2ZnX0JsYWNrRmlsZTA1X1N0YUFkZAkJRGVmQ2ZnX0JsYWNrRmlsZTA0X0VuZEFkZCArICggRkxBU0hfUEFHRV9TSVpFICAgICAgICogCSBcCisgICAgQkxBQ0tMSVNUNF9DRkdfRU5BQkxFICogCSBcCisgICAgQkxBQ0tMSVNUNF9QQUdFX1NJWkUgICogICAgXAorICAgIEJMQUNLTElTVDRfU0VDVElPTl9TSVpFICkKKy8vutrD+zG1pb+qyry12Na3CisjZGVmaW5lIERlZkNmZ19CbGFja0ZpbGUwNV9FbmRBZGQJCURlZkNmZ19CbGFja0ZpbGUwNV9TdGFBZGQgKyAoIEZMQVNIX1BBR0VfU0laRSAgICAgICAqIAkgXAorICAgIEJMQUNLTElTVDVfQ0ZHX0VOQUJMRSAqIAkgXAorICAgIERlZkNmZ19CbGtGaWxlMDVfRGlyUGFnZVNpemUgKQorLy+62sP7MbWlveHK+LXY1rcKKyNkZWZpbmUJQkxBQ0tMSVNUNV9TVEFSVF9BRERSRVNTCURlZkNmZ19CbGFja0ZpbGUwNV9FbmRBZGQKKworLy8gICA8bz7Dv7j2utrD+7Wlv+mw/LqsRmxhc2i/6cr9wb8gPDI9PiAyv+kgPDQ9PiA0v+kgPDY9PiA2v+kKKy8vCQkJCQkJCQk8OD0+IDi/6SA8MTA9PiAxML/pIDwxMj0+IDEyv+kKKy8vCQkJCQkJCQk8MTQ9PiAxNL/pIDwxNj0+IDE2v+kgPDE4PT4gMTi/6QorLy8JCQkJCQkJCTwyMD0+IDIwv+kKKy8vCQkJCQk8NDA5Nj0+IDQwOTZCeXRlcyA8NjU1MzY9PiA2NEtCeXRlcworLy8gICA8aT4gtqjS5UZMQVNItcTT0NCnytnD/KOs06bTw9bQ0tS0y8C0vfjQ0MrZw/y8xsvjCisvLyAgIDxpPiDErMjPOiAxMAorI2RlZmluZSBCTEFDS0xJU1Q1X1BBR0VfU0laRQkJMTAKKworLy8gICAgICAgICA8bz662sP7taXH+Mv5t9bF5LXEutrD+7Wlv+m089ChIDw2LTEwMDA6Mj48Iy8xPgorLy8gICAgICAgICA8aT662sP7taXH+Mv5t9bF5LXEtPPQoQorLy8gICAgICAgICA8aT7ErMjPo7o2CisjZGVmaW5lIEJMQUNLTElTVDVfU0VDVElPTl9TSVpFCQk4CisKKy8vICAgICAgICAgPG8+w7+49rraw/u1pbXEs6S2yCA8Mz0+IDPX1r3aIDw0PT4gNNfWvdogPDU9PiA119a92gorLy8JCQkJCQkJICAgPDY9PiA219a92iA8Nz0+IDfX1r3aIDw4PT4gONfWvdoKKy8vICAgICAgICAgPGk+utrD+7Wlx/jK/cG/o6zAtNOm08O8uLj2utrD+7WlCisvLyAgICAgICAgIDxpPsSsyM+jujYKKyNkZWZpbmUgQkxBQ0tMSVNUNV9MRU5HVEgJCQk0CisKKy8vICAgICAgICAgPG8+utrD+7Wlsci9z7OktsggPDM9PiAz19a92iA8ND0+IDTX1r3aIDw1PT4gNdfWvdoKKy8vCQkJCQkJCSAgIDw2PT4gNtfWvdogPDc9PiA319a92iA8OD0+IDjX1r3aCisvLyAgICAgICAgIDxpPrraw/u1pcf4yv3Bv6OswLTTptPDvLi49rraw/u1pQorLy8gICAgICAgICA8aT7ErMjPo7o2CisjZGVmaW5lIEJMQUNLTElTVDVfQ09NUEFSRV9MRU5HVEgJNAorCisvLyAgICAgICAgIDxvPrraw/u1pbbUxuu3vbeoIDwwPT4g1/O21MbrIDwxPT4g09K21MbrCisvLyAgICAgICAgIDxpPrraw/u1pcf4yv3Bv6OswLTTptPDvLi49rraw/u1pQorLy8gICAgICAgICA8aT7ErMjPo7oxCisjZGVmaW5lCUJMQUNLTElTVDVfRkxVU0hfTUVUSE9ECQkxCisKKy8vIDwvZT4KKworI2RlZmluZQlCTEFDS0xJU1RfRU5EX0FERFJFU1MJCURlZkNmZ19CbGFja0ZpbGUwNV9FbmRBZGQgKyAoIEZMQVNIX1BBR0VfU0laRSAgICAgICAqIAkgXAorICAgIEJMQUNLTElTVDVfQ0ZHX0VOQUJMRSAqIAkgXAorICAgIEJMQUNLTElTVDVfUEFHRV9TSVpFICAqICAgIFwKKyAgICBCTEFDS0xJU1Q1X1NFQ1RJT05fU0laRSApCisKKy8vutrD+7WltOa0or3hyvi12Na3CisKKworCisvLyA8L2U+CisKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Pj4gKDcpIDw8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Pj4gKGVuZCkgPDw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy8vIDwvZT4KKy8vLS0tLS0tLS0tLS0tLSA8PDwgZW5kIG9mIGNvbmZpZ3VyYXRpb24gc2VjdGlvbiA+Pj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBLZWlsILLLtaXF5NbDveHK+AorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgILioINb6IMXkINbDCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KKy8vPT09PT09PT0+PkZMQVNIIMqj0+AKKyNkZWZpbmUgIERFRl9GTEFTSF9SZXNTdGFydEFkZCAgICAoIEJMQUNLTElTVF9FTkRfQUREUkVTUyApCisvL8qj0+BGTEFTSL/VvOS1xL+qyry12Na3CisjZGVmaW5lICBERUZfRkxBU0hfUmVzRW5kQWRkICAgICAgKCBERUZfRkxBU0hfUGFnZXMgKiBERUZfRkxBU0hfUGFnZVNpemUgKQorLy/Ko9PgRkxBU0i/1bzktcS94cr4tdjWtworI2RlZmluZSAgREVGX0ZMQVNIX1Jlc1NpemUgCSAgICggREVGX0ZMQVNIX1Jlc0VuZEFkZCAtIERFRl9GTEFTSF9SZXNTdGFydEFkZCApCisvL9PDu6e/ydLUyrnTw9fWvdrK/QorCisKKy8vPT09PT09PT0+PtfutPO8x8K8s6S2yAorI2RlZmluZSBERUZfRkxBU0hfTWF4UmVjTGVuZ3RoCSggRGVmQ2ZnX0xvZ0ZpbGUwMV9SZWNMZW5ndGggKiBEZWZDZmdfTG9nQmxvY2swMV9TdGEgKQorCisjaWYoIERFRl9GTEFTSF9NYXhSZWNMZW5ndGggPCAoIERlZkNmZ19Mb2dGaWxlMDJfUmVjTGVuZ3RoICogRGVmQ2ZnX0xvZ0Jsb2NrMDJfU3RhICkgKQorI3VuZGVmCURFRl9GTEFTSF9NYXhSZWNMZW5ndGgKKyNkZWZpbmUgREVGX0ZMQVNIX01heFJlY0xlbmd0aAkoIERlZkNmZ19Mb2dGaWxlMDJfUmVjTGVuZ3RoICogRGVmQ2ZnX0xvZ0Jsb2NrMDJfU3RhICkKKyNlbmRpZgorCisjaWYoIERFRl9GTEFTSF9NYXhSZWNMZW5ndGggPCAoIERlZkNmZ19Mb2dGaWxlMDNfUmVjTGVuZ3RoICogRGVmQ2ZnX0xvZ0Jsb2NrMDNfU3RhICkgKQorI3VuZGVmCURFRl9GTEFTSF9NYXhSZWNMZW5ndGgKKyNkZWZpbmUgREVGX0ZMQVNIX01heFJlY0xlbmd0aAkoIERlZkNmZ19Mb2dGaWxlMDNfUmVjTGVuZ3RoICogRGVmQ2ZnX0xvZ0Jsb2NrMDNfU3RhICkKKyNlbmRpZgorCisjaWYoIERFRl9GTEFTSF9NYXhSZWNMZW5ndGggPCAoIERlZkNmZ19Mb2dGaWxlMDRfUmVjTGVuZ3RoICogRGVmQ2ZnX0xvZ0Jsb2NrMDRfU3RhICkgKQorI3VuZGVmCURFRl9GTEFTSF9NYXhSZWNMZW5ndGgKKyNkZWZpbmUgREVGX0ZMQVNIX01heFJlY0xlbmd0aAkoIERlZkNmZ19Mb2dGaWxlMDRfUmVjTGVuZ3RoICogRGVmQ2ZnX0xvZ0Jsb2NrMDRfU3RhICkKKyNlbmRpZgorCisjaWYoIERFRl9GTEFTSF9NYXhSZWNMZW5ndGggPCAoIERlZkNmZ19Mb2dGaWxlMDVfUmVjTGVuZ3RoICogRGVmQ2ZnX0xvZ0Jsb2NrMDVfU3RhICkgKQorI3VuZGVmCURFRl9GTEFTSF9NYXhSZWNMZW5ndGgKKyNkZWZpbmUgREVGX0ZMQVNIX01heFJlY0xlbmd0aAkoIERlZkNmZ19Mb2dGaWxlMDVfUmVjTGVuZ3RoICogRGVmQ2ZnX0xvZ0Jsb2NrMDVfU3RhICkKKyNlbmRpZgorCisjaWYoIERFRl9GTEFTSF9NYXhSZWNMZW5ndGggPCAoIERlZkNmZ19Mb2dGaWxlMDZfUmVjTGVuZ3RoICogRGVmQ2ZnX0xvZ0Jsb2NrMDZfU3RhICkgKQorI3VuZGVmCURFRl9GTEFTSF9NYXhSZWNMZW5ndGgKKyNkZWZpbmUgREVGX0ZMQVNIX01heFJlY0xlbmd0aAkoIERlZkNmZ19Mb2dGaWxlMDZfUmVjTGVuZ3RoICogRGVmQ2ZnX0xvZ0Jsb2NrMDZfU3RhICkKKyNlbmRpZgorCisjaWYoIERFRl9GTEFTSF9NYXhSZWNMZW5ndGggPCAoIERlZkNmZ19Mb2dGaWxlMDdfUmVjTGVuZ3RoICogRGVmQ2ZnX0xvZ0Jsb2NrMDdfU3RhICkgKQorI3VuZGVmCURFRl9GTEFTSF9NYXhSZWNMZW5ndGgKKyNkZWZpbmUgREVGX0ZMQVNIX01heFJlY0xlbmd0aAkoIERlZkNmZ19Mb2dGaWxlMDdfUmVjTGVuZ3RoICogRGVmQ2ZnX0xvZ0Jsb2NrMDdfU3RhICkKKyNlbmRpZgorCisjaWYoIERFRl9GTEFTSF9NYXhSZWNMZW5ndGggPCAoIERlZkNmZ19Mb2dGaWxlMDhfUmVjTGVuZ3RoICogRGVmQ2ZnX0xvZ0Jsb2NrMDhfU3RhICkgKQorI3VuZGVmCURFRl9GTEFTSF9NYXhSZWNMZW5ndGgKKyNkZWZpbmUgREVGX0ZMQVNIX01heFJlY0xlbmd0aAkoIERlZkNmZ19Mb2dGaWxlMDhfUmVjTGVuZ3RoICogRGVmQ2ZnX0xvZ0Jsb2NrMDhfU3RhICkKKyNlbmRpZgorCisjaWYoIERFRl9GTEFTSF9NYXhSZWNMZW5ndGggPCAoIERlZkNmZ19Mb2dGaWxlMDlfUmVjTGVuZ3RoICogRGVmQ2ZnX0xvZ0Jsb2NrMDlfU3RhICkgKQorI3VuZGVmCURFRl9GTEFTSF9NYXhSZWNMZW5ndGgKKyNkZWZpbmUgREVGX0ZMQVNIX01heFJlY0xlbmd0aAkoIERlZkNmZ19Mb2dGaWxlMDlfUmVjTGVuZ3RoICogRGVmQ2ZnX0xvZ0Jsb2NrMDlfU3RhICkKKyNlbmRpZgorCisjaWYoIERFRl9GTEFTSF9NYXhSZWNMZW5ndGggPCAoIERlZkNmZ19Mb2dGaWxlMTBfUmVjTGVuZ3RoICogRGVmQ2ZnX0xvZ0Jsb2NrMTBfU3RhICkgKQorI3VuZGVmCURFRl9GTEFTSF9NYXhSZWNMZW5ndGgKKyNkZWZpbmUgREVGX0ZMQVNIX01heFJlY0xlbmd0aAkoIERlZkNmZ19Mb2dGaWxlMTBfUmVjTGVuZ3RoICogRGVmQ2ZnX0xvZ0Jsb2NrMTBfU3RhICkKKyNlbmRpZgorCisvLz09PT09PT09Pj7X7rTzutrD+7Wlu7qz5cf4s6S2yAorI2RlZmluZSBERUZfRkxBU0hfTWF4QmxrQnVmU2l6ZQkoIEJMQUNLTElTVDFfQ0ZHX0VOQUJMRSAqIEJMQUNLTElTVDFfUEFHRV9TSVpFICogREVGX0ZMQVNIX1BhZ2VTaXplICkKKworI2lmKCBERUZfRkxBU0hfTWF4QmxrQnVmU2l6ZSA8ICggQkxBQ0tMSVNUMl9DRkdfRU5BQkxFICogQkxBQ0tMSVNUMl9QQUdFX1NJWkUgKiBERUZfRkxBU0hfUGFnZVNpemUgKSApCisjdW5kZWYJREVGX0ZMQVNIX01heEJsa0J1ZlNpemUKKyNkZWZpbmUgREVGX0ZMQVNIX01heEJsa0J1ZlNpemUJKCBCTEFDS0xJU1QyX0NGR19FTkFCTEUgKiBCTEFDS0xJU1QyX1BBR0VfU0laRSAqIERFRl9GTEFTSF9QYWdlU2l6ZSApCisjZW5kaWYKKworI2lmKCBERUZfRkxBU0hfTWF4QmxrQnVmU2l6ZSA8ICggQkxBQ0tMSVNUM19DRkdfRU5BQkxFICogQkxBQ0tMSVNUM19QQUdFX1NJWkUgKiBERUZfRkxBU0hfUGFnZVNpemUgKSApCisjdW5kZWYJREVGX0ZMQVNIX01heEJsa0J1ZlNpemUKKyNkZWZpbmUgREVGX0ZMQVNIX01heEJsa0J1ZlNpemUJKCBCTEFDS0xJU1QzX0NGR19FTkFCTEUgKiBCTEFDS0xJU1QzX1BBR0VfU0laRSAqIERFRl9GTEFTSF9QYWdlU2l6ZSApCisjZW5kaWYKKworI2lmKCBERUZfRkxBU0hfTWF4QmxrQnVmU2l6ZSA8ICggQkxBQ0tMSVNUNF9DRkdfRU5BQkxFICogQkxBQ0tMSVNUNF9QQUdFX1NJWkUgKiBERUZfRkxBU0hfUGFnZVNpemUgKSApCisjdW5kZWYJREVGX0ZMQVNIX01heEJsa0J1ZlNpemUKKyNkZWZpbmUgREVGX0ZMQVNIX01heEJsa0J1ZlNpemUJKCBCTEFDS0xJU1Q0X0NGR19FTkFCTEUgKiBCTEFDS0xJU1Q0X1BBR0VfU0laRSAqIERFRl9GTEFTSF9QYWdlU2l6ZSApCisjZW5kaWYKKworI2lmKCBERUZfRkxBU0hfTWF4QmxrQnVmU2l6ZSA8ICggQkxBQ0tMSVNUNV9DRkdfRU5BQkxFICogQkxBQ0tMSVNUNV9QQUdFX1NJWkUgKiBERUZfRkxBU0hfUGFnZVNpemUgKSApCisjdW5kZWYJREVGX0ZMQVNIX01heEJsa0J1ZlNpemUKKyNkZWZpbmUgREVGX0ZMQVNIX01heEJsa0J1ZlNpemUJKCBCTEFDS0xJU1Q1X0NGR19FTkFCTEUgKiBCTEFDS0xJU1Q1X1BBR0VfU0laRSAqIERFRl9GTEFTSF9QYWdlU2l6ZSApCisjZW5kaWYKKworLy89PT09PT09PT4+w7+/6bzHwrzH+NfutOa0orzHwrzK/cG/IMDtwtvBv7Tz1rUKKyNkZWZpbmUJREVGX1JlYzAxX01heFJlY051bQkoICggRGVmQ2ZnX0xvZ0ZpbGUwMV9QYWdlU2l6ZSAqIERFRl9GTEFTSF9QYWdlU2l6ZSApL0RlZkNmZ19Mb2dGaWxlMDFfUmVjTGVuZ3RoICkKKyNkZWZpbmUJREVGX1JlYzAyX01heFJlY051bQkoICggRGVmQ2ZnX0xvZ0ZpbGUwMl9QYWdlU2l6ZSAqIERFRl9GTEFTSF9QYWdlU2l6ZSApL0RlZkNmZ19Mb2dGaWxlMDJfUmVjTGVuZ3RoICkKKyNkZWZpbmUJREVGX1JlYzAzX01heFJlY051bQkoICggRGVmQ2ZnX0xvZ0ZpbGUwM19QYWdlU2l6ZSAqIERFRl9GTEFTSF9QYWdlU2l6ZSApL0RlZkNmZ19Mb2dGaWxlMDNfUmVjTGVuZ3RoICkKKyNkZWZpbmUJREVGX1JlYzA0X01heFJlY051bQkoICggRGVmQ2ZnX0xvZ0ZpbGUwNF9QYWdlU2l6ZSAqIERFRl9GTEFTSF9QYWdlU2l6ZSApL0RlZkNmZ19Mb2dGaWxlMDRfUmVjTGVuZ3RoICkKKyNkZWZpbmUJREVGX1JlYzA1X01heFJlY051bQkoICggRGVmQ2ZnX0xvZ0ZpbGUwNV9QYWdlU2l6ZSAqIERFRl9GTEFTSF9QYWdlU2l6ZSApL0RlZkNmZ19Mb2dGaWxlMDVfUmVjTGVuZ3RoICkKKyNkZWZpbmUJREVGX1JlYzA2X01heFJlY051bQkoICggRGVmQ2ZnX0xvZ0ZpbGUwNl9QYWdlU2l6ZSAqIERFRl9GTEFTSF9QYWdlU2l6ZSApL0RlZkNmZ19Mb2dGaWxlMDZfUmVjTGVuZ3RoICkKKyNkZWZpbmUJREVGX1JlYzA3X01heFJlY051bQkoICggRGVmQ2ZnX0xvZ0ZpbGUwN19QYWdlU2l6ZSAqIERFRl9GTEFTSF9QYWdlU2l6ZSApL0RlZkNmZ19Mb2dGaWxlMDdfUmVjTGVuZ3RoICkKKyNkZWZpbmUJREVGX1JlYzA4X01heFJlY051bQkoICggRGVmQ2ZnX0xvZ0ZpbGUwOF9QYWdlU2l6ZSAqIERFRl9GTEFTSF9QYWdlU2l6ZSApL0RlZkNmZ19Mb2dGaWxlMDhfUmVjTGVuZ3RoICkKKyNkZWZpbmUJREVGX1JlYzA5X01heFJlY051bQkoICggRGVmQ2ZnX0xvZ0ZpbGUwOV9QYWdlU2l6ZSAqIERFRl9GTEFTSF9QYWdlU2l6ZSApL0RlZkNmZ19Mb2dGaWxlMDlfUmVjTGVuZ3RoICkKKyNkZWZpbmUJREVGX1JlYzEwX01heFJlY051bQkoICggRGVmQ2ZnX0xvZ0ZpbGUxMF9QYWdlU2l6ZSAqIERFRl9GTEFTSF9QYWdlU2l6ZSApL0RlZkNmZ19Mb2dGaWxlMTBfUmVjTGVuZ3RoICkKKworCisKKworCisvLz09PT09PT09PT4+v9W85NPDysfKudPDzeoKKyNpZiggREVGX0ZMQVNIX1Jlc1N0YXJ0QWRkID4gREVGX0ZMQVNIX1BhZ2VzICogREVGX0ZMQVNIX1BhZ2VTaXplICkKKyNlcnJvciAiRkxBU0i31sXkv9W85LOsz94iCisjZW5kaWYKKworCisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgILbUsr+31sXk1sPQxc+ivfjQ0LzssuIKKyoKKyogINeiINLio7ogttTF5NbD0MXPor340NC87LLi1rvKx7zytaW1xLzssuKjrLK70qrN6sir0sDAtbTLvOyy4qGj09DQqbTtzvPKx7K7xNy87LLitb21xKOsvfjQ0MXk1sPKsdOmzNix8MH00uKhoworKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0+PiC62sP7taXF5NbDvOyy4gorI2lmKCAoIEJMQUNLTElTVDFfU0VDVElPTl9TSVpFICUgMiApICE9IDAgKQorI2Vycm9yICK12tK7utrD+7Wlx/i/6cr9srvKx8W8yv2jocfrtffV+7raw/u1pcXk1sMiCisjZW5kaWYKKyNpZiggKCBCTEFDS0xJU1QyX1NFQ1RJT05fU0laRSAlIDIgKSAhPSAwICkKKyNlcnJvciAitdq2/rraw/u1pcf4v+nK/bK7ysfFvMr9o6HH67X31fu62sP7taXF5NbDIgorI2VuZGlmCisjaWYoICggQkxBQ0tMSVNUM19TRUNUSU9OX1NJWkUgJSAyICkgIT0gMCApCisjZXJyb3IgIrXayP262sP7taXH+L/pyv2yu8rHxbzK/aOhx+u199X7utrD+7WlxeTWwyIKKyNlbmRpZgorI2lmKCAoIEJMQUNLTElTVDRfU0VDVElPTl9TSVpFICUgMiApICE9IDAgKQorI2Vycm9yICK12svEutrD+7Wlx/i/6cr9srvKx8W8yv2jocfrtffV+7raw/u1pcXk1sMiCisjZW5kaWYKKyNpZiggKCBCTEFDS0xJU1Q1X1NFQ1RJT05fU0laRSAlIDIgKSAhPSAwICkKKyNlcnJvciAitdrO5braw/u1pcf4v+nK/bK7ysfFvMr9o6HH67X31fu62sP7taXF5NbDIgorI2VuZGlmCisKKworI2lmKCAoICggRkxBU0hfUEFHRV9TSVpFICogQkxBQ0tMSVNUMV9QQUdFX1NJWkUgKSAlIEJMQUNLTElTVDFfTEVOR1RIICkgIT0gMCApCisjZXJyb3IgIrXa0ru62sP7taXH+MO/v+myu8TctObV+8r9uPa62sP7taWjocfrtffV+7raw/u1pcXk1sMiCisjZW5kaWYKKworI2lmKCAoICggRkxBU0hfUEFHRV9TSVpFICogQkxBQ0tMSVNUMl9QQUdFX1NJWkUgKSAlIEJMQUNLTElTVDJfTEVOR1RIICkgIT0gMCApCisjZXJyb3IgIrXatv662sP7taXH+MO/v+myu8TctObV+8r9uPa62sP7taWjocfrtffV+7raw/u1pcXk1sMiCisjZW5kaWYKKworI2lmKCAoICggRkxBU0hfUEFHRV9TSVpFICogQkxBQ0tMSVNUM19QQUdFX1NJWkUgKSAlIEJMQUNLTElTVDNfTEVOR1RIICkgIT0gMCApCisjZXJyb3IgIrXayP262sP7taXH+MO/v+myu8TctObV+8r9uPa62sP7taWjocfrtffV+7raw/u1pcXk1sMiCisjZW5kaWYKKworI2lmKCAoICggRkxBU0hfUEFHRV9TSVpFICogQkxBQ0tMSVNUNF9QQUdFX1NJWkUgKSAlIEJMQUNLTElTVDVfTEVOR1RIICkgIT0gMCApCisjZXJyb3IgIrXay8S62sP7taXH+MO/v+myu8TctObV+8r9uPa62sP7taWjocfrtffV+7raw/u1pcXk1sMiCisjZW5kaWYKKworI2lmKCAoICggRkxBU0hfUEFHRV9TSVpFICogQkxBQ0tMSVNUNV9QQUdFX1NJWkUgKSAlIEJMQUNLTElTVDVfTEVOR1RIICkgIT0gMCApCisjZXJyb3IgIrXazuW62sP7taXH+MO/v+myu8TctObV+8r9uPa62sP7taWjocfrtffV+7raw/u1pcXk1sMiCisjZW5kaWYKKworCisKKyNpZiggQkxBQ0tMSVNUMV9DT01QQVJFX0xFTkdUSCA+IEJMQUNLTElTVDFfTEVOR1RIICkKKyNlcnJvciAitdrSu7raw/u1pcf4utrD+7Wlsci9z7OktsixyLraw/u1pbOktsi086Ohx+u199X7utrD+7WlxeTWwyIKKyNlbmRpZgorCisjaWYoIEJMQUNLTElTVDJfQ09NUEFSRV9MRU5HVEggPiBCTEFDS0xJU1QyX0xFTkdUSCApCisjZXJyb3IgIrXatv662sP7taXH+Lraw/u1pbHIvc+zpLbIsci62sP7taWzpLbItPOjocfrtffV+7raw/u1pcXk1sMiCisjZW5kaWYKKworI2lmKCBCTEFDS0xJU1QzX0NPTVBBUkVfTEVOR1RIID4gQkxBQ0tMSVNUM19MRU5HVEggKQorI2Vycm9yICK12sj9utrD+7Wlx/i62sP7taWxyL3Ps6S2yLHIutrD+7Wls6S2yLTzo6HH67X31fu62sP7taXF5NbDIgorI2VuZGlmCisKKyNpZiggQkxBQ0tMSVNUNF9DT01QQVJFX0xFTkdUSCA+IEJMQUNLTElTVDRfTEVOR1RIICkKKyNlcnJvciAitdrLxLraw/u1pcf4utrD+7Wlsci9z7OktsixyLraw/u1pbOktsi086Ohx+u199X7utrD+7WlxeTWwyIKKyNlbmRpZgorCisjaWYoIEJMQUNLTElTVDVfQ09NUEFSRV9MRU5HVEggPiBCTEFDS0xJU1Q1X0xFTkdUSCApCisjZXJyb3IgIrXazuW62sP7taXH+Lraw/u1pbHIvc+zpLbIsci62sP7taWzpLbItPOjocfrtffV+7raw/u1pcXk1sMiCisjZW5kaWYKKworCisKKworI2VuZGlmCisKZGlmZiAtLWdpdCBhL3N5c19ody9kYXRhX3Rvb2xzLmMgYi9zeXNfaHcvZGF0YV90b29scy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjYTgxNDMKLS0tIC9kZXYvbnVsbAorKysgYi9zeXNfaHcvZGF0YV90b29scy5jCkBAIC0wLDAgKzEsMjQ3IEBACisjaW5jbHVkZSAiZGF0YV90b29scy5oIgorCit1OCBpbnQyYXJyYXkodTMyIHZhbCwgdm9pZCogZGVzdCwgdTggbGVuKQoreworCXU4IGluZGV4ID0gMDsKKworCWlmKGxlbj40KSByZXR1cm4gMTsKKworCWZvcihpbmRleD0wO2luZGV4PGxlbjtpbmRleCsrKQorCQkqKCh1OCAqKWRlc3QraW5kZXgpID0gKHUzMil2YWw+PigobGVuLTEtaW5kZXgpPDwzKTsKKworCXJldHVybiAwOworfQorCit1OCBhcnJheTJpbnQodm9pZCogc3JjLCB2b2lkKiBwdmFsLCB1OCBsZW4pCit7CisJdTggaW5kZXggPSAwOworCisJaWYobGVuPjQpIHJldHVybiAxOworCisJZm9yKGluZGV4PTA7aW5kZXg8bGVuO2luZGV4KyspCisJeworCQkqKCh1OCopcHZhbCtsZW4tMS1pbmRleCkgPSAqKCh1OCAqKXNyYytpbmRleCk7CisJfQorCXJldHVybiAwOworfQorCit1OCBtZW1fdGVzdCh2b2lkKiBzcmMsIHU4IHZhbCwgaW50IGNvdW50KQoreworCWlmKCFjb3VudCkgcmV0dXJuIDA7CisKKwl3aGlsZShjb3VudC0tKXsKKwkJaWYoKihjaGFyICopc3JjICE9IHZhbCkgcmV0dXJuIDE7CisJCXNyYyA9IChjaGFyICopc3JjICsxOworCX0KKwlyZXR1cm4gMDsKK30KKwordTggbWVtX3JldmVyc2Uodm9pZCogc3JjLCBpbnQgY291bnQpCit7CisJdTggIHRlbXA7CisJaW50IGk7IAorICAgIHU4KiBwYnVmZiA9ICh1OCAqKXNyYzsKKwkKKwlpZighY291bnQpIHJldHVybiAwOworCisJZm9yKGk9MDtpPGNvdW50LzI7aSsrKQorCXsKKwkJdGVtcCA9ICoocGJ1ZmYgKyBpKTsKKwkJKihwYnVmZiArIGkpID0gKihwYnVmZiArIGNvdW50IC0gMSAtaSk7CisJCSoocGJ1ZmYgKyBjb3VudCAtIDEgLWkpID0gdGVtcDsKKwl9CisJcmV0dXJuIDA7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCitiY2TK/b7d16q7u86qaGV4yv2+3QorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCit2b2lkIGJjZDJoZXgodm9pZCogYmNkLCB1MzIgbGVuKQoreyAJCisJdTMyICBpOworICAgIHU4KiBwYnVmZiA9ICh1OCAqKWJjZDsJCisJCisJZm9yKGk9MDtpPGxlbjtpKyspCisJeworCQkqcGJ1ZmY9KCgqcGJ1ZmYpLzE2KSoxMCsoKnBidWZmKSUxNjsKKwkJcGJ1ZmYrKzsKKwl9Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK2hleMr9vt3Xqru7zqpiY2QKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCit2b2lkIGhleDJiY2Qodm9pZCogaGV4LCB1MzIgbGVuKQoreyAJCisJdTMyIGk7CisgICAgdTgqIHBidWZmID0gKHU4ICopaGV4OworCQorCWZvcihpPTA7aTxsZW47aSsrKQorCXsKKwkJKnBidWZmID0oKnBidWZmLzEwKSoxNisoKnBidWZmKSUxMCA7CQorCQlwYnVmZisrIDsKKwl9Cit9CisKK3N0YXRpYyBpbnQgY2hhcjJiaW4odTggYywgdTgqIGJpbikKK3sJCisJaWYoKGM+PScwJykgJiYgKGM8PSc5JykpCQorCXsKKwkJKmJpbiA9IGMgLSAnMCc7CisJfQorCWVsc2UgaWYoKGM+PSdhJykgJiYgKGM8PSdmJykpCisJeworCQkqYmluID0gYyAtICdhJyArIDB4MEE7CQorCX0KKwllbHNlIGlmKChjPj0nQScpICYmIChjPD0nRicpKQorCXsKKwkJKmJpbiA9IGMgLSAnQScgKyAweDBBOwkKKwl9CisJZWxzZQorCXsKKwkJcmV0dXJuIDE7IAkKKwl9CQorCXJldHVybiAwOworfQorCitpbnQgaGV4MmJpbih1OCogaW5fYnVmZiwgdTgqIG91dF9idWYsIHUzMiBsZW4pCit7CisJdTMyIGk7CisJdTggdGVtcFsyXTsKKwkKKwlpZihsZW4mMHgwMSkgcmV0dXJuIDE7CisJZm9yKGk9MDtpPGxlbjspCisJeworCQljaGFyMmJpbigqKGluX2J1ZmYgKyBpKSwgJnRlbXBbMF0pOworCQljaGFyMmJpbigqKGluX2J1ZmYgKyBpICsgMSksICZ0ZW1wWzFdKTsKKwkJKihvdXRfYnVmKyhpPj4xKSkgPSAodGVtcFswXTw8NCkgKyB0ZW1wWzFdOworCQlpICs9IDI7CisJfQorCXJldHVybiAwOwkKK30KKworaW50IGdldF9yZXBldGl0aW9uX2NvdW50KHVuc2lnbmVkIGNoYXIqIHNyYywgdW5zaWduZWQgaW50IHNyY19sZWZ0KQoreworCXVuc2lnbmVkIGludCBjb3VudCA9IDA7CisJdW5zaWduZWQgaW50IGkgPSAwOworCisJd2hpbGUoaSA8IHNyY19sZWZ0KQorCXsKKwkJaWYoKnNyYyA9PSAqKHNyYytpKSkKKwkJeworCQkJaWYoY291bnQ8MTI3KQorCQkJeworCQkJCWNvdW50Kys7CisJCQl9CisJCisJCX0KKwkJZWxzZQorCQl7CisJCQlicmVhazsKKwkJfQorCQlpICsrOworCX0KKwlyZXR1cm4gY291bnQ7Cit9CisKK2ludCBnZXRfbm9uX3JlcGV0aXRpb25fY291bnQodW5zaWduZWQgY2hhciogc3JjLCB1bnNpZ25lZCBpbnQgc3JjX2xlZnQpCit7CisJdW5zaWduZWQgaW50IGNvdW50ID0gMDsKKworCXdoaWxlKGNvdW50IDwgc3JjX2xlZnQpCisJeworCQlpZihnZXRfcmVwZXRpdGlvbl9jb3VudChzcmMrY291bnQsIHNyY19sZWZ0LWNvdW50KTwzKQorCQl7CisJCQlpZihjb3VudDwxMjcpCisJCQl7CisJCQkJY291bnQrKzsKKwkJCX0KKwkJfQorCQllbHNlCisJCXsKKwkJCWJyZWFrOworCQl9CisJfQorCXJldHVybiBjb3VudDsKKworfQorCisvKgorCXJsZb3i0bnL9QorKi8KK2ludCBybGVfZGVjb2RlKHVuc2lnbmVkIGNoYXIgKmluX2J1ZiwgaW50IGluX3N6LCB1bnNpZ25lZCBjaGFyICpvdXRfYnVmLCBpbnQgb3V0X2J1Zl9zeikKK3sKKyAgICB1bnNpZ25lZCBjaGFyICpzcmMgPSBpbl9idWY7CisgICAgaW50IGk7CisgICAgaW50IGRlY19zeiA9IDA7CisKKyAgICB3aGlsZShzcmMgPCAoaW5fYnVmICsgaW5fc3opKQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgY2hhciBzaWduID0gKnNyYysrOworICAgICAgICBpbnQgY291bnQgPSBzaWduICYgMHg3RjsKKyAgICAgICAgaWYoKGRlY19zeiArIGNvdW50KSA+IG91dF9idWZfc3opIC8qyuSz9ru6s+XH+L/VvOSyu7m7wcsqLworICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgaWYoKHNpZ24gJiAweDgwKSA9PSAweDgwKSAvKsGs0PjW2Li0yv2+3bHq1r4qLworICAgICAgICB7CisgICAgICAgICAgICBmb3IoaSA9IDA7IGkgPCBjb3VudDsgaSsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG91dF9idWZbZGVjX3N6KytdID0gKnNyYzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNyYysrOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgZm9yKGkgPSAwOyBpIDwgY291bnQ7IGkrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXRfYnVmW2RlY19zeisrXSA9ICpzcmMrKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBkZWNfc3o7Cit9CisKKy8qCisJcmxl0bnL9QorKi8KK2ludCBybGVfZW5jb2RlKHVuc2lnbmVkIGNoYXIgKmluX2J1ZiwgaW50IGluX3N6LCB1bnNpZ25lZCBjaGFyICpvdXRfYnVmLCBpbnQgb3V0X2J1Zl9zeikKK3sKKyAgICB1bnNpZ25lZCBjaGFyICpzcmMgPSBpbl9idWY7CisgICAgaW50IGk7CisgICAgaW50IGVuY19zeiA9IDA7CisgICAgaW50IHNyY19sZWZ0ID0gaW5fc3o7CisKKyAgICB3aGlsZShzcmNfbGVmdCA+IDApCisgICAgeworICAgICAgICBpbnQgY291bnQgPSBnZXRfcmVwZXRpdGlvbl9jb3VudChzcmMsIHNyY19sZWZ0KTsKKworICAgICAgICBpZihjb3VudD4yKSAvKsrHt/HBrND4yP249tfWvdrK/b7dz+DNrKO/Ki8KKyAgICAgICAgeworICAgICAgICAgICAgaWYoKGVuY19zeiArIDIpID4gb3V0X2J1Zl9zeikgLyrK5LP2u7qz5cf4v9W85LK7ubvByyovCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorICAgICAgICAgICAgb3V0X2J1ZltlbmNfc3orK10gPSBjb3VudCB8IDB4ODA7CisgICAgICAgICAgICBvdXRfYnVmW2VuY19zeisrXSA9ICpzcmM7CisgICAgICAgICAgICBzcmMgKz0gY291bnQ7CisgICAgICAgICAgICBzcmNfbGVmdCAtPSBjb3VudDsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvdW50ID0gZ2V0X25vbl9yZXBldGl0aW9uX2NvdW50KHNyYywgc3JjX2xlZnQpOworICAgICAgICAgICAgaWYoKGVuY19zeiArIGNvdW50ICsgMSkgPiBvdXRfYnVmX3N6KSAvKsrks/a7urPlx/i/1bzksru5u8HLKi8KKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBvdXRfYnVmW2VuY19zeisrXSA9IGNvdW50OworICAgICAgICAgICAgZm9yKGkgPSAwOyBpIDwgY291bnQ7IGkrKykgLyrW8Lj2uLTWxtXi0KnK/b7dKi8KKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXRfYnVmW2VuY19zeisrXSA9ICpzcmMrKzs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzcmNfbGVmdCAtPSBjb3VudDsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gZW5jX3N6OworfQpkaWZmIC0tZ2l0IGEvc3lzX2h3L2RhdGFfdG9vbHMuaCBiL3N5c19ody9kYXRhX3Rvb2xzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDE4ZGMwZAotLS0gL2Rldi9udWxsCisrKyBiL3N5c19ody9kYXRhX3Rvb2xzLmgKQEAgLTAsMCArMSwyMCBAQAorI2lmbmRlZiBfX2RhdGFfdG9vbHNfaF9fCisjZGVmaW5lIF9fZGF0YV90b29sc19oX18KKworI2luY2x1ZGUgInN0bTMyZjEweC5oIgorCitleHRlcm4gdTggaW50MmFycmF5KHUzMiB2YWwsIHZvaWQgKiBkZXN0LCB1OCBsZW4pOworZXh0ZXJuIHU4IGFycmF5MmludCh2b2lkICogc3JjLCB2b2lkKiBwdmFsLCB1OCBsZW4pOworCitleHRlcm4gdTggbWVtX3JldmVyc2Uodm9pZCAqIHNyYywgaW50IGNvdW50KTsKK2V4dGVybiB1OCBtZW1fdGVzdCh2b2lkICogc3JjLCB1OCB2YWwsIGludCBjb3VudCk7CisKK2V4dGVybiB2b2lkIGhleDJiY2Qodm9pZCogaGV4LCB1MzIgbGVuKTsKK2V4dGVybiB2b2lkIGJjZDJoZXgodm9pZCogYmNkLCB1MzIgbGVuKTsKK2V4dGVybiBpbnQgaGV4MmJpbih1OCogaW5fYnVmZiwgdTgqIG91dF9idWYsIHUzMiBsZW4pOworCitleHRlcm4gaW50IHJsZV9lbmNvZGUodW5zaWduZWQgY2hhciAqaW5fYnVmLCBpbnQgaW5fc3osIHVuc2lnbmVkIGNoYXIgKm91dF9idWYsIGludCBvdXRfYnVmX3N6KTsKK2V4dGVybiBpbnQgcmxlX2RlY29kZSh1bnNpZ25lZCBjaGFyICppbl9idWYsIGludCBpbl9zeiwgdW5zaWduZWQgY2hhciAqb3V0X2J1ZiwgaW50IG91dF9idWZfc3opOworCisjZW5kaWYgLyogX19kYXRhX3Rvb2xzX2hfXyAqLworCmRpZmYgLS1naXQgYS9zeXNfaHcvZHJ2X2FkYy5jIGIvc3lzX2h3L2Rydl9hZGMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZDU0MDk2Ci0tLSAvZGV2L251bGwKKysrIGIvc3lzX2h3L2Rydl9hZGMuYwpAQCAtMCwwICsxLDMyMSBAQAorI2luY2x1ZGUgImRydl9hZGMuaCIKKyNpbmNsdWRlICJzdG0zMmYxMHguaCIKKyNpbmNsdWRlICJrZXlwYWQuaCIKKyNpbmNsdWRlICJzdHJpbmcuaCIKKyNpbmNsdWRlICIuLi9zdXB3aXNkb20vc3BfdXRpbC5oIgorI2luY2x1ZGUgIi4uL3N1cHdpc2RvbS9zcF9mbGFzaC5oIgorCisvLyNpbmNsdWRlICJtaWZhcmVfb25lX2h3X2xpYi5oIgorI2luY2x1ZGUgInRpbWVyLmgiCisjaW5jbHVkZSAiZGF0YV90b29scy5oIgorLy8jaW5jbHVkZSAiY3JjLmgiCisvLyNpbmNsdWRlICJkYmcuaCIKKworI2RlZmluZSBQRERUaHJlc2hvZF9Wb3RhZ2UgICAgODAKKyNkZWZpbmUgUEREVGhyZXNob2RfQURDVmFsICAgIChQRERUaHJlc2hvZF9Wb3RhZ2UqNDA5NUwvNzEzTCkKKworI2RlZmluZSBSZXNldF9Wb3RhZ2UgICAgICAgICAgNzQgICAgICAgLy9UUFM1NDE2MM2j1rm5pNf3tefRuTcuMVYKKyNkZWZpbmUgUmVzZXRfQURDVmFsICAgICAgICAgIChSZXNldF9Wb3RhZ2UqNDA5NUwvNzEzTCkKKworCit0eXBlZGVmIHZvaWQgKCphZGNfdGltZXJfdGlja190KSh2b2lkKTsKKwordm9sYXRpbGUgdWludDhfdCAgYWRjX3RpbWVyOwordm9sYXRpbGUgdWludDhfdCAgY2hfaWR4Owordm9sYXRpbGUgdWludDE2X3QgYWRjX3ZhbF92ZGQ9NDA5NTsKK3ZvbGF0aWxlIHVpbnQxNl90IGFkY192YWw7CitkYWNfcGFyYV90IGRhY19wYXJhID0gezg5MCwgODkwLCA4OTAsIDg5MCwgODkwLCA4OTAsIDg5MCwgODkwLCA4OTAsIDg5MCwgODkwLCA4OTAsIDB9OyAvL2RhY8rks/a159G5xKzIzzMuM1YKK2FkY190aW1lcl90aWNrX3QgcF9hZGNfdGltZXJfdGljayA9IDA7Cit2b2xhdGlsZSB1aW50MTZfdCBhZGNfYnVmZltBRENfTUFYX0NIX05VTV07CitzdGF0aWMgY29uc3QgdWludDhfdCBhZGNfY2hfdGJsW0FEQ19NQVhfQ0hfTlVNXSA9Cit7CisgIEFEQ19DaGFubmVsXzksICAgICAgICAgLy9rZXlfYWRjMSxwYjEKKyAgQURDX0NoYW5uZWxfNCwgICAgICAgICAvL2tleV9hZGMyLHBhNAorICBBRENfQ2hhbm5lbF8xLCAgICAgICAgIC8va2V5X2FkYzMscGExCisgIEFEQ19DaGFubmVsXzgsICAgICAgICAgLy9rZXlfYWRjNCxwYjAKKyAgQURDX0NoYW5uZWxfMywgICAgICAgICAvL2tleV9hZGM1LHBhMworICBBRENfQ2hhbm5lbF8wLCAgICAgICAgIC8va2V5X2FkYzYscGEwCisgIEFEQ19DaGFubmVsXzE1LCAgICAgICAgLy9rZXlfYWRjNyxwYzUKKyAgQURDX0NoYW5uZWxfMiwgICAgICAgICAvL2tleV9hZGM4LHBhMgorICBBRENfQ2hhbm5lbF8xMywgICAgICAgIC8va2V5X2FkYzkscGMzCisgIEFEQ19DaGFubmVsXzExLCAgICAgICAgLy9rZXlfYWRjMTAscGMxCisgIEFEQ19DaGFubmVsXzEwLCAgICAgICAgLy9rZXlfYWRjMTEscGMwCisgIEFEQ19DaGFubmVsXzEyLCAgICAgICAgLy9rZXlfYWRjMTIscGMyCisgIEFEQ19DaGFubmVsXzYsICAgICAgICAgLy92Y2NfYWRjX2luLHBhNgorICBBRENfQ2hhbm5lbF8xNCwgICAgICAgIC8vZmFfYWRjX2luLHBjNAorICBBRENfQ2hhbm5lbF83ICAgICAgICAgIC8vaGFsbF9hZGNfaW4scGE3Cit9OworCit2b2lkIGFkY190aW1lcl90aWNrKHZvaWQpOworc3RhdGljIHZvaWQgdGltZXI0X2luaXQodm9pZCk7CisKK3N0YXRpYyB2b2lkIGFkY19ncGlvX2luaXQodm9pZCkKK3sKKyAgR1BJT19Jbml0VHlwZURlZiBHUElPX0luaXRTdHJ1Y3R1cmU7CisKKyAgUkNDX0FQQjJQZXJpcGhDbG9ja0NtZChSQ0NfQVBCMlBlcmlwaF9HUElPQSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgUkNDX0FQQjJQZXJpcGhfR1BJT0IgfAorICAgICAgICAgICAgICAgICAgICAgICAgIFJDQ19BUEIyUGVyaXBoX0dQSU9DLCBFTkFCTEUpOworCisgIEdQSU9fSW5pdFN0cnVjdHVyZS5HUElPX01vZGUgPSBHUElPX01vZGVfQUlOOworCisgIEdQSU9fSW5pdFN0cnVjdHVyZS5HUElPX1BpbiA9IEdQSU9fUGluXzAgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHUElPX1Bpbl8xIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1BJT19QaW5fMiB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdQSU9fUGluXzMgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHUElPX1Bpbl80IHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1BJT19QaW5fNiB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdQSU9fUGluXzc7CisgIEdQSU9fSW5pdChHUElPQSwgJkdQSU9fSW5pdFN0cnVjdHVyZSk7CisKKyAgR1BJT19Jbml0U3RydWN0dXJlLkdQSU9fUGluID0gR1BJT19QaW5fMCB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdQSU9fUGluXzE7CisgIEdQSU9fSW5pdChHUElPQiwgJkdQSU9fSW5pdFN0cnVjdHVyZSk7CisKKyAgR1BJT19Jbml0U3RydWN0dXJlLkdQSU9fUGluID0gR1BJT19QaW5fMCB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdQSU9fUGluXzEgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHUElPX1Bpbl8yIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1BJT19QaW5fMyB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdQSU9fUGluXzQgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHUElPX1Bpbl81OworICBHUElPX0luaXQoR1BJT0MsICZHUElPX0luaXRTdHJ1Y3R1cmUpOworfQorCitzdGF0aWMgdm9pZCBhZGNfY2hhbm5lbHNfaW5pdCh2b2lkKQoreworICBBRENfSW5pdFR5cGVEZWYgQURDX0luaXRTdHJ1Y3R1cmU7CisKKyAgUkNDX0FEQ0NMS0NvbmZpZyhSQ0NfUENMSzJfRGl2Nik7CisgIFJDQ19BUEIyUGVyaXBoQ2xvY2tDbWQoUkNDX0FQQjJQZXJpcGhfQURDMSwgRU5BQkxFKTsKKworICBBRENfSW5pdFN0cnVjdHVyZS5BRENfTW9kZSA9IEFEQ19Nb2RlX0luZGVwZW5kZW50OworICBBRENfSW5pdFN0cnVjdHVyZS5BRENfU2NhbkNvbnZNb2RlID0gRElTQUJMRTsKKyAgQURDX0luaXRTdHJ1Y3R1cmUuQURDX0NvbnRpbnVvdXNDb252TW9kZSA9IERJU0FCTEU7CisgIEFEQ19Jbml0U3RydWN0dXJlLkFEQ19FeHRlcm5hbFRyaWdDb252ID0gQURDX0V4dGVybmFsVHJpZ0NvbnZfTm9uZTsKKyAgQURDX0luaXRTdHJ1Y3R1cmUuQURDX0RhdGFBbGlnbiA9IEFEQ19EYXRhQWxpZ25fUmlnaHQ7CisgIEFEQ19Jbml0U3RydWN0dXJlLkFEQ19OYnJPZkNoYW5uZWwgPSAxOworICBBRENfSW5pdChBREMxLCAmQURDX0luaXRTdHJ1Y3R1cmUpOworICBBREMxLT5DUjIgfD0gMHgwMDEwMDAwOworCisgIC8va2V5IGFkYyAxIC0gMTIKKyAgY2hfaWR4ID0gMDsKKyAgQURDX1JlZ3VsYXJDaGFubmVsQ29uZmlnKEFEQzEsIGFkY19jaF90YmxbY2hfaWR4XSwgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEFEQ19TYW1wbGVUaW1lXzIzOUN5Y2xlczUpOworICBBRENfQ21kKEFEQzEsIEVOQUJMRSk7CisKKyAgQURDX1Jlc2V0Q2FsaWJyYXRpb24oQURDMSk7CisgIHdoaWxlKEFEQ19HZXRSZXNldENhbGlicmF0aW9uU3RhdHVzKEFEQzEpKTsKKworICBBRENfU3RhcnRDYWxpYnJhdGlvbihBREMxKTsKKyAgd2hpbGUoQURDX0dldENhbGlicmF0aW9uU3RhdHVzKEFEQzEpKTsKKyAgQURDX1NvZnR3YXJlU3RhcnRDb252Q21kKEFEQzEsIEVOQUJMRSk7CisgIHBfYWRjX3RpbWVyX3RpY2sgPSBhZGNfdGltZXJfdGljazsKK30KKworc3RhdGljIHZvaWQgYWRjX2RtYV9pbml0KHZvaWQpCit7Cit9CisKK3N0YXRpYyB2b2lkIGFkY19udmljX2luaXQodm9pZCkKK3sKKworfQorCitzdGF0aWMgdm9pZCBkYWNfaW5pdCh2b2lkKQoreworICBHUElPX0luaXRUeXBlRGVmIEdQSU9fSW5pdFN0cnVjdHVyZTsKKworICBSQ0NfQVBCMlBlcmlwaENsb2NrQ21kKFJDQ19BUEIyUGVyaXBoX0dQSU9BLCBFTkFCTEUpOworCisgIERBQ19EZUluaXQoKTsKKworICBHUElPX0luaXRTdHJ1Y3R1cmUuR1BJT19Nb2RlID0gR1BJT19Nb2RlX0FJTjsKKworICBHUElPX0luaXRTdHJ1Y3R1cmUuR1BJT19QaW4gPSBHUElPX1Bpbl81OworICBHUElPX0luaXQoR1BJT0EsICZHUElPX0luaXRTdHJ1Y3R1cmUpOworCisKKyAgUkNDX0FQQjFQZXJpcGhDbG9ja0NtZChSQ0NfQVBCMVBlcmlwaF9EQUMsIEVOQUJMRSk7CisKKyAgREFDLT5DUiB8PSAweDAwMDEwMDAwOworICBEQUNfU2V0Q2hhbm5lbDJEYXRhKERBQ19BbGlnbl8xMmJfUiwgZGFjX3BhcmEudmFsWzBdKTsKK30KKy8qKgorKirQo9e8sLS8/AorKiovCit2b2lkIGNhbGlicmF0ZV9rZXkodWludDggY2FjaGVfZW5hYmxlKQoreworICBjb25zdCB1aW50OCBsZW4gPSBzaXplb2YoZGFjX3BhcmEpICsyOworICB1aW50OCBidWZbbGVuXTsKKyAgaWYoY2FjaGVfZW5hYmxlKQorICB7CisgICAgdWludDggY3JjWzJdOworICAgIHNwX2ZsYXNoX3JlYWQoQUREUl9LRVlfUEFSQSxidWYsbGVuKTsKKyAgICBzcF9wcm90b2NvbF9jcmMoYnVmICxsZW4gLTIsY3JjKTsKKyAgICBpZihtZW1jbXAoYnVmICtsZW4gLTIsY3JjLDIpID09IDApCisgICAgeworICAgICAgbWVtY3B5KCh1aW50OCopJmRhY19wYXJhLGJ1ZixzaXplb2YoZGFjX3BhcmEpKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisgIH0KKyAgZGFjX3BhcmFfYXV0b19zZXQoKTsKKyAgbWVtY3B5KGJ1ZiwodWludDgqKSZkYWNfcGFyYSxzaXplb2YoZGFjX3BhcmEpKTsKKyAgc3BfcHJvdG9jb2xfY3JjKGJ1ZixsZW4gLTIsYnVmICtsZW4gLTIpOworICBzcF9mbGFzaF9lcmFzZShBRERSX0tFWV9QQVJBKTsKKyAgc3BfZmxhc2hfd3JpdGUoQUREUl9LRVlfUEFSQSxidWYsbGVuKTsKK30KKwordm9pZCBhZGNfaW5pdCh2b2lkKQoreworICB0aW1lcjRfaW5pdCgpOworICBkYWNfaW5pdCgpOworICBhZGNfZ3Bpb19pbml0KCk7CisgIGFkY19udmljX2luaXQoKTsKKyAgYWRjX2RtYV9pbml0KCk7CisgIGFkY19jaGFubmVsc19pbml0KCk7CisgIGNhbGlicmF0ZV9rZXkoMSk7Cit9CisKK3VpbnQxNl90IGFkY19nZXRfdmFsKHVpbnQ4X3QgY2gpCit7CisgIGlmKGNoPEFEQ19NQVhfQ0hfTlVNKQorICB7CisgICAgcmV0dXJuIGFkY19idWZmW2NoXTsKKyAgfQorICBlbHNlCisgIHsKKyAgICByZXR1cm4gMDsKKyAgfQorfQorCit2b2lkIGFkY190aW1lcl90aWNrKHZvaWQpCit7CisgIGFkY190aW1lciArKzsKKyAgaWYoYWRjX3RpbWVyPj04KQorICB7CisgICAgYWRjX3RpbWVyID0gMDsKKyAgfQorICBpZihhZGNfdGltZXI9PTApCisgIHsKKyAgICBhZGNfYnVmZltjaF9pZHhdID0gQURDX0dldENvbnZlcnNpb25WYWx1ZShBREMxKTsKKyAgICBjaF9pZHggKys7CisgICAgaWYoY2hfaWR4ID49IEFEQ19NQVhfQ0hfTlVNKQorICAgIHsKKyAgICAgIGtleXBhZF9zY2FuKCk7CisgICAgICBjaF9pZHggPSAwOworICAgIH0KKworICAgIGlmKGNoX2lkeCA8IDEyKQorICAgIHsKKyAgICAgIERBQ19TZXRDaGFubmVsMkRhdGEoREFDX0FsaWduXzEyYl9SLCBkYWNfcGFyYS52YWxbY2hfaWR4XSk7CisgICAgfQorICB9CisgIGVsc2UgaWYoYWRjX3RpbWVyID09IDcpCisgIHsKKyAgICBBRENfUmVndWxhckNoYW5uZWxDb25maWcoQURDMSwgYWRjX2NoX3RibFtjaF9pZHhdLCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBRENfU2FtcGxlVGltZV8yMzlDeWNsZXM1KTsKKyAgICBBRENfU29mdHdhcmVTdGFydENvbnZDbWQoQURDMSwgRU5BQkxFKTsKKyAgfQorfQorCit2b2lkIGFkY190aW1lcl90YXNrKHZvaWQpCit7CisgIGlmKHBfYWRjX3RpbWVyX3RpY2spCisgIHsKKyAgICAvL9LRvq2z9cq8u6/N6rPJCisgICAgcF9hZGNfdGltZXJfdGljaygpOworICB9Cit9CisKK3ZvaWQgZGFjX3BhcmFfYXV0b19zZXQodm9pZCkKK3sKKyAgdWludDhfdCBpOworICB1aW50MTZfdCBkYWNfdmFsID0gNDA5NTsKKyAgdWludDhfdCAgYWRqX2ZsYWdzWzEyXTsKKworICBwX2FkY190aW1lcl90aWNrID0gMDsKKyAgZGVsYXlfbXMoMTApOworICBtZW1zZXQoYWRqX2ZsYWdzLCAxLCBzaXplb2YoYWRqX2ZsYWdzKSk7CisgIHdoaWxlKChkYWNfdmFsKjMzMDB1bCo2Ni80MDk1MCkgPiAyMDAwKSAgICAgLy/Uy7fFyuSz9rK7tc3T2jJWCisgIHsKKyAgICBmb3IoaT0wOyBpPDEyOyBpKyspCisgICAgeworICAgICAgaWYoYWRqX2ZsYWdzW2ldKQorICAgICAgeworICAgICAgICBkYWNfcGFyYS52YWxbaV0gPSBkYWNfdmFsOworICAgICAgfQorICAgICAgREFDX1NldENoYW5uZWwyRGF0YShEQUNfQWxpZ25fMTJiX1IsIGRhY192YWwpOworICAgICAgZGVsYXlfbXMoNik7CisgICAgICBBRENfUmVndWxhckNoYW5uZWxDb25maWcoQURDMSwgYWRjX2NoX3RibFtpXSwgMSwgQURDX1NhbXBsZVRpbWVfMjM5Q3ljbGVzNSk7CisgICAgICBBRENfU29mdHdhcmVTdGFydENvbnZDbWQoQURDMSwgRU5BQkxFKTsKKyAgICAgIGRlbGF5X21zKDIpOworICAgICAgaWYoQURDX0dldENvbnZlcnNpb25WYWx1ZShBREMxKSA8IDMwMHVsKQorICAgICAgeworICAgICAgICBhZGpfZmxhZ3NbaV0gPSAwOworICAgICAgfQorICAgICAgZWxzZQorICAgICAgeworICAgICAgICBhZGpfZmxhZ3NbaV0gPSAxOworICAgICAgfQorICAgIH0KKworICAgIGlmKG1lbV90ZXN0KGFkal9mbGFncywgMCwgc2l6ZW9mKGFkal9mbGFncykpID09IDApCisgICAgeworICAgICAgYnJlYWs7CisgICAgfQorICAgIGRhY192YWwgLT0gMTI0OworICB9CisgIHBfYWRjX3RpbWVyX3RpY2sgPSBhZGNfdGltZXJfdGljazsKKworfQorCitzdGF0aWMgdm9pZCB0aW1lcjRfaW5pdCh2b2lkKQoreworICB1aW50MTZfdCBQcmVzY2FsZXJWYWx1ZSA9IDA7CisgIFRJTV9UaW1lQmFzZUluaXRUeXBlRGVmICBUSU1fVGltZUJhc2VTdHJ1Y3R1cmU7CisgIFRJTV9PQ0luaXRUeXBlRGVmICBUSU1fT0NJbml0U3RydWN0dXJlOworCisgIEdQSU9fSW5pdFR5cGVEZWYgR1BJT19Jbml0U3RydWN0dXJlOworCisgIC8qIFRJTTQgY2xvY2sgZW5hYmxlICovCisgIFJDQ19BUEIxUGVyaXBoQ2xvY2tDbWQoUkNDX0FQQjFQZXJpcGhfVElNNCwgRU5BQkxFKTsKKworICAvKiBHUElPQSBhbmQgR1BJT0IgY2xvY2sgZW5hYmxlICovCisgIFJDQ19BUEIyUGVyaXBoQ2xvY2tDbWQoUkNDX0FQQjJQZXJpcGhfR1BJT0J8UkNDX0FQQjJQZXJpcGhfQUZJTywgRU5BQkxFKTsKKworICAvKkdQSU9CIENvbmZpZ3VyYXRpb246IFRJTTQgY2hhbm5lbDMgYW5kIDQgKi8KKyAgR1BJT19Jbml0U3RydWN0dXJlLkdQSU9fUGluID0gIEdQSU9fUGluXzggfCBHUElPX1Bpbl85OworICBHUElPX0luaXRTdHJ1Y3R1cmUuR1BJT19Nb2RlID0gR1BJT19Nb2RlX0FGX1BQOworICBHUElPX0luaXRTdHJ1Y3R1cmUuR1BJT19TcGVlZCA9IEdQSU9fU3BlZWRfNTBNSHo7CisgIEdQSU9fSW5pdChHUElPQiwgJkdQSU9fSW5pdFN0cnVjdHVyZSk7CisKKyAgUHJlc2NhbGVyVmFsdWUgPSAodWludDE2X3QpKFN5c3RlbUNvcmVDbG9jayAvIDcyMDAwMDAwKSAtIDE7CisgIC8qIFRpbWUgYmFzZSBjb25maWd1cmF0aW9uICovCisgIFRJTV9UaW1lQmFzZVN0cnVjdHVyZS5USU1fUGVyaW9kID0gNzE5OworICBUSU1fVGltZUJhc2VTdHJ1Y3R1cmUuVElNX1ByZXNjYWxlciA9IFByZXNjYWxlclZhbHVlOworICBUSU1fVGltZUJhc2VTdHJ1Y3R1cmUuVElNX0Nsb2NrRGl2aXNpb24gPSAwOworICBUSU1fVGltZUJhc2VTdHJ1Y3R1cmUuVElNX0NvdW50ZXJNb2RlID0gVElNX0NvdW50ZXJNb2RlX1VwOworCisgIFRJTV9UaW1lQmFzZUluaXQoVElNNCwgJlRJTV9UaW1lQmFzZVN0cnVjdHVyZSk7CisKKyAgLyogUFdNMSBNb2RlIGNvbmZpZ3VyYXRpb246IENoYW5uZWwxICovCisgIFRJTV9PQ0luaXRTdHJ1Y3R1cmUuVElNX09DTW9kZSA9IFRJTV9PQ01vZGVfUFdNMTsKKyAgVElNX09DSW5pdFN0cnVjdHVyZS5USU1fT3V0cHV0U3RhdGUgPSBUSU1fT3V0cHV0U3RhdGVfRW5hYmxlOworICBUSU1fT0NJbml0U3RydWN0dXJlLlRJTV9QdWxzZSA9IDM1OTsKKyAgVElNX09DSW5pdFN0cnVjdHVyZS5USU1fT0NQb2xhcml0eSA9IFRJTV9PQ1BvbGFyaXR5X0hpZ2g7CisgIFRJTV9PQzNJbml0KFRJTTQsICZUSU1fT0NJbml0U3RydWN0dXJlKTsKKyAgVElNX09DM1ByZWxvYWRDb25maWcoVElNNCwgVElNX09DUHJlbG9hZF9FbmFibGUpOworCisgIC8qIFBXTTEgTW9kZSBjb25maWd1cmF0aW9uOiBDaGFubmVsMiAqLworICBUSU1fT0NJbml0U3RydWN0dXJlLlRJTV9PQ01vZGUgPSBUSU1fT0NNb2RlX1BXTTE7CisgIFRJTV9PQ0luaXRTdHJ1Y3R1cmUuVElNX091dHB1dFN0YXRlID0gVElNX091dHB1dFN0YXRlX0VuYWJsZTsKKyAgVElNX09DSW5pdFN0cnVjdHVyZS5USU1fUHVsc2UgPSAzNTk7CisgIFRJTV9PQ0luaXRTdHJ1Y3R1cmUuVElNX09DUG9sYXJpdHkgPSBUSU1fT0NQb2xhcml0eV9Mb3c7CisgIFRJTV9PQzRJbml0KFRJTTQsICZUSU1fT0NJbml0U3RydWN0dXJlKTsKKyAgVElNX09DNFByZWxvYWRDb25maWcoVElNNCwgVElNX09DUHJlbG9hZF9FbmFibGUpOworCisgIFRJTV9BUlJQcmVsb2FkQ29uZmlnKFRJTTQsIEVOQUJMRSk7CisKKyAgLyogVElNNCBlbmFibGUgY291bnRlciAqLworICBUSU1fQ21kKFRJTTQsIEVOQUJMRSk7Cit9CmRpZmYgLS1naXQgYS9zeXNfaHcvZHJ2X2FkYy5oIGIvc3lzX2h3L2Rydl9hZGMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZGU0YzVkCi0tLSAvZGV2L251bGwKKysrIGIvc3lzX2h3L2Rydl9hZGMuaApAQCAtMCwwICsxLDI5IEBACisjaWZuZGVmIF9fYWRjX2hfXworI2RlZmluZSBfX2FkY19oX18KKworI2luY2x1ZGUgInN0bTMyZjEweC5oIgorCisjZGVmaW5lIEFEQ19NQVhfQ0hfTlVNICAgICAoMTV1KQorCisjcHJhZ21hIHBhY2socHVzaCkKKyNwcmFnbWEgcGFjaygxKQorCit0eXBlZGVmIHN0cnVjdAoreworCXZvbGF0aWxlIHVpbnQxNl90IHZhbFsxMl07CisJdWludDE2X3QgY3JjOworfSBkYWNfcGFyYV90OworCisjcHJhZ21hIHBhY2socG9wKQorCitleHRlcm4gZGFjX3BhcmFfdCBkYWNfcGFyYTsKKworZXh0ZXJuIHZvbGF0aWxlIHVpbnQxNl90IGFkY19idWZmW0FEQ19NQVhfQ0hfTlVNXTsKKworZXh0ZXJuIHZvaWQgYWRjX2luaXQodm9pZCk7CitleHRlcm4gdm9pZCBhZGNfdGltZXJfdGFzayh2b2lkKTsKK2V4dGVybiB1aW50MTZfdCBhZGNfZ2V0X3ZhbCh1aW50OF90IGNoKTsKK2V4dGVybiB2b2lkIGRhY19wYXJhX2F1dG9fc2V0KHZvaWQpOworZXh0ZXJuIHZvaWQgY2FsaWJyYXRlX2tleSh1aW50OF90IGZvcmNlKTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9zeXNfaHcvZHJ2X3VzYXJ0LmggYi9zeXNfaHcvZHJ2X3VzYXJ0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGNiMjJkZgotLS0gL2Rldi9udWxsCisrKyBiL3N5c19ody9kcnZfdXNhcnQuaApAQCAtMCwwICsxLDE1IEBACisjaWZuZGVmIF9fZHJ2X3VzYXJ0X2hfXworI2RlZmluZSBfX2Rydl91c2FydF9oX18KKworI2luY2x1ZGUgIi4uLy4uL3N0X2Z3X2xpYi9zdG0zMmYxMHguaCIKKyNpbmNsdWRlICJzdHJpbmcuaCIKKworI2RlZmluZSBHNDAxX1VBUlQ1X0ZXX1ZFUiAgICgweDAwMDEpCisKK2V4dGVybiB2b2lkIHVzYXJ0X2luaXQodm9pZCk7CitleHRlcm4gdm9pZCB1c2FydF9zZW5kKHU4KiBidWYsIHU4IGxlbik7CitleHRlcm4gdTE2IHVzYXJ0X3JlYWQodTgqIGRlc3QsIHUxNiBzeik7CitleHRlcm4gdm9pZCB1c2FydF9pc3JfcHJvYyh2b2lkKTsgCitleHRlcm4gdm9pZCBDb21PdmVyVGltZVByb2NlZWQodm9pZCk7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvc3lzX2h3L2tleXBhZC5jIGIvc3lzX2h3L2tleXBhZC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1OTljNDAKLS0tIC9kZXYvbnVsbAorKysgYi9zeXNfaHcva2V5cGFkLmMKQEAgLTAsMCArMSwxOTUgQEAKKyNpbmNsdWRlICJrZXlwYWQuaCIKKyNpbmNsdWRlICJzdHJpbmcuaCIKKyNpbmNsdWRlICIuLi9zdXB3aXNkb20vc3BfdXRpbC5oIgorI2luY2x1ZGUgImRydl9hZGMuaCIKKy8vI2luY2x1ZGUgInRpbWVyLmgiCisvLyNpbmNsdWRlICJJbmNsdWRlX0FsbC5IIgorLy8jaW5jbHVkZSAiZ2xjZC5oIgorLy8jaW5jbHVkZSAiZGJnLmgiCisKKyNkZWZpbmUgX19rZXlfZGJnX2VuX18gIDAKKyNpZihfX2tleV9kYmdfZW5fXykKKyNkZWZpbmUga2V5X2RiZyguLi4pICAgZGJnKF9fVkFfQVJHU19fKQorI2Vsc2UKKyNkZWZpbmUga2V5X2RiZyguLi4pCisjZW5kaWYKKworI2RlZmluZSBLRVlfRE9XTl9USFJFU0hPTEQgICAgMzAwdQorI2RlZmluZSBLRVlfVVBfVEhSRVNIT0xEICAgICAgMTAwdQorCitzdHJ1Y3Qga2V5X3N0YV90Cit7CisJdm9sYXRpbGUgdWludDE2X3QgYWRjX3ZhbF9wcmU7CisJdm9sYXRpbGUgdWludDE2X3QgYWRjX3ZhbF9sYXN0OworCXZvbGF0aWxlIHVpbnQxNl90IGFkY192YWxfbm93OworCXZvbGF0aWxlIHVpbnQxNl90IGRvd25fdGltZXI7CisJdm9sYXRpbGUgdWludDhfdCAgYWRjX2NoZ19jbnQ7CisJdm9sYXRpbGUgdWludDhfdCAgaXNfcHJlc3NlZDsKKwl2b2xhdGlsZSB1aW50OF90ICBpc19wcmVzc2VkX2xvbmc7CisJdm9sYXRpbGUgdWludDhfdCAgbG9uZ19wcmVzc2VkX3RpbWVyOworfTsKKworc3RydWN0Cit7CisJdm9sYXRpbGUgdWludDhfdCAgIGlzX2luaXRlZDsKKwl2b2xhdGlsZSB1aW50OF90ICAgbG9jazsKKwl2b2xhdGlsZSB1aW50MTZfdCAga2V5X3ZhbHVlOworCXN0cnVjdCAgIGtleV9zdGFfdCBrZXlfc3RhW01BWF9LRVlfTlVNXTsKK30ga2V5cGFkOworCit1aW50OF90IGtleXBhZF9pbml0KHZvaWQpCit7CisJdWludDhfdCBpOworCisJa2V5cGFkLmlzX2luaXRlZCA9IDA7CisJbWVtc2V0KCZrZXlwYWQsIDAsIHNpemVvZihrZXlwYWQpKTsKKwlEZWxheV9tcyg1MDApOworCWZvcihpPTA7IGk8TUFYX0tFWV9OVU07IGkrKykKKwl7CisJCWtleXBhZC5rZXlfc3RhW2ldLmFkY192YWxfcHJlID0gYWRjX2dldF92YWwoaSk7CisJfQorCWtleXBhZC5pc19pbml0ZWQgPSAxOworCXJldHVybiAwOworfQorCitfX3dlYWsgdm9pZCBrZXlwYWRfY2Jfb25fcHJlZXNlZCh1aW50OF90IGtleV92YWwpCit7CisKK30KKwordWludDhfdCBrZXlwYWRfZ2V0X2tleSh2b2lkKQoreworCWlmKGtleXBhZC5rZXlfdmFsdWUgIT0gS0VZX05PTkUpCisJeworCQl1aW50OF90IHRlbXAgPSBrZXlwYWQua2V5X3ZhbHVlOworCisJCWtleXBhZC5rZXlfdmFsdWUgPSBLRVlfTk9ORTsKKwkJa2V5cGFkX2NiX29uX3ByZWVzZWQodGVtcCk7CisJCXJldHVybiB0ZW1wOworCX0KKwlyZXR1cm4gS0VZX05PTkU7Cit9CisKK3ZvaWQga2V5cGFkX3NjYW4odm9pZCkKK3sKKwl1aW50OF90IGk7CisJdWludDE2X3QgbWF4X2RlbHQgPSAwOworCXVpbnQ4X3QgIGtleV9pZHggID0gTUFYX0tFWV9OVU07CisKKwlrZXlfZGJnKCJcclxuc3lzX3RpY2s6JXVcclxuIiwgc3lzX3RpbWVyX3RpY2spOworCWZvcihpPTA7IGk8TUFYX0tFWV9OVU07IGkrKykKKwl7CisJCWtleXBhZC5rZXlfc3RhW2ldLmFkY192YWxfbm93ID0gYWRjX2dldF92YWwoaSk7CisJCWlmKGtleXBhZC5rZXlfc3RhW2ldLmFkY192YWxfcHJlID09IDApCisJCXsKKwkJCWtleXBhZC5rZXlfc3RhW2ldLmFkY192YWxfcHJlID0gYWRjX2dldF92YWwoaSk7CisJCQlyZXR1cm47CisJCX0KKwkJaWYoa2V5cGFkLmtleV9zdGFbaV0uYWRjX3ZhbF9sYXN0ID09IDApCisJCXsKKwkJCWtleXBhZC5rZXlfc3RhW2ldLmFkY192YWxfbGFzdCA9IGFkY19nZXRfdmFsKGkpOworCQkJcmV0dXJuOworCQl9CisKKwkJaWYoa2V5cGFkLmtleV9zdGFbaV0uZG93bl90aW1lcikKKwkJeworCQkJa2V5cGFkLmtleV9zdGFbaV0uZG93bl90aW1lciAtLTsKKwkJCWlmKCFrZXlwYWQua2V5X3N0YVtpXS5kb3duX3RpbWVyKQorCQkJeworCQkJCWtleXBhZC5rZXlfc3RhW2ldLmlzX3ByZXNzZWQgPSAwOworCQkJCWtleXBhZC5rZXlfdmFsdWUgPSBpKzE7CisJCQkJa2V5cGFkLmtleV9zdGFbaV0uYWRjX3ZhbF9sYXN0ID0ga2V5cGFkLmtleV9zdGFbaV0uYWRjX3ZhbF9ub3c7CisJCQkJa2V5cGFkLmtleV9zdGFbaV0uYWRjX3ZhbF9wcmUgID0ga2V5cGFkLmtleV9zdGFbaV0uYWRjX3ZhbF9ub3c7CisJCQkJa2V5cGFkLmxvY2sgPSAwOworCQkJfQorCQl9CisKKwkJaWYoKGtleXBhZC5rZXlfc3RhW2ldLmFkY192YWxfbm93ID4ga2V5cGFkLmtleV9zdGFbaV0uYWRjX3ZhbF9sYXN0KSYmKCFrZXlwYWQua2V5X3N0YVtpXS5pc19wcmVzc2VkKSYmKCFrZXlwYWQubG9jaykpCisJCXsKKwkJCXVpbnQxNl90IHRlbXBfZGVsdCA9IGtleXBhZC5rZXlfc3RhW2ldLmFkY192YWxfbm93IC0ga2V5cGFkLmtleV9zdGFbaV0uYWRjX3ZhbF9sYXN0OworCisJCQlpZih0ZW1wX2RlbHQgPiBLRVlfRE9XTl9USFJFU0hPTEQpCisJCQl7CisJCQkJaWYoa2V5cGFkLmtleV9zdGFbaV0uYWRjX2NoZ19jbnQ8MTApCisJCQkJeworCQkJCQlrZXlwYWQua2V5X3N0YVtpXS5hZGNfY2hnX2NudCArKzsKKwkJCQl9CisKKwkJCQlpZih0ZW1wX2RlbHQ+bWF4X2RlbHQpCisJCQkJeworCQkJCQltYXhfZGVsdCA9IHRlbXBfZGVsdDsKKwkJCQkJa2V5X2lkeCAgPSBpOworCQkJCX0KKwkJCQllbHNlCisJCQkJeworCQkJCQlrZXlwYWQua2V5X3N0YVtpXS5hZGNfY2hnX2NudCAgPSAwOworCQkJCX0KKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQlrZXlwYWQua2V5X3N0YVtpXS5hZGNfdmFsX2xhc3QgPSBrZXlwYWQua2V5X3N0YVtpXS5hZGNfdmFsX3ByZTsKKwkJCQlrZXlwYWQua2V5X3N0YVtpXS5hZGNfdmFsX3ByZSA9IGtleXBhZC5rZXlfc3RhW2ldLmFkY192YWxfbm93OworCQkJCWtleXBhZC5rZXlfc3RhW2ldLmFkY19jaGdfY250ICA9IDA7CisJCQkJa2V5cGFkLmtleV9zdGFbaV0uaXNfcHJlc3NlZF9sb25nID0gMDsKKwkJCX0KKwkJfQorCQllbHNlCisJCXsKKwkJCWlmKGtleXBhZC5rZXlfc3RhW2ldLmlzX3ByZXNzZWQpCisJCQl7CisJCQkJaWYoa2V5cGFkLmtleV9zdGFbaV0uYWRjX3ZhbF9ub3cgPCBrZXlwYWQua2V5X3N0YVtpXS5hZGNfdmFsX3ByZSkKKwkJCQl7CisJCQkJCWlmKChrZXlwYWQua2V5X3N0YVtpXS5hZGNfdmFsX3ByZSAtIGtleXBhZC5rZXlfc3RhW2ldLmFkY192YWxfbm93KSA+IEtFWV9VUF9USFJFU0hPTEQpCisJCQkJCXsKKwkJCQkJCWtleXBhZC5rZXlfc3RhW2ldLmFkY19jaGdfY250ICsrOworCQkJCQl9CisJCQkJfQorCQkJCWVsc2UKKwkJCQl7CisJCQkJCWtleXBhZC5rZXlfc3RhW2ldLmFkY19jaGdfY250ID0gMDsKKwkJCQl9CisKKwkJCQlpZihrZXlwYWQua2V5X3N0YVtpXS5hZGNfY2hnX2NudCA+IDEpCisJCQkJeworCQkJCQlrZXlwYWQua2V5X3ZhbHVlID0gaSsxOworCQkJCQlrZXlwYWQua2V5X3N0YVtpXS5hZGNfdmFsX2xhc3QgPSBrZXlwYWQua2V5X3N0YVtpXS5hZGNfdmFsX3ByZTsKKwkJCQkJa2V5cGFkLmtleV9zdGFbaV0uYWRjX3ZhbF9wcmUgID0ga2V5cGFkLmtleV9zdGFbaV0uYWRjX3ZhbF9ub3c7CisJCQkJCWtleXBhZC5rZXlfc3RhW2ldLmFkY19jaGdfY250ID0gMDsKKwkJCQkJa2V5cGFkLmtleV9zdGFbaV0uaXNfcHJlc3NlZCA9IDA7CisJCQkJCWtleXBhZC5rZXlfc3RhW2ldLmRvd25fdGltZXIgPSAwOworCQkJCQlrZXlwYWQua2V5X3N0YVtpXS5pc19wcmVzc2VkX2xvbmcgPSAwOworCQkJCQlrZXlwYWQubG9jayA9IDA7CisJCQkJfQorCQkJfQorCQkJZWxzZQorCQkJeworCQkJCWtleXBhZC5rZXlfc3RhW2ldLmFkY192YWxfbGFzdCA9IGtleXBhZC5rZXlfc3RhW2ldLmFkY192YWxfcHJlOworCQkJCWtleXBhZC5rZXlfc3RhW2ldLmFkY192YWxfcHJlICA9IGtleXBhZC5rZXlfc3RhW2ldLmFkY192YWxfbm93OworCQkJCWtleXBhZC5rZXlfc3RhW2ldLmFkY19jaGdfY250ICA9IDA7CisJCQkJa2V5cGFkLmtleV9zdGFbaV0uaXNfcHJlc3NlZF9sb25nID0gMDsKKwkJCX0KKwkJfQorCQlrZXlfZGJnKCIlMDJ1OiU0aHUsJTRodSwlNGh1LCU0aHUsJTRoaHUsJTRoaHUsJTRoaHUsJTRoaHVcclxuIiwgaSwKKwkJICAgICAgICBrZXlwYWQua2V5X3N0YVtpXS5hZGNfdmFsX3ByZSwKKwkJICAgICAgICBrZXlwYWQua2V5X3N0YVtpXS5hZGNfdmFsX2xhc3QsCisJCSAgICAgICAga2V5cGFkLmtleV9zdGFbaV0uYWRjX3ZhbF9ub3csCisJCSAgICAgICAga2V5cGFkLmtleV9zdGFbaV0uZG93bl90aW1lciwKKwkJICAgICAgICBrZXlwYWQua2V5X3N0YVtpXS5hZGNfY2hnX2NudCwKKwkJICAgICAgICBrZXlwYWQua2V5X3N0YVtpXS5pc19wcmVzc2VkLAorCQkgICAgICAgIGtleXBhZC5rZXlfc3RhW2ldLmlzX3ByZXNzZWRfbG9uZywKKwkJICAgICAgICBrZXlwYWQua2V5X3N0YVtpXS5sb25nX3ByZXNzZWRfdGltZXIpOworCX0KKworCWlmKGtleV9pZHg8TUFYX0tFWV9OVU0pCisJeworCQlpZihrZXlwYWQua2V5X3N0YVtrZXlfaWR4XS5hZGNfY2hnX2NudD4wKQorCQl7CisJCQlrZXlwYWQua2V5X3N0YVtrZXlfaWR4XS5pc19wcmVzc2VkID0gMTsKKwkJCWtleXBhZC5rZXlfc3RhW2tleV9pZHhdLmRvd25fdGltZXIgPSA5OyAgIC8vsLS8/Mmow+jW3MbaMTEybXOjrDExMio51LzOqjEwMDhtcworCQkJa2V5cGFkLmtleV9zdGFba2V5X2lkeF0uYWRjX2NoZ19jbnQgID0gMDsKKwkJCWtleXBhZC5sb2NrID0gMTsKKworCQkJa2V5cGFkLmtleV9zdGFba2V5X2lkeF0uYWRjX3ZhbF9wcmUgPSBrZXlwYWQua2V5X3N0YVtrZXlfaWR4XS5hZGNfdmFsX25vdzsKKwkJfQorCX0KK30KZGlmZiAtLWdpdCBhL3N5c19ody9rZXlwYWQuaCBiL3N5c19ody9rZXlwYWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NWZkMDhmCi0tLSAvZGV2L251bGwKKysrIGIvc3lzX2h3L2tleXBhZC5oCkBAIC0wLDAgKzEsMjcgQEAKKyNpZm5kZWYgX19rZXlwYWRfaF9fCisjZGVmaW5lIF9fa2V5cGFkX2hfXworCisjaW5jbHVkZSAic3RkaW50LmgiCisKKyNkZWZpbmUgTUFYX0tFWV9OVU0gICAgICAoMTJ1KQorCisjZGVmaW5lIEtFWV9OT05FICAgICAgICAgKCAwdSkgICAgICAgICAgLy/nqbrpl7LnirbmPz8KKyNkZWZpbmUgS0VZX0RJRzAgICAgICAgICAoMTB1KSAgICAgICAgICAvL+aVsOWtl+mUPzAKKyNkZWZpbmUgS0VZX0RJRzEgICAgICAgICAoIDF1KSAgICAgICAgICAvL+aVsOWtl+mUPzEKKyNkZWZpbmUgS0VZX0RJRzIgICAgICAgICAoIDJ1KSAgICAgICAgICAvL+aVsOWtl+mUPzIKKyNkZWZpbmUgS0VZX0RJRzMgICAgICAgICAoIDN1KSAgICAgICAgICAvL+aVsOWtl+mUPzMKKyNkZWZpbmUgS0VZX0RJRzQgICAgICAgICAoIDR1KSAgICAgICAgICAvL+aVsOWtl+mUPzQKKyNkZWZpbmUgS0VZX0RJRzUgICAgICAgICAoIDV1KSAgICAgICAgICAvL+aVsOWtl+mUPzUKKyNkZWZpbmUgS0VZX0RJRzYgICAgICAgICAoIDZ1KSAgICAgICAgICAvL+aVsOWtl+mUPzYKKyNkZWZpbmUgS0VZX0RJRzcgICAgICAgICAoIDd1KSAgICAgICAgICAvL+aVsOWtl+mUPzcKKyNkZWZpbmUgS0VZX0RJRzggICAgICAgICAoIDh1KSAgICAgICAgICAvL+aVsOWtl+mUPzgKKyNkZWZpbmUgS0VZX0RJRzkgICAgICAgICAoIDl1KSAgICAgICAgICAvL+aVsOWtl+mUPzkKKyNkZWZpbmUgS0VZX0VOVEVSICAgICAgICAoMTJ1KSAgICAgICAgICAvL+ehruiupOmUPworI2RlZmluZSBLRVlfQ0FOQ0VMICAgICAgICgxMXUpICAgICAgICAgIC8v5Y+W5raI6ZQ/CisKK2V4dGVybiB1aW50OF90IGtleXBhZF9pbml0KHZvaWQpOworZXh0ZXJuIHVpbnQ4X3Qga2V5cGFkX2dldF9rZXkodm9pZCk7CitleHRlcm4gdm9pZCAgICBrZXlwYWRfc2Nhbih2b2lkKTsKK2V4dGVybiB2b2lkICAgIGtleXBhZF9jYl9vbl9wcmVlc2VkKHVpbnQ4X3Qga2V5X3ZhbCk7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvc3lzX2h3L3J0Yy5jIGIvc3lzX2h3L3J0Yy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxZjI2M2MKLS0tIC9kZXYvbnVsbAorKysgYi9zeXNfaHcvcnRjLmMKQEAgLTAsMCArMSwxNjUgQEAKKyNpbmNsdWRlICJydGMuaCIKKyNpbmNsdWRlICJ0aW1lLmgiCisjaW5jbHVkZSAiZGF0YV90b29scy5oIgorI2luY2x1ZGUgInN0cmluZy5oIgorI2luY2x1ZGUgInRpbWVyLmgiCisKK3VpbnQzMl90IENyeXN0YWxTdGFydEVyckZsYWc7CisKK3N0YXRpYyB1aW50OF90IHJ0Y193YWl0X2ZsYWcodWludDMyX3QqIHJlZywgdWludDMyX3QgbWFzaywgdWludDMyX3QgZmxhZywgdWludDMyX3QgdGltZW91dCkKK3sKKyAgICB1aW50MzJfdCB0ID0gdGltZW91dC8xMDA7CisgICAgCisgICAgd2hpbGUoKCgqcmVnKSZtYXNrKSAhPSBmbGFnKQorICAgIHsKKyAgICAgICAgZGVsYXlfbXMoMTAwKTsKKyAgICAgICAgdCAtLTsKKyAgICAgICAgaWYodCA9PSAwKQorICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIAorICAgIHJldHVybiAwOworfQorCit1aW50MzJfdCBydGNfZ2V0X2NvdW50ZXIodm9pZCkKK3sKKyAgICByZXR1cm4gKHVpbnQzMl90KSgoUlRDLT5DTlRIIDw8IDE2KSB8IFJUQy0+Q05UTCk7Cit9CisKK3N0YXRpYyB1aW50OF90IHJ0Y19zZXRfY291bnRlcih1aW50MzJfdCBjbnQpCit7CisgICAgUFdSLT5DUgkgfD0gUFdSX0NSX0RCUDsgICAgICAgICAJLy8gyrnE3LfDzspSVEMsIEJEQyC8xLTmxvcKKwlSVEMtPkNSTCB8PVJUQ19DUkxfQ05GOyAgICAJCSAgICAvLyDJ6NbDUlRDxeTWw7HqvMcs1MrQ7cXk1sMJCQkKKwlSVEMtPkNOVEggPSAoY250Pj4xNikmMHhmZmZmOworCVJUQy0+Q05UTCA9IGNudCYweGZmZmYgOworCVJUQy0+Q1JMICAmPSB+UlRDX0NSTF9DTkY7IAkJCS8vIMno1sNSVEPF5NbDseq8xyyyu9TK0O3F5NbDIAorICAgIGlmKHJ0Y193YWl0X2ZsYWcoKHVpbnQzMl90KikmUlRDLT5DUkwsIFJUQ19GTEFHX1JUT0ZGLCBSVENfRkxBR19SVE9GRiwgNDAwMHVsKSkgIC8vtci0/cXk1sPN6rPJIAorICAgIHsKKyAgICAgICAgUFdSLT5DUiAgICY9IH5QV1JfQ1JfREJQOyAgICAgIAkvLyCyu9TK0O3F5NbDUlRDoaJCREO8xLTmxvcgIAorICAgICAgICByZXR1cm4gMTsKKyAgICB9CisJUFdSLT5DUiAgICY9IH5QV1JfQ1JfREJQOyAgICAgIAkvLyCyu9TK0O3F5NbDUlRDoaJCREO8xLTmxvcgIAorICAgIHJldHVybiAwOyAgICAKK30KKwordm9pZCBydGNfaW5pdCh2b2lkKQoreworICAgIENyeXN0YWxTdGFydEVyckZsYWcgPSAwOworICAgIFJDQ19BUEIxUGVyaXBoQ2xvY2tDbWQoUkNDX0FQQjFQZXJpcGhfUFdSLCBFTkFCTEUpOyAKKworICAgIC8vUlRDyte0zsnPtee78sqx1tO2qsqnCisgICAgaWYoQktQX1JlYWRCYWNrdXBSZWdpc3RlcihCS1BfRFIxKSAhPSAweDVBNUEpCisgICAgeworICAgICAgICBSQ0NfQVBCMVBlcmlwaENsb2NrQ21kKFJDQ19BUEIxUGVyaXBoX0JLUCwgRU5BQkxFKTsgICAgICAgCisgICAgICAgIFBXUl9CYWNrdXBBY2Nlc3NDbWQoRU5BQkxFKTsKKyAgICAgICAgQktQX0RlSW5pdCgpOworICAgICAgICBSQ0NfTFNFQ29uZmlnKFJDQ19MU0VfT04pOworCisgICAgICAgIC8vss7V1XN0bTMyZjEweCBkYXRhc2hlZXSjrExFUyBzdGFydHVwIHRpbWUKKyAgICAgICAgLy90c3UobHNlKSA9IDNTIChUeXApCisgICAgICAgIC8vtMu0prXItP1MU0XG8NXx0dPKsdS8NFMKKyAgICAgICAgaWYocnRjX3dhaXRfZmxhZygodWludDMyX3QqKSZSQ0MtPkJEQ1IsIDB4MDIsIDB4MDIsIDQwMDB1bCkpCisgICAgICAgICAgICBDcnlzdGFsU3RhcnRFcnJGbGFnID0gMTsKKyAgICAgICAgCisgICAgICAgIGlmKCFDcnlzdGFsU3RhcnRFcnJGbGFnKQorICAgICAgICB7CisgICAgICAgICAgICBSQ0NfUlRDQ0xLQ29uZmlnKFJDQ19SVENDTEtTb3VyY2VfTFNFKTsKKyAgICAgICAgICAgIFJDQ19SVENDTEtDbWQoRU5BQkxFKTsKKwkJCS8qIENsZWFyIFJTRiBmbGFnICovCisJCQlSVEMtPkNSTCAmPSAodTE2KX5SVENfRkxBR19SU0Y7ICAgICAgICAgICAgCisJCQkvKiBMb29wIHVudGlsIFJTRiBmbGFnIGlzIHNldCAqLworICAgICAgICAgICAgaWYocnRjX3dhaXRfZmxhZygodWludDMyX3QqKSZSVEMtPkNSTCwgUlRDX0ZMQUdfUlNGLCBSVENfRkxBR19SU0YsIDQwMDB1bCkpCisgICAgICAgICAgICAgICAgQ3J5c3RhbFN0YXJ0RXJyRmxhZyA9IDE7CisgICAgICAgICAgICAKKwkJCS8vcnRjIHdhaXQgZm9yIGxhc3QgdGFzaworICAgICAgICAgICAgaWYocnRjX3dhaXRfZmxhZygodWludDMyX3QqKSZSVEMtPkNSTCwgUlRDX0ZMQUdfUlRPRkYsIFJUQ19GTEFHX1JUT0ZGLCA0MDAwdWwpKQorICAgICAgICAgICAgICAgIENyeXN0YWxTdGFydEVyckZsYWcgPSAxOworICAgICAgICAgICAgCisgICAgICAgICAgICBSVENfU2V0UHJlc2NhbGVyKDMyNzY3KTsKKwkJCS8vcnRjIHdhaXQgZm9yIGxhc3QgdGFzaworICAgICAgICAgICAgaWYocnRjX3dhaXRfZmxhZygodWludDMyX3QqKSZSVEMtPkNSTCwgUlRDX0ZMQUdfUlRPRkYsIFJUQ19GTEFHX1JUT0ZGLCA0MDAwdWwpKQorICAgICAgICAgICAgICAgIENyeXN0YWxTdGFydEVyckZsYWcgPSAxOyAgCisgICAgCisgICAgICAgICAgICBCS1BfV3JpdGVCYWNrdXBSZWdpc3RlcihCS1BfRFIxLCAweDVBNUEpOworICAgICAgICB9IAorICAgICAgICBQV1JfQmFja3VwQWNjZXNzQ21kKERJU0FCTEUpOyAKKyAgICAgICAgUkNDX0FQQjFQZXJpcGhDbG9ja0NtZChSQ0NfQVBCMVBlcmlwaF9CS1AsIERJU0FCTEUpOyAKKyAgICB9CisgICAgZWxzZQorICAgIHsKKwkJLyogQ2xlYXIgUlNGIGZsYWcgKi8KKwkJUlRDLT5DUkwgJj0gKHUxNil+UlRDX0ZMQUdfUlNGOworCQkvKiBMb29wIHVudGlsIFJTRiBmbGFnIGlzIHNldCAqLworICAgICAgICBpZihydGNfd2FpdF9mbGFnKCh1aW50MzJfdCopJlJUQy0+Q1JMLCBSVENfRkxBR19SU0YsIFJUQ19GTEFHX1JTRiwgNDAwMHVsKSkKKyAgICAgICAgICAgIENyeXN0YWxTdGFydEVyckZsYWcgPSAxOyAKKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICAvLzB4Mzg2RDQzODB1bCAyMDAwxOox1MIxyNXD68r9CisgICAgICAgICAgICBpZihydGNfZ2V0X2NvdW50ZXIoKTwweDM4NkQ0MzgwdWwpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcnRjX3NldF9jb3VudGVyKDB4Mzg2RDQzODB1bCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKy8vICAgICAgICAgICAgcnRjX2dldF90aW1lKCZTeXN0ZW1UaW1lKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordWludDMyX3QgcnRjX21rX3RpbWUoX1N5c3RlbVRpbWUqIHQpCit7CisgICAgc3RydWN0IHRtIHRlbXBfdGltZTsgCisgICAgX1N5c3RlbVRpbWUgdGVtcF90aW1lX2hleDsgCisKKyAgICBtZW1jcHkoJnRlbXBfdGltZV9oZXgsIHQsIHNpemVvZihfU3lzdGVtVGltZSkpOworICAgIGJjZDJoZXgoJnRlbXBfdGltZV9oZXgsIHNpemVvZih0ZW1wX3RpbWVfaGV4KSk7CisgICAgdGVtcF90aW1lLnRtX3llYXIgPSB0ZW1wX3RpbWVfaGV4LnllYXIrMTAwOyAgIC8vtNMxOTAwxOq/qsq8ICAgCisgICAgdGVtcF90aW1lLnRtX21vbiAgPSB0ZW1wX3RpbWVfaGV4Lm1vbnRoLTE7ICAKKyAgICB0ZW1wX3RpbWUudG1fbWRheSA9IHRlbXBfdGltZV9oZXguZGF5OyAgICAKKyAgICB0ZW1wX3RpbWUudG1fd2RheSA9IHRlbXBfdGltZV9oZXgud2VlazsgICAKKyAgICB0ZW1wX3RpbWUudG1faG91ciA9IHRlbXBfdGltZV9oZXguaG91cjsgICAKKyAgICB0ZW1wX3RpbWUudG1fbWluICA9IHRlbXBfdGltZV9oZXgubWludXRlOyAKKyAgICB0ZW1wX3RpbWUudG1fc2VjICA9IHRlbXBfdGltZV9oZXguc2Vjb25kOyAKKyAgICAKKyAgICByZXR1cm4gbWt0aW1lKCZ0ZW1wX3RpbWUpOworfQorCit1aW50OF90IHJ0Y19zZXRfdGltZShfU3lzdGVtVGltZSogdCkKK3sKKyAgICB1aW50OF90IHJldCA9IDA7CisgICAgdGltZV90IHNlY29uZHMgPSBydGNfbWtfdGltZSh0KTsKKyAgICAKKyAgICByZXQgPSBydGNfc2V0X2NvdW50ZXIoc2Vjb25kcyk7CisgICAgCisgICAgcmV0dXJuIHJldDsKK30KKwordWludDhfdCBydGNfZ2V0X3RpbWUoX1N5c3RlbVRpbWUqIHQpCit7CisgICAgc3RydWN0IHRtKiB0ZW1wX3RpbWU7CisgICAgX1N5c3RlbVRpbWUgdGVtcF90aW1lX2JjZDsKKyAgICB0aW1lX3Qgc2Vjb25kcyA9IHJ0Y19nZXRfY291bnRlcigpOworICAgIAorICAgIHRlbXBfdGltZSA9IGxvY2FsdGltZSgmc2Vjb25kcyk7CisgICAgaWYodGVtcF90aW1lLT50bV95ZWFyPDEwMCkKKyAgICAgICAgdGVtcF90aW1lX2JjZC55ZWFyID0gMDsKKyAgICBlbHNlCisgICAgICAgIHRlbXBfdGltZV9iY2QueWVhciAgID0gdGVtcF90aW1lLT50bV95ZWFyIC0gMTAwOworICAgIAorICAgIHRlbXBfdGltZV9iY2QubW9udGggID0gdGVtcF90aW1lLT50bV9tb24rMTsKKyAgICB0ZW1wX3RpbWVfYmNkLmRheSAgICA9IHRlbXBfdGltZS0+dG1fbWRheTsKKyAgICB0ZW1wX3RpbWVfYmNkLndlZWsgICA9IHRlbXBfdGltZS0+dG1fd2RheTsKKyAgICB0ZW1wX3RpbWVfYmNkLmhvdXIgICA9IHRlbXBfdGltZS0+dG1faG91cjsKKyAgICB0ZW1wX3RpbWVfYmNkLm1pbnV0ZSA9IHRlbXBfdGltZS0+dG1fbWluOworICAgIHRlbXBfdGltZV9iY2Quc2Vjb25kID0gdGVtcF90aW1lLT50bV9zZWM7CisgICAgaGV4MmJjZCgmdGVtcF90aW1lX2JjZCwgc2l6ZW9mKHRlbXBfdGltZV9iY2QpKTsKKyAgICBtZW1jcHkodCwgJnRlbXBfdGltZV9iY2QsIHNpemVvZih0ZW1wX3RpbWVfYmNkKSk7CisgICAgcmV0dXJuIDA7Cit9CisKK3VpbnQzMl90IHJ0Y190aW1lX2RpZmYodm9pZCogdDEsIHZvaWQqIHQyKQoreworICAgIHVpbnQzMl90IHQxX3NlYyA9IHJ0Y19ta190aW1lKChfU3lzdGVtVGltZSopdDEpOyAgICAKKyAgICB1aW50MzJfdCB0Ml9zZWMgPSBydGNfbWtfdGltZSgoX1N5c3RlbVRpbWUqKXQyKTsKKyAgICAKKyAgICByZXR1cm4gKHQxX3NlYy10Ml9zZWMpOworfQpkaWZmIC0tZ2l0IGEvc3lzX2h3L3J0Yy5oIGIvc3lzX2h3L3J0Yy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2MmVmYzMKLS0tIC9kZXYvbnVsbAorKysgYi9zeXNfaHcvcnRjLmgKQEAgLTAsMCArMSwyNyBAQAorI2lmbmRlZiBfX3J0Y19oX18KKyNkZWZpbmUgX19ydGNfaF9fCisKKyNpbmNsdWRlICJzdG0zMmYxMHguaCIKKworLy/Ptc2zyrG85L3hubkKK3R5cGVkZWYgc3RydWN0Cit7CisJdWludDhfdAkJCXllYXI7CQkJCQkJLy/E6gkKKwl1aW50OF90CQkJbW9udGg7CQkJCQkJLy/UwgorCXVpbnQ4X3QJCQlkYXk7CQkJCQkJLy/I1QorCXVpbnQ4X3QgCQl3ZWVrOyAgICAJCQkJCS8v0MfG2gorCXVpbnQ4X3QgCQlob3VyOwkJCQkJCS8vyrEKKwl1aW50OF90IAkJbWludXRlOwkJCQkJCS8vt9YKKwl1aW50OF90IAkJc2Vjb25kOwkJCQkJCS8vw+sKK31fU3lzdGVtVGltZSA7CisKKy8vZXh0ZXJuIF9TeXN0ZW1UaW1lIFN5c3RlbVRpbWUsU3lzdGVtVGltZUJhazsKKworZXh0ZXJuIHZvaWQgcnRjX2luaXQodm9pZCk7CitleHRlcm4gdWludDhfdCAgcnRjX3NldF90aW1lKF9TeXN0ZW1UaW1lKiB0KTsKK2V4dGVybiB1aW50OF90ICBydGNfZ2V0X3RpbWUoX1N5c3RlbVRpbWUqIHQpOworLy9leHRlcm4gdWludDMyX3QgcnRjX21rX3RpbWUoX1N5c3RlbVRpbWUqIHQpOworLy9leHRlcm4gdWludDMyX3QgcnRjX3RpbWVfZGlmZih2b2lkKiB0MSwgdm9pZCogdDIpOworLy9leHRlcm4gdWludDMyX3QgcnRjX2dldF9jb3VudGVyKHZvaWQpOworCisjZW5kaWYKZGlmZiAtLWdpdCBhL3N5c19ody90aW1lci5jIGIvc3lzX2h3L3RpbWVyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjY2ZWMzMgotLS0gL2Rldi9udWxsCisrKyBiL3N5c19ody90aW1lci5jCkBAIC0wLDAgKzEsNDMgQEAKKyNpbmNsdWRlICJ0aW1lci5oIgorI2luY2x1ZGUgImljY19hcGR1X2xpYl92MDIuaCIKKyNpbmNsdWRlICJIV19DQU5fTElCLkgiCisjaW5jbHVkZSAiZHJ2X2FkYy5oIgorI2luY2x1ZGUgImRydl92YWx2ZS5oIgorI2luY2x1ZGUgImRydl9mbG93c2Vuc29yLmgiCisjaW5jbHVkZSAiZHJ2X3VzYXJ0LmgiCisKKy8vc3RhdGljIHZ1MzIgdGltZXJ0aWNrID0gMDsKK3Z1MzIgdGltZXJ0aWNrID0gMDsKKwordm9pZCBTeXNUaWNrX2NmZyh2b2lkKQoreworICAgIFN5c1RpY2tfQ29uZmlnKFN5c3RlbUNvcmVDbG9jay8xMDAwdWwpOworfQorCit2b2lkIFRpbWVyVGljayh2b2lkKQorewkKKworCXVwZGF0ZV9zYW1fdGlja2VyKCk7CisJCisJYWRjX3RpbWVyX3Rhc2soKTsKKworCUNvbU92ZXJUaW1lUHJvY2VlZCgpOworCWh3X2Nhbl9zdGFfcHJvYygpOworCQorCXRpbWVydGljaysrOworCisJZmxvd3NlbnNvcl91cGRhdGVfY291bnQoKTsKKworCXZhbHZlX3RpbWVyX2RlYygpOworfQorCit1MzIgdGltZXJfZ2V0X3RpY2tlcih2b2lkKQoreworCXJldHVybiB0aW1lcnRpY2s7Cit9Cit2b2lkIGRlbGF5X21zKHUzMiB0KQoreworICAgIHUzMiB0ZW1wID0gdGltZXJ0aWNrOworCisgICAgd2hpbGUoKHRpbWVydGljayAtIHRlbXApIDwgdCk7Cit9CmRpZmYgLS1naXQgYS9zeXNfaHcvdGltZXIuaCBiL3N5c19ody90aW1lci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3MmJkYmEKLS0tIC9kZXYvbnVsbAorKysgYi9zeXNfaHcvdGltZXIuaApAQCAtMCwwICsxLDExIEBACisjaWZuZGVmIF9fdGltZXJfaF9fCisjZGVmaW5lIF9fdGltZXJfaF9fCisKKyNpbmNsdWRlICJzdG0zMmYxMHguaCIKKworLy9leHRlcm4gdm9pZCBTeXNUaWNrX2NmZyh2b2lkKTsKK2V4dGVybiB2b2lkIFRpbWVyVGljayh2b2lkKTsKK2V4dGVybiB1MzIgdGltZXJfZ2V0X3RpY2tlcih2b2lkKTsKK2V4dGVybiB2b2lkIGRlbGF5X21zKHUzMiB0KTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS96ay9nYjIzMTJfMTYuYyBiL3prL2diMjMxMl8xNi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3OWE5MGEKLS0tIC9kZXYvbnVsbAorKysgYi96ay9nYjIzMTJfMTYuYwpAQCAtMCwwICsxLDIyNyBAQAorI2luY2x1ZGUgImdsY2QuaCIKKy8vI2luY2x1ZGUgInRpbWVyLmgiCisjaW5jbHVkZSAiLi4vbmVjX2hhcmR3YXJlLmgiCisjaW5jbHVkZSAiZ2IyMzEyXzE2LmgiCisjaW5jbHVkZSAic3RyaW5nLmgiCisjaW5jbHVkZSAic3RkaW8uaCIKKwordWludDhfdCBnYjIzMTJfMTZ4MTZfZHJhd19jaGFyKHVpbnQ4X3QgeCwgdWludDhfdCB5LCB1aW50OF90IGJ1ZlszMl0pCit7CisgICAgdWludDhfdCBpLGo7CisgICAgCisgICAgZm9yKGk9MDtpPDE2O2krKykKKyAgICB7CisgICAgICAgIGZvcihqPTA7ajwyO2orKykKKyAgICAgICAgeworICAgICAgICAgICAgdWludDhfdCBkYXQsYml0OworICAgICAgICAgICAgCisgICAgICAgICAgICBkYXQgPSBidWZbMippK2pdOworCQkJCisJCQlpZihnbGNkX2dldF9yZXZlcnNlX3N0YSgpKQorCQkJCWRhdCA9IH5kYXQ7CisJCQkKKyAgICAgICAgICAgIGZvcihiaXQ9MDtiaXQ8ODtiaXQrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoZGF0ICYgKDB4ODA+PmJpdCkpIAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgZ2xjZF9zZXRfcGl4ZWwoeCtqKjgrYml0LCB5K2ksIEJMQUNLKTsKKyAgICAgICAgICAgICAgICB9IAorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGdsY2Rfc2V0X3BpeGVsKHgraio4K2JpdCwgeStpLFdISVRFKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9IAorCisgICAgcmV0dXJuIDE2OworfQorCit2b2lkIGdiMjMxMl8xNngxNl9nZXRfZGF0YSh1aW50OF90IHh5WzJdLCB1aW50OF90IGJ1ZlszMl0pCit7CisgICAgdWludDMyX3Qgb2Zmc2V0OworICAgIAorICAgIGlmKCh4eVswXTwweGExKSB8fCAoeHlbMV0pPDB4YTEpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBvZmZzZXQgPSAoOTQqKHh5WzBdIC0gMHhhMSkgKyAoeHlbMV0gLSAweGExKSkqMzJ1bDsKKyAgICAKKyAgICBIV19GbGFzaF9SZWFkKG9mZnNldCsyNTYsIDMyLCBidWYpOworfQorCit1aW50OF90IGdiMjMxMl8xNng4X2RyYXdfY2hhcih1aW50OF90IHgsIHVpbnQ4X3QgeSwgdWludDhfdCBidWZbMTZdKQoreworICAgIHVpbnQ4X3QgaTsKKyAgICAKKyAgICBmb3IoaT0wO2k8MTY7aSsrKQorICAgIHsKKyAgICAgICAgdWludDhfdCBkYXQsYml0OworICAgICAgICAgICAgCisgICAgICAgIGRhdCA9IGJ1ZltpXTsKKwkJCQorCQlpZihnbGNkX2dldF9yZXZlcnNlX3N0YSgpKQorCQkJZGF0ID0gfmRhdDsKKyAgICAgICAgZm9yKGJpdD0wO2JpdDw4O2JpdCsrKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoZGF0ICYgKDB4ODA+PmJpdCkpIAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGdsY2Rfc2V0X3BpeGVsKHgrYml0LCB5K2ksIEJMQUNLKTsKKyAgICAgICAgICAgIH0gCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZ2xjZF9zZXRfcGl4ZWwoeCtiaXQsIHkraSxXSElURSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9IAorCisgICAgcmV0dXJuIDg7Cit9CisKK3ZvaWQgZ2IyMzEyXzE2eDhfZ2V0X2RhdGEodWludDhfdCBjLCB1aW50OF90IGJ1ZlsxNl0pCit7CisgICAgdWludDMyX3Qgb2Zmc2V0OworICAgIAorICAgIG9mZnNldCA9IGMqMTZ1bCArIDB4NDMwMDA7CisgICAgCisgICAgSFdfRmxhc2hfUmVhZChvZmZzZXQsIDE2LCBidWYpOyAgICAKK30KKwordm9pZCBnYjIzMTJfMTZ4MTZfdGVzdCh2b2lkKQoreworICAgIHVpbnQzMl90IGksajsKKyAgICAKKyAgICBIV19GbGFzaF9Jbml0KCk7CisgICAgZ2xjZF9pbml0KCk7CisgICAgZ2xjZF9jbGVhcigpOworICAgIAorICAgIGZvcihpPTB4YTE7aTwweGZlO2krKykKKyAgICB7CisgICAgICAgIHVpbnQ4X3QgeHlbMl07CisgICAgICAgICAgICAKKyAgICAgICAgeHlbMF0gPSBpOworICAgICAgICBmb3Ioaj0weGExO2o8MHhmZTtqKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIHVpbnQ4X3QgYnVmWzMyXTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgeHlbMV0gPSBqOworICAgICAgICAgICAgCisgICAgICAgICAgICBnYjIzMTJfMTZ4MTZfZ2V0X2RhdGEoeHksIGJ1Zik7ICAgICAgICAgICAgCisgICAgICAgICAgICBnYjIzMTJfMTZ4MTZfZHJhd19jaGFyKDAsIDAsIGJ1Zik7CisgICAgICAgICAgICBnbGNkX3dyaXRlKCk7CisgICAgICAgICAgICBkZWxheV9tcygxMDApOworICAgICAgICB9ICAgIAorICAgIH0KK30KKworCit2b2lkIGdiMjMxMl8xNng4X3Rlc3Qodm9pZCkKK3sKKyAgICB1aW50MzJfdCBpOworICAgIAorICAgIEhXX0ZsYXNoX0luaXQoKTsKKyAgICBnbGNkX2luaXQoKTsKKyAgICBnbGNkX2NsZWFyKCk7CisgICAgCisgICAgZm9yKGk9MDtpPDI1NjtpKyspCisgICAgeworICAgICAgICB1aW50OF90IGJ1ZlszMl07CisgICAgICAgIAorICAgICAgICBnYjIzMTJfMTZ4OF9nZXRfZGF0YShpLCBidWYpOyAgICAgICAgICAgIAorICAgICAgICBnYjIzMTJfMTZ4OF9kcmF3X2NoYXIoMCwgMCwgYnVmKTsKKyAgICAgICAgZ2xjZF93cml0ZSgpOworICAgICAgICBkZWxheV9tcyg1MCk7ICAgCisgICAgfQorfQorCit1aW50OF90IGdiMjMxMl8xNl9nZXRfdmVyKHVpbnQ4X3QgdmVyWzNdKQoreworCXVpbnQ4X3QgdGVtcF9idWZmWzIwXTsKKwkKKwlpZihIV19GbGFzaF9SZWFkKDAsIHNpemVvZih0ZW1wX2J1ZmYpLCB0ZW1wX2J1ZmYpKQorCQlyZXR1cm4gMTsKKwkKKwlpZihtZW1jbXAodGVtcF9idWZmLCBza19mb250X2lkLCA5KSkKKwkJcmV0dXJuIDI7CisJCisJbWVtY3B5KHZlciwgdGVtcF9idWZmKzksIDMpOworCXZlclswXSAtPSAnMCc7CisJdmVyWzFdIC09ICcwJzsKKwkKKwlyZXR1cm4gMDsKK30KKwordm9pZCBnYjIzMTJfMTZfZHJhd19zdHIodWludDhfdCB4LCB1aW50OF90IHksIGNoYXIqIHMpCit7CisgICAgdWludDhfdCBpPTAsaj0wOworICAgIAorICAgIHdoaWxlKCpzKQorICAgIHsKKyAgICAgICAgdWludDhfdCBidWZbMzJdOyAKKyAgICAgICAgCisjaWYgMSAgICAKKyAgICAgICAgaWYoeD49R0xDRF9MQ0RfV0lEVEggfHwgeT49R0xDRF9MQ0RfSEVJR0hUKQorICAgICAgICAgICAgcmV0dXJuIDsgICAgIAorI2Vsc2UgICAgICAgIAorICAgICAgICBpZih4K2kgPj0gR0xDRF9MQ0RfV0lEVEgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGogKz0gMTY7ICAvL7u70NAKKyAgICAgICAgICAgIGkgID0gMDsgICAvL7vYs7UKKyAgICAgICAgfQorICAgICAgICBpZih5K2ogPj0gR0xDRF9MQ0RfSEVJR0hUKQorICAgICAgICB7CisgICAgICAgICAgICBqID0gMDsKKyAgICAgICAgICAgIGkgPSAwOworICAgICAgICB9CisjZW5kaWYgICAgICAgIAorICAgICAgICBpZigodWludDhfdCkoKnMpPDEyOCkKKyAgICAgICAgeyAKKyAgICAgICAgICAgIGdiMjMxMl8xNng4X2dldF9kYXRhKCh1aW50OF90KSpzLCBidWYpOworICAgICAgICAgICAgaSArPSBnYjIzMTJfMTZ4OF9kcmF3X2NoYXIoeCtpLCB5K2osIGJ1Zik7ICAgICAgICAgICAgCisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBnYjIzMTJfMTZ4MTZfZ2V0X2RhdGEoKHVpbnQ4X3QgKilzLCBidWYpOyAgICAgICAgICAgIAorICAgICAgICAgICAgaSArPSBnYjIzMTJfMTZ4MTZfZHJhd19jaGFyKHgraSwgeStqLCBidWYpOworICAgICAgICAgICAgcyArKzsKKyAgICAgICAgfQorICAgICAgICBzICsrOworICAgIH0KK30KKwordWludDhfdCBnYjIzMTJfMTZfdmVyaWZ5KHZvaWQpCit7CisJY29uc3QgdWludDhfdCBmb250XzAxWzMyXSA9IAorCXsKKwkJMHgwMSwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwMSwgMHgwOCwgMHgwMSwgMHgxMCwgMHg3RCwgMHgyMCwgMHgwNSwgMHhDMCwgMHgwNSwgMHg0MCwgMHgwOSwgMHgyMCwgCisJCTB4MDksIDB4MjAsIDB4MTEsIDB4MTAsIDB4MTEsIDB4MTgsIDB4MjEsIDB4MEUsIDB4QzEsIDB4MDQsIDB4MDEsIDB4MDAsIDB4MDUsIDB4MDAsIDB4MDIsIDB4MDAKKwl9OworCWNvbnN0IHVpbnQ4X3QgZm9udF8wMlszMl0gPSAKKwl7CisJCTB4MTAsIDB4MDAsIDB4MTAsIDB4MjAsIDB4MTAsIDB4MTAsIDB4RkQsIDB4RkUsIDB4MTEsIDB4MDQsIDB4MTAsIDB4NTAsIDB4MTQsIDB4OEMsIDB4MTksIDB4MDQsIAorCQkweDMwLCAweDAwLCAweEQxLCAweEZDLCAweDEwLCAweDIwLCAweDEwLCAweDIwLCAweDEwLCAweDIwLCAweDEwLCAweDIwLCAweDUzLCAweEZFLCAweDIwLCAweDAwCisJfTsKKwljb25zdCB1aW50OF90IGZvbnRfMDNbMTZdID0gCisJeworCQkweDAwLCAweDAwLCAweDEwLCAweDM4LCAweDZDLCAweEM2LCAweEM2LCAweEZFLCAweEM2LCAweEM2LCAweEM2LCAweEM2LCAweDAwLCAweDAwLCAweDAwLCAweDAwCisJfTsKKwljb25zdCB1aW50OF90IGZvbnRfMDRbMTZdID0gCisJeworCQkweDAwLCAweDAwLCAweEZDLCAweDY2LCAweDY2LCAweDY2LCAweDdDLCAweDY2LCAweDY2LCAweDY2LCAweDY2LCAweEZDLCAweDAwLCAweDAwLCAweDAwLCAweDAwCisJfTsKKwl1aW50OF90IGJ1ZlszMl07CisJCisJZ2IyMzEyXzE2eDE2X2dldF9kYXRhKCLLriIsIGJ1Zik7CisJaWYobWVtY21wKGJ1ZiwgZm9udF8wMSwgc2l6ZW9mKGZvbnRfMDEpKSkKKwkJcmV0dXJuIDE7CisJZ2IyMzEyXzE2eDE2X2dldF9kYXRhKCK/2CIsIGJ1Zik7CisJaWYobWVtY21wKGJ1ZiwgZm9udF8wMiwgc2l6ZW9mKGZvbnRfMDIpKSkKKwkJcmV0dXJuIDI7CisJZ2IyMzEyXzE2eDhfZ2V0X2RhdGEoJ0EnLCBidWYpOworCWlmKG1lbWNtcChidWYsIGZvbnRfMDMsIHNpemVvZihmb250XzAzKSkpCisJCXJldHVybiAzOworCWdiMjMxMl8xNng4X2dldF9kYXRhKCdCJywgYnVmKTsKKwlpZihtZW1jbXAoYnVmLCBmb250XzA0LCBzaXplb2YoZm9udF8wNCkpKQorCQlyZXR1cm4gNDsKKwkKKwlyZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL3prL2diMjMxMl8xNi5oIGIvemsvZ2IyMzEyXzE2LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDQxZDhkOQotLS0gL2Rldi9udWxsCisrKyBiL3prL2diMjMxMl8xNi5oCkBAIC0wLDAgKzEsMTUgQEAKKyNpZm5kZWYgX19nYjIzMTJfMTZfaF9fCisjZGVmaW5lIF9fZ2IyMzEyXzE2X2hfXworCisjaW5jbHVkZSAic3RkaW50LmgiCisjaW5jbHVkZSAiZ2xjZC5oIgorCisjZGVmaW5lIHNrX2ZvbnRfaWQgICAgKGNoYXIqKSJza196a18xNl92IgorCitleHRlcm4gdWludDhfdCBnYjIzMTJfMTZ4OF9kcmF3X2NoYXIodWludDhfdCB4LCB1aW50OF90IHksIHVpbnQ4X3QgYnVmWzE2XSk7CitleHRlcm4gdWludDhfdCBnYjIzMTJfMTZ4MTZfZHJhd19jaGFyKHVpbnQ4X3QgeCwgdWludDhfdCB5LCB1aW50OF90IGJ1ZlszMl0pOworZXh0ZXJuIHZvaWQgZ2IyMzEyXzE2X2RyYXdfc3RyKHVpbnQ4X3QgeCwgdWludDhfdCB5LCBjaGFyKiBzKTsKK2V4dGVybiB1aW50OF90IGdiMjMxMl8xNl92ZXJpZnkodm9pZCk7CitleHRlcm4gdWludDhfdCBnYjIzMTJfMTZfZ2V0X3Zlcih1aW50OF90IHZlclszXSk7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvemsvc2tfemtfMTZfMTBBLmhleCBiL3prL3NrX3prXzE2XzEwQS5oZXgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzU4NzZlYgotLS0gL2Rldi9udWxsCisrKyBiL3prL3NrX3prXzE2XzEwQS5oZXgKQEAgLTAsMCArMSw4NzA5IEBACis6MjAwMDAwMDA3MzZCNUY3QTZCNUYzMTM2NUYzMTMwNDEwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwOTcKKzoyMDAwMjAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjBDMAorOjIwMDA0MDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMEEwCis6MjAwMDYwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwODAKKzoyMDAwODAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjA2MAorOjIwMDBBMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDQwCis6MjAwMEMwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAKKzoyMDAwRTAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAwMAorOjIwMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMERGCis6MjAwMTIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDYwMDAzMDAwMTAwMDAwMDAwMDAwMUYKKzoyMDAxNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzMDAwNDgwMDQ4MDAzMDAwMDAwMDAwMDBBRgorOjIwMDE2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMzAwMDc4MDA3ODAwMzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDZCCis6MjAwMTgwMDAwMDAwMDAwMDAwMDA3RkZFMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRTIKKzoyMDAxQTAwMDAwMDAwODIwMDgyMDA0NDAwNDQwMDI4MDAyODAwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2MgorOjIwMDFDMDAwMDAwMDAwMDAwMDAwMEM2MDBDNjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQ3Cis6MjAwMUUwMDAwMDAwMDAwMDAwMDAwMDAwMDI0MDAyNDAwNDgwMDQ4MDA5MDAwOTAwMTIwMDI0MDAwMDAwMDAwMDAwMDAwMDAwMkIKKzoyMDAyMDAwMDA0MDAwNDAwMDQwMDA4MDAwODAwMUZGODIwMDg0MDEwMDAxMDA4MjAwNDQwMDI4MDAxMDAwMEMwMDA0MDAwMDAzNAorOjIwMDIyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEZGRkUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEMxCis6MjAwMjQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM0YwNDQwRjgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjMKKzoyMDAyNjAwMDAyODAwMjgwMDI4MDAyODAwMjgwMDI4MDAyODAwMjgwMDI4MDAyODAwMjgwMDI4MDAyODAwMjgwMDI4MDAyODA1RQorOjIwMDI4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjMxODYzMTgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDY4Cis6MjAwMkEwMDAwMDAwMDAwMjAwMDQwMDA4MDAwQzAwMEMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTgKKzoyMDAyQzAwMDAwMDA2MDAwNjAwMDIwMDA0MDAwODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA3RQorOjIwMDJFMDAwMDAwMDAwNDQwMDg4MDExMDAxOTgwMTk4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEVGCis6MjAwMzAwMDAwMDAwMDE5ODAxOTgwMDg4MDExMDAyMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRjAKKzoyMDAzMjAwMDAwMDAwMDA0MDAwODAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDA4MDAwNDAwMDAwNQorOjIwMDM0MDAwMDAwMDQwMDAyMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDIwMDA0MDAwMDAwMDNECis6MjAwMzYwMDAwMDAwMDAwMjAwMDQwMDA4MDAxMDAwMjAwMDQwMDA4MDAwNDAwMDIwMDAxMDAwMDgwMDA0MDAwMjAwMDAwMDAwMDEKKzoyMDAzODAwMDAwMDA4MDAwNDAwMDIwMDAxMDAwMDgwMDA0MDAwMjAwMDQwMDA4MDAxMDAwMjAwMDQwMDA4MDAwMDAwMDAwMDA2MworOjIwMDNBMDAwMDAwODAwMTIwMDI0MDA0ODAwOTAwMTIwMDI0MDA0ODAwMjQwMDEyMDAwOTAwMDQ4MDAyNDAwMTIwMDA4MDAwNEMzCis6MjAwM0MwMDAyMDAwOTAwMDQ4MDAyNDAwMTIwMDA5MDAwNDgwMDI0MDA0ODAwOTAwMTIwMDI0MDA0ODAwOTAwMDIwMDA0MDAwMjUKKzoyMDAzRTAwMDAwMDAwMUMwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDAwMDAwMDAzMAorOjIwMDQwMDAwMDAwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDA3MDAwMDAwMDAwMEM5Cis6MjAwNDIwMDAwMDAwMDdDMDA0NDAwNUMwMDUwMDA1MDAwNTAwMDUwMDA1MDAwNTAwMDUwMDA1MDAwNTAwMDcwMDAwMDAwMDAwQjgKKzoyMDA0NDAwMDAwMDAwMUMwMDE0MDAxNDAwMTQwMDE0MDAxNDAwMTQwMDE0MDAxNDAwMTQwMDc0MDA0NDAwN0MwMDAwMDAwMDA0MAorOjIwMDQ2MDAwMDAwMDAwRkUwMDg0MDA4ODAwODgwMDkwMDA5MDAwOTAwMDkwMDA5MDAwOTAwMDg4MDA4ODAwODQwMEZFMDAwMEY4Cis6MjAwNDgwMDAwMDAwRkUwMDQyMDAyMjAwMjIwMDEyMDAxMjAwMTIwMDEyMDAxMjAwMTIwMDIyMDAyMjAwNDIwMEZFMDAwMDAwRTgKKzoyMDA0QTAwMDAwMDAwMEZFMDBGQzAwRjgwMEYwMDBGMDAwRTAwMEUwMDBFMDAwRTAwMEYwMDBGMDAwRjgwMEZDMDBGRTAwMDAxOAorOjIwMDRDMDAwMDAwMEZFMDA3RTAwM0UwMDFFMDAxRTAwMEUwMDBFMDAwRTAwMEUwMDFFMDAxRTAwM0UwMDdFMDBGRTAwMDAwMEY4Cis6MjAwNEUwMDAwMDAwMDAwMDAwMDAwMTAwMDEwMDAxMDAwRkUwMDEwMDAxMDAwMTAwMDAwMDBGRTAwMDAwMDAwMDAwMDAwMDAwMTgKKzoyMDA1MDAwMDAwMDAwMDAwMDAwMDEwMTAwODIwMDQ0MDAyODAwMTAwMDI4MDA0NDAwODIwMTAxMDAwMDAwMDAwMDAwMDAwMDBCRQorOjIwMDUyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDFGRjAwMDAwMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEFBCis6MjAwNTQwMDAwMDAwMDAwMDAwMDAwMDAwMDMwMDAzMDAwMDAwMDAwMDAwMDAwMzAwMDMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOEYKKzoyMDA1NjAwMDAwMDAwMTAwMDI4MDAyODAwNDQwMDQ0MDA4MjAwODIwMTAxMDEwMTAyMDA4MjAwODIwMDg0MDA0NDAwNDAwMDA1RQorOjIwMDU4MDAwMDAwMDQwMDQ0MDA0MjAwODIwMDgyMDA4MTAxMDEwMTAwODIwMDgyMDA0NDAwNDQwMDI4MDAyODAwMTAwMDAwMDNFCis6MjAwNUEwMDAwMDAwN0ZGQzIwMDQxMDA0MDgwMDA0MDAwMjAwMDEwMDAyMDAwNDAwMDgwMDEwMDQyMDA0N0ZGQzAwMDAwMDAwQjgKKzoyMDA1QzAwMDAwMDAzRkY4MTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwNzgzQzAwMDBCMAorOjIwMDVFMDAwMDAwMDIwMDgyMDA4MjAwODIwMDgyMDA4MjAwODIwMDgyMDA4MjAwODIwMDgyMDA4MTAxMDA4MjAwN0MwMDAwMDM0Cis6MjAwNjAwMDAwMDAwMDdDMDA4MjAxMDEwMjAwODIwMDgyMDA4MjAwODIwMDgyMDA4MjAwODIwMDgyMDA4MjAwODIwMDgwMDAwMTMKKzoyMDA2MjAwMDAwMDAwNzgwMTgwMDIwMDAyMDAwNDAwMDQwMDA3RjgwNDAwMDQwMDA0MDAwMjAwMDIwMDAxODAwMDc4MDAwMDBCRAorOjIwMDY0MDAwMDAwMDAwMDAwMDAwMTgzMDE4MzAwMDAwMDAwMDAwMDAwMDAwMDAwMDE4MzAxODMwMDAwMDAwMDAwMDAwMDAwMDdBCis6MjAwNjYwMDAwMDAwMDAwMDAwMDAwMDAyMDAwNDAwMDgwMDEwMDAyMDAwNDAwMDgwNDEwMEEyMDAxNDAwMDgwMDAwMDAwMDAwN0QKKzoyMDA2ODAwMDAwMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMUZGMDAwMDAzRQorOjIwMDZBMDAwMDI0MDAyNDAwMjQwMDI0MDAyNDAwMjQwMDQ4MDA0ODAwNDgwMDQ4MDA0ODAwOTAwMDkwMDA5MDAwOTAwMDkwMEVECis6MjAwNkMwMDAwMDAwMDAwNDAwMDgwMDEwMDAyMDAwNDAwMDgwMDEwMDAyMDAwNDAwMDgwMDEwMDAyMDAwN0ZGQzAwMDAwMDAwNjQKKzoyMDA2RTAwMDAwMDAwMDAwMDAwMDA3ODAxODYwMjAxMDIwMTA0MDA4NDAwODQwMDgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBDMworOjIwMDcwMDAwMDAwMDAwMDAwNzgwMTg2MDIwMTAyMDEwNDAwODQzMDg0MzA4NDAwODIwMTAyMDEwMTg2MDA3ODAwMDAwMDAwMEY1Cis6MjAwNzIwMDAwMDAwMDBDMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDA2MDAwMDAwRTcKKzoyMDA3NDAwMDAwNjAwMDkwMDA4MDAxMDAwMTAwMDc4MDA5NDAwOTQwMEE0MDBBNDAwNzgwMDIwMDAyMDAwNDAwMjQwMDE4MDBBRgorOjIwMDc2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA3RkZDMDAwMDdGRkMwMDAwN0ZGQzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA4Cis6MjAwNzgwMDAwMDAwMDAwMDE4NzAyMDg4NDEwNDQxMDQ0MjA0MjIwODFDMzAwMDAwN0ZGQzAwMDA3RkZDMDAwMDAwMDAwMDAwRUQKKzoyMDA3QTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMzgwNDQ3MDgwMEYwMzgwNDQ3MDgwMEYwMDAwMDAwMDAwMDAwMDAwMDAwMDA0MworOjIwMDdDMDAwMDAwMDAwMDAwMDAwMDAwMDM4Nzg0MDg0NDEwMjgxMDI4MTAyNDEwMjQyMDQzQzM4MDAwMDAwMDAwMDAwMDAwMDVGCis6MjAwN0UwMDAwMDAwMDAwMDAwMDAwMDAwM0M3RTQyODA0MTAwODEwMDgxMDA0MTAwNDI4MDNDN0UwMDAwMDAwMDAwMDAwMDAwN0QKKzoyMDA4MDAwMDAwMTAwMDIwMDAyMDAwNDAwMDQwN0ZGQzAwODAwMTAwMDIwMDdGRkMwNDAwMDQwMDA4MDAxMDAwMTAwMDIwMDAzRgorOjIwMDgyMDAwMDAwMDA0MTgwNDYwMDU4MDA2MDAxQzAwNjQwMDg0MDA2NDAwMUMwMDA2MDAwNTgwMDQ2MDA0MTgwMDAwMDAwMDFFCis6MjAwODQwMDAwMDAwMzA0MDBDNDAwMzQwMDBDMDAwNzAwMDRDMDA0MjAwNEMwMDcwMDBDMDAzNDAwQzQwMzA0MDAwMDAwMDAwNjAKKzoyMDA4NjAwMDAwMTgwMDYwMDE4MDA2MDAxODAwNjAwMDgwMDA2MDAwOTgwMDY2MDAxOTgwMDY2MDAxOTgwMDYwMDAxODAwMDAxMworOjIwMDg4MDAwMzAwMDBDMDAwMzAwMDBDMDAwMzAwMDBDMDAwMjAwMEMwMDMyMDBDQzAzMzAwQ0MwMzMwMDBDMDAzMDAwMDAwMEEzCis6MjAwOEEwMDAwMDAwMDAwMDAwMDAwMDAwM0M3ODQyODQ4MTAyODEwMjgxMDI0Mjg0M0M3ODAwMDAwMDAwMDAwMDAwMDAwMDAwQkIKKzoyMDA4QzAwMDAwMDAwMDAwMzAzMDMwMzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDMwMDAzMDAwMDAwMDAwMDAwMDA1MgorOjIwMDhFMDAwMDAwMDAwMDAwMDAwMDMwMDAzMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzMDMwMzAzMDAwMDAwMDAwMDAwMDMyCis6MjAwOTAwMDAwMDAwMDEwMDAzODAwNTQwMDkyMDExMTAwMTAwMDEwMDAxMDAwMTAwMDM4MDA0NDAwNDQwMDQ0MDAzODAwMDAwRUUKKzoyMDA5MjAwMDAwMDAwMzgwMDQ0MDA0NDAwNDQwMDM4MDAxMDAwMTAwM0ZGODAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAwMDBBNgorOjIwMDk0MDAwMDAwMDAwMDAzMDAwNDgwMDQ4MDAzMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEE3Cis6MjAwOTYwMDAwMDAwMDEwMDAxMDAwMTAwMDIwMDAyMDAwMjAwMDQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNkEKKzoyMDA5ODAwMDAwMDAwMjIwMDIyMDAyMjAwNDQwMDQ0MDA0NDAwODgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA5RAorOjIwMDlBMDAwMjAwMDUzRjQyNDBDMDgwNDA4MDQxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAwODA0MDgwNDA0MDgwM0YwMDAwMDExCis6MjAwOUMwMDAwMTAwMEZFODExMTgyMTA4MjEwODIxMDAxMTAwMEYwMDAxRTAwMTEwMDEwODIxMDgyMTA4MzExMDJGRTAwMTAwQzUKKzoyMDA5RTAwMDAwMDA0MDAyMjdFNDE4MTgxMDA4MjAwNDIwMDQyMDA0MjAwNDIwMDQyMDA0MTAwODE4MTgyN0U0NDAwMjAwMDBGNQorOjIwMEEwMDAwMDAxMDAwMjAwRkU4MTA1ODIwNDg0MDgwNDA4MDQxMDA0MTAwNDIwMDQyMDAyNDA4MTQxMDBGRTAxMDAwMjAwMEVBCis6MjAwQTIwMDAwMUMwMDIyMDAyMjAwMjAwMDIwMDAyMDAzRkUwMDIwMDAyMDAwMjAwM0EwMDQ2MDA0MjA0NDUwNDM4RjgwMDAwNDcKKzoyMDBBNDAwMDAwMDgzMDEwNDgyMDQ4NDA0ODgwNDkwMDMyMDAwNDAwMDgwMDExOEMyMjUyNDI1MjgyNTIwMjUyMDE4QzAwMDBCNQorOjIwMEE2MDAwMDc4MDA4NDAwOEMwMDQwMDAyMDAwMzAwMDQ4MDA4NDAwODQwMDU4MDAyMDAwMTAwMDQ4MDA4NDAwODQwMDc4MDlGCis6MjAwQTgwMDA2MDgwMjE0MDMxMDAzMTAwMjkxODI5MjQyOTI0MjkyNDI1MjQyNTI0MjUyNDI1MjQyMzE4MjMwMEExN0U0MTAwQTkKKzoyMDBBQTAwMDAxMDAwMTAwMDI4MDAyODAwMjgwMDQ0MEZDN0U0MDA0MzAxODA4MjAwODIwMTE5MDE2NTAxODMwMjAwODAwMDA5RAorOjIwMEFDMDAwMDEwMDAxMDAwMzgwMDM4MDAzODAwN0MwRkZGRTNGRjgxRkYwMEZFMDBGRTAxRkYwMUVGMDE4MzAyMDA4MDAwMDE2Cis6MjAwQUUwMDAwMDAwMDdDMDE4MzAyMDA4MjAwODQwMDQ0MDA0NDAwNDQwMDQ0MDA0MjAwODIwMDgxODMwMDdDMDAwMDAwMDAwRTQKKzoyMDBCMDAwMDAwMDAwN0MwMUZGMDNGRjgzRkY4N0ZGQzdGRkM3RkZDN0ZGQzdGRkMzRkY4M0ZGODFGRjAwN0MwMDAwMDAwMDBFNgorOjIwMEIyMDAwMDAwMDA3QzAxODMwMjdDODI4Mjg1MDE0NTAxNDUwMTQ1MDE0NTAxNDI4MjgyN0M4MTgzMDA3QzAwMDAwMDAwMDI1Cis6MjAwQjQwMDAwMTAwMDI4MDA0NDAwODIwMTAxMDIwMDg0MDA0ODAwMjQwMDQyMDA4MTAxMDA4MjAwNDQwMDI4MDAxMDAwMDAwMUQKKzoyMDBCNjAwMDAxMDAwMzgwMDdDMDBGRTAxRkYwM0ZGODdGRkNGRkZFN0ZGQzNGRjgxRkYwMEZFMDA3QzAwMzgwMDEwMDAwMDA4MgorOjIwMEI4MDAwMDAwMDdGRkM0MDA0NDAwNDQwMDQ0MDA0NDAwNDQwMDQ0MDA0NDAwNDQwMDQ0MDA0NDAwNDdGRkMwMDAwMDAwMDczCis6MjAwQkEwMDAwMDAwN0ZGQzdGRkM3RkZDN0ZGQzdGRkM3RkZDN0ZGQzdGRkM3RkZDN0ZGQzdGRkM3RkZDN0ZGQzAwMDAwMDAwRjYKKzoyMDBCQzAwMDAwMDAwMTAwMDI4MDA0NDAwNDQwMDgyMDA4MjAxMDEwMTAxMDIwMDgyMDA4NDAwNDQwMDRGRkZFMDAwMDAwMDBBNQorOjIwMEJFMDAwMDAwMDAxMDAwMzgwMDdDMDA3QzAwRkUwMEZFMDFGRjAxRkYwM0ZGODNGRjg3RkZDN0ZGQ0ZGRkUwMDAwMDAwMDg2Cis6MjAwQzAwMDAwMDAwNDMwNDIzMDgxMDEwMDgyMDA0NDAwMjgwNjEwQzYyOEMwNDQwMDgyMDEwMTAyMzA4NDMwNDgwMDIwMDAwNzkKKzoyMDBDMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyMDAwMzhGRkZFMDAzODAwMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNworOjIwMEM0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwODAwMzgwMEZGRkUzODAwMDgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDE3Cis6MjAwQzYwMDAwMTAwMDEwMDAzODAwMzgwMDdDMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwOUEKKzoyMDBDODAwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDdDMDAzODAwMzgwMDEwMDAxMDA3QQorOjIwMENBMDAwMDAwMDAwMDBGRkZDRkZGQ0ZGRkNGRkZDMDAwMDAwMDAwMDAwMDAwMEZGRkNGRkZDRkZGQ0ZGRkMwMDAwMDAwMDVDCis6MjAwQ0MwMDAwMDAwMDEwMDAwMDAwMTAwMDMwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAzODAwMDAwODMKKzoyMDBDRTAwMDAwMDAwNDQwMDAwMDA0NDAwQ0MwMDQ0MDA0NDAwNDQwMDQ0MDA0NDAwNDQwMDQ0MDA0NDAwRUUwMDAwMDAwMDA5MgorOjIwMEQwMDAwMDAwMDExMTAwMDAwMTExMDMzMzAxMTEwMTExMDExMTAxMTEwMTExMDExMTAxMTEwMTExMDNCQjgwMDAwMDAwMDMzCis6MjAwRDIwMDAwMDAwMjAwMDAwMDAyNzFDNjIwODIyMDgyMjA4MjExMDIxMTAyMTEwMjBBMDIwQTAyMEEwMjA0MDcwNDAwMDAwQUYKKzoyMDBENDAwMDAwMDAwMDAwMDAwMDM4MzgxMDEwMTAxMDEwMTAwODIwMDgyMDA0NDAwNDQwMDI4MDAyODAwMTAwMDEwMDAwMDBFNQorOjIwMEQ2MDAwMDAwMDAwMDgwMDAwNzFDODIwOTgyMDg4MjA4ODExMDgxMTA4MTEwODBBMDgwQTA4MEEwODA0MDgwNDFDMDAwMDdECis6MjAwRDgwMDAwMDAwMDAyNDAwMDBFM0E0NDE2QzQxMjQ0MTI0MjIyNDIyMjQyMjI0MTQyNDE0MjQxNDI0MDgyNDA4N0UwMDAwMDUKKzoyMDBEQTAwMDAwMDAwMDU0MDAwMEUzRDQ0MUZDNDE1NDQxNTQyMjU0MjI1NDIyNTQxNDU0MTQ1NDE0NTQwODU0MDhGRTAwMDBDNQorOjIwMERDMDAwMDAwMDQwMDAwMDAwNEUxQ0M0MDg0NDA4NDIxMDQxMTA0MEEwNDA0MDQwQTA0MTEwNDIwODQ0MDRFRTBFMDAwMDhGCis6MjAwREUwMDAwMDAwMDAwMDAwMDAzODM4MTAxMDA4MjAwNDQwMDI4MDAxMDAwMjgwMDQ0MDA4MjAxMDEwMjAwODcwMUMwMDAwQjIKKzoyMDBFMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBEMgorOjIwMEUyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEIyCis6MjAwRTQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOTIKKzoyMDBFNjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA3MgorOjIwMEU4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDUyCis6MjAwRUEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMzIKKzoyMDBFQzAwMDAwMDAwMjAwMDYwMDBBMDAwMjAwMDIwMDAyMDAwMjAwMDIwMDAyMDAwMjAwMDIwMDAyMDAwMjAwMDI0MDAwMDBBQQorOjIwMEVFMDAwMDAwMDBGMDAxMDgwMTA4MDAwODAwMDgwMDA4MDAxMDAwNjAwMDgwMDEwMDAxMDAwMTA4MDEwODAxRjkwMDAwMDQ1Cis6MjAwRjAwMDAwMDAwMEYwMDEwODAxMDgwMDA4MDAwODAwMTAwMDYwMDAxMDAwMDgwMDA4MDEwODAxMDgwMTA4MDBGMTAwMDAwQ0IKKzoyMDBGMjAwMDAwMDAwMzAwMDUwMDA1MDAwNTAwMDkwMDA5MDAwOTAwMTEwMDExMDAxRkMwMDEwMDAxMDAwMTAwMDEwODAxMDA3NgorOjIwMEY0MDAwMDAwMDFGODAxMDAwMTAwMDEwMDAxMDAwMTAwMDE3MDAxODgwMTA4MDAwODAwMDgwMTA4MDEwODAwRjEwMDAwMDI0Cis6MjAwRjYwMDAwMDAwMEYwMDEwODAxMDgwMTA4MDEwMDAxMDAwMTcwMDE4ODAxMDgwMTA4MDEwODAxMDgwMTA4MDBGMTAwMDAwRjQKKzoyMDBGODAwMDAwMDAxRkMwMTA0MDEwNDAwMDgwMDEwMDAxMDAwMTAwMDIwMDAyMDAwMjAwMDIwMDAyMDAwMjAwMDIwODAwMDAzOQorOjIwMEZBMDAwMDAwMDBGMDAxMDgwMTA4MDEwODAxMDgwMDkwMDA2MDAwOTAwMTA4MDEwODAxMDgwMTA4MDEwODAwRjEwMDAwMERCCis6MjAwRkMwMDAwMDAwMEYwMDEwODAxMDgwMTA4MDEwODAxMDgwMTE4MDBFODAwMDgwMDA4MDEwODAxMDgwMTA4MDBGMTAwMDAwNDQKKzoyMDBGRTAwMDAwMDAyM0MwNjQyMEE0MjAyNDIwMjQyMDI0MjAyNDIwMjQyMDI0MjAyNDIwMjQyMDI0MjAyNDIwMjNDODAwMDAzMworOjIwMTAwMDAwMDAwMDIwODA2MTgwQTI4MDIwODAyMDgwMjA4MDIwODAyMDgwMjA4MDIwODAyMDgwMjA4MDIwODAyMDkwMDAwMDNECis6MjAxMDIwMDAwMDAwMjNDMDY0MjBBNDIwMjAyMDIwMjAyMDIwMjA0MDIxODAyMjAwMjQwMDI0MDAyNDIwMjQyMDI3RTQwMDAwQzcKKzoyMDEwNDAwMDAwMDAyM0MwNjQyMEE0MjAyMDIwMjAyMDIwNDAyMTgwMjA0MDIwMjAyMDIwMjQyMDI0MjAyNDIwMjNDNDAwMDA1MQorOjIwMTA2MDAwMDAwMDIwQzA2MTQwQTE0MDIxNDAyMjQwMjI0MDIyNDAyNDQwMjQ0MDI3RjAyMDQwMjA0MDIwNDAyMDQ4MDAwMDIwCis6MjAxMDgwMDAwMDAwMjdFMDY0MDBBNDAwMjQwMDI0MDAyNDAwMjVDMDI2MjAyNDIwMjAyMDIwMjAyNDIwMjQyMDIzQzQwMDAwNzcKKzoyMDEwQTAwMDAwMDAyM0MwNjQyMEE0MjAyNDIwMjQwMDI0MDAyNUMwMjYyMDI0MjAyNDIwMjQyMDI0MjAyNDIwMjNDNDAwMDAxMworOjIwMTBDMDAwMDAwMDI3RjA2NDEwQTQxMDIwMjAyMDQwMjA0MDIwNDAyMDgwMjA4MDIwODAyMDgwMjA4MDIwODAyMDg0MDAwMDBECis6MjAxMEUwMDAwMDAwMjNDMDY0MjBBNDIwMjQyMDI0MjAyMjQwMjE4MDIyNDAyNDIwMjQyMDI0MjAyNDIwMjQyMDIzQzQwMDAwOUQKKzoyMDExMDAwMDAwMDAyM0MwNjQyMEE0MjAyNDIwMjQyMDI0MjAyNDYwMjNBMDIwMjAyMDIwMjQyMDI0MjAyNDIwMjNDNDAwMDA1RQorOjIwMTEyMDAwMDAwMDM4RTA0NTEwNDUxMDA1MTAwNTEwMDUxMDE5MTAyMTEwNDExMDQxMTA0MTEwNDUxMDQ1MTA3Q0U0MDAwMDU3Cis6MjAxMTQwMDAwMDAwNDAwNDgxMDI4MTAyODEwMjgxMDI4MTAyODEwMjgxMDI4MTAyODEwMjgxMDI4MTAyODEwMjQwMDQwMDAwRTMKKzoyMDExNjAwMDAwMDA0MDA0ODc4Mjg4NDI4ODQyODA0MjgwNDI4MDQyODA4MjgzMDI4NDAyODg0Mjg4NDI4RkMyNDAwNDAwMDAxMgorOjIwMTE4MDAwMDAwMDQwMDQ4NzgyODg0Mjg4NDI4MDQyODA4MjgzMDI4MDgyODA0MjgwNDI4ODQyODg0Mjg3ODI0MDA0MDAwMEJFCis6MjAxMUEwMDAwMDAwNDE4NDgyODI4MjgyODI4Mjg0ODI4NDgyODg4Mjg4ODI4RkUyODA4MjgwODI4MDgyODA4MjQwMDQwMDAwODEKKzoyMDExQzAwMDAwMDA0MDA0OEZDMjg4MDI4ODAyODgwMjhCODI4QzQyODg0MjgwNDI4MDQyODg0Mjg4NDI4NzgyNDAwNDAwMDBEMgorOjIwMTFFMDAwMDAwMDQwMDQ4NzgyODg0Mjg4NDI4ODAyODgwMjhCODI4QzQyODg0Mjg4NDI4ODQyODg0Mjg3ODI0MDA0MDAwMEFBCis6MjAxMjAwMDAwMDAwNDAwNDhGRTI4ODIyODgyMjgwNDI4MDgyODA4MjgwODI4MTAyODEwMjgxMDI4MTAyODEwMjQwMDQwMDAwMkEKKzoyMDEyMjAwMDAwMDA0MDA0ODc4Mjg4NDI4ODQyODg0Mjg4NDI4NzgyODg0Mjg4NDI4ODQyODg0Mjg4NDI4NzgyNDAwNDAwMDBGMQorOjIwMTI0MDAwMDAwMDQwMDQ4NzgyODg0Mjg4NDI4ODQyODg0Mjg4QzI4NzQyODA0MjgwNDI4ODQyODg0Mjg3ODI0MDA0MDAwMEExCis6MjAxMjYwMDAwMDAwNDAwNDg4RTI4OTEyODkxMjg5MTI4OTEyODkxMjg5MTI4OTEyODkxMjg5MTI4OTEyODhFMjQwMDQwMDAwMDQKKzoyMDEyODAwMDAwMDA0MDA0ODgyMjg4MjI4ODIyODgyMjg4MjI4ODIyODgyMjg4MjI4ODIyODgyMjg4MjI4ODIyNDAwNDAwMDBDRQorOjIwMTJBMDAwMDAwMDQwMDQ5MUUyOTIxMjkyMTI5MDEyOTAxMjkwMjI5MEMyOTEwMjkyMDI5MjEyOTIxMjkzRjI0MDA0MDAwMEFGCis6MjAxMkMwMDAwMDAwNDAwNDkxRTI5MjEyOTIxMjkwMTI5MDIyOTBDMjkwMjI5MDEyOTAxMjkyMTI5MjEyOTFFMjQwMDQwMDAwNzQKKzoyMDEyRTAwMDAwMDA0MDA0OTA2MjkwQTI5MEEyOTBBMjkxMjI5MTIyOTIyMjkyMjI5M0ZBOTAyMjkwMjI5MDIyNDAwNDAwMDA2RAorOjIwMTMwMDAwMDAwMDQwMDQ5M0YyOTIwMjkyMDI5MjAyOTJFMjkzMTI5MjEyOTAxMjkwMTI5MjEyOTIxMjkxRTI0MDA0MDAwMDQ4Cis6MjAxMzIwMDAwMDAwNDAwNDkxRTI5MjEyOTIxMjkyMDI5MjAyOTJFMjkzMTI5MjEyOTIxMjkyMTI5MjEyOTFFMjQwMDQwMDAwMjYKKzoyMDEzNDAwMDAwMDA0MDA0OTNGMjkyMTI5MjEyOTAyMjkwNDI5MDQyOTA0MjkwODI5MDgyOTA4MjkwODI5MDgyNDAwNDAwMDBCNgorOjIwMTM2MDAwMDAwMDQwMDQ5MUUyOTIxMjkyMTI5MjEyOTIxMjkxRTI5MjEyOTIxMjkyMTI5MjEyOTIxMjkxRTI0MDA0MDAwMEM4Cis6MjAxMzgwMDAwMDAwNDAwNDkxRTI5MjEyOTIxMjkyMTI5MjEyOTIzMjkxRDI5MDEyOTAxMjkyMTI5MjEyOTFFMjQwMDQwMDAwOUMKKzoyMDEzQTAwMDAwMDA0MDA0OUM3MkEyOEFBMjhBODI4QTgyOEE4NDhBODg4QTkwOEFBMDhBQTI4QUEyOEFCRTcyNDAwNDAwMDAzQgorOjIwMTNDMDAwMDdDMDE4MzAyMDA4NDEwNDQxMDQ4MTAyODEwMjgxMDI4MTAyODEwMjQxMDQ0MTA0MjAwODE4MzAwN0MwMDAwMEZDCis6MjAxM0UwMDAwN0MwMTgzMDIwMDg0N0M0NDQ0NDgwNDI4MDQyODE4MjgyMDI4NDAyNDQ0NDQ3QzQyMDA4MTgzMDA3QzAwMDAwQzgKKzoyMDE0MDAwMDA3QzAxODMwMjAwODQ3QzQ0NDQ0ODA0MjgwQzI4MzAyODBDMjgwNDI0NDQ0NDdDNDIwMDgxODMwMDdDMDAwMDBBQgorOjIwMTQyMDAwMDdDMDE4MzAyMDA4NDMwNDQ1MDQ4NTAyODUwMjg5MDI4OTAyOEZDMjQxMDQ0MTA0MjAwODE4MzAwN0MwMDAwMEFGCis6MjAxNDQwMDAwN0MwMTgzMDIwMDg0N0M0NDQwNDg0MDI4NDAyODdDMjgwNDI4MDQyNDQ0NDQ3QzQyMDA4MTgzMDA3QzAwMDAwNUYKKzoyMDE0NjAwMDA3QzAxODMwMjAwODQ3QzQ0NDQ0ODQwMjg0MDI4N0MyODQ0Mjg0NDI0NDQ0NDdDNDIwMDgxODMwMDdDMDAwMDBGNworOjIwMTQ4MDAwMDdDMDE4MzAyMDA4NDdDNDQ0NDQ4MDQyODA4MjgwODI4MTAyODEwMjQxMDQ0MTA0MjAwODE4MzAwN0MwMDAwMEY1Cis6MjAxNEEwMDAwN0MwMTgzMDIwMDg0N0M0NDQ0NDg0NDI4NDQyODM4Mjg0NDI4NDQyNDQ0NDQ3QzQyMDA4MTgzMDA3QzAwMDAwN0IKKzoyMDE0QzAwMDA3QzAxODMwMjAwODQ3QzQ0NDQ0ODQ0Mjg0NDI4N0MyODA0MjgwNDI0NDQ0NDdDNDIwMDgxODMwMDdDMDAwMDAxRgorOjIwMTRFMDAwMDdDMDE4MzAyMDA4NEJFNDRBMjQ4QTIyOEEyMjhBMjI4QTIyOEEyMjRBMjQ0QkU0MjAwODE4MzAwN0MwMDAwMEU4Cis6MjAxNTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQ0IKKzoyMDE1MjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBBQgorOjIwMTU0MDAwMDAwMDIwMDg0MDA0ODAwMjgwMDI4MDAyODAxMkJGRkE4MDAyODAwMjgwMDI4MDAyODAwMjQwMDQyMDA4MDAwMDU4Cis6MjAxNTYwMDAwMDAwMjAwODQwMDQ4MDIyOUZGMjgwMDI4MDAyODAwMjgwMDI4MDEyQkZGQTgwMDI4MDAyNDAwNDIwMDgwMDAwMDkKKzoyMDE1ODAwMDAwMDAyMDA4NDAyNDlGRjI4MDAyODAwMjgwNDI4RkUyODAwMjgwMDI4MDEyQkZGQTgwMDI0MDA0MjAwODAwMDBCQQorOjIwMTVBMDAwMDAwMDIwMDg0MDA0ODAwMkJGRkFBNDRBQTQ0QUE0NEFBNDRBQTQ0QUJGRkE4MDAyODAwMjQwMDQyMDA4MDAwMEI1Cis6MjAxNUMwMDAwMDAwMjAwODQwMjQ5RkYyODIwMjgyMDI4MjIyOUZGMjg0MjI4NDIyODQyMjg0MjJCRkZBNDAwNDIwMDgwMDAwRjQKKzoyMDE1RTAwMDAwMDAyMDA4NDAwNDgyMDI4MTAyODAxMkJGRkE4MDAyODAwMjg0NDI4NDIyODgxMjkwMTI0MDA0MjAwODAwMDAxNQorOjIwMTYwMDAwMDAwMDIwMDg0MjA0ODIwMjgyMDI4MjEyODI3QTgzODJCRTAyODIwMjgyMDI4MjIyODIyMjQxRTQyMDA4MDAwMDYyCis6MjAxNjIwMDAwMDAwMjAwODQwODQ4NDgyODQ4Mjg0ODI4NDgyODQ4Mjg4NDI4ODIyOTAxQUEwMTI4MDAyNDAwNDIwMDgwMDAwRTIKKzoyMDE2NDAwMDAwMDAyMDA4NDIwNDgyMDI4MjQyOUZFMjgyNDI4MjQyODI0Mjg0NDI4NDRBODg0QTkwM0E0MDA0MjAwODAwMDA2QgorOjIwMTY2MDAwMDAwMDIwMDg0MTA0ODEwMjgxMDI4MTEyQkZGQTgxMDI4MTAyODEwMjgxMDI4MTAyODEwMjQwMDQyMDA4MDAwMDJECis6MjAxNjgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNEEKKzoyMDE2QTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyQQorOjIwMTZDMDAwMDAwMDAzODAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMzgwMDAwMEY4Cis6MjAxNkUwMDAwMDAwMEVFMDA0NDAwNDQwMDQ0MDA0NDAwNDQwMDQ0MDA0NDAwNDQwMDQ0MDA0NDAwNDQwMDQ0MDBFRTAwMDAwREUKKzoyMDE3MDAwMDAwMDAzQkI4MTExMDExMTAxMTEwMTExMDExMTAxMTEwMTExMDExMTAxMTEwMTExMDExMTAxMTEwM0JCODAwMDA1NworOjIwMTcyMDAwMDAwMDc3MUMyMjA4MjIwODIyMDgyMTEwMjExMDIxMTAyMTEwMjBBMDIwQTAyMEEwMjBBMDIwNDA3MDQwMDAwMEM0Cis6MjAxNzQwMDAwMDAwNzAxQzIwMDgxMDEwMTAxMDA4MjAwODIwMDgyMDA0NDAwNDQwMDQ0MDAyODAwMjgwMDEwMDAxMDAwMDAwNEIKKzoyMDE3NjAwMDAwMDA3MURDMjA4ODIwODgyMDg4MTEwODExMDgxMTA4MTEwODBBMDgwQTA4MEEwODBBMDgwNDA4MDQxQzAwMDA0QworOjIwMTc4MDAwMDAwMEUzRkU0MTI0NDEyNDQxMjQyMjI0MjIyNDIyMjQyMjI0MTQyNDE0MjQxNDI0MTQyNDA4MjQwODdFMDAwMDhGCis6MjAxN0EwMDAwMDAwRTNGRTQxNTQ0MTU0NDE1NDIyNTQyMjU0MjI1NDIyNTQxNDU0MTQ1NDE0NTQxNDU0MDg1NDA4RkUwMDAwQUYKKzoyMDE3QzAwMDAwMDBFRTBFNDQwNDQyMDg0MjA4NDExMDQwQTA0MDQwNDBBMDQwQTA0MTEwNDExMDQyMDg0NDA0RUUwRTAwMDA5MAorOjIwMTdFMDAwMDAwMDcwMUMyMDA4MTAxMDA4MjAwNDQwMDI4MDAxMDAwMjgwMDI4MDA0NDAwODIwMTAxMDIwMDg3MDFDMDAwMEUyCis6MjAxODAwMDAwMDAwRTBFRTQwNDQyMDg0MTEwNDBBMDQwQTA0MDQwNDBBMDQwQTA0MTEwNDExMDQyMDg0NDA0NEUwRUUwMDAwNUQKKzoyMDE4MjAwMDAwMDBFMEZFNDA1NDIwOTQxMTE0MEExNDBBMTQwNDE0MEExNDBBMTQxMTE0MTExNDIwOTQ0MDU0RTBGRTAwMDA1RAorOjIwMTg0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDg4Cis6MjAxODYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjgKKzoyMDE4ODAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAwMDAwMTAwMDAwMDBBOAorOjIwMThBMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjQwMDI0MDAyNDAwNDgwMDQ4MDA0ODAwMDAwMDAwMDAwMDAwMDAwMDAwMEQ2Cis6MjAxOEMwMDAwMDAwMDAwMDA0NDAwNDQwMDQ3ODNGQzAwNDQwMDQ0MDA0NDAwNDc4M0ZDMDA0NDAwNDQwMDQ0MDAwMDAwMDAwRjIKKzoyMDE4RTAwMDAwMDAzODM4MTAxMDA4MjAwNDQwMDI4MDAyODAwMTAwMDEwMDBGRTAwMTAwMDEwMDAxMDAwMTAwMDM4MDAwMDA3MAorOjIwMTkwMDAwMDAwMDE4MDQyNDA4MjQxMDI0MjAyNDQwMjQ4MDE5MDAwMjAwMDQ2MDA4OTAxMDkwMjA5MDQwOTAwMDkwMDA2MEQ4Cis6MjAxOTIwMDAwMDAwMEYwMDEwODAxMDgwMTA4MDEwODAwQjAwMDQwMDFDMDAyMjcwNDEyMDQwQTA0MDQ0MjFBNDFFMTgwMDAwREIKKzoyMDE5NDAwMDEwMDAxMDAwMTAwMDIwMDAyMDAwNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBENworOjIwMTk2MDAwMDAwQzAwMTAwMDIwMDA0MDAwNDAwMDgwMDA4MDAwODAwMDgwMDA4MDAwODAwMDQwMDA0MDAwMjAwMDEwMDAwQ0VGCis6MjAxOTgwMDA2MDAwMTAwMDA4MDAwNDAwMDQwMDAyMDAwMjAwMDIwMDAyMDAwMjAwMDIwMDA0MDAwNDAwMDgwMDEwMDA2MDAwM0IKKzoyMDE5QTAwMDAwMDAwMDAwMDEwMDAxMDAyMTA4MTExMDA5MjAwNTQwMDEwMDAyODAwNDQwMDgyMDEwMTAwMDAwMDAwMDAwMDA1RQorOjIwMTlDMDAwMDAwMDAwMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDFGRjAwMTAwMDEwMDAxMDAwMTAwMDEwMDAwMDAwMDAwMDAwMEVFCis6MjAxOUUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDMwMDAzMDAwMTAwMDIwMDAwMDAwNTcKKzoyMDFBMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBCNworOjIwMUEyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMzAwMDMwMDAwMDAwMDAwMDQ2Cis6MjAxQTQwMDAwMDAwMDAwMDAwMDQwMDA4MDAxMDAwMjAwMDQwMDA4MDAxMDAwMjAwMDQwMDA4MDAxMDAwMjAwMDAwMDAwMDAwNEIKKzoyMDFBNjAwMDAwMDAwN0MwMDgyMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAwODIwMDdDMDAwMDA0OAorOjIwMUE4MDAwMDAwMDAxMDAwMzAwMDUwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwN0MwMDAwMDZDCis6MjAxQUEwMDAwMDAwMDdDMDA4MjAxMDEwMTAxMDAwMTAwMDEwMDBFMDAzMDAwNDAwMDgwMDEwMDAxMDEwMTAxMDFGRjAwMDAwODkKKzoyMDFBQzAwMDAwMDAwRkUwMTAxMDEwMTAwMDEwMDAyMDAwNDAwMTgwMDA0MDAwMjAwMDEwMDAxMDEwMTAxMDIwMEZDMDAwMDA0NworOjIwMUFFMDAwMDAwMDAxODAwMjgwMDI4MDAyODAwNDgwMDQ4MDA4ODAwODgwMTA4MDIwODAzRkYwMDA4MDAwODAwM0UwMDAwMDg1Cis6MjAxQjAwMDAwMDAwMUZGMDEwMDAxMDAwMTAwMDEwMDAxN0MwMTgyMDEwMTAwMDEwMDAxMDAwMTAxMDEwMTAyMDBGQzAwMDAwRjgKKzoyMDFCMjAwMDAwMDAwN0MwMDgyMDEwMTAxMDEwMTAwMDEwMDAxN0MwMTgyMDEwMTAxMDEwMTAxMDEwMTAwODIwMDdDMDAwMDBEOAorOjIwMUI0MDAwMDAwMDFGRjAxMDEwMTAxMDAwMjAwMDIwMDA0MDAwODAwMDgwMDEwMDAxMDAwMTAwMDIwMDAyMDAwMjAwMDAwMEFECis6MjAxQjYwMDAwMDAwMDdDMDA4MjAxMDEwMTAxMDEwMTAwODIwMDdDMDA4MjAxMDEwMTAxMDEwMTAxMDEwMDgyMDA3QzAwMDAwOTAKKzoyMDFCODAwMDAwMDAwN0MwMDgyMDEwMTAxMDEwMTAxMDEwMTAwODMwMDdEMDAwMTAwMDEwMTAxMDEwMTAwODIwMDdDMDAwMDA3OAorOjIwMUJBMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMzAwMDMwMDAwMDAwMzAwMDMwMDAwMDAwMDAwMDY1Cis6MjAxQkMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDMwMDAzMDAwMDAwMDMwMDAzMDAwMTAwMDIwMDAwMDAwMTUKKzoyMDFCRTAwMDAwMDAwMDBDMDAzMDAwQzAwMzAwMEMwMDMwMDA0MDAwMzAwMDBDMDAwMzAwMDBDMDAwMzAwMDBDMDAwMDAwMDAyRgorOjIwMUMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMUZGMDAwMDAwMDAwMUZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEE2Cis6MjAxQzIwMDAwMDAwNjAwMDE4MDAwNjAwMDE4MDAwNjAwMDE4MDAwNDAwMTgwMDYwMDE4MDA2MDAxODAwNjAwMDAwMDAwMDAwQjIKKzoyMDFDNDAwMDAwMDAwMDAwMDAwMDE4MDAyNDAwNDIwMDQyMDAwNDAwMDgwMDA4MDAwODAwMDgwMDA4MDAwMDAwMDgwMDAwMDA5MAorOjIwMUM2MDAwMDAwMDA3QzAxODIwMjAxMDQ2OTA0OTg4NDg4ODQ4ODg0ODg4NDk5MDQ2OTAyMDY0MTgwODA3RjAwMDAwMDAwMEQ0Cis6MjAxQzgwMDAwMDAwMDEwMDAyODAwMjgwMDQ0MDA0NDAwODIwMEZFMDEwMTAxMDEwMjAwODcwMUMwMDAwMDAwMDAwMDAwMDAwQUMKKzoyMDFDQTAwMDAwMDA3RkUwMjAxMDIwMTAyMDEwMjAyMDNGQzAyMDIwMjAxMDIwMTAyMDEwN0ZFMDAwMDAwMDAwMDAwMDAwMDBDNworOjIwMUNDMDAwMDAwMDBGRTAxMDEwMjAwODIwMDAyMDAwMjAwMDIwMDAyMDAwMjAwODEwMTAwRkUwMDAwMDAwMDAwMDAwMDAwMEY2Cis6MjAxQ0UwMDAwMDAwN0ZFMDIwMTAyMDA4MjAwODIwMDgyMDA4MjAwODIwMDgyMDA4MjAxMDdGRTAwMDAwMDAwMDAwMDAwMDAwQUUKKzoyMDFEMDAwMDAwMDA3RkZDMjAwNDIwMDQyMDAwMjAyMDNGRTAyMDIwMjAwMDIwMDQyMDA0N0ZGQzAwMDAwMDAwMDAwMDAwMDA1RQorOjIwMUQyMDAwMDAwMDdGRkMyMDA0MjAwNDIwMDAyMDIwM0ZFMDIwMjAyMDAwMjAwMDIwMDA3MDAwMDAwMDAwMDAwMDAwMDAwMDUxCis6MjAxRDQwMDAwMDAwMUZEMDIwMzA0MDEwNDAwMDQwMDA0MDAwNDAzODQwMTA0MDEwMjAxMDFGRTAwMDAwMDAwMDAwMDAwMDAwRUQKKzoyMDFENjAwMDAwMDA3MDFDMjAwODIwMDgyMDA4MjAwODNGRjgyMDA4MjAwODIwMDgyMDA4NzAxQzAwMDAwMDAwMDAwMDAwMDBENAorOjIwMUQ4MDAwMDAwMDAzODAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMzgwMDAwMDAwMDAwMDAwMDAwMDM0Cis6MjAxREEwMDAwMDAwMDM4MDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwNTAwMDUwMDAyMDAwMDAwMDAwMDAwMDAwMDAwOEQKKzoyMDFEQzAwMDAwMDA3MUMwMjEwMDIyMDAyNDAwMzgwMDI0MDAyMjAwMjEwMDIwODAyMDQwNzA3MDAwMDAwMDAwMDAwMDAwMDBFQworOjIwMURFMDAwMDAwMDcwMDAyMDAwMjAwMDIwMDAyMDAwMjAwMDIwMDAyMDAwMjAwODIwMDg3RkY4MDAwMDAwMDAwMDAwMDAwMENDCis6MjAxRTAwMDAwMDAwQzAwNjYwMEM1MDE0NDgyNDQ0NDQ0Mjg0NDEwNDQwMDQ0MDA0NDAwNEUwMEUwMDAwMDAwMDAwMDAwMDAwNzMKKzoyMDFFMjAwMDAwMDA2MDFDMzAwODI4MDgyNDA4MjIwODIxMDgyMDg4MjA0ODIwMjgyMDE4NzAwODAwMDAwMDAwMDAwMDAwMDAzNworOjIwMUU0MDAwMDAwMDA3QzAwODIwMTAxMDIwMDgyMDA4MjAwODIwMDgyMDA4MTAxMDA4MjAwN0MwMDAwMDAwMDAwMDAwMDAwMDlDCis6MjAxRTYwMDAwMDAwN0ZDMDIwMjAyMDEwMjAxMDIwMjAzRkMwMjAwMDIwMDAyMDAwMjAwMDcwMDAwMDAwMDAwMDAwMDAwMDAwNTQKKzoyMDFFODAwMDAwMDAwN0MwMDgyMDEwMTAyMDA4MjAwODIwMDgyMDA4MjAwODExOTAwODYwMDdDMDAwMzAwMDAwMDAwMDAwMDA2QgorOjIwMUVBMDAwMDAwMDdGQzAyMDIwMjAxMDIwMTAyMDIwM0ZDMDI0MDAyMjAwMjEwMDIwODA3MDcwMDAwMDAwMDAwMDAwMDAwMDFECis6MjAxRUMwMDAwMDAwMEZFODEwMTgyMDA4MjAwMDEwMDAwRkUwMDAxMDAwMDgyMDA4MzAxMDJGRTAwMDAwMDAwMDAwMDAwMDAwMEQKKzoyMDFFRTAwMDAwMDA3RkZDNDEwNDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDM4MDAwMDAwMDAwMDAwMDAwMDA5NworOjIwMUYwMDAwMDAwMDcwMUMyMDA4MjAwODIwMDgyMDA4MjAwODIwMDgyMDA4MjAwODEwMTAwRkUwMDAwMDAwMDAwMDAwMDAwMEU2Cis6MjAxRjIwMDAwMDAwNzAxQzIwMDgxMDEwMTAxMDA4MjAwODIwMDQ0MDA0NDAwMjgwMDI4MDAxMDAwMDAwMDAwMDAwMDAwMDAwRDAKKzoyMDFGNDAwMDAwMDBFMzhFNDEwNDQxMDQ0MTA0MjI4ODIyODgyMjg4MTQ1MDE0NTAwODIwMDgyMDAwMDAwMDAwMDAwMDAwMDAyQgorOjIwMUY2MDAwMDAwMDcwMUMxMDEwMDgyMDA0NDAwMjgwMDEwMDAyODAwNDQwMDgyMDEwMTA3MDFDMDAwMDAwMDAwMDAwMDAwMDJDCis6MjAxRjgwMDAwMDAwNzAxQzIwMDgxMDEwMDgyMDA0NDAwMjgwMDEwMDAxMDAwMTAwMDEwMDAzODAwMDAwMDAwMDAwMDAwMDAwRjgKKzoyMDFGQTAwMDAwMDAzRkY4MjAxMDIwMjAwMDQwMDA4MDAxMDAwMjAwMDQwMDA4MDgxMDA4M0ZGODAwMDAwMDAwMDAwMDAwMDA1NAorOjIwMUZDMDAwMDAwMDAwMEUwMDA4MDAwODAwMDgwMDA4MDAwODAwMDgwMDA4MDAwODAwMDgwMDA4MDAwODAwMEUwMDAwMDAwMDhECis6MjAxRkUwMDAwMDAwNDAwMDIwMDAxMDAwMDgwMDA0MDAwMjAwMDEwMDAwODAwMDQwMDAyMDAwMTAwMDA4MDAwNDAwMDAwMDAwNjYKKzoyMDIwMDAwMDAwMDBFMDAwMjAwMDIwMDAyMDAwMjAwMDIwMDAyMDAwMjAwMDIwMDAyMDAwMjAwMDIwMDBFMDAwMDAwMDAwMDBBMAorOjIwMjAyMDAwMDEwMDAyODAwMjgwMDQ0MDA0NDAwODIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEVCCis6MjAyMDQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDdGRkMwMDAwMDUKKzoyMDIwNjAwMDAwMDAwMDIwMDAyMDAwMTAwMDEwMDAwODAwMDgwMDA0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBFQworOjIwMjA4MDAwMDAwMDAwMDAwMDAwMDAwMDBGODAxMDQwMDA0MDBGNDAxMEMwMTA0MDEwNTAwRkEwMDAwMDAwMDAwMDAwMDAwMEEzCis6MjAyMEEwMDAwMDAwMDgwMDA4MDAwODAwMDgwMDBCQzAwQzIwMDgxMDA4MTAwODEwMEMyMDBCQzAwMDAwMDAwMDAwMDAwMDAwQ0EKKzoyMDIwQzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDdDMDA4MjAxMDAwMTAwMDEwMTAwODIwMDdDMDAwMDAwMDAwMDAwMDAwMDBFMgorOjIwMjBFMDAwMDAwMDAwMjAwMDIwMDAyMDAwMjAwN0EwMDg2MDEwMjAxMDIwMTAyMDA4NjAwN0EwMDAwMDAwMDAwMDAwMDAwMEIyCis6MjAyMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBGODAxMDQwMTA0MDFGQzAxMDAwMTAyMDBGQzAwMDAwMDAwMDAwMDAwMDAwQTIKKzoyMDIxMjAwMDAwMDAwMTAwMDI4MDAyODAwMjAwMDIwMDBGODAwMjAwMDIwMDAyMDAwMjAwMDIwMDAyMDAwMjAwMDIwMDAwMDBGNworOjIwMjE0MDAwMDAwMDAwMDAwMDAwMDAwMDA3QTAwODYwMTAyMDEwMjAxMDIwMDg2MDA3QTAwMDIwMDAyMDA4NDAwNzgwMDAwMEMyCis6MjAyMTYwMDAwMDAwMDgwMDA4MDAwODAwMDgwMDBCQzAwQzIwMDgyMDA4MjAwODIwMDgyMDA4MjAwMDAwMDAwMDAwMDAwMDAwODAKKzoyMDIxODAwMDAwMDAwMTAwMDEwMDAwMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAwMDAwMDAwMDAwMDAwMDAzNQorOjIwMjFBMDAwMDAwMDAxMDAwMTAwMDAwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDUwMDA1MDAwMjAwMDAwMDA5Cis6MjAyMUMwMDAwMDAwMDgwMDA4MDAwODAwMDgwMDA4ODAwOTAwMEEwMDBEMDAwODgwMDg0MDA4MjAwMDAwMDAwMDAwMDAwMDAwM0YKKzoyMDIxRTAwMDAwMDAwMzAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTQwMDE4MDAwMDAwMDAwMDAwMDAwMDAxMgorOjIwMjIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxQUMwMEQyMDA5MjAwOTIwMDkyMDA5MjAwOTMwMDAwMDAwMDAwMDAwMDAwMERBCis6MjAyMjIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDFCMDAwQzgwMDg4MDA4ODAwODgwMDg4MDA4QzAwMDAwMDAwMDAwMDAwMDAwMEYKKzoyMDIyNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDcwMDA4ODAxMDQwMTA0MDEwNDAwODgwMDcwMDAwMDAwMDAwMDAwMDAwMDA3MAorOjIwMjI2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxQjgwMEM0MDA4MjAwODIwMDgyMDBDNDAwQjgwMDgwMDA4MDAwODAwMDAwMDEwCis6MjAyMjgwMDAwMDAwMDAwMDAwMDAwMDAwMDNBMDA0NjAwODIwMDgyMDA4MjAwNDYwMDNBMDAwMjAwMDIwMDAyMDAwMzAwMDAwMjgKKzoyMDIyQTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDU4MDAyODAwMjAwMDIwMDAyMDAwMjAwMDIwMDAwMDAwMDAwMDAwMDAwMDAwRAorOjIwMjJDMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNzgwMDg0MDA4MDAwNzgwMDA0MDA4NDAwNzgwMDAwMDAwMDAwMDAwMDAwMDkxCis6MjAyMkUwMDAwMDAwMDIwMDAyMDAwMjAwMEY4MDAyMDAwMjAwMDIwMDAyMDAwMjAwMDI4MDAxMDAwMDAwMDAwMDAwMDAwMDAwQkMKKzoyMDIzMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEM0MDA0NDAwNDQwMDQ0MDA0NDAwNEMwMDM2MDAwMDAwMDAwMDAwMDAwMDAzQQorOjIwMjMyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwODIwMDgyMDA0NDAwNDQwMDI4MDAyODAwMTAwMDAwMDAwMDAwMDAwMDAwMEMwCis6MjAyMzQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDExMTAwOTIwMDkyMDBBQTAwQUEwMDQ0MDA0NDAwMDAwMDAwMDAwMDAwMDAwMkUKKzoyMDIzNjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDgyMDA0NDAwMjgwMDEwMDAyODAwNDQwMDgyMDAwMDAwMDAwMDAwMDAwMDA4MAorOjIwMjM4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwODIwMDQ0MDA0NDAwMjgwMDEwMDAxMDAwMjAwMDIwMDA0MDAwODAwMDAwMEY5Cis6MjAyM0EwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBGQzAwODQwMDA4MDAxMDAwMjAwMDQ0MDBGQzAwMDAwMDAwMDAwMDAwMDAwNzAKKzoyMDIzQzAwMDAwMDQwMDA4MDAwODAwMDgwMDA4MDAwODAwMTAwMDIwMDAxMDAwMDgwMDA4MDAwODAwMDgwMDA4MDAwNDAwMDA2NQorOjIwMjNFMDAwMDAwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDAwMENGCis6MjAyNDAwMDA0MDAwMjAwMDIwMDAyMDAwMjAwMDIwMDAxMDAwMDgwMDEwMDAyMDAwMjAwMDIwMDAyMDAwMjAwMDQwMDAwMDAwRDQKKzoyMDI0MjAwMEZGRkUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA5RgorOjIwMjQ0MDAwMDAwMDAwMDAwMDAwMDQwMDA0MjAyNUMwMUUwMDA0ODAwN0UwMEM5MDE0ODgyMzA4MjIwODI1MTAxODIwMDBDMDJDCis6MjAyNDYwMDAwNDAwMDQwMDA0NjA0NzgwM0MwMDA0NDAwNDQwMUZGMDI0NDg0Mjg0NDI4NDQxMDQyMjg0MUMwODAwMzAwMDAwMUYKKzoyMDI0ODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDE4MjAxMDEwMTAwODEwMTgxMDEwMTEwMDBBMDAwNjAwMDAwMDAwMDA1MworOjIwMjRBMDAwMDAwMDAwMDAwMDAwMjAyMDMwMTAyMDA4MjAwNDIwMDQyMDBDMjAwODIxMDAyMjAwMTQwMDBDMDAwMDAwMDAwMDc1Cis6MjAyNEMwMDAwMDAwMDAwMDBGODAwMTgwMDIwMDAwMDAxMUMwMEUyMDAwMjAwMDIwMDA0MDAwODAwMTAwMDIwMDBDMDAwMDAwREMKKzoyMDI0RTAwMDAwMDAwRjgwMDA0MDAxODAwMDAwMjFFMDFFMTAwMDEwMDAxMDAwMTAwMDIwMDAyMDAwQzAwMzAwMEMwMDAwMDAxRQorOjIwMjUwMDAwMDAwMDAwMDAwMDAwMDcwMDAwODAwMTAwMDAwMDAzQzAxQzgwMDEwMDAzMDAwNDgwMDg4MDEwNDAyMDM4MDAwMDFDCis6MjAyNTIwMDAwMDAwMEYwMDAwODAwMTAwMDAwMDAzQzAzQzgwMDEwMDAyMDAwMzgwMDQ4MDA0ODAwODgwMTA0MDIwM0MwMDAwQ0EKKzoyMDI1NDAwMDAwMDAwMDAwMDAwMDA0MDAwNDEwMDQwODNGMDQwNDA4MDdFMDA0MTAwQzA4MTQwODM0MDgxNTMwMDhDMDAwMDA5NAorOjIwMjU2MDAwMDAwMDA0MDAwNDEwMDc4ODNDMDQwNDE4MDVDMDA2MjAwQzEwMTQwODI0MDg2NDA4MzUxMDBDRTAwNDAwMDAwMDY4Cis6MjAyNTgwMDAwMDAwMDIwMDAyMDAwMjIwMDIxMDQzQzgzQzQ0MDQ1NDA0NEMwNDQwMDg0MDA4ODAxMDgwMjI4MDQxMDAwMDAwNDkKKzoyMDI1QTAwMDAwMTAwNDA4MDQyNDA0MTAwNDA4ODc4MDc4QTAwODkwMDg4ODA4ODQxMDk0MTEwQzIxMDA0NTAwODIwMDAwMDAzQgorOjIwMjVDMDAwMDIwMDAyMDAwMjYwMDM4MDFEMDAwMEUwMDM4MDFDNDAwMDQwMDNFMDAwMjAxMDAwMTAwMDA4MDAwN0MwMDAwMDA0Cis6MjAyNUUwMDAwNDAwMDQwODA0QzQwNzEyM0EwODAxQzQwNzAwMzg4MDAwODAwN0MwMDA0MDIwMDAyMDAwMTAwMDBGODAwMDAwQkUKKzoyMDI2MDAwMDAwMDAwMTAwMDA4MDAwODAwMTAwMDIwMDA0MDAwODAwMTAwMDA4MDAwNDAwMDIwMDAxMDAwMDgwMDA4MDAwMDA4QgorOjIwMjYyMDAwMDAwMDAyMDgwMTA0MDEyMjAyMTAwNDA4MDgwMDEwMDAyMDAwMTAwMDA4MDAwNDAwMDIwMDAxMDAwMTAwMDAwMEYyCis6MjAyNjQwMDAwMDAwMDA4MDEwNDAxMDQwMjA0MDIwNzgyN0MwNDA0MDQwNDA0MDQwNTA0MDUwNDAyMDQwMjA4MDAxMDAwMDAwREEKKzoyMDI2NjAwMDAwMDgwMDg0MTA1MjEwNDgyMDQ0MjA3MDI3QzA0MDQwNDA0MDQwNDA1MDQwNTA0MDIwNDAyMDgwMDEwMDAwMDA5OAorOjIwMjY4MDAwMDAwMDAwMDAxMDAwMEZFMDAwODAwMzAwMDQwMDAwMDAyMDAwMjAwMDIwMDAxMDEwMEZGODAwMDAwMDAwMDAwMDJECis6MjAyNkEwMDAwMDAwMDAwMDEwMDgwRkU0MDA4MjAzMTAwNDA4MDAwNDIwMDAyMDAwMjAwMDEwMTAwRkY4MDAwMDAwMDAwMDAwRTMKKzoyMDI2QzAwMDAwMDAwNDAwMDIzMDAyQzAzRjAwMDEwMDAwODAwMDQwMDFFMDA4MjAxMDAwMTAwMDEwMDAwODAwMDdFMDAwMDBEQQorOjIwMjZFMDAwMDAwMDA0MDgwMjA0MDJEMjNGMDgwMTA0MDA4MDAwNDAwMUUwMDgyMDEwMDAxMDAwMTAwMDA4MDAwN0UwMDAwMEMwCis6MjAyNzAwMDAwMDAwMTgwMDBDMDAwODAwMDgwMDA4MDAwODAwMDgwMDA4MDAwODAwMDgxMDA4MjAwODQwMDk4MDA2MDAwMDAwNDYKKzoyMDI3MjAwMDAwMDAxODEwMEMwODA4MjQwODEwMDgwODA4MDAwODAwMDgwMDA4MDAwODEwMDgyMDA4NDAwOTgwMDYwMDAwMDBEMgorOjIwMjc0MDAwMDAwMDAzMDAwMTAwMDEwMDdGRjgwMTAwMDcwMDA5ODAwOTgwMDk4MDA2ODAwMDgwMDEwMDAxMDAwMjAwMEMwMDQ0Cis6MjAyNzYwMDAwMzA4MDEwNDAxMTIwMTA4N0ZGNDAxMDAwNzAwMDk4MDA5ODAwOTgwMDY4MDAwODAwMTAwMDEwMDAyMDAwQzAwMDEKKzoyMDI3ODAwMDAwMDAwMDgwMTA0MDA4NDAwODQwMEJGQzdDNDAwODQwMDg0MDA4NDAwOTQwMDg4MDA4MDAwODAwMDdGMDAwMDA2NgorOjIwMjdBMDAwMDAwODAwODQxMDUyMDg0ODA4NDQwQkYwN0M0MDA4NDAwODQwMDg0MDA5NDAwODgwMDgwMDA4MDAwN0YwMDAwMDI4Cis6MjAyN0MwMDAwMDAwMTAwMDBGODAwMTAwMDIwMDA0MTAwOEY4MUYwMDIyMDA0NDAwMDQwMDA0MDAwMjAwMDFGMDAwMDAwMDAwQzMKKzoyMDI3RTAwMDAwMDgxMDI0MEY5MjAxMDgwMjAwMDQxMDA4RjgxRjAwMjIwMDQ0MDAwNDAwMDQwMDAyMDAwMUYwMDAwMDAwMDA1RAorOjIwMjgwMDAwMDAwMDA0MDAwNDAwNDcwMDNDMDAwOUUwMDgzMDA4NDAxMDAwMTAwMDEyMDAyMjAwMjEwODQwRkMwMDAwMDAwMDBCCis6MjAyODIwMDAwMDA4MDQwNDA0MTI0NzA4M0MwNDA5RTAwODMwMDg0MDEwMDAxMDAwMTIwMDIyMDAyMTA4NDBGQzAwMDAwMDAwQzEKKzoyMDI4NDAwMDAwMDAwMjAwMDIwMDAyODAwM0MwN0UwMDA0MDAwN0MwMDQyMDBDMTAwODEwMDAxMDAwMjAwMDIwMDBDMDAzMDA3QgorOjIwMjg2MDAwMDAwMDA0MDgwNDA0MDUxMjA3ODg3QzA0MDgwMDBCQzAwQzIwMTgxMDEwMTAwMDEwMDAyMDAwMjAwMEMwMDMwMEM0Cis6MjAyODgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBDMDFGMjAwODEwMDAxMDAwMTAwMDIwMDA0MDAxODAwMDAwMjAKKzoyMDI4QTAwMDAwMDAwMDAwMDAwMDAxRTAwNjEwNzgwODIwMDgwMDA4MDAwODAwMDgwMDEwMDAyMDAwQzAwNzAwMDAwMDAwMDA2QQorOjIwMjhDMDAwMDAwODAwMDQwMDEyMDNDODBDMjRGMDEwNDAxMDAwMTAwMDEwMDAxMDAwMjAwMDQwMDE4MDBFMDAwMDAwMDAwMDcwCis6MjAyOEUwMDAwMDAwMDAwMDAwMDAwMDA4MDBGQzdGQzAyMTAwMDIwMDA0MDAwNDAwMDQwMDA0MDAwNDAwMDIwMDAxRjAwMDAwNkIKKzoyMDI5MDAwMDAwMDAwMDAwMDAwMDAwMDgwMEZDN0ZDMDIxMDgwMjA0MDQxMjA0MDgwNDA0MDQwMDA0MDAwMjAwMDFGMDAwMDAyMAorOjIwMjkyMDAwMDAwMDAwMDAwMjAwMDEwMDAxMDAwMTMwMDE2MDAxODAwNjAwMDgwMDEwMDAxMDAwMTAwMDA4MDAwN0UwMDAwMDUzCis6MjAyOTQwMDAwMDA4MDAwNDAyMTIwMTA4MDEwNDAxMzAwMTYwMDE4MDA2MDAwODAwMTAwMDEwMDAxMDAwMDgwMDA3RTAwMDAwMDkKKzoyMDI5NjAwMDAwMDAwMDAwMEMyMDA0MTAwNzA4N0MxODI0NDAwODQwMDg0MDEwNDAxMDQwMjNFMDQ0NTAwNDQ4MDM4NDAwMDA3NgorOjIwMjk4MDAwMDAwMDIwMDAxMDAwMTAxQzEzRTgyMDEwMjAyMDIwMDA0MDAwNEEwMDRBMDA1MjAwNTEwODYwRkM0MDAwMDAwMDM1Cis6MjAyOUEwMDAwMDAwMDIwMDAxMDAyMTAwMTEwMDE3RjAxOTA4MTEwNDMxMDQ0QTA0NEE3NDQ0OEM0NDk0NEE2MjMwMDAwMDAwRTAKKzoyMDI5QzAwMDAwMDAxMDAwMDgwMDA4MDAwODYwMUU5MDY5MTAwQTEwMEMxMDE4MTAyODEwNDhGMEE5MTgyOTI0MThDMjAwMDA5MgorOjIwMjlFMDAwMDAwMDAwMDAwMDAwMDdDMDE5MzAyMTA4NDIwNDQyMDQ0MjA0NDQwNDQ0MDgyODA4MTAxMDAwMjAwMEMwMDAwMDA4Cis6MjAyQTAwMDAwMDAwMjA4MDEwNDAxMDUwMTA3ODI3QzAyMDQwMjA0MDQwNDA0ODQwNDg0MDUzQzA1NDcwNjQ0ODQzODQwMDAwNUQKKzoyMDJBMjAwMDAwMDgyMDg0MTA1MjEwNDgxMDc0MjdDMDIwNDAyMDQwNDA0MDQ4NDA0ODQwNTNDMDU0NzA2NDQ4NDM4NDAwMDAyQgorOjIwMkE0MDAwMDAwQzIwOTIxMDUyMTA0QzEwNzAyN0MwMjA0MDIwNDA0MDQwNDg0MDQ4NDA1M0MwNTQ3MDY0NDg0Mzg0MDAwMEY5Cis6MjAyQTYwMDAwMDAwMDAwMDAyMDAzRTIwMDQyMDA4MzAwODI4MTAyNDEwMjAyMDIwMjA0MDIwNDAyMDQwMTA4MDBGMDAwMDAwMDcKKzoyMDJBODAwMDAwMDgwMDA0MDIxMjNFMjgwNDI0MDgzMDA4MjgxMDI0MTAyMDIwMjAyMDQwMjA0MDIwNDAxMDgwMEYwMDAwMDBCRAorOjIwMkFBMDAwMDAwQzAwMTIwMjEyM0UyQzA0MjAwODMwMDgyODEwMjQxMDIwMjAyMDIwNDAyMDQwMjA0MDEwODAwRjAwMDAwMDhCCis6MjAyQUMwMDAwMDAwMDIwMDAxODAwMEMwMDEwMDAyMDAwMjAwMDEwMDAwRTAwMzk4MDQ4NDA4OEM3ODkwMjY4MDAxMDAwMDAwNjcKKzoyMDJBRTAwMDAwMDgwMjA0MDE5MjAwQzgwMTA0MDIwMDAyMDAwMTAwMDBFMDAzOTgwNDg0MDg4Qzc4OTAyNjgwMDEwMDAwMDAxRAorOjIwMkIwMDAwMDAwQzAyMTIwMTkyMDBDQzAxMDAwMjAwMDIwMDAxMDAwMEUwMDM5ODA0ODQwODhDNzg5MDI2ODAwMTAwMDAwMEVBCis6MjAyQjIwMDAwMDAwMDAwMDAwMDAwMDAwMDcwMDA4ODAxMDQwNjAyMDAwMTgwMDA2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTgKKzoyMDJCNDAwMDAwMDAwMDA4MDAwNDAwMTIwNzA4MDg4NDEwNDA2MDIwMDAxODAwMDYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBDRQorOjIwMkI2MDAwMDAwMDAwMTgwMDI0MDAyNDA3MTgwODgwMTA0MDYwMjAwMDE4MDAwNjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDYwCis6MjAyQjgwMDAwMDAwMjA3MDE3QzAxMDQwMTA0MDIwNDAyN0Y4MjA0MDQwNDA0ODQwNDg0MDUxQzA1MjcwNjI0ODQxODQwMDAwN0QKKzoyMDJCQTAwMDAwMDgyMEU0MTc1MjEwNDgxMDQ0MjA0MDI3RjgyMDQwNDA0MDQ4NDA0ODQwNTFDMDUyNzA2MjQ4NDE4NDAwMDA0MworOjIwMkJDMDAwMDAwMDIwRUMxNzUyMTA1MjEwNEMyMDQwMjdGMDIwNDA0MDQwNDg0MDQ4NDA1MUMwNTI3MDYyNDg0MTg0MDAwMDE5Cis6MjAyQkUwMDAwMDAwMDEwMDAxMDAwMUYwM0YwMDAxMDAwMUUwMUYwMDAxMDAwMTAwMDEwMDFEMDAyM0MwMjEzMDFFMDgwMDAwMjgKKzoyMDJDMDAwMDAwMDAwMDAwMTM4MDBDODAwMDgwMDEwMDAxMTAwMTEwMDIxMDFBMTAyN0EwNDQ3MDQ4MjgzMDQ0MDA4MDAxMDBENgorOjIwMkMyMDAwMDAwMDA4MDAwNDAwMDQ5MDA3Qzg3QzA0MDQwQzFDMTAyNDAwMjQwMDI0MTAxQzEwMDgxMDA4MTgwN0YwMDAwMDkyCis6MjAyQzQwMDAwMDAwMDEwMDEwODAxMDgwMTA4MDFGQzAxMTIwMjkxMDQ1MDg0MjA4NDUwODQ4MTAzMDEwMDAyMDAwQzAwMDAwMUUKKzoyMDJDNjAwMDAyMDAwMjAwMDIwMDAyMDAyM0MwMUUwMDA0MTAwNDA4NDRDODNGMDgwNDA4MDQwODA0MDgwNDA4MDNGMDAwMDBCNQorOjIwMkM4MDAwMDAwMDAwMDAwMjAwMDEwMDAwODAwMDgwMDMzMDI0NDgxRjg4MDIwODAyMDgwMTcwMDEwMDAwODAwMDgwMDA0MDI1Cis6MjAyQ0EwMDAwMDAwMDIwMDAxODAwMDQwMDY0MDA5ODAxMDMwMTFDODdFMDQwODA0MDg4ODA0NzAwMjAwMDIwMDAxMDAwMDgwNTIKKzoyMDJDQzAwMDAwMDAwMDAwMDAwMDAxMDAwMDgwMDA4MDExRTAxMjkwMTQ4ODE0ODgxODg4MUE4ODExOTAxMEUwMDEwMDAyMDA1MgorOjIwMkNFMDAwMDAwMDAwODAxMDQwMTA0MDEwRjgxMTQ0MjI0NDI0NDQyNDQ0MjQ0NDI4NDQyQTQ0MzE1ODEwRTAwMDgwMDMwMEUzCis6MjAyRDAwMDAwMDAwMDAwMDAwMDAwMjAwMDEwMDAxMzAwMUMwMDEwMDAxMDAwMTAwMDEwMDBGQzAxMTMwMTEwODBFMDAwMDAwODMKKzoyMDJEMjAwMDAwMDAwMjAwMDEwMDAxMDAwMTEwMDEzODAxQzAwMTAwMDEwMDAxMDAxRjAwMjFDMDQxMzA0MjA4M0MwNDAwMDA4NgorOjIwMkQ0MDAwMDAwMDFDMDAwMjAwMDIwMDA0MDAwODAwMTAwMDEwMDAxMEUwMTMxMDE0MDgxODA4MDAwODAwMzAwMEMwMDMwMERECis6MjAyRDYwMDAwMDAwMTAwMDA4ODAwOTQwMEEyMDBBMjAxMjIwMTQyMDE0MjAxODIwMDg0MDAwNDAwMDgwMDA4MDAxMDAwMjAwQzEKKzoyMDJEODAwMDAwMDAwMDQwMEZBMDAwMjAwMDQwMDA4MDAxMDAwMkYwMDcwODA4MDQxMDA0MDM4NDA0NDQwNDI4MDNGMDAwMDA1NAorOjIwMkRBMDAwMDAwMDA4MDAwODIwMDg1MDBFODg3OTA4MEExMDBDMTAwODEwMTgxMDI4MTAyODEyNjgxNDE4MDgwODAwMDAwMEU4Cis6MjAyREMwMDAwMDAwMDNDMDFDNDAwMDgwMDEwMDAyMDAwNEUwMEYxMDE4MDgyMDA4MDAwODAwMTAwMDEwMDA2MDAxODAwMDAwRkQKKzoyMDJERTAwMDAwMDAwMDAwMDgwMDA0MDAwNDAwMDcwMDNDRjAwNzA4MEMwODE0MDgyNDA4MzQxMDBDMjAwNEMwMDAwMDAwMDBGMQorOjIwMkUwMDAwMDAwMDEwMDAwODAwMDgwMDRGMDAzODAwMEJFMDBDMTgwODA0MTgwNDI4MDQ0ODA0NjgwODE4MTAwODYwMDAwMDVDCis6MjAyRTIwMDAwMDAwMDAwMDAzODAxQzgwMDA4MDAxMDAwMTAwMDNGMDBGMDgxMjA0MjIwNDQ0NjQzODk0MDA4ODAwNzAwMDAwM0YKKzoyMDJFNDAwMDAwMDAwRkMwMDA4MDAxMDAwM0UwMDYxMDA4MTAxMzkwMjRBMDAzQzAwMjAwMDQwMDE4MzgyNjQ0NDE4ODAwMDA1RQorOjIwMkU2MDAwMDAwMDAyMDAwMTAwMDFFMDFGMDAwMTA4MDIwQzAzRDAwNDYwMDhDMDExNDAwMjQwMDI0MDAyMDAwMUY4MDAwMDY5Cis6MjAyRTgwMDAwMDAwMDIwMDAxMDAwMTAwMDEwMDAyMDAwMjAwMDI4MDAzNDAwMjQwMDQyMjA0MjIwNDI0MDQyNDA0MTgwMDAwNkEKKzoyMDJFQTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMgorOjIwMkVDMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEYyCis6MjAyRUUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRDIKKzoyMDJGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBCMQorOjIwMkYyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDkxCis6MjAyRjQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNzEKKzoyMDJGNjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1MQorOjIwMkY4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDMxCis6MjAyRkEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTEKKzoyMDJGQzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBGMQorOjIwMkZFMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEQxCis6MjAzMDAwMDAwMDAwMDAwMDAwMDAwMDAwMUZGMDAwMTAwMjYwMDE4MDAxMDAwMTAwMDEwMDAxMDAwMjAwMDQwMDA4MDAwMDAwOUMKKzoyMDMwMjAwMDAwMDAwMDAwM0ZGODAwMDgwMDEwMDAyMDAyQzAwMTAwMDEwMDAxMDAwMTAwMDIwMDAyMDAwNDAwMDgwMDAwMDA0QgorOjIwMzA0MDAwMDAwMDAwMDAwMDAwMDA0MDAwNDAwMDgwMDEwMDAzMDAwNTAwMDkwMDExMDAwMTAwMDEwMDAxMDAwMTAwMDAwMDQ5Cis6MjAzMDYwMDAwMDAwMDA0MDAwNDAwMDgwMDA4MDAxMDAwMzAwMDUwMDA5MDAxMTAwMjEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwODcKKzoyMDMwODAwMDAwMDAwMDAwMDAwMDAxMDAxMTEwMUZGODEwMTAxMDEwMTAyMDAwMjAwMDQwMDA0MDAwODAwMzAwMEMwMDAwMDA1OAorOjIwMzBBMDAwMDAwMDAwMDAwMTAwMjEwODNGRkMyMDA4MjAwODIwMTAwMDEwMDAyMDAwMjAwMDQwMDA4MDAzMDAwQzAwMDAwMDBDCis6MjAzMEMwMDAwMDAwMDAwMDAwMDAwMDIwMUZGMDAxMDAwMTAwMDEwMDAxMDAwMTEwM0ZGODAwMDAwMDAwMDAwMDAwMDAwMDAwNzUKKzoyMDMwRTAwMDAwMDAwMDAwMDAwMDAwMTAzRkY4MDEwMDAxMDAwMTAwMDEwMDAxMDAwMTA4N0ZGQzAwMDAwMDAwMDAwMDAwMDAwMAorOjIwMzEwMDAwMDAwMDAwMDAwMTAwMDEwMDAxMTAzRkY4MDMwMDA1MDAwOTAwMTEwMDIxMDAwMTAwMDUwMDAyMDAwMDAwMDAwMDFBCis6MjAzMTIwMDAwMDAwMDA4MDAwODAwMDgwMDA4ODdGRkMwMDgwMDE4MDAyODAwNDgwMDg4MDEwODAyMDgwNDI4MDAxMDAwMDAwOEEKKzoyMDMxNDAwMDAwMDAwMjAwMDIwMDAyMjAzRkYwMDIyMDAyMjAwMjIwMDQyMDA0MjAwODIwMDgyMDEwNDAyMTQwNDA4MDAwMDBBQgorOjIwMzE2MDAwMDAwODAyMDQwMjEyMDIwODNGRTQwMjIwMDIyMDAyMjAwNDIwMDQyMDA4MjAwODIwMTA0MDIxNDA0MDgwMDAwMDkxCis6MjAzMTgwMDAwMDAwMDgwMDA4MDAwNDAwMDRFMDNGMDAwMjAwMDEwMDAxNzAzRjgwMDA4MDAwNDAwMDQwMDAyMDAwMjAwMDAwODUKKzoyMDMxQTAwMDAwMDgwODA0MDgxMjA0MDgwNEU0M0YwMDAyMDAwMTAwMDE3MDNGODAwMDgwMDA0MDAwNDAwMDIwMDAyMDAwMDAzQgorOjIwMzFDMDAwMDAwMDAyMDAwMjAwMDIxMDAzRjgwNDEwMDQyMDA4MjAxMDQwMjA0MDAwODAwMTAwMDIwMDBDMDAzMDAwMDAwMDBGCis6MjAzMUUwMDAwMDA4MDIwNDAyMTIwMjA4MDNFNDA0MjAwNDIwMDg0MDEwNDAyMDgwMDA4MDAxMDAwMjAwMEMwMDMwMDAwMDAwN0QKKzoyMDMyMDAwMDAwMDAwODAwMDgwMDA4MTAwRkY4MTA4MDIwODA0MTAwMDEwMDAyMDAwMjAwMDQwMDA4MDAxMDAwMjAwMDAwMDBDRAorOjIwMzIyMDAwMDAwODA4MDQwODEyMDgwODBGRjQxMDgwMjA4MDQxMDAwMTAwMDIwMDAyMDAwNDAwMDgwMDEwMDAyMDAwMDAwMDlCCis6MjAzMjQwMDAwMDAwMDAwMDAwMDAwMDEwMUZGODAwMTAwMDEwMDAxMDAwMjAwMDIwMUZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwQzgKKzoyMDMyNjAwMDAwMDgwMDA0MDAxMjAwMDgwMDI0M0ZGMDAwMjAwMDIwMDAyMDAwNDAzRkUwMDAwMDAwMDAwMDAwMDAwMDAwMDAxNgorOjIwMzI4MDAwMDAwMDAwNDAwNDQwMDQ0MDA0NDAwNDQ4N0ZGQzA0NDAwNDQwMDQ0MDA0NDAwNDQwMDA4MDAwODAwMTAwMDAwMDA2Cis6MjAzMkEwMDAwMDA4MDAwNDAwOTIwODg4MDg4NDA4ODAwODg4N0ZGQzA4ODAwODgwMDg4MDA4ODAwOTAwMDEwMDAyMDAwMDAwOTUKKzoyMDMyQzAwMDAwMDAwMDAwMTgwMDA0MDAwMjAwMzAwODA4MTAwNDIwMDA0MDAwODAwMTAwMDIwMDI0MDAxODAwMDAwMDAwMDA1RAorOjIwMzJFMDAwMDAwODAwMDQwMDEyMTgwODA0MDQwMjAwMzAwODA4MTAwNDIwMDA0MDAwODAwMTAwMDIwMDI0MDAxODAwMDAwMDEzCis6MjAzMzAwMDAwMDAwMDAwMDAwMDAzRkUwMDAyMDAwNDAwMDQwMDA4MDAxMDAwMzAwMDQ4MDA4NDAxMDMwMjAxMDAwMDAwMDAwMkUKKzoyMDMzMjAwMDAwMDgwMDA0MDAxMjAwMDgzRkU0MDAyMDAwNDAwMDQwMDA4MDAxMDAwMzgwMDQ0MDA4MjAxMDE4MjAwODAwMDBFNAorOjIwMzM0MDAwMDAwMDA0MDAwNDAwMDQwMDA0MDAwN0UwN0MyMDA0NDAwNDgwMDQwMDA0MDAwNDAwMDQyMDAzRjAwMDAwMDAwMEVGCis6MjAzMzYwMDAwMDA4MDAwNDA0MTIwNDA4MDQwNDA0MDAwN0UwN0MyMDA0NDAwNDgwMDQwMDA0MDAwNDIwMDNGMDAwMDAwMDAwQTkKKzoyMDMzODAwMDAwMDAwMDAwMDAyMDIwMTAxMDEwMDgxMDBDMjAwNDIwMDA0MDAwNDAwMDgwMDEwMDAyMDAwQzAwMzAwMDAwMDAxNgorOjIwMzNBMDAwMDAwODAwMDQwMDEyMDA0ODQwMjQyMDIwMTAyMDE4NDAwODQwMDA4MDAwODAwMTAwMDIwMDA0MDAxODAwNjAwMEI0Cis6MjAzM0MwMDAwMDAwMDQwMDA0MjAwN0YwMDQyMDA4MjAwODQwMTA0MDI0ODAwMjgwMDEwMDAyODAwNDAwMTgwMDYwMDAwMDAwQzUKKzoyMDMzRTAwMDAwMDgwODA0MDg1MjBGRTgwODQ0MTA0MDEwODAyMDgwNDkwMDA1MDAwMjAwMDUwMDA4MDAzMDAwQzAwMDAwMDA0RgorOjIwMzQwMDAwMDAwMDAwMjAwMUYwMUYwMDAxMDAwMTA4N0ZGQzAxMDAwMTAwMDIwMDAyMDAwNDAwMDQwMDA4MDAxMDAwMDAwMEQxCis6MjAzNDIwMDAwMDA4MDAwNDAwNTIwM0U4M0UwNDAyMDAwMjEwRkZGODAyMDAwMjAwMDQwMDA0MDAwODAwMDgwMDEwMDAyMDAwQUEKKzoyMDM0NDAwMDAwMDAwMDAwMDAwMDAwMDAwNDAwMDMxMDIxMTAxODIwMDgyMDAwNDAwMDQwMDA4MDAxMDAwNjAwMTgwMDAwMDBBNQorOjIwMzQ2MDAwMDAwMDAwMDAwNDAwMDIxMDIxMTAxMTEwMDgyMDA4MjAwMDQwMDA4MDAxMDAwMjAwMDQwMDA4MDAzMDAwMDAwMDk1Cis6MjAzNDgwMDAwMDA4MDAwNDA4MTIwNDI4NDIyNDIyMjAxMDQwMTA0MDAwODAwMTAwMDIwMDA0MDAwODAwMTAwMDYwMDAwMDAwOTMKKzoyMDM0QTAwMDAwMDAwMDIwMUZGMDAwMDAwMDAwMDAwODdGRkMwMTAwMDEwMDAyMDAwMjAwMDQwMDA0MDAwODAwMTAwMDIwMDAxNAorOjIwMzRDMDAwMDAwODAwMDQwMDkyM0ZDODAwMDQwMDAwMDAxMEZGRjgwMjAwMDIwMDA0MDAwNDAwMDgwMDA4MDAxMDAwMjAwMEYwCis6MjAzNEUwMDAwMDAwMDAwMDA0MDAwNDAwMDQwMDA0MDAwNjAwMDUwMDA0QzAwNDQwMDQwMDA0MDAwNDAwMDQwMDAwMDAwMDAwOTkKKzoyMDM1MDAwMDAwMDgwNDA0MDQxMjA0MDgwNDA0MDYwMDA1MDAwNDgwMDQ2MDA0MjAwNDAwMDQwMDA0MDAwNDAwMDQwMDAwMDA0NgorOjIwMzUyMDAwMDAwMDAxMDAwMTAwMDEwMDAxMDg3RkZDMDEwMDAxMDAwMTAwMDEwMDAyMDAwMjAwMDQwMDA0MDAwODAwMDAwMEVDCis6MjAzNTQwMDAwMDAwMDAwMDAwMDAwMDAwMDAyMDFGRjAwMDAwMDAwMDAwMDAwMDA4N0ZGQzAwMDAwMDAwMDAwMDAwMDAwMDAwQjkKKzoyMDM1NjAwMDAwMDAwMDEwMUZGODAwMTAwMDIwMEMyMDAyNDAwMTQwMDA4MDAwQzAwMTMwMDIxMDA0MDAwODAwMzAwMDAwMDA4NgorOjIwMzU4MDAwMDIwMDAxODAwMDgwMDAwMDFGQzAwMDgwMDEwMDAzMDAwNTQwMDkzMDExMTAyMTAwMDEwMDAxMDAwMTAwMDAwMDAyCis6MjAzNUEwMDAwMDAwMDAwMDAwMjAwMDIwMDAyMDAwNDAwMDQwMDA4MDAwODAwMTAwMDEwMDAyMDAwNDAwMDgwMDEwMDAwMDAwMEIKKzoyMDM1QzAwMDAwMDAwMDAwMDAwMDAwMDAwNDQwMDQyMDA4MTAwODEwMDgwODEwMDgxMDBDMjAwNDQwMDAwMDAwMDAwMDAwMDBBQgorOjIwMzVFMDAwMDAwODAwMDQwMDEyMDAwODA0NDQwNDIwMDgxMDA4MTAwODA4MTAwODEwMEMyMDA0NDAwMDAwMDAwMDAwMDAwMDYxCis6MjAzNjAwMDAwMDAwMDAwQzAwMTIwMDEyMDQ0QzA0MjAwODEwMDgxMDA4MDgxMDA4MTAwQzIwMDQ0MDAwMDAwMDAwMDAwMDAwMkUKKzoyMDM2MjAwMDAwMDAwMDAwMDgwMDA4MDAwODQwMDg2MDA5ODAwRTAwMDgwMDA4MDAwODAwMDgyMDA3RjAwMDAwMDAwMDAwMDBGQworOjIwMzY0MDAwMDAwODAwMDQwMDEyMjAwODIwMDQyMTAwMjE4MDI2MDAzODAwMjAwMDIwMDAyMDAwMjA4MDFGQzAwMDAwMDAwMDAxCis6MjAzNjYwMDAwMDAwMDAwQzAwMTIyMDEyMjAwQzIxMDAyMTgwMjYwMDM4MDAyMDAwMjAwMDIwMDAyMDgwMUZDMDAwMDAwMDAwQ0YKKzoyMDM2ODAwMDAwMDAwMDAwMDAyMDdGRjAwMDIwMDA0MDAwNDAwMDgwMDA4MDAxMDAwMjAwMDQwMDA4MDAxMDAwMjAwMDAwMDBCQworOjIwMzZBMDAwMDAwODAwMDQwMDEyMDA0ODdGRTQwMDQwMDA4MDAwODAwMTAwMDEwMDAyMDAwNDAwMDgwMDEwMDAyMDAwMDAwMEMxCis6MjAzNkMwMDAwMDAwMDAwQzAwMTIwMDUyN0ZFQzAwNDAwMDgwMDA4MDAxMDAwMTAwMDIwMDA0MDAwODAwMTAwMDIwMDAwMDAwOEYKKzoyMDM2RTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTgwMDI0MDA0MzAwMDBDMDAwMzAwMDBFMDAwMDAwMDAwMDAwMDAwMDAwMDA0RAorOjIwMzcwMDAwMDAwODAwMDQwMDEyMDAwODAwMDQxODAwMjQwMDQzMDAwMEMwMDAzMDAwMEUwMDAwMDAwMDAwMDAwMDAwMDAwMDAyCis6MjAzNzIwMDAwMDAwMDAwQzAwMTIwMDEyMDAwQzE4MDAyNDAwNDMwMDAwQzAwMDMwMDAwRTAwMDAwMDAwMDAwMDAwMDAwMDAwRDAKKzoyMDM3NDAwMDAwMDAwMTAwMDEwMDAxMDAwMTA4N0ZGQzAxMDAwMTAwMDkyMDA5MTAxMTA4MjEwODAxMDAwNTAwMDIwMDAwMDA1NAorOjIwMzc2MDAwMDAwODAxMDQwMTEyMDEwODAxMDQwMTA4N0ZGQzAxMDAwMTAwMDkyMDA5MTAxMTA4MjEwODA1MDAwMjAwMDAwMDBBCis6MjAzNzgwMDAwMDBDMDExMjAxMTIwMTBDMDEwMDAxMDg3RkZDMDEwMDAxMDAwOTIwMDkxMDExMDgyMTA4MDUwMDAyMDAwMDAwRDgKKzoyMDM3QTAwMDAwMDAwMDAwMDAwMDAwMTAzRkY4MDAxMDAwMjAwMDIwMDY0MDAxODAwMDgwMDA0MDAwNDAwMDAwMDAwMDAwMDBBQgorOjIwMzdDMDAwMDAwMDAwMDAwRTAwMDE4MDAwNjAwMDIwMUMwMDAzMDAwMEMwMDA0MDFDMDAwMzgwMDA2MDAwMjAwMDAwMDAwMDlDCis6MjAzN0UwMDAwMDAwMDIwMDAyMDAwMjAwMDIwMDA0MDAwNDAwMDQwMDA0MDAwODQwMDgyMDEwMTAxMEY4M0YwODEwMDgwMDAwQkEKKzoyMDM4MDAwMDAwMDAwMDAwMDAyMDAwMTAwMDIwMDQyMDAyNDAwMTgwMDA4MDAxNjAwMjIwMDQwMDA4MDAxMDAwNjAwMDAwMDBGMgorOjIwMzgyMDAwMDAwMDAwNDAwM0UwM0UwMDAyMDAwMjA4MDNGQzdFMDAwMjAwMDIwMDAyMDAwMjAwMDIxMDAxRjgwMDAwMDAwMDhCCis6MjAzODQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA4MDAwNDAwMDVGODNFMDgwMjEwMDEyMDAxMDAwMDgwMDA4MDAwNDAwMDIwODUKKzoyMDM4NjAwMDAwMDAxMDAwMDgwMDA4MDAwNDAwMDVGODdFMDgwMjEwMDEyMDAxMDAwMDgwMDA4MDAwNDAwMDQwMDAyMDAwMDBDRAorOjIwMzg4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDIwMEZGMDAwMjAwMDIwMDAyMDAwNDAwMDQ4M0ZGQzAwMDAwMDAwMDAwMEU2Cis6MjAzOEEwMDAwMDAwMDAwMDAwMTAxRkY4MDAxMDAwMTAwMDEwMDAyMDAwMjAwMDI0N0ZGRTAwMDAwMDAwMDAwMDAwMDAwMDAwRDAKKzoyMDM4QzAwMDAwMDAwMDAwMDAyMDFGRjAwMDIwMDAyMDFGRTAwMDIwMDAyMDFGRTAwMDIwMDAwMDAwMDAwMDAwMDAwMDAwMDAxQgorOjIwMzhFMDAwMDAwMDAwMTAzRkY4MDAxMDAwMTAwMDEwM0ZGMDAwMTAwMDEwMDAxMDNGRjAwMDEwMDAwMDAwMDAwMDAwMDAwMEIzCis6MjAzOTAwMDAwMDAwMDA0MDBGRTAwMDAwMDAxMDNGRjgwMDEwMDAxMDAwMjAwMDIwMDA0MDAwODAwMTAwMDYwMDE4MDAwMDAwRjIKKzoyMDM5MjAwMDAwMDAwMDQwMDQ0MDA0NDAwNDQwMDQ0MDA0NDAwNDQwMDQ0MDA0ODAwMDgwMDEwMDAxMDAwMjAwMDQwMDA4MDA1NworOjIwMzk0MDAwMDAwMDAwMDAwMDAwMDAwMDA0ODAwNDgwMDQ4MDA0ODAwNDg0MDg4ODA4OTAxMEEwMjBDMDQwMDAwMDAwMDAwMEQ3Cis6MjAzOTYwMDAwMDAwMDAwMDAwMDAyMDAwMTAwMDEwMTAxMDIwMTA0MDEwODAxMTAwMTIwMDE0MDAxODAwMDAwMDAwMDAwMDAwOTgKKzoyMDM5ODAwMDAwMDAwMDAwMTAyMDFGRjAxMDIwMTAyMDEwMjAxMDIwMTA0MDEwNDAxRkUwMTAwMDAwMDAwMDAwMDAwMDAwMDA3OQorOjIwMzlBMDAwMDAwMDAwMDAxMDIwMUZGMDEwMjAxMDIwMDAyMDAwNDAwMDQwMDA4MDAxMDAwMjAwMDQwMDAwMDAwMDAwMDAwMDQxCis6MjAzOUMwMDAwMDAwMDAwMDIwMTAzRkY4MjAxMDIwMTAwMDEwMDAyMDAwMjAwMDQwMDA0MDAwODAwMTAwMDIwMDA0MDAwMDAwQzkKKzoyMDM5RTAwMDAwMDAwMTAwMDEwMDAxNDAxRkUwMDkwMDA5MDAwOTAwMDkwODdGRkMwMTAwMDEwMDAxMDAwMTAwMDEwMDAwMDBEOQorOjIwM0EwMDAwMDAwMDAwMDAwMDAwMUZFMDAwNDAwMjgwMDEwMDAxMDAwMTAwMDEwODdGRkMwMDAwMDAwMDAwMDAwMDAwMDAwMDVFCis6MjAzQTIwMDAwMDAwMDAwMDAwMTAxRkY4MDAxMDAwMTA3RkY4MDAyMDAwMjAwMDQwMDA0MDAwODAwMTAwMDIwMDA0MDAwMDAwODEKKzoyMDNBNDAwMDAwMDAwMDAwMTAwMDA4MDQwNjA4MDIxMDAwMjAwMDQwMDA4MDAxMDAwMjAwMjQwMDE4MDAwMDAwMDAwMDAwMDAwQgorOjIwM0E2MDAwMDAwODAyMDQwMjEyMjIyODNGRjQyMDIwMjAyMDAwMjAwMDQwMDA0MDAwODAwMTAwMDIwMDA0MDAwODAwMDAwMEY4Cis6MjAzQTgwMDAwMDAwMDAwMDAxMDAwMTAwMDEyMDBGRjAwMTIwMDEyMDAyMjAwMjIwMDIyMDA1NDAwODgwMDAwMDAwMDAwMDAwOEYKKzoyMDNBQTAwMDAwMDAwMDAwMDQwMDA0MDAwNDQwMDdFMDA4ODAxMDgwMjEwMDAxMDAwMjAwMDQwMDA4MDAwMDAwMDAwMDAwMDA4QgorOjIwM0FDMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEU2Cis6MjAzQUUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQzYKKzoyMDNCMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBBNQorOjIwM0IyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDg1Cis6MjAzQjQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjUKKzoyMDNCNjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0NQorOjIwM0I4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDI1Cis6MjAzQkEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDUKKzoyMDNCQzAwMDAwMDAwMTAwMDI4MDAyODAwNDQwMDQ0MDA4MjAwRkUwMTAxMDEwMTAyMDA4NzAxQzAwMDAwMDAwMDAwMDAwMDA0RAorOjIwM0JFMDAwMDAwMDdGRTAyMDEwMjAxMDIwMTAyMDIwM0ZDMDIwMjAyMDEwMjAxMDIwMTA3RkUwMDAwMDAwMDAwMDAwMDAwMDY4Cis6MjAzQzAwMDAwMDAwN0ZGODIwMDgyMDA4MjAwMDIwMDAyMDAwMjAwMDIwMDAyMDAwMjAwMDcwMDAwMDAwMDAwMDAwMDAwMDAwOEQKKzoyMDNDMjAwMDAwMDAwMTAwMDI4MDAyODAwNDQwMDQ0MDA4MjAxMDEwMTAxMDIwMDgyMDA4N0ZGQzAwMDAwMDAwMDAwMDAwMDBDNAorOjIwM0M0MDAwMDAwMDdGRjgyMDA4MjAwODIwMDAyMDQwM0ZDMDIwNDAyMDAwMjAwODIwMDg3RkY4MDAwMDAwMDAwMDAwMDAwMEQ3Cis6MjAzQzYwMDAwMDAwM0ZGODIwMTAyMDIwMDA0MDAwODAwMTAwMDIwMDA0MDAwODA4MTAwODNGRjgwMDAwMDAwMDAwMDAwMDAwNzcKKzoyMDNDODAwMDAwMDA3MDFDMjAwODIwMDgyMDA4MjAwODNGRjgyMDA4MjAwODIwMDgyMDA4NzAxQzAwMDAwMDAwMDAwMDAwMDA5NQorOjIwM0NBMDAwMDAwMDA3QzAwODIwMTAxMDIwMDgyODI4MkZFODI4MjgyMDA4MTAxMDA4MjAwN0MwMDAwMDAwMDAwMDAwMDAwMERGCis6MjAzQ0MwMDAwMDAwMDM4MDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAzODAwMDAwMDAwMDAwMDAwMDAwRDUKKzoyMDNDRTAwMDAwMDA3MUMwMjEwMDIyMDAyNDAwMjgwMDM4MDAyNDAwMjIwMDIxMDAyMDgwNzBFMDAwMDAwMDAwMDAwMDAwMDA3NQorOjIwM0QwMDAwMDAwMDAxMDAwMjgwMDI4MDA0NDAwNDQwMDgyMDA4MjAxMDEwMTAxMDIwMDg3MDFDMDAwMDAwMDAwMDAwMDAwMEQyCis6MjAzRDIwMDAwMDAwNjAwQzMwMTgzMDE4MjgyODI4MjgyNDQ4MjQ0ODIyODgyMjg4MjEwODcwMUMwMDAwMDAwMDAwMDAwMDAwMDYKKzoyMDNENDAwMDAwMDA2MDFDMzAwODI4MDgyNDA4MjIwODIxMDgyMDg4MjA0ODIwMjgyMDE4NzAwQzAwMDAwMDAwMDAwMDAwMDBGNAorOjIwM0Q2MDAwMDAwMDFGRjgxMDA4MTAwODAwMDAwNDIwMDdFMDA0MjAwMDAwMTAwODEwMDgxRkY4MDAwMDAwMDAwMDAwMDAwMDg2Cis6MjAzRDgwMDAwMDAwMDdDMDA4MjAxMDEwMjAwODIwMDgyMDA4MjAwODIwMDgxMDEwMDgyMDA3QzAwMDAwMDAwMDAwMDAwMDAwM0QKKzoyMDNEQTAwMDAwMDA3RkZDMjAwODIwMDgyMDA4MjAwODIwMDgyMDA4MjAwODIwMDgyMDA4NzAxQzAwMDAwMDAwMDAwMDAwMDA5NAorOjIwM0RDMDAwMDAwMDdGRTAyMDEwMjAwODIwMDgyMDEwM0ZFMDIwMDAyMDAwMjAwMDIwMDA3MDAwMDAwMDAwMDAwMDAwMDAwMEM1Cis6MjAzREUwMDAwMDAwN0ZGODIwMDgxMDA4MDgwMDA0MDAwMjAwMDQwMDA4MDAxMDA4MjAwODdGRjgwMDAwMDAwMDAwMDAwMDAwM0IKKzoyMDNFMDAwMDAwMDA3RkZDNDEwNDQxMDQwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDM4MDAwMDAwMDAwMDAwMDAwMDAxMworOjIwM0UyMDAwMDAwMDAwNDAwNkEwMDkwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMzgwMDAwMDAwMDAwMDAwMDAwMDA5Cis6MjAzRTQwMDAwMDAwMDM4MDAxMDAwRkUwMTExMDIxMDgyMTA4MjEwODExMTAwRkUwMDEwMDAzODAwMDAwMDAwMDAwMDAwMDAwQkYKKzoyMDNFNjAwMDAwMDA3MDFDMTAxMDA4MjAwNDQwMDI4MDAxMDAwMjgwMDQ0MDA4MjAxMDEwNzAxQzAwMDAwMDAwMDAwMDAwMDAwRAorOjIwM0U4MDAwMDAwMDQzODQyMTA4MTExMDExMTAxMTEwMTExMDBGRTAwMTAwMDEwMDAxMDAwMzgwMDAwMDAwMDAwMDAwMDAwMDM5Cis6MjAzRUEwMDAwMDAwMDdDMDA4MjAxMDEwMjAwODIwMDgyMDA4MjAwODEwMTA0ODI0NDQ0NDdDN0MwMDAwMDAwMDAwMDAwMDAwNDcKKzoyMDNFQzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBFMgorOjIwM0VFMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEMyCis6MjAzRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQTEKKzoyMDNGMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA4MQorOjIwM0Y0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDYxCis6MjAzRjYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNDEKKzoyMDNGODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyMQorOjIwM0ZBMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxCis6MjAzRkMwMDAwMDAwMDAwMDAwMDAwNzQwMDhDMDEwNDAxMDQwMTA0MDEwNDAxMDQwMDhEMDA3MjAwMDAwMDAwMDAwMDAwMDAwNDMKKzoyMDNGRTAwMDAwMDAwNzgwMDg0MDA4NDAwODgwMEYwMDA4QzAwODIwMDgyMDA4MjAwQzQwMEI4MDA4MDAwODAwMDgwMDAwMDBFNAorOjIwNDAwMDAwMDAwMDAwMDAwMDAwMEMxMDEyMjAyMjIwMDE0MDAxNDAwMTgwMDE4MDAxODAwMTAwMDEwMDAxMDAwMTAwMDAwMDA3Cis6MjA0MDIwMDAwMDAwMDM4MDA0NDAwMjAwMDEwMDAyODAwNDQwMDgyMDA4MjAwODIwMDQ0MDAzODAwMDAwMDAwMDAwMDAwMDAwQjEKKzoyMDQwNDAwMDAwMDAwMDAwMDAwMDAzODAwNDQwMDQwMDAyMDAwMTgwMDIwMDA0MDAwNDQwMDM4MDAwMDAwMDAwMDAwMDAwMDA0NQorOjIwNDA2MDAwMDAwMDAyMDAwNDQwMDRDMDAzMDAwMjAwMDQwMDA4MDAwODAwMDgwMDA0MDAwM0MwMDAyMDAwMjAwM0MwMDAwMDRCCis6MjA0MDgwMDAwMDAwMDAwMDAwMDAwMUMwMEEyMDE0MjAwNDIwMDQyMDA0MjAwNDIwMDQyMDA0MjAwMDIwMDAyMDAwMjAwMDAwQzkKKzoyMDQwQTAwMDAwMDAwMzgwMDQ0MDA4MjAwODIwMDgyMDBGRTAwODIwMDgyMDA4MjAwNDQwMDM4MDAwMDAwMDAwMDAwMDAwMDA5MworOjIwNDBDMDAwMDAwMDAwMDAwMDAwMDMwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTQwMDE4MDAwMDAwMDAwMDAwMDE0Cis6MjA0MEUwMDAwMDAwMDAwMDAwMDAxODMwMDg0MDA4ODAwRDAwMEEwMDA5MDAwODgwMDg0MDFDNzAwMDAwMDAwMDAwMDAwMDAwMkMKKzoyMDQxMDAwMDA0MDAwQTAwMDIwMDAxMDAwMTAwMDEwMDAzMDAwMjgwMDI4MDA0NTAwNDUwMDgyMDAwMDAwMDAwMDAwMDAwMDBCNQorOjIwNDEyMDAwMDAwMDAwMDAwMDAwMDg0MDA4NDAwODQwMDg0MDA4NDAwODQwMDg0MDBDRDAwQjIwMDgwMDA4MDAwODAwMDAwMDY4Cis6MjA0MTQwMDAwMDAwMDAwMDAwMDAxODIwMDgxMDA0MjAwNDIwMDQyMDAyNDAwMjQwMDI4MDAxMDAwMDAwMDAwMDAwMDAwMDAwOUMKKzoyMDQxNjAwMDAwMDAwNDAwMDgwMDA3ODAwODAwMDgwMDA3ODAwNDAwMDgwMDA4MDAwODAwMDdDMDAwMjAwMjIwMDFDMDAwMDAyRgorOjIwNDE4MDAwMDAwMDAwMDAwMDAwMDc4MDA4NDAxMDIwMTAyMDEwMjAxMDIwMTAyMDA4NDAwNzgwMDAwMDAwMDAwMDAwMDAwMDkxCis6MjA0MUEwMDAwMDAwMDAwMDAwMDAxRkY4MjQ0MDA0NDAwNDQwMDQ0MDA0NDAwNDQwMDg1MDEwMjAwMDAwMDAwMDAwMDAwMDAwQTgKKzoyMDQxQzAwMDAwMDAwMDAwMDAwMDA3ODAwODQwMTAyMDEwMjAxMDIwMTAyMDE4MjAxNDQwMTM4MDEwMDAxMDAwMTAwMDAwMDAwMQorOjIwNDFFMDAwMDAwMDAwMDAwMDAwMDdGMDA4NDAxMDIwMTAyMDEwMjAxMDIwMTAyMDA4NDAwNzgwMDAwMDAwMDAwMDAwMDAwMEMxCis6MjA0MjAwMDAwMDAwMDAwMDAwMDAwN0MwMDkwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDE0MDAwODAwMDAwMDAwMDAwMDAwMDAwMDgKKzoyMDQyMjAwMDAwMDAwMDAwMDAwMDA4NDAxNDIwMDQyMDA0MjAwNDIwMDQyMDA0MjAwNDIwMDNDMDAwMDAwMDAwMDAwMDAwMDA2NworOjIwNDI0MDAwMDAwMDAxMDAwMTAwMDdDMDA5MjAxMTEwMTExMDExMTAxMTEwMTExMDA5MjAwN0MwMDEwMDAxMDAwMTAwMDAwMEQ0Cis6MjA0MjYwMDAwMDAwMDgxMDE0MjAwNDIwMDI0MDAyODAwMTAwMDEwMDAyODAwNDgwMDg0MDA4NTAxMDIwMDAwMDAwMDAwMDAwMzIKKzoyMDQyODAwMDAwMDAwMTAwMDEwMDExNDAyOTIwMDkyMDA5MjAwOTIwMDkyMDA5MjAwOTIwMDdDMDAxMDAwMTAwMDEwMDAwMDBDMgorOjIwNDJBMDAwMDAwMDAwMDAwMDAwMDQ0MDA4MjAxMTEwMTExMDExMTAxMTEwMTExMDBBQTAwNDQwMDAwMDAwMDAwMDAwMDAwMEZGCis6MjA0MkMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwREUKKzoyMDQyRTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBCRQorOjIwNDMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDlECis6MjA0MzIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwN0QKKzoyMDQzNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1RAorOjIwNDM2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDNECis6MjA0MzgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMUQKKzoyMDQzQTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRkYwMzAwQzQwMDIwMDAwMDAwMDAwMDA4MAorOjIwNDNDMDAwMDAwMDQwMDAzMDBFMEZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDYwCis6MjA0M0UwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDFGRjgyMDA4MjAwNDQwMDQ0MDAyMDAwMDAwMDAwMDAwRDQKKzoyMDQ0MDAwMDAwMDA0MDAyNDAwMjIwMDQyMDA0MUZGODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBCOQorOjIwNDQyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzQzAxQzM4NjAwNjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEZGCis6MjA0NDQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNzAwRTBFNzAwMTgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwREYKKzoyMDQ0NjAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDdDMDA4MzAzMDBDNDAwMDA3QzAxODM4NjAwNjAwMDAwMDAwMDAwMDAwMDA0MworOjIwNDQ4MDAwMDAwMDAwMDAwMDAwMDAwMDcwMEUwRTcwMDM4MDQwMDIzMDFDMEU2MDAxODAwMDAwMDAwMDAwMDAwMDAwMDAwMDIwCis6MjA0NEEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDFGRkUwMDAyMDAwMjAwMDIwMDAwMDAwMDAwMDAwMDAwRDkKKzoyMDQ0QzAwMDAwMDAwMDAwMDAwMDQwMDA0MDAwNDAwMDdGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBBRAorOjIwNDRFMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDFGRkUxRkZFMDAwNjAwMDYwMDAwMDAwMDAwMDAwMDAwMDAwMDc2Cis6MjA0NTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxODAwMTgwMDFGRkUxRkZFMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMzEKKzoyMDQ1MjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA3QgorOjIwNDU0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDVCCis6MjA0NTYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEZGRkVGRTdFRjAwRUMwMDI4MDAwMDAwMDAwMDAwMDAwODIKKzoyMDQ1ODAwMDAwMDAwMDAwMDAwMDgwMDBDMDAyRjAwNkZGRkVGRkZFMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBFOQorOjIwNDVBMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxODA3RTdDODAwMjAwMDAwMDAwMDAwMEZFCis6MjA0NUMwMDAwMDAwMDAwMDY0MzIxQkNDMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNUUKKzoyMDQ1RTAwMDAwMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDBBQworOjIwNDYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDlBCis6MjA0NjIwMDAwMDAwODAwMDgwMDA4MDAwODAwMDgwMDA4MDAwODAwMDgwMDA4MDAwODAwMDgwMDA4MDAwODAwMDgwMDA4MDAwRkEKKzoyMDQ2NDAwMDQwMDA4MDAwODAwMDQwMDA4MDAwODAwMDQwMDA0MDAwODAwMDgwMDA4MDAwNDAwMDQwMDA4MDAwODAwMDQwMDAxQQorOjIwNDY2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDNBCis6MjA0NjgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMUEKKzoyMDQ2QTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBGQQorOjIwNDZDMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMERBCis6MjA0NkUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQkEKKzoyMDQ3MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA5OQorOjIwNDcyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDc5Cis6MjA0NzQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNTkKKzoyMDQ3NjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzOQorOjIwNDc4MDAwMDAwMDAxMDAwMjgwMDI4MDA0NDAwNDQwMDgyMDBGRTAxMDEwMTAxMDIwMDg3MDFDMDAwMDAwMDAwMDAwMDAwMDgxCis6MjA0N0EwMDAwMDAwN0ZGODIwMDgyMDA4MjAwMDIwMDAzRkUwMjAxMDIwMDgyMDA4MjAxMDdGRTAwMDAwMDAwMDAwMDAwMDAwQzQKKzoyMDQ3QzAwMDAwMDA3RkUwMjAxMDIwMDgyMDA4MjAxMDNGRTAyMDEwMjAwODIwMDgyMDEwN0ZFMDAwMDAwMDAwMDAwMDAwMDA5QworOjIwNDdFMDAwMDAwMDdGRjgyMDA4MjAwODIwMDAyMDAwMjAwMDIwMDAyMDAwMjAwMDIwMDA3MDAwMDAwMDAwMDAwMDAwMDAwMEEyCis6MjA0ODAwMDAwMDAwMUZGODA0MTAwNDEwMDQxMDA0MTAwNDEwMDgxMDA4MTAxMDEwM0ZGODIwMDgwMDAwMDAwMDAwMDAwMDAwNkUKKzoyMDQ4MjAwMDAwMDA3RkY4MjAwODIwMDgyMDAwMjAyMDNGRTAyMDIwMjAwMDIwMDgyMDA4N0ZGODAwMDAwMDAwMDAwMDAwMDAwQgorOjIwNDg0MDAwMDgyMDAwMDA3RkY4MjAwODIwMDgyMDIwM0ZFMDIwMjAyMDAwMjAwODIwMDg3RkY4MDAwMDAwMDAwMDAwMDAwMEUzCis6MjA0ODYwMDAwMDAwMzM5ODQ5MjQwOTIwMDU0MDAzODAwNTQwMDkyMDA5MjAxMTEwMTExMDYzOEMwMDAwMDAwMDAwMDAwMDAwNDcKKzoyMDQ4ODAwMDAwMDAxN0UwMTgxMDEwMDgwMDA4MDAxMDAxRTAwMDEwMjAwODIwMDgxMDEwMEZFMDAwMDAwMDAwMDAwMDAwMDA3OQorOjIwNDhBMDAwMDAwMDcwMEMyMDA4MjAxODIwMjgyMEM4MjMwODI0MDgyODA4MzAwODIwMDg2MDFDMDAwMDAwMDAwMDAwMDAwMDg5Cis6MjA0OEMwMDAwNDQwNzQ0QzIzODgyMDE4MjAyODIwQzgyMzA4MjQwODI4MDgzMDA4MjAwODYwMUMwMDAwMDAwMDAwMDAwMDAwNUUKKzoyMDQ4RTAwMDAwMDA3MDYwMjA4MDIxMDAyMjAwM0MwMDIyMDAyMTAwMjA4MDIwNDAyMDIwNzAzODAwMDAwMDAwMDAwMDAwMDA5RQorOjIwNDkwMDAwMDAwMDFGRjAwODIwMDgyMDA4MjAwODIwMDgyMDA4MjAwODIwMDgyMDI4MjAxMDcwMDAwMDAwMDAwMDAwMDAwMDgwCis6MjA0OTIwMDAwMDAwNzAxQzIwMDgzMDE4MjgyODI4MjgyNDQ4MjQ0ODIyODgyMTA4MjAwODcwMUMwMDAwMDAwMDAwMDAwMDAwN0MKKzoyMDQ5NDAwMDAwMDA3MDFDMjAwODIwMDgyMDA4M0ZGODIwMDgyMDA4MjAwODIwMDg3MDFDMDAwMDAwMDAwMDAwMDAwMDAwMDBGMAorOjIwNDk2MDAwMDAwMDA3QzAwODIwMTAxMDIwMDgyMDA4MjAwODIwMDgyMDA4MTAxMDA4MjAwN0MwMDAwMDAwMDAwMDAwMDAwMDUxCis6MjA0OTgwMDAwMDAwN0ZGMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDcwNzAwMDAwMDAwMDAwMDAwMDAwODgKKzoyMDQ5QTAwMDAwMDA3RkUwMjAxMDIwMDgyMDA4MjAxMDNGRTAyMDAwMjAwMDIwMDAyMDAwNzAwMDAwMDAwMDAwMDAwMDAwMDBEOQorOjIwNDlDMDAwMDAwMDBGRDAxMDMwMjAxMDIwMDAyMDAwMjAwMDIwMDAyMDAwMjAwODEwMTAwRkUwMDAwMDAwMDAwMDAwMDAwMEIxCis6MjA0OUUwMDAwMDAwN0ZGQzQxMDQ0MTA0MDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAzODAwMDAwMDAwMDAwMDAwMDAwMjgKKzoyMDRBMDAwMDAwMDAxQzFDMDgwODA4MDgwNDEwMDQxMDAyMjAwMTQwMDA4MDAxMDAxMjAwMEMwMDAwMDAwMDAwMDAwMDAwMDAxNAorOjIwNEEyMDAwMDAwMDAzODAwMTAwMUZGMDIxMDg0MTA0NDEwNDQxMDQyMTA4MUZGMDAxMDAwMzgwMDAwMDAwMDAwMDAwMDAwMDJGCis6MjA0QTQwMDAwMDAwNzAxQzEwMTAwODIwMDQ0MDAyODAwMTAwMDI4MDA0NDAwODIwMTAxMDcwMUMwMDAwMDAwMDAwMDAwMDAwMjEKKzoyMDRBNjAwMDAwMDAzODM4MTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwM0ZGODAwMDQwMDA0MDAwMDAwMDA2NworOjIwNEE4MDAwMDAwMDM4MzgxMDEwMTAxMDEwMTAxMDEwMDgzMDA3RDAwMDEwMDAxMDAwMTAwMDM4MDAwMDAwMDAwMDAwMDAwMEFGCis6MjA0QUEwMDAwMDAwNzM5QzIxMDgyMTA4MjEwODIxMDgyMTA4MjEwODIxMDgyMTA4MjEwODdGRkMwMDAwMDAwMDAwMDAwMDAwRkIKKzoyMDRBQzAwMDAwMDA3MzlDMjEwODIxMDgyMTA4MjEwODIxMDgyMTA4MjEwODIxMDgyMTA4N0ZGQzAwMDQwMDA0MDAwMDAwMDBEMworOjIwNEFFMDAwMDAwMDNFMDAyNDAwMDQwMDA0MDAwN0YwMDQwODA0MDQwNDA0MDQwNDA0MDgwRkYwMDAwMDAwMDAwMDAwMDAwMDI2Cis6MjA0QjAwMDAwMDAwNzAxQzIwMDgyMDA4MjAwODNGMDgyMDg4MjA0ODIwNDgyMDQ4MjA4ODdGMUMwMDAwMDAwMDAwMDAwMDAwMjcKKzoyMDRCMjAwMDAwMDAxQzAwMDgwMDA4MDAwODAwMEZFMDA4MTAwODA4MDgwODA4MDgwODEwMUZFMDAwMDAwMDAwMDAwMDAwMDBGMworOjIwNEI0MDAwMDAwMDJGRTAzMDEwMjAwODAwMDQwMDA0MDFGQzAwMDQwMDA0MTAwODA4MTAwN0UwMDAwMDAwMDAwMDAwMDAwMEJBCis6MjA0QjYwMDAwMDAwNzFGMDIyMDgyNDA0MjQwNDI0MDQzQzA0MjQwNDI0MDQyNDA0MjIwODcxRjAwMDAwMDAwMDAwMDAwMDAwRUYKKzoyMDRCODAwMDAwMDAwM0ZDMDQwODA4MDgwODA4MDQwODAzRjgwMDg4MDMwODA0MDgwODA4MzgxQzAwMDAwMDAwMDAwMDAwMDBFMAorOjIwNEJBMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEY1Cis6MjA0QkMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRDUKKzoyMDRCRTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBCNQorOjIwNEMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDk0Cis6MjA0QzIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNzQKKzoyMDRDNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1NAorOjIwNEM2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDM0Cis6MjA0QzgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTQKKzoyMDRDQTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBGNAorOjIwNENDMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEQ0Cis6MjA0Q0UwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQjQKKzoyMDREMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA5MworOjIwNEQyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDczCis6MjA0RDQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNTMKKzoyMDRENjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzMworOjIwNEQ4MDAwMDAwMDAwMDAwMDAwMDc4MDA4NDAwMDQwMEY0MDEwQzAxMDQwMTA0MDA4RDAwNzIwMDAwMDAwMDAwMDAwMDAwMDQ2Cis6MjA0REEwMDAwMDIwMDdDMDA4MDAxMDAwMTc4MDE4NDAxMDIwMTAyMDEwMjAxMDIwMDg0MDA3ODAwMDAwMDAwMDAwMDAwMDAwNzYKKzoyMDREQzAwMDAwMDAwMDAwMDAwMDFGODAwODQwMDg0MDA4NDAwRjgwMDg0MDA4NDAwODQwMUY4MDAwMDAwMDAwMDAwMDAwMDA1NgorOjIwNERFMDAwMDAwMDAwMDAwMDAwMUZFMDA4MjAwODAwMDgwMDA4MDAwODAwMDgwMDA4MDAxQzAwMDAwMDAwMDAwMDAwMDAwMDQwCis6MjA0RTAwMDAwMDAwMDAwMDAwMDAwN0YwMDIyMDAyMjAwMjIwMDIyMDA0MjAwNDIwMDgyMDFGRjAxMDEwMDAwMDAwMDAwMDAwNzQKKzoyMDRFMjAwMDAwMDAwMDAwMDAwMDA3ODAwODQwMTAyMDEwMjAxRkUwMTAwMDEwMDAwODIwMDdDMDAwMDAwMDAwMDAwMDAwMDAzNQorOjIwNEU0MDAwMDAwMDA0ODAwMDAwMDc4MDA4NDAxMDIwMTAyMDFGRTAxMDAwMTAwMDA4MjAwN0MwMDAwMDAwMDAwMDAwMDAwMDkxCis6MjA0RTYwMDAwMDAwMDAwMDAwMDAzMzk4MDkyMDA5MjAwNTQwMDdDMDA5MjAwOTIwMTExMDIzODgwMDAwMDAwMDAwMDAwMDAwRUIKKzoyMDRFODAwMDAwMDAwMDAwMDAwMDBCQzAwQzIwMDgyMDAwMjAwMUMwMDAyMDAwMjAwODIwMDdDMDAwMDAwMDAwMDAwMDAwMDBFMworOjIwNEVBMDAwMDAwMDAwMDAwMDAwMzg3MDEwMjAxMDYwMTBBMDExMjAxMjIwMTQyMDE4MjAzMDcwMDAwMDAwMDAwMDAwMDAwMDhCCis6MjA0RUMwMDAwMDAwMDQ4MDAzMDAzODcwMTAyMDEwNjAxMEEwMTEyMDEyMjAxNDIwMTgyMDMwNzAwMDAwMDAwMDAwMDAwMDAwRTQKKzoyMDRFRTAwMDAwMDAwMDAwMDAwMDFDNjAwODgwMDg4MDA5MDAwRTAwMDkwMDA4ODAwODkwMUM2MDAwMDAwMDAwMDAwMDAwMDA2QQorOjIwNEYwMDAwMDAwMDAwMDAwMDAwMEZGMDA0MjAwNDIwMDQyMDA0MjAwNDIwMTQyMDA4NzAwMDAwMDAwMDAwMDAwMDAwMDAwMDMyCis6MjA0RjIwMDAwMDAwMDAwMDAwMDAzODM4MTAxMDE4MzAxNDUwMTI5MDEyOTAxMTEwMTAxMDM4MzgwMDAwMDAwMDAwMDAwMDAwNDAKKzoyMDRGNDAwMDAwMDAwMDAwMDAwMDFDNzAwODIwMDgyMDA4MjAwRkUwMDgyMDA4MjAwODIwMUM3MDAwMDAwMDAwMDAwMDAwMDA1QQorOjIwNEY2MDAwMDAwMDAwMDAwMDAwMDM4MDA0NDAwODIwMDgyMDA4MjAwODIwMDgyMDA0NDAwMzgwMDAwMDAwMDAwMDAwMDAwMERCCis6MjA0RjgwMDAwMDAwMDAwMDAwMDAxRkUwMDg0MDA4NDAwODQwMDg0MDA4NDAwODQwMDg0MDFDRTAwMDAwMDAwMDAwMDAwMDAwMUUKKzoyMDRGQTAwMDAwMDAwMDAwMDAwMDBCODAxQzQwMDgyMDA4MjAwODIwMDgyMDBDNDAwQjgwMDgwMDA4MDAwODAwMUMwMDAwMDA1RgorOjIwNEZDMDAwMDAwMDAwMDAwMDAwMDc4MDA4NDAxMDQwMTAwMDEwMDAxMDAwMTAyMDA4NDAwNzgwMDAwMDAwMDAwMDAwMDAwMDgzCis6MjA0RkUwMDAwMDAwMDAwMDAwMDAxRkYwMTExMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAzODAwMDAwMDAwMDAwMDAwMDAwRjgKKzoyMDUwMDAwMDAwMDAwMDAwMDAwMDFDNzAwODIwMDgyMDA0NDAwNDQwMDQ4MDAyODAwMTAwMDEwMDAyMDAxNDAwMDgwMDAwMDAwNgorOjIwNTAyMDAwMDAwMDAxMDAwMTAwMDEwMDBENjAxMzkwMTExMDExMTAxMTEwMTExMDEzOTAwRDYwMDEwMDAxMDAwMzgwMDAwMDQ0Cis6MjA1MDQwMDAwMDAwMDAwMDAwMDAxQzcwMDgyMDA0NDAwMjgwMDEwMDAyODAwNDQwMDgyMDFDNzAwMDAwMDAwMDAwMDAwMDAwNUIKKzoyMDUwNjAwMDAwMDAwMDAwMDAwMDFDNzAwODIwMDgyMDA4MjAwODIwMDgyMDA4MjAwODIwMUZGMDAwMTAwMDAwMDAwMDAwMDA2RAorOjIwNTA4MDAwMDAwMDAwMDAwMDAwMUNFMDA4NDAwODQwMDg0MDA3QzAwMDQwMDA0MDAwNDAwMEUwMDAwMDAwMDAwMDAwMDAwMEQ1Cis6MjA1MEEwMDAwMDAwMDAwMDAwMDAzQkI4MTExMDExMTAxMTEwMTExMDExMTAxMTEwMTExMDNGRjgwMDAwMDAwMDAwMDAwMDAwREYKKzoyMDUwQzAwMDAwMDAwMDAwMDAwMDNCQjgxMTEwMTExMDExMTAxMTEwMTExMDExMTAxMTEwM0ZGODAwMDgwMDAwMDAwMDAwMDBCNworOjIwNTBFMDAwMDAwMDAwMDAwMDAwM0MwMDI4MDAwODAwMDgwMDBGQzAwODIwMDgyMDA4MjAxRkMwMDAwMDAwMDAwMDAwMDAwMDE2Cis6MjA1MTAwMDAwMDAwMDAwMDAwMDAzODM4MTAxMDEwMTAxMDEwMUYxMDEwOTAxMDkwMTA5MDNGMzgwMDAwMDAwMDAwMDAwMDAwMzkKKzoyMDUxMjAwMDAwMDAwMDAwMDAwMDFDMDAwODAwMDgwMDA4MDAwRkMwMDgyMDA4MjAwODIwMUZDMDAwMDAwMDAwMDAwMDAwMDAxNQorOjIwNTE0MDAwMDAwMDAwMDAwMDAwMDc4MDA4NDAwMDIwMDAyMDAxRTAwMDIwMDgyMDA4NDAwNzgwMDAwMDAwMDAwMDAwMDAwMDQ4Cis6MjA1MTYwMDAwMDAwMDAwMDAwMDAzOEMwMTEyMDEyMTAxMjEwMUUxMDEyMTAxMjEwMTEyMDM4QzAwMDAwMDAwMDAwMDAwMDAwMjcKKzoyMDUxODAwMDAwMDAwMDAwMDAwMDAzRjAwNDIwMDQyMDA0MjAwM0UwMDEyMDAyMjAwQTIwMDQ3MDAwMDAwMDAwMDAwMDAwMDBFQworOjIwNTFBMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEVGCis6MjA1MUMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQ0YKKzoyMDUxRTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBBRgorOjIwNTIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDhFCis6MjA1MjIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNkUKKzoyMDUyNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0RQorOjIwNTI2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDJFCis6MjA1MjgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEUKKzoyMDUyQTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBFRQorOjIwNTJDMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMENFCis6MjA1MkUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQUUKKzoyMDUzMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA4RAorOjIwNTMyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDZECis6MjA1MzQwMDAwMDAwMDAwMDAwMDAwMDAwM0MwMDAwMDAwMDAwMzgwMDQ0MDA0NDAwNDQwMDQ0MDA0NDAwM0EwMDAwMDAwMDAwNEIKKzoyMDUzNjAwMDAwMDAwMDAwMDAwMDAwMDAwODAwMTgwMDAwMDAzODAwNDQwMDQ0MDA0NDAwNDQwMDQ0MDAzQTAwMDAwMDAwMDA0NworOjIwNTM4MDAwMDAwMDAwMDAwMDAwMDAwMDI0MDAxODAwMDAwMDM4MDA0NDAwNDQwMDQ0MDA0NDAwNDQwMDNBMDAwMDAwMDAwMDBCCis6MjA1M0EwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAwMDAwMzgwMDQ0MDA0NDAwNDQwMDQ0MDA0NDAwM0EwMDAwMDAwMDAwMTcKKzoyMDUzQzAwMDAwMDAwMDAwMDAwMDAwMDAzQzAwMDAwMDAwMDAzQzAwNDIwMDQyMDA3QzAwNDAwMDIyMDAxQzAwMDAwMDAwMDBENworOjIwNTNFMDAwMDAwMDAwMDAwMDAwMDQwMDA4MDAwODAwMDAwMDNDMDA0MjAwNDIwMDdDMDA0MDAwMjIwMDFDMDAwMDAwMDAwMERGCis6MjA1NDAwMDAwMDAwMDAwMDAwMDAwMDAwMkMwMDE4MDAwMDAwM0MwMDQyMDA0MjAwN0MwMDQwMDAyMjAwMUMwMDAwMDAwMDAwOEUKKzoyMDU0MjAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMTAwMDAwMDAzQzAwNDIwMDQyMDA3QzAwNDAwMDIyMDAxQzAwMDAwMDAwMDA5MgorOjIwNTQ0MDAwMDAwMDAwMDAwMDAwMDAwMDc4MDAwMDAwMDAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDM4MDAwMDAwMDAwMDNDCis6MjA1NDYwMDAwMDAwMDAwMDAwMDAwODAwMTAwMDEwMDAwMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMzgwMDAwMDAwMDAwNkMKKzoyMDU0ODAwMDAwMDAwMDAwMDAwMDAwMDAyODAwMTAwMDAwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAzODAwMDAwMDAwMDAzQworOjIwNTRBMDAwMDAwMDAwMDAwMDAwMjAwMDIwMDAxMDAwMDAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDM4MDAwMDAwMDAwMDA0Cis6MjA1NEMwMDAwMDAwMDAwMDAwMDAwMDAwM0MwMDAwMDAwMDAwM0MwMDQyMDA0MjAwNDIwMDQyMDA2NjAwM0MwMDAwMDAwMDAwQUEKKzoyMDU0RTAwMDAwMDAwMDAwMDAwMDAwMDAwQzAwMDgwMDAwMDAzQzAwNDIwMDQyMDA0MjAwNDIwMDY2MDAxODAwMDAwMDAwMDBENgorOjIwNTUwMDAwMDAwMDAwMDAwMDAwMDAwMDI0MDAxODAwMDAwMDNDMDA0MjAwNDIwMDQyMDA0MjAwNjYwMDNDMDAwMDAwMDAwMDY5Cis6MjA1NTIwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAwMDAwM0MwMDQyMDA0MjAwNDIwMDQyMDA2NjAwM0MwMDAwMDAwMDAwNzUKKzoyMDU1NDAwMDAwMDAwMDAwMDAwMDAwMDAzQzAwMDAwMDAwMDA0NDAwNDQwMDQ0MDA0NDAwNDQwMDI2MDAzQTAwMDAwMDAwMDA1QgorOjIwNTU2MDAwMDAwMDAwMDAwMDAwMDQwMDA4MDAxODAwQzQwMDQ0MDA0NDAwNDQwMDQ0MDA0NDAwMjYwMDNBMDAwMDAwMDAwMDhGCis6MjA1NTgwMDAwMDAwMDAwMDAwMDAwMDAwMzQwMDE4MDBDNDAwNDQwMDQ0MDA0NDAwNDQwMDQ0MDAyNjAwM0EwMDAwMDAwMDAwNDcKKzoyMDU1QTAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMEM0MDA0NDAwNDQwMDQ0MDA0NDAwNDQwMDI2MDAzQTAwMDAwMDAwMDA2MworOjIwNTVDMDAwMDAwMDAwMDAwMDAwM0MwMDI0MDAyNDAwQzQwMDQ0MDA0NDAwNDQwMDQ0MDA0NDAwMjYwMDNBMDAwMDAwMDAwMENGCis6MjA1NUUwMDAwMDAwMDAwMDA4MDAxODAwMjQwMDI0MDBDNDAwNDQwMDQ0MDA0NDAwNDQwMDQ0MDAyNjAwM0EwMDAwMDAwMDAwQ0IKKzoyMDU2MDAwMDAwMDAwMDAwMjQwMDE4MDAyNDAwMjQwMEM0MDA0NDAwNDQwMDQ0MDA0NDAwNDQwMDI2MDAzQTAwMDAwMDAwMDA4RQorOjIwNTYyMDAwMDAwMDAwMDAxMDAwMTAwMDJDMDAyNDAwQzQwMDQ0MDA0NDAwNDQwMDQ0MDA0NDAwMjYwMDNBMDAwMDAwMDAwMDgyCis6MjA1NjQwMDAwMDAwMDAwMDAwMDAwMDAwMjQwMDI0MDBDNDAwNDQwMDQ0MDA0NDAwNDQwMDQ0MDAyNjAwM0EwMDAwMDAwMDAwOEEKKzoyMDU2NjAwMDAwMDAwMDAwMDAwMDE4MDAzODAwNDQwMDAwMDAzQzAwNDIwMDQyMDA3QzAwNDAwMDIyMDAxQzAwMDAwMDAwMDBEQworOjIwNTY4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDNDMDA0NDAwNDQwMDQ0MDA0NDAwNDQwMDNBMDAwMDAwMDAwMDQwCis6MjA1NkEwMDAwMDAwMDAwMDAwMDAwODAwMDgwMDEwMDAwMDAwN0UwMDRBMDA0QTAwNEEwMDRBMDA0QTAwREIwMDAwMDAwMDAwRkYKKzoyMDU2QzAwMDAwMDAwMDAwMDAwMDAwMDAwODAwMTAwMDBDMDA3NDAwNDIwMDQyMDA0MjAwNDIwMDQyMDBFNzAwMDAwMDAwMDAwMQorOjIwNTZFMDAwMDAwMDAwMDAwMDAwMDAwMDM0MDAxODAwMEMwMDc0MDA0MjAwNDIwMDQyMDA0MjAwNDIwMEU3MDAwMDAwMDAwMEFECis6MjA1NzAwMDAwMDAwMDAwMDAwMDAxMDAwMTAwMDA4MDAwQzAwNzQwMDQyMDA0MjAwNDIwMDQyMDA0MjAwRTcwMDAwMDAwMDAwQjAKKzoyMDU3MjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzQzAwNDQwMDQ0MDA0NDAwNDQwMDNDMDA0NDAwNDQwMDc4MDBFMQorOjIwNTc0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQ5Cis6MjA1NzYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjkKKzoyMDU3ODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOQorOjIwNTdBMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEU5Cis6MjA1N0MwMDAwMDAwMDgwMDA4MDAxMDAwM0ZGODAwMDgwMDA4MDAwODAwMDgwMDA4MDAwODAwMDgwMDEwMDExMDAwQTAwMDQwMzkKKzoyMDU3RTAwMDAwMDAwNDAwMDQwMDA4MDAxRkY4MDAwODAwMDgwMDEwMDExMDAwQTAwMDQwMDBBMDAzMTAwQzEwMzAwMDAwMDA3MgorOjIwNTgwMDAwMDAwMDAwMDAwMDAwMDAwMDNGRjgyMDA4MjAwODIwMDgyMDA4MjAwODIwMDgyMDA4MDAwMDAwMDAwMDAwMDAwMDM5Cis6MjA1ODIwMDAwMDAwMDAwMDNGRjgxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMEZGQzAwMDAwMDAwODYKKzoyMDU4NDAwMDAwMDAwNDAwMDQwMDA4MDAxRkY4MDEwODAxMDgwMTA4MDEwODAyMDgwMjA4MDQwODA4MTAxMTEwMjBBMDAwNDBBNAorOjIwNTg2MDAwMDAwMDAxMDAwMTAwMDEwMDAxMDA3RkZDMDEwMDAxMDAwMjAwMDIwMDA0MDAwODIwMUZGMDAwMDgwMDAwMDAwMDYwCis6MjA1ODgwMDAwMDAwMDAwMDNGQzAwMDQwMDA4MDAxMDAwM0Y4MDAwODAwMDgwMDA4MDAwODAwMDgwMDEwMDExMDAwQTAwMDQwMjQKKzoyMDU4QTAwMDAwMDAwMTAwMDkwMDA5MDAxMTAwMUZGODAxMDgwMTA4MDEwODAyMDgwMjA4MDQwODA0MDgwODEwMTA1MDIwMjBBRQorOjIwNThDMDAwMDAwMDAwMDAwMjIwMDIyMDA0NDAwNDQwMDg4MDA4ODAxMTAwMDg4MDA4ODAwNDQwMDQ0MDAyMjAwMjIwMDAwMEZGCis6MjA1OEUwMDAwMDAwMDAwMDdGRkMwMjAwMDIwMDA0MDAwODAwMUZGMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAyMDAwQTAwMDQwQkUKKzoyMDU5MDAwMDAwMDAwMDAwM0ZGQzEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMjAwMDIwMDA0MDAwODAwMDAwMDBDQworOjIwNTkyMDAwMDAwMDAwMjAwNDIwMDQyMDA0MjAwNDIwMDQyMDA0MjAwODYwMDlBMDBFMjAwMDIwMDAyMDAwMjAwMDIwMDAyMDkwCis6MjA1OTQwMDAwMDAwMDA4MDAwODAwMDgwMDEwMDAxMDAwMjAwMDQwMDAyMDAwMTAwMDEwMDAwODAwMDgwMDA0MDAwNDAwMDAwM0IKKzoyMDU5NjAwMDAwMDAwMDAwN0ZGQzAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAwMDBBMAorOjIwNTk4MDAwMDAwMDAxMDAwMTAwMTExMDExMTAxMTEwMTExMDExMTAxMTEwMUZGMDAxMDAwMTAwMDEwMDdGRkMwMDAwMDAwMEIyCis6MjA1OUEwMDAwMDAwMDA0MDAwODAwMTAwMDIwMDA0NDAwODgwMTEwMDAzMDAwNTAwMDkwMDExMDAwMTAwMDEwMDAxMDAwMTAwMjEKKzoyMDU5QzAwMDAwMDAwMDAwMUZGODAwMDgwMDA4MDAwODFGRjgxMDAwMTAwMDEwMDAxMDAwMTAwMDIwMDAyMDAwNDAwMDgwMDAzMQorOjIwNTlFMDAwMDAwMDAwMDAwRkUwMDgyMDA4MjAwODIwMEEyMDA5MjAwOEEwMDgyMDA4MjAwODIwMDgyMDBGRTAwMDAwMDAwMEI2Cis6MjA1QTAwMDAwMDAwMDAwMDNGRjAwNDEwMDQxMDA0MTAwNDEwMDQxMDA0MjAwNTIwMDRDMDA0MDAwNDAwMDQwMDA0MDAwNDAwRDIKKzoyMDVBMjAwMDAwMDAwMjAwMDIwMDAyMDA3RkZDMDQwMDA0MDAwNDAwMEZGMDAwMTAwMDEwMDAyMDAwMjAwMDQwMDI4MDAxMDBCNworOjIwNUE0MDAwMDAwMDAxMDAwMTAwMDEwMDAxMDAwMjAwMDIwMDAyMDAwNDAwMDQwMDA4NDAxMDIwM0ZGMDAwMDgwMDAwMDAwMDg1Cis6MjA1QTYwMDAwMDAwMTAwODA4MTAwNDIwMDI0MDAwODAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDYKKzoyMDVBODAwMDAwMDAwMDAwN0ZGQzAxMDAwMTAwMDEwMDBGMDAxMDAwMjAwMDIwMDAyMDAwMjAwODEwMTAwRkUwMDAwMDAwMDBEMgorOjIwNUFBMDAwMDAwMDAxMDAwMTAwMDEwMDdGRkMwMTAwMDEwMDBGMDAxMDAwMjAwMDIwMDAyMDAwMjAwODEwMTAwRkUwMDAwMEIwCis6MjA1QUMwMDAwMDAwMDAwMDA4NDAwODQwMDg0MDdGRkMwODQwMDg0MDA4NDAwODgwMDg4MDA5MDAwODAwMDdGMDAwMDAwMDAwODMKKzoyMDVBRTAwMDAwMDAwMDAwN0ZGQzA5MDAwOTAwMTEwMDFGRjgwMTA4MDEwODAxMDgwMjA4MDIwODA0MTAwODEwMTAyMDAwMDA2NgorOjIwNUIwMDAwMDAwMDAwMDAxQzAwMDQwMDA0MDAwNDAwMDIwMDAyMDAwMjAwMDEwMDAxMDAwMDgwMDA0MDAwMjAwMDE4MDAwMDVECis6MjA1QjIwMDAwMDAwMDIwMDAyMDAwNDIwMDQyMDA4NDAwODQwMUY4MDAxMDAwMjAwMDQ0MDA4MjAxRkYwMDAxMDAwMDAwMDAwNUMKKzoyMDVCNDAwMDAwMDAwMDAwMDAwMDFGRjAwMDEwMDAyMDA0MjAwMjQwMDE0MDAwODAwMDgwMDE0MDAyMjAwNDAwMDgwMDAwMDBGMAorOjIwNUI2MDAwMDAwMDNGRTAwODIwMDgyMDA4MjAxMDQwMTA0MDFGRjgwMDA4MDAwODAwMDgwMDEwMDAxMDAwMjAwMDQwMDAwMDNGCis6MjA1QjgwMDAwMDAwMDgwMDA4MDAwODAwMDgwMDEwMDAxMDAwMTAwMDFGRjgwMDA4MDAwODAwMDgwMDEwMDAxMDAwMjAwMDAwNDYKKzoyMDVCQTAwMDAwMDAwMjAwMDIwMDAyMDAwMjAwN0ZGQzAyODAwMjgwMDI4MDA0ODAwNDgwMDQ4MDA4ODAxMDgwNjA3QzAwMDA1QworOjIwNUJDMDAwMDAwMDAwMDAwMTAwMDEwMDAxMDAwMjAwMDIwMDA0MDAwNDAwMDgwMDEwMDAyMDAwM0ZGODAwMDAwMDAwMDAwMDQ3Cis6MjA1QkUwMDAwMDAwMDAwMDA0ODAwNDgwMDQ4MDA0ODAwNDgwMDQ4MDA0ODAwNDgwMDQ4MDA4ODAwODg0MTA4NDYwN0MwMDAwN0QKKzoyMDVDMDAwMDAwMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDA3NQorOjIwNUMyMDAwMDAwMDAwMTAwMDEwMDAxMDA4MjAwNDIwMDI0MDAxNDAwMDgwMDA4MDAxNDAwMjIwMDQxMDE4MDA2MDAwMDAwMDc2Cis6MjA1QzQwMDAwMDAwMDAwMDAwMDAwMDA4MTAwODEwMDgxMDA4MTAwODEwMDgyMDA4MjA3ODNGODgwMDA4MDAwMDAwMDAwMDAwMzUKKzoyMDVDNjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyNAorOjIwNUM4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0Cis6MjA1Q0EwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRTQKKzoyMDVDQzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBDNAorOjIwNUNFMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEE0Cis6MjA1RDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwODMKKzoyMDVEMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2MworOjIwNUQ0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQzCis6MjA1RDYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjMKKzoyMDVEODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMworOjIwNURBMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEUzCis6MjA1REMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQzMKKzoyMDVERTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBBMworOjIwNUUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDgyCis6MjA1RTIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjIKKzoyMDVFNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0MgorOjIwNUU2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDIyCis6MjA1RTgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDIKKzoyMDVFQTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBFMgorOjIwNUVDMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEMyCis6MjA1RUUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQTIKKzoyMDVGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA4MQorOjIwNUYyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDYxCis6MjA1RjQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNDEKKzoyMDVGNjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBGRkZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyMworOjIwNUY4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEZGRkZGRkZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1Cis6MjA1RkEwMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwRDEKKzoyMDVGQzAwMDAxODAwMTgwMDE4MDAxODAwMTgwMDE4MDAxODAwMTgwMDE4MDAxODAwMTgwMDE4MDAxODAwMTgwMDE4MDAxODBCMQorOjIwNUZFMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEUzOEUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDMwCis6MjA2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRTM4RUUzOEUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOUUKKzoyMDYwMjAwMDAxMDAwMTAwMDEwMDAwMDAwMDAwMDAwMDAxMDAwMTAwMDEwMDAwMDAwMDAwMDAwMDAxMDAwMTAwMDEwMDAwMDA1NworOjIwNjA0MDAwMDE4MDAxODAwMTgwMDAwMDAwMDAwMDAwMDE4MDAxODAwMTgwMDAwMDAwMDAwMDAwMDE4MDAxODAwMTgwMDAwMEI3Cis6MjA2MDYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQ0NDQzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwODgKKzoyMDYwODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMENDQ0NDQ0NDMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBEMAorOjIwNjBBMDAwMDEwMDAxMDAwMDAwMDAwMDAxMDAwMTAwMDAwMDAwMDAwMTAwMDEwMDAwMDAwMDAwMDEwMDAxMDAwMDAwMDAwMEQ4Cis6MjA2MEMwMDAwMTgwMDE4MDAwMDAwMDAwMDE4MDAxODAwMDAwMDAwMDAxODAwMTgwMDAwMDAwMDAwMTgwMDE4MDAwMDAwMDAwQjgKKzoyMDYwRTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMUZGMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDA5OAorOjIwNjEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxRkYwMUZGMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDc4Cis6MjA2MTIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDFGRjAxODAwMTgwMDE4MDAxODAwMTgwMDE4MDAxODAwMTgwNTcKKzoyMDYxNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMUZGMDFGRjAxODAwMTgwMDE4MDAxODAwMTgwMDE4MDAxODBCOAorOjIwNjE2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEZGMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDE4Cis6MjA2MTgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRkYwMEZGMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwRkEKKzoyMDYxQTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBGRjgwMDE4MDAxODAwMTgwMDE4MDAxODAwMTgwMDE4MDAxODA1OAorOjIwNjFDMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEZGODBGRjgwMDE4MDAxODAwMTgwMDE4MDAxODAwMTgwMDE4MDNBCis6MjA2MUUwMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDFGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOTgKKzoyMDYyMDAwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMUZGMDFGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA3NworOjIwNjIyMDAwMDE4MDAxODAwMTgwMDE4MDAxODAwMTgwMDE4MDAxRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEQ3Cis6MjA2MjQwMDAwMTgwMDE4MDAxODAwMTgwMDE4MDAxODAwMTgwMDFGRjAxRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQjcKKzoyMDYyNjAwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDBGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxOAorOjIwNjI4MDAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMEZGMDBGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEY5Cis6MjA2MkEwMDAwMTgwMDE4MDAxODAwMTgwMDE4MDAxODAwMTgwRkY4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRDgKKzoyMDYyQzAwMDAxODAwMTgwMDE4MDAxODAwMTgwMDE4MDAxODBGRjgwRkY4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzOQorOjIwNjJFMDAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxRkYwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDhGCis6MjA2MzAwMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDFGRjAxRkYwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwNkYKKzoyMDYzMjAwMDAxODAwMTgwMDE4MDAxODAwMTgwMDE4MDAxODAwMUZGMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDBDRQorOjIwNjM0MDAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxRkYwMTgwMDE4MDAxODAwMTgwMDE4MDAxODAwMTgwMDE4MDJFCis6MjA2MzYwMDAwMTgwMDE4MDAxODAwMTgwMDE4MDAxODAwMTgwMDFGRjAxODAwMTgwMDE4MDAxODAwMTgwMDE4MDAxODAwMTgwOEUKKzoyMDYzODAwMDAxODAwMTgwMDE4MDAxODAwMTgwMDE4MDAxODAwMUZGMDFGRjAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDA2RgorOjIwNjNBMDAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxRkYwMUZGMDE4MDAxODAwMTgwMDE4MDAxODAwMTgwMDE4MDRGCis6MjA2M0MwMDAwMTgwMDE4MDAxODAwMTgwMDE4MDAxODAwMTgwMDFGRjAxRkYwMTgwMDE4MDAxODAwMTgwMDE4MDAxODAwMTgwQUYKKzoyMDYzRTAwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDBGRjAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDA4RgorOjIwNjQwMDAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMEZGMDBGRjAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDcwCis6MjA2NDIwMDAwMTgwMDE4MDAxODAwMTgwMDE4MDAxODAwMTgwRkYwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwQ0UKKzoyMDY0NDAwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDBGRjAwMDE4MDAxODAwMTgwMDE4MDAxODAwMTgwMDE4MDAxODAyRQorOjIwNjQ2MDAwMDE4MDAxODAwMTgwMDE4MDAxODAwMTgwMDE4MEZGODAwMTgwMDE4MDAxODAwMTgwMDE4MDAxODAwMTgwMDE4MDBFCis6MjA2NDgwMDAwMTgwMDE4MDAxODAwMTgwMDE4MDAxODAwMTgwRkY4MEZGMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwRjAKKzoyMDY0QTAwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDBGRjAwRkY4MDAxODAwMTgwMDE4MDAxODAwMTgwMDE4MDAxODBEMAorOjIwNjRDMDAwMDE4MDAxODAwMTgwMDE4MDAxODAwMTgwMDE4MEZGODBGRjgwMDE4MDAxODAwMTgwMDE4MDAxODAwMTgwMDE4MEIwCis6MjA2NEUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRkZGRjAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwOTYKKzoyMDY1MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBGRkZGRkYwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDA3NworOjIwNjUyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEZGRkYwMUZGMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDU2Cis6MjA2NTQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRkZGRkZGRkYwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMzgKKzoyMDY1NjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBGRkZGMDE4MDAxODAwMTgwMDE4MDAxODAwMTgwMDE4MDAxODAxNQorOjIwNjU4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEZGRkZGRjgwMDE4MDAxODAwMTgwMDE4MDAxODAwMTgwMDE4MEY3Cis6MjA2NUEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRkZGRjAxRkYwMTgwMDE4MDAxODAwMTgwMDE4MDAxODAwMTgwNTYKKzoyMDY1QzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBGRkZGRkZGRjAxODAwMTgwMDE4MDAxODAwMTgwMDE4MDAxODAzOAorOjIwNjVFMDAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMEZGRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDk2Cis6MjA2NjAwMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwRkZGRkZFMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNzcKKzoyMDY2MjAwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDBGRkZGMDBGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1NgorOjIwNjY0MDAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMEZGRkZGRkZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDM3Cis6MjA2NjYwMDAwMTgwMDE4MDAxODAwMTgwMDE4MDAxODAwMTgwRkZGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOTUKKzoyMDY2ODAwMDAxODAwMTgwMDE4MDAxODAwMTgwMDE4MDAxODBGRkZGRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA3NgorOjIwNjZBMDAwMDE4MDAxODAwMTgwMDE4MDAxODAwMTgwMDE4MEZGRkYwMEZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDU2Cis6MjA2NkMwMDAwMTgwMDE4MDAxODAwMTgwMDE4MDAxODAwMTgwRkZGRkZGRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMzcKKzoyMDY2RTAwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDBGRkZGMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDA4RAorOjIwNjcwMDAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMEZGRkZGRjAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDZFCis6MjA2NzIwMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwRkZGRjAxRkYwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwNEQKKzoyMDY3NDAwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDBGRkZGRkZGRjAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAyRgorOjIwNjc2MDAwMDE4MDAxODAwMTgwMDE4MDAxODAwMTgwMDE4MEZGRkYwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDhDCis6MjA2NzgwMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwRkZGRjAxODAwMTgwMDE4MDAxODAwMTgwMDE4MDAxODAwMTgwRUMKKzoyMDY3QTAwMDAxODAwMTgwMDE4MDAxODAwMTgwMDE4MDAxODBGRkZGMDE4MDAxODAwMTgwMDE4MDAxODAwMTgwMDE4MDAxODA0QworOjIwNjdDMDAwMDE4MDAxODAwMTgwMDE4MDAxODAwMTgwMDE4MEZGRkZGRjAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDJFCis6MjA2N0UwMDAwMTgwMDE4MDAxODAwMTgwMDE4MDAxODAwMTgwRkZGRjAxRkYwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMEQKKzoyMDY4MDAwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDBGRkZGRkY4MDAxODAwMTgwMDE4MDAxODAwMTgwMDE4MDAxODA2RAorOjIwNjgyMDAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMEZGRkYwMUZGMDE4MDAxODAwMTgwMDE4MDAxODAwMTgwMDE4MENDCis6MjA2ODQwMDAwMTgwMDE4MDAxODAwMTgwMDE4MDAxODAwMTgwRkZGRkZGRkYwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwQUUKKzoyMDY4NjAwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDBGRkZGRkZGRjAxODAwMTgwMDE4MDAxODAwMTgwMDE4MDAxODA4RQorOjIwNjg4MDAwMDE4MDAxODAwMTgwMDE4MDAxODAwMTgwMDE4MEZGRkZGRjgwMDE4MDAxODAwMTgwMDE4MDAxODAwMTgwMDE4MDZECis6MjA2OEEwMDAwMTgwMDE4MDAxODAwMTgwMDE4MDAxODAwMTgwRkZGRjAxRkYwMTgwMDE4MDAxODAwMTgwMDE4MDAxODAwMTgwQ0MKKzoyMDY4QzAwMDAxODAwMTgwMDE4MDAxODAwMTgwMDE4MDAxODBGRkZGRkZGRjAxODAwMTgwMDE4MDAxODAwMTgwMDE4MDAxODBBRQorOjIwNjhFMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDk4Cis6MjA2OTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNzcKKzoyMDY5MjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1NworOjIwNjk0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDM3Cis6MjA2OTYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTcKKzoyMDY5ODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBGNworOjIwNjlBMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEQ3Cis6MjA2OUMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQjcKKzoyMDY5RTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA5NworOjIwNkEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDc2Cis6MjA2QTIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNTYKKzoyMDZBNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzNgorOjIwNkE2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDE2Cis6MjA2QTgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRjYKKzoyMDZBQTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBENgorOjIwNkFDMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEI2Cis6MjA2QUUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOTYKKzoyMDZCMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA3NQorOjIwNkIyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDU1Cis6MjA2QjQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMzUKKzoyMDZCNjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxNQorOjIwNkI4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEY1Cis6MjA2QkEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRDUKKzoyMDZCQzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBCNQorOjIwNkJFMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDk1Cis6MjA2QzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNzQKKzoyMDZDMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1NAorOjIwNkM0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDM0Cis6MjA2QzYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTQKKzoyMDZDODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBGNAorOjIwNkNBMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEQ0Cis6MjA2Q0MwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQjQKKzoyMDZDRTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA5NAorOjIwNkQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDczCis6MjA2RDIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNTMKKzoyMDZENDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzMworOjIwNkQ2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEzCis6MjA2RDgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRjMKKzoyMDZEQTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBEMworOjIwNkRDMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEIzCis6MjA2REUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOTMKKzoyMDZFMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA3MgorOjIwNkUyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDUyCis6MjA2RTQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMzIKKzoyMDZFNjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMgorOjIwNkU4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEYyCis6MjA2RUEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRDIKKzoyMDZFQzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBCMgorOjIwNkVFMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDkyCis6MjA2RjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNzEKKzoyMDZGMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1MQorOjIwNkY0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDMxCis6MjA2RjYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTEKKzoyMDZGODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBGMQorOjIwNkZBMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEQxCis6MjA2RkMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQjEKKzoyMDZGRTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA5MQorOjIwNzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDcwCis6MjA3MDIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNTAKKzoyMDcwNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzMAorOjIwNzA2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwCis6MjA3MDgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRjAKKzoyMDcwQTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBEMAorOjIwNzBDMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEIwCis6MjA3MEUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOTAKKzoyMDcxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2RgorOjIwNzEyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDRGCis6MjA3MTQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMkYKKzoyMDcxNjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRgorOjIwNzE4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEVGCis6MjA3MUEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQ0YKKzoyMDcxQzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBBRgorOjIwNzFFMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDhGCis6MjA3MjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNkUKKzoyMDcyMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0RQorOjIwNzI0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDJFCis6MjA3MjYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEUKKzoyMDcyODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBFRQorOjIwNzJBMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMENFCis6MjA3MkMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQUUKKzoyMDcyRTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA4RQorOjIwNzMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDZECis6MjA3MzIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNEQKKzoyMDczNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyRAorOjIwNzM2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBECis6MjA3MzgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRUQKKzoyMDczQTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBDRAorOjIwNzNDMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEFECis6MjA3M0UwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOEQKKzoyMDc0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2QworOjIwNzQyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDRDCis6MjA3NDQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMkMKKzoyMDc0NjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQworOjIwNzQ4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEVDCis6MjA3NEEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQ0MKKzoyMDc0QzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBBQworOjIwNzRFMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDhDCis6MjA3NTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNkIKKzoyMDc1MjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0QgorOjIwNzU0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDJCCis6MjA3NTYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEIKKzoyMDc1ODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBFQgorOjIwNzVBMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMENCCis6MjA3NUMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQUIKKzoyMDc1RTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA4QgorOjIwNzYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDZBCis6MjA3NjIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNEEKKzoyMDc2NDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyQQorOjIwNzY2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBBCis6MjA3NjgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRUEKKzoyMDc2QTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBDQQorOjIwNzZDMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEFBCis6MjA3NkUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOEEKKzoyMDc3MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2OQorOjIwNzcyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQ5Cis6MjA3NzQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjkKKzoyMDc3NjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOQorOjIwNzc4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEU5Cis6MjA3N0EwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQzkKKzoyMDc3QzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBBOQorOjIwNzdFMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDg5Cis6MjA3ODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjgKKzoyMDc4MjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0OAorOjIwNzg0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDI4Cis6MjA3ODYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDgKKzoyMDc4ODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBFOAorOjIwNzhBMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEM4Cis6MjA3OEMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQTgKKzoyMDc4RTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA4OAorOjIwNzkwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDY3Cis6MjA3OTIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNDcKKzoyMDc5NDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyNworOjIwNzk2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA3Cis6MjA3OTgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRTcKKzoyMDc5QTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBDNworOjIwNzlDMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEE3Cis6MjA3OUUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwODcKKzoyMDdBMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2NgorOjIwN0EyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQ2Cis6MjA3QTQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjYKKzoyMDdBNjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNgorOjIwN0E4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEU2Cis6MjA3QUEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQzYKKzoyMDdBQzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBBNgorOjIwN0FFMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDg2Cis6MjA3QjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjUKKzoyMDdCMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0NQorOjIwN0I0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDI1Cis6MjA3QjYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDUKKzoyMDdCODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBFNQorOjIwN0JBMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEM1Cis6MjA3QkMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQTUKKzoyMDdCRTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA4NQorOjIwN0MwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDY0Cis6MjA3QzIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNDQKKzoyMDdDNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyNAorOjIwN0M2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0Cis6MjA3QzgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRTQKKzoyMDdDQTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBDNAorOjIwN0NDMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEE0Cis6MjA3Q0UwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwODQKKzoyMDdEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2MworOjIwN0QyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQzCis6MjA3RDQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjMKKzoyMDdENjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMworOjIwN0Q4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEUzCis6MjA3REEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQzMKKzoyMDdEQzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBBMworOjIwN0RFMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDgzCis6MjA3RTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjIKKzoyMDdFMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0MgorOjIwN0U0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDIyCis6MjA3RTYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDIKKzoyMDdFODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBFMgorOjIwN0VBMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEMyCis6MjA3RUMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQTIKKzoyMDdFRTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA4MgorOjIwN0YwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDYxCis6MjA3RjIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNDEKKzoyMDdGNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyMQorOjIwN0Y2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxCis6MjA3RjgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRTEKKzoyMDdGQTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBDMQorOjIwN0ZDMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEExCis6MjA3RkUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwODEKKzoyMDgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2MAorOjIwODAyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQwCis6MjA4MDQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjAKKzoyMDgwNjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorOjIwODA4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEUwCis6MjA4MEEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQzAKKzoyMDgwQzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBBMAorOjIwODBFMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDgwCis6MjA4MTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNUYKKzoyMDgxMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzRgorOjIwODE0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDFGCis6MjA4MTYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRkYKKzoyMDgxODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBERgorOjIwODFBMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEJGCis6MjA4MUMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOUYKKzoyMDgxRTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA3RgorOjIwODIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDVFCis6MjA4MjIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM0UKKzoyMDgyNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxRQorOjIwODI2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEZFCis6MjA4MjgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwREUKKzoyMDgyQTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBCRQorOjIwODJDMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDlFCis6MjA4MkUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwN0UKKzoyMDgzMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1RAorOjIwODMyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDNECis6MjA4MzQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMUQKKzoyMDgzNjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBGRAorOjIwODM4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMERECis6MjA4M0EwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQkQKKzoyMDgzQzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA5RAorOjIwODNFMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDdECis6MjA4NDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNUMKKzoyMDg0MjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzQworOjIwODQ0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDFDCis6MjA4NDYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRkMKKzoyMDg0ODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBEQworOjIwODRBMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEJDCis6MjA4NEMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOUMKKzoyMDg0RTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA3QworOjIwODUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDVCCis6MjA4NTIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM0IKKzoyMDg1NDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxQgorOjIwODU2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEZCCis6MjA4NTgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwREIKKzoyMDg1QTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBCQgorOjIwODVDMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDlCCis6MjA4NUUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwN0IKKzoyMDg2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1QQorOjIwODYyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDNBCis6MjA4NjQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMUEKKzoyMDg2NjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBGQQorOjIwODY4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMERBCis6MjA4NkEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQkEKKzoyMDg2QzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA5QQorOjIwODZFMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDdBCis6MjA4NzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNTkKKzoyMDg3MjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzOQorOjIwODc0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDE5Cis6MjA4NzYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRjkKKzoyMDg3ODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBEOQorOjIwODdBMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEI5Cis6MjA4N0MwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOTkKKzoyMDg3RTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA3OQorOjIwODgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDU4Cis6MjA4ODIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMzgKKzoyMDg4NDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxOAorOjIwODg2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEY4Cis6MjA4ODgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRDgKKzoyMDg4QTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBCOAorOjIwODhDMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDk4Cis6MjA4OEUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNzgKKzoyMDg5MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1NworOjIwODkyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDM3Cis6MjA4OTQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTcKKzoyMDg5NjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBGNworOjIwODk4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEQ3Cis6MjA4OUEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQjcKKzoyMDg5QzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA5NworOjIwODlFMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDc3Cis6MjA4QTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNTYKKzoyMDhBMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzNgorOjIwOEE0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDE2Cis6MjA4QTYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRjYKKzoyMDhBODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBENgorOjIwOEFBMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEI2Cis6MjA4QUMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOTYKKzoyMDhBRTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA3NgorOjIwOEIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDU1Cis6MjA4QjIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMzUKKzoyMDhCNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxNQorOjIwOEI2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEY1Cis6MjA4QjgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRDUKKzoyMDhCQTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBCNQorOjIwOEJDMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDk1Cis6MjA4QkUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNzUKKzoyMDhDMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1NAorOjIwOEMyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDM0Cis6MjA4QzQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTQKKzoyMDhDNjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBGNAorOjIwOEM4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEQ0Cis6MjA4Q0EwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQjQKKzoyMDhDQzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA5NAorOjIwOENFMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDc0Cis6MjA4RDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNTMKKzoyMDhEMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzMworOjIwOEQ0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEzCis6MjA4RDYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRjMKKzoyMDhEODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBEMworOjIwOERBMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEIzCis6MjA4REMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOTMKKzoyMDhERTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA3MworOjIwOEUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDUyCis6MjA4RTIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMzIKKzoyMDhFNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMgorOjIwOEU2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEYyCis6MjA4RTgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRDIKKzoyMDhFQTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBCMgorOjIwOEVDMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDkyCis6MjA4RUUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNzIKKzoyMDhGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1MQorOjIwOEYyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDMxCis6MjA4RjQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTEKKzoyMDhGNjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBGMQorOjIwOEY4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEQxCis6MjA4RkEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQjEKKzoyMDhGQzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA5MQorOjIwOEZFMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDcxCis6MjA5MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNTAKKzoyMDkwMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzMAorOjIwOTA0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwCis6MjA5MDYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRjAKKzoyMDkwODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBEMAorOjIwOTBBMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEIwCis6MjA5MEMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOTAKKzoyMDkwRTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA3MAorOjIwOTEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDRGCis6MjA5MTIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMkYKKzoyMDkxNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRgorOjIwOTE2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEVGCis6MjA5MTgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQ0YKKzoyMDkxQTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBBRgorOjIwOTFDMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDhGCis6MjA5MUUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNkYKKzoyMDkyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0RQorOjIwOTIyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDJFCis6MjA5MjQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEUKKzoyMDkyNjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBFRQorOjIwOTI4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMENFCis6MjA5MkEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQUUKKzoyMDkyQzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA4RQorOjIwOTJFMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDZFCis6MjA5MzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNEQKKzoyMDkzMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyRAorOjIwOTM0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBECis6MjA5MzYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRUQKKzoyMDkzODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBDRAorOjIwOTNBMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEFECis6MjA5M0MwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOEQKKzoyMDkzRTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2RAorOjIwOTQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDRDCis6MjA5NDIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMkMKKzoyMDk0NDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQworOjIwOTQ2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEVDCis6MjA5NDgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQ0MKKzoyMDk0QTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBBQworOjIwOTRDMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDhDCis6MjA5NEUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNkMKKzoyMDk1MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0QgorOjIwOTUyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDJCCis6MjA5NTQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEIKKzoyMDk1NjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBFQgorOjIwOTU4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMENCCis6MjA5NUEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQUIKKzoyMDk1QzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA4QgorOjIwOTVFMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDZCCis6MjA5NjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNEEKKzoyMDk2MjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyQQorOjIwOTY0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBBCis6MjA5NjYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRUEKKzoyMDk2ODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBDQQorOjIwOTZBMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEFBCis6MjA5NkMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOEEKKzoyMDk2RTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2QQorOjIwOTcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQ5Cis6MjA5NzIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjkKKzoyMDk3NDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOQorOjIwOTc2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEU5Cis6MjA5NzgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQzkKKzoyMDk3QTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBBOQorOjIwOTdDMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDg5Cis6MjA5N0UwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjkKKzoyMDk4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0OAorOjIwOTgyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDI4Cis6MjA5ODQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDgKKzoyMDk4NjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBFOAorOjIwOTg4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEM4Cis6MjA5OEEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQTgKKzoyMDk4QzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA4OAorOjIwOThFMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDY4Cis6MjA5OTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNDcKKzoyMDk5MjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyNworOjIwOTk0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA3Cis6MjA5OTYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRTcKKzoyMDk5ODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBDNworOjIwOTlBMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEE3Cis6MjA5OUMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwODcKKzoyMDk5RTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2NworOjIwOUEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQ2Cis6MjA5QTIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjYKKzoyMDlBNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNgorOjIwOUE2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEU2Cis6MjA5QTgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQzYKKzoyMDlBQTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBBNgorOjIwOUFDMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDg2Cis6MjA5QUUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjYKKzoyMDlCMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0NQorOjIwOUIyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDI1Cis6MjA5QjQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDUKKzoyMDlCNjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBFNQorOjIwOUI4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEM1Cis6MjA5QkEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQTUKKzoyMDlCQzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA4NQorOjIwOUJFMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDY1Cis6MjA5QzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNDQKKzoyMDlDMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyNAorOjIwOUM0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0Cis6MjA5QzYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRTQKKzoyMDlDODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBDNAorOjIwOUNBMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEE0Cis6MjA5Q0MwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwODQKKzoyMDlDRTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2NAorOjIwOUQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQzCis6MjA5RDIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjMKKzoyMDlENDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMworOjIwOUQ2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEUzCis6MjA5RDgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQzMKKzoyMDlEQTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBBMworOjIwOURDMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDgzCis6MjA5REUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjMKKzoyMDlFMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0MgorOjIwOUUyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDIyCis6MjA5RTQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDIKKzoyMDlFNjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBFMgorOjIwOUU4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEMyCis6MjA5RUEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQTIKKzoyMDlFQzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA4MgorOjIwOUVFMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDYyCis6MjA5RjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNDEKKzoyMDlGMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyMQorOjIwOUY0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxCis6MjA5RjYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRTEKKzoyMDlGODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBDMQorOjIwOUZBMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEExCis6MjA5RkMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwODEKKzoyMDlGRTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2MQorOjIwQTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQwCis6MjBBMDIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjAKKzoyMEEwNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorOjIwQTA2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEUwCis6MjBBMDgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQzAKKzoyMEEwQTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBBMAorOjIwQTBDMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDgwCis6MjBBMEUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjAKKzoyMEExMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzRgorOjIwQTEyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDFGCis6MjBBMTQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRkYKKzoyMEExNjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBERgorOjIwQTE4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEJGCis6MjBBMUEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOUYKKzoyMEExQzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA3RgorOjIwQTFFMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDVGCis6MjBBMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM0UKKzoyMEEyMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxRQorOjIwQTI0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEZFCis6MjBBMjYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwREUKKzoyMEEyODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBCRQorOjIwQTJBMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDlFCis6MjBBMkMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwN0UKKzoyMEEyRTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1RQorOjIwQTMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDNECis6MjBBMzIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMUQKKzoyMEEzNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBGRAorOjIwQTM2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMERECis6MjBBMzgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQkQKKzoyMEEzQTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA5RAorOjIwQTNDMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDdECis6MjBBM0UwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNUQKKzoyMEE0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzQworOjIwQTQyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDFDCis6MjBBNDQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRkMKKzoyMEE0NjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBEQworOjIwQTQ4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEJDCis6MjBBNEEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOUMKKzoyMEE0QzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA3QworOjIwQTRFMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDVDCis6MjBBNTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM0IKKzoyMEE1MjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxQgorOjIwQTU0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEZCCis6MjBBNTYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwREIKKzoyMEE1ODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBCQgorOjIwQTVBMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDlCCis6MjBBNUMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwN0IKKzoyMEE1RTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1QgorOjIwQTYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDNBCis6MjBBNjIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMUEKKzoyMEE2NDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBGQQorOjIwQTY2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMERBCis6MjBBNjgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQkEKKzoyMEE2QTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA5QQorOjIwQTZDMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDdBCis6MjBBNkUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNUEKKzoyMEE3MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzOQorOjIwQTcyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDE5Cis6MjBBNzQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRjkKKzoyMEE3NjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBEOQorOjIwQTc4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEI5Cis6MjBBN0EwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOTkKKzoyMEE3QzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA3OQorOjIwQTdFMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDU5Cis6MjBBODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMzgKKzoyMEE4MjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxOAorOjIwQTg0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEY4Cis6MjBBODYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRDgKKzoyMEE4ODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBCOAorOjIwQThBMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDk4Cis6MjBBOEMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNzgKKzoyMEE4RTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1OAorOjIwQTkwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDM3Cis6MjBBOTIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTcKKzoyMEE5NDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBGNworOjIwQTk2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEQ3Cis6MjBBOTgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQjcKKzoyMEE5QTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA5NworOjIwQTlDMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDc3Cis6MjBBOUUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNTcKKzoyMEFBMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzNgorOjIwQUEyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDE2Cis6MjBBQTQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRjYKKzoyMEFBNjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBENgorOjIwQUE4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEI2Cis6MjBBQUEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOTYKKzoyMEFBQzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA3NgorOjIwQUFFMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDU2Cis6MjBBQjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMzUKKzoyMEFCMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxNQorOjIwQUI0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEY1Cis6MjBBQjYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRDUKKzoyMEFCODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBCNQorOjIwQUJBMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDk1Cis6MjBBQkMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNzUKKzoyMEFCRTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1NQorOjIwQUMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDM0Cis6MjBBQzIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTQKKzoyMEFDNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBGNAorOjIwQUM2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEQ0Cis6MjBBQzgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQjQKKzoyMEFDQTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA5NAorOjIwQUNDMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDc0Cis6MjBBQ0UwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNTQKKzoyMEFEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzMworOjIwQUQyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEzCis6MjBBRDQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRjMKKzoyMEFENjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBEMworOjIwQUQ4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEIzCis6MjBBREEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOTMKKzoyMEFEQzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA3MworOjIwQURFMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDUzCis6MjBBRTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMzIKKzoyMEFFMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMgorOjIwQUU0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEYyCis6MjBBRTYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRDIKKzoyMEFFODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBCMgorOjIwQUVBMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDkyCis6MjBBRUMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNzIKKzoyMEFFRTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1MgorOjIwQUYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDMxCis6MjBBRjIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTEKKzoyMEFGNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBGMQorOjIwQUY2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEQxCis6MjBBRjgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQjEKKzoyMEFGQTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA5MQorOjIwQUZDMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDcxCis6MjBBRkUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNTEKKzoyMEIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzMAorOjIwQjAyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwCis6MjBCMDQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRjAKKzoyMEIwNjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBEMAorOjIwQjA4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEIwCis6MjBCMEEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwOTAKKzoyMEIwQzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA3MAorOjIwQjBFMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDUwCis6MjBCMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMkYKKzoyMEIxMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRgorOjIwQjE0MDAwMDAwMEY3N0U5NTA0OTUwNDk2NzQ5NjU0OTU1NDk1NTQ5NTU0RjU1NDk3NzQwNDA0MDQwNDA0MDQwNDE0MDQwODA5Cis6MjBCMTYwMDAwMDAwN0JGRTQ4MDg1MDA4NjAwODUzRTg0QTI4NEEyODRBMjg2QkU4NTAwODQwMDg0MDA4NDAwODQwMjg0MDEwN0EKKzoyMEIxODAwMDEwNDAxMDY4MTA4NDExRkUxMDg0RkQwMDExRkMxMjIwMTQyMDEzRkUxMDIwMUM1MEUwODg0MTA2MDYwNDAwMDBEQQorOjIwQjFBMDAwMTA0MDEwNDAxMDg4MTFGQ0ZDMDQxMDgwMTRGQzE5MjAzMDIwRDdGRTEwMjAxMDYwMTA1MDEwODg1MTBFMjYwNDJCCis6MjBCMUMwMDAwMTEwMDExMEY5MTA4RkZFODkxMDg4MDA4OTEwODkxMDg4QTBGOEEwODg0MDAwQTAwMTEwMDIxODA0MEUwODA0RjMKKzoyMEIxRTAwMDAwODAwMDg4RjEwNDkzRkU5MTA0OTIwMDkzRkM5NDQwRjg0MDk3RkU4MDQwMDBBMDAxMTAwMjA4MDQwRTA4MDREMQorOjIwQjIwMDAwMDEwMDAwODA3RkZFMDAwMDFGRjAxMDEwMTAxMDFGRjAxMjEwMDUzODA4RTAxODQwNjgzMDBBMUUwQzA4MDgwMDU3Cis6MjBCMjIwMDAxMDQwMTI0NDIyNDQ3QTQ0NEJGQzQ4MDA0QkY4NzgwODQ4MDg0QkY4NEEwODdBMDA0QTAyNDIwMjAxRkUwMDAwMDQKKzoyMEIyNDAwMDAxMDAwMDgwM0ZGRTIwMDBBM0Y4NjIwODIzRjgyMDAwNkZCRUE4QTIyRkJFMjA0MDI0NDQ0NDQ0NDdGQzg0MDQ1MQorOjIwQjI2MDAwMDQyMEZGRkUwNDIwMjNGODEyMDgxM0Y4MDIwOEUzRjgyNDAwMjdGQzJDNDQzNEE0MkQxNDM3RTQyMDE0MDAwODNECis6MjBCMjgwMDA0MDFDNDNFMDc4MjA1M0ZFNTA3MDkwQThGRDI2MTI2MDEwNDAyQkZFMjg5MDQ1OTA0MDcwODBEODA3MDQwMDAwQTAKKzoyMEIyQTAwMDA0NDAwNDQwRkZGRTA0NDAwNDQwMDgyMDA4MzAwNDIwMDQ0MDAyODAwMTAwMDI4MDA0NDAwODMwMzAwRUMwMDQzNgorOjIwQjJDMDAwMDFGQ0ZEMDQxMUZDMTEwNDIxRkMyMDAwN0JGRTY4MDhBODA4MkJGRTI4MDgyODg4Mzg0ODI4NDgyMDI4MDAxMDI3Cis6MjBCMkUwMDAwMEY4M0Y5MDEyMTAwOTIwM0ZGRTIyMDI0MjAwM0ZGQzA0MDAwN0YwMEMyMDBCNDAxMEMwNjMzMDhDMEUzMDA0QkIKKzoyMEIzMDAwMDAyMTA3OTEwNDkyMDU3RkU2MDAwNjExMDUxMDg0QTA0NDgwMDZGRjg1NTI4NDUyODQ1Mjg0NTI4NUZGRTQwMDA0QworOjIwQjMyMDAwMjg0MDI4MjBGRkZFMjkwNDM4MjAxMDIwN0M0MDU1RkU1NDQ4N0M4ODEwNTBGRTIwMTA1MDExODgxNjBDMTAwNDRGCis6MjBCMzQwMDAwODAwMEZGQzEwMDAyRkY4MDAwMDdGRjgwODEwMDQxMDdGRDA0MDkwMDgxMEZGRDAxOTBBMDYwQTBEMDY3MDgyQzIKKzoyMEIzNjAwMDAyMDAwMTAwM0ZGRTIwMDQ0NDA4MDYwMDA0MDBGRkZFMDgyMDA4MjAwODQwMDY4MDAxMDAwNkMwMTgzOEUwMTBGMQorOjIwQjM4MDAwMTA4MDE4ODAxN0ZDMjEyMDMyMTA2NDg4QkZGNjI0OTAyN0YwMjQ5MDI0OTAyN0YwMjQ4MjIwODIyMDdFMDAwMDFFCis6MjBCM0EwMDAxMDQwMTAyMDEwMjAxM0ZFRkUwNDEwNDAxNDQwMUJGRTMwODhEMTEwMTE5MDEwNjAxMDU4MTE4RTU2MDQyMDAwRTIKKzoyMEIzQzAwMDAwNDAwMDIwN0JGQzQ5MTA0ODkwNDhBMDdGRkU0ODAwNDlGODQ5MDg3OUY4NDkwODAxMDgwMUY4MDEwODAwMDA1OQorOjIwQjNFMDAwMDA4MDEwODQxMDg0MUZGQzAwMDAzRkZFMjAwMDJGRkMyMDgwMjA4MDNGRkUyMDgwMjA4MDQwODA4MDgwMDA4MDA1Cis6MjBCNDAwMDAwMDQwNzgyMDRCRkU0QTA0NEM4ODc4QzA0ODgwNEJGQzc4ODg0OTA4NDg5MDQ4NjA0ODUwNDg4QzY5MDY5MjA0NjAKKzoyMEI0MjAwMDAyMDAwMTAwM0ZGQzIyMDgwNDQwN0ZGQzBDODAwMzgwMUU2MDAxMjA3RkZFMDM0MDBEMzA3MTBFMDEwNDAxMDBCNQorOjIwQjQ0MDAwMDA0MDNDMjAyNDIwMjdGRTNDMDAyNEYwMjQ5MDNDOTAyNDkwMjQ5MDI0OTAyNDkwNDQ5MjU0OTI4OTBFMDIwMEYyCis6MjBCNDYwMDAxRkY4MTAwODFGRjgxMDA4MUZGODAwMDAwNjAwMzhGQzIwODQyMDg0Mjg4NDMwOTQyMDg4MDA4MDAwODAwMDgwM0QKKzoyMEI0ODAwMDAxMDAwMTAwMUZGMDExMTAxMTEwRkZGRTAyODAwNDQwMDgzMDNGRkVEMjk0MTI5MDEyOTAxMjkwRkZGRTAwMDBEOAorOjIwQjRBMDAwMDAwMDdDN0M0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ3QzQ0MDA0NDAwNDQwMDQ0MDA0N0ZGQzQwMDQ0MDA0MDAwMENFCis6MjBCNEMwMDAwODIwMDgzMDdGMjAwODQwM0U3RTA4QzhGRjQ4MTA0ODEwMjgxRTI4MTIxMDIyMTAyMjI4NDI0RThCODQwNDAwM0IKKzoyMEI0RTAwMDEwNDA3RTYwMTA0NDdFRkUxMDg4RkY4ODExNTAzRTMwMjQzMDI0NTg1QzhFODkwNDI4ODgyNDQ0NjY2NjQyMjJEMQorOjIwQjUwMDAwMTAwMDdEREM0NDQ0N0M0NDQ2NjQ3RDU0MTE1NEZFNDQyOENDNDU1NDkyNjRGRTQ0MTA0NDEwNDQxMTU0MTA4OEVFCis6MjBCNTIwMDA0MDAwMzA3ODIzQzAwMDQwRjg0MDA4NDAxM0ZDMTQ0MDM4QTA1NkEwOTQ5MDExMTAxMTA4MTIwNjEyMDQxNDAwQUYKKzoyMEI1NDAwMDEyMTAxQTE4MTdEMDIyMTAyN0JFNjIyNEFGRTQyNDE0MjQxNDI3ODgyNDg4MjQ5NDI4OTQyQkE2MzE0NDAwMDBGQgorOjIwQjU2MDAwMDIwMDNGRjgyMTA4MjkyODI1NDgzRkY4MjM4ODI1NjgyOTI4MDEwMDdGRkUwMjgwMDQ0MDA4MzAzMDBFQzAwNDZECis6MjBCNTgwMDAyMDQwMjA4MDI3RkMyNTU0QjRFNEFGRjRBNEM0MjU2NDI2NTQyMDQwMkZGRTIwNDAyMEEwMjMxMDJDMEUyMDAwMkYKKzoyMEI1QTAwMDQwODAyMTAwMjdGODA2QTg4NUM4NTdGODE0QzgyNUE4MjZBODI0ODhERkZFNDBDMDQxMjA0NjEwNTgwRTAwMDAyNAorOjIwQjVDMDAwMDQ0MDA0NDBGRkZFMDQ0MDA0NDAxRkYwMTExMDExMTAxMTEwMUZGMDEwMDAxMDA0MTAwNDEwMDYwRkZDMDAwMDg0Cis6MjBCNUUwMDAyMDAyMjNDMjIyNDIyMjRBRkE0QTIzQ0EyOTBBMzEwQTY3Q0FBMTRBMjE0QTIyNDIyMjQyMjQ0MkE5NEE0MDg0NjkKKzoyMEI2MDAwMDEwMDAxMDAwMTAxMDEwOTBGQzkwMTA5MDE4OTAzMDkwRDExMDExMDgxMTA4MTIwODEyMDQ1NDA2MjgwNDAwMDBFRAorOjIwQjYyMDAwMDA0MDAwNjBGOTQwODk0MDg5NDA4OTQwODkyMDg5MjA4QTIwRkExMDhBMTAwNDA4MDQwODA4MDYxMDA0MjAwMERDCis6MjBCNjQwMDAwMDAwRkJGRThBMjI4QTIyOEEyMjhBMjI4QkZFOEEwMkZBMDA4QTAwODIwMDAyMDAwMjAyMDIwMjAxRkUwMDAwMUQKKzoyMEI2NjAwMDIwNDAzRjdFNDg1MDQ0ODg4NTA4M0ZGQzIwODQyMDg0MjA4NDNGRkMyMDAwMjAwMjIwMDIyMDAyMUZGRTAwMDBCNworOjIwQjY4MDAwMDAwMDAwNDAwNDYwMDY0MDA0NDAwNDQwMDQ0MDA4MjAwODIwMTAxMDEwMTAyMDA4NDAwRTgwMDQwMDAwMDAwMDZBCis6MjBCNkEwMDAwMTAwMDA4MDFGRkUxMDAwOTAwMDU3RkM1NDQ0MTQ0NDM0NDQ1N0ZDOTQwMDI0MDAyNDAyNDQwMjQzRkU4MDAwNTkKKzoyMEI2QzAwMDAwMDAzRkY4MjEwODIxMDgyMTA4MjEwODNGRjgyMDA4MjAwMDIwMDAyMDAwMjAwNDIwMDQyMDA2MUZGQzAwMDA0NworOjIwQjZFMDAwMTA4MDEwOTAxMDg4RkM4MDEzRkUxMDgwMTRGQzE4ODgzMTQ4RDE1MDExMzAxMjIwMTI1MDE0OEU1QjA0MjAwMDI1Cis6MjBCNzAwMDAwMDQwN0M1MDQ0NDg0NDQ4NDdGRTdDNDAxMEZDMTA4NDVDODg1MEM4NTE1MDVEMjA3MjUwQzQ4QzA5MDYwMjA0MjMKKzoyMEI3MjAwMDI0MDAyNEZDRkVBNDI0QTQzQ0E0MTBBNDdDRkM1NDgwNTQ4MDdDODAxMDgwRkU4MjEwODIxMDgyMTA3RTEwMDBEOQorOjIwQjc0MDAwMTAwMDExRkMxMTI0MTEyNEZEMjQxMTI0MTVGQzE5MDAzMTAwRDEwMDExMDAxMTAwMTEwMjExMDI1MEZFMjAwMDJBCis6MjBCNzYwMDAxMDAwMTAwMDdERkMxMTI0N0QyNDExMjQxMTI0RkRGQzM5MDAzNTAwNTcwMDU1MDA5MTAyMTEwMjEwRkUxMDAwMTkKKzoyMEI3ODAwMDEwMDAxMUZDMTEwNDExMjQxMTI0RkQyNDExMjQxMTI0MTEyNDExMjQxNDUwMTg1MEUwODg0MDg2MDEwNDAyMDAxNworOjIwQjdBMDAwM0ZGODAxMDA3RkZFNjk1NDE1MjgwMDAwMjQ3Q0ZGNDQyNDdDN0Y0NDQ5N0M3RjQ0MDg0NEZGODQwODk0MDkwODkwCis6MjBCN0MwMDAzRkZDMjQ0NDI0NDQzRkZDMjEwNDAxMDAzRkY4MDEwMDAxMDBGRkZFMDIwMDA0MjAwODEwM0ZGODEwMTAwMDAwMzIKKzoyMEI3RTAwMDA0MjAwODEwMTQyQzIyNDQwMTgwMDI2MDBDMUUzRkY0RDExMDExMTAxRkYwMTAwMDEwMDQxMDA0MEZGQzAwMDBEMworOjIwQjgwMDAwMDIwMDAyMDAwNDAwM0ZGODIwMDgyMDA4MjAwODIwMDgzRkY4MjAwODIwMDgyMDA4MjAwODNGRjgyMDA4MDAwMDEzCis6MjBCODIwMDAxMDIwMTAyMDEwNDBGREZDMTEwNDMxMDQzOTA0MzUwNDU1RkM1MTA0OTEwNDExMDQxMTA0MTEwNDExRkMxMTA0MDMKKzoyMEI4NDAwMDAwMDBGRkZFMDMwMDAyMDAxRkYwMTAxMDEwMTAxMDEwMUZGMDEwMTAxMDEwMTAxMDEwMTAxMDEwMUZGMDEwMTA5OQorOjIwQjg2MDAwMTAwMDEzRkMxMjk0RkU5NDEyOTQxM0ZDMTQ0MDFCRkMzMDQwRDA0MDE3RkUxMDgwMTEwODEyMDQ1N0ZFMjAwNDg0Cis6MjBCODgwMDAxMDAwMUJGRTEwNDAzMDQwMjA4MDYzRkNBMjA0MjIwNDIzRkMyMjA0MjIwNDIyMDQyM0ZDMjIwNDIyMDQwMDAwRjgKKzoyMEI4QTAwMDAwNDAzRTYwMjI0MDIyODAyQUZFMkI4ODJBODgyQTg4MkE1MDA4NTAxNDIwMTIyMDIzNTAyMjg4NDEwRTAyMDRCRAorOjIwQjhDMDAwMDYwMDc4RkUwODEwMDg3QzNFMTAwODEwMDg3QzdGMTAwODEwMDhGRTEwMTAxMDEwMjAxMDQwMTA4MDEwMDAxMDU5Cis6MjBCOEUwMDAwQzIwNzA0MDExRkMxMTI0RkQyNDExRkMzOTI0MzU0NDU1RkM1MEEwOTEyMDE3RkUxMDIwMTAyMDEwMjAxMDIwNUYKKzoyMEI5MDAwMDAwMDBGQTdFMjExMDJGRDAyNDkwMjQ5MEZBOTAyMzdDMjExMDIxOTAyMjkwMjI5MDM0OTBDODEwMzBGRTAwMDBERQorOjIwQjkyMDAwMDEwMEY5N0UyMTEwMjExMDIxMTAyNTEwRkQ3RTI1MTAyOTEwMjExMDIxMTAzQTEwQzIxMDA0RkUwODAwMTAwMDQ2Cis6MjBCOTQwMDAyMTAwMjIzQzI3QTRGQ0E0MjZBNDJEQTYzNEMwNkZGRUE0QTIyNjk0MjU5NDI0ODgyODk4MjhBNkIyQzQ0MTAwNTUKKzoyMEI5NjAwMDIwMDAyM0ZDMjIwMDIyMDBGQTAwMjNGQzJCMDgzMjg4NjI5MEEyNTAyMjIwMjQ2MDI0OTgyOTBFQjYwNDQwMDBBNworOjIwQjk4MDAwMDgwMDEwRjgzQzg4MjQ4ODM0ODgyQzg4MjUwNkZFMDAyNUZDMzQ4ODJDOTAyNDYwMjQ2MDQ0OTA1NTBFOEEwNDI4Cis6MjBCOUEwMDAxMDAwMjlGRTI0MjAyNDQwNDJGQzQyODRCQ0E0MTRBNDE0QTQxNEE0MjRBNDI0QTQyNDUwNTQ4QzhCMDQwMDAwQTkKKzoyMEI5QzAwMDEwMUMxMUUwMTEwMDExMDBGRDAwMTFGQzM5ODQzNTQ4NTU0ODUyMzA5MjEwMTIzMDE0NDgxMDhFMTEwNDAwMDBEMgorOjIwQjlFMDAwMDAxQzQ5RTA0OTAwNDkwMDdGMDA0MUZDNDE4ODc5ODg0OTUwNDk1MDQ5MjA0QTMwNEE1MDQ0ODg4OTBFMDIwNEQyCis6MjBCQTAwMDAxMDQwMTA0MDEwNjBGQ0EwMTExMDE1MDgxQTA2MzVGOEQwODgxMDg4MTA4ODExMDgxMTA4MTIwODU0MjgyMDEwNkYKKzoyMEJBMjAwMDEwNDAxMDQwMTI0OEZENEMxMTUwMTNGQzE4NDAxMDQwMzA0MEQ3RkUxMDQwMTA0MDEwNDAxMDQwNTA0MDIwNDAzNgorOjIwQkE0MDAwMDg0MDA4NDAxNDQ4MTM0QzIyNTA3N0ZDQTA0MDIwNDAyMDQwMkZGRTIwNDAyMDQwMjA0MDIwNDAyMDQwMDAwMDA5Cis6MjBCQTYwMDA0MDEwMjBDOEZCM0UxNTg0NTU5NDE1OTRGRDdFMjU0ODI1NDg3NTdFMjU0ODI1Mjg0OUE4NDkxODkwMDgwMDAwM0UKKzoyMEJBODAwMDAxMDAyMTEwMTkxODBEMjAwOTQwMDEwODNGRkMwMTAwMDEwMDAxMDQ3RkZFMDEwMDAxMDAwMTAwMDEwMDAxMDAwMAorOjIwQkFBMDAwMDIwMDAyMDAwMjIwN0ZGMDAyMjAwMjIwMjIzMDI0MjgyNDI0NDQyNjg4MjQwODIwMTAyMDIwQTA0MDQwMDAwMDE5Cis6MjBCQUMwMDAxMDIwMTAyMDExMjQyMEE0MjBBODQ5RkNGMDIwMTAyMDIwMjA0M0ZFRjgyMDAwMjAwMDIwMUMyMEUwMjAwMDIwOEIKKzoyMEJBRTAwMDA4MDAwODdFRkY0NDA4NDgwODQ4N0U1MDA4NDgwODQ0RkY0MjA4NDIwODQyMTA1MjEwNEMyMDQwNDA0MDAwNDBCOAorOjIwQkIwMDAwMDQwMDNGQkUwNDI0M0ZBODA0Mjg3RkE0MDQzMjA4QUMxMEEwMkZGODQ4ODgwODg4MDhBODA4OTAwMDgwMDA4MDVECis6MjBCQjIwMDAxMTAwMTExRTExMTIxN0QyRkQxNDExMTQzQkQ4MzUxODUxMTQ1N0QyOTExMjEyMUExMjE0MTQxMDE4MTAxMDEwMzQKKzoyMEJCNDAwMDEwNDAxMDIwMTNGQ0ZDOTAxMDYwMzNGRTNBNDQ1NDIwNTNGQzkwNDAxMDc4MTA4ODEwODgxMTA4MTIyODE0MTBFOQorOjIwQkI2MDAwMDA0MDc4MjA0QkZFNDg4ODc4NTA0QkZFNEE0NDQ4MjA3QkZDNDg4MDQ4Rjg0ODg4NDg4ODQ5MDhBOTI4OTIxMEVBCis6MjBCQjgwMDAxMTAwMTExRTI3RDIyMTEyNDkxNEYxMTQxN0Q4MjExNDQxMTJGN0YyMDExMjAxMUEzMjE0QzIxMDA0MTAwODEwMDUKKzoyMEJCQTAwMDIwNDAyMDQwMjdGQzIwNDBGQkY4MjA4MDc3RkU2OTIwQTI1OEFERjYyMDQwMjdGQzIwNDAyMDQwMjA0MDIwNDAxMQorOjIwQkJDMDAwMDA0MDdDMjAxM0ZDMTEwODEwOTAyM0ZFM0U0MjY0MjBBN0ZDMjQ4MDI0RjgyNDg4M0QwODI1MDgyMjUwMDQyMDg1Cis6MjBCQkUwMDAxMDIwMTAyMDEwMjA3RkZFNTIyMDUyMjA1M0ZFN0UyMDUyMjA1M0ZFMTQyMDEyMjAxRjIwRjIyMDQwMjAwMDIwNkIKKzoyMEJDMDAwMDEwNDAxMDIwM0RGQzIwODg0MDUwQkJGRTEyNDQxMDIwRkRGRTEwNDAxMDc4MTA4ODE0ODgxOTI4MTIxMDAwMDA4QQorOjIwQkMyMDAwMTA4MDE4NDAxN0ZDMjIxMDIxMjQ2N0ZFQTQ4NDI4NDgyN0ZDMjEwMDIxRjgyMTA4MjIwODIyMjgyNDEwMDAwMDY3Cis6MjBCQzQwMDA0MDgwMjA0MDM3RkMyMTA4MDA5MDA3RkVFODg0MjA0MDI3RkMyMDgwMjBGODIxMDgyOTA4MzIwODI0MjgwODEwMzQKKzoyMEJDNjAwMDA0NDAwNDQwRkZGRTE0NDAxMDAwMUZGODIwMDgyMDA4NUY4ODEwODgxRjg4MTAyODEwMTIxMDAyMEZGRTAwMDBENQorOjIwQkM4MDAwMDA4MDc4QzA0OTAwNDlGQzdBMDQ0QzA0NDlFNDQ5MjQ3OTI0NDlFNDQ5MDQ0OTFDNDkwQTQ5MDI0OEZFOTgwMEZFCis6MjBCQ0EwMDAwODAwMEMwMDA4MDgxRkZDMTAwODIwMDg1RkM4OTA0ODEwNDgxRkM4MTAwODEwMjgxMDEyMTAwMjBGRkUwMDAwMzYKKzoyMEJDQzAwMDAxMDA3RkZFMTAwMDFCRjAzMjEwNjNGMEEwNDAyRkZFMjBFMDIzNTAyRDRDMDMxMDBDQTA3ODYwMEMxQzA4MDg2RQorOjIwQkNFMDAwMDAwNDdGMDQwMTA0M0YyNDAxMjRGRkE0MDQyNDI0QTQxNTI0MEUyNDE1MjRFNEE0NDQ4NDA0MDQxNDE0MDgwODY5Cis6MjBCRDAwMDAwNDQwRkZGRTA0NTA0NDQ4MzdGRTIwNDA4M0Y4NzI0ODUzRjgxMjQ4MjNGOEUyNDgzRkZFMjExMDIxMTAyMDMwNUYKKzoyMEJEMjAwMDFGRjgwMTAwN0ZGRTQxMDQxRDcwMDEwMDFDNzAwODAwMUZGODIwMDg1Rjg4MTBBODFGOTIxMDAyMEZGRTAwMDA1OQorOjIwQkQ0MDAwMTAwMDFCRjgxMjA4MjIwODMyMDg2M0Y4QTA0MDJGRkUyMEUwMjE2MDIxNTAyMjU4MjQ0RTI4NDQyMDQwMDAwMDMwCis6MjBCRDYwMDAxMDAwMUJGODEyMDgyM0Y4NzA0MEFGRkUyMEUwMjE1MDIyNEUyNDQ0MDEwMDNGRkMwMTAwMDEwMEZGRkUwMDAwOEEKKzoyMEJEODAwMDEwODAxMDgwMjA4MDNFRkMyNTA0NEEwNDUxRTQ5MTI0MTEyNDExRTQxMTBDMTEwMDE1MDIxOTAyMTBGRTAwMDBCMAorOjIwQkRBMDAwMDIwMDAxMDA3RkZFNDAwNDgwMDgzRkY4MDEwMDAxMDAwMTAwMUZGODAxNDAwMTIwMDEzMDAxMjA3RkZFMDAwMEI1Cis6MjBCREMwMDAxMTAwMTEwMDExMDAxMUZDRkUwNDEyMDQxN0U0MUEyNDMyMjREM0U0MTIxNDEyMDgxMjAyMTIwMjUxRkUyMDAwRUUKKzoyMEJERTAwMDExRkMxMTA0MTEwNEZEMTQxMTA4MTUwMDE5RkMzMTg0RDE0ODExNDgxMTMwMTExMDExMzgxMTRFNTE4NDIxMDA5MQorOjIwQkUwMDAwMUZGMDEwMTAxRkYwMTAxMDFGRjAwNDQwN0ZGQzA0NDBGRkZFMDQ0MDA5MjAzNTVFQzM4NDA5MjAxMTEwMDMwMDIxCis6MjBCRTIwMDAwODQwMEM2MDEwNDAyMzdFRDQ4MjE4ODIyOTQyQ0MyMjEyMzIyNjIyQ0EwMjEyMDIyMjAyQzIwMjE0MTQwODA4ODgKKzoyMEJFNDAwMDIwNDAzQzQwMjQ0MDQ4RkM3Qzg0RDVGNDU2OTQ3Qzk0NTRGNDU0ODQ3Qzk0MDA4ODFDODJFMDgyMDA3RTAwMDA2NQorOjIwQkU2MDAwMjNGQzIyMDQyQkZDMkEwNEIzRkNBMDkwQTdGQ0EwOTAyRkZFMzI0ODJENTQ0OEUyNTE1MDg2NDgwMTQwMDA4MEY0Cis6MjBCRTgwMDAxMDAwMTdGRTEwMjBGQzIwMTA0MDMwNDAzOEMwNTREMDUxNDg5MjQ0MTQ0NjEwNDIxMDQwMTA0MDEwNDAxMDQwRkEKKzoyMEJFQTAwMDAwMjA3RTQwMTFGQzExMjQxMTI0MjFGQzNEMjQ2NTQ0QTVGQzI0QTAyNTIwMjdGRTNDMjAyNDIwMjAyMDAwMjAzNworOjIwQkVDMDAwMDQ0MDA0NDA3QzdDMDQ0MDNDNzgwNDQwN0M3RTA0NDAwNDQwMDEwMDA4ODAyODg0MjgxMjY4MTIwN0YwMDAwMDQ0Cis6MjBCRUUwMDAwMTAwMDIwMDNGRjgyMTA4M0ZGODIxMDgyMTA4M0ZGODIyMDgwQzgwRkZGRTAwODAwMDgwMDA4MDAwODAwMDgwRUMKKzoyMEJGMDAwMDA0NDAwNDQwMDQ0MDA0NDQwNDRFN0M1ODA0NjAwNDQwMDQ0MDA0NDAwQzQwMzQ0MkU0NDI0NDQyMDQzRTAwMDAwNworOjIwQkYyMDAwMDQ0MDdDN0MwNDQwM0M3ODA0NDA3QzdFMDU0MDAyMDA3RkZDMDQ4MDBGRjgwMDgwN0ZGRTAwODAwMDgwMDA4MEM1Cis6MjBCRjQwMDAwNDgwMDQ5ODdDRTAwNDg0MUM4NEU0N0M0MDAwMUZGMDEwMTAxRkYwMTAxMDEwMTAxRkYwMTAxMDEwNTAxMDIwNjAKKzoyMEJGNjAwMDAwMDAxRkYwMTAxMDEwMTAxMTEwMTExMDExMTAxMTEwMTExMDExMTAxMTEwMDI4MDA0NjAxODE4NjAwODAwMDAwRAorOjIwQkY4MDAwMjAwMDIxRkMzRDA0MjEwNDQxMDQ3RDI0QTEyNDIxMjRGRDI0MjEyNDIxMjQyNDUwMjg0ODMxODQyNjA2MDAwMjlDCis6MjBCRkEwMDAwODgwMDg0MDE3RkUxMjEwMzExODUxOTAxMTIwMTdGRTEwMDAxM0Y4MTIwODEyMDgxMjA4MTNGODEyMDgwMDAwN0MKKzoyMEJGQzAwMDA0MDA0NUZDMjkwNDExMjQzMTI0NDkyNDg5MjQxOTI0MjkyNDQ5MjQ4OTQ0MDg1MDA4OEMwOTA2NTIwMjI0MDAxNAorOjIwQkZFMDAwMDgwMDBGRjAwODIwMTQyMDIyNDA0MTgwMDI0MDBDMzAzMDFFREZGNDExMTAxRkYwMTExMDExMTAxRkYwMTAxMDdCCis6MjBDMDAwMDAwNDAwMDdGMDBDMjAxMjQwMDE4MDA2NjA3RkZFMDkxMDBGRjAwOTEwMEZGMDAxMDAyODg0MjgxMjY3RjIwMDAwRDMKKzoyMEMwMjAwMDEwNDAxMDIwMTNGQzEwMDAxNTA0NTg4ODUwNTA5N0ZFMTAwMDExRkMxOTA0MjUwNDIxMDQ0MUZDODEwNDAwMDBFOQorOjIwQzA0MDAwMjAyMDEwMjAxMDIwRkZGRTBBMjQwQTIwMTJGODM2ODg1QTg4OTY1MDEyNTAxMjIwMTI1MDEyNDgxMjg2MTUwNDVBCis6MjBDMDYwMDAwMjAwMDIwMDdGRkUwNDQwMDkyMDExMTgyRkU2QzEwNDA5MjAwODIwRkZGRTA4MjAxMDIwMTAyMDIwMjA0MDIwNTkKKzoyMEMwODAwMDA0MjAwNDIwRkZGRTA0MjAwMTAwN0ZGQzAzODAwNTQwMDUyMDA5MTAxMTA4MkZGNjQxMDQ4MTAwMDEwMDAxMDBBRgorOjIwQzBBMDAwMDEwMDAxMDAwMTAwRkZGRTAzODAwMzQwMDU0MDA1MjAwOTEwMTExODJGRUVDMTA0MDEwMDAxMDAwMTAwMDAwMDI5Cis6MjBDMEMwMDAyMDQwM0U3RTUwOTA0OTA4ODkwODAxMDQ3RkZFMDU0MDA1MjAwOTIwMTExODJGRUU0MTA0ODEwMDAxMDAwMTAwNUYKKzoyMEMwRTAwMDAxMDAyMTA4M0ZGODAwMDAzRTc4MjI0ODNFNDgyMjc4MjI0ODNFNDgyMjc4MjI0ODQyODg0QUE4ODUxMDAwMDA1QQorOjIwQzEwMDAwMTAwMDEzQkMyMkE0MjJBNDRCQkNGQUE0MTJBNDIyQTQ0M0JDRkFBNDA0QTQzNEE0Q0FBNDExNTQyMDg4MDAwMEZCCis6MjBDMTIwMDAwMDA0N0ZGRTAxODAwRjYwRjExQzAxMDYzRkY4MjEwODNGRjgyMTA4M0ZGODIxMDgyMTA4NDEwODQxMjg4MDEwRUYKKzoyMEMxNDAwMEZGRkUwMjAwMDQwMDBGRjAzNDEwQzQxMDA3RjAwMTAwN0QwQzA1QjAwOTQwMDkyMDExMTgyMTBFQzUwNDAyMDBGQQorOjIwQzE2MDAwMDAyMDdBMjI0QTIyNEJGRTQ4MDA3QjlFMTI5MjEzOUU1RTkyNTI5MjUzOUU1MjkyN0M5MkM0QTIwQUFBMTE0NDcyCis6MjBDMTgwMDA0MjA4MjE4ODMxMTAyN0ZDMDExMDAxMTBGMTEwMUZGQzExMTAxMTEwMTIxMDEyMTAxNDEwMjgxMDQ3RkU4MDAwNjMKKzoyMEMxQTAwMDAwMDAyN0ZDMTAwMDEzRjgwMjA4MDNGODcwMDAxN0ZDMTQ0NDE3RkMxNDQ0MTdGQzEwMDAyODAwNDdGRTAwMDA2NgorOjIwQzFDMDAwMDIwMDFGRjAxODkwMTQ1MDFGRjAwMDAwM0ZGODIxMDgzRkY4MjEwODNGRjgwMDAwRkZGRTA4MjAwODIwMTAyMEJGCis6MjBDMUUwMDAyMDgwMjA4MDIwODAyMDgwMjA4MDNFOEUyMEYwMjA4MDIwODAyMDgwMjA4MDI0ODIyODgyMzA4MjIwN0UwMDAwMjMKKzoyMEMyMDAwMDNGMDAyMTNFMjEyMjNGMjQwODI0RkZBODA4MjQ3RkEyNDBBMjVFQTI1MkIyNUVBQzQwQTA3RkEwNDBBMDAwMjBDQgorOjIwQzIyMDAwMjA0MDIwNDAzRUZFNTEyMDhBMTAwMUY4N0UwMDAyMDAwM0YwN0UwMDAyMDAwM0ZFRkUwMDAyMDQwMjA0MDFGQzAzCis6MjBDMjQwMDAxMDIwMTgyMDIwMjA0M0ZFOTIyNDFBMjAzMkY4NjI4OEEyODgyMjUwMjI1MDIyMjAyMjUwMjQ4ODI1MEUyQTA0MjIKKzoyMEMyNjAwMDAwMjA3RUZDMDg4NDNDRkMwODg0MDg4NDdFRkMwMDAwN0ZGRTA0MDAwODAwMUZGODI4MDg0ODA4MEZGODA4MDg5NworOjIwQzI4MDAwMDQ0MEZGRkUwNDQwMDgwMDNGRjgyNDQ4MjM4ODI0NDgzRkY4MjA4MDIwOTgzRUUwMjA4MDI2ODIzODdFMjAwMDhDCis6MjBDMkEwMDAwNDQwRkZGRTA0NDAwODYwNDkzMDJBMjA3RjdFNDk0NDVEQzQ1QjI4NkIyODY5MTA0OTEwNEQyODRBNDYwMDg0QjIKKzoyMEMyQzAwMDIwODAyMDgwMjA4QzNFRjAyMDgwMjQ4MjI4ODIzMTdFMDEwMDAxMDBGRkZFMDEwMDAxMDAwMTAwMDEwMDAxMDBBMQorOjIwQzJFMDAwMjA4MDIwOTgzRUUwMjA4NDI2ODQzODdDMDAwMEZGRkUxMDQwMUY0QzMyNzA1NDQwMDg0MjMwNDJDMDNFMDAwMDFFCis6MjBDMzAwMDAyMDgwMjA4MDNFOEMyMEYwMjA4MjI0ODIyODdFMzIwMDAxMjAwOTIwMjg0NDI4ODI0QjEyMEMxMEY3RjAwMDAwMjMKKzoyMEMzMjAwMDAwRkM3RjAwMDEwMDAxMDAzRkY4MjEwODIxMDgyMTA4MjEwODIxMDgyMTA4MjEyODIxMTAwMTAwMDEwMDAxMDBENgorOjIwQzM0MDAwMDEwMDAwODAzRkZFMjAwMDI0NDAyNDQwMjQ0NDI3NEUyNDcwMjQ0MDI0NDAyNDQwNDU0MjRFNDI4NDNFMDAwMEMxCis6MjBDMzYwMDAwMDgwMDA0MDFGRkUxMDAwOTdGQzU0NDQ1N0ZDMTQ0NDM3RkM1MDAwOUZGRTExMTAyMTEwMjExMDQyMTA4NDEwNzEKKzoyMEMzODAwMDIwMDAxQkZDMDgwNDIwODQyMDg0MjA4NDJGRjQyMDg0MjE4NDIyODQyQzg0MjA4NDIyODQyMTA0MjAxNDIwMDhFMQorOjIwQzNBMDAwMDAwMDA4MjA0OTMwMkIyMDFDN0U3RjQ0NDlDNDU5NDQ1RDI4NkYyODQ5MTA0OTEwNDkyODQ5NDg0OTg2NDMwNEE0Cis6MjBDM0MwMDAwODIwNDkyMDJBN0U3RjQ0NDlBNDVEMTg2QjI4NDk0NjQzMDQwODIwRkZGRTA4MjAwODIwMTAyMDEwMjAyMDIwODEKKzoyMEMzRTAwMDA0MDAwMjEwMDE5ODAxMTAwQzIwMDgyMDI4NTAyODQ4Mjg4NDQ5MDY0QTA0MEMwODE4MDgyRkY4QzAwMDAwMDBERAorOjIwQzQwMDAwMDA0MDdDMjA0NUZFNDQwMDQ0ODQ3QzQ4NDAwMDQxRkU3QzIwNjQyMEE1RkVBNDIwQkMyMEE0MjAwMDIwMDAyMDQ3Cis6MjBDNDIwMDAwMDQwN0MyMDQ1RkU0NDg4N0M1MDQzRkU3QzIwNjVGRTdDMjBBNDIwMDEwMDNGRjgwMTAwMDEwMEZGRkUwMDAwNkUKKzoyMEM0NDAwMDNDMjAyNUZFM0M4ODIxRkU3QzIwQTVGRTNDMjAwMDIwMUZGMDEwMTAxRkYwMTAxMDFGRjAxMDEwMTA1MDEwMjBBMgorOjIwQzQ2MDAwMDAyMDRGMTAyOTdDMjk0ODBGMjgwODEwRThGRTJGMTAyRDEwMkQ3QzM1MTAyNzEwMjAxMDUwMDA4RkZFMDAwMDQ0Cis6MjBDNDgwMDAwMjIwN0EyMDRBMkM1M0IwNTIyMDYyQTI1MzIyNEExRTQ4NDA2ODQwNTNGQzQwNDA0MDQwNDA0MDRGRkU0MDAwODgKKzoyMEM0QTAwMDQ4ODA0OEZFRkU5MDQ5MTA3OTdDMTM1NDdEN0M1NTU0N0Q3QzExMTAxMTEwRkQ1MDExMzAxMTI4MTE0RTExMDQxMworOjIwQzRDMDAwNDA4MDIwODAzMDgwMjA4MDA3RjgwMDg4RjA4ODEwODgxMTA4MTEwODEyMDgxNDcwMTAyMDI4MDA0N0ZFMDAwMEE4Cis6MjBDNEUwMDAxMDgwMTg0MDIzRkMyMjA0NEEwNEZCRkMxMjAwMjNGQzdCNTQwMzU0MDVGQzM1NTRDNTU0MDk1NDExMEMwMDAwNTYKKzoyMEM1MDAwMDAwMDA3QzNDNDVDMDU0NDA1NDMwNTQyMDU1RkM1NDA4NTQxMDU0MjA1NDQwMjg4MDI1ODA0NjQwODQzRTAwMDAyNAorOjIwQzUyMDAwMDEwMDAwODAxRkZDMTAwNDFGRkMxMDAwMTAwMDFGRkUxOTIyMjkyMjJGRkUyOTIyNDkyMjQ5MjI4OTJBMDgwNDYwCis6MjBDNTQwMDAwODAwMEZGRTE4NDAxN0ZDMzQ0NDY3RkNBNDQ0MjQ0NDI3RkMyNDQwMjI0MDIxODAyMEMwMjEzMDIyMEUyQzA0MTUKKzoyMEM1NjAwMDAyMDAwMTgwN0ZGRTAyNDAxMjUwMUE0QzIyNDY0MjQ0OUZGMDA0MjAwNDIwMDI0MDAxODAwNjYwMTgxRUUwMDhBNQorOjIwQzU4MDAwMDIwMDAxODAwMTAwRkZGRTAxMDAwMTAwMDEwMDAxNDAwMTIwMDExMDAxMTgwMTEwMDEwMDAxMDAwMTAwMDEwMDc2Cis6MjBDNUEwMDAyMDkwMTA4OEZFRkUwMDg0NDZDNjJBQThGRTgwMTJGRTEwOTA3QzkwMTE3RTIxMTAyMjEwNDIxMDg0MTAwODEwQUIKKzoyMEM1QzAwMDIyMTAxMTg4RkQ3RTQwMDQyQjQ2MjkzNEZEMjgxMTdFMTEwODdEMDgxMUJFMTEwODIwMDgyMDA4NDAwODAwMDAzMQorOjIwQzVFMDAwMjAxMDEwMDg3RDdFMDkwNDRBQTYyQjk0RkQzRTEyMDgxNzg4RkMzRTEwMDgxMUM4MjcwODIyMDg0MDA4ODAwOEY0Cis6MjBDNjAwMDAwMDgwNDA0MDI3RjgyNDA4MDdGODA0MDBFN0Y4MjZBODI3RjgyQUE4MkFBODMyQTgyMjE4NTAwMDhGRkUwMDAwNkIKKzoyMEM2MjAwMDEwMDAxMUZDMTAwMDEwMDBGQzAwMTNGRTM4MjAzNDIwNTUyODUxMjQ5MjI2MTQyMjEwMjIxMDIwMTBBMDEwNDBDMgorOjIwQzY0MDAwMDgwNDBGODYwODBDN0Y5ODQ4QTA0RTQ4NzgwQzQ5MTA0NzI0NDA0NjRGMDg0OTEwNDkyMjUxMDI5MEZFQTAwMDI2Cis6MjBDNjYwMDAwMDAwN0JGRTQ4OTA0QkZDN0E5NDRCRkM0ODAwNDlGQzc4MDA0QkZFNDgyMDQ5Mjg0OUE0NEEyNkFDQTQ5MDQwMjkKKzoyMEM2ODAwMDAxMDAwMTAwM0ZGQzAxMDAxRkY4MDEwMDdGRkUwMzAwMDY4ODBDOEMzODUwQzgyMDA5MTAwQTBFMEMwNDA4MDBFNQorOjIwQzZBMDAwNDkyMDJBMjA3RjNFNDk0ODVEQzg2QjMwNDkyODQ3QzYwODgwM0ZGMDUxMTAxRkYwMTExMDFGRjAwMDAwRkZGRUU3Cis6MjBDNkMwMDAwODIwNDkyMDJBMjA3RjdFNDk0NDVEQTQ1QjE4NjkxODQ5MjY0QjQ0MDAwMDI5MDQyODgyNjgxMjA3RjAwMDAwQkEKKzoyMEM2RTAwMDAwMDQzRjA0MjEyNDIxMjQyMTI0M0YyNDI5MjQwODI0N0YyNDA5MjQxMTI0MTEwNDIxMDQyNzA0NDIxQzgwMDhGOAorOjIwQzcwMDAwMDEwMDNGRkUyMDgwQTdGODY0NDgyNTI4MjQ4ODI3Rjg2NDg4QTE2MDI2MTgzQTY2MjM4MDQyMDg0MjA4ODFGODVECis6MjBDNzIwMDAxMTA0MTEwNjExMEMxMTA4N0JEMDExMDQzMzg2M0I0QzU1NTA1NTY0OTU0NjExMEMxMTE4MTEyMDExNDAxMTAwRTUKKzoyMEM3NDAwMDAwMTAyMDE4MTNENEZDMTAwN0ZFMDg5MDRBOTAyQTkwMkFGMDEyOTAxMjkwMkE4QTRBRUE4NzA2MDAwMjAwMDA5OAorOjIwQzc2MDAwNDIwMDIyN0UyQTEwMEJBMDhBN0M1RkM0MjI1NDJBNTQ0QUQ0NTJENEMxNTQ0MTEwNDIyODRDNDY3MTgyMDAwMDNDCis6MjBDNzgwMDA0MDQwMjAyMDI3RkU4NDA0NDAzODAxQzAxMTAwMTFGQzIxMTAyMTEwQzdGRTQwMDA0MDEwNDEwODQyMDQ0QzA0M0YKKzoyMEM3QTAwMDAxMDAwMDgwM0ZGRTQwMDQ0RkU4MDgwMDA4MDAwRkY4MDg0MDA4NDBGRkZFMDQ0MDBFMzAxODE4MjAwQzQwMDg3NgorOjIwQzdDMDAwMTA0MDEwMjAxM0ZFRkUwMjEyMzgxNUMwMTkwMDMxRkNEMTEwMTExMDE3RkUxMTEwMTEwODEyMEM1NDA0MjAwMDdDCis6MjBDN0UwMDAwMDcwMEY4MDA4MDAwODAwMEZGQzA4NDAwODQwMDg0MDA4NDBGRkZFMDQyMDA2MTAwQzA4MTgwQzMwMDY0MDA0MTYKKzoyMEM4MDAwMDAwNDA0MDQwMjA0MDIwNDgwRjRDMDI1ODIyNjAyMjYwMjQ1MEM0NTA0ODQ4NDg0NjUwNDQ2MTQwNDA4MDAwMDAzQworOjIwQzgyMDAwMTAwMDEzRkUxMDIwRkMyMDEwMjAzM0ZFM0EyMjU2MjI1MjIyOTI1MjEyOEExMzBBMTIwMjEyMTIxMjBBMTIwNERCCis6MjBDODQwMDAwMDAwN0ZGRTAxMDAwMTAwM0ZGQzIxMDQyMTA0MjEwNDIyODQyMjQ0MjQzNDI4MjQyMDA0MjAxNDIwMDgwMDAwN0YKKzoyMEM4NjAwMDAwMTAzRkY4MDEwMEZGRkUwMTAwM0ZGODAxMDhGRkZFMDEwODNGRjgwMzg4MDU0MDA5MjAzMTE4QzEwRTAxMDRERgorOjIwQzg4MDAwMjEwNDIwODQyMDQ4M0RGRTQ0ODg0ODg4QTA4ODIwODgyM0ZFMjA4ODIwODgyNDg4MjkwODMxMDgyMjA4MDAwODA3Cis6MjBDOEEwMDAxMDAwMTNGRTE0MjAxNDIwNTgyMDUzRkM1MjQ0OTI0NDEyNjQxQTk0MjY5NDIzMDQ0MjA0NDIwNDgyMTQwMjA4OEIKKzoyMEM4QzAwMDAxMDAwMDgwMUZGRTEwMDA5RkZDNTA0MDUwNDAxN0Y4MzQ0ODU0QTg5NEE4MjUxODI2MDgyNDA4NDQyODg0MTA5NQorOjIwQzhFMDAwMTAxMDA4MTgwNjEwMDQyMDdGRkMwNDIwMDQyMDA0MjA3RkZFMDQyMDA0MjAwNDIwMDgyMDA4MjAxMDIwMjAyMDJFCis6MjBDOTAwMDAwMDIwMDAyMEZDMjAxMUZFMTEyMjExMjQ3RDIwMTFGQzEyODgxMjg4MUE1MEY0MjA0NDUwMDg4ODExMEUwMjA0OUYKKzoyMEM5MjAwMDA0NDAwNDQwRkZGRTA0NDAyMDQwMTdGRTQ0NDQzNDQ4MjdGODE1MTAxNTEwRTRBMDI0NDAyOEIwMjkwRTMyMDQxRgorOjIwQzk0MDAwMjAzQzI3QzAyMjQ4Rjk1MDI3RkUyMEUwMjk1MDMyNEU2RkZDQTI0ODIyNDgyM0Y4MjI0ODIyNDhBM0Y4NDIwODMwCis6MjBDOTYwMDAyMDQwMjI0ODIyNDRGQTQwMjNGRTIwNDAyODgwMzBGOEUwODgyMTUwMjE1MDIyMjAyNDUwMjk4OEE2MDY0MDAwNUYKKzoyMEM5ODAwMDIwMjAyMDIwM0UyMDIwMjA0M0ZDN0MyMEEwNzAyMEIwRkNBODIxMjgyMUZDMjIyMjI4MjAzMDIwMjAyMDAwMjA3OAorOjIwQzlBMDAwMjA0MDEwNDAxMDQwMDdGRTg0NDQ1NDQwNTQ0MDE3RjgyNTA4MjQ5MEU0OTAyNDYwMjg2MDI4OTgzMTBFMjYwNEU5Cis6MjBDOUMwMDAyMDUwMjA0ODI3RkMyMDQwMjNGOEZBNDgyM0Y4MjI0ODIzRjgyMjU4MkZGRTIyMTAyMTkwMjExMDIwNTAyMDIwOTQKKzoyMEM5RTAwMDA4MjAwODIwN0YyMDA4MjA3RjdDNDEyNDgyMjQ3RTI0MDQyNDBCMjQxQzQ0RTg0NDA4ODQwODk0MjkwODEwMDAyQworOjIwQ0EwMDAwMTA0ODE3RkUxMDQwRkJGQzEyNDQxN0ZDMUE0NDMzRkNEMjQ0MTAwODE3RkUxMTA4MTA4ODEwMDg1MDI4MjAxMEI4Cis6MjBDQTIwMDAxMDEwMTAxMDIwMjAzRUZFNDA4MjdDODI5MDgyMTBGRUZFODIxMDgyMTA4MjEyODIxNDgyMThGRTEwODIwMDAwRTQKKzoyMENBNDAwMDIwNDAzRjdFNDg1MDg0ODgyMDQwMTA4MDkzRkM0MjA0NEEwNDEyMDQxM0ZDMjIwNEUyMDQyMjA0MjNGQzIyMDQ2NgorOjIwQ0E2MDAwMDg0MDBDNjAwODgwMUJGQzEyMDQzMjA0MzIwNDUyMDQ5M0ZDMTIwNDEyMDQxMjA0MTIwNDEzRkMxMjA0MDAwMDdGCis6MjBDQTgwMDAwMTAwMDIwMDFGRjgxMDA4MUZGODEwMDgxRkY4MTEwODAxMDAzRkZDMjEwNDIxMDQyMTA0MjExNDIxMDgwMTAwRkIKKzoyMENBQTAwMDA4MjAxMDIwM0U0MDIyRkMzMjg0MkE4NEZFODQyMkZDMzI4NDJFODQyQTg0MjI4NDIyODQ0MkZDNEE4NDg0MDA4QworOjIwQ0FDMDAwMDAyMDc4MjA0QkZFNDgyMDdCRkU0QTA0NEMwMDQ5Rjg3ODEwNDgyMDRCRkU0ODIwNDgyMDQ4MjBBOEEwOTA0MDEwCis6MjBDQUUwMDAwMDI4NzgyNDRCRkU0ODIwNDlGQzc5MjQ0OUZDNDkyNDQ5RkM3OTI0NDgxMDRCRkU0OTEwNDkxMEE4NTA5MDIwNTAKKzoyMENCMDAwMDQyMTAyMjEwMkY5MDAyMTA4MjNFNUZEMjUwNTIyRjkyMjExMjQyMTJDM0EyNUUyMjQyMjI0MjQyNEE0QTQ0ODRCQworOjIwQ0IyMDAwNDA0MDIwNDAyMDgwODNGQzRBMDQ0QTA0MTIwNDEyMDQyM0ZDRTIwNDIyMDQyMjA0MjIwNDIyMDQyM0ZDMjIwNDRDCis6MjBDQjQwMDAwMDAwRkQxMDA4QTA0ODYwNDg5ODRCMDg0ODAwN0MwODA1MDgwNDkwMzQ1MEM0MjAwNDUwMjg4RTEzMDQwMDAwNEYKKzoyMENCNjAwMDEwMjAxMDI4MTAyNDEzRkVGQzIwMTNGRTE2MjIxQkZFMzIyMkQyMjIxM0ZFMTIyMjEyMjIxMjIyNTIyQTIyMjREMworOjIwQ0I4MDAwMDIwMDAyMDAwMjAwMDIwMDAyMDAwMzAwMDJDMDAyMzAwMjE4MDIwODAyMDAwMjAwMDIwMDAyMDAwMjAwMDIwMDY0Cis6MjBDQkEwMDAwMDUwMDA0OEZGRkU5MDQwOTdGQzk0NDQ5NDQ0OTdGQzk0NDRGNDQ0OTdGQzA0NDQwNDQ0MDQ1NDA0NDgwMDAwNjMKKzoyMENCQzAwMDIwMjAxODIwMTAyMEZFMjAwNDIwMDgzMDEyMjgzNDI0NTgyMjk0MjIxMjIwMTAyMDEwMjAxMDIwMTAyMDEwMjA0RgorOjIwQ0JFMDAwMjA0MDIwODAyM0Y4MjIwOEZBMDgyM0Y4MjIwMDIzRkMyMjA0MjIwNDNCRkNFMDQwNDdGRTAwNDAwMDQwMDA0MEVBCis6MjBDQzAwMDAwMDA0N0ZGRTAxODAwMTAwMDEwMDAxMDAwMzYwMDUzMDA5MTgxMTBDMjEwODQxMDAwMTAwMDEwMDAxMDAwMDAwQ0MKKzoyMENDMjAwMDAyMDAwMzAwMDIwMEZGRkUwNDgwMDQ4MDA4ODAxRkY4Mjg4ODQ4ODg4ODg4MDg4ODA4QTgwODkwMDA4MDAwODBFMQorOjIwQ0M0MDAwMDA4MDAwODAwOEY4MDg4MDA4ODA3RkZFMDA4MDA4ODAwODg4MTA4QzYwOTAwMDIwMDBDMDA3MDA3ODAwMDAwMEM0Cis6MjBDQzYwMDAyMDQwM0Y3RTQ4OTBBNTI4MTdGRTEwNDA4M0ZDNEE0NDUyN0MxM0M0MjI0QzJGRkVFMTA4MjA4ODIwMjgyMDEwMzcKKzoyMENDODAwMDEwMDAwODdFN0Y0MjIyNDQxMjQ0MTQ0OEZGRDgwMDQ0MDA0MjNGNDIyMTQyMjE1QTIxNDQzRjQwMjE0MDAwNDBFNAorOjIwQ0NBMDAwMjA0MDIwNDAyN0ZFMzA4MEE4QTBBOTIwQTNGQzIyMjQyNjI0MkEyNDMyMjQyMjI0MjIzNDIwMjgyMDIwMjAyMDk3Cis6MjBDQ0MwMDAyMDQwMjAyMDI3RkUyNTA0RjlEMDIyNjgzNTkwMkIwODYyRjZBNDAwMkJGQzIwNDAyMjUwMjI0Q0E1NDQ0MDgwMEYKKzoyMENDRTAwMDQ4NDAyQkZDMTA0MDMzRjg0ODQwOEZGRTA4MDAxQkY4MkEwODRCRjg4QTA4MEJGODBBMDgxMjA4NTIyODIyMTBGOAorOjIwQ0QwMDAwMDg0MDA4NTAzRjQ4MDg0MEZGRkMxMDQwMDg0ODdGNEMwODI4MTUzMDMyMzBEMjIyMTE1MjE4OEExMTA0MDAwMDU5Cis6MjBDRDIwMDAwMDAwMTAxMDEwMTAxMDEwRkRGRTEwMTAzODMwMzQzMDM0NTA1MDUwNTA5MDkxMTAxMjEwMTAxMDEwNTAxMDIwMzUKKzoyMENENDAwMDAwNDAwMDQwMDA0MDAwNDA3RkZFMDBDMDAxNDAwMTQwMDI0MDA0NDAwODQwMTA0MDYwNDAwMDQwMDE0MDAwODA1NQorOjIwQ0Q2MDAwMDAwODdFMDg0MjA4NEEwODRBRkU0QTE4NEExODRBMjg0QTI4NEE0ODA4NDgxNDg4MTIwODIzMDg0MjI4ODAxMERDCis6MjBDRDgwMDAwMDNDN0ZDMDQ4ODQ0QTQ0NDkwODc5NTA0ODQwNEZGRTc4RTA0OEQwNDk1MDQ5NDg3QTRDNEE0NjQ0NDQwMDQwMTcKKzoyMENEQTAwMDAwMUM3RkUwNDQ4NDQ2NDQ0NTY4N0QyODEwNDAxM0ZDNUNFMDUwRTA1MTUwNUQ0ODcyNDZDNDQ0MDA0MDAwNDAwMworOjIwQ0RDMDAwMDAwMDAxRjg3RTAwMDAxMDExMTAwOEEwMDEwMDdGRkUwMTgwMDM0MDA1MjAwOTE4MzEwRUMxMDQwMTAwMDEwMDc1Cis6MjBDREUwMDAwRjAwRjgwODExMEM0OTkwMkEyMDI0NDQwODA2RkY4ODA4MTQxQzI2MUEwNDI5ODg0OTEwODg2MDA5ODAwODAwRTgKKzoyMENFMDAwMDA0NDBGRkZFMDQ0MDA0NDAzRkY4MjIwODExMTAwODIwMDEwMDdGRkUwMzgwMDU0MDA5MzAxMTFDNjEwODAxMDA4OQorOjIwQ0UyMDAwMDQ0MEZGRkUwNDQwMTAwMDFFRjgyMjg4NTQ1MEE4MjAxN0Q4MjAwNkRGRjgwMTAwMTEyMDE5MTgyNTA4NDIwMDczCis6MjBDRTQwMDAwODAwMEY3QzI4NDgzRTMwNTQyODA5NDQ3MkMwMEQzMDNGRUVDQTIwMDkyMDBGRTgwODkwMEE2MDBDMzAwODEwOUMKKzoyMENFNjAwMDA0MDAwQzIwMTFGMDNGMTAwMjAwRkZGQzA0NDAwOTIwMzIxOENDNkUzMTg0MDYxODE4NjAwMzgwN0MwMDAwMDBGQQorOjIwQ0U4MDAwM0ZGQzAxMDAwMTAwRkZGRTAyNDAwNDIwMDkxMDMxMEVERkY0MTExMDFGRjAxMTEwMDEwODAxRkM3RTA4MDAwMEVBCis6MjBDRUEwMDAwMDQwN0Y1MDEwNDgxMDRFM0ZGMDIyNDA0MjRFNjVGMDk0MjAwODI4MDgzMDEwMzAyMUQyNEUwQTgwMDYwMDAyMDgKKzoyMENFQzAwMDIxMDAyMTA2MkZCODMyMjBBQjIwQTUzRUFGQTQyMTI0MjEyNDIxQTQyMzI0MkQyNDIxNDQyMTQ0MjE4NDIxMDQ1NQorOjIwQ0VFMDAwMjA4MDIxMTAyM0Y4MzA4OEE4ODBBRkZFQTEyMDIyMTAyNDhDM0IyNjJDNDAyMTg4MjYzMDIwQzAyNzAwMjAwMDIzCis6MjBDRjAwMDAxMDIwMTAzMDEwMjAxNDIwMTUyNjU5MjQ1MTI0OTEyNDExMjQyOTI0MjUyNDI1MjQ0MTI0NDFGQzgxMDQwMDA0MUMKKzoyMENGMjAwMDA4MjBGRkZFMDgyMDBBMjAwMzAwMDY4MDBDNjAxMDE4RUZFRTA4MjAwODIwMDhBMDA4NDgwODA4MDdGMDAwMDAzMQorOjIwQ0Y0MDAwMDgyMDEwMjAzQzUwMjQ4ODM1MDYyRTA0MjRGOEZDODgyNDg4MzQ4ODJDQjgyNDkwMjQ4NDQ0ODQ1NDdDODgwMDZDCis6MjBDRjYwMDAwMTAwMDEwMDAyODAwNDQwMDgzMDEwMTgyRkVFNDgyNDA4MjAwODIwMDgyMDA4RTAwODQwMDgwODA4MEMwN0Y4MzUKKzoyMENGODAwMDIwNDAxMDQwMTBBMDAxMTA4MjA4NEMwRTRCRjQxMjEwMTIxMDIyMTBFMjUwMjIyMDIyMDAyMjA0MjIwNDIxRkM4OAorOjIwQ0ZBMDAwMDQ0MEZGRkUwNDUwMDQyODFGRkU1MDIwNTdBODc1MkMxN0E4NzRBODU3OTA1NTEwOTdBQTIwNEEyMDg0NDAwMENECis6MjBDRkMwMDAyMUY4MjEwODIxRjhGODAwMjNCQzIyQTQyQUE0MzNCQzYwNDBBN0ZFMjA2MDIwRDAyMTQ4MjI0RUFDNDQ0MDQwOUUKKzoyMENGRTAwMDEwMTAxMDkwOTQ5MDU0RkM1ODkwRkQxMDMxRkUzNjAwNUFGQzU2ODQ1Mjg0OTJGQzEyMDAxNTAwMThGRTEwMDBDMgorOjIwRDAwMDAwMTA1MDEzRkUxMDUwRkJGRTEyNTIzQkZFMzY1MjUzRkU1MDAwOTFGQzExMDQxMUZDMTEwNDExMDQxMUZDMTEwNDg1Cis6MjBEMDIwMDAwMjQwRkZGRTAyNDAzRkZDMjI0NDNGRkMyMjQ0M0ZGQzAwMDAxRkY4MTAwODFGRjgxMDA4MUZGODEwMDgwMDAwNjUKKzoyMEQwNDAwMDA0NDAwNDQwRkZGRTA0NDAwNDQwMUZGMDEwMTAxRkYwMTAxMDFGRjAwMTAwRkZGRTAxMDAwMTAwMDEwMDAxMDA1NAorOjIwRDA2MDAwMDAwMDNGRkUyMDA0MkY4NDI4OTQyQTk0MkE5NDJBOTQyQTk0MkE5NDJBOTQ0MjA0NDUwNDg4RDQ5MDg4MDAwMDY5Cis6MjBEMDgwMDAyMDQwMjA0MDNFRkU0OTEwODUwODdGRkMwMTAwM0ZGODIxMDgyMTA4MjNBODI1NTAwOTIwMzExOEMxMEUwMTA0MjMKKzoyMEQwQTAwMDEwMDQxRkM0MTQ0NDI0NTQzNTU0NjU1NEE1NTQyNTU0MjU1NDI1NTQyMjk0MjI0NDI0NjQyODU0MzAwODAwMDBBQgorOjIwRDBDMDAwM0M3ODI0NDgyNDQ4MjQ0ODI0NDgyNDQ4RkZGRTI0NDgyNDQ4MjQ0ODI0NDgyNDg4NDQ4ODU1Mjg4QTEwMDAwMDQ0Cis6MjBEMEUwMDA0MDAyMjdDMjI0NDI4NDUyNDU1MjU1NTIxNTUyMjU1MjI1NTIyNTUyQzU1MjQxMDI0MjgyNDI0MjQ0NEE0ODA0NDMKKzoyMEQxMDAwMDAwMDAzRkZDMjAwNDIwMDQzRkZDMjAwMDI3RjgyMDAwMjAwMDNGRkUyMjAwMjIxMDI0MDg0RkZDNDAwODgwMDAwMgorOjIwRDEyMDAwMDEwODc4OEM0ODUwNEJGRTRCMkE3QUFFMTI3MjUzRkU1QzAwNTFGQzUxMDQ1MUZDNUQwNEUxMDQwMUZDMDEwNEZDCis6MjBEMTQwMDAxMDFDMTNFMDEwMjBGQzIwMTNGRTEwMjAxNEEwMUIyRTMyMjJEMjIyMTNBRTEyMjIxMjIyMTNGRTUyMDIyMDAwMzAKKzoyMEQxNjAwMDAwMDAxRkY4MDgxMDBBMTAwOTEwMDVBMDA1MjAwNDQwMDI0MDAxODAwMTgwMDI0MDBDMzAzMDBFQzAwNDAwMDA3QgorOjIwRDE4MDAwMDQ0MDA0NDBGRkZFMDQ0MDAyNDAwMjAwN0ZGRTA0MDAwODQwMTA0MDM3RkM1MDQwMTA0MDEwNDAxN0ZFMTAwMEUxCis6MjBEMUEwMDAwNDIwMDQyMDdGRkUwNDIwMDUyMDAyODAwNDYwMTkxODJGRjZDMTAwMDk0MDBEMjAxMTEwMjExODQ1MTAwMjAwM0QKKzoyMEQxQzAwMDAxMDAwMTAwMDEwMDdGRkUwNTQwMDkzMDMxMEVERkY0MTAxMDFGRjAxMDEwMTAxMDFGRjAwMDAwN0ZGRTAwMDA0NAorOjIwRDFFMDAwMDAyMDAwMjBGREZFMjA3MDIwQTgyMTJFNDIyNDdDRjg2NDg4QTRGODI0ODgyNDg4M0NGODI0MDAyM0ZFMDAwMDFBCis6MjBEMjAwMDAyMTEwMjExMDI3RkVGOTEwMjA0MDIwQTAyOTEwMzI0ODZDNDZBM0Y4MjA0MDIyNTAyMjRDMjQ0NEExNDA0MDgwMTUKKzoyMEQyMjAwMDAyMDAwMTAwN0ZGRTQ4MDQ5RUY4MjI5MDU0NjBBODIwMTdEODIwMEVERkY0MDE0MDExMjAyMTE4NDUxMDAyMDA2QworOjIwRDI0MDAwMDQwMDA2NDAwNDIwMDgxMDFGRUU2MjI0MDIyMDA0MjAwOEEwMTE0MDIxMDgyMTA4MjEwODNGRjgyMDA4MDAwMDlDCis6MjBEMjYwMDAwODIwMDYzMDA0NDA3RkZDMDEwMDNGRjgwMjAwRkZGRTA0MDAwODAwMEZGODEwODAyMDgwNDA4MDlGRkUwMDAwQkEKKzoyMEQyODAwMDAwODAyMDYwMTgwMDEzRkUwNDA0MDAzOEYzQzAxMDQwMTA1RTE3RTAxMDQwMTQ0MjE4NDIxMDQyMDAzQzAwMDAyRgorOjIwRDJBMDAwMTAxQzExRTAxMTAwRkQwMDExMDAxNUZFMTkxMDMxMTBEMTMwMTExODExMTYxMjEyMTIxMDE0MTA1ODEwMjAxMDYyCis6MjBEMkMwMDAwODQwMDg0MDI4NEMyRjcwMjg0MDJGNDJGODQyNDEzRTAxMDBGRkZFMDM4MDA1NDAwOTMwMzEwRUMxMDQwMTAwMTUKKzoyMEQyRTAwMDA2MDgzODA4RDAwODRBMDgyQkZFMTQxODY4MTgwODI4MTQyOEU0NDgwQzg4MzUwOEM0MDgwNDA4MjgyODEwMTAzMAorOjIwRDMwMDAwMTEwMDExRjAxMjIwRkZGODEyNDgxMjQ4MTNGODE4QTIzMEEyRDMxRTFDNDAxMDMwMTE5MDEwNjA1MDMwMjAxMDM5Cis6MjBEMzIwMDAxMDQwMTA0MDEwOTAxMUY4RkU0ODEwODAxN0ZFMTkxMDM2NEVEODg0MTMyMDEwQzgxMzEwMTA2MDUxODAyNjAwMUIKKzoyMEQzNDAwMDExMDgxMENDMTA1MDdERkM1NTI0NTVGQzU1MjQ3RDI0NTFGQzE4MjAxNDIwMUZGRUY0MjA0MDIwMDAyMDAwMjA5MQorOjIwRDM2MDAwMjA4MDIwODAyMUY4M0QxMDQ3RkM0OTI0QTEyNDIxRkMyMDUyMjA5MjIzNEUyMDMwMjg5MDMwNDAyMDMwMDAxMDA4Cis6MjBEMzgwMDA0MTAwMjFGODMyMTAyN0ZDMEE0NDAyNDRGM0ZDMjBBMDIxMjIyMjNFMjRDMDIwMjAyOTgwMzA2MDIwMTAwMDAwNUIKKzoyMEQzQTAwMDIwNDAyMDIwMjNGRTQyMDA0QUZDRkFBNDEyRkMyMkE0N0FBNDAyRkMwMjIwMzVGQ0M0MjAwODIwMTNGRTAwMDAyNgorOjIwRDNDMDAwMjA0MDIwMjAzQkZFMjEwODQwODg3ODkwQTNGRTIyMDBGQTAwMjIwMDIyMDAyMjAwMkEwMDM0MDAyNDAwMDgwMENFCis6MjBEM0UwMDAwMTAwMDA4MDdGRkUwODEwMDYyMDI0NDQzRkZFMjAwMDIwMDAyMDAwMjAwMDIwMDA0MDAwNDAwMDgwMDAwMDAwQUMKKzoyMEQ0MDAwMDEwMDAwQkZDNDAwNDQ0NDQ0Mjg0NEZFNDQ5MjQ0RkU0NDkyNDRGRTQ0MTA0NUZGNDQxMDQ0MTA0NDExNDQwMDgzMQorOjIwRDQyMDAwMTAwMDA4N0VGRjEwMDAyMDdGN0U1NTQyNUQ1MjQxNTI3RjUyMjI1MjNFNTIyMjEwM0UyODAwMjZGRjQyMDAwMDdECis6MjBENDQwMDAwMDAwMUZGMDEwMTAxRkYwMTAxMDEwMTAxRkYwMDAwMDNGRjgyMDA4M0ZGODIwMDgyMDA4M0ZGODIwMDgwMDAwRkEKKzoyMEQ0NjAwMDQ4MDAyOUZDMTEwNDMxRkM0OTA0ODkwNDE5RkMyODAwNEJGRThBMDIwQkZFMEEwMjBBMDIxM0ZFNTIwMjIwMDA2QgorOjIwRDQ4MDAwMTAwMDEzRjgxMDEwMTAyMEZDNDAxMDg0MTFGRTEwNTQxMDU0MTZBNDE5MjRFMjQ0NDA4NDAxMDQwMjE0MDAwODc2Cis6MjBENEEwMDAwMTAwMTEyMDA5MzAwOTQ0N0ZGRTQwMDQ4MDAwMUZGMDAwMDA3RkZFMDIwMDA0NDAwODIwMTNGMDNFMTgxMDEwMDAKKzoyMEQ0QzAwMDExMTAwRDE4MDkyMDdGRkU0MDA0OEZFODA4MjAwRkUwMDEwMDNGRjgyMTA4MjEwODIxMjgyMTEwMDEwMDAxMDA4OAorOjIwRDRFMDAwMDgwMDA4MTAwODIwMDg0MDA5ODAwRTAwMDgwMEZGRkUwQTAwMDkwMDA4ODAwODQwMDkzMDBBMUMwQzA4MDgwMEEyCis6MjBENTAwMDAxMDQwMUE0ODExNEMyMTUwMjdGRTc0MDRBMDAwMjNGODIwMDAyN0ZFMjA4MDIxOTAyMjA4MjdGQzIyMDgwMDAwMjYKKzoyMEQ1MjAwMDAwMDAzREY4MjQxMDI0MjAzQzQwMjQ4MDI1RkMyNDU0M0M1NDI0OTQyNTI0MjY0NDQ0ODQ1NTFDOEEwODAwMDBCRgorOjIwRDU0MDAwMDAwMDNGRkUyMDAwMjAwMDIwMDAyMDAwMjAwMDIwMDAyMDAwMjAwMDIwMDAyMDAwNDAwMDQwMDA4MDAwMDAwMDRFCis6MjBENTYwMDAwODIwMDgzMDQ5MjAyQTIwMUM3RTdGNDQ0MUM0NUQ0ODU1Mjg1NTI4NTUxMDVEMTA0MTI4NDE0ODQ1ODY0MjA0QzIKKzoyMEQ1ODAwMDEwMDAxM0Y4MTAxMDdDMjA1NDQwNTRGRTdENTI1NDUyNTQ5MjdDQTI1NTIyMTI0MjE0ODIxMTA0MTYxNDEwMDg5RAorOjIwRDVBMDAwMDAwMEYzRjg5MjA4OTNGODkyMDg5M0Y4OTAwMDk3RkM5NDA0RjQwNDk3RkMwNDA0MDQwNDA3RkMwNDA0MDAwMEQ1Cis6MjBENUMwMDAxMDAwMUJGQzEyMDQzM0ZDMjIwNDYzRkNBMjA0MjAwMDI3RkUyNDAyMjdGRTI0MDIyNDAyMjdGRTI0MDIwMDAwOEQKKzoyMEQ1RTAwMDA4MDAwOUZDMDg0NDdFNDQwODQ0MDg1NEZFODgwOUZDNDg4NDRFODQ0ODg0NDhGQzQ4ODRBODAwOUZGRTAwMDAxRQorOjIwRDYwMDAwMTAyMDEwMjAxMDIwRkMyMDEwQTgxMEE2MTUyMjFBMjQzMDY0RDAyODEwMTAxMDIwMTA0MDExODA1NjAwMjAwMDQ4Cis6MjBENjIwMDAyMDAwMjAyMDNFMjAyMEEwNDBBODdEMjZBMTIyMjIyMEZDNjIyMDI0MjAwODI0MTAyODYwMzE4MDJFMDAwMDAwNzcKKzoyMEQ2NDAwMDA4MDAwODdDN0Y0NDA4NDQzRTQ0MjI3QzNFNDQyMjQ0M0U3QzA4NDRGRjQ0MDg0NDA4ODQwODk0MDkwODAwMDA1OQorOjIwRDY2MDAwMDEwMDAxMUVGN0QyOTExMjk3RDI5NDVFOTdEMjk0NTJGN0RFOTExMjg3RDIwMTEyMDExMjAxMjIwMTJBMDE0NEVBCis6MjBENjgwMDA0MjAwMjIzQzJGQTQwMjI0OUZBNDU4QkMyRkE0MjhBNDJGQkM0MjI0QzIyNDVGQTQ0MjI0NDI0NDQyOTQ0MjA4QjUKKzoyMEQ2QTAwMDA4ODgxMTEwMjIyMDExMTAzRkY4MjEwODNGRjgyMTA4M0ZGODAxMDBGRkZFMDM4MDA1NjAwOTEwMTEwRTIxMDQxQworOjIwRDZDMDAwMDA0MEYwNDA5MDQwOTI1MDkzNDg5MjQ2OTQ0NDk4NDg5MDRDRjA0ODkwMTAwMDIwMDA0MDAxODAwNjAwMTgwMDBBCis6MjBENkUwMDAxMDIwMTAyMDE0MjAxNDI4NTkyNDUxMjI5MjIyMTQyMDEwMjQyODI0MjQwODI0MTA0MDYwNDE4MDg2MDAxODAwQTMKKzoyMEQ3MDAwMDAyMDAwMjAwN0ZGQzA0MDAwNDgwMDg4MDEwODAzRkZDMDA4MDAwODBGRkZFMDA4MDAwODAwMDgwMDA4MDAwODAzMgorOjIwRDcyMDAwMTAyMDEwMjAxMDIwRkUyMDEwMjAxNTIwMTkzQzExMjAzMTIwRDEyMDExMjAxMTIwMTEyMDE3RkU1MDAwMjAwMEY2Cis6MjBENzQwMDAyMjEwMjExODJGRDBGMjIwMjRCRTJGQzQyODQ0MzdBNDY0QThBN0E4MjQ5MDI3OTAyNEE4MjRBNkE1QzQ0NDgwQTgKKzoyMEQ3NjAwMDI4MDAzRjA0NDgyNDNGMjQwODI0M0YyNDI5MEMyQjA0MEZGMDAwODAxRkY4MDA4MDdGRkUwMDgwMDI4MDAxMDBFNgorOjIwRDc4MDAwMTAwMDFBMDAyMkZFNDIyMjkyMjIxM0EyMkUyMjYyMjJBMjIyMjJBMjIzMjIyMjQyMjA0MjIwOUMyMTA4MjAwMDA2Cis6MjBEN0EwMDA0NDEwMjIxMDJGOTAwMjEwODUzRTRGQTQyMDI0MkZFNDI4OTQyRjk0Qzg5ODRGODg0ODk4NDhBNDRBQzY0OTA0MjYKKzoyMEQ3QzAwMDIxMDAyMTNFMjEyMkY3RTQyMTI0MjEyODczQTg2QjY0QTUyMkE5MjIyMTIyMjEzQTIxMjQyMTIwMjEyMDAwMjAxQworOjIwRDdFMDAwMDAwMDNGRkMyMTAwMjEwMDIxMDAzRkY4MjAwODIwMDgyMDA4M0ZGODIxMDAyMTAwMjEwMDIxMDAzRkZFMDAwMEU0Cis6MjBEODAwMDAwMDAwM0ZGQzIwMDAyMDAwMkZGODIwMDAzRkZFMjUwMDI1MDgyNDlDMjRBMDI0NDA0NTIwNDYxODg0MDYwMDAwODIKKzoyMEQ4MjAwMDAxMDAwMTAwMTEyMDE5MTAyMTBDNDEwNjgxMDQwMDAwMDEwMDAxMDAzRkZDMDEwMDAxMDAwMTAwRkZGRTAwMDA1NgorOjIwRDg0MDAwMUZGODEwMDgxRkY4MTAwODFGRjgwMDAwM0ZGQzIwMDAyRkY4MjAwMDNGRkUyNDkwNDQ2MDQ1MjA4NjFDMDQwODA5Cis6MjBEODYwMDAxMDQwMTA0MDEwNDAxM0ZFNUE0NDU0NDg5MDQwMTBBMDEwQTAxMEEwMTEyMDExMjAxMTIyMTIyMjEyMUUxNDAwODAKKzoyMEQ4ODAwMDQwMDAyN0ZDMjQwODAwMDA4ODAwNDlFMDUxMjAxMTIwMjEyMEUxMjAyMTIwMjEyMjIyMjIyMjIyMjQxRTAwMDAxNgorOjIwRDhBMDAwMDA0MDc4NDA0QkZFNDg4MDUxMDA2MTQwNTI0MDRCRkM0ODQwNjg1MDUyNDg0MjQ0NDQ0NjQ4NDI0MTQwNDA4MERGCis6MjBEOEMwMDAxMDIwMTAyMDEwNTA3Qzg4MTExNjEwMjRGRUMwMTExODEwNjA1RDhDNTAxODUwNjA1MzgwQjAwMDhGRkUwMDAwQzEKKzoyMEQ4RTAwMDIwMDgxODA4MTAwOEZDMDgwNUZFMDgwODE0ODgxNjQ4Mzg2ODU0NDg5NjA4MTQwODEwMDgxMDA4MTAyODEwMTAzOQorOjIwRDkwMDAwMTEyNDEwQTgxM0ZFRkEwMjEwRjgxMDg4MTRGODE4MDAzMUZDRDAyMDExRkMxMDIwMTNGRTEwMjA1MEEwMjA0MDVFCis6MjBEOTIwMDAwQzgwNzA4MDEwRkUxMDgyRkQyNDMxMjAzMjIwNThCMDU0QTg5MUE0MTEyNDEyMjIxNDIyMTAyMDEwQTAxMDQwRkYKKzoyMEQ5NDAwMDIwMjAyMDI4MjAyNDI3RkVGQzIwMjQyNDI3QTYyNEE0MjRBODNDQThFNDkwNDc5MjA5MkEwODRBMTE4NDAwMDBDNgorOjIwRDk2MDAwMjA0MDI3QzgyNEIwMjMyNEY5MTgyMjA4NzVGNDY4MDJBM0Y4QTIwODIzRjgyMDAwMjExMDIwQTAyN0ZFMjAwMDc5Cis6MjBEOTgwMDAwMEEwMDA5MDAwODAzRkZFMjA4MDIwODAzRTg4MjI4QzIyNDgyMjUwMjIyMDJBNjA0NDkyNDEwQTg2MDYwMDAyOEYKKzoyMEQ5QTAwMDAwMDAxRkYwMTAxMDEwMTAxMDEwMUZGMDAwMDA3RkZDMDEwMDAxMDAxRkY4MDEwMDAxMDAwMTAwRkZGRTAwMDA1NQorOjIwRDlDMDAwMDA3ODNGODAwMTA0RkZGRTA5MjA3OTJDMDkzMDA5MjIzOTNFQ0I4MDA3NjAwRDMwMzExQ0MxMDgwMTAwMDAwMDVGCis6MjBEOUUwMDAwREY4NzEwODExMDgxMTA4RkQwODExRjgzMDAwM0JGQzU0NDA1MDQwOTNGQzEwNDAxMDQwMTA0MDE3RkUxMDAwM0EKKzoyMERBMDAwMDEwMDAxM0ZDMjA0MEM4NDAxMjdDMzI0MEQyNDAxMjQwMUZGRTEwMDAwMTAwMjg4NDI4OTI2ODEyMDdGMDAwMDAxNgorOjIwREEyMDAwNDA0MDI3NDgwMTMwMDUyNDkyMTg1M0YwNTQwODFCRjYyMjEwMjIxMEMzRjA0MDAwNDIxMDQxMjA1RkZFMDAwMERDCis6MjBEQTQwMDA0MDIwMzAyODIwMjQwRkZFMDQyMEU0MjAyNDI0MjdBNjI0OTQyNDk0MjQ5ODJDOTIzNEFBMkFDNjA5MDIxMDAwQUQKKzoyMERBNjAwMDAwMDAxRkY4MDAyMDAwQzQ3OTBDMEZGMDA5MjAxN0QwMTExMDIxMDgyRkU4NDEwNjgxMDQwMTAwMDUwMDAyMDBFMgorOjIwREE4MDAwMDAwMDQ3RjAyNDEwMjQxMDA3RjAwMDAwRTdGODIwODAyN0YwMjA4MDIwODAyRkZDMjAwMDUwMDA4RkZFMDAwMEYyCis6MjBEQUEwMDAwMDIwRjlGQzA5MjQ0OUZDNDkyNDQ5MjQ0MUZDN0MwMDA3RkUzNDQwQzQ3QzA0MDQwNDA0MjgxNDEwMDgwMDAwMkYKKzoyMERBQzAwMDBDMDA3MUZFMTAyMDEwMjRGRDI2MTBBNDMwQTgzODIwNTVGRTUwMjA5MDIwMTAyMDEwMjAxMDIwMTAyMDEwMjBGRAorOjIwREFFMDAwMDEwMDAxODA3OTAwNEJGRTRBMDA0QzAwNEJGMDQ4MTA0ODIwNzg0MDQ4ODA0MTAwMDIwMjAyMDIwMUZFMDAwMDg5Cis6MjBEQjAwMDAwMDgwMDA0MDFGRkUxNDAwOTQwMDU3QkM1QTI0MTIyNDNGQTQ1MjI0OTIyNDI1MjQyNEJDNDgyNDkwMjQyMDAwNDEKKzoyMERCMjAwMDEwNDAxMDQwMTNGQ0ZDNDAxMDQwMTdGRTE0MTAxODEwMzdGRUQwMTAxMTEwMTBEMDEwOTAxMDEwNTA1MDIwMjA5MworOjIwREI0MDAwMDAwMDNGMjAyMTIwM0YyMDIxMjQzRjM4MDAyMEZGQTAwNDI0MjQyNDI3MjQyNDFDNTQwMDRDMDA4M0ZFMDAwMDJGCis6MjBEQjYwMDAwMDAwMjA0MDEwNDAxMjQwODI0QzRBNzQ0QkM0MTY0NDEyNDQxMjU0MjI0OEUyNDAyMjQyMjIwMjIxRkUwMDAwQkYKKzoyMERCODAwMDQwMDAyM0Y4MzIwODIyMDgwMjA4MDNGOEUyMDgyMjQwMjIyMDI0MTAyNDBDMjgwODIwMDA1ODAwODdGRTAwMDBBMgorOjIwREJBMDAwMDAwMDc4MjAwOTIwMDkyNDc5M0U0N0U0NDEyNDQxMjQ3OTI0MDkyNDA5MEMwOTAwMDkwMjA5MDIyOEZFMTAwMDk3Cis6MjBEQkMwMDAwMDIwNzgyMDA5MjAyOTI0MjkzQzI5RTQyQjI0M0QyNDA1MjQwNTI0MzUyQ0M1MjAwNTAyMTUwMjA4RkUwMDAwMzkKKzoyMERCRTAwMDAwMTBGRTEwNDQxMDQ0MTA3QzkwNDQ5RTQ0OTA3QzkwNDQ5MDQ0OTA0NjkwN0M5MEM0OTAwN0ZFMDQwMDA0MDBBNgorOjIwREMwMDAwMDEwMDAxMDAxMUY4MTEwMDExMDBGRkZFMDEwMDIxMDgyMTA4MjI4ODIyNDgyNDI4MjgyODIwMDgzRkY4MDAwMDc4Cis6MjBEQzIwMDAwODgwMENGQzE5ODQxMTA4MzI5MDM0NjA1MEMwOTM0MDE0RkUxMTAyMTI4NDE0NDgxMDUwMTAyMDEwQzAxNzAwRDcKKzoyMERDNDAwMDAwMDAxRkY4MTAwODEwMDgxMDA4MUZGODExMDgxMTAwMTA4MDEwODAyMDQwMjAyMDQwMTg0MDBFODAwNDAwMDAzQQorOjIwREM2MDAwMDEwMDAxMDAzRkZDMDEwMDAxMDBGRkZFMDI0MDEyNTAxQTQ4MTI0NDI0NDY0NDQyODg0MDA4NDAxMTQwMjA4MDFCCis6MjBEQzgwMDAxMDAwMTNEQ0ZDNDQxMjY0MTE1NDdENTQ0NDQ0NDRDQzQ1NTQyQTY0Mjg0NDExNTQyODg4NDYwMDgxRkUwMDAwOTQKKzoyMERDQTAwMDAwNzgxRjgwMTAwMDEwMDAxMDAwMUZGRTEwNDAxMDQwMTFDMDEwNjAxMDU4MjA0ODIwNDA0MDQwODA0MDAwNDA2RgorOjIwRENDMDAwMTAwMDExRkMxNTA0MTUwNDU5MDQ1MTA0NTEwNDkxRkMxMTA0Mjg5MDI0ODgyNTg0NDEwNjQyMDI4NDAyMDAwMDJFCis6MjBEQ0UwMDAwMjAwMDEwMDdGRkMwMjAwMDc0MDBDMjAxMDEwM0ZGODA0OTAwNDgwMDQ4MDA4ODAwODg0MTA4NDIwN0M0MDAwQkEKKzoyMEREMDAwMDAwNDA0MDQwMjA0MDM3RkMyNDQ0MDQ0NDE0NDQxNDQ0MTdGQzI0NDRFMDQwMjA0MDIwNDAyMDQwMjA0MDIwNDBENQorOjIwREQyMDAwMDEwMDAxMDAwMTAwM0ZGODIxMDgyMTA4MjEwODIxMDgzRkY4MjEwODAxMDAwMTEwMDEwODAxRkM3RjA4MDAwMDA2Cis6MjBERDQwMDAwMDgwMTA4NDFGRkMwMTA0MDA4MDNGRkUyMDA0NEZGMDAwMDA3RkZFMDA4MDEwOTAxODg4MTA4QzIyODg0MTAwQUIKKzoyMERENjAwMDAxMDAwMDgwM0ZGRTIyMDQ0MjQ4MDIyMDdGRkUwMjQ4MDI0QzA0NTAwNDYwMDhDMDBCNDQxMDQ0MjAzQzQwMDAzRgorOjIwREQ4MDAwMjAyMDIwMjAyMDIwRjgyMDIzRkUyMjIyMkEyMjMyMjI2M0ZFQTIyMjIyMjIyMjIyMjIyMkEzRkU0MDAwMDAwMEQ0Cis6MjBEREEwMDBGRjAyMjg5MjI4OTIyODkyRkU5MkFCREFBQUI2QUU5MkMyOTI4MjkyRkU5MjgyOTI4MjkyRkYxMjgyMTIwMDAwQkEKKzoyMEREQzAwMDAwNDBGODQwQUZGQ0E4NDBBODQwQUJGQ0Y4ODBBODgwQUZGRUE5MDhGQUZFOEE0ODA0NDgwODA4MTAyODIwMTAxRAorOjIwRERFMDAwMDA0MDdDNDA0N0ZFNDQ0MDQ1Rjg3QzQwMTA0MDEzRkU1Qzg4NTA4ODUxN0U1MTQ4NUU0OEUyMDgwNDI4MDAxMDE0Cis6MjBERTAwMDAwQzAwNzFGRTExMjIxMTIyN0RGQTExMjIzOUZFMzUwMjU1N0E1MTRBOTE0QTExN0ExMjRBMTIwMjE0MEExODA0OEYKKzoyMERFMjAwMDBFMjA3ODIwMDgyNDA4QUNGRjcwMUMyMDJBMjAyODUwNDg4RTBCMDQwMDAwMDkwODI4ODQyODE0NDdGMDAwMDBCQQorOjIwREU0MDAwMTA0MDFGN0UyODkwNDUwOEJGRkMwMTAwMUZGODAyMDA3RkZFMDQxMDFGRkUwQTEwMTExMDIxMTA0MDUwMDAyMDMxCis6MjBERTYwMDAwODgwMDg4MDEwOTAxN0Y4MjA5MDYwOTBBMDkwMjExMDIxMTAyMTEwMjIxMDIyMTIyNDEyMjgxMjMwMUUwMDAwNUMKKzoyMERFODAwMDEwMDAxQkZDMjI0NDRBNDRGQkY0MTI0NDIzRkM0MjA0RkFGNDAyOTQwMjk0M0FGNEM0OTQwNDA0MDgxNDEwMDhFMQorOjIwREVBMDAwMDAxMEYwRDA5NzEwOTExMDkxNTJGRkQ0OTM1ODkzNTBGNTkwOTVBODk5Mjg5MTI4RjE0NDkxNDQwMTg2MDEwNEY0Cis6MjBERUMwMDAwMDEwM0ZGODAyMTAwMjEwMDIxMDAyMTAwMjEwM0ZGMDA0MTAwNDEwMDQxMDA0MTAwNDE0N0ZGRTAwMDAwMDAwOEQKKzoyMERFRTAwMDAyMDAxRkYwMTAxMDFGRjAxMDEwMUZGMDEwMTAxRkYwMDEyMDAxMTBGRkZFMDI4MDA0NDAwODMwMTAxQzYwMDhDMworOjIwREYwMDAwMTAwMDA4MDAwODA0N0VGRTA0MjQwODI0MTIyNDM0MjQ1ODI0OTQyNDEyNDQxMDQ0MTA4NDExMTQxMjA4MDAwMENFCis6MjBERjIwMDAwMTAwMDEwMDIxMDQyMTA0MjEwNDIxMDQzRkZDMjEwNDAxMDAyMTA0MjEwNDIxMDQyMTA0M0ZGQzIwMDQwMDAwRjcKKzoyMERGNDAwMDIwMDAyN0ZFMjQwMEY3RTQyNDA0NzQwNDZEREVBNTQ0QTU1NDI1Q0MyNDQ0MjU0NDI4RTQyQjA0MzAxNDIwMDg0NworOjIwREY2MDAwMDAwMDNGRkUyMDA4M0Y4ODIwMDgyRjdFMjkwODI5NDgyRjI4MjAzODMxMjgyQTA4NDc4ODVDMjg4MDEwMDAwMEUxCis6MjBERjgwMDAwMDg4N0M4ODQ3RkU0NDg4NDQyNDdERkUxMDI4NTNGRTVDMjA1MEZDNTE4NDU2RkM1ODg0RTA4NDAwRkMwMDg0QzkKKzoyMERGQTAwMDIwMDgyMDA4M0JDODIyNDg0MjdFN0JDQUEyNEEyMjRBRkJDQTIyNTIyMjUyMjI1MjJBNjIzM0FBMjY0NDAwMDA1MworOjIwREZDMDAwMTBBMDEwOTAzRTkwMjVGRTQ5OTA5MjkwN0VGQzAyOTAwMjkwN0VGQzAyOTAwMjkwMDI5MDdFRkUwMDgwMDA4MEJCCis6MjBERkUwMDA0MDIwMkYyMDI5NTAwQTQ4OEE4NjVDNzgxQTIwMjkyMDI5RkMyRDIwNEFBOEM4QTQ0OTIyNEEyMjQ4QTA0ODQwMjkKKzoyMEUwMDAwMDAwODBGODgwODk0MDkxMjBBMjEwQTdFQzk4ODA5MDgwOTdGOEQwODBBMkEwODI5MDg0OEM4ODg0OTI4MDgxMDAzRgorOjIwRTAyMDAwMDgyMDA4MjBGRUZFMUMzMDJBNjg0OUE2MDgyMDNGRjgwMTEwMDEwMDExRjgxMTAwMTkwMDI3MDA0MUZFMDAwMEJECis6MjBFMDQwMDAwMDIwRkUyMDExMjQxMTI0MjEyNDIxMjQzREZDNjUyNEE0MjAyNTI0MjUyNDI1MjQzRDI0MjVGQzIxMDQwMDAwODYKKzoyMEUwNjAwMDEwMjAxODI0MTVGRTI0MjQyMDI4NURGRUE0MjAyNDQwMjVGQzI2ODQyNEZDMjQ4NDI1ODQyRUZDMjQ4NDAwMDAwMAorOjIwRTA4MDAwMDEwMDdGRkMwMjAwMUZGMDE0OTAxMjUwMTEzMEZGRkUxMDIwRkVGQzEwMjA3Q0ZDNTQ5NDZDQ0M1NkE0RjlGRUNDCis6MjBFMEEwMDAyMDgwMjA0MDI3RkVGODYwMjA5ODIzRTAyODg4MzNGQzYwMDJBM0ZDMjI0NDIzRkMyMjQ0MjI0NEEzRkM0MjA0MTIKKzoyMEUwQzAwMDIwMTAzRjEwMjExMDQyMTA3RjdDQzk1NDdGNTQ0OTU0NDk1NDdGN0M0OTEwNDkxNDQ5MTI0OTFFODVGMjAyMDAyRAorOjIwRTBFMDAwMTAyMDE4MjAxMDIwMjAyMDNFMjAyMjMwNjIyODUyMjY5NDI0MTQyMDA4MjAxNDIwMjMyMDQwQzA4MDNFMDAwMDRECis6MjBFMTAwMDAxMDIwMTIyMjEyMjIxMjIyRkJGRTEwMDAxQkZFMTA0MDMwODBEM0ZFMTI1MjEyNTIxMjUyMTI1MjUyNTYyMjAyRTQKKzoyMEUxMjAwMDEwMDQxMDg0MTA4NDEwODQxMDg0MTA4NDEwODQxMDg0MTA4NDEwODQxMDg0MTA4NDEwODQyMDg0MjAwNDQwMDBEMworOjIwRTE0MDAwMDIwMDAxMDA3RkZFNDgyNDEwMTAyRkU4MDA0MDA4NDAwODQwMUZGQzAxNDAwMjQwMEM0MDMwNDBDMTQwMDA4MEYxCis6MjBFMTYwMDAxMDQwMTA3ODEwODgxMUYwRkMyMDEzRkUzODgwMzU0NDU2QTg1MTMwOTY3MDEwQTgxMzJFMUMyNDEwQTAxMDQwMTIKKzoyMEUxODAwMDEwNDAxODQ4MTdGQzIwNDAyMDgwNjA4NEFGRkUyMDgwMjEwODIzRkMyMDA4MjExMDIwQTAyMDQwMjAyMDAwMDA4QQorOjIwRTFBMDAwMDgwMDEwRjgzQzg4MjQ4ODM0ODgyQzg4MjUwRUZFMDAyNDAwMzRGQzJDODQyNDg0MjQ4NDQ0RkM1NDg0ODgwMDRBCis6MjBFMUMwMDAwMDIwMDIyNEZBMjQ4QTI0OEJGQzg4MDA4RkZFODg0MDg4ODBGQkZDOEE5NDAyOTQwMjk0MDI5NDAyODQwMjA4NUEKKzoyMEUxRTAwMDAxMDAwMTAwMUZGMDExMTAxMTEwMUZGMDAxMDAzRkY4MjEwODIxMDgyMTA4M0ZGODIxMDgwMTAwMDEwMDAxMDBBNworOjIwRTIwMDAwMDEwMDAwODAxRkZFMTA4MDkxNDA1MjIwMTQxODNCRUU1MjI0OTIyMDEyQTAyMjQwMjIwNDQyMDQ0MUZDODAwMEQzCis6MjBFMjIwMDAwMTAwMDA4MDdGRkU0MDIyMDkxODEyMDY3RkY4MTEwODEzRTgxNDQ4MUE4ODExMDgxMjg4MTQwODFGRjgxMDA4QkUKKzoyMEUyNDAwMDIwNDAyMDIwMjNGQ0Y5MDhBODkwQUZGRUE4MDBBOUZDQTkyNEE5RkNBOTI0QjlGQzIwMjAyMUZDMjAyMDIzRkUxQQorOjIwRTI2MDAwMDEwMDAwODAzRkZFMjA4MDIwODAyMDgwM0ZGQzIxODAyMUMwMjJBMDIyOTAyNDg4MjQ4NjQ4ODQ1MDgwODA4MERECis6MjBFMjgwMDAxMDAwMDlGQzA4MDQyMDA0MjdDNDI0NDQyNDQ0MjdGNDIwMTQyRkQ0MjAxNDIwNTQyMDI0MjAwNDIwMTQyMDA4QzAKKzoyMEUyQTAwMDA4MDIwODAyMTQxMjEzMTIyMUQyNDA5MkJGMTIyMTEyMjExMjI1MTIyMjEyMjA4MjIwODIyMDhBMUY4NDAwMDAwNworOjIwRTJDMDAwMDEwMDAxODBGMTA0OTNGRTkyNDQ5NDQ4OTg1MDkwNDA5MDQwRjBBMDkwQTA4MTEwMDExODAyMEMwNDBFMDgwNDY2Cis6MjBFMkUwMDAxMDgwMTA4MDEwODAxNUZDNTkwNDUyNDg1MjQwOTQ0MDEwNDAxMEEwMjhBMDI1MTA0NTEwNDIwODg0MEUxODA0QjYKKzoyMEUzMDAwMDIwMDAyMDNDMjdDMEY4NDAyN0ZFMjI0ODJBNDgzRkZFNjI0OEEyNDgyMDQwMkZGRTIwNDAyMDQwQTdGQzQwMDA2MAorOjIwRTMyMDAwMDAwMDIwN0MyM0MwM0M0MDQzRkU0MTQ4N0Q0ODEzRkUxMTQ4N0Q0ODExNDgxM0ZFMTA0MDE0NDAxOUZDMTAwMEYxCis6MjBFMzQwMDAwMDEwMDFGODNGMDAwMTAwN0ZGRTA5MjAwOTIwRkZGRTA5MjAwOTIwN0ZGQzAxMDAwMTAwMDEwMDNGRkMwMDAwOUQKKzoyMEUzNjAwMDAxMDAwMTAwM0ZGQzAxMDAxRkY4MDIwMEZGRkUwNDIwMDgxODNGRUVDODI0MEZFMDA4MjAwODIwMEZFMDAwMDBCRQorOjIwRTM4MDAwMTA0MDEwNDAxN0ZDRjg0MDEzRjgzODgwMzdGRTUxMTA1MjA4OURGRTExMDgxMUY4MTEwODExMDgxMUY4MTEwOENFCis6MjBFM0EwMDAwMDQwRkUyMDI5RkUyODAwRkVGQ0FBODRBQUZDQUEwMEFFRjhDMjEwODIyMEZGRkU4MjIwRkUyMDgyQTAwMDQwRkYKKzoyMEUzQzAwMDAwMDA3RkY4NDAwMDRGRjA0MDAwNUZGODQ5MTA0OEEwNEI2MDRDMUM0ODA4NUZGMDUwMTA1MDEwNUZGMDkwMTAwRQorOjIwRTNFMDAwNDA4MDIwNDAyN0ZFMDAwMDkzRjg1MjA4NTNGODIwMDAyM0Y4MjAyMEMwNDA0RkZFNDA0MDQwNDA0MTQwNDA4MDlGCis6MjBFNDAwMDAwODIwMDgyMDEwMjAxM0ZFMjQyMDdDMjAwOTI0MTEyNDIxMjQ3RDI0MDFGQzBDMjBGMDIyNDAyMjAwMjIwMDFFNjYKKzoyMEU0MjAwMDAxMDA3RkZDMDEwMDNGRjgwMjAwN0ZGRTBDMjgzN0U2QzQyNDE3RjA3QzdDNTQ1NDdDN0MxNDE0MUUxRTYyRTIyOQorOjIwRTQ0MDAwRjcyMDU1MjgzMzI0NTMyMDk1M0UxMUUwMjQyMDNGMjQ2NDI0QkYxODI0MTAzRjMwMjQ0QTI0OEEzRjA2MjAwMjZFCis6MjBFNDYwMDAxMDQwMTg0MDEwN0MyMDQwNEJGOEZBMDgxM0Y4MjIwODQyMDhGQkY4MDA0MDA3RkUxODQwRTA0MDAwNDAwMDQwMTQKKzoyMEU0ODAwMDAxMDAwMDg0MUZGRTExMjA5MTIwNTEyMDU1MjYzNUY4NTUyMDk1MjAyNTIwMjUyMDI1QTI0NjIyNTgxRTgwMDAwNgorOjIwRTRBMDAwMDQ0MDA0NDBGRkZFMDQ0MDQxMDAzMUZDMjkwODBBNTAxNDQwMTA0MEUwQTAyMEEwMjExMDIyMTgyNDBFMjgwNEVECis6MjBFNEMwMDAwMTA0RkNDODIwOTAyN0ZFMjA4ODQwODg3OTA4QzkxMDRBNTI0RkJDNDkwODRBOTQ3QzYyNDdGRTQwNDIwMDAwNTkKKzoyMEU0RTAwMDA0NDAyNDYwMjQ5MDI1RkUyNDkwQkY5MEE0RkNBNDkwQTQ5MEE0RkNBNDkwQjY5MEM0OTAwMEZFMDA4MDAwODAwNgorOjIwRTUwMDAwMDA0MDBDMjBGMUZFMTAwMDEwODRGRTQ4MTAwMDEzRkUxMDIwN0MyMDQ1RkU0NDIwNDQyMDdDMjA0NDIwMDAyMDlFCis6MjBFNTIwMDAwODIwMDQ0MDdGRkUwODIwMDgyMDEyNTAzQ0YwMDgyMDE0NTAzRUY4MDAwMDI5MDgyODg0NjgxNDA3RjAwMDAwMDIKKzoyMEU1NDAwMDQxMDAzMUZDMTU0NDBBNDAxNDQwNzBCMDExMEUxMjA0RkZGRTA4MDAwRkUwMEEyMDA5MjAxMTIyMTYyMjE4MUUxOQorOjIwRTU2MDAwNDAwMDIzRkMzMDA0MjAwNDAzRjQwMDA0RjAwNDExRTQxMTI0MTEyNDExMjQxMUU0MTUyNDE4MTQxMDA4MDAwMEVGCis6MjBFNTgwMDAwNDQwMDQ0MDA0NDAwNDQwMjQ0NjI3NTgyNDYwMjQ0MDI0NDAyNDQwMjQ0MDI3NDIzODQyRTA0MjAwM0UwMDAwMkIKKzoyMEU1QTAwMDA4MDIwODAyN0YyMjA4MjIwODIyN0YyMjQ5MjI0OTIyNDkyMjVEMjIyQTIyMjkyMjQ4ODI4ODhBMDgwNDA4MDA2QQorOjIwRTVDMDAwMDAwMEY5Rjg4OTA4QTlGOEE5MDhBOUY4QTkwMEE5RkNBQTU0QUM1NDIwOTQyMTI0NTI0NDQ4ODQ4OTE0MDAwODdBCis6MjBFNUUwMDAwMTAwNDEwMDI1MDAyNUZFMkE0NDBBNDgxNDQwMTA0MDIwQzBFMEEwNDEyMDQyMTA0NDA4MTgwRTYwMDQwMDAwNDQKKzoyMEU2MDAwMDAwMDBGRDA4NDhDQzQ4OTA3OUZDNDkwNDQ5MDQ3OUZDNDgwMDQ4MjA0Qzk0N0E4MkNBOEEwQTg4MDg3ODA4MDA4QgorOjIwRTYyMDAwMDQ0MDA0NDA3RkZFMTQ0MDFGRjgxMjQ4MjY0ODREODgzMTQ4MDYyODNBMTAwMTg4Mjg5NDI4MTY0N0Y0MDAwMDFFCis6MjBFNjQwMDAwNDAwMDgwMDdGRkM0NDA0NDQwNDRGRTQ0ODQ0NTY0NDYxODQ0MTg0NDI0NDRDMjQ0MDI0NDAwNDdGRkM0MDA0NDMKKzoyMEU2NjAwMDA4MDAwQzAwMDgwNDFGRkUxMTI0MjkyNDQ2MjQ4MzQ0MDRDNDA4RTQxMEI0NjEyNDAyMDQwQzA0NzAxNDAwMDgwQgorOjIwRTY4MDAwMDg0MDA4NDAwODQwMDg0MDA4NDAwODQwMDg0MDA4QTAxNEEwMTI5MDEyOTAyMTA4MjMwQzQyMDY4NDA0MDgwMEIyCis6MjBFNkEwMDAwMDAwMDg0MDA4NDAwODQwMDg0MDA4NDAwODQwMDg2MDE0OTAxMjk4MjMwQzIxMDY0MjA0RkZGRTAwMDAwMDAwNUIKKzoyMEU2QzAwMDAwODA0MDgwMkZGQzMxMDAyN0Y4MDEwMDNGRkUyMjEwMjdFOEQ4ODQ2RkZFNDA4MDQxNDA0MjMwNDQxQzU4MDhDNAorOjIwRTZFMDAwMTAwMDExRjg5NTA4NTUwODU5MDhGREY4MzEwODM5MDg1NTA4NTVGODUxMDg5MTA4MTEwODExMDgxN0ZFMTAwMDQ0Cis6MjBFNzAwMDAwMDQ4RkY0ODI4NDgyOEZDRkU0OEFBNDhBQkZFQUEwMENFRkM4Mjg0RkU4NDgyRkM4Mjg0RkU4NDgyRkMwMDg0RjEKKzoyMEU3MjAwMDIwNDAzRTdFNDhBMDg0MTAyMDgwMTBGRUZEMDAxMjgwMUNGQzE1MjAyNUZFMjQyMDI0NTA0NDQ4NTQ4RTg5MDRFMQorOjIwRTc0MDAwMTAwMDFCRjgzMjA4MjIwODYyMDhBM0Y4MjI0ODIwNDAyMjQ4MjI3QzIyNDAyMjQwMjU0MDI4QzAzMDNFMDAwMERDCis6MjBFNzYwMDAwMDQwNzgyMDRCRkU0QTk0NDkyODdBMjQxMUZDNTEyNDVERkM1MDIwNTNGRTUyMjI1RkZFRTAyMDAwMjAwMDIwREUKKzoyMEU3ODAwMDIwODAzRUZFNDkyMDlGRjAxMDEwMUZGMDEwMTAxRkYwMTAxMDFGRjAwMjAwRkZGRTBBNTAzNDJFQ0ZGNDAwMTA4QQorOjIwRTdBMDAwMDIwMDAxMDA3RkZFNDQyMjA5MTAzMTA4MUZGMDExMTAxRkYwMDEwMDNGRjgyMTA4M0ZGODAxMDAwMTAwMDEwMDQ3Cis6MjBFN0MwMDAyMDIwMjIyMjIyMjIyM0ZFRjk0MDIxMjAyQkZFMzYyMDZBMjBBM0ZDMjIyMDIzRkMyMjIwMjIyMEEzRkU0MjAwNjYKKzoyMEU3RTAwMDAwODAxMDg0MTA4NDFGRkMwOTAwMDg4MDFGRkUzMDgwNUZGQzkwODAxRkZDMTA4MDEwODAxRkZFMTAwMDEwMDAxNQorOjIwRTgwMDAwMTA0MDFDNDQxNDQ0MjdGQzIyNDA2MjI0QTdGRTJBMjAyM0ZDMjIyMDIzRkMyMjIwMjIyNDIzRkUyMjAwMjIwMDg5Cis6MjBFODIwMDA3ODgwNDg4MDQ4RkM0OTA0N0EwODRERkU0OTAwNDk3Qzc5NDQ0OTQ0NDk1NDQ5NDg0OTQyNEE0MkFBN0U5NDAwNjEKKzoyMEU4NDAwMDAxMDAwMDgwMUZGRTkxMDA1MDg4NUZGQzEyMjAzMjIwNTUzMDk4QzgyMDgwMkZGRTIwODA0MDgwNDA4MDgwODAwMAorOjIwRTg2MDAwMTA0MDEwMjA5N0ZFNTQ4ODU4ODhGRTg4MTE1NDNBMjIzNDIyNTAyMDU3RkU5MDIwMTAyMDEwMjAxMDIwMTAyMEY1Cis6MjBFODgwMDA0MDgwMjA0MDI3RkUwMDAwOEExMDUyMTA1NTI4MThDNDIwNDAyMDQwRUZGRTIwNDAyMDQwMjA0MDIwNDAyMDQwNTEKKzoyMEU4QTAwMDdFRjgyMjQ4MTIyODBBMjgxMzQ4MjA4MDdGRkMwNDIwMDQyMDBBNTAxMTA4N0ZGRTAxMDAwMTAwMDEwMDAxMDA1QQorOjIwRThDMDAwMTAxMDEwMTAxMDEwMTAxMEZERkUxMDEwMzgxMDM1MTA1NDkwNTA5MDkwMTAxMDEwMTAxMDEwMTAxMDUwMTAyMEJDCis6MjBFOEUwMDAwMzAwMDIwMDdGRkMwNDAwMDQwMDBCRjgxODEwMTAyMDMwMjA1N0ZFOTAyMDEwMjAxMDIwMTAyMDEwQTAxMDQwNTAKKzoyMEU5MDAwMDAwNDAwMDQwMDA0MDAwNDRGRkZFMDA0MDEwNDAwODQwMEM0MDA0NDAwNDQwMDA0MDAwNDAwMDQwMDE0MDAwODBDOQorOjIwRTkyMDAwMDEwNEZDODgyM0ZFMjA0MDIwNDAyM0ZDNDA4MDc4ODA2RkZFQTkwMDI5RkMyQTIwM0MyMDI4MjQzN0ZFMDAwMDM0Cis6MjBFOTQwMDAyMUZDMjEwNDIxRkMyMTA0RjlGQzIwMDAyN0ZFMzI0MDYzRkVBMjU0MjNENDIyNDgyM0Q4MkM2NkEwNDQ0MDQwREUKKzoyMEU5NjAwMDExMDgxMDg4MTA5MEZERkUxMDIwMTFGQzE0NDAxQkZFMzA4MEQxMDAxM0ZDMTQyMDEwMjAxMDIwNTdGRTIwMDAwOAorOjIwRTk4MDAwMTAwMDExMTAxMTEwRkJGQzExMTAxMTEwMUZGRTEwMDAzM0Y4RDIwODEyMDgxM0Y4MTIwODEyMDg1M0Y4MjIwOEVDCis6MjBFOUEwMDAyMDQwMjA0MDIyNDgyMzRDRkE0ODIyNDgyQjU4MzRENDY4RTJBMDQwMjdGQzIwNDAyMDQwMjA0MEFGRkU0MDAwMkQKKzoyMEU5QzAwMDEwOTAxMDkwM0M5MDIxRkM0MDkwN0M5MDkzRkUxMDAwRkRGQzExMDQxMTA0MTFGQzExMDQxNTA0MTlGQzExMDQwOQorOjIwRTlFMDAwMjExMDIxMTAyN0ZFRjkxMDIxNTAyMDQwMjhBMDMxMTBFM0VFMkMwMDIzRjgyMjA4MjIwODIyMDhBM0Y4NDIwODMyCis6MjBFQTAwMDAwMDAwNDA4MDMwODAxMDgwMEZGQzAwODAwMDgwRTA4MDIxNDAyMTIwMjIxODI0MEMyODA4NTAwMjhGRkMwMDAwNzIKKzoyMEVBMjAwMDEwNDAxRjdFMjg5MDI1MDg0NTg4MDI0MDBDMzAzMDBFQ0ZGNDAwMDAwRkYwMDgxMDA4MTAwODEwMEZGMDA4MTA1QQorOjIwRUE0MDAwMDEwMDFGRkUxMjIwOTIyMDVGRkM1MkEwMTE0MDMyMjA1NDE4OUJFRTIwMDAyN0YwMjQxMDQ0MTA4N0YwMDQxMDg1Cis6MjBFQTYwMDAxMDAwMTAwMDEzRkUxMDIwRkUyMDEwMjAxNDIwMTgyMDMwMjBEMDIwMTAyMDEwMjAxMDIwMTAyMDUwQTAyMDQwMkIKKzoyMEVBODAwMDAxMDAwMTAwMDEwMDAxMDAwMTAwRkZGRTAxMDAwMjgwMDI4MDAyNDAwNDQwMDQyMDA4MTAxMDE4MjAwRTQwMDQxMworOjIwRUFBMDAwMDAwMDFGRjAxMDEwMTAxMDEwMTAxRkYwMTExMDAxMDQ3RkZFMDM4MDA1NDAwOTIwMzExOEMxMEUwMTA0MDEwMDI2Cis6MjBFQUMwMDAwMDAwN0ZGRTAyMDAwMjAwMDdGQzA0MDgwODA4MEMxMDEzMTA2MTIwMDA0MDAxODAwNjAwMTgwMEUwMDAwMDAwMTcKKzoyMEVBRTAwMDEwODAxODgwMTdGQzIwODAyN0Y4NjA4MEFGRkUyMTIwMjI1ODI2NDYzOTU0MjBFMDIxNTgyNjQ4MjBDMDAwMDAxNAorOjIwRUIwMDAwMDgyMDdGMzAwODI4RkZGRTAwMjA3RjIwNDkyODdGMkM0OTI4N0YxODEyMTA3RjkwMTIyQUZGQ0ExMjA2NjEwMjVECis6MjBFQjIwMDAwOTEwMDkxMDdGRkUwOTEwMDkxMDdGRkU0MTA0ODEwODFGRjAxMTEwMTExMDExMTAxMTUwMTEyMDAxMDAwMTAwQTMKKzoyMEVCNDAwMDAwMjA3RTIwMTAyMDEwNDAzRTQ4MjI4NDQ1RkU2NDAyOTgwMDA5RkMxMTA0MTEwNDIxMDQ0MTA0ODFGQzAxMDRFRgorOjIwRUI2MDAwMTEwMDE5MjAxMTEwMTEwODIxRkMzRjAwNTA4MDkwODAxMDgwMTA0MDEwNDAxMDI0MTAxNDEwMEMxMDA2MDAwMDFCCis6MjBFQjgwMDAwOEEwMEM5MDEwRkMzNzQwNTAyMjEwMTIxMDBDMUZGMDEwMTAxMTEwMTExMDExMTAxMjkwMDQ2MDA4MTgxMDEwMjYKKzoyMEVCQTAwMDA4OTAwQzg4MTBCRTM3QzA1MDQwOTAyNDEyMTQxMTA4N0ZGRTAyOTAwNDk4MDg2MDM4MjBDQTE4MEMwRTA4MDQ2RQorOjIwRUJDMDAwMTA0MDE4NDAxM0ZDMjg0MDRDNDA4ODQwMTdGRTEwMTAzMDEwNTdGRTEwMTAxMTEwMTExMDEwMTAxMDUwMTAyMEU2Cis6MjBFQkUwMDAwMDQwNDA0MDIzRjgyMDQ4MEZGRTAwNDhFM0Y4MjA0MDIyNTAyMUUwMjE1MDI2NEMyMTQ0NTA4MDhGRkUwMDAwMkEKKzoyMEVDMDAwMDAyMDAwNDIwMDgxMDFGRjgwMDA4MEZGMDA4MTAwODEwMEZGMDAwMDAwOTA4Mjg4NDI4OTY2ODEyMDdGMDAwMDA3RAorOjIwRUMyMDAwMDAyMEZFMjA0NDIwNDVGRTdEMjI0NjI0NDQyMDQ0MjA3QzUwNDQ1MDQ2NTA1QzkwRTQ5MjA1MTIwNTBFMDYwMDk2Cis6MjBFQzQwMDAxMDAwMTFGODExMDhGRDA4MTEwODE1RjgxOTA4MTEwODMxMDhEMUY4MTAwMDEwMDAxMDAwMTdGRTUwMDAyMDAwNjYKKzoyMEVDNjAwMDAwMDAwRkYwMDgxMDBBMTAwOTkwMDhEMDA4OTBGRkZFMDgxMDA4MTAxMDEwMTAxMDIwMTAyMDUwNDAyMDAwMDBFRAorOjIwRUM4MDAwMDgyMDA2MzAwNDQwM0ZGODIxMDgzRkY4MjEwODIxMDgzRkY4MjEwODAxMDBGRkZFMDEwMDAxMDAwMTAwMDEwMDg3Cis6MjBFQ0EwMDAyMjAwMTQzRTdGMjI0OTI0NDkyODdGMzA0OTI4NDkyNDdGMjIwODIyRkZBMjA4MkEwODI0MDgyMDA4MjAwMDIwOUEKKzoyMEVDQzAwMDEyMDgxMTE4MTBBMEZGRkMxMjQ0MTdGQzFBNDQzMjQ0RDNGQzEwNDAxMDQwMTdGRTEwNDAxMDQwNTA0MDIwNDBGNQorOjIwRUNFMDAwMDAwMDc5Rjg0OTA4NDkwODc5MDg0OUY4NDkwODQ5MDg3OTA4NDkwODQ5Rjg0ODAwNDgwMDQ4MDA0QkZFOTgwMEQxCis6MjBFRDAwMDAwMDAwMUZGMDEwMTAxMDEwMTAxMDFGRjAxMDEwMTAxMDEwMTAxMDEwMUZGMDAwMDAwMDAwMDAwMEZGRkUwMDAwRTkKKzoyMEVEMjAwMDEwMDAxRkZDMjAwMDVGRjgwMDAwN0ZGMDAyMTAxMkQwMEIxMDA0OTAzQTUwMTI5MDBCMEEwNTBBMTg4NkUwNjJFRgorOjIwRUQ0MDAwMTAwMDFCRjgxMjA4MjIwODIyMDg3M0Y4QTIwODIyMDgyMjA4MjNGODIyMDgyMjAwMjAwMDJGRkUyMDAwMDAwMEU1Cis6MjBFRDYwMDAxMjA4MTEwODExMTAxQkZDNTYyNDUzRkNEMjI0MTIyNDEzRkMxMDIwMTdGRTEwMjAxMDIwMTAyMDEwMjAxMDIwRUYKKzoyMEVEODAwMDQwODAyMDgwMjI4ODAyOTA5NEUwNTA5MDUxMDgyNjg0MjA4MDI0QjBDNEMwNDk0MDQxMjA0MjE4NDQwRTU4MDQ5NgorOjIwRURBMDAwNDAwMDJFMEMzMjcwMjIxMDA0MTBFNDUwMkY1RTIxNTAyMTUwMjk1MDI1N0UyQTAwMzUwMDI4ODAxMDdFMDAwMDlECis6MjBFREMwMDAwMjA4RjkwQzA4OTAwQkZDN0E0NDQzRkM0MjQ0NDI0NEZCRkM0QTQ0MDg0MDBGRkUwODQwMDg0MDUwNDAyMDQwMjIKKzoyMEVERTAwMDAwMDA3RkZDMDEwODExMDAxMUY4MTEwMDI5MDA0N0ZFODEwMDFGRjAxMTEwMTExMDFGRjAwMTA4MDFGRTdFMDQ4QgorOjIwRUUwMDAwMDA4MDEwOTAwODk4MEM5MDA4QTAwMDgwM0ZGQzAwMDQwMDA0MUZGQzAwMDQwMDA0MDAwNDNGRkMwMDA0MDAwMEM1Cis6MjBFRTIwMDAxMDIwMTAyMDEyMjYxMTI0RkVBODEwQjAxNUZFMTgwMjMwMDJEMUZFMTAwMjEwMDIxMDAyMTFGRTUwMDAyMDAwQkMKKzoyMEVFNDAwMDAxMDAxMTEwMDkyMDNGRkUyMDA0NDAwODBGRTAwODIwMDgyMDBGRTAwNDQwMDQ0NDA4NDQwODQ0MTAzQzYwMDBDMAorOjIwRUU2MDAwMDQ0MDdGRkUwNDQwMjAwMDFCRjgxMDIwODg0MDY5RkM0OEE0MTBBNDExMjRFMjQ0MjQ0NDI4ODQyMTI4MjIxMDczCis6MjBFRTgwMDAxMDAwMTAyMDEyMjQxMTI0RkVBODEwQjAzQkZFMzQwMjU0MDI1MUZFOTAwMjEwMDIxMDAyMTNGRTEwMDIxMDAwNjQKKzoyMEVFQTAwMDAwMDAzRkY4MDIwODAyMDgwMjA4MDIwODAyMDgwMjA4MDQwODA0MDgwODA4MDgwODEwMDgyMEYwNDAyMDAwMDAxRgorOjIwRUVDMDAwMTAyMDEwNDAxMUY4MTEwOEZENDgxMTI4MTUwODE5MTAzMUZFRDA4MjE0OTIxNDkyMTdGMjEwMDI1MDBBMjAwNDY2Cis6MjBFRUUwMDAwMDFDN0RFMDQ0MDQ0NDQ2NDUyNDdDQTg1NDQwMTE4RTVEMDI1MTAyNTFERTUxMDI1RDAyRTFGRTAxMDIwMDAwOTIKKzoyMEVGMDAwMDEwMDQxRkM0MTIwNDIyMDQzNDE0Njg5NEFGRDQyMjk0MjIxNDJGRDQyMjE0MjIxNDIyMDQyM0M0MkUxNDIwMDgyNQorOjIwRUYyMDAwMDIwMDA0MDAxRkYwMTAxMDE0MTAxMzEwMTI1MDEwMjAxRkZDMDQwNDA0MDQ0NDQ0NDQ0NDdGQzQwMDI4MDAxMDBECis6MjBFRjQwMDAyMDQwMTA0MDE3RkNGODQwMEJGQzEwNDAxRkZFMjA4ODcwODhBOUZFMjE0ODIyMjgyNDI4MjgwODMwMjgyMDEwNDQKKzoyMEVGNjAwMDAwMDAxRkYwMTAxMDFGRjAxMDA0MTAwNDBGRkMwMDIwMDAyMEZGRkUwODIwMDQyMDA2MjAwNDIwMDBBMDAwNDA2RAorOjIwRUY4MDAwMDAwNDdGODQwODA0MTIyNDIxMjQ3RkE0MjUyNDA0MjQwNDI0N0ZBNDA0MjQwNDI0MDU4NDBFMDQ3MDE0MjAwODZECis6MjBFRkEwMDAwQzFDNzFFMDEwMDIxMjQyRkQyNDExMjgzMDQwMzk5QzU1MDQ1NTA0OTFEQzExMDQxMTA0MTEwNDExRkMxMTA0NTMKKzoyMEVGQzAwMDIwNDAyMDQwMjA3QzIwNDAzM0Y4QUEwOEFCRjhBMjA4MjNGODIwNDAyMDQwMkZGRTIwNDAyMDQwMjA0MDIwNDBDMworOjIwRUZFMDAwMDIxMDQxMjAyRkZDMjA4MDAxMDAwM0YwRTIxMDIzRjAyMjEwMjNGMDIyMTAyM0YwMjIxMDUwMDA4RkZFMDAwMDQxCis6MjBGMDAwMDA0MTAwMjEwMDI5RkMwQTQ0MTI0ODE0QzA2MEEwMjExMDI2MEUzRkZDMTI0ODEyNDgxMjQ4MTI0OEZGRkUwMDAwRTgKKzoyMEYwMjAwMDEwNDAxODQwMjdGRTUwNDA5QkZDMzI5NDIyOTQ2M0ZDQTAwMDJGRkUyMDAwMjU0NDI1MjIyNTBBMjhGODIwMDBGNQorOjIwRjA0MDAwMTNGODFBMDgyM0Y4NEEwODhCRjgxMDAwMTNGRTMwMTA1MDEwOTdGRTEwMTAxMTEwMTExMDExMTAxMDUwMTAyMDJBCis6MjBGMDYwMDAxMDgwMTA4MDIwODA3Q0ZDNDUwNDQ1MDQ0NjA0N0M4NDQ0NDQ0NDY0NDQyNDQ0MDQ3QzA0NDQyODQwMTAwMDAwNjAKKzoyMEYwODAwMDAwMDA3QkE0NENBODRBOTI0QjE0N0EwQzE1RjYxMDA0NURGODUxMDg1MTA4NTFGODVEMDhFMDkwMDdGRTAwMDA1MworOjIwRjBBMDAwMTAwMDEwMDAxMUZFMTAxMDU0MTA1NDEwNTgxMDkwMTAxMDEwMTgxMDI0MTAyMjEwNDAxMDQwNTA4MDIwMDAwMDAzCis6MjBGMEMwMDAwMDgwM0U5MDAyQTQyNDQ4MTQ1MDA4MjAxRkY4MjAwRTRGRTQ4ODIwMDgyMDBGRTAwMDAwMDgyMDA0NDA3RkZDMjYKKzoyMEYwRTAwMDIwODAzRUZDMjhBMDQ1MTA4NTEwM0ZGODAxMDBGRkZFMDAyMDAwMjA3RkZDMDQyMDAyMjAwMjIwMDBBMDAwNDA0QworOjIwRjEwMDAwMDAyNEY3QTg5OEIwOTUxMjkzMTRGMjA4OTVFRTk4MDRGM0YwOTIxMDkzRjA5MDAwRjIxMDkxMjQ4RkZFMDAwMEExCis6MjBGMTIwMDAzRTkwNDQ2MDI4MkMxN0QwNjAwRThGRTQwODIwMEZFMDA0NDBGRkZFMDAwMDBGQzAwODQyMDg0MjEwM0U2MDAwRDgKKzoyMEYxNDAwMDAwRkVGRTQ0MDI0NDQyNDgyNDQ4MTQ1MDA4NDgwQzQ0MTQ0MjEyNDIyMjQyNDA1NDgwNDgwMDQwMDA0MDAwNDAwNQorOjIwRjE2MDAwMjAwMDIxRjgyMTA4MjFGOEZEMDgyMUY4MjAwMDI3RkUyMDIwMjEyMDNEM0NFMTIwMDEyMDAyQTAwNDdFMDgwMDY5Cis6MjBGMTgwMDAwODE4MEM3QzFCQTAxMjIwMjIyMDYyMjBBM0ZFMjIyMDIyMjAyMjIwMjIxMDIyNTIyMjhBMjM0NjIyMjIwMDAwQjAKKzoyMEYxQTAwMDQwODAyN0ZDMjExMDAwQTA4N0ZDNTQ0NDU0NDQxN0ZDMjQ0NDI1RjQyNTE0QzVGNDQ0MDQ0NDA0NDQxNDQ0MDgyRQorOjIwRjFDMDAwNDA0MDIwNDAzMDQwMjA0MDA3RkMwNDQ0RTQ0NDI3RkMyNDQ0MjQ0NDI0NDQyN0ZDMjQwNDUwMDA4RkZFMDAwMDg5Cis6MjBGMUUwMDAwMDQwMEU2MDcwNDAxMDQwMTA3RUZFODgxMDg4MTA4ODExODg3RTUwNDI1MDQyMjA0MjIwN0U1MDAxOEUwNjA0RjkKKzoyMEYyMDAwMDEwNDAxMDQwM0Y3RTI4OTA0NTA4ODUwODAxMDAzRkY4MjEwODIxMDgzRkY4MjEwODIxMDgyMTA4M0ZGODIwMDg2NAorOjIwRjIyMDAwMDQ0MDg0NDA0ODQ0MzA0NDUyNDg4QTUwMEE0MDFDQTAyOEEwNDhBMDg5MTAwOTEwMEExMDEyMDg1NDBFMjgwNDI4Cis6MjBGMjQwMDAwMDgwMjA4MDExRjgxMTEwODJBMDU0NDA1MEIwMTM0RTJDNDAyM0ZDRTA0MDIyNTAyMjQ4MjQ0NDI5NDQyMDgwNTEKKzoyMEYyNjAwMDdFRkMyMjQ0MTIyNDBBMTQxMjI0Mjk0NDBDODAxRkZDMTA4MDNGRkM1MDgwMUZGQzEwODAxMDgwMUZGRTEwMDAwRAorOjIwRjI4MDAwMjA0MDMwMjAyM0ZFMjEwOEY4OTAyQkZFMkEyMjJBMjI0QUZBNzIyMjEyRkEyQThBMkVGQTRBOEE4MjAyMDIwNjBCCis6MjBGMkEwMDAxMDAwMTAzQzEzRTBGQTIwMTIyMDEyMjAxQkZFMTIyMDMyMjBEMjEwMTIxMDEyMTAxMjhBMTM0QTUyMjYyMDAyMkIKKzoyMEYyQzAwMDAxMDAwMDgwM0ZGRTIwMDAyMDM4MjdDMDI0NDAyNDQwMjdGRTI0NDAyNDQwMjQyMDQ1MTI0RTRBODQ0NjAwMDA1RgorOjIwRjJFMDAwMDAyMDExMjAxMTIwMTEyNEZEM0UxMUU0MTcyNDExMjQxMTI0MTEzNDExMjgxRDIwMzEwMkMxMDIwMEZFMDAwMEQzCis6MjBGMzAwMDAwNDQwMDQ0MDdGRkUwNTQwM0ZGQzA0MjAwMjQwM0ZGRTIxMDQ1RkY4MTExMDExMTAxMTEwMTE3MDExMjAwMTAwMzMKKzoyMEYzMjAwMDEwNDAxRjdFMjhBMDQ1MTA5RkY4MDA4ODFGRjgxMDgwMTA4MDFGRkMwMTg0MDI4NDBDOTQ3MDg4MDA4MDAwODBBRgorOjIwRjM0MDAwMDIwMDAxMDA3RkZFMDgxMDA0MjA3RkZFNDEwNDgxMDgxRkYwMTExMDExMTAxMTEwMTE1MDExMjAwMTAwMDEwMEEwCis6MjBGMzYwMDAwODEwMDQyMDAyNDA3RkZDMDEwNDAxMDQzRkZDMjEwMDIxMDAzRkZFMDMwMjA1MDIwOTE0MTEwODIxMDA0MTAwMkMKKzoyMEYzODAwMDAyMTA0MTEwMjEyMDI3RjgwMDQ4MDdGOEU0NDAyN0ZDMjBDNDIxNDQyMjQ0MkM1NDIwNDg1MDAwOEZGRTAwMDBBOAorOjIwRjNBMDAwMDA4MDIwNDAyN0ZDNDIwODQ5MTBGN0ZFMTQ0NDIwNDA0M0Y4RjI0ODAyNDgwMjQ4MUE0OEUyNTgwMDQwMDA0MEQ1Cis6MjBGM0MwMDAwODAwN0VGRTA4MTAzRTIwMjI3QzNFNDQyMjU0M0U1NDIyNTQzRTU0MjI1NEZGMjgyNDI0MjI0NjQyODIwMDAwRjIKKzoyMEYzRTAwMDEwNDAxMDIwMTNGRUZFMjAxMjIwMTIyMDE2M0UxQTIwMzIyMEQyRkMxMjg0MTI4NDE0ODQxNDg0NThGQzIwODRGOAorOjIwRjQwMDAwMDA0MDIwNDAxN0ZDMTA4MDAzRjg4MjA4NTNGODEyMDgxM0Y4MjIwODIzRjhFMjA4MkZGRTIxMTAyMjA4MjQwOEQxCis6MjBGNDIwMDAwMEEwRkNBMDEzRkMxMkE0MjJBNDIyQTQ3QkZDNkFBNEFBQTQyQUE0MkZGRTI4MDAzODkwMjkwODIyMDQwNDAyMjQKKzoyMEY0NDAwMDAxMDAwMTAwMDFGODAxMDAwMTEwMUZGODEwMTAxMDEwMTAxMDFGRjAxMDEwMDExMDI4ODgyNDQ0NDQ0NDAwMDA0OAorOjIwRjQ2MDAwMDI0MDAyNDAwMjQwMUZGODEyNDgxMjQ4MUZGODEyNDgxMjQ4MTI0ODdGRkUwNDIwMDYxMDBDMTgxODBDMjAwOEFGCis6MjBGNDgwMDAxMDQwRkUyMDExRkU3RDA0MTAwMEZFRkMwMDIwN0MyMDQ0QTA3Q0JDNDRBMDdDQTA0NTYwNDUyMDU2MUU0ODAwQzYKKzoyMEY0QTAwMDEwODAxMDgwMTA4MDdERjAxMDkwMUQ5MEYwRDA1MTJBMTIwQTU1MDYyMTAwMUZGODAxMDAwMTAwN0ZGRTAwMDA3OQorOjIwRjRDMDAwMDEwMDAxMDAwMTAwM0ZGODIxMDgyMTA4M0ZGODIxMDgyMTA4MjEwODNGRjgyMTA4MDEwMjAxMDIwMEZFMDAwMDhBCis6MjBGNEUwMDAwODAwMEMwMDFCRkUxMjIyMjIyMjcyMjJBMjIyMjNGRTIyMjIyMjIyMjIyMjIyMjIyM0ZFMjIwMjIwMDAwMDAwNzkKKzoyMEY1MDAwMDEwMDAxMDAwMUZGQzIwMDQyMDA0NUZGNDkxMTQxMTE0MUZGNDExMTQxMTE0MUZGNDEwMTQwMDA0MDAyODAwMTA3QgorOjIwRjUyMDAwMDEwMDAwODAzRkZFMjA4MDIwODAyMDgwMjBGQzIwODAyMDgwMjdGODI0MDgyNDA4NDQwODQ3Rjg4NDA4MDAwMDQzCis6MjBGNTQwMDAyMDgwMjA0MDI3RkUzNDIwQUMyMEE0MjBBNDNFMjQyMDI0MjAyNUZDMjUwNDI1MDQyOTA0MjkwNDMxRkMwMDAwM0UKKzoyMEY1NjAwMDA4MTAwNDIwN0ZGRTAyODAxRkY4MTQ4ODE4NzgxRkY4MTAwODFGRjgwMTAwRkZGRTAyQzAwQzMwMzAwRUMwMDRDOQorOjIwRjU4MDAwNDA4MDIwNDAyN0ZFMDQwNDgwMDA0QkZDNDg0MDEwNDAxMjQwMjI3Q0UyNDAyNTQwMjRDMDI4NjAzMDFFMjAwMDJFCis6MjBGNUEwMDA3Rjc4NDE0ODQxNDg3RjQ4NDA0ODUyODY1MjAwN0Y3QzUyNDQ1MjI4N0ZBODQwMTA1MjI4QTE0NkMxODQwMDAwQTEKKzoyMEY1QzAwMDAwMDBGREZFMTEyMjExMjIyMUZFM0QyMjY1RkVBNTAyMjU3QTI1NEEyNTRBM0U3QTIyMDIyNDAyMDQwQTA4MDRBOQorOjIwRjVFMDAwMDAwMDAzRkM3QzA0NDQwNDQ0MTQ0NDI0NDQyNDQ0NDQ0NDg0N0QwNDQ0MDQwMDA0MDAwNDAwM0MwMDA4MDAwMEI3Cis6MjBGNjAwMDAwMDUwN0U0ODRBNDg3RUZFNEE5MDRCOTA3RUZFNDI5MDVFOTA1MkZFNUU5MDQyOTA0MjkwNEFGRTg0ODAwMDAwQTcKKzoyMEY2MjAwMDQwMDAyN0ZDMzQ0NDI1RjQwNDQ0MTQ0NDE3RjQyNDA0MjVGNEU1MTQyNTE0MjVGNDI5MTQ2ODA0MzAxNDIwMDg4QQorOjIwRjY0MDAwMDAwMDNGRjgwMDA4MDAwODAwMDgwMDI4MDBDODAzMDgwQzA4MzgwODEwMDgwMDA4MDAwODAwMzgwMDEwMDAwMDlDCis6MjBGNjYwMDAxMDQwMTA0MDEwN0NGQzQwMTNGODEyMDgxN0Y4MUEwODMzRjhEMDQwMTA0MDE3RkUxMDQwMTA0MDUwNDAyMDQwOUMKKzoyMEY2ODAwMDAwMDAxRkYwMTAxMDEwMTAxMDEwMUZGMDExMTAwMTAwM0ZGQzIxMDQyMTA0MjEwNDIxMDQyMTE0MjEwODAxMDA5QworOjIwRjZBMDAwMTA0MDEwNDAyMDQwM0VGRTIwODI3RDAyNTIwMjkwNDJGRTIyMTAxMjEwMTIxMjAyMTQwMjE4MEExMDA0MDAwMDAzCis6MjBGNkMwMDA0M0ZDMjI0NDMyNDQyM0Y0MDI0NEUzRjQyMjA0MjJGNDIyOTQyMjk0MkFGNDMyOTQyNDA0MDQwNDA4MTQxMDA4RUIKKzoyMEY2RTAwMDAwMjA3RDIwNDUyMDQ1RkM0NTIwNDYyMDdDMjAxM0ZFNTAyMDVDMjA1MDUwNTA1MDUwODg1QzhDRTEwNjAyMDQ1NgorOjIwRjcwMDAwMDQyMDFDMTg2MjZDMDM4MDFENjBFM0RFMEMyNDM0QzAwMzAwMERGQzMyMDgwQzEwMzI2MDAxODAxRTAwRTAwMDZCCis6MjBGNzIwMDAwMDQ4Rjk0ODI3RkUyMTQ4MjE0ODIxNzg3OTAwNjlGRUE4MjAyQkZFMjg2MDI4QjAzOTI4MkEyNDI0MjIwMDIwNkEKKzoyMEY3NDAwMDEwNDgxMTQ4MTNGRTdENDg1NTQ4NTU3ODU1MDA1NUZDN0MyMDEzRkUxNDcwMUVBOEU0QTQwMTI2MDIyNDA0MjAyMgorOjIwRjc2MDAwNDA0MDIyNDAzMjQwMjNGODA0NDAwNDQwRTg0MDI3RkMyMDQwMjBBMDIxMTAyMjBDMjQwODUwMDA4RkZFMDAwMEJGCis6MjBGNzgwMDAwMjQ4ODI0ODZGRkU0MjQ4MDI0OEUyNzgyMjAwMjNGRTIwNDAyN0ZFMjBFMDI5NTAzMjQ4MjQ0NjA4NDQwMDQwMDkKKzoyMEY3QTAwMDFGRjAwNDIwMDI0MDAxODAzRTdDMTQ0ODA4MzAxNDQ4N0ZGRTQwMDIwRkYwMDgxMDBGMTAwOEYwMDgxMDdGRkUyNworOjIwRjdDMDAwMDAwMDdGRkUwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDA1MDAwMjAwMDAwMDlBCis6MjBGN0UwMDAwMDAwN0MwNDQ3RkU0NDIwN0MyMDQ0MjA0NDIwNDQyMDdDMjA0NDIwNDQyMDQ0MjA3QzIwNDQyMDQwQTAwMDQwMzAKKzoyMEY4MDAwMDAwMDA3RkZFNDQyMDQ0MjA0NDIwNDQyMDQ0MjA0NDIwNDQyMDdDMjA0NDIwMDAyMDAwMjAwMEEwMDA0MDAwMDA4RgorOjIwRjgyMDAwMTAwMDEwMDAyMUZFM0UyMDQwMjA3QzIwOTAyMDEwMjBGRTIwMTAyMDEwMjAxMjIwMTQyMDE4MjAxMEEwMDA0MDQzCis6MjBGODQwMDAwMDAwMDNGRUZDNDAxMDgwMTFGQzExMDQxMTI0MTEyNDExMjQxMTI0MTEyNDExMjQxMDUwNTE4ODI2MDYwMDAyMTQKKzoyMEY4NjAwMDAwMDAwN0UwMDUyMDI0QTQyNjY0MjUyNDI3RTQyMDA0M0U3QzAyNDA3RTdDMTI0NDEyNDQyMjQ0MjI0NDQyNDRCRQorOjIwRjg4MDAwMjA0MDIwMjAyM0ZFM0EwNDQwMDA3OUZDQTAyMDIwMjBGRDIwMjEzQzIxMjAyNTIwMkFBMDMyNjAyNDNFMDAwMEY2Cis6MjBGOEEwMDAwMjAwMDEwMDNGRkUyMDA0NDAwODFGRjAwMTAwMTEwMDExMDAxMUYwMTEwMDI5MDAyNTAwNDMwMDgxRkMwMDAwNEEKKzoyMEY4QzAwMDQwMDAyMDAwMTNGRTAwMTAwMDEwRjAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTIxMDE0MTAxODUwMTAyMDAwMDAxOQorOjIwRjhFMDAwMDAxMDAzRjgzRDAwMDEwMDAxMDAzRkY4MDEwMDAxMDBGRkZFMDEwMDAzMjAwNjEwMDgwODFGRkMwODA4MDAwMDEzCis6MjBGOTAwMDAwMjAwMDIwMDdGRkMwNDAwMDg4MDA4ODAxMDgwMUZGODAwODAwOEEwMEM5MDE4ODgxMDhDMjI4NDAxODAwMDgwMDYKKzoyMEY5MjAwMDA0MDAwNDAwMEJGMDE0MjA2MjQwMDE4MDAzODAwQzYwMzIxRUMxMDQwMEMwMDg4MDA2MDAwMTgwMDBFMDAwNDA3QQorOjIwRjk0MDAwMDQ0MEZGRkUwNDQwM0ZGODAxMDA3RkZFMDEwMDFGRjAxMTEwMUZGMDExMTAxRkYwMDEwMDNGRjgwMTAwRkZGRUM3Cis6MjBGOTYwMDAyMTEwMkZGRTIxMTAzM0Y4QTg0MEFGRkVBMDQwMjNGODIyNDgyM0Y4MjI0ODIzRjgyMDQwMjdGQzIwNDAyRkZFMjMKKzoyMEY5ODAwMDAwMjAwMDIwN0UyMDAwMjAwMEZDRkYyNDEwMjQxMDI0MjQyNDIyMjQ0RjQ0RkE0NDQwODQwMTE0MDIwODAwMDBBMAorOjIwRjlBMDAwMTA0MDEwNDAxM0ZFRkM0MDEwODAzMEEwMzkyMDU1RkM1MDIwOTEyMDExMjgxMjI0MTQyNjEwMjIxMEEwMTA0MDU0Cis6MjBGOUMwMDAxMDAwMUZGRTE0MDIzNUZBMjQwMjY0MDJBNUZBMjUwQTI1MEEyNTBBMjVGQTI1MEEyNDAyMjQwQTI0MDQwMDAwMzMKKzoyMEY5RTAwMDIwMDAyM0ZDMjIwNDMzRkNBQTA0QUEwNEEyRjQyMjk0MjI5NDIyOTQyMkY0MjIwNDIyMDQyMjE0MjIwODAwMDA5RAorOjIwRkEwMDAwMDA4MDgwODA2RkZFMjEwMDExNDAxMjQwMjQ0ODJGRkMyMDQwQzI1MDQzNDg0MjRDNDQ0NjQ4NDQ1MTQwNDA4MEFDCis6MjBGQTIwMDA0MDAwMjdGQzI0MDQwNDA0OERGNDRDMDQ1NUY0MTUxNDE1MTQyNTE0RTVGNDI0MDQyNDA0MjQwNDI0MTQyNDA4RDkKKzoyMEZBNDAwMDExMDAzMjFDNDdDNDQ0NDQ0N0M0NDQ0NDQ0NDQ3N0RDMDAwMDA4NDAwODQwMDg0MDEwNDQxMDQ0MjAzQzQwMDAyQQorOjIwRkE2MDAwMTAxMDExMTAxMDkwRkM5MDEwMTAxNTEwMTg5MDMwOTBEMDFFMTdGMDEwMTAxMDEwMTAxMDEwMTA1MDEwMjAxMDY3Cis6MjBGQTgwMDAwMDQwMDg0MDA0NDAwNjQwMTI0MDA4NDAwQzQwMDQ0MDAwN0VGRkMwMDA0MDAwNDAwMDQwMDA0MDAwNDAwMDQwNkQKKzoyMEZBQTAwMDAwNDA3ODQwNEJGQzUwNDA2MDQwNTdGRTQ4NDA0ODQwNEE0MDZBNzg1MjQwNDY0MDQ1NDA0OEMwNTAzRTQwMDA5MworOjIwRkFDMDAwMDAwMDdGRkUwMDAwMDAwMDFGRjAxMDEwMTAxMDEwMTAxRkYwMDAyMDEwMzAwODIwMDQ0MEZGRkUwMDAwMDAwMDYyCis6MjBGQUUwMDAwMDAwNDdGQzIwMDAyM0YwMDIxMDAyMTBFM0YwMjAwMDIyMTAyMTEwMjEyMDI3RkMyMDAwNTAwMDhGRkUwMDAwQjUKKzoyMEZCMDAwMDAxMDAwMDgwMUZGRTEwMDA5N0ZDNTAwMDUzRjgxMjA4MzIwODUzRjg5MDAwMTIwODIxMTAyMEEwNUZGRTgwMDBGMgorOjIwRkIyMDAwMDgwMDA4M0U3RUEyMDkyNDBBMjhGRkIwMDgyODEwMjQzRjIyNjEyMkJGMjIyMTNBMjEyNDNGMjAyMTIwMDAyMEMwCis6MjBGQjQwMDAwODAwMEZGQzA4ODhGRjQ4MkM1MDRBMzA4OENFMkIwNDFGRjAxMDEwMUZGMDEwMTAxRkYwMTAxMDFGRjAxMDEwODQKKzoyMEZCNjAwMDAxMDAzRkZDMDEwMDFGRjgwMTAwN0ZGRTAwMDAxRkYwMTExMEZGRkUxMTEwMTA5MDFGRkUwMDEwMDA1MDAwMjAyOAorOjIwRkI4MDAwMTAyMDUwMjA1MUZDN0MyMDUzRkU5MDAyMTUyNDE4QTAzMjIwRDEyMDE3RkUxMDQwMTA4ODExMDQxMjAyMTQwMjg5Cis6MjBGQkEwMDAwMDQwODg0MDQ4NDAzMDQwMzNGQzRBNDQ4QTQ0MUE0NDFCRkMyQTQ0NDg1MDg4NDgwODdDMTdDNDUyMDQyMDAwOUEKKzoyMEZCQzAwMDAwNDA0MDQwMzNGQzIwNDAwN0ZFMDEwNEU0QTgyMkEwMjIyMDI3RkUyMDIwMjA1MDI4ODgzMTA0MjIwNjA0MDQ1MgorOjIwRkJFMDAwMTA0MDEwNDAxM0ZBMTA0NEZDNDgxN0ZFMTAyMDEwQzAxMUZDMTcwNDExMDQxREZDRTEwNDQxMDQwMUZDMDEwNDI5Cis6MjBGQzAwMDAwMDQwNzg0NDRCRjQ0ODQ4NDg1MDdGRkU0ODQwNDg4MDc5Rjg0QjA4NEQwODQ5Rjg3OTA4NDkwODQxRjgwMTA4NDYKKzoyMEZDMjAwMDAwMjA3QzI0NDVGRTQ0MjQ1NDI4NTdGRTU0MjA1NDQwNTRGQzU1ODQ1Njg0MTBGQzI4ODQyNDg0NDZGQzg0ODREMworOjIwRkM0MDAwMDAwMDEwNDAxMDQwMTA0MDEwNDBGRTQwMTA0MDNCRkMzNDQwNTQ0MDUwNDA5MDQwMTA0MDEwNDAxN0ZFMTAwMDcyCis6MjBGQzYwMDAyMDIwMjAxMDNCRkUyMjQ4NDI0ODdCRkVBMjQ4MjI3OEZBMDAyMkZDMjI0NDIyMjgyQTEwMzQxMDI0MjgwOEM2OEEKKzoyMEZDODAwMDAwMjAzQzIwMjQyMDI0MjAzQzIwMjVGQzI0MjAyNDIwM0MyMDI0MjAyNDIwMjQyMDQ0MjA1N0ZFODgwMDAwMDBGMgorOjIwRkNBMDAwMDEwMDAwODAzRkZFMjIyMDIyMjAyRkZDMjIyMDIzRTAyMDAwMjdGODIyMTAyMTIwMjBDMDQxMzA0NjBFOTgwNDlGCis6MjBGQ0MwMDA0MDgwMjA0MDI3RkUwNDkwOTQ5MDU3RkM1NDkwMjRGMDI0MDAyNUY4QzUxMDQ4QTA0ODQwNTBCMDYzMEU0QzA0OTUKKzoyMEZDRTAwMDEwNDAxMDIwMTAxMDEwRkVGRTgyMjQ4MjI0ODI0NEZFNDQ4MjM0ODAwODgwMTQ4MDI1MDA0MTAwODIwMDA0MDBDNgorOjIwRkQwMDAwNDAyMDIxMjQyMTI0MDEyNEZERkMwODAwOEJGRTQ4MjA1M0ZFNTI1MjEyNTIxRTUyRTI1MjAyNTIwMjBBMDIwNDdGCis6MjBGRDIwMDAyMDAwMjNGRTIwMDAzRTAwNTBGODkwODhGRTg4MTA4ODEwRjgxMDA4MTkwNDI0ODgyNDg4NDA1MDgzRkUwMDAwMDAKKzoyMEZENDAwMDIwODAyMzM4M0EyODQyMjg0M0E4N0E0NkEyMDAyMjdDRkJDNDIyMjgyMkE4MjMxMDJFMjgzMjRFMjI4NDAwMDA2RgorOjIwRkQ2MDAwMDZGODM4ODgyMDg4MjA4ODNDODgyMTBFMjIwMDNERkMyMTA4MjA5MDJDNTAzMDIwRTA1MDIwODgyMzBFMkMwNDQ5Cis6MjBGRDgwMDAwNDAwNDQwRTY1NzA1NTQwNTY0MDQ0NDA3RjdFNEM0ODU2NDg1NTQ4NjQ0ODQ0ODg0NDg4N0YwODAyMDgwMDA4RTAKKzoyMEZEQTAwMDIwMDAyNzc4NDQ0ODQ0NDg5NzQ4RjQ0NjI0ODA0NDdDRjc0NDA0MjQwNDI4MzcxMENDMjgwNDQ0MDQ4NDA0MDA1MQorOjIwRkRDMDAwMjE0MDIxQjAyMTIwMjNGRUZBMjAyNjIwMkJGRTIyMjAyMjIwMjNGRTNBMjBFMjIwNDIyMDAzRkUwMjAwMDAwMEEwCis6MjBGREUwMDAxMDQwMEM2MDA0ODAxRkYwMTAxMDEwMTAxMDEwMTAxMDFGRjAwNDQwMDQ0MDA0NDQwODQ0MDg0NDEwM0MyMDAwNTEKKzoyMEZFMDAwMDAwNDBGQzQwODg0MDkwNDBBMDQwOTA0MDg4NDA4ODQwODhBMEE4QTA5MTEwODExMDgyMDg4NDA2OTgwNDAwMDAzQworOjIwRkUyMDAwMDAxMDAwMTA3QzEwMDQxMDA1RkU0NDEwMjQxMDE5MTAwODkwMTREMDI0OTAyMjEwNDIxMDgwMTAwMDUwMDAyMDlBCis6MjBGRTQwMDAyNDIwMjIzMDJGQTAyMDIwMjc3RUY1NDQyN0E0MjAyODJGQTgyMTI4M0E5MEU3MTA1QTI4MDI0NjBBODQwNTAwQ0UKKzoyMEZFNjAwMDAwNDAwMDQwRjg0MDhGRkM4ODQwOEE0ODhBNDg4QTQ4OEE0OEZCRjg4QTQ4ODA0MDAwNDIwMDQyMDAzRTAwMDBFOAorOjIwRkU4MDAwMDEwODdDOTA0N0ZFNDQ1MDQ1RkM3RDU0MTE5QzExNzQ1RDA0NTFGQzUwMDg1MUZFNUM4OEUwODgwMDI4MDAxMDU3Cis6MjBGRUEwMDAxMDQwMDg2MEZGNDAwMDQwN0VGRTQyODg3Rjg4MDA4ODdFNTAwNDUwMEYyMEY4MjAwODUwMDg4ODJCMEUxMDA0OTgKKzoyMEZFQzAwMDExRkUxMDIwMTA0MEZFRkMxMDg0NTQ4NDU0QTQ1NEE0N0NBNDEwQTQxMEE0MTIzMDE0NDgxOTg2MTYwMjAwMDA2MAorOjIwRkVFMDAwMDAwMDdGRkM0MTA0NDEwNDVGRjQ0MTA0NDkyNDQ5MjQ0OTI0NEZFNDQxMDQ0MTE0NDFGNDQwMDQ3RkZDNDAwNDE5Cis6MjBGRjAwMDAxMDIwMTAyMDIwMjAzREZDNDAyMDdDMjA5MTI0MTEyNEZEMjQxMUZDMTAyMDEyMjAxNDIyMTgyMjEwMUUwMDAwRjQKKzoyMEZGMjAwMDAwRkMzRjgwMjA4MDIwODAzRkZFMjA4MDIwODAyN0Y4MjQwODI3RjgyNDA4MjdGODQ0MDg0NDA4NDdGODg0MDgzMQorOjIwRkY0MDAwNDAzQzI3QzAyNDQwMDdGQzA0NDAwNUY4RTUwODI1RjgyNTA4MjVGODI5MDgyOUY4MzEwODUwMDA4RkZFMDAwMERBCis6MjBGRjYwMDAyN0JFMjBBMjI1MjRGQjE4MjMxODI0QTQyOEMyMzdGQzYwODRBNEE4MjMyODIxOTAyMkE4MjQ0NkI5ODQ0MDAwODEKKzoyMEZGODAwMDAwODAwMEY4RjEwODkzMTA5Q0EwOTA0MDkyQzA5MTdFOTY4NkYxMEM5MkQ4ODRCMDAwNjAwMTgwMDYwMDE4MDAyQQorOjIwRkZBMDAwMDEwMDAxRjgwMjA4MDQxMDBCMjAxMEMwMDMwMDBDODA3MUZFMDIwNDBEMDgzMDkwMDA2MDAxODAwRTAwNzAwMEY2Cis6MjBGRkMwMDAwMTAwMDEwMDdGRkUwMjgwMDI0MDA0MjAwODFDMzAyOERGRkUwODIwMDQyMDA2MjAwNDIwMDAyMDAwQTAwMDQwQ0IKKzoyMEZGRTAwMDIwMDAyMUYwMjExMDIxMTBGOTEwMjIxRTI0NDAyMDQwMkZGRTIwRTAzOTUwRTI0ODQ0NDYwODQ0MDA0MDAwNDAyQgorOjAyMDAwMDA0MDAwMUY5Cis6MjAwMDAwMDAxMDAwMjBGODdDODg0NDg4N0M4ODQ1MDY3RTIwNDQyMEZERkUwQzcwMTQ3MDE0QTgyNTI2NDYyNDk0MjAwODIwNEYKKzoyMDAwMjAwMDA3QzAwNDQwMDQ0MDA0NDAwODQwMDgzQzMxMDAwMTAwN0ZGQzAzODAwNTQwMDkzMDMxMEVDMTA0MDEwMDAwMDBFRQorOjIwMDA0MDAwMDAwMDdDRjA0NDkwNDQ5MDQ0OTA3RDEwMTEwRTEyNDA1ODQwNTdGRTUwRTA1NTUwNUE0RUU0NDQwODQwMDA0MEEwCis6MjAwMDYwMDAwODQwMTAyMDNDMjAyNUZFMzUwNDJFNDgyNDQwRkM0ODI0NUMzNDYwMkM0MDI0NDAyNDQ0NDQ0NjU0M0M4ODAwNDQKKzoyMDAwODAwMDAwMDQzRTA0MjIyNDIyMjQyMjI0MjNBNDQ4MjQwODI0RkZBNDFDMjQyQTI0MjkwNDQ5MDQ4ODI0MDgxNDA4MDg2NgorOjIwMDBBMDAwMjA0MDIwNDAyN0ZFMzA4MEE5RjhBQTIwQTdGRTI4MDAyMUY4MjEwODIxRjgyMTA4MjFGODIxMDgyMTI4MjExMDMzCis6MjAwMEMwMDAwMDQwNzg0MDRCRkM1MDgwNDlGODRCMDg2REY4NTEwODQxRjg0MTA4NDExODAxMDA3RkZDMDEwMDAxMDBGRkZFNjkKKzoyMDAwRTAwMDIwMTAyMEQwMjcxOEY5MTRBOTEwQUZGRUE5MTBBOTU0Rjk5NEEzMTgyOTEwMjUzMjNENTJDNThBMDIwNDAwMDBCQworOjIwMDEwMDAwMjAxMDIwRDAyNzE0MjExNEE5MTBBRkZFQTkxNEE5NTZBOTk0QUIxOEFEMTBCOTI4Qzk0ODAxMEEwNzBBMDIwNDVDCis6MjAwMTIwMDAwODEwMTgyMEVDRkMyQUM0MjhBNEZFQTQyODhDMjg4MDNBRkU2NDAyQUMwMjM1RkEyMzAyQTMwMjQxMEEwMDA0M0IKKzoyMDAxNDAwMDEwMjAxOUE4MTYyNDIyMjQzRkZFNjIyMEEyMjQyMkE2MjMyQzI2MjgyQTEwMjIzMDIyNEEyRThBMjQwNDAwMDA2QworOjIwMDE2MDAwMTAwMDA4RkU3RjkwNTEyMDFFRkUyMjgyNTQ4MjBDOTIxMjkyM0U5MkUyOTIyMkFBMjIyNDNFNDIyMTgyMDAwMDk4Cis6MjAwMTgwMDA0MTIwMjEyMDMxMjAyMjI0MDIyNjA2MjhFQTMwMjI2MDIyQTAyMjIwMjIyMDIyMjAyQTIyMzIyMjIyMUUwMDAwQ0MKKzoyMDAxQTAwMDIwMDAzMEQwMjM5MDIwOTRGODk0MkZGRTI4OTA0ODk0NTBENDUxOTg1MjkwMzBBODI4Q0E0RTg2ODkwMjAwMDA1MworOjIwMDFDMDAwMDAwMDNGRkMwMjQwMjI0ODEyNDgwQTUwMEE2MDAyNDA3RkZFMDAwMDA5MDgyODg0MjgxNjY4MTIwN0YwMDAwMEVGCis6MjAwMUUwMDAwMDAwM0ZGRTIwMDAyMDAwMjdGMDI0MTAyNDEwMjQxMDI0MTAyNDUwMjQyMDQ0MDQ0NDA0ODQwNDgzRkMwMDAwNEMKKzoyMDAyMDAwMDIwMDAyM0ZFMjIwMEZBMDAyMkY4MjI0ODJBNDgzMjQ4NjI0OEEyNjgyNDUwMjQ0MDI0NDJBODQyNTAzRTAwMDBBNworOjIwMDIyMDAwNDdGODI0MDgyN0Y4MDQwODA3RjgwMjAwRTNGQzI0ODQyQ0M0MjUyNDI3RjQyMDA0MjAwQzUwMDA4RkZFMDAwMDFGCis6MjAwMjQwMDA3NzgwNTRCRTU0QTI3N0E0MDAyODdGMzAwMDI4RkZBNDEwMjIxRjIyMDEzQTAxMjQwMTIwMDUyMDAyMjAwMDIwODcKKzoyMDAyNjAwMDIwNzAyMzk4MjA5NDNDOTA0N0ZFNDg5MEEwOTAyMEQ0MjE5NDIyOTgyMDkwMjBBQTI4Q0EzMjg2MjEwMjAwMDBCQworOjIwMDI4MDAwMUZGODEwODgxMDg4MTdGODEwODgxMTQ4MTIyODFGRjgwMDAwMDEwMDI4ODgyODg0NDgxNjQ4MTQwN0YwMDAwMEI4Cis6MjAwMkEwMDAwMDAwN0ZGRTAyMDAwNDAwM0ZGQzI0NDQyNDQ0MjQ0NDI0NDQyNDQ0MjQ0NDI0NDQyNDQ0MjQ1NDI0MDgwMDAwOUMKKzoyMDAyQzAwMDA0NDAwNDQwMDQ0MDA0NDAwNDQwMDQ0MDA0NDAwNDQwMDQ0MDA0NDAwODQwMDg0MjEwNDIxMDQyMjAzRTQwMDBBMgorOjIwMDJFMDAwMDAwMDdGRkUwODEwMDgxMDBGRjAwODEwMDgxMDBGRjAwODEwMDgxMDA4RkVGRjkwMDAxMDAwMTAwMDEwMDAxMDFFCis6MjAwMzAwMDAwNDAwMDYwMDA4MDAwRkZFMTEwNDIwODg0NDgwMDZBMDA0OTAwODg4MTA4QzIwODg0MDgwMDA4MDAyODAwMTAwNkMKKzoyMDAzMjAwMDIwMDAyM0ZFMjEwODNGMDg0NUY4NDkwODkxMDgxMUY4MTEwODExMEUxM0Y4MTQwODE4MDgxMDA4MDAwODAwMDAzRAorOjIwMDM0MDAwNDAwMDJGRkUyMjEwMDIxMDkzRjA1MjEwNTIxMDIzRjAyMjEwMjIxMENGRkU0MDEwNDAxMDQwMTA0MDEwMDAwMDIxCis6MjAwMzYwMDAwMDAwMDAxMDNGRjgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQ3RkZFMDAwMDAwMDAwMDAwQjUKKzoyMDAzODAwMDAwMjgwMDI0RkZGRTAwMjAzRkEwMDAyMDdGRTAwMDIwM0ZBMDIwQTAyNEEwMjRBMDI0OTIwQTEyMTE4QTYwODZGQworOjIwMDNBMDAwMDIwMDIyNDAyMjMwMjIxMDdGRkUyNDAwMDQwMDA3RTAwQzIwMEEyMDBBMjAxMTQwMjA4MDQxNjA4NjFDMTgwOEY1Cis6MjAwM0MwMDAzRkZDMjQ0NDI0NDQzRkZDMDAwMDIwMDQxODQ0MDg0NDc4NDQwODQ0MDg0NDA4NDQwODQ0MEEwNDBDMTQwODA4RTEKKzoyMDAzRTAwMDIwODAzRUZFMjhBMDQ1MTA5MkEwMTA5MDEwRkUyRjgwNjA4NEEwODgyMDUwMjA2MDIxQTIyRTEyMjAwQTIwMDYyNgorOjIwMDQwMDAwMTA4MDFDRDAxODk4MTA5MDMwRkUzNzgwNTA5MDkwOTgxMDkwMTBCMDEwNjAxMDYyMTE5MjE2MEExMDA2MDAwMDA4Cis6MjAwNDIwMDAwMDMwMDFGODdFMDAwNDAwMDMwMDAyMTA3RkY4MDAyMDAwNDAwMTgwMDYwMDA4MDAzMDAwNTgwMDg3RkUwMDAwODkKKzoyMDA0NDAwMDEwMDAwOUZDMDgwNDIyQzQyMkE0MjRGNDJGODQzNDk0MjRBNDI0QzQyNzU0MjQ1NDI0MzQyNDE0MjAwNDIwMENCOQorOjIwMDQ2MDAwMjA0MDEwNDAxMDQwMDA0MDhCRkM0ODQwNTA0MDEwNDAxN0ZFMjA0MEUwODAyMDgwMjEwODIyMDQyN0ZDMjAwNDQyCis6MjAwNDgwMDAwMDIwMDAyMEY4MjAyMDIwMjFGQzIwMjAyMDIwRjgyMDIzRkUyMDQwMjA0MDIwOTAzOTA4QzNGQzAxMDQwMDAwNzkKKzoyMDA0QTAwMDA0NDBGRkZFMDQ0MDQ0MDAzM0Y4MjQ5MDhGRkU1MUMwNTJCMDFDOEVFN0ZDMjQ4ODI3RjgyNDg4MjdGODI0MDhBNQorOjIwMDRDMDAwMTAwMDExRjAxMTEwN0QxMDU1MTA1NTEwNTU5MDU1NTA1NTcwNTU1MDVEMTAxMTEyMTExMjEyMTIxMjBFMTQwMDk0Cis6MjAwNEUwMDAwMEY4M0YwMDA5MTAwNTI0N0ZGRTAzNDAwRDIwMzExOERGRkUxMTEwMTExMDFGRjAxMTEwMTExMDFGRjAxMDEwQUUKKzoyMDA1MDAwMDBFMDBGMUZFNTIyMjM0MjJGRjMyMzhBQTU0QTY5MjIyRkU2NjkyQUE5MzMyRkUyMjkyMjI5MjIyRkVBQTAwNDQ3QQorOjIwMDUyMDAwMTAwODE0ODgxMzA4N0FCRTEwMDgzQTlDNTEyQTkyODgxMTA4RkZGRTAxMDAwMjgwMDQ0MDE4MzA2MDFDMDAwODg4Cis6MjAwNTQwMDAwMUYwRkQxMDExMTAxMTEwMjExMDNEOTA2NTUwNjU1MEE1MTAyNTEwM0QxMDI1MTIyMjEyMDIxMjA0MEUwODAwMjMKKzoyMDA1NjAwMDIwMDAyMEY4M0M4ODIwODg0MDg4N0M4OEEwQzgyMEE4RkNBODIwODgyMDhBMjEwQTI5MEEzMjBBMjQwNjAwMDAyMQorOjIwMDU4MDAwNDA0MDdFNDA4MDdFN0U4NDUzNDhGRTI4NEExMDdGMjgwMzQ2MDQ0MDFGODAwMjIwMEZGMDAxMTAwOTIwMTMxMEIxCis6MjAwNUEwMDAwMDAwMEZFMDA4MjAwODIwMDgyMDBBMjAwOTIwMDhBMDA4QTAwODIwMDgyMjA4MjIxMDIyMjAxRTQwMDAwMDAwMDUKKzoyMDA1QzAwMDEwMDAxM0ZFMTAyMDE0NDA1OUZDNTEwNDUxMjQ5MTI0MTEyNDExMjQxOTI0MjU1NDI0NDg0MDhDODEwNDA2MDRCQgorOjIwMDVFMDAwMDA3ODNGODAyMDAwMjAwMDNGRjAyODEwMjgxMDI0MjAyNDIwMjI0MDIxODAyMTgwNDI2MDRDMUNCMDA4MDAwMEY3Cis6MjAwNjAwMDAwMDA4NDNGQzIyMDAzMjAwMjNGODAyMDhFMzA4MjI5MDIyNTAyNDIwMjQ1MDI4ODgyMzA0NTAwMDhGRkMwMDAwQTEKKzoyMDA2MjAwMDA0MjAwNDIwRkZGRTA0NjA0MDAwMzFGODkxMDg2MTA4NDkwODA5MzgxMTEwRTEwMDIxMDQyMTA0MjBGQzIwMDA4QworOjIwMDY0MDAwMDAwMDdDM0M0NUUwNTUwMDU1MDA1NUZDNTU4ODU1NDg1NTQ4NTU1MDU1MjAyQTIwMkE1MDQ0ODg4OTA2MTIwNDVDCis6MjAwNjYwMDAwMDAwNDhGQzI4ODQxMDg0MTg4NDI4ODQ0NDg0MEM4NDE0OTQyNDg4NDQ4MDg0ODIwNDgyMDg4MjI4N0UxMDAwNzIKKzoyMDA2ODAwMDAwMDAyMDFDMjFFMDNGMDA0NTAwNDkwMDgxRkMxMTg0MTE0ODExNDgxMTMwMTEyMDE2NTAxQThFMTUwNDAwMDBGMworOjIwMDZBMDAwNDAzQzI3QzAyMDgwMDg0MDg4NDA1N0ZDNTAwODEwMTAyMDIwMjA0MEUwODAyMTAwMjYwMDI5MDAyMEZFMjAwMEFFCis6MjAwNkMwMDAwMDgwMTA2MDEwMjAxN0ZFMTA4MEZDODAxMDgwMTBGQzEwODQxNjg0MTg4NEUxMDQ0MTA0MDIwNDA0MjgwODEwRkYKKzoyMDA2RTAwMDA0MjAwNDIwRkZGRTA0MjAwNTIwMDA4MEZGRkUwNDAwMDQwMDA3RjAwNDEwMDgxMDA4MTAxMDEwMjBBMDQwNDA0QworOjIwMDcwMDAwMDIwMDAxMDAwMDgwRkZGRTAyMDAwMjAwMDNGMDAyMTAwNDEwMDQxMDA4MTAwODEwMTAxMDIwOTBDMDYwMDAwMDA4Cis6MjAwNzIwMDAwMDQwM0MyMDI0MTAyN0ZFM0M0MDI0NDAyNDdDMjQ0NDNDNDQyNDQ0MjQ4NDQ0ODQ0NDg0NTUwNDg5MTQwMjA4QkMKKzoyMDA3NDAwMDAxMDAwMDgwM0ZGQzIwMDQzRkZDMjA4MDIwNDAzRkZFMjIwMDIyMDAyM0Y4MjIwODQ0MDg0NDA4ODg1MDEwMjAxOAorOjIwMDc2MDAwMDA4MDdDNDA0ODQwNTNGRTUwODA2MDgwNTA4MDQ4Rjg0OTA4NDkwODY5MDg1MjA4NDIwODQ0MDg0ODI4NDAxMEUxCis6MjAwNzgwMDAxMDQwMTAzMDEwMjAxMUZFRkM0MDI0NDAyNDdDMjQ0NDQ4NDQyODQ0MTg4NDE0ODQyNTA0NDIyODg0MTAwMDAwOEYKKzoyMDA3QTAwMDA4ODAwQzYwMTgyNDE3RkUyMDgwNTA4MDkwODQxMEZFMTA4NDExMDQxMTA0MTIwNDEyNDQxNDI4MTgxMDAwMDBENAorOjIwMDdDMDAwNDA4MDIwNjAzMDQwMjdGRTAwNDAwMDQwRjA3QzEwNDQxMDg0MTA4NDEwODQxNTA0MTkwNDEyMzgwNDEwMDAwMEI0Cis6MjAwN0UwMDAwMDQwMjAzMDMwMjAyN0ZFNDg0MEYwNDAxMDdDMjA0NDQwNDRGODg0MDA4NDAwODQzOTA0QzIxNDA0MDgwMDAwMjUKKzoyMDA4MDAwMDEwNDAwODYwMDg0MEZFRkUyMDg0MjA4NDNENDQyNjQ4MjQyODI0MzAyNDEwMjQzMDQ0NDg0NDhFOTUwNDA4MDA3RQorOjIwMDgyMDAwMDQ0MDA0NDBGRkZFMDQ0MDA0NDA3QzdDMDQ0MDA0NDA3QzdDMDQ0MDA0NDBGQzdFMDQ0MDA0NDAwNDQwMDQ0MDIxCis6MjAwODQwMDAwNDQwMDQ0MDA0NDA3QzdFMDQ0MDA0NDAwNDQwN0M3QzA0NDAwNDQwMDQ0MEZDN0UwNDQwMDQ0MDA0NDAwNDQwQjgKKzoyMDA4NjAwMDAxMjAwMTIwRjEyMDk3M0U5MTIwOTEyMDk3M0M5MTIwOTEyMEYxMjA5RjNFODEyMDAxMjAwMTIwMDEyMDAxMjBBNgorOjIwMDg4MDAwMDAwMEZGQzAwMDQwMDA0ODAwNTAwMDYwMDA2MDAwNTAwMDQ4MDA0MDAwMjAwMDIyMDAxMjAwMEEwMDA2MDAwMEM1Cis6MjAwOEEwMDAwMDAwM0RGQzI1MjQyNTI0M0QyNDI1MjQyNUZDMjUwNDNEMDAyNTAwMjUwMDI1MDA0NTAyNTUwMjg4RkUwMDAwQTkKKzoyMDA4QzAwMDAwMDA3RkZFNDI0MDQyNDA1RTdDNDI0MDQyNDA1RTdDNDI0MDQyNDA3RTdDNDI0MDQyNDA0MjQwN0ZGRTAwMDBERQorOjIwMDhFMDAwNDEyMDIxMjAzMTIwMkYzRTAxMjAwMTIwRjczRTIxMjAyMTIwMjEyMDJGM0UyMTIwMjkyMDMxMjAyMTIwMDEyMEI0Cis6MjAwOTAwMDAwMDQwRjA1MDkwNDg5MDQ4OTA0MDk3RkU5MDQwOTA0MDkwQTBGMEEwOTEyMDAxMTAwMjE4MDQwRTA4MDQwMDAwRTgKKzoyMDA5MjAwMDAwMjAzQzIwMjdGRTI0MjAzQzIwMjVGQzI1MjQyNTI0M0QyNDI1MjQyNTI0MjUzNDQ1Mjg1NDIwODgyMDAwMjBDRQorOjIwMDk0MDAwMDEwMDAwODAzRkZFMjEwMDI5MjAyOTEwMkZGQzIxMDAyMUY4MjIxMDIzMTAyNEEwNDg0MDUwQjBBMzBFMEMwNDVGCis6MjAwOTYwMDA0MTIwMjEyMDIxMjAwN0Y4ODkyODQ5Mjg1N0Y4MTUyMDI1MjBFN0ZDMjEyNDIyMjQyMjI0MjQyQzI4MjAyMDIwMUUKKzoyMDA5ODAwMDAyNDAzRkY4MDI0ODNGRjgyMjQwM0ZGRTA0NDIwODRBMUZGNDY4MTAwOTEwMDkxMDA5MTAwMkMwMEMzODMwMTAwQQorOjIwMDlBMDAwMDQ0MDA0NDBGRkZFMDQ0MDA0NDAwODIwMEMxMDA4MDgxN0U2MjIyNDQyMjAwNDIwMDQyMDA4MjAxMEEwMjA0MEIxCis6MjAwOUMwMDAwMDIwRkUxMDI4OTAyODg4RkU4OEFCMDZBQTA0QUVGOEMyNDg4MjQ4RkU0ODgyODg4Mjg4RkYyODgyMTAwMDAwMEYKKzoyMDA5RTAwMDAwMjAwMTIwRjlBMDg5MTA4QTE4OEEwRThDMDQ4QkY4ODg4OEY4ODg4ODg4MDEwODAxMDgwMjA4MDQyODA4MTAzNworOjIwMEEwMDAwMTAwMDFGRkMyMDAwNUZGODgwMDA3RkYwMDIxMDExMTAxMDkwM0Y1MEM5MTAwOTA4MTEwQTExMEE2NTA2MDIwMjU0Cis6MjAwQTIwMDAwODgwMEM4MDA4NDAxMDIwMTAzMDIwMTg0MDBFOUZFNDA0MjAwNDIwMDQyMDA0MjAwODIwMTBBMDIwNDA0MDAwRDkKKzoyMDBBNDAwMDIwMjAyMTIwMjFBMDQxMTA0OTEwRjIwODE0MDYyM0YwRjg5MDQwOTAwMDkwMTkxMEUxMTA0MjEwMDQ1MDA4MjBCMworOjIwMEE2MDAwMTA4MDEwNjAxMDQwMTdGRTExMDhGRjA4MTEwODEwOTAxMDkwMTY2MDE4NjBFMDYwNDA5MDAxMDgwMjA2MEMwNDc5Cis6MjAwQTgwMDAwODEwMDgxMDdFRkUxODMwMUM1ODJBOTQ0QjEyODgxMDAxMDAwOTE4MDlBMDEyNDAwNDIwMDgxMDMwMEVDMDA0RTAKKzoyMDBBQTAwMDAxMjAyMTIwMTEyMDExMTA4MjEwNTIwODU0MDYxQkYwMjA5MEUwOTAyMDkwMjExMDIxMTAyMjEwMjQ1MDIwMjAxOQorOjIwMEFDMDAwMTAxMDEwOTg5NDkwNTQ5MDU5MDhGRDA4MzIwNjM3RkM1ODg4NTQ4ODUwODg5MDg4MTEwODExMDgxMjUwMTQyMDAxCis6MjAwQUUwMDAwMTAwMDEwMDdGRkUwMjgwMDQ0MDA4MjAxMDEwM0ZGRUQxMTQxMTEwMUZGMDExMTAxMTEwMTExMDFGRjAxMDEwODUKKzoyMDBCMDAwMDA5MzAwREEwMDkyMDEyMTAxMjA4MjQwRTY4MDRCN0Y4MjA4ODIwODgyMDg4MjEwODIxMDgyMjM4MkMxMDAwMDA1RAorOjIwMEIyMDAwMDQyMDA0MjAwODEwMTAwODNGRjZDMjEwMDQxMDA4NTAxMDIwNjEwMDA4ODg0OEE0NDgyNjg4MzQwN0UwMDAwMEFDCis6MjAwQjQwMDAyMDQwMjNGODIwNDAzMTUwQUZGRUE5MTBBMDAwMjNGODIyMDgyMjQ4MjI0ODIyNDgyMEIwMjMwQzJDMDQwMDAwODEKKzoyMDBCNjAwMDIxMDgxMTEwMDkyMDdGRkMwNTQwMDkzMDMxMEVDNDQ0M0ZGODA0NDAwNDQwRkZGRTAwMDAwODIwMDgxODEwMDhBNgorOjIwMEI4MDAwMDEwMDAxMDAwMTA4M0ZGQzAxMDAwMTEwM0ZGODAxMDAwMTAwMDEwNEZGRkUwMTAwMDEwMDAxMDAwMTAwMDEwMEJECis6MjAwQkEwMDAwODA4MDgwODdGMDgwODA4MDg3RUZGODgwODA4MDg0ODA4Mjg3RjI4MDgwODA4MDgwRjA4NzgyODIwMTAwMDAwMzMKKzoyMDBCQzAwMDIwMDAyM0Y4MjIwOEZBMDgyMjI4MzMyODZBQTg2QTQ4NjI0OEEyQTgyMzFBMjQwQTI0MDYyODA2MjAwMjIwMDA0QworOjIwMEJFMDAwMTA4MDEwRjgxMDg4N0Q1MDU2MjA1NDUwNTU4RTU2MjQ3REZDMTAyMDE1RkMxRTIwRjdGRTQwMjAwMDIwMDAyMEY0Cis6MjAwQzAwMDAyMDgwMjBGQzIwODhBOTg4QUE1MEFDMjBBOERDQUI0OEE4NDBBQkZDQjg0MEVCRkM4MDQwMDdGRTAwNDAwMDQwNEYKKzoyMDBDMjAwMDIwODAyMDgwM0RGODQxOTA0MjYwNzg5MEEzNEUyMDQwRkJGODIwNDAyM0Y4MjA0MDJCRkMzMDQwMjA0MDAwNDA2RQorOjIwMEM0MDAwMDAwMDFGRjgxMDA4MTA0ODE0NjgxMjQ4MTE0ODEwODgxMDg4MTE0ODEyNkEyNDJBMjgyNjQwMDY4MDAyMDAwMDc1Cis6MjAwQzYwMDAwMTAwMDA4MDFGRkUxMDAwOTdGODU0MDg1NTI4MTRBODM0NDg1NDQ4QTRBODI5MjgyQTJBNDgwQTUwMDZBMDAyNEYKKzoyMDBDODAwMDEwNDAxMEZDMTA4ODE1NTA1QTIwNTBEODUzMjYxREZDMTAyMDExRkMyODIwMjdGRTQwMjA0MDIwODAyMDAwMjA5RAorOjIwMENBMDAwMDIwMDQzRjAyNTIwMjBDMDAxMjAwNjlDRTA4MDI3RjAyMDgwMjdGMDIwODAyRkY4MjA4MDUwODA4RkZDMDAwMDI3Cis6MjAwQ0MwMDAwMDAwNDdGODIwMDgyOTA4MDkxMDA5MTAxMTEwMTNGQzIxMDRFMDA0MkZGNDIwMDQyMDA0MjAwNDIwMjgyMDEwMEEKKzoyMDBDRTAwMDIwNDAzMDdDMjQ4ODQyNDg1MjMwRTA0ODI2QTY0MkY4RkEyMDAyRjgwMjIwM0JGQ0UyMjAwNTIwMDhGRTAwMDA2OAorOjIwMEQwMDAwODAwMDQzRjg2MjA4NDIwODAzMjhFMkE4MjI0ODIyNDgyMkE4MjJBODIzMEEyQTBBMzQwQTI0MDYwODAyMDAwMDc0Cis6MjAwRDIwMDAwMTAwN0ZGQzAxMDAzRkY4MDEwMDAyMDBGRkZFMDQyMDA5MTAzRkVFQzEwNDAxMDAzRkY4MDEwMDAxMDAwMTAwOTUKKzoyMDBENDAwMDAwMDAxRkYwMTAxMDEwMTAxRkQwMTA1MDE0OTAxMjkwMTExMDEyOTAyNDQ4Mjg2QTUwMEE0MDA2ODAwMjAwMDBDQworOjIwMEQ2MDAwMDg5MDA4OTAxN0ZDMTA5NDMwOTQzN0ZDNTQ5MDk0OTAxN0ZFMTA5MjEwOTIxMTFBMTExNDEyMTAxMjEwMTQxMDdDCis6MjAwRDgwMDAwMDAwN0ZGQzAwODAwMTgwMDMyMDBEMTgxOTBDNjEwNDAxMDAxRkYwMTAxMDEwMTAxMDEwMUZGMDEwMTAwMDAwNjYKKzoyMDBEQTAwMDAxMDAwMTAwMDEwMDNGRkMwMTAwMDEwMDAxMDA3RkZFMDEwMDAyODAwMjQwMDQyMDA4MzAxMDE4MjAwRTQwMDRCQQorOjIwMERDMDAwMEEyMEZGQjAwODIwN0YyMDQ5N0U3RjQ0NDlBNDdGMjg0OTI4MDQyOEZGOTAxMDEwMUYyODIxQzYyNTA0NDIwMDcwCis6MjAwREUwMDAwMDQwM0M0MDI0NDAyN0ZDM0M0MDI0NDAyNDQwMjdGRTNDNDAyNDQwMjRBMDI0QTA0NTEwNTUwODhBMDYwNDA0OTUKKzoyMDBFMDAwMDEwMEMyMEYwNTcwMjU1NTQ1NTU0NTUwMDc3N0M1NTA4NTUxMDU3MTA3NUZFMTQxMDI0MTAyNDEwNDQ1MDg0MjA1MworOjIwMEUyMDAwMjA0MDIwNDAyMDQwMjNGQ0Y4NDAyMDQwMjg0MDM3RkU2MDQwQTA0MDIwQTAyMEEwMjExMDIxMDhBMjBFNEMwNEU0Cis6MjAwRTQwMDAxMEEwMTBBMDEzRkMxMEE0RkNBNDEzRkMxQUEwMTJBMDMzRkVEMEEyMTBBMjExMkExMTI0MTIyMDU0MjAyMDIwQTkKKzoyMDBFNjAwMDEwMDAxMUZFRkUwMDIwRkMyMDg0NTA4NDUwRkNGRTAwMTFGRTExMjIxREZFRjEyMjExMjIxMUZFMTEwMjEwMDBBMgorOjIwMEU4MDAwMjAwMDIzRkUyMDAwRjlGQ0E5MDRBOTA0QTlGQ0E4MDBBQkZFQUEyMkFCRkVCQTIyMjIyMjIzRkUyMjAyMjAwMEIyCis6MjAwRUEwMDAyMDAwM0ZGODQwMDBCRkUwMDAwMDdGRjAwMDEwMDkxMDNGRDAwOTUwM0ZEMDI5MTAzRkVBMDkyQTExNjY2MTAyN0UKKzoyMDBFQzAwMDIwNDAzRjdFNDg1MDQ0ODg4OTEwMDgxMDE3RkUxMDEwMzIxMDUxMTA5MTkwMTA5MDEwMTAxMDEwMTA1MDEwMjA3NworOjIwMEVFMDAwMTA4MDE4RDAxMDhDMTA4ODIwODAyRkZDNjA4MEEwODAyMDgwMjE0MDIxMjAyMjMwMjIxODI0MEUyODA0MDAwMDRGCis6MjAwRjAwMDAxMDdDMUZDMDE0ODgzMjRDMjI1MDY3RkNBMDA4MjAzMDIwNDAyRkZFMjA0MDIwNDAyMDQwMjE0MDIwODAwMDAwRDEKKzoyMDBGMjAwMDNDRkMyNDg0MjQ4NDI0OTQzQzg4MjQ4MDI0RkMzQ0M0MjRDNDI0QTgyNEE4MjQ5MDQ0QTg1NENFODg4NDAwMDA5QgorOjIwMEY0MDAwMjAzQzE3QzAxMDA4MDQ4ODhBNTA0ODAwNTNGMDEwMjAyMDQwMkZGRUUwNDAyMDQwMjA0MDIwNDAyMTQwMjA4MDU3Cis6MjAwRjYwMDAyMDQwMTAyMDEzRkUwMDAwODkwODQ4OTA1MEEwMTdGRTIwMDAyM0Y4RTIwODIyMDgyMjA4MjNGODIyMDgwMDAwQTQKKzoyMDBGODAwMDIwMDAxM0ZFMTAwMEZERkMwNTA0MDkwNDExRkMzMDAwNUJGRTk2MjIxMjIyMTNGRTEyMjIxMjIyMTNGRTEyMDJFMQorOjIwMEZBMDAwNDA5MDMwRDAyMDk0RkQxNDBCN0UwRDEwMTExMDM1MTBENTEwMTkyODE1MjgxMzI4MTE0NDExNDYxMTg0MTEwMEEwCis6MjAwRkMwMDAwNDQwMDQ0MDdGRjgwNDQ4MDQ0ODNGRjgyNDQ4MjQ0MDNGRkMwNDQ0MDQ0NDA4NTQwODQ4MTA0MDIwNDA0MDAwMEMKKzoyMDBGRTAwMDAxMjAwMTEwN0ZGRTAxMDAxRkY4MTEwODExMDgxRkY4MTEwODExMDgxRkY4MTEwODExMDgxMTA4MTEyODEwMTBGNAorOjIwMTAwMDAwMTAwMDEzRkMxMDQwRkM0MDEwNDAxNDQwMUJGRTMwNjBEMDYwMTBBMDEwQTAxMTIwMTEyMjEyMjI1NDFFMjAwMDFFCis6MjAxMDIwMDAxMDIwMTAyODEwMjRGRkZFMjAyMDI5RkM0OTI0RkQyNDA5RkMwOTI0M0QyNEM5RkMwOTI0MDkyNDA5MjQwOTJDMTAKKzoyMDEwNDAwMDEwODAxODQwMTdGRTM0ODgyNEM4NjQ4OEE1N0UyNTA4Mjc0ODI1MjgyNTI4MjUwODI5MDgyOTI4MzExMDAwMDBCNgorOjIwMTA2MDAwMDgyMDBDMTAzODRDQzQ4ODAzMDAwNkMwMTgzMEVGRUUwMTAwMDEwMDBGRTAxMTA4MDkxMDA5MjBGRkZFMDAwMDI1Cis6MjAxMDgwMDAwNDIwMTgxODY2NjQwMTgwMDY2MDc4MUUwMDY4MEY4MDA4MDAwRkZDMDg0MDEwNDAxMDQwMjA0MEMwNDAwMDQwMjMKKzoyMDEwQTAwMDAwMjAzQzI4MjQyNDI3RkUzQzIwMjVGQzI1MjQyNUZDM0QyNDI1MjQyNUZDMjUyNDI1MjQ0NTI0NTUzNDg5Mjg1OAorOjIwMTBDMDAwMDA0MDc4MjA0QkZFNEE0NDdBNjQ0QTQ0NEFGRTRCNDQ0QTY0N0E1NDRBNTQ0QTQ0NEE0NDRBNDRBQTU0OTQ0ODgwCis6MjAxMEUwMDAwMTAwMDA4MDNGRkUyNDEwMjYxMDI0MTAyNUZFMkMxMDM1MTAyNDkwMjREMDI0OTA0NDEwNDQxMDg0NTAwNDIwRjQKKzoyMDExMDAwMDAxMDAwMDgwM0ZGRTI0MTAyN0ZFMkM5MDM0OTAyNDUwMjRBMDJGRkMyOTQ0MkFBNDI4ODQ0OTQ0NEEzNDg4MDg1MworOjIwMTEyMDAwMDQyMDA0MjAwNDIwN0ZBMDA0MjAwNDMwRkZBQzA0MjYyNDI0MjdBMDI0MjAyNDIwNTQyMDRDMjA4N0ZFMDAwMEZCCis6MjAxMTQwMDAwMDAyN0ZDMjAwMTIzRjkyMjA5MjIwOTIzRjkyMDAxMjdGRDI0NDUyN0ZEMjQ0NTI0NDQyN0ZDQTQwNDQwMDAwMDEKKzoyMDExNjAwMEZGRkUwNDQwN0ZGQzQ0NDQ3RkZDMTIwMDJCRkM0QzAwOUJGODMyNDg1M0Y4OTEwMDEzRkMxNTA4MTBGMDE3MEVGMQorOjIwMTE4MDAwMDAxMEY4MTA4QkY0ODgxNEFGRkVBODkwQTg5MEFBOTBBQUYwQUE5MEFBODgyMjhBNTNFQTRFMDY4ODAyMDAwMEY4Cis6MjAxMUEwMDAwODAwMEZGQzEwMDAyRkY4NDgwODBGRjgwODA4MEZGODA0MDAwN0Y4MEMxMDEyNjAyMTgwMDY2MDE4MUU2MDA0NDUKKzoyMDExQzAwMDEwNTAxODQ4MUZGQzEwNDAyN0Y4MjQ0ODc3RjhBNDQ4MjdGODI0NDgyMDEwMkZGRTIxMTAyMTEwMjA1MDIwMjAwNAorOjIwMTFFMDAwMDgxMDBDMTAxMDEwMTAxMDI3RkUzMDEwNTQxMDkyMTAxMTEwMTE5MDExMTAxMDEwMTAxMDEwNTAxMDIwMDAwMDVECis6MjAxMjAwMDAwMTAwMDIwMDFGRjAxMDEwMUZGMDEwMDAxRkYwMTAxMDFGRjAwMTAwMDEwMEZGRkUwMTAwMDEwMDAxMDAwMTAwM0MKKzoyMDEyMjAwMDA0NDAwNjIwMEMxODE4MEMyMDI0NDgzMDA0MjAwNDQwMDI0MDAxODAwMTgwMDI0MDA0MjAxODE4MjAwRUMwMDQwQworOjIwMTI0MDAwMDEwMDNERkUyNTAwMjdGQzNEMDQyNUZDMjUwNDI1RkMzQzgwMjRGQzI0ODgyNTUwMjYyMDQ0NTA1NDhFOEIwNDE2Cis6MjAxMjYwMDAwNDAwMDdFMDA4MjAxMDQwM0ZGMDUwMTAxMDEwMTExMDExMTAxMTEwMTExMDEyOTAwMjQwMDQzMDE4MTg2MDEwMjAKKzoyMDEyODAwMDAyMDAwMTAwN0ZGRTQwMDRCRkY4MDAwMDFGRjAxMDEwMUZGMDAwMDAzRkY4MjEwODNGRjgyMTA4M0ZGODIwMDg3NgorOjIwMTJBMDAwMDA0MDQwNDAzMDQwMjA0MDAwNDAwMDYwRjA1MDEwNEMxMDQ4MTA0MDEwNDAxMjQwMTQ0MDE4NDAxMDQwMDA0MERDCis6MjAxMkMwMDAwMTA4NzkwODQ5MDg0QTA4NTJGRTY2MDg1MjA4NEE4ODRBNDg0QTQ4NkEwODUyMDg0MjA4NDIwODQyMjg0MjEwQjcKKzoyMDEyRTAwMDEwMDAxMDAwMTAwMDExRkNGRTA0MTIwNDIyMDQyNDA0NDRGQzI0MDQxODA0MDgwNDE0MDQyM0ZDNDIwNDgwMDBCRQorOjIwMTMwMDAwMjA1MDMwNDgyN0ZDNDA0MDRCRjhGMjQ4MjNGODQyNDhGQkY4MDI0ODAwMTAxQkZFRTA5MDAwOTAwMDUwMDAyMDRBCis6MjAxMzIwMDAwMTA4MDE4OEYxMDg5MjA4OTJGRTk2MDg5QTA4OTI4ODkyNDhGMjY4OTI0ODgyMDgwMjA4MDIwODAyMjgwMjEwQjYKKzoyMDEzNDAwMDAxMjAwRkZDRjEyMDk3Rjg5NDA4OTdGODk0MDg5N0Y4RjIwMDk3RkM4RTQ0MTQ0NDA0QTQwNTE0MDdGNDAwMENGNAorOjIwMTM2MDAwMDAwNDA3RkVGMDgwOTNGODkyMDg5Mzg4OTI3ODkyMDhGM0Y4OTAyNDAwN0UwN0E4MDAzQzAwNjAwMTkyMDYwRTAxCis6MjAxMzgwMDA0MDgwMzA0MDI3RkUwMDQwMDA0OEYwODgxMTEwMTNGMDEwMjQxMDQ4MTE5MDE2MzAxOEM4MTEwNjA2MDQwMDAwNjAKKzoyMDEzQTAwMDAwNDAwMDYwN0M0MDA0NDAwNEZFMDQ4ODdEODg0Mjg4NDA1MDQwNTA0NDIwNDg2MDUwOTA2MzBFNEMwNDAwMDA2MworOjIwMTNDMDAwMjAwMDI3QkUyNDg4RkNBODI3QTg3NEE4NkNCRUE3ODhBNDE4MjUxODI0OTgyNUE4MjZBQTI0NEEyMTg2MjAwMEVECis6MjAxM0UwMDAxMDAwMTFGRTIwMjAzQzIwNDAzRTdEMjA5MTIwMTEyMEZERkUxMDAyMTAwMjEwMDIxMDAyMTQwMjE4MEExMDA0QTYKKzoyMDE0MDAwMDA4MjAwNDQ4N0ZGQzAxMDAwMTEwM0ZGODAxMDAwMTA0RkZGRTAwMDAzRkY4MjQ0ODI0NDgyNDQ4RkZGRTAwMDAxOQorOjIwMTQyMDAwNDAwMDJGN0MyOTEwMDkxMDhGNTA0OTUwNTk3RTFGMTAyODEwMkEyOEM5Mjg0QjQ4NEM4QTQ5MEE0NjBFMDAwMDY2Cis6MjAxNDQwMDAwMDAwM0ZGQzAxMDAwMTAwMDEwMDAxMDBGRkZFMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMDAwNDgKKzoyMDE0NjAwMDA4MjAwODIwMDgyMDA4MjBGRkZFMDgyMDA4MjAwODIwMDgyMDBGRTAwODIwMDgyMDA4MjAwODIwMEZFMDA4MjA4OQorOjIwMTQ4MDAwMTAwMDExRkMxMDIwRkMyMDEwMjAzMDIwM0JGRTM0MjA1NDIwNTAyMDkwMjAxMDIwMTAyMDEwMjAxMDIwMTAyMDUyCis6MjAxNEEwMDAxMDg0MTA4NDEwODQxMDg0RkRGRTEwODQzODg0MzQ4NDU0RkM1MDg0OTA4NDEwODQxMDg0MTBGQzEwODQxMDAwQzkKKzoyMDE0QzAwMDIwNDAzRjdFMjg1MDQ0ODg4NTA4M0ZGQzAxMDAwMTAwMDEwMEZGRkUwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDBERAorOjIwMTRFMDAwMDAwMDNDMDAyNUZDMjQyMDI0MjAzQzIwMjQyMDI3RkUzQzIwMjQyMDI0MjAyNDIwNDQyMDQ0MjA1NDIwODgyMDM2Cis6MjAxNTAwMDAwODAwMDgwMDA4RkU3RTEwMDgxMDA4MTBGRjEwMDhGRTQ4MTA0RjEwNDgxMDQ4MTA0ODEwQjgwMDhGRkUwMDAwREUKKzoyMDE1MjAwMDAwNTAwMDQ4M0ZGQzIwNDAzRjQ4MjA0ODJGMzAyOTIwNEYzMjQwNEE4MDA2MDkwODI4ODQyODE2NjdGMDAwMDBGRQorOjIwMTU0MDAwMEMwOEYxRkMxMDIwMTQyMEZFMjAzMDIwMzAyMDVCRkU1NDIwOTAyMDEwMjAxMDIwMTAyMDEwMjAxMDIwMTAyMENCCis6MjAxNTYwMDAwMDQwN0M2MDA0NDAwNDQwRkVGRTI0ODgzRDg4MjY4ODNDNTAyNDUwMjcyMDNDMzBFNDU4MDQ4RTA3MDQwNDAwMUMKKzoyMDE1ODAwMDEwNDAwMDdDN0VDODI1MzBGRTQ4MDE4NjdDRjg0NDIwN0RGQzQ0MDA3REZDMTEyNEZEMjQxMTU0MTA4ODEzMDY5RAorOjIwMTVBMDAwMDAwMDNGRkMyMDA0MjA0NDI4NjQyNDQ0MjI4NDIxMDQyMkM0MjQ2NDI4MzQzMDE0MjAwNDIwMTQyMDA4MDAwMDFCCis6MjAxNUMwMDAwMDA0N0YwNDQxMjQ2MzI0NTUyNDU1MjQ0OTI0NDkyNDU1MjQ1NTI0NjMyNDQxMjQ0MTA0NDcxNDQyMDgwMDAwMDQKKzoyMDE1RTAwMDIwMDAyMUZFM0YwMjIxMEE0MThBN0Q1MkExMjIyMTIyRkQ1MjIxNEEyMThBMjEwMjI5MDIzMTAyMjEwQTAxMDQ4QQorOjIwMTYwMDAwMjAwMDMwMDAyMEZFM0YxMDQ4MTA4ODEwN0YxMDA4MTA0OTEwNDkxMDQ5MTA0OTEwNEYxMDc4RkUwMDAwMDAwMDNECis6MjAxNjIwMDAwMDAwM0MwMDI3RkUyNDIwM0MyMDI0MjAyNDIwMjQyMDNDMjAyNDIwMjQyMDQ0MjA0NDIwNTdGRTg4MDAwMDAwNTQKKzoyMDE2NDAwMDEwMDAxM0ZFMjIwMjIyMEE0QThBRkE0QTEyMzIyMjEyNDIzMkZBNEEwMjhBMDMwQTFBMDJFMjAyMDIwQTAyMDQyNgorOjIwMTY2MDAwMDEwMDIxMDgyMTA4M0ZGODAwMDAzRkY4MjAyODJDMjgyMjQ4MjE4ODIyNDgyNDI4MjgyODIwMDgyMDI4MjAxMDU0Cis6MjAxNjgwMDA0MTIwMjEyMDI3RkMwMTIwOTEyMDVGRkM1MTIwMjIxMDI3RTg0QTJFRDNFNDQyMDA0MjA4NDIwODQxRjgwMDAwNjgKKzoyMDE2QTAwMDEwMDAxMDAwMTNGQ0ZDNDAxMDQwMzA0MDM4NDAzNDQwNTQ0MDUwNDA5MDQwMTA0MDEwNDAxN0ZFMTAwMDEwMDA0QQorOjIwMTZDMDAwMTA0MDFGN0UyODkwNDUwODdGRkUwNDIwMDdFMDAwMDAzRkZDMjAwNDI3RTQyNDI0MjdFNDIwMDQyMDE0MjAwODUzCis6MjAxNkUwMDAwMTAwMUZGMDEwMTAxRkYwMTAxMDFGRjAxMTEwMDIwNEZGRkUwODIwMTExMDIxMEVERkY0MDEwMDAxMDAwMTAwMEEKKzoyMDE3MDAwMDAyMDAwMTAwRkZGRTAwMDAwRkUwMDgyMDBGRTAwMDAwN0ZGQzQwMDQ0RkU0NDgyNDQ4MjQ0RkU0NDAxNDQwMDgyQQorOjIwMTcyMDAwMDEwMEZGRkUxMDEwMUZGMDAwMDA3RkZDNTAxNDVGRjQwMDAwMUZGMDEwMTAxRkYwMTAxMDFGRjAxMDEwMTAzMDdECis6MjAxNzQwMDAwODIwMDQzMDAyNDA3RkZDMDEwMDAxMDAxRkY4MDEwMDAxMDBGRkZFMDAwMDI4OTAyNDQ4NDY2NjQ0NDQwMDAwMDAKKzoyMDE3NjAwMDExMDQxMDg4MTA5MDkzRkU1NDIwNTgyMEZERkMzMDIwMzgyMDU3RkU1MDAwNTJBNDkyNTIxMjUyMTQ1MjEwMDBBNQorOjIwMTc4MDAwMTA0MDEwMjAxM0ZFRkMwMDExRjgxNTA4MTlGODMwMDBEM0ZDMTIwNDEyRjQxMjk0MTJGNDEyMDQ1MjE0MjIwODE4Cis6MjAxN0EwMDAyMDQwMjAyMDNCRkMyMDAwNDFGODc5MDhBMUY4MjAwMEZCRkMyMjA0MjJGNDIyOTQyMkY0MkEwNDMyMTQyMjA4MjIKKzoyMDE3QzAwMDBDNDA3MDIwMTNGRTEwMDBGRUY4MTA4ODM4RjgzNDAwNTNGRTUyMDI5MkYyMTI5MjEyRjIxMjAyMTIwQTEyMDQwMworOjIwMTdFMDAwMTEwMDE5MDAxMTAwMUZGQzIxMDA0MTAwMDEwMEZGRkUwMDAwMUZGMDEwMTAxMDEwMTAxMDFGRjAxMDEwMDAwMDk1Cis6MjAxODAwMDAwMDAwN0ZGQzAwMTAxRjkwMTA5MDFGOTAxMDkwMDAwNEZGRkUwMDEwMUY5MDEwOTAxRjkwMTA5MDAwNTAwMDIwODAKKzoyMDE4MjAwMDAwMjA3RjIwMDI0MDdBN0U0QTg0N0IyODAyMjBGRkEwMDIyMDdBMjA0QTIwNEE1MDdBNDgwMjhDMEIwNjA0MDQ1NAorOjIwMTg0MDAwMjIwMDIxN0UyNDAyMjQ4MkZDRkEyNThBMkU1MjM0NzI2NDhFQTdGQTI0OEEyNDhBMjRGQTI0MDJBNDBBNDQwNDA3Cis6MjAxODYwMDAwMjAwMDI0MDAyMjAwMjAwN0ZGQzAyMTAwMjE4MDExMDAxMjAwMEMwMDA4MDAzNDAwQzI0NzAxNDAwMEMwMDAwRTQKKzoyMDE4ODAwMDA4MjAwODQwMThGODI0QzgyMkE4NDA4OEZFQTgwMDkwMDBGQzdDMDQ0NDA0NDVGNDQ0MDQ3QzA0NDQxNDAwMDhFRgorOjIwMThBMDAwMDA4MDc4ODA0OEY4NDk4ODdBODg0ODUwNDgyMDQ4NTA3ODhFNEIwNDRERjg0OTA4NDkwODQ5MDhBOUY4OTEwODNFCis6MjAxOEMwMDAwMDgwMDA0MDFGRkUxMjAwOTIwMDUzRkM1NDAwMTgwMDMzRjA1MDIwOTA0MDEwODAxMTAyMjIwMjIzRkU0MDAwNDEKKzoyMDE4RTAwMDA4MDQwNDA0N0Y4NDQ4QTQzRjI0MDgyNDNGMjQwODI0N0ZBNDAwMjQzRjI0MjEwNDIxMDQzRjE0MjEwODAwMDA1NworOjIwMTkwMDAwMDQ0MDA0NDBGRkZFMDQ0MDA3QzAwMTAwMUZGMDExMTAxMTEwMUZGMDAxMDBGRkZFMDEwMDAxMDAwMTAwMDEwMEQ0Cis6MjAxOTIwMDAwNDQwRkZGRTA0NDAxRkYwMTAxMDFGRjAxMDEwMUZGMDA4MDAwRkZDMTEwNDMyODRENDQ0MUZFNDEwMTQwMDA4OTAKKzoyMDE5NDAwMDEwODAxMDgwMTFGOEZEMDgxMjkwMzQ1MDM4MjA1NEQ4NTcwNjkxRjgxMTA4MTEwODExMDgxMTA4MTFGODExMDg0MworOjIwMTk2MDAwMTAyMDEwMjAxMDUwN0M1MDU0ODg1NTA2NTZGQTU0MDA3QzAwMTFGODE5MDgxNTA4MUYwOEU1RjgwMTA4MDAwMDMwCis6MjAxOTgwMDAyMDAwMTdGQzAyMDQ0M0U0NDQ0NDRBODQ0MTA0NDZDNDc4MzQ0N0M0NDQ0NDQ0NDQ0N0M0NDAwNDQwMTQ0MDA4OTAKKzoyMDE5QTAwMDAwMDA3QkZDNDgwMDUxRjg1MTA4NjFGODUwMDA0RkZFNEQxMjZDQTI1NUZBNDQ0MjQ0NDI0NDQyNDQ0QTQ0MDRBQworOjIwMTlDMDAwMTA4MDEwODAyMEZDM0QwNDQxODg3RTUwOTAyMDEwNTBGQzhFMTMwNDExRjgxMTA4MTUwODE5MDgxMUY4MDAwMEQ5Cis6MjAxOUUwMDAwMTAwMDEwMDAyODAwMjQwMDQyMDA5MTgxMTBFNjEwNDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMDAwNTEKKzoyMDFBMDAwMDA0MDAwNDAwMDdGMDBDMjAxMjIwNjI0MDAxODAwNjYwMTgxRUVGRjQwODEwMDgxMDA4MTAwODEwMEZGMDAwMDA2OAorOjIwMUEyMDAwMTA0MDEwNDAyMEEwMjA5MDQ5MDhGMjBFMTVGNDIwMDA0MDAwRjlGODAxMDgwMTA4MTkwOEUxMDgwMUY4MDAwMEQ2Cis6MjAxQTQwMDAxMDAwMTFGODExMDhGRDA4MTFGODExMDgzOTA4MzVGODUxODQ1MTRDOTEzMDExMTAxMTQ4MTE4RTExMDQxMDAwNEUKKzoyMDFBNjAwMDAwMDA3REZDNDUwNDQ1MDQ0NUZDNDUwNDdEMDQxMUZDNTEyMDVEMjQ1MTE4NTExMDUxMDg1RDQ4RTE4NjAxMDQxRAorOjIwMUE4MDAwMTA4ODEwODhGRTg4MTA4ODdERkUxMDg4MTA4OEZDODgxM0ZFMzg4ODM0ODg1Njg4OTQ4ODExMDgxMTA4MTIwOEY2Cis6MjAxQUEwMDAwMDAwN0ZGRTAxMDAxRkY4MTEwODFGRjgxMTA4MTEwODFGRjgwOTAwMDUwMDAyMDAwNTgwMTg2MEUwMUUwMDA4MDUKKzoyMDFBQzAwMDAxMDAwMDgwM0ZGRTIwODAyRkY4MjA4ODNGRkUyMDg4MjA4ODJGRjgyMDg4MjE0MDQyMjA0NDEwODgwQzEwMDhCQQorOjIwMUFFMDAwMDQyMDdGRkMwMTAwMUZGODAxMDBGRkZFNDQyMjNGRkMwMTAwM0ZGQzAxMDBGRkZFMDI4MDA0NjAxODFDNjAwOEQ0Cis6MjAxQjAwMDAyMDAwMjdGRTIwMjAyM0ZFRkEyMjIyMjIyM0ZFMjIyMjIyMjIyM0ZFM0QyMEUwQTAwMDYwMDBEMDAzMEUwQzA0QzcKKzoyMDFCMjAwMDAwMjBGRTIwNDQyMDQ0MjQ3Q0E2NDRBNDQ0QTg3RDIwNDQyMDQ0MjA0RTUwRjQ0ODA0NDgwNDg2MDQ4NDA1MDAwMworOjIwMUI0MDAwMjAwMDIzRkUyMDIwRkMyMDIxRkM3MTI0NjlGQ0E5MjRBMUZDMjIyMDIxMjAyMEMwMjBDMDIzMzAyQzBFMjAwNDczCis6MjAxQjYwMDAwMDAwM0ZGQzAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwRkZGRTAwMDAwMDAwMjIKKzoyMDFCODAwMDAxMDAwMTgwMDEwMEZEMDAxM0ZFMTMwODE1MDgxOTA4MTA5MDE0OTAxODYwMjA2MEMxOTAwNjBFMzgwNDAwMDA3RQorOjIwMUJBMDAwMDAyMDAwMjA3RjIwMDgyMDBCRkMwODI0MDgyNDA4NDQwOTQ0MEU0NEYwODQ0MDg0MDEwNDAyNzgwNDEwMDAwMDA5Cis6MjAxQkMwMDAwNDQwMDQ0MDNGRkMwNDQwMDQ0MDdGRkUwNDQwMDgyMDExMTAyMTA4QzEwNjExNTAxMTI4MjEyODA1MDAwMjAwRDYKKzoyMDFCRTAwMDAyNDAwMjIwRkZGRTA0OTAwNEU0MEI4NDM0N0NDNDQwM0ZGQzA0NDA3RkZFMDA0MDA4MjAxMDE4NjAwODAwMDBEMQorOjIwMUMwMDAwMTAwMDE5MTAxMTEwMjExMDM3RkM2MTEwQTExMDIxMTAyMTEwMkZGRTIxMjAyMzEwMjIxODI0MEMyODA4MjAwMDI3Cis6MjAxQzIwMDAwODAwMTBGQzNFMDQyMjA0M0UwNDIyN0MzRTQwMjI0MDdFN0MwNjA0MEEwNDEyMDQyMjA0QzIwNDBBMjgwNDEwMEUKKzoyMDFDNDAwMDAwMDAwNDQwMDY0MDA0NDAwODIwMDgxMDEwMTgyMjBFNDMwNDAyMDAwNDIwMDgxMDExRjgzRjE4MTAxMDAwMDAxOQorOjIwMUM2MDAwMDEwMDAwODAzRkZDMjAwNDRGRjgwODEwMDgxMDBGRjAwODEwMDAwMDFGRjgxMDA4MTAwODEwMDgxRkY4MDAwMDgwCis6MjAxQzgwMDAwMDAwM0ZGODAwMDgwMDA4MUZGODEwMDAxMDAwMTAwMDFGRjgwMDA4MDAwODAwMDgwMDA4MDAwODAwNTAwMDIwMDcKKzoyMDFDQTAwMDAwMDAwMUY4RkQwODExMDgxMTA4MTE4ODExNDgxMTI4MUQyODMxMDhDMjA4MDIwQTA0MEEwODBBMTAwNjAwMDAzRgorOjIwMUNDMDAwMDAwMDNGRjgwMTAwMDEwMDdGRkMwMTAwMDExMDdEMjAwNUMwMDk0MDA5MjAxMTE4MjEwRUMxMDQwNTAwMDIwMDQ2Cis6MjAxQ0UwMDAyMDkwMjA5MDIwOTBGQzkwMjNGQzIwOTAyODkwMzA5MEUwOTAyN0ZFMjAwMDIxMTAyMTA4MjIwNkE0MDI0MDAwRTQKKzoyMDFEMDAwMDNGRjgwMTAwMDEwMDdGRkUwMDAwMUZGMDEwMTAxMTEwMTExMDExMTAxMTEwMTI4MDA0NDAwODMwMTAxODIwMTBGNAorOjIwMUQyMDAwMDAwMDA0MjAwNDIwMDQyMDdGRkMwNDIwMDQyMDA0MjAwNDIwRkZGRTA0NDAwNjIwMEMxMDA4MTgxMDBDMjAwODQ1Cis6MjAxRDQwMDAxMDQwMTA0MDIwNDAzRTgwNDBGRTdEMDI5MjQyMTA0MkZFODIxMDkyMTFGQTEwMEExMDAyMTQwMjE4MEExMDA0M0QKKzoyMDFENjAwMDA4MDAwODAwMEZGQzA4MDQxMjA0MjMwNDQyMDQwNDg0MDQ0NDA4MjQxM0Y0MUMyNDAwMDQwMDI0MDAxNDAwMDgzMgorOjIwMUQ4MDAwMjEwMDExMDAxMTAwMDNGQzhBMDQ0QzA0NTA4NDEwODQxMTA0MjIyNEU3RjQyMDE0MjAwNDIwMDQyMDI4MjAxMDkxCis6MjAxREEwMDAwNDQwMDQ0MEZGRkUwNDQwMTQ0MDFGRkMxMDA0MjAwNDRGQzQ4ODQ0MDg0NDA4NDQwRkM0MDAwNDAwMTQwMDA4NDkKKzoyMDFEQzAwMDA1MDA0NTAwMjkwMDEzRkUzMjAyNEMwMjg5RjIxOTEyMjkxMjQ5MTI4OUYyMDkwMjA4MDIwODA0NTAxNDIwMDg5OQorOjIwMURFMDAwMTAzQzEzQzAxMjAwMTIwMEZFMDAxM0ZFMTIwMDEyMDAxMkZDMUU4NEYyODQ0NDg0MDQ4NDA4RkMxMDg0MDAwMDVGCis6MjAxRTAwMDAxMDQwMTA0MDEwODBGRUZDMTEwNDMyNDQzODQ0NTQ4NDU0QTQ5MTE0MTNGNDEwMTQxMDA0MTAxNDEwMDgwMDAwQTEKKzoyMDFFMjAwMDAwODA3Q0MwNDQ4MDU0RkU1NTAyNTUwMjU2NDI1NDQyNTRBMjU1MTIxMUZBMjgxMjI0MDI0NDAyODAxNDAwMDg0QQorOjIwMUU0MDAwMjA0MDIwNDAzQzdFNDQ4NDg1NDg3NjMwNTQ2MDU1QTA1NDdFNTQ4NDc1NDQ0NjI4MDQxMDI4MjAxMEMwMDMwMDI0Cis6MjAxRTYwMDAwMTAwN0ZGQzAxMDAxRkYwMTAxMDFGRjAwMTAwM0ZGQzA4MjAwNDQwRkZGRTAxMDAzRkZDMDEwMDAxMDAwMTAwQzMKKzoyMDFFODAwMDA0NDAwNDQwRkZGRTI0NDAzMDIwMjAyMEZERkUyNDIwMjQyMDQ5RkM0OTA0MzEwNDExMDQyOUZDNDUwNDg0MDA3OAorOjIwMUVBMDAwMDA0MDAwNDBGODQwODg0MDhGRkU4ODQwODg0MDg4NDA4QkZDRkEwNDhBMDQ4MjA0MDIwNDAzRkMwMjA0MDAwMDE5Cis6MjAxRUMwMDAxMDQwMUY3RTI4OTA0NTA4OTQwMDEzRkVGRTIwMTJGQzE2QTQxQUE0RjJBNDUyQjQxMkE4MTIyMDUyMjAyM0ZFQUMKKzoyMDFFRTAwMDA4NDAwQzQwMTA0MDEwNDQyN0ZFMzA0MDYwNDBBMDQwMjNGQzIyMDQyMjA0MjIwNDIyMDQyM0ZDMjIwNDAwMDA5OQorOjIwMUYwMDAwMjA0MDEwNDAxMDQwMDA0MDhGRkU0ODQwNTA0MDEwNDAxM0Y4MjIwOEUyMDgyMjA4MjIwODIyMDgyM0Y4MjIwOEFBCis6MjAxRjIwMDAwMDAwN0UzQzA1RDAwOTUwMTE1MDE1NTAxOTUwMzE1MEQxNTA1MTQ4MTE0ODExNjQxMjU2MTJGQTU0NTAyMDAwNDkKKzoyMDFGNDAwMDEwMjAxODIwMTAyMDExRkVGQzIwMjQyMDI0MjAyNDIwNDVGQzQ5MDQyOTA0MTEwNDI5MDQ0N0ZDODUwNDAwMDAyOQorOjIwMUY2MDAwMTAyMDEwMjBGRjIwMTBGQzdFMjAwMDIwN0VGQzQyODg0Mjg4N0U1MDQ0NTAyODIwMEU1MEYxOEUwRTA0MDAwMDcxCis6MjAxRjgwMDAwMTAwMDEwMDAxMDBGRkZFMDEwMDAxMDAwMTAwMDEwMDFGRjAxMDEwMTAxMDEwMTAxMDEwMUZGMDEwMTAwMDAwN0YKKzoyMDFGQTAwMDAxMDAwMTAwMUZGODExMDgxMTA4MUZGODAxMDgwMUZDM0YwODAwMDAzRkY4MjQ0ODI0NDgyNDQ4RkZGRTAwMDBGQQorOjIwMUZDMDAwMUZGMDEwMTAxRjEwMTExMDExMTA3RkZFNDAwNDBGRjAwODEwMEZGMDA4MTAwRkYwMDgxMDA4MTAwODUwMDgyMEMzCis6MjAxRkUwMDAwODQwMEMyMDE5MTgyMTA4NDEwMDAyODAwNDQwMDgyMDEwMTgyRkY2QzgxNDA4MTAwODEwMEZGMDA4MTAwMDAwNzQKKzoyMDIwMDAwMDNDRjAyNDkwMjQ5MDI0OTAzRDEwMjYwRTI0MDAzREZDMjQ4ODI0ODgyNDUwMjQ1MDQ0MjA1NDUwODg4RTAxMDQzNworOjIwMjAyMDAwMTA0MDEwNjAxMDQwMTA0MEZFRkUxMDg4MTA4ODdEODg0NjUwNDQ1MDQ0MjA0NDIwN0M1MDQxOEUwNjA0MDAwMDc4Cis6MjAyMDQwMDAwMDAwN0VGRTQwMTA0MDIwNUVGQzUyODQ1Mjk0NTI5NDU2OTQ1MDk0NTI5NDU0OTQ1ODI4OTBDNjAzMDIwMDAwRTEKKzoyMDIwNjAwMDAwMDA3RkZDNDEwNDQxMDQ1RkY0NDEwNDQxMDQ0RkU0NDgyNDQ4MjQ0ODI0NEZFNDQ4MjQ0MDA0N0ZGQzQwMDQ2NQorOjIwMjA4MDAwMDEwMDAwODAzRkZDMjAwNDNGRkMyMjgwMjQ0MDI3RkUyQzQwMzdGQzI0NDAyN0ZDNDQ0MDQ0NDA4N0ZFMDQwMDQzCis6MjAyMEEwMDAwMDA0MEY4NDc0MDQwNDI0MDQyNDdGQTQwNDI0MDQyNDNGMjQyMTI0MjEyNDIxMDQyMTA0M0YwNDIxMTQwMDA4OTcKKzoyMDIwQzAwMDAwMTAwMUY4MUU0MDEyNDAxMjQwMTIyMDEyMjAxMjIwMTIyMDEyMTAxMjkwMjI1MDIyQTg0MzI4NDIwNjgwMDRGNgorOjIwMjBFMDAwMDAwNDNGMDQyMTA0MjEyNDNGMjQyOTI0MDgyNDdGQTQ0OEE0NTRBNDUyQTQ2Mjg0NDA4NDQyOTQ0MTA4MDAwMDhECis6MjAyMTAwMDAwMTAwM0ZGRTIwMDQ0MDA4M0ZGQzAyMDAwRkYwMEM5MDBBNTA3RkZFMDgyMDNGRjhDMjJFMDIyNDA0QTAwODQwMDUKKzoyMDIxMjAwMDEwNDAxMDQwMTA0MDEzRkNGQzQwMTA0MDE3RkUxODQwMzA0MEQwNDAxM0ZDMTA0MDEwNDAxMDQwNTdGRTIwMDBCMworOjIwMjE0MDAwNDEwODIxMDgyMTA4RkJFODA5MDgxMTA4MkZFODY5MENCMTBBMkJFQTI5MDgyMTA4MjFFODJGMDgyMDA4MjAwODkxCis6MjAyMTYwMDAwMDc4M0Y4MDAxMDBGRkZFMDEwMDA5MjA3OTI4MDkzQzA5MjAwOTI0MzkyNkM5M0MwMTAwMDEwMDAxMDAwMDAwNUQKKzoyMDIxODAwMDEwMDAxMEZDMTA4NEZFODQxMDg0MTBGQzE0MjAxODIwMzFGRUQwMjIxMDIyMTA0MjEwNDIxMDgyNTEwQTIyMDRGNworOjIwMjFBMDAwMjAwMDI3RkMyMjA4MzExMEE4QTBBODQwQTBCMDIzNEUyQzQ0MjA0MDI3RkMyMDQwMjA0MDJGRkUyMDAwMDAwMDgwCis6MjAyMUMwMDAxMDQwMTAyMDEzRkVGQTA0MTAwMDMxRjgzOTA4NTUwODUxRjg5MTAwMTFGQzExMDQxMTA0MTEwNDExRkMxMTA0NTEKKzoyMDIxRTAwMDA4MjAwNDMwMDYyMDA0NDg3RkZDMDEwMDAxMDAwMTAwRkZGRTAxMDAwMjgwMDQ0MDA4MjAxMDMwMjAxQzQwMDhFMworOjIwMjIwMDAwMDIwMDAxMDAzRkZFMjAwNDRGRTgwODIwMDgyMDBGRTAwODAwMDgwMDBGRjAwODEwMDgxMDA4MTAwRkYwMDgxMDc2Cis6MjAyMjIwMDAwMDAwM0ZGRTIwMDQ0MDAwM0UwODAwMDgwMEZFN0YwODEyNDgxMjI4MTIwODIyMjgyMjEyNDIwMjgxRkUwMDAwM0IKKzoyMDIyNDAwMDAwMDAwMUZDN0QwNDA1MjQ0NTI0NDUyNDI5MjQxMTI0MjkyNDI1NTQ0NjUwNDQ5MDgwOTIwMTEyMDIwRTA0MDAxQQorOjIwMjI2MDAwMjA4MDNFRkM1MTIwOEExMDAxMDA3RkZFNDAwNDFGRTAxMDIwMUZFMDEwMDAxRkYwMTAxMDEwMTAxRkYwMTAxMEZCCis6MjAyMjgwMDAyMDQwMjAyMDIwMjA3REZFNDUwNDQ4RjhBMDg4MjA4ODIwRjgyMDgwMjBGQzI0ODQyODg0MzBGQzIwODQwMDAwOTIKKzoyMDIyQTAwMDQwOTA0N0ZFN0M5MDUzOUM5Mjk0MTNEQ0ZEMjAxMUZDMTMyMDU1RkM1NTIwNTVGQzU1MjA1RDIwNzFGRTAxMDAyMworOjIwMjJDMDAwMjAwMDIzRjgyMjQ4MkZGRTMyNDhBQTQ4QUJGOEEwMDAyM0Y4MjI0ODIyNDgyMjQ4MjI0ODIwQjAyMzA4MkMwNDhGCis6MjAyMkUwMDA0MTEwMkZGRTAxMTA5N0JDNTRBNDU3QkMxMjQwMjNGQzI2MjAyQkZDRTIyMDIzRkMyMjIwMjNGRTIyMDAwMDAwNkQKKzoyMDIzMDAwMDAwMDAxRkYwMTExMEZGRkUxMTEwMUZGMDAwMDAxRkYwMTAxMDExMTAxMTEwMTExMDEyOTAwNDYwMTgxQzYwMDgyQworOjIwMjMyMDAwMDEwMDIxMTAxOTE4MEQxMDA5MjAwMTA0N0ZGRTA0NDAwNDQwMDQ0MDA0NDAwODQyMDg0MjEwNDIyMDNFNDAwMERFCis6MjAyMzQwMDAwMTAwMDA4MDNGRkUyMDAwMjAwMDIwMDAyMDAwMjAwMDIwMDAyMDAwMjAwMDIwMDA0MDAwNDAwMDgwMDAwMDAwOUYKKzoyMDIzNjAwMDAwMDA0OTAwMjZGQzI2MjAxOTIwMDEyMEUzRkMyNTIwMjkyMDIxMjAyMTIwMjVGRTIyMDA1MDAwOEZGRTAwMDA0MQorOjIwMjM4MDAwMDA0MDAwODBGQkY4MjI0ODIyNDgyM0Y4RkE0ODIyNDgyM0Y4MjBBODI4QjQzMTNDQzEyMjAyMjIwNDFFMTgwMDgyCis6MjAyM0EwMDAxMDAwMTFGQzExMDQ3RDI0MTEyNDExMjQxMTI0RkYyNDExMjQyODUwMjQ1MDI2OTI0NDkyNDExMjgyMEUwNDAwRjIKKzoyMDIzQzAwMDAxMDAwMTAwM0ZGQzAxMDAwMTAwMDEwMEZGRkUwMTAwMDEwMDdGRkMwMTAwMDEwMDAxMDAwMTAwRkZGRTAwMDA0MgorOjIwMjNFMDAwMDAyMDdFMjAxMDIwMTFGQzIwMjAyMDIwM0RGRTY0MDBBNDIwMjQyMDI1RkMyNDIwM0MyMDI0MjAyN0ZFMDAwMDkxCis6MjAyNDAwMDAwODAwMDgwMDBCRkM0ODA0NDgwNDQ4MDQ0ODA0NDlGQzQ4MDQ0ODA0NDgwNDA4MDQxMDA0MTNGQzIwMDA0MDAwQkQKKzoyMDI0MjAwMDA4MDAwRkUwMTAyMDEwNDAzRkY4NTEwODkxMDgxRkY4MTEwODExMDgxRkY4MDEwMDAxMDIwMTAyMDBGRTAwMDA5NworOjIwMjQ0MDAwMjAwMDFCRkM0OTA0NDEwNDRGRTQ0MTA0NUZGNDQxMDQ0MTA0NEZFNDQxMDQ0MTA0NUZGNDQwMDQ0MDE0NDAwODZFCis6MjAyNDYwMDAxMDQwMTA0MEZFNDAyMDQwMjlGODQ4NDg0ODQ4RkU0ODA4NDgwODQ4MUU4OEU4OEEwODhBMDkwQTA5MEUwQTAwMTkKKzoyMDI0ODAwMDAyMDAwNDAwM0ZGODIxMDgzRkY4MjEwODIxMDgzRkY4MDI4MDAyOTAwNEE4MDRGQzA4ODQxMDgyNjA3RTAwMDA1QQorOjIwMjRBMDAwNDA4MDIwRkUzMDg0MjEwODAzRkVFMjAwMjIwMDIyN0MyMjQ0MjI0NDIyNDQyQTVDMzI0ODI0NDIwODNFMTAwMEQwCis6MjAyNEMwMDAwMDgwM0U5MDAyQTAyNDQ4MTQ1MDA4MjAzN0QwQzEwRTAxMDQ3RkZDMDEwMDAyNDAwNDIwMDgxODMwMENDMDA0MzcKKzoyMDI0RTAwMDIwNDAyMDQwMjA0MDIzRkNGQzQwMjA0MDc3RkU2ODAwNjg0MEEwNDAyM0ZDMjA0MDIwNDAyMDQwMkZGRTIwMDAxMAorOjIwMjUwMDAwMTAwMDExRkUxMTAwRkQwMDExMDAxMUZDMzkwNDM1MDQ1NTA0NTFGQzkxMDAxMTAwMTEwMDExMDAxMUZFMTAwMDcxCis6MjAyNTIwMDAwMDgwNzhGQzQ5MDg0QTEwNEJGRTdBMDAxMjAwMTJGODVBODg1Mjg4NTJBODUyOTA1QTgyRTQ4MjA4N0UxMDAwQUQKKzoyMDI1NDAwMDAxMDAxRkYwMTExMDFGRjAwMTAwRkZGRTAwMDAxRkYwMTAxMDExMTAxMTEwMTExMDEyOTAwNDQwMTgzODYwMTAwNQorOjIwMjU2MDAwMDQwNDA0MDQwQTA0MTEyNDIwRTQ1RkE0ODAyNDAwMjQ3RkE0MDgyNDA5MjQxMDg0MjdDNDdDOTQyMDA4MDAwMDA2Cis6MjAyNTgwMDAyMDAwMjFGQ0ZEMDQyMUZDMjEwNDUxMDQ1MUZDRkMwMDExMTAxMUQyMUQxQ0YxMTAxMTUyMTM5MjExMUUxMDAwOTgKKzoyMDI1QTAwMDQwODAyMDQwMkZGRTAxMjA4MjE4NDQ4ODUxMjAxM0YwMTA5MDIxODgyMjUwRTYyMDNBMTAyMjg4MjMwRTIyMDRDNworOjIwMjVDMDAwMTAwMDExRkMxMTA0RkRGQzExMDQzOTA0MzVGQzUwMDA1MTIwOTEyNjExQjgxMTIwMTEyMDExMjIxMUEyMTExRTk1Cis6MjAyNUUwMDAyMDAwMjFGQzNEMDQyMTA0NDEwNDdERkNBMDIwMjNGRUZBMjIyMjUyMjI0QTIyODYyMjAyMkEwMjMyMEEyMjA0NDMKKzoyMDI2MDAwMDEwMDAwODdDN0Y0NDAwNDgzRTQ4MjI1MDNFNDgwMDQ0M0Y0MjAyNDIwNDQyMDc1QTdDNDQwNDQwMTQ0MDA4NDA0RAorOjIwMjYyMDAwMDAwMDdGRkM0MDA0NUZGNDQxMDQ0MTA0NDEwNDRGRTQ0MTQ0NDEyNDQxMjQ1RkY0NDAwNDQwMDQ3RkZDNDAwNDlECis6MjAyNjQwMDAwMDAwMUZGMDExMTAxRkYwMTExMDFGRjAwMTAwMDEwMEZGRkUwMzgwMDU0MDA5MzAzMTBFQzEwNDAxMDAwMTAwMDUKKzoyMDI2NjAwMDAxMDA3RkZFMTExMDFGRjAxMTEwMUZGMDAxMDA3RkZFMDdDMDE5MzA2MjhFMDQ1MDE4MjA2QTE4MEMwNjA4MDBENgorOjIwMjY4MDAwNDAxMDIwMTAzMDEwMjAxMDA3RkUwMDEwMDIxMEUxMTAyMTkwMjExMDIwMTAyMDUwMjAyMDU4MDA4N0ZFMDAwMDkzCis6MjAyNkEwMDAwMDQwMDA0MEYwQTA5MTE4OTIwRTlDMDQ5M0Y4OTAwMEYzRjg5MjA4ODIwODAyMDgwMjA4MDNGODAyMDgwMDAwREUKKzoyMDI2QzAwMDAwNDA3QzIwNDQyMDc1RkU1NDQwRkU0ODgyODg3REYwNDQyMDdDNDQ0NTg4N0MxMDQ0Mjg0NEM0NEYwNjQ0MDQ2OAorOjIwMjZFMDAwMDA0MEZDMjAwN0ZFMDg0MDEwODAxMTA4MTNGODE4MTBGMDI0NTA0ODExOTAxNjMwMTA0ODUxODQyNjA0MDAwMDZCCis6MjAyNzAwMDAyMTAwMTEwMDExRkUwMjAwOTdGODUyODg1MjQ4MTIwODJGRkUyMjg4RTI0ODIyMDgyM0ZFMjAwODIwMjgyMDEwNkQKKzoyMDI3MjAwMDEwMDAxRkY4MjAwMDVGRjAwMDAwN0ZGMDA0MTAwMjEwM0ZEMDA4OTAxRjEwMDI1MDBDOEE3MzBBMEM4NjcwNDJFRgorOjIwMjc0MDAwMDIwMDAxODBGRkZFMDEwMDAyMjAwNDMwMDg2MDFGQzgwOTFDMDIzMDBDNjA3MEUwMDMxODBDMEM3MDA0MDAwMDk5Cis6MjAyNzYwMDAwMjAwMDEwMDdGRkU0MDAyODEwNDNGRjgwMTAwMUZGMDAxMDA3RkZDMDEwMDFGRjAxMDEwMTAxMDFGRjAxMDEwRDAKKzoyMDI3ODAwMDAwNDBGODIwMEJGRTQ4NDA0ODQwNDg4NDQ5Rjg3QzEwMDQyMjM0QzRDNzA4MDQxMDA0MjgxNEM2MEIwMjAwMDAxQgorOjIwMjdBMDAwMDAwMEZFNDgyODQ4Mjg0OEZFRkVBQTQ4QUE0OEFBNDhDRTc4ODI0OEZFNDg4MjQ4ODI0OEZFNzg4MjQ4MDAwMEY3Cis6MjAyN0MwMDAzRTQwMDQ0MEZGNDAyMkZFM0VDODIzNDgzRTMwMjcxMDNBMjhDMkM2MDAwMDI5MDQyODg2NjgxNDA3RjAwMDAwOEEKKzoyMDI3RTAwMDIyMDAyMjNFMjIyMjIyMjRGRkE4MjIzMDIyMjgyMjI0M0UyMjIyMjIyMjIyMjIzQTNFMjQyMjIwMDAyMDAwMjAxQworOjIwMjgwMDAwMTAyMDEwMjBGREZFMTAyMDdDMjA0NEZDN0MyMDQ0MjA3REZFMTAyMkZFMjIxMDIyMTAyQTEwMjQxMDIwMTAyMDg0Cis6MjAyODIwMDAwMTAwMDEwMDAyODAwNjQwMDkzMDMxMUVDRkU4MDAyMDAwNDAwMDgwMUZGMDEwMTAxMDEwMUZGMDEwMTAwMDAwMzEKKzoyMDI4NDAwMDIwMDAxM0Y4MTAxMDA4MjA4ODQwNTQ0MjU1NEExNEQyMjRFMjI1NTJFNjRBMjU0QTI0ODIyN0ZFMjQwMjAwMDAxNQorOjIwMjg2MDAwMDEwMDAwODAzRkZFMjQ0NDdGRjgwNDQwMUZGODA0NDA3RkZDMDQ0MDBCMjAxMEQ4MjIwRTQxODQwMEMwMDA4MDE1Cis6MjAyODgwMDAwMDEwM0ZGODAwMzAwMDQwMTE4MDQ5MjQ0RDM0NDk0NDQzODQ0NTQ0NTkzNDQ1MTQ0MjA0N0ZGQzQwMDQwMDAwM0EKKzoyMDI4QTAwMDAwMjAwMDI4MDAyNEY3RkU5NDIwOTQyMDk3RTQ5NDI0OTdEODk2NThGNjUwOEJEQTBBMkExMDQ2MjA4MjAwMDBFOAorOjIwMjhDMDAwMDAwMDNGRkUyNDQ0NDYzMDA4MTgxMDA4M0ZGODAxMDAwMTAwN0ZGRTAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMEU5Cis6MjAyOEUwMDAxMDIwMTAyMEZFNTAxMDg4N0QwNjQ3RkM3QzQ0NDY2NDdENTQxMTRDRkVENDExNjQxMjQ0MTE1NDEwODgxMDAwOEEKKzoyMDI5MDAwMDIwMjgyMDI0MjdGRUY0MjAyN0E4MkMyQzM3OTgyNjkwRTY5QTJCQUEyODA2MzA0MDI1MjQyNTBBQThGQTQwMDBGOQorOjIwMjkyMDAwMTAwMDExRjgxMTA4RkRGODExMDgxNUY4MTgwMDMzRkNEMDIwMTAyMDE3RkUxMDIwMTAyMDEwMjA1MDIwMjAyMDhFCis6MjAyOTQwMDAwMDAwMUZGODEwMDgxRkY4MTAwODFGRjgwMDAwM0ZGQzAxMDAwMTAwRkZGRTAxMDAwMTAwMDEwMDAxMDAwMTAwQzMKKzoyMDI5NjAwMDIwMjgyMDI0MjdGRTI0MjAzN0EwQUMyOEE3QThBNDkwMjc5QTI4MjYyODAyMzE0NDI1MjIyNTBBMjhGODAwMDBGMAorOjIwMjk4MDAwMjAwMDIzRjgyMjA4MzNGOEFBMDhBQkY4QTAwMDI3RkMyMDQwMjA0MDJGRkUyMDQwMjA0MDIwNDAyMDQwMDAwMDIyCis6MjAyOUEwMDAxMUZDMTEwNDExMDQxNUZDMTUwNDU5MDQ1MUZDOTAwMDEzRkMxMDIwMjgyNDI3RkU0MDIwNDAyMDgwMjAwMDIwNEMKKzoyMDI5QzAwMDIwMDAxM0ZDMDA0MDgwNDA0ODQwNDg0MDEwNDAxN0ZFMjA0MEUwNDAyMDQwMjA0MDIwNDAyMDQwMjA0MDIwNDA5MworOjIwMjlFMDAwMjAwMDEwMDAxN0ZDMDIwODgyMDg0OTEwNDkxMDExMTAxMEEwMjBBMEUwNDAyMEEwMjExODI2MEUyODA0MDAwMDQ0Cis6MjAyQTAwMDAwMTAwMDEwMDdGRkUwMjgwMDI0MDA0MjAwOTMwMTExODIxMEU1RkY0MDExMDAyMTAwMjEwMDQxMDA4NTAxMDIwOUEKKzoyMDJBMjAwMDEwODAxMDQwMTA0MEZCRkUxMDAwMzAwMDM5RjAzNTEwNTExMDUxMTA5MTEwMTExMjEyMTIxMjEyMTQwRTEwMDBCRgorOjIwMkE0MDAwMDg0MDEwMjAzQzAwMjVGQzM0MDAyQ0YwMjQ5MEZDOTAyNDkwMzQ5MDJDOTAyNDkwMjQ5MjQ1MTI1NTBFOEEwMDJGCis6MjAyQTYwMDAyMDQwMjdGQzIwMDAyM0Y4RkEwODIzRjgyMDAwMjdGRTI4OEEyMURDMzZBMEUxNTA0NkE4MDEyNjA2QTQwMDQwODEKKzoyMDJBODAwMDAwNDAwRkZFRjAwMDkzRjg5MjA4OTNGODkwMDA5N0ZFOTgwMkY3RkM5MTg4OEVGMDAzNTAwQ0FFMDMyNDBDQzAwMAorOjIwMkFBMDAwMDIwMDAxMDA3RkZDMDgyMDBGRTAwMDAwN0ZGRTQwMDRCRkY4MDYwMDA5MTA3MzIwMENDMDczQjAwQzhFNzMwNDU3Cis6MjAyQUMwMDAwMTAwN0ZGRTAwMDAwRkYwMDgxMDBGRjAwMDAwN0ZGRTQwMDQwRkUwMDEwMDFGRjAwMTAwM0ZGQTAxMDIwMEZFNjcKKzoyMDJBRTAwMDA4MDAwODNFN0YyMjA4MjQwODI0RkZBODEyMjgxMjI0NTMyMjUyQTI5MkEyMjIzQTIyMjQ0QTIwODQyMDAwMjAwQgorOjIwMkIwMDAwMTAwMDExRkMxMDA4MTAxMEZDMjAyNDIwMjQyMDI3RkU0NDIwNjQyMDE4MjAwODIwMTQyMDI2MjA0NEEwODA0MDMxCis6MjAyQjIwMDAxMDA4MTAxQ0ZERTAxMDIwN0MzQzExRTAxMDIwRkUyMDEwM0UzQkUwMzQyMDU2MjA1NDIyOTAyMjEwMUUxMDAwQjQKKzoyMDJCNDAwMDFGRjAxMDEwMTAxMDEwMTAxRkYwMDAwMEZGRkUwODAwMDgwMDFGRjAwODEwMDAxMDAwMTAwMTEwMDBBMDAwNDBCMgorOjIwMkI2MDAwMjA0MDEwNDAxMjQwMDNGQzhBNDA0QzQwNTA0MDE3RkUxMDAwMjAwMEUzRkMyMjA0MjIwNDIyMDQyM0ZDMjIwNDkzCis6MjAyQjgwMDAwMDAwMDdGRUY4MDQ4ODA0OEJFNDhBMjQ4QTI0OEEyNDhBMjRGQkU0OEEyNDgwMDQwMDA0MDAyNDAwMTQwMDA4MkMKKzoyMDJCQTAwMDAwMDA3QkZDNEEwNDRCRkM0QTA0NEJGQzQ5MDA0QkZFN0EyMjQ2MjIwQTUyMDI4QTAzRkEwMDAyMDAxNDAwMDhEQgorOjIwMkJDMDAwMDQyMDA0MjBGRkZFMTQyMDE4MDAxN0ZFMzAwODMzQzg1MjQ4OTI0ODEyNDgxM0M4MTI0ODEwMDgxMDI4MTAxMEE5Cis6MjAyQkUwMDAwNDQwMDQ0MEZGRkUwNDQwNDQ0MDM3RkVBMDA4NTAwODUzQzgxMjQ4MTI0OEUzQzgyMjQ4MjAwODIwMjgyMDEwQ0YKKzoyMDJDMDAwMDEwNDAxMDIwMTAyMDEzRkVGQzQwMTA0NDM4ODgzNUYwNTAyMjUwNDQ5MDg4MTMxMDEwMjgxMEM0MTMwNjEwMDQwNAorOjIwMkMyMDAwMDAxMDAwRjgzRjAwMDEwMDAxMDQ3RkZFMDM4MDA1NDAwNTQwMDkyMDExMTAyMTE4NDEwRTgxMDQwMTAwMDEwMDY0Cis6MjAyQzQwMDAwMDAwMDcwMDc4MDAwODdDMDg0NDdGNDQwODQ0MTg0NDFDNDQyQTQ0MkI0NDRBNDQ4ODdDMDg0NDA4MDAwODAwOEYKKzoyMDJDNjAwMDA4MDAwQzAwMUJGRTEwMDgzMDA4MjdDODY0NDhBNDQ4MjQ0ODI3QzgyNDQ4MjAwODIwMDgyMDI4MjAxMDAwMDBDMQorOjIwMkM4MDAwMDEwMDAyODAwNDQwMDgyMDEwMTgyMDJFREZGNDAwMDAwMDAwMUZGMDEwMTAxMDEwMTAxMDFGRjAxMDEwMDAwMDVFCis6MjAyQ0EwMDAwMTAwMDI4MDA0NDAwODMwMzdERUMwMDQwRkUwMDgyMDBGRTAwMDAwMUZGMDEyOTAxMjkwMTI5MEZGRkUwMDAwNDQKKzoyMDJDQzAwMDBDODAzMDgwRDBGQzU0ODgyOTQ4NTI1MDg4MjAxNEQwMjcwRUNERjgxNTA4MjUwOEM1MDgwNUY4MTUwODA4MDAzRQorOjIwMkNFMDAwMTAwMDA5RkM0QTA0NDEwNDRGRjQ0MTA0NDI0NDQ3ODQ0MTI0NDY0NDU4ODQ0MzY0NUMyNDQwMDQ0MDE0NDAwODgxCis6MjAyRDAwMDAyMDAwMTdGRTEwMDgwMDA4ODgwODRCQzg1MjQ4MTI0ODIyNDgyM0M4RTI0ODIwMDgyMDA4MjAwODIwMjgyMDEwNTgKKzoyMDJEMjAwMDIwMDAxN0ZFMTQ0Mjg0NDI0N0ZBNEM0MjBDNDIxNUYyMTUxMjI1MTJFNTEyMjVGMjI0MDIyNDAyMjdGRTI0MDIxQgorOjIwMkQ0MDAwMTAxMDEwMTA3RUZDMTAxMDEwMTBGRUZFMjg0ODI4NDhBQ0NDQUFDQUFCNEEyQTRBNDg0ODQ4ODhBOEE4MTExMDc3Cis6MjAyRDYwMDAyMDAwMTlGQzExMDRGREZDMDUwNDA5RkMxNTAwMzlGRTU2MjI5NjIyMUE1MjEyOEExM0ZBMTIwMjEwMEExMDA0MkYKKzoyMDJEODAwMDEwMjAxMDQwN0ZGQzUyQzQxOEE0MjRBNDNFOEM2ODgwQThGRTNFMDIyODAyM0VGQTI4MDIyODAyM0YwQTIwMDRFMworOjIwMkRBMDAwMDgwMDdGN0MwOTQ0MDk0NDExN0MyNTQ0NDIwMDBGRjAwODEwMDg5MDA4OTAwODkwMDk0MDAyMzAwQzFDMzAwODg0Cis6MjAyREMwMDAwMDAwMDdGQ0Y2NTQ5NTVDOTU2NDk3RkM5NDQ0OTA0MDk3RkNGMDQwOUZGRTAwMDAwNTI0MDQ5MjA4OTIwMDAwQzgKKzoyMDJERTAwMDNGRjgyMTA4MjkyODI1NDgyNTg4M0ZGODAxMDAwMTAwM0ZGODAxMDBGRkZFMDAwMDQ4ODQ0NDQyODQ0MjAwMDA4MgorOjIwMkUwMDAwMDEwMDAwODQxRkZFMTAwMDk3Rjg1NDA4NTdGODE0MDgzN0Y4NTQ4NDk0ODgyNDUwMjQyMDI1MTA0NjBFODQwNEJFCis6MjAyRTIwMDAxMDAwMUJGODIyMDg0QkY4OEEwODEyMDgyM0Y4NjI0MEEyNDgyMjVDMjIyMDIyMTAyMjU4MjI4RTI3MDQyMjAwNDYKKzoyMDJFNDAwMDAwMDA4QkY4NTIwODIyMDg1M0Y4OEEwODBBMDgxQkY4MkE0MDRBNDQ4QTI4MEEzMDBBNTAxMjg4NTMwRTIyMDQwQQorOjIwMkU2MDAwMjAwMDIzRjgyMjA4MzIwOEFCRjhBQTA4QTIwODIzRjgyMjQ0MjI0QzIyMzAyMjIwMjI5MDIzMEUyMjA0MDAwMDI4Cis6MjAyRTgwMDAwMDgwMDA0MEZGRkU5MDAwOTNGODkyMDg5M0Y4OTAwMDkzRjhGMDEwOTAyMDAwMjAwMDIwMDAyMDAwQTAwMDQwMkEKKzoyMDJFQTAwMDAyMDAwMTA0N0ZGRTAwMDAwRkYwMDgxMDBGRjAwMDAwMUZGODAwMzAwMDQwMDA4MDAwODAwNDgwMDI4MDAxMDBFQQorOjIwMkVDMDAwMjA5MDIwOTAyM0ZDMjA5MEY4OTAyN0ZFNzAyMDY5RkNBMTI0QTFGQzIxMjQyMUZDMjAwMDIwODgyMTA2MjYwMjQ2Cis6MjAyRUUwMDAyMjAwMzNERTQ0NDA1ODgwOTdDMDI1NUU2N0M0QTU0NDI3QzQyMTA0MkZFNDIxMDQyMjg0MjQ1NDI4MjgyMDAwN0YKKzoyMDJGMDAwMDIwMDAyN0ZDMjAwMDMwMDBBQkY4QUEwOEEyMDgyM0Y4MjIwODIyMDgyM0Y4MjAwMDIwMDAyRkZFMjAwMDAwMDAwOAorOjIwMkYyMDAwMDIwMDdGRkMwNDAwMDkwMDFGRjAwMTAwRkZGRTAxMDAzRjdDMDI4ODM0ODgwODUwMTQyMDIyNTg0Mjg2MDEwNDI1Cis6MjAyRjQwMDAwMTEwMDExMEY5MTA4RkZFODkxMDg5MTA4OTEwODkxMDg5MTBGRkZFODkwMDAxOTAwMzA4MDIwQzA0MDYwODA0NzYKKzoyMDJGNjAwMDEwOTAxMEQ4MTA5MDE0OTAxQkZDNTA5MDUwOTA1MDkwOTA5MDE3RkUyODIwMjQ5MDQxMDg0MjA0ODQwNDAwMDA4NgorOjIwMkY4MDAwMTAwMDEwMDAxMUZFRkUyMDkyMjA5MjIwOTIyMDkyMjBGRTIwOTIyMDEwMjAxNDIwMTIyMDFFMjBFM0ZFMDAwMDk3Cis6MjAyRkEwMDA0MDIwMjA0MDIwRkMwRUM0ODRBNDU0QTQ1NDhDMjQ4MDI0RkUyNjAyRDgwMjQzRkE0MDAyNDAwMjQwMEEwMDA0OEMKKzoyMDJGQzAwMDIwMDAxMTEwMTExMDg5MTA0QkZDNTExMDExMTAxMTEwMjExMDJGRkVFMTIwMjExMDIyMDgyMjBDMjQwNDI4MDREMAorOjIwMkZFMDAwMDEwMDAwODAzRkZFMjIwNDQzMDgwMjAwN0ZGRTAyMDAwNDgwMDQ4MDA5MDAxMTEwMjIwODQ0RkMwRjg4MDAwMEVFCis6MjAzMDAwMDAwMDEwN0UxODAyMTAwMjEwM0UyMDIwMjAyMDIwMjA0MDdFNDAyMjQwMDI4ODAyODQwM0ZFMDI4NDE0MDAwODAwRDUKKzoyMDMwMjAwMDEwMDAxMDAwMjAwNDI1RkU0NDIwRjgyMDA4MjAxMDIwMjAyMEZDMjA0MDIwMDAyMDFDMjBFMDI0NDdGRTAwMDBGNAorOjIwMzA0MDAwMDIwMDAzNzhGMjA4OTVGRTk0MDA5QzgwOTRGQzk1MjBGNjIwOTdGRTg0MjAwNDUwMDQ0ODA0OEMwNDg2MDUwNDVGCis6MjAzMDYwMDAxMDAwMUJGMDEwMTAyMDEwMkZGRTYyMDBBM0ZDMjI0MDI0NDAyRkZFMjA0MDIwQTAyMTIwMjIxODI0MEUyODA0Q0IKKzoyMDMwODAwMDg5MDA0OTc4MzEwODIzRkU1MjgwOEU4MDFBRkMyQjIwNEEyMDhCRkUwQTUwMEE1MDBBOTgxMjg4NTMwRTIyMDRFMQorOjIwMzBBMDAwMDAxMDA3RDBGMDkwOTExMDkxMTA5MTEwOTFEMDk3MTA5MTEwRjExMDkxMTA4MTEwMDExMjAxMTIwNTBFMDIwMEFGCis6MjAzMEMwMDAzRkZDMjAwMDJGRjgyODA4MkZGODI4MDgyRkY4MjAwMDJGRjgyMDMwMjBDMDJGRkM0MDgwNDA4MDgyODAwMTAwOUIKKzoyMDMwRTAwMDEwMDAxQkY4MTAxMDI3RkUyOTAwNjkwMEE5RkMyOTQwMkE0MDJGRkUyOEEwMjg5MDIxMTgyMjBFMjQwNDAwMDAyMAorOjIwMzEwMDAwMDA3QzFGODAxMDAwMTAwMDFGRkMxMDAwMTAwMDEwMDAxN0Y4MjQwODI0MDgyNDA4NDdGODQ0MDg4NDA4MDAwMDdGCis6MjAzMTIwMDAwMDAwMDAzQ0ZGQzA4ODQ4OEE0Qzg5NDg4OTUwODg0MDhGRkVGODQwODg0MDAwNDAwMDQwMDA0MDAxNDAwMDgwNkUKKzoyMDMxNDAwMDAwMDgwMUZDN0YwMDExMTAwOTE4MEQxMDA1MjRGRkZFMDEwMDAxMDAwMTAwMDEwMDA5MDAwNTAwMDIwMDAwMDA1MgorOjIwMzE2MDAwMDgwMDA4MDAwRkZDMTI0NDIyNDQ0NDQ0MDg4NDMxMDQwNjM4MzgxMDAxMDAyODg0Mjg5MjI4MTI0N0YwMDAwMEQxCis6MjAzMTgwMDAwMTAwRjkzQzIxMjQyN0U0MjEyNDIxM0NGOTI0MjdBNDI0QTQyNEJDMkZBNDM0QTRDNDQ0MDA0NDAwOTQwMTA4RTMKKzoyMDMxQTAwMDAxMDAwMTAwN0ZGQzAxMDAzRkY4MDAwMDdGRkU0NDQ0ODQ0ODI0NEMyNDUwMTQ1MDE0NjAwNDQwRkZGRTAwMDA4QworOjIwMzFDMDAwMDQ0MDA0NDBGRkZFMDQ0MDA4MDAwOEZDMDg4NDdGRkMwODg0MDg4NDNFRkMyMjg0MjI4NDNFODQyMTE0MDIwODc0Cis6MjAzMUUwMDAwODAwMDg3QzA4NDRGRjQ0MDg3QzA4NDQwODQ0N0U0NDQyN0M0MjQ0NDI0NDQyNDQ3RTQ0NDI0NDAyOTQwMTA4OUYKKzoyMDMyMDAwMDIxMDAyMTFFMjExMjI3RDJGOTFFQTkxMkE5MTJBQjkyQUE5RUZBOTIyMjkyMzNBMjI4MjIzQzQyQzg4QTAxMDREQworOjIwMzIyMDAwMDg3ODhCRDA1MjUwMjI1MDUyNTA5MjUwMEE1MDFBNTAyQTUwNEE0ODhBNDgwQTU4MTQ1NDE0NkM1ODQ2MjAwMDcxCis6MjAzMjQwMDAxMTAwMTExRTk1MTI1QkQyNTExMkZEMUUxMTEyM0JEMjM2NTI1MjVFNTI1MjkzRDIxMDIyMTAyMjEwNEExMDg0MTkKKzoyMDMyNjAwMDQyMDAyMjNDMjIyNDAyMjQ4RkJDNTIyNDEyMjQyRkJDMjhBNDI4QTRDOEE0NDhBNDRGQzQ0MDQ0NDA5NDQxMDhCQworOjIwMzI4MDAwMDAwMEY4M0MwQkQwMEE1MDBBNTA3QTUwNDI1MDQyNTBGQTQ4NEE0ODBBNDgwQTU0MEE3NDJBRDYxNDQ0MDgwMDFCCis6MjAzMkEwMDAwMTAwMDFGMDAxMDAzRkZDMjEwODIxRTAyRjA4MjFGODIwMDAyN0MwMjQ0MDI0NDQyNDQ0NDQ0NjQ4M0M5MDAwOEQKKzoyMDMyQzAwMDAwNDAwMDc4RjA0MDk3RkU5NDg0OTRGMDk3ODA5NDg4RjQ3ODk0MDA4NEYwMDQ5MDA0OTIwOTEyMDkwRTEyMDBDMAorOjIwMzJFMDAwMTA0MDEwMzAxMDEwMTBGRTdFODIxMDgyMTQ4MjE4RkUzMDgwRDA4MDEwODAxMTAwMTEwMDEyMDA1NDAwMjgwMDkyCis6MjAzMzAwMDAwMDAwN0ZGQzA0MDAwNDAwMDQyMDA3RjAwODIwMDgyMDA4MjAwODIwMUZFMDA4MjAwMDIwN0ZGRTAwMDAwMDAwQUIKKzoyMDMzMjAwMDIwNDAxMDIwMTAyMDAzRkU0MjAyMkEwMjJBMDIxM0ZFMTIwMDIyMDBFMjAwMjIwMDIyMDAyNDAwMjQwMDI4MDA1NQorOjIwMzM0MDAwMDEwMDAwQzAwMDQwMUZGQzEwMDQxMDA0MTAwNDFGRkMxMDAwMTAwMDEwMDAxMDAwMjAwMDIwMDA0MDAwODAwMEJBCis6MjAzMzYwMDAwNDQwMDQ0MEZGRkUwNDQwMDgwMDBDODAwODkwMTg5ODI4QTA0OEMwMDk4MDBBODQwODg0MDg4NjA4N0MwODAwMUIKKzoyMDMzODAwMDAxMjAwMUEwNzkyODRCMzA0QjYwNERBNDQ5MjQ0OTFDNDg0MDc4NDA0N0ZDMDA0MDAwNDAwMDQwMDA0MDAwNDAxRQorOjIwMzNBMDAwMDg4MDBDODgxMDlDMzBFMDUzODA5MDg0MTA4NDEwN0MxMTAwMDEwMDdGRkUwMTAwMDEwMDAxMDAwMTAwMDEwMDlBCis6MjAzM0MwMDAwODAwODlGODUxMDgyMUU4NTEyODk3RkUxQzAyMjlGODI5MDg0OUY4ODkwODA5RjgwOTA4MTEwODUxMjgyMTEwREQKKzoyMDMzRTAwMDIwMDAxM0Y4MTIwODgzQzg0MjQ4NDdGRTE0MDQxM0Y4MTIwODIzRjgyMjA4RTNGODIyMDgyMjA4MjIyODIyMTA0MQorOjIwMzQwMDAwMDAwMEZGRkUwMDAwMEZFMDQ5MjQ0OTI0NEZFNDQ5MjQ0OTI0NDkyNDRGRTQ0ODI0NDAwNDdGRkM0MDA0MDAwMENBCis6MjAzNDIwMDAxMDA0MTQwNDEyMDQxMDI0RkZBNDEyMjQxMzI0MTIyNDE0MjQwQzI0MTgyNDM1MjQ2NTA0ODMxNDAxMDgwMDAwQ0EKKzoyMDM0NDAwMDA4ODAwQzgwMDg4ODEwOEMxMDk4MzBCMDUwRTA5MEMwMTE4MDEyODAxNDgwMTA4NDEwODQxMDg0MTA3QzAwMDAyNQorOjIwMzQ2MDAwNDAwMDIwMUMzM0UwMjAyMDAwMjAwN0ZFRjAyMDEwMjAxMDIwMTFGQzExMDQxMTA0MTUwNDE5RkMxMTA0MDAwMDZFCis6MjAzNDgwMDAxMDQwMTA4MDEzRkNGRTQ0MTI0NDNCRkMzNjQ0NTNGQzUwNjA5MDY4MTBBODEwQjQxMTNDMTIyMjE0MUUxMDAwQkUKKzoyMDM0QTAwMDEwMDAxQkZDMjIwNDUyMDQ5QUY0MTI5NDIyOTQ2Mjk0QTI5NDIyRjQyMjk0MjIwNDIyMDQyM0ZDMjIwNDIwMDBENgorOjIwMzRDMDAwMTAwMDEzRkUxMDIwMTAyMDU4NDA1NDYwOTREMDEwQzgxMTRDMTI0NjE0NDQxMDQwMTA0MDEwNDAxMDQwMDAwMDk2Cis6MjAzNEUwMDA0MTQwMjEyMDIxMjAwQkZFOEEyMDU2MjA1QkZDMTIyMDIyMjAyM0ZDRTIyMDIyMjAyMjIwMjNGRTIyMDAwMDAwRUQKKzoyMDM1MDAwMDIwMDAyN0ZFMjAyMDIwMjBGQzQwMjA0MDIwRTAyMEQwMjE0ODJBNDYzNDQ0RTg0MDAwNDAwMDQwMDA0MDAwNDBFMQorOjIwMzUyMDAwMDA4MDAwODBGQzgwMDVGRTg1MDQ0QTQ4Mjg0MDEwNDAxODQwMTg2MDI0QTAyNDkwNDExODg2MEUzODA0MDAwMEM4Cis6MjAzNTQwMDAwMDAwN0RGRTEwMjAxMDIwMTA2MDdDNjAxMEIwMTBBODExMjQxRDI2NjIyMjA0MjIwODIwMDAyMDAwMjAwMDIwMjIKKzoyMDM1NjAwMDEwMDAxM0ZDMTAwMDEwMDBGREY4MzkwODM1MDg1NUY4NTEwODkxMDgxMUY4MTAwMDEwMDAxN0ZFMTAwMDAwMDAwQworOjIwMzU4MDAwNDAwMDI3RkMzMDQwMjA0MDAwODAwMDgwRTFBMDIyOTAyNDg4Mjg4QzIwODgyMDgwMjA4MDUwMDA4RkZFMDAwMEEwCis6MjAzNUEwMDAyMDM4MzNDMDIwODg0MjRDNDk1MEZCRkMxMDgwMTdGRTIwODA3OEY4MDE4ODE5NTBFMjIwMDI1ODA0OEUwOTA0NTgKKzoyMDM1QzAwMDEwODAxMDgwMTFGOEZEMTAxMjIwMTdGODEyNDgxQTQ4MzI0OERGRkUxMDQwMTBBMDEwOTAxMTBFNTYwNDIwMDAyOAorOjIwMzVFMDAwMDA4MDAwODAxRkY4MTA4ODFGRjgwMDgwMUZGODEwODgxRkY4MDA4MDAwODAyOTA0Mjg5MjQ4MTIwN0YwMDAwMDg3Cis6MjAzNjAwMDAwMTAwMDEwMEYxRjg5MjEwOTQyMDlCRjg5MjQ4OTI0OEYyNDg5MjQ4OEZGRTAwQTAwMTEwMDIwQzA0MDYwODA0QUMKKzoyMDM2MjAwMDAxMDAwMDg0MUZGRTExMDA5M0YwNTQyMDU3RkMxNDQ4MzQ0ODU0ODhBRkZFMjBDMDIxMjA0MjEwNDQwRTk4MDRDQgorOjIwMzY0MDAwMTExMDA5MjAzRkY4MDEwMDdGRkUwNDIwMEZGMDMxMEVDNjE0MTkyMDY2QzAxOUEwNjY5ODE4OEM2Mjg4MDEwMDhBCis6MjAzNjYwMDAyMTAwMjEwMDIxRjAyMjIwMkM0MEIzRjhBMjQ4QTI0ODIyNDgyRkZFMzA0MDI4QTA0ODkwNDExODg2MEUxODA0MUEKKzoyMDM2ODAwMDIxMDAxMTAwMTNGMDAyMjA5NDQwNUJGODUyNDgxMjQ4MjI0ODJGRkVFMDQwMjBBMDIwQTAyMTEwMjIwRTJDMDRGMAorOjIwMzZBMDAwMDIwMDAxMDAzRkZFNDAwNDQwMDgxRkYwMTEwMDExMDAxRkYwMTAxMDEwMTAxRkYwMTEwMDExMDAxRkY4MDAwMDc2Cis6MjAzNkMwMDAwODAwMEMwMDE5RkMxMDA0MjIwNDQzMDRGRTA0MDQwNDA4MDQwQTA0MTEwNDdGODQyMTA0MDAyODAwMTAwMDAwQTcKKzoyMDM2RTAwMDA0NDAwNDQwRkZGRTA0NDAwMTAwN0ZGQzA4MDAwODAwMEZGODAwMDAwOTIwMDkyMDA5MjIxMTIyMTExRTIxMDA2RQorOjIwMzcwMDAwMjExMDIxMTAyN0ZFMjExMEIwNDBBRkZFQTIwMDIyMDAyM0ZDMjAwMDIyNDgyMjQ4MjQ0QTI0NEEyODQ2MjAwMDEzCis6MjAzNzIwMDAwNDQwMDQ0MDdGRkMwNDQwMDQ0MEZGRkUwMTAwMUZGMDExMTAxRkYwMTExMDExMTAxRkYwMDgyMDEwMTg2MDA4QjgKKzoyMDM3NDAwMDAxMTBGRDEwMjNGQzIxMTAyN0ZFMjA0MDdCRjg2QTQ4QUJGODJBNDgyQTQ4MkJGODM4MDAyOTEwMDIwODA0MDQyNAorOjIwMzc2MDAwMjA0MDIwODAyMUZDRjkwNEE5RkNBOTA0QTlGQ0E4MDBGQkZDQTAyMDMwMjAyOUZDM0MyMEU4MjAwM0ZFMDAwMEZGCis6MjAzNzgwMDAyMDQwM0Y3RTUwOTA4OTI4N0ZGQzA4MjBGRkZFMDEwMDFGRjAxMTEwMUZGMDExMTAxRkYwMDQ0MDA4MzAzMDEwQUYKKzoyMDM3QTAwMDAyMDAwNDAwMUZGMDEwMTAxRkYwMTAxMDFGRjAwMDAwN0ZGQzAxMDAwMTAwM0ZGQzAxMDAwMTAwRkZGRTAwMDBERgorOjIwMzdDMDAwMDAwMDNGRjgyMzA4MjIwODJGRTgyODI4MkZFODI4MjgyRkU4MjAwODJGRTgyMTA4MkZFQTQxMEE1RkY2ODAwMkQ1Cis6MjAzN0UwMDAyMDgwMjA4MDIxMDAzM0Y4QUEwOEFCRjhBMjA4MjNGODIwMDAyN0ZDMjA0MDIzRjgyMDQwMjA0MDJGRkUyMDAwNTgKKzoyMDM4MDAwMDEwNDAxMDgwMTNGQzE2MDQxQkZDNTIwNDUzRkM5MDAwMTNGQzMwNDAyQkZDMjQ0MDQ0NDQ0N0ZFODAwMDAwMDBGQworOjIwMzgyMDAwMUZGODEwMDgxRkY4MTAwODFGRjgwMTAwMTExMDBEMzAwNTQwRkZGRTAyNDAwNDQwMDg0MjMwNDJDMDNFMDAwMDMyCis6MjAzODQwMDAyMDAwMjNGODIyMDhGQkY4QUEwOEFCRjhBODQ4QUE0Q0E5NTBBRkZFQjkxMDIxMTAyMTEyMjIxMjI0MEUyODAwNzQKKzoyMDM4NjAwMDIwNDAyMDQwMjQ0QzMyNDhBOTUwQTE2MEFGRkUyMEEwMjBBMDIxMjAyMTIwMjIyMDIyMjIyNDIyMjgxRTIwMDBDMworOjIwMzg4MDAwODEwODQxMDg2N0ZFNDE0ODAwMjAwN0ZFRTEwMDIxMDAyMUZDMjAwMDIyNDgyQTQ4MzI0ODIyNEEwNDRBMDgwNkU2Cis6MjAzOEEwMDAwMjAwMDIwMDAyMDQ3RkZFMDQ0MDA0NDAwNDRDMEM3MDBBNDAwQUEwMTBBMDExMTAyMjE4MjQwRTQ4MDQwMDAwQjAKKzoyMDM4QzAwMDEwMDAxM0ZFMTI0NEZDODAxM0ZDMTA4MDE1MjAxOTIwMzNGQ0QwMjAxMDIwMTdGRTEwMjAxMDIwNTAyMDIwMjA3NAorOjIwMzhFMDAwMTAwMDEzRkU5NjQ0NTg0MDUxRkNGRTQwMjhBMDI4QTAyOUZDMjgyMDI4MjAyQkZFNEMyMDQ4MjA4MDIwMDAyMEE4Cis6MjAzOTAwMDAyMTEwMzU1ODI1NTA1N0UwOTgzRTJGQTQ2NDY0QUZBNDIyMTQyNDE0MkZEODIyMDgyQTg4MzI1NDJBMjYyNDQ0RUEKKzoyMDM5MjAwMDIxMDAyMTAwMjEwMDM3RkVBOTQwQTk0MEEyNDgyMzQ4MjJEMDI0NjAyNDYwMjg5MDMwODgyMzBFMkMwNDIwMDBERAorOjIwMzk0MDAwMTAwMDExRkMxMTA0N0QwNDU1NzQ1NTU0NTU1NDU1NTQ3RDU0NTE3NDE5NTQxNTA0MUYwNEU1RkMwMTA0MDAwMENCCis6MjAzOTYwMDAwMDAwN0ZGQzQwMDQ0MDA0NEZFNDQ4MjQ0ODI0NDgyNDQ4MjQ0ODI0NEZFNDQwMDQ0MDA0NDAwNDdGRkMwMDAwN0IKKzoyMDM5ODAwMDEwMDA2Njc4NDI0ODZFNDg0MjQ4NDI0RTdFODAwMDdDN0UwNDA4NDgwODI4MDgxMDBFMzBGMEM4MDcwNjAwMDA0OAorOjIwMzlBMDAwMjEwMDIxMDAyMUZFMzIwMEFCRjhBNTA4QTk0ODIxMjgyN0ZFMjEwODIxNDgyMTI4MjFGRTIwMDgyMDI4MjAxMDJCCis6MjAzOUMwMDAwODIwN0VGQzA4MjA3RUZDMDgyMDdFRkMwODIwMUZGODAwMDgxRkY4MDAwODFGRjgyNDg0MjQxMjQzRjIwMDAwNzEKKzoyMDM5RTAwMDAxMDAwMTEwM0ZGODAxMDAwMTAwMDkxMDA5MTAwODEwRkZGRTA4MTAwODEwMTAxMDEwMTAyMDEwNDAxMDAwMDA0NQorOjIwM0EwMDAwMDEwMDdGRkMwMTAwMUZGMDExMTAxRkYwMTExMDFGRjAwMTA4N0ZGQzAwMDQwOTAwMjg4ODI4MjQ2N0U0MDAwMEUyCis6MjAzQTIwMDAwMTAwMDEwMDdCRkU0QTAwNERGODQ5MDg3OTQ4NDkyODRGRkU0OTA4NDk0ODc5Mjg0OUZFMDAwODAwMjgwMDEwQTIKKzoyMDNBNDAwMDAwMjA3QzIwNDQyMDU3RkU1NDQwNTRGQzU1ODQ1Njg0NTRGQzUwODQ1MDg0MjhGQzI0ODQ0Njg0ODQ5NDAwODgyQworOjIwM0E2MDAwMEMyMDcxMjIxMTIyMTEyMkZGRkUzMTIyMzA0MDU4RkU1NTA0OTI4ODE0NTAxMDIwMTA0MDEwODAxMzAwMUMwMEY1Cis6MjAzQTgwMDAwMTAwMDEwMDAyODAwNDQwMDgyMDEwMTg2RkVFODAwNDAwMDAzRkY4MDIwMDA0MjAwODEwMTFGODNGMTgxMDEwMzgKKzoyMDNBQTAwMDEwNDAxMDQwMTBBMDE0OTAxOTA4NTIwNjU1Rjg1ODAwOTAwNDE3RkUyODgwMjQ5MDQ1MDg0M0ZDODEwNDAwMDBERQorOjIwM0FDMDAwMjAwMDEzRkMxMjAwMDIwMDQyMDAyQTAwMkEwMDBBMDAxMjAwMTIwMDcyMDAxMjAwMTIwMDEyMDAxM0ZFMTAwMDE2Cis6MjAzQUUwMDA0MDQwMzA0MDI3RkUwMDQwMDA0MEUzRkMyMDQwMjA0MDI3RkMyMDQ0MjA0NDI0NDQyODU0MzA0ODIwNDAwMDQwQUIKKzoyMDNCMDAwMDAyMDA0MjAwMzNGRTE0MDAwM0Y4MDI4OEUyNDgyMjA4MkZGRTIyODgyMjQ4MkEwODMzRkUyMDA4MDAyODAwMTAzRgorOjIwM0IyMDAwMTA0MDEwNDAyMDYwMjA5MDQ4ODhGMTA2MTJGODIwMDA0MDAwRkJGRTAwNDAwMDgwMTg4OEUxMDQwM0ZFMDAwNDQxCis6MjAzQjQwMDAwNDIwMDQyMEZGRkUwNDIwN0ZGRTQyMDRCRkY4MDUwMDA5MDAxRkYwMDEwMDAxMDBGRkZFMDEwMDAxMDAwMTAwNjMKKzoyMDNCNjAwMDAxRjAzRjAwMjEwMDNGRkMyMDgwMjA4MDI4NDQzMDM0M0ZGQzEwMTAxMDEwMUZGMDEwMTAxMDEwMUZGMDEwMTBCMAorOjIwM0I4MDAwMjAwMDMwM0MyMUQwMjExMEZERkUyNTEwMjU0QTI1ODY0OTAyNjhGQzEwODQxMEZDMjg4NDQ0ODQ4NEZDMDA4NDY2Cis6MjAzQkEwMDAwMDQwMDA4MDdCRjgwMjQ4MDNGOEZFNDgyMjQ4MjNGODIwQTA0OEE4NDRCNEZEM0MwNTIyMDIyMjBDMUUwMDAwNkMKKzoyMDNCQzAwMDIwMDAxN0ZFMTQ4NDgwODA0N0ZDNTEwMDExNDAxMjQwMjdGQzIwNDBFMDQwMkZGRTIwNDAyMDQwMjA0MDIwNDA5MQorOjIwM0JFMDAwMjAwMDEzRkMxMjA0ODNGQzRBMDQ0QTA0MTNGQzEwMjAyNDIwMjQyNEU3QjgyNDIwMjQyMDI1MjIyNjIyMjQxRUEyCis6MjAzQzAwMDAxMDUwMDg0OEZFODQ5MkE2N0YyNDEwNTA3QzUwMTA4OEZFODYxMTdDN0U0ODQ0NDg0NDQ4N0M3ODQ0NDgwMDAwNjQKKzoyMDNDMjAwMDIwMDAxMDNDMTNDMDAwNDA4ODQwNEZGRTUwNDAxMDQwMjA0MDIzRjhFMjA4MjIwODIyMDgyMjA4MjNGODIyMDhFOAorOjIwM0M0MDAwMDg0MDBDNDAxODQwMTA0ODMyNEMyMjQ4NjI1MEE0NDAyMEEwMjBBMDIxMTAyMTEwMjIwODI0MEUyODA0MjAwMDE4Cis6MjAzQzYwMDAwMTAwMDE4MDAxMDAwMTEwMTExODExMjAxMTQwMTEwMDIyODAwMjgwMDQ0MDA0MjAwODMwMTAxQzIwMDg0MDAwOUMKKzoyMDNDODAwMDA0NDBGRkZFMDQ0MDA0NDA0NDAwMjg1MDEwNDgyRkZFNDg0MDk4NDAyOEEwNDg5MDg5MTgwOTBFMkEwNDE0MDAyMAorOjIwM0NBMDAwMDA0MDAwNTAwMDQ4N0ZGQzAwNDAwMDQwM0U0MDIyNEMyMjQ4M0UzMDAwMjAwMjU0MEM5NDczMEMwQzA0MDAwMEM4Cis6MjAzQ0MwMDAwMEEwMDA5MDdGRkUwMDgwM0U4ODIyNDgzRTUwMDAyMDBFNTQ3MThDMDAwNDQ5MDg0ODg0QzgxNDA3RjAwMDAwODYKKzoyMDNDRTAwMDFGRjgwMTAwN0ZGRTQxMDQxRDc4MDEwMDFBNzAyMTAwM0ZGODUxMDA5RkY4MTEwMDFGRjgxMTAwMUZGQzEwMDAyNgorOjIwM0QwMDAwMDg4MDBDOEMxOEYwMzM4MDUwODQxMDdDMDAwMDFGRjAxMDEwMTExMDExMTAxMTEwMTI4MDA0NjAwODM4MzAxMDYwCis6MjAzRDIwMDAyMDAwMTFGQzExMDQwMTA0RkRGQzA4MjAxMDIwMzNGRTVBMjI5NjIyMTI1MjEyOEExMjAyMTIwMjEyMEExMjA0MkMKKzoyMDNENDAwMDAxMDAwMTAwMDEwMDNGRjgwMTAwMDEwMDAxMDQ3RkZFMDEwMDExMDgxMTA4MTEwODExMDgxRkY4MTAwODAwMDAxMQorOjIwM0Q2MDAwMTAwMDE3RkMxMTA4MTEwOEZEMTAxMTFFMTEwMjExODQxNTg0MUE0ODMyNTBDNDMwMDQ1ODA4OEUxMzA0MjQwMDZDCis6MjAzRDgwMDAwODIwMDgyMDdGRkMwODIwMEZFMDA4MjAwRkUwMDgyMEZGRkUwODIwMTExODNGRUVDMTA0MDEwMDdGRkMwMDAwNDYKKzoyMDNEQTAwMDEwMDAxMEY4MTA4OEZFODgxMDg4MTA4ODM4ODgzNDg4NTQ4ODUwODg5MTA4MTEwQTEyMEExMjBBMTQwNjEwMDA1NworOjIwM0RDMDAwMDA0MEY4NDBBQkZDQThBMEE5MTBBQTA4RkZGRUE4MDhBQkM4QUE0OEFBNDhGQkM4OEE0ODgwMDgwMDI4MDAxMEI4Cis6MjAzREUwMDAwQzUwNzA0MDEzRkMxMDkyRkQxMjE2MEUzMTMwMzlDNDU1MDQ1MEZDNTAwMDkxRjgxMTA4MTFGODExMDgxMUY4QjMKKzoyMDNFMDAwMDBDMDA3MUZDMTEwNDExMDRGRDA0MTEwNDM5MDQzNTA0NTVGQzUwMDA5MDkwMTA4ODExMDQxMTA2MTIwMjE0MDJDNAorOjIwM0UyMDAwMjA0MDNGN0UyODkwNDUwODhBMjA3RkZDMDgyMDBGRTAwODIwMEZFMDA4MjAwODIwRkZGRTA0NDAxODMwNjAwQ0M4Cis6MjAzRTQwMDAzQ0YwMjQ5MDI0OTAyNDkwM0M5MDI0OTAyNDkwMjQ5MDNDOTAyNDkwMjQ5MDI0OTI0NTEyNTUxMjhBMEUwMDAwRjIKKzoyMDNFNjAwMDIwMDAyMEYwMjA5MDdFOTA0NDkwNDg5MEEwOTAyMDkwMjA5MDIwOTAyMDkwMjUxMjI5MTIzMjEyMjQwRTAwMDBEMAorOjIwM0U4MDAwNDEwMDIwQzAzMDQwMkZGRTAxMjAwMTIwRTUyODI1MjQyOTI2MzEyNDIyMjAyMkEwMjQ0MDUwMDA4RkZFMDAwMEUzCis6MjAzRUEwMDA0MjEwMjQxMDJGOTAwOEEwOEZCRTU4RTQxRkE0MjIyODNGQTgyNDI4Qzc5MDQ4OTA0OEE4NTBDRTYyODQwMTAwMjgKKzoyMDNFQzAwMDQwMDAyMUYwMzExMDIxMTAwMTEwMDExMEYxMTAxMTEwMTExMDExMTAxMTEwMTExMjE1MTIxQTEyMTIwRTA0MDBERQorOjIwM0VFMDAwMDAyMDAwNDBGREY4MDU4ODQ5NDgyOTQ4MjkyODExMTAxOUZDMjgwNDI0MDQ0NUY0ODAwNDAwMDQwMDE0MDAwODI2Cis6MjAzRjAwMDAxMDAwMTFGRTExMTAxMTEwRkQxMDI1N0MyNTQ0MjU0NDQ5NDQyOTQ0MTE3QzExMTAyOTEwNDUxMDg1RkUwMDAwMDcKKzoyMDNGMjAwMDEwNDAxN0ZDMjA0MDIzRjg0ODQwRjdGRTEwMDAyM0Y4NDIwOEZBNDgwMjQ4MDI0ODE4QTBFMDkwMDEwODAyMDhBMAorOjIwM0Y0MDAwMDAwMDIxRjgyMTA4NDFGODQ4MDBGQkZFMTEwODExRjgyMTA4N0RGODAxMDgwMTNFMUJDOEUwMDgwMDA4MDAwOEMyCis6MjAzRjYwMDAwMTAwMDEwNEZGRkUwMTAwMDEwMDAxMDg3RkZDMDAwMDAwMDAxRkYwMTAxMDEwMTAxMDEwMUZGMDEwMTAwMDAwMUEKKzoyMDNGODAwMDEwMDAxM0ZDMTA4OEZFODgxMDkwMTBBMDM4QkMzNEM0NTU0ODUxMjg5MTEwMTIxMDEyMjgxNENFMUIwNDEwMDA4NAorOjIwM0ZBMDAwMTAyMDEwMjBGRUZFMTAyMDdFRkM1MkE0NTJBNDUyQTQ1NkFDMTgyMDM0NzA1MkE4OTEyRTE2MjQxMDIwMTAyMEU4Cis6MjAzRkMwMDAyMDAwMjFGOEZEMDgyMUY4MjAwMDUzRkU1MTA4RkRGODExMDgxMUY4M0QwOEQxRkUxNzA4MTAwODEwMDgxMDA4MkUKKzoyMDNGRTAwMDIwNDAzRjdFNTA5MDg5MDg3RTQ4MDlGRTdFNDgwODQ4N0ZGRTE4MDAyQ0ZDMkE4NDQ4RkM4ODg0MDhGQzA4ODQwNQorOjIwNDAwMDAwMDg4MDA4NDAxRkY4MzA4MDVGRjgxMDgwMUZGODEwODAxRkZDMDEwMDdGRkUwMzQwMDUyMDE5MUM2MTA4MDEwMERCCis6MjA0MDIwMDAwMDAwM0ZFMDA0MjAwNDIwMDQ0MDA0NDAwNEY4MEE1MDBBMTAwOTIwMTEyMDEwQzAyMTIwNDIxODhDMEUzMDA0OEUKKzoyMDQwNDAwMDA0MDAwNDAwMEZFMDA4NDAxMDgwMkZGMDAwMTAwRkYwMDAxMDBGRjAwMTAwMjg4NDI4OTI2ODEyMDdGMDAwMDA3QworOjIwNDA2MDAwMDEwMDAwODAxRkZFMTIwMDkyMDg1M0ZDNTQ0MDM4NDA1RkZFOTA0MDEwQTAxMEEwMjExMDIyMTg0NDBFODgwNEM1Cis6MjA0MDgwMDAyMDAwMTNGQzExMDgwMTA4ODkxMDQ5MTA1MTNDMTE4NDEyODgyMjQ4RTQzMDI0MzAyODQ4MzE4RTI2MDQwMDAwRjYKKzoyMDQwQTAwMDAwMDAzRTdDMjI0NDIyNDQzRTQ0MjI0NDIyNDQzRTQ0MjI0NDI0NDQyMjU0Mjc0ODdBNDAyMDQwMDA0MDAwNDA1RAorOjIwNDBDMDAwMjAyMDIwMTAyMUZFRjk0MDI5NDAyRDdDNEI5MDQ5MTA0QkZFMzUxMDExMTAyQTI4MkEyNDQ0NDY4ODg0MDAwMEVECis6MjA0MEUwMDAxMDAwMTNGODIwODgyNDg4NDQ5MEY4OTAxMEJFMjE0NDdENDQ0MTQ4MDIyODFBMTBFNDMwMDg0ODExOEUwNjA0MTcKKzoyMDQxMDAwMDEwODAxMDQwMTNGQ0ZEMTAxMEEwMTQ0MDE5QjAxNjBFMzExNEQxMTAxMTEwMTExMDExMTAxMjEwNTIxMDI0MTA3MQorOjIwNDEyMDAwMDAwMDBGRTAwODIwMDgyMDA4MjAwODIwMDgyMDA4MjAwODIwMDgyMDA4MjIxMDIyMTAyMjIwMUU0MDAwMDAwMDQ0Cis6MjA0MTQwMDAwMTAwMjEwODExMzAwQTk4NzI0ODI0MzAxODBFNkZGNDA4MTAwRkYwMDgxMDBGRjAwODEwMDgxMDA4NTAwODIwREQKKzoyMDQxNjAwMDAwMDAzRkYwMDAxMDAwMTAwMDEwM0ZGMDIwMTAyMDAwMjAwMDIwMDAyMDAwMjAwNDIwMDQyMDA2MUZGQzAwMDA3OAorOjIwNDE4MDAwMDQ0MEZGRkUwNDQwMjQ0NDNFMDQ0NDI0N0YyNEM5MjQ3RjI0NDkyNDdGMjQ0MDI0MDAyNDBGMDQ3ODE0MDAwODE2Cis6MjA0MUEwMDAxMDIwMTAyMDEwMjBGREZFMTAyMDE0MjAxOUZDMzEwOEQwODgxMDkwMTA2MDEwNjAxMDkwMTEwRTU2MDQyMDAwQjEKKzoyMDQxQzAwMDA0NDA3QzdDMDQ0MDdDM0UxRkYwMTExMDFGRjAxMTEwMUZGMDA0NDA3RkZDMDQ0MEZGRkUwNjQwMTgzMDYwMTAzOAorOjIwNDFFMDAwMDBGMDFGMDAwMTAwN0ZGQzAzODAwNTYwMTkxRTZGQzQwMDQwMDA4MEZGRkUwMTAwMDEwMDAxMDAwNTAwMDIwMDFCCis6MjA0MjAwMDAxMDQwMTg2MDEwNDgxN0ZDMjA0MDMwNDA2M0Y4NjIwOEExMTAyMTEwMjBBMDIwNDAyMEEwMjExODIyMEUyQzA0N0IKKzoyMDQyMjAwMDEwMDAxRUZDMjI4ODU0NTA4QzYwMjgyMDEwMTAyRkVFNDAwNEJGRkMwMTAwMDkyMDExMTAyMTA4NDUwNDAyMDBENworOjIwNDI0MDAwMDgwMjA0MDJGRkQyMDExMjMyMTIwRTEyMTk5MjIwRDJEMTEyMTExMjExMTIxMTEyMjEwMjIxMDI0MTFFODEwNEYzCis6MjA0MjYwMDAwMDAwMjA3QzI3QzAyMDQwMzdGRUE4RTBBOTU4QTI0NjJERjAyMDIwMjA0MDJGRkUyMDQwMjA0MDIxNDAyMDgwMEEKKzoyMDQyODAwMDQwODAyMDQwMjdGRTAxMTA4OEEwNDg0MDUxQjAxNjBFMTExMDIxMTBFMTEwMjExMDIyMTAyMjEwMjQxMDI4MTBBRgorOjIwNDJBMDAwMDIwMDAxMDAzRkZFMjEwMjVGRjQwMjgwMDQ0MDA4MjA3RkZFMDAxMDBGOTAwODkwMEY5MDA4OTAwMDUwMDAyMEVGCis6MjA0MkMwMDAwMTAwMDA4MDNGRkU0ODA0NDgwMDBGNzgwODg4MDg4ODdGNDgwODUwMkMyMDJBMjA0QjUwOEE4ODI5MDYxMjA0M0UKKzoyMDQyRTAwMDQwMjAyMDIwMzAyMDIwMjAwMDIwRjNGRTEwMjAxMDIwMTAyMDEwMjAxMDIwMTIyMDE0MjAxODIwMTAyMDAwMjA5RgorOjIwNDMwMDAwNDAwMDIxRkMzMDA0MjAwNDAwMDQwMDA0RjFGQzExMDAxMTAwMTEwMDExMDAxMTA0MTUwNDE5MDYxMEZDMDAwMDU2Cis6MjA0MzIwMDAwMDAwN0RGQzQ0MjA0NTIwN0QyMDQ1MjA0NUZFN0MyMDQwNjA1MDYwNDhBMDU0QTA2NTIyNDIyMjBDMUUwMDAwMTkKKzoyMDQzNDAwMDAwMDAxRkYwMDAxMDAwMTAxRkYwMTAwMDEwMDgxMDA4MEZGODAxMDAwODg4NDg4NDQ4MTQ4ODEwMDdGMDAwMDA5MAorOjIwNDM2MDAwMDAwMEY5RkM4ODAwOTAwMDkwMDBBN0ZFOTA0MDg4NDA4QTUwQUE0ODk0NDQ4NDQ2ODg0NDgwNDA4MTQwODA4MEE4Cis6MjA0MzgwMDAxMDIwMTAyMDEwMjBGREZDMjQyMDI0MjAyNUY4NDQ4ODQ4ODgyODg4MTA1MDEwNTAyODIwNDQ1MDgxOEUwNjA0RUUKKzoyMDQzQTAwMDIwMjAzMjIwMjIyNDQzMjQ0QUE4RkEyMDEzRkUyMjcwNDI2OEZBQTQwMkE0MDMyMDFBMjBFMjAwMDNGRTAwMDBFMQorOjIwNDNDMDAwMTAwMDExRkMyMDA0MjQwNDQ0MDRGODA0NDlGQzExMDAyMTAwN0QwMDAxMDAwRDA0RjEwNDQxMDYwMEZDMDAwMEYyCis6MjA0M0UwMDAwMTAwN0ZGQzAxMDAwRkUwMDAwMDFGRjAxMDEwMUZGMDA4NDBGRkZFMTAwMDdFNzgxMjQ4MjI0ODRBNzg4NDAwQkUKKzoyMDQ0MDAwMDAwMDAxMTAwMTEwMDExMDBGQkRDMTE1NDMxNTQzOTU0NTU1NDUxNTQ5MTU0MTI1NDEyNTQxNTVDMTA4MDEwMDAwQgorOjIwNDQyMDAwMDEwMDAxMDAwMTAwN0ZGQzAxMjAxMTMwMEQyMDA5NDBGRkZFMDMwMDAyODAwNDQwMDgyMDEwMTgyMDBFQzAwNDFFCis6MjA0NDQwMDAwODQwMEM0MDE4NDgxN0ZDMzA0MDYwNDRBRkZFMjA0MDIwNDAyMDQ4MjdGQzIwNDAyMDQwMjA0NDJGRkUyMDAwRDgKKzoyMDQ0NjAwMDAyMDAwMTAwM0ZGRTQwMDQ1RkU4MDEwMDAyMDAwRjIwNzJCMDA0QzAxOUMwNjZCMDE4OEU2MDg0MDUwMDAyMDBEOQorOjIwNDQ4MDAwMDgwMDA4MDAwODAwN0Y3QzA5NDQwOTQ0MDk0NDA5NDQxMTQ0MTE0NDExNDQyMTQ0MjE3QzQ1NDQ4MjQwMDAwMDg5Cis6MjA0NEEwMDAwNDQwMDQ0MDdGRkUwNDQwMDEwMDNGRjgxMTIwMEQzMDA5NDA3RkZFMDI4MDAyNDAwNDIwMDgxODMwMEVDMDA0M0QKKzoyMDQ0QzAwMDEwMDAxMUZFN0UyMDEwNDA5MkZDNTQ4NDE4QTRGRUE0MTBBNDE4QTQyNEE0MjI1MDQyNDg4MDg2MDMwMjAwMDBDQworOjIwNDRFMDAwMDAwMEZGRkUwNDQwM0ZGODI0NDgzRkY4MDAwMDFGRjAxMDEwMTExMDExMTAxMTEwMTI5MDA0NjAxODM4NjAxMDQ5Cis6MjA0NTAwMDAwMDAwM0ZGODIxMDgyMTA4MjEwODNGRjgyMTA4MjEwODIxMDgzRkY4MjEwODAxMDAwMTAwMDEwMDAxMDAwMTAwRDIKKzoyMDQ1MjAwMDEwMDAxMUZFMjEyMjNEMjI0MTIyN0RGRTkxMjIxMTIyRkQyMjExRkUxMDIwMTAyMDE0MjAxODIwMTAyMDAwMjBBQworOjIwNDU0MDAwMTAwMDFGQkMxNDg0MjQ4NDI3QkM2NDg0QTQwMDI3QkMyNDQ0MjQyODI3QTgyNDEwMjQzODI0NEUyNTg0MDAwMEIwCis6MjA0NTYwMDAwQzQwNzAyMDEzRkUxMjAyRkNGODEwNDAzOTg4MzY1MDUwNjA1MUIwOTY2ODExQTgxNjI2MTAyNDExNDAxMDgwRjYKKzoyMDQ1ODAwMDA4NDAwQzQwMThBMDExMTAzMjE4NjQwRUE5MTQyMTEwMjExMDIxMTAyMTEwMjIxMDIyMTAyNDEwMjQxMDI4MTA2RAorOjIwNDVBMDAwMDgwMDA4MDA3RjdDMDk0NDA5NDQxMTQ0MTU3QzYyMDAwMTAwN0ZGQzAzODAwNTQwMDkzMDMxMEVDMTA0MDEwMDhDCis6MjA0NUMwMDAwODAwN0Y3QzExNDQxMTQ0MjU3QzQyMDAwRkUwMDAyMDA0MjAwNDIwMDdGQzAwMDQzRkY0MDAwNDAwMjgwMDEwN0UKKzoyMDQ1RTAwMDIwNDAyMDIwMjNGRTIyMDRGOUY4Mjg0MDI4ODg0OTRDNEVEMDQ5MzA1MjY4MzRBNDI5MjY0QTI0ODBBMDAwNDBGMAorOjIwNDYwMDAwMDAwMEZFMUUxMUUwMTAyMDFFMjAyMjIwMjNGRTYyMjA5NDIwMDQyMDA4MjAwODIwMTAyMDIwMjBDMDIwMDAyMEEyCis6MjA0NjIwMDAwNDgwMjRDMDI0ODAyNEZFMjU0MDI2MjAyNDMwMDQxMDAwMDAzRkY4MjQ4ODI0ODgyNDg4MjQ4OEZGRkUwMDAwNTUKKzoyMDQ2NDAwMDA4MDAwQkZDNDkwODQ5MTA0OEEwNDg0MDQ4QjA0OTBFMEEwNDA5MDAzRkY4MDEwMDAxMDAwMTAwRkZGRTAwMDA5NAorOjIwNDY2MDAwMDEwMDExNDAxOTIwMTExODIxMEM0NTA0ODIwMDAxMDAwMTAwRkZGRTAyODAwMjQwMDQyMDA4MTgxMDBFNjAwNDA1Cis6MjA0NjgwMDAxMDQwMUY3RTI4QTA0NTEwODQ0MDA0MjA3RkZDMDIwMDAyMDA3RkZFMDEyMDAwQzAwMTQyMDYyMjc4MUEwMDA2NDgKKzoyMDQ2QTAwMDIwMDAxM0ZDMTAwNDQwMDQ0N0U0NDQyNDQ0MjQ0N0U0NDQyNDQ0MjQ0N0U0NDAwNDQwMDQ0MDA0NDAxNDQwMDhFQQorOjIwNDZDMDAwMDgyMDA0NDBGRkZFMDAwMDNFMDgyMjQ4M0U0ODIyNDgzRTQ4MjI0ODJBMjgyNDEwNDg4ODQ0NDRDNjY2ODIyMjMzCis6MjA0NkUwMDAwODIwMDQ0MDdGRkMwNDQwMUZGODA0NDg3RkZFMDQ0ODNGRjgwQzQ4MEM2MDE0NTAyNDQ4NDQ0RTg0NDQwNDQwRkUKKzoyMDQ3MDAwMDAxMDAwMDgwMUZGODEwMDgxMDA4MUZGODEwMDAxN0Y4MTQwODE3RjgyNDA4MjdGODI0MDg0NDI4ODQxMDAwMDBGOQorOjIwNDcyMDAwMDAwMEZCRjgwQTA4MEEwODRCRjgyQTA4MTIwODEzRjgxMjQ2MkE1ODJFMjA0QTEwODI1ODAyOEUwNzA0MDIwMENGCis6MjA0NzQwMDAxMDA4MTFGQzEwMjAxMDIwRkMyMDI0MjAyNDI0MjdGRTI0MjA0NDIwMjgyMDEwMjAyODIwNDQyMDg0MjAwMDIwNzcKKzoyMDQ3NjAwMDIwMjgzMDI0MjAyNDIzRkU0QTIwRkJFNDEyMjYyMjI0NDNENEZCNTgwMzQ4MzVEQUM0MkEwODQ2MDA4MjAwMDBFRgorOjIwNDc4MDAwMDgyMDA4MjBGRkZFMDgyMDA5MjAwMTAwM0ZGODIxMDgyMTA4M0ZGODIxMDAwMTA4MDEwNDAxRkU3RjA0MDAwMDA5Cis6MjA0N0EwMDAxMDQwMTA0MDEwQTBGRDEwMTIwRTM4MDAzNUY4NTAwMDUwODg5MjRDMTE0ODExNTAxMDIwMTdGRTEwMDAwMDAwMDIKKzoyMDQ3QzAwMDAxMDAwMTAwRkZGRTAxMDAzRkY4MjEwODI5MjgyNTQ4M0ZGODAxMDAwMzgwMDU0MDA5MzAzMTBFQzEwNDAxMDA3RAorOjIwNDdFMDAwMDAxMDAwMThGQzE0MjNGRTIyMTA0MjEwN0JGNENBMTY0QkQ0NEI1NDRCNDg3RERBNDUyQTQ0NEEwODg2MTAwMjQ4Cis6MjA0ODAwMDAwMDQwMDA0MEZFQTAxMEEwMTExMDIyMEMyNUY2N0MwMDY0ODhBNjRDMjU0ODI1NTAzRDEwMjQyNDIzRkUwMDAwNkUKKzoyMDQ4MjAwMDEwNDAxMDQwMTA0MEZCRkUxMDgwMTNFMDE4QTAxMTIwMzNGRUQwMjAxMTI4MTFBNDEyMjYxNDIyNTBBMDIwNDA1NgorOjIwNDg0MDAwMTAwMDEwNDAxMDQwRkNBMDExMTAxM0U4MTQwNjE4MDAzMDg0RDI0NDExNDgxMTEwMTAyMDE3RkU1MDAwMjAwMEM1Cis6MjA0ODYwMDAyMDQwM0Y3RTI4OTA0NTA4OTAwMDA5RkMyMDA0MjdFNDI0MjQyN0U0MjQyNDI0MjQyN0U0MjAwNDIwMTQyMDA4RTQKKzoyMDQ4ODAwMDA4NDAwQzQwMThBMDExMTAzMjBDNjQyNkFCRjQyMDAwMjExMDI0OTgyMkQwMjJBMDIwMjAyRkZFMjAwMDAwMDBGNgorOjIwNDhBMDAwMDgxMDA0MjA3RkZFMDAwMDNGMDQyMTI0M0YyNDIxMjQzRjA0MjUxNDIyMDg3RkZDMDIwNDA0MDQwODE0MzAwODhDCis6MjA0OEMwMDAwMDIwNDAyODIwMjQyRkZFMDgyMDJGRTQyODI2MjgyQzRCQThDQUE4NEE5MDUzOTI1MkFBMjA0NjQxODIwMDAwQjkKKzoyMDQ4RTAwMDA0NDBGRkZFMDQ0MDA1NDA3RkZFMDIwMDA0MDAwQkY4MTgxMDI4MjA0RkZFMDg0MDA4NDAwODQwMDk0MDA4ODAwMgorOjIwNDkwMDAwMjBBMDIwQTAyMkJFMjJBMEZBQzAyMjkwNzI4ODY4ODhBMDAwQTNGQzIyQTQyMkE0MjJBNDIyQTQyRkZFMjAwMDdCCis6MjA0OTIwMDAwODgwNDg4MDQ5RkU0OTIwNEExMDQ4MTAwMzAwMDQ4MDE4NjA2RkRDMDEwMDFGRjAwOTIwMDU0MEZGRkUwMDAwMDAKKzoyMDQ5NDAwMDAwNDA3QzUwNDQ0QzQ0NDg0NDdFN0RDMDEwNDAxMDdFNURDMDUwMjQ1MDI4NTAzMDVFNTBGMDkyMDEwQTAwMDQ4QQorOjIwNDk2MDAwMDA2MDdDNTg0NDUwNDQ3ODU1QzA1NDQwNTQ3QzU3QzA1NDQ4NTQ1MDEwMjAyODUwMjQ5MjQ3MEE4NDA0MDAwMEFDCis6MjA0OTgwMDAxRkYwMTAxMDEwMTAxMTEwMTExMDExMTAxMTEwMTExMDEyOTAwMjgwMDQ4MDA0ODQwODg0MzA4NkMwN0MwMDAwNzUKKzoyMDQ5QTAwMDIwMjAyMDIwMjc3QzM5MjQ0MUZFN0EyNEE3N0MyMTIwRjk3QzI1MjAyM0ZFMjEyMDJBQTAzNDYwMjgxRTAwMDA3NgorOjIwNDlDMDAwMjA0MDNGN0U0ODkwOTUyODA4NDBGRkZFMDAwMDNGMDQyMTI0M0YyNDIxMjQzRjI0MjEyNDIxMjQyNTE0MjIwODYwCis6MjA0OUUwMDAxMDQwMUE0MDEzNDAzMjQwMjNGQzY0NDBBNDQwMjg0MDJGRkUyMDQwMjA0MDIwNDAyMDQwMjA0MDIwNDAyMDQwNkMKKzoyMDRBMDAwMDEwMjAxMDIwMkRGODI0Mjg2NUZFQTgyODJGRjgyMjIwMjJGODMyMjAyREZDMjQyMDJBMjAzMUEwMjBGQzAwMDAxOQorOjIwNEEyMDAwMDgwMDEwRkMzRTg0MjI4NDMyQTQyQUE0MjJBNEZFQTQyMkE0MzIyMDJBNTAyMjUwMjI1MjQyOTI0QThFODUwMDQ1Cis6MjA0QTQwMDAwODA0MDgwNDE0MjQxMjI0MjEyNDdGQTQ4MDI0MTEyNDQ5QTQyNTI0MTUyNDEyMjQwNzg0NzgwNDAwMTQwMDA4QzcKKzoyMDRBNjAwMDIwNDAyMDUwMjA0ODNFNDA0NUZDNDg0MDgwNDAxM0ZFMTA0MDEwNDQxMDI4MTIzMjE0NTIxOThBMTYwNjAwMDBBMQorOjIwNEE4MDAwNDIwMDIyMDYyRkI4MDIyMDg0MjA1NjIwNUEzRTFGQTQyMjI0MjIyNERGQTQ0MjI0NDI0NDQyNDQ0Mjg0NDIwNEExCis6MjA0QUEwMDA4MDIwNDAyODVGMjQxMTIwOTVGRTU1MjAxNTIwMzVGRTM1MjA1NTI0QzQyODRDMTA0QTMyNTE0QTYxMDY0MDAyRjQKKzoyMDRBQzAwMDQ0MDAyMkZDMjAwNDA0MDQ4REY0NEQxNDU1MTQxNUY0MjUxNDI1MTRFNUY0MjQwNDI0MDQyNDA0MjQxNDI0MDhDRAorOjIwNEFFMDAwMDA0MDc4NDAwQkY4MTA0ODE3RkUyMDQ4N0JGODA4NDA0QkZDNDg0MDI4NDAxN0ZDMjg0MDQ2NDA4MUZFMDAwMDc0Cis6MjA0QjAwMDAxMDAwMUZGRTEwMDAzN0ZDMjQ0NDY3RkNBNDQ0MkZGRTIwMDAyN0ZDMjQ0NDI3RkMyNDQ0MjdGQzIwMDAyRkZFOUYKKzoyMDRCMjAwMDA4MTAwNDIwN0ZGQzAxMDAzRkY4MDEwMDdGRkUwNDAwMDQwMEZGRkUwODIwMEU0MDAxQzAwMzMwMEMxODcwMTBGNQorOjIwNEI0MDAwMDg4MDA4RkMwOTA4OEIwODZDOTA0ODIwMDhDODBCMDgxRkZFRTgwODQ5MDgwODg4MDhDODA4ODgwODI4MDgxMDQ4Cis6MjA0QjYwMDAwODgwNDg4MDI4RkMyOTA4MEE5MDI4NjBDODQwMDk4MDAxMTg3REEwMDU0MDA5MjAxMTE4NjEwRTA1MDQwMjAwOTYKKzoyMDRCODAwMDIwMDAxMDAwMTNGQzAwNDA4ODQwNDg0MDUwNDAxMDQwMTA0MDIwNDBFMDQwMjA0MDIwNDAyRkZFMjAwMDAwMDA4OQorOjIwNEJBMDAwRkJGRTA4MDAwOUZDNzkyNDQxRkM0MTI0NzlGQzA4MDA0QkZFRTkyNDQ5RkM2OTI0ODlGQzUwMDAyN0ZFMDAwMDExCis6MjA0QkMwMDAwNDQwMDQ0MEZGRkUwNDQwMDg4MDg4Rjg0OTA4NkU5MDQ4NjAxOTkwMkZGRUM4MTA0OTEwMDkxMDA4NTAwODIwNkQKKzoyMDRCRTAwMDA0MDAyNDQwMTQ3RTBDODQwRDQ4MTQzMDY1MjAwNTQwRkZGRTAzODAwNTQwMDkyMDMxMThDMTBFMDEwNDAxMDBCQworOjIwNEMwMDAwMDQ0MDQ0N0UyNDg0MTQ4NDA1NjgxNjUwMjQyMDQ0NDAwNTAwRkZGRTAxMDAwMjgwMDQ0MDA4MzAzMDBFQzAwNEIwCis6MjA0QzIwMDA0MTEwMjExMDMxMTAyMTEwMDdGQzAxMTBFMTEwMjExMDJGRkUyMTEwMjExMDIxMTAyQTEwMzIxMDI0MTAwODEwQzIKKzoyMDRDNDAwMDAwMDA3RkZFNDAwMDQ3RTA0NDAwNDQxMDQ3Rjg0NDQwNDQ0MDQ0NDA0ODQwNDg0MDUwNDA0MDAwN0ZGRTAwMDBCMAorOjIwNEM2MDAwMDQ4MDI0RjgxRDA4MTY5MDY0NjAwNzgwRkZGRTA0ODAzRkY4MjQ4ODI4RjgzMDA4M0ZGODIwMDgzRkY4MjAwODA0Cis6MjA0QzgwMDAwMDgwNzhGODQ5MTA1MkEwNTA0MDYwQjA1MzRFNDg0MDRCRjg2ODQwNTI0MDQzRkM0MDQwNDA0MDQwNDA0MDQwNTQKKzoyMDRDQTAwMDA0MjAwNDIwRkZGRTA1MjAxMDgwMUZGQzMwODA1RkY4OTA4MDFGRjgxMDgwMUZGQzAwMDAyODg4MjY2NjQ0NDQ0MgorOjIwNENDMDAwMTAwMDExMDAxMTNFMTFFNEZEMjQxMTI0M0JFNDM1Mjg1MTI4NTU5ODk1NTAxOTE4MTEyNDExNDYxNTgyMTIwMEVDCis6MjA0Q0UwMDAwMEEwN0M5MDExRkUxMTEwMjMxMDI1RkM3RDEwNjVGQ0E1MTAyNTEwMjVGRTI0MDAzRDU0MjEyQTAyMkEwMDAwNUQKKzoyMDREMDAwMDA5MDAwODg0MUZGRTMwODA1MDgwOUZGQzEwODAxRkZDMTA4MDEwODQxRkZFMTAwMDI4ODgyNDQ0NjY2NjQyMjI4MgorOjIwNEQyMDAwMDA0MDNDMjAyN0ZFMjQ4MDNDRDAyNTBDMjYwNDI1MDgzQzg4MjQ1MDI0MjA0NDUwNDQ4ODU1MDY4QTA0MDAwMEI1Cis6MjA0RDQwMDAwMjAwMDEwMDAxODA3RkZFMDgyMDBDMTgxMDBDMjAyMDA4MzAwNDYwMDJDMDAxODAwMzQwMDQzMDE4MUM2MDA4QjgKKzoyMDRENjAwMDA4MDAwNDNFN0ZBNDAwMjgyMjI4MjFCMDQwQThBMjI0MTIyMjBDMjIwNDMyMEEyQzExMjA2MTIwMDAyMDAwMjAxNQorOjIwNEQ4MDAwMjA4MDEwODAxM0ZDMDA4MDgwOTA0MDY0NTFBNDE2MUMyMDAwMkZGQ0MxMjA0MTIyNDIyMjQyMjI0QzFFNDAwMDc4Cis6MjA0REEwMDAwMDFDRjlFMDA4MjA0ODIwNEJGRTQ4NjA0ODkwN0M4ODA1OTYzNjkwQzQ5MDA0OTAwNTEwMjkxMDEyMTAwMDEwRDgKKzoyMDREQzAwMDIwMDgyM0ZDMjA0MDIwNDBGQkZFMjhBMDI4OTA0OTA4NEE5Njc0OTAxMDkwMjg5MDI1MTA0MTEwODIxMDA0MTA5QQorOjIwNERFMDAwMDdGQzAyODhGMTUwOTdGQzk1MjQ5NTI0OTdGQzkwMDg5Nzg4OTZGRUY1ODg5N0E4MDQyODA1MDgwNTg4MDY5OEUyCis6MjA0RTAwMDAxMDAwMTA0NDExMjRGQ0E4MTNGRTEyMDQxNUY4MTkwODMxNDhEMTQ4MTE2ODEwQTAxMEEyMTEyMjU2MUUyMDAwQ0MKKzoyMDRFMjAwMDIwNDAyMDIwM0MyMDIzRkU0MDAwN0M4OEEwODQyMTE0RkE5MDIwOTAyMDYwMjA2MDI4OTAzMzBFMkMwNDAwMDA1NQorOjIwNEU0MDAwMjAxQzIxRTAyMDIwM0MyMDUzRkU5MDUwN0U4ODExMDQxNjk2MTA5MDI4OTAyNDkwNDQ5MDQxMTA4MjEwMDQxMEFBCis6MjA0RTYwMDAxMDgwMTg4MDEwRkMyRjgwMzA5MDYwNjJBMUEyMkUxQTIwMDQyRkZDMjEyMDIxMjAyMjIyMjQyMjI4MUUwMDAwQTEKKzoyMDRFODAwMDAxMDA3OTFFNDkxMjRCRDI3OTEyNDkxMjRGRDI0OTEyNzkxMjRBMTI0QTUyNEZGNjQ4NTA0ODEwQTgxMDkwMTA5MAorOjIwNEVBMDAwODg4MDQ4NDAzMDQ0MjdGRTUxMTA5MTA4MEEwNDFEMTQyOTEwNDhBMDg4QTAwODQwMTBBMDUxMTgyNjBFMTgwNDk2Cis6MjA0RUMwMDAwNDAwMDdGODA0MTAwODIwMUZGQzMwODQ1MDg0MUZGQzEwODQxMDg0MUZGQzEwODQxMDg0MjA4NDIwOTQ0MDg4NEEKKzoyMDRFRTAwMDIwNDAyMDIwMjNGRTdDMDA0NTEwODkwODAyMDQyMjE0MjUxMDIwOTAyMDYwMjQ2MDI4OTAzMzA4MkMwNjAwMDA0NQorOjIwNEYwMDAwMjEwODMyMDgyN0M4NDQ1MDU3REVGNDc0MTdENDIxMTQ0N0Q0RjIxNDAzODgxQTg4RTQ5NDA0OTQwQUE2MTE0NDhCCis6MjA0RjIwMDAxMDgwMTA2MDIwMjAyM0ZFNDQwMEZDOTAwOTBDMTIwNDIwMTA3QzkwMDA1MDAwMjAwQzUwNzA4ODAxMEUwNjA0RkMKKzoyMDRGNDAwMDE0ODQyNDg0NDkxNDI0OTQzRjk0MjQ5NDNGOTQyNDk0M0Y5NDA0MTQ3RkQ0MEUxNDE1MDQyNEM0NDQ5NDA0MDhBMQorOjIwNEY2MDAwMDgyMDA4MjA3RjIwMEE3RUZGQzQwODQ0MTBDNDNFNDhDNDI4MDgyODBGMTBGODEwMDgyODA4QzgyQjA2MTAwNEM5Cis6MjA0RjgwMDAwMDIwRkUyNDI4RkMyODI4RkUzMEFCRkVBQTQwQUFGQ0NGMDg4MjEwRkZGRTgyMTA4MjEwRkUxMDgyNTAwMDIwNkEKKzoyMDRGQTAwMDIwM0MyM0MwMjA0MEZDNDAyM0ZFNTBBMDUxMTBGQTBFMTQ5NDEwOTAxQzkwRjA5MDExMTAxMTEwMTIxMDE0MTBBMAorOjIwNEZDMDAwMTA0MDEwMjBGREZFMjAwMDUwOTA1MDg4OTEwNEZBOTQxMDkwMTA5MDNDNjBEMDYwMTA5MDExMDgxMjBFMTQwNDVFCis6MjA0RkUwMDAwMDA0MDAwNDdDODQ0NDg0NDQ4NDQ0ODQ0NDg0NDQ4NDQ0OUM3REU0NDQ4NDQwMDQwMDA0MDAwNDAwMDQwMDA0NjQKKzoyMDUwMDAwMDAyMDAwMTAwN0ZGRTQ0MjQxOTE4NjkwNjBGRjgxMTAwMjEwMDdGRkUwMDAwMUZGMDEwMTAxMDEwMUZGMDEwMTBENAorOjIwNTAyMDAwMTAwMDExRkMxMTA0MTFGQ0ZEMDQxMUZDMTQ4MDE5RkUzMjIyRDYyMjEyNTIxMzhBMTNGRTEwMDI1MDBBMjAwNDhBCis6MjA1MDQwMDAxMDQwMTAyMDEzRkNGRDA4MTA5MDE3RkUxNDAwMTg4MDMwODBERkZFMTExMDEzMTAxMEUwMTA1MDUxOEMyNjA0MzMKKzoyMDUwNjAwMDIwODAyNDg4M0U5QzIwRTAyNDgyMjg4MjMyN0UyNDAwMUZGMDEwMTAxMDEwMUZGMDEwMTAxMDEwMUZGMDEwMTAxOQorOjIwNTA4MDAwMEMyMDcwMjAxMDI0MTNGRUZFMjAxMDIwMzgyMDM1RkM1NDAwNTAwMDkxRkMxMTA0MTEwNDExMDQxMUZDMTEwNEE2Cis6MjA1MEEwMDAxMTAwMTkxRTIxMDA0N0MwOTkwMDExMUUyRkU4NjAwOEExMDgyN0M4MjEwODIxMDgyMUM4MjcyODIwMTAwMDAwRTcKKzoyMDUwQzAwMDdDNDA0NDQwNDhBMDUwOTA2MTA4NTIwNjREMTA0OTEwNDkxMDY5MTA1MTEwNDExMDQyMTA0MjEwNDQxMDQwMTA4NQorOjIwNTBFMDAwMDgyMDA4MjA3RkE4MDgyNEZGRkUyODIwMjQyMDdGQTg2NDJDQkYxODI0MTAzRjEwMjQzODI0NEEzRjg2MjAwMkMyCis6MjA1MTAwMDAwODIwMDgyMDA4MjA3RjIwMDhGRTA4MjJGRkEyMTAyMjEwMjIxNDIyMjIyMjRGMjJGQTQyNDA0RTAwODQwMDAwMEEKKzoyMDUxMjAwMDA0MjAwNDIwRkZGRTA0MjAwNDIwMDAwMDNGRjgwMjA4MDIwODAyMDgwMjA4MDIyODAyMTAwMjAwMDIwMDAyMDA0MQorOjIwNTE0MDAwMDAwMDEwMjAxMDIwMTAyMEZERkUxMDIwMzAyMDM5RkM1NDAwNTQwMDkxRkMxMTA0MTEwNDExMDQxMUZDMTEwNDc5Cis6MjA1MTYwMDAwMTAwMDEwMDAxMDA3RkZDMDM4MDAzNDAwNTIwMDkxODExMEU2MTA0MDEwMDAwMDA0ODg4NDQ0NDg0NDQwMDAwMDAKKzoyMDUxODAwMDIwNDAyN0ZFMjA0MEZCRjgyMDQ4MjdGRTI4NDgzM0Y4NjA0MEEwNDAyMjdDMjI0MDIzNDAyNEMwQTQzRTQ4MDAxRQorOjIwNTFBMDAwMDA0MDc3RkM1MDQwNTdGODcwNDg1N0ZFNTA0ODU3Rjg3MDQ4NTI0MDUyN0M1MjQwNzU0MDU0QzAwODNFMTAwNDlDCis6MjA1MUMwMDAyMUZDMTEwNDExRkNGRDA0MDFGQzg4ODA0OEZFNTEyMjUyMjI1NDUyMUE4QUUyMDIwM0ZBMDAwMjAwMTQwMDA4MTQKKzoyMDUxRTAwMDIwNDAxMDQwMTA0MDA3RkU4ODQwNDg0MDUwNDAxN0ZDMTAwMDIzRjhFMjA4MjIwODIyMDgyMjA4MjNGODIyMDhERgorOjIwNTIwMDAwMTAyMDEwMjAyMDIwMjNGRTQ4MjBGMDIwMTFGQzIwMDA0MDAwRjlGQzAxMDQwMTA0MTkwNEUxRkMwMTA0MDAwMEVBCis6MjA1MjIwMDAyMDAwMjFGQzdDNDQ4ODQ0N0U0NDRBOUM3RjA4NEE5MDRBRkU3RjEwNEExMDRCRkU0QTEwNDIxMDRBMTA4NDEwODgKKzoyMDUyNDAwMDEwMDAxOUY4MTEwODExMDhGRDA4MjVGODI1MDgyNTA4NDkwODI5RjgxMTA4MTkwODI1MDg0N0ZFODQwMDAwMDBERAorOjIwNTI2MDAwMDA0MDAwNTAwMDQ4N0ZGRTAwNDAxMjQwMTI0ODdGNEMxMjQ4MTIzMDEyMjAyMjUwMjI5MDQzMEE4MjA2MDAwMjU5Cis6MjA1MjgwMDAwNDIwMDQyMEZGRkUxNDIwMTA0OEZERkUxMDQ4N0RGRTEwMDBGRUZDMzg4NDM0RkM1Mjg0OTA4NDEwRkMxMDg0RUYKKzoyMDUyQTAwMDA0MjAwNDIwN0ZGRTA0MjAwNTIwMDEwMDAyQzAwNDMwMTgwRUU0MjQwNDIwMDQyMDA4MjAwODIwMTAyMDIwMjBCMworOjIwNTJDMDAwMUZGODExMDgxMTA4MUZGODExMDgxMTA4MUZGODExODgwMjQwMDQzMDFBNEU2MjQ0MDI0MDA0NDAwODQwMTA0MEVBCis6MjA1MkUwMDAxMTEwMTkxMDExMTAyN0ZDMjExMDYxMTBBRkZFMjAwMDIzRjgyMjA4MjIwODIzRjgyMjA4MjIwODIzRjgyMjA4OEUKKzoyMDUzMDAwMDAxMDAwMTAwMDI4MDAyNDAwNDMwMTgxQzY0MjgwNDIwMDQyMDA0MjAwNDIwMDgyMDA4MjAxMDIwMjAyMDAwMDA4MworOjIwNTMyMDAwMDEwMDAwODAxRkZFMTA0MDkwQTA1MTEwNTIwQzFEMTYzMTEwNTExMDkxMTAxMTEwMjIxMDIyMTA0NDEwODgxMEE5Cis6MjA1MzQwMDA0MDIwMjAyODMwMjQyRkZFMDAyMDA0QTBFNEE4MkZFQzI0QTgyNEE4MjQ5MDI0OTAyQ0FBMzQ0QTI4ODYwMTAwQjYKKzoyMDUzNjAwMDAwMDAzRkZDMjAwNDIwMDQzRkZDMjA4MDIwODAyRkY4Mjg4ODI4ODgyRkY4Mjg4ODQ4ODg0RkY4ODgwODAwMDAyQQorOjIwNTM4MDAwMDEwMDAxMDAwMTAwM0ZGODIxMDgyMTA4MjEwODIxMDgyMTA4MjEwODIxMDgyMTA4MjEzODIxMTAwMTAwMDEwMEZGCis6MjA1M0EwMDAxMDQwMUY3RTI4QTA0NTEwODQ0MDNFNDAyM0ZDMjI0NDNFNDQyMjQ0MjI0NDNFNDQyMjQ0NDI4NDRBQTg4NTEwOTkKKzoyMDUzQzAwMDAwNzAxRjgwMTAwMDEwMDAxMDAwMUZGRTEwNDAxMDQwMTA0MDEwNDAxMDQwMjA0MDIwNDA0MDQwODA0MDAwNDBBMQorOjIwNTNFMDAwMDEwMDAxMDAwMjgwMDQ0MDA4MzAzMDBFQ0ZGNDAxMDAwMTAwM0ZGODAxMDAwOTIwMDUyMDA1NDBGRkZFMDAwMEUyCis6MjA1NDAwMDAwMTAwMDEwMDAyODAwNDQwMDgyMDEyMTgyMThFQzA4NDAwMDAxRkYwMDAyMDAwMjAwMDQwMDA0MDAwODAwMTAwMkYKKzoyMDU0MjAwMDQwNDAyMDQwMjdGODAwNDg4RkZFNTA0ODU3RjgxMDQwMjA0MEU3RjgyMDQwMkZGRTIwNDAyMDQwMjA0MDIwNDAxNQorOjIwNTQ0MDAwNDExMDMxMTAyN0JDRjkxODBCQjYxNTU0MjExMDY4MDBCM0ZDMjgwMDI3RkUyMDIwMjEyODIyMjYyNEE0MjA0MDBFCis6MjA1NDYwMDAwODAwNEJGQzQ4ODg0ODkwNDg2MDQ5OUUwNzA0MDQ0MDBGODAwMjEwMEZGODAxMDgxMTIwMTExODI1MDgwMjAwMUQKKzoyMDU0ODAwMDIwMjAyMDQwM0RGQzIxMDQ0MUZDN0QwNDkxRkMxMDIwRkRGRTExMjIxMTIyMTEyMjE1MkExOTI0MTAyMDAwMjAzMworOjIwNTRBMDAwMDgwMDBDMDAxQkY4MTIwODIyMDgzMTEwNTExMDUxMTA5MEEwMTBBMDEwNDAxMEUwMTE5ODEzMEUxQzA0MTAwMDY0Cis6MjA1NEMwMDAwMTEwODExMDRGRkU2MTEwNDFGMDAwNDBFM0Y4MjI0ODIzRjgyMDQwMjdGQzIwNDAyQkY4MzA0MDJGRkUwMDAwRjgKKzoyMDU0RTAwMDAxMTA0MTEwMjExMDM3RkMyMTEwMDExMDAxMTBGN0ZFMTExMDExMTAxMjEwMTIxMDE0MTAyODAwNDdGRTAwMDA4NworOjIwNTUwMDAwMjQwMDI0MUNGRUUwMjQ4MDNDODAxMDgwN0NGRTU0OTA3QzkwMTA5MDEwOTBGRTkwMTExMDExMTAxMjEwMTAxMDlECis6MjA1NTIwMDA3RkZDMDQ0MDI0NTAxNDUwMTQ2MDA0NDBGRkZFMDAwMDFGRjAxMDEwMTAxMDFGRjAxMDEwMTAxMDFGRjAxMDEwNTIKKzoyMDU1NDAwMDA4MTAwODEwN0VGRTFDMzAyQTU4NDk5NDg4MTIzRkY4MDAwMDAwMDBGRkZFMDkyMDExMTAyMTA4NDUwODAyMDA2NAorOjIwNTU2MDAwNDAwMDIwM0MzM0MwMjIwMDAyMDAwM0ZFRTIyMDIyMjAyMjIwMjIyMDIyMjAyMjIwMjQyMDUwMDA4RkZFMDAwMDBBCis6MjA1NTgwMDAyMDAwMjNGODIyMDgyQTA4MkJGOEIyNDhBMjIwQTIxMDI0OTgyNDRFMzQ2NDI5MjA0OEMwNDg2MDgwMjAwMDAwODQKKzoyMDU1QTAwMDQwMDAyN0Y4MjAwODg3Rjg1MDA4NTdGODEwMDAyRkZFMjgwNEUzRjAyMjEwMjEyMDIwQzAyMEEwMjMxQzJDMDg3QworOjIwNTVDMDAwMDAwMDFGRjgxMDA4MTAwODFGRjgxMDgwMTA4MDEwNDAyNjIwMjE5ODQwOEU4NDA0MDMwMDAxODAwMDgwMDAwMEE0Cis6MjA1NUUwMDAwMDIwN0UyMDAyMjAwNDIwMDlGQzE0MjQyMzI0QzEyNDdGMjQwODQ0MDg0NDA4ODQwRTg0RjExNDQyMDgwMDAwOTYKKzoyMDU2MDAwMDA5MDIwOTAyN0ZFMjA5MTIwMDEyM0ZEMjA5MTIwOTEyN0ZEMjA5MTIwOTEyMDkwMjExMDIxMTEyMjEwQTQxMDQ2NworOjIwNTYyMDAwMTAyMDEwMjBGRUZFMTAyMDEwMjA3RUZDNDI4NDQyODQ3RUZDMjg1MDI4NTAyOTUyMkE1MjVDOTI4QjBFMDAwMEMwCis6MjA1NjQwMDAwNDIwMDQyMDdGRkUwNDIwMUZFMDAwNDAwMDgwMDM0MDBDMzAzMDBFREZGNDAxMDAwMTAwMDEwMDAxMDA3RkZDOTMKKzoyMDU2NjAwMDAwNDA3QkZDNDg0MDRCRkM0ODQwN0ZGRTQ4MDA0QkY4N0EwODRCRjg0QTA4NEJGODdBMDg0QTA4NDIyODAyMTA2QQorOjIwNTY4MDAwMDAwMDBGRjAwODEwMEZGMDA4MTAwRkYwMDgxMDAwMDA3RTdFNDI0MjdFN0U0MjQyNDI0MjdFN0U0MjQyMDAwMEMxCis6MjA1NkEwMDAyMDQwMjAyMDNERkU0NDAwNDgwMEZDRkM1NDg0N0M4NDU0RkM1NDEwN0MxMDAwOTQwNDkyMTkxMkUwNTAwMDIwQ0UKKzoyMDU2QzAwMDAyMDAwMTA4N0ZGQzAwMDAwMDAwMUZGMDEwMTAxMDEwMUZGMDAxMDAwOTMwMTkxODMxMEM0MTA4MDUwMDAyMDBFRQorOjIwNTZFMDAwMTA0MDEwMjAxM0ZFMTAwMDE4MDA1NUZDNTUwNDkxMDQxMUZDMTAyMDExMjgxMTI0MTIyNjE0MjIxMEEwMTA0MDk5Cis6MjA1NzAwMDAxMDIwMTFGRTk0MjA1NEZDNTgyMEZERkUzMDAwMzhGQzU0ODQ1MkZDNTA4NDkwRkMxMDg0MTA4NDEwOTQxMDg4ODUKKzoyMDU3MjAwMDEwMDAxM0ZFOTQyMDU1RkM1OTI0RkYyNDMxRkMzOTI0NTUyNDUxRkM5MjQwMTE0MDEwODAxMTYwMTIxRTE0MDRFNworOjIwNTc0MDAwMTAwMDExRkMyMDA4MjAxMDQ4MzBGMEM4MTMwNjIwMDI0MUZDRjgyMDAwMjAwMDIwMTgyMEUzRkUwMDAwMDAwMEJCCis6MjA1NzYwMDAwNDIwMDQyMDA0MjAwNDI0N0ZGRTA0MjAwNDIwMDQyNEZGRkUwNDIwMDQyMDA4MjAwODIwMTAyMDIwMjA0MDAwNjMKKzoyMDU3ODAwMDE0NDA3RjQwMTQ3RTdGNDg2MUE4QkQxMDI1MjgzRDQ0MDI4MkZGRkUwMDAwMUZGMDAwMDAxRkYwMTAxMDFGRjAyQgorOjIwNTdBMDAwMUZGMDEwMTAxRkYwMTAxMDFGRjAwMTAwRkZGRTAwMDAxRkYwMTAxMDFGRjAwOTIwMTkxODYxMEMwNTA4MDIwMDZBCis6MjA1N0MwMDAwMUZFN0MyMDA4NDAxOUZDMjUwNEMzMDQwMTI0RkQyNDExMjQxMTI0MTEyNDEwNTAxRTQ4RTA4NjAzMDIwMDAwQ0IKKzoyMDU3RTAwMDEwNDBGRTQwMTA3ODdDOTAxMDIwRkVGQzAwMjQ3REZFNDQyNDdDRkM0NDIwN0MyMDQ0MjA0NDIwNTRBMDQ4NDA5QQorOjIwNTgwMDAwMDA0MDIwMjAyM0ZDMjEwODIwOTBGQkZDMjAwMDIxRjgyMTA4MjFGODIxMDgzOUY4RTA5MDQwOTIwMTEyMDIwRURGCis6MjA1ODIwMDAxMjIwMTIyMEZGQTAxMjIwMjA3RTNGNDQ0MUM0ODE0ODNEMjgyNTI4MjUxMDNEMTAwMTI4MDE0RTA1ODQwMjAwMEQKKzoyMDU4NDAwMDIwNDAyMDIwM0RGQzIwODg0MDUwN0JGRUEwMDAyMUY4RjkwODIxRjgyMTA4MjVGODI4OTIzMTEyMjIwRTAwMDA3OAorOjIwNTg2MDAwMTAwMDFCRjgyMDEwNDAyMDkwNDAxOEIwMzMwQzZDMDZBN0ZDMjA0MDIwNDAyMDQwMjA0MDIwNDAyRkZFMjAwMDVDCis6MjA1ODgwMDAwMTAwMDA4MDFGRkUxMDAwOTdGODUwMTA1MDIwMzBEMDUzMDg5QzA0MTdGQzIwNDAyMDQwNDA0MDVGRkU4MDAwRDAKKzoyMDU4QTAwMDIwMjAxMUZFMTAyMDdDRkMwMDIwNDVGRTI0MDAyNEZDMjg4NDI4RkMxQzg0RTBGQzAwODQwMDg0MDA5NDAwODhEQQorOjIwNThDMDAwMDIwMDAxMDA3RkZDMDQyMEZGRkUwMDAwMUZGMDEwMTAxRkYwMTAxMDFGRjAwNDQwMDQ0MDA4NDIwODQyMTAzRTUyCis6MjA1OEUwMDAwMjAwMDEwMDNGRkMwNDIwMDI0MDdGRkUwMDAwMUZGMDEwMTAxMDEwMUZGMDA0NDAwNDQwMDg0NDMwNDRDMDNDRTUKKzoyMDU5MDAwMDAxMDA0MUY4MjIxMDMyMjAyN0Y4MDg0ODIwNDgyRkZFMjA0ODIwNDhDN0Y4NDA0MDQwNDA0MDQwNDE0MDQwODA3NQorOjIwNTkyMDAwMTAwMDEzRkMxMjA0MTYwNDVBRjQ1Mjk0OTI5NDEyOTQxMjk0MzJGNDJBOTQyQTA0NDIwNDQyMDQ4MjE0MDIwODM0Cis6MjA1OTQwMDAwMjAwMDEwMDdGRkU0ODI0MTAxODdGRjYwMjEwN0ZGRTA0MTAxRkYwMDgwMDNGRjBDODEwMDgxMDBGRjAwODEwQ0UKKzoyMDU5NjAwMDIwRDAyNzEwMjExMDIxMTBGOTE0MkZENjIzNTgzM0IwNjU1MEE1MTgyOTI4MzEyODIxNEMyMTQ2QTE4NDQxMDBEOAorOjIwNTk4MDAwMDIwMDAxMDA3RkZFNDAwNDEyMjAyMjEwNDIwODFGQzAwMjQwMDI0MDA0NDAwNDQyMDg0MjEwNDIyMDNFMDAwMEFFCis6MjA1OUEwMDAwODA0MDgwNDEwNDQxMjQ0MjI0NDdDNDQyNDQ0MDg0NDEzNDQzQzVDMDA2NDAzNDQxQzA0NjAwNDAwMDQwMDA0MjUKKzoyMDU5QzAwMDAwODAwMDgwN0M4MDEwRjgxMTEwMTExMDdEMTAxMjIwMTQyMDEwNTAxQzUwNjA4ODAxMDgwMjA2MDQwNDA4MDBCOQorOjIwNTlFMDAwMDQ0MDA0NDAwNDQwN0M3QzA0NDAwNDQwN0M3QzA0NDAwNDQwMDQ0MDdDN0MwNDQwMDQ0MEZGRkUwMDAwMDAwMDFBCis6MjA1QTAwMDAwMjAwMDIwMDA0NDAwN0UwMDg0MDA4NDAxMDgwMjBDMDQxNDAwMTIwMDIyMDA0MTAwODE4MzAwRUMwMDQwMDAwNUQKKzoyMDVBMjAwMDAyMDAwN0UwMDg0MDEwODAyMTQwNDIzMDBDMEMzMTA0QzkxMDBCMjAxMjgwMDQ0MDA4MzAzMDFFQzAwNDAwMDA2MQorOjIwNUE0MDAwMDIwMDAyMDAwMjAwMDIyMDdGRjAwMjIwMDIyMDA0MjAwNDIwMDQyMDA4MjAwODI0MTAyNDIwMjY0MDNDMDAwMEI1Cis6MjA1QTYwMDA0MDAwMkZGRTIxMjAwMTIwOTdGQzU1MjQxNTI0MjUyNDI1MjQyNjNDQzQwNDQ3RkM0NDA0NDdGQzQ0MDQwMDAwNDAKKzoyMDVBODAwMDAwMDA3RkZFNDAwMDVGN0M1MTEwNUY1MDUxNTA1MUZFNUYxMDU0Mjg1MjI4NTcyODU5NEE5MDRBODA4NjAwMDAwNworOjIwNUFBMDAwMDg0MDBBNjAwQTQwRkY3RTA4NDQ0QTg0MkFDNDJENDgxQzI4MkIyODQ5MTA4ODEwMDgyODA4QzgyQjA2MTAwNDIzCis6MjA1QUMwMDAwMDAwMjNGQzIyMDQyMjA0MjIwNDIyMDQyMjA0MjNGQzIyMDQyMjA0MjIwNDIyMDQyMjA0MjNGQzIyMDQwMDAwQzcKKzoyMDVBRTAwMDAyMDAwNzAwMzg3QzIwMDQyMDA0MjAwNDIwMDQzRTdDMjAwNDIwMDQyMDA0MjAwNDIwMDQzRkZDMjAwNDAwMDA4QworOjIwNUIwMDAwMDYwMDM4RjgyMDA4M0NGODIwMDgzRkY4MDAwMDNGRjgyMTA4M0ZGODIxMDgzRkY4MDIwMDNGRjgwNDA4MzgxODA4Cis6MjA1QjIwMDAxMDQwMTA0MDFGNDAyMjYwNTI1ODhBNEMwNDQ4MEI0MDMwRkVDMDAwMUZGMDEwMTAxMDEwMTAxMDFGRjAxMDEwNDEKKzoyMDVCNDAwMDEwMjAwODI4RkYyNDAwMjQwMDIwN0ZGRTQyNTA0MjUwN0U1MDA4NTAyQzUwMkE5MDRBOTI4OTEyMkEwRTEwMDBDMgorOjIwNUI2MDAwMDA4MDAwNDAxRkZFMTEwMDkxMDA1MUYwMTIyMDMyMjA1NDIwOTg0MDIwNDAyMEEwMjExMDQyMDg0NDBFODgwNDFDCis6MjA1QjgwMDA0ODgwNDg4MEZFODA0OUZFN0E0MjExNTJGQ0UyOTVGQUZDNDIxMEUyMTBEMkZENTIxMjQyMTA0MjEwNEExMDA0QUYKKzoyMDVCQTAwMDEwODAxMEMwMTA4MEZERkMxMTA0MTIwNDE1RTQxOTI0MzEyNEQxMjQxMUU0MTAwNDEwMDQxMDA0NTAxNDIwMDg5NAorOjIwNUJDMDAwMDgwMDg5Rjg1MTA4MjEwODUxMDg5MUY4MDkwODE5MDgyOTA4NDlGODg5MDgwOTA4MDkwODExMDg1N0ZFMjAwMEYzCis6MjA1QkUwMDAwMTAwMDA4NDFGRkUxMDAwOTNGODUyMDg1MjA4MzNGODUyMDg5MjA4MTNGODEyMDgyMjA4MjIwODRGRkU4MDAwNEYKKzoyMDVDMDAwMDNGRjgyMDA4MjAwODNGRjgyMDgwMjA4MDNGRkMyMDgwMjA4MDI3RjgyNDA4MjQwODQ0MDg0N0Y4ODQwODAwMDA3RAorOjIwNUMyMDAwMDA0MEY4NDAwODgwNDhGQzQ5MDQ0QTA0NDhGNDdDOTQwNDk0MzQ5NEM0RjQwNDA0MDQwNDE0MTQwODA4MDAwMEQ5Cis6MjA1QzQwMDAwNDIwMDQyMEZGRkUxNDIwMTAwMDFGRkMyMTA0MjkyNDQ1NDQ5RkY0MDM4NDA1NDQwOTM0MTEyNDIxMTQwMTA4OTIKKzoyMDVDNjAwMDNGRjgyMDA4MjAwODNGRjgyMDA4MjAwMDNGRkMyMDA0MkZDNDI4NDQyODQ0MkZDNDI4NDQ0ODA0NDAxNDgwMDg2RAorOjIwNUM4MDAwMDAwMDAzRjhGQTA4OEEwODhBMDg4QkY4OEEwODhBMDg4QTA4RkJGODhBMDg4MjA4MDIwODFGRkUwMDAwMDAwMDc0Cis6MjA1Q0EwMDAyMDAwMjBGRTIwODAzRTgwNTA4MDkwRkMxMDg0RkU4NDEwODQxOEZDMTQ4NDIyODAyMjgwNDA4MDgwRkUwMDAwMTQKKzoyMDVDQzAwMDI0MTAxMjE4MDkxMDA5MjBGRkZFMDQ0MDA5MjAxMTEwMkZFODQxMDY4MTAwM0ZGODAxMDAwMTAwMDEwMDAxMDA3RgorOjIwNUNFMDAwNDAwMDIzRjgyMjA4MEEwODhBMDg0QkY4NTIwODEyMDgyMjA4RTNGODIyMDgyMjA4MjIwODIyMDgyRkZFMjAwMENBCis6MjA1RDAwMDA3RjAwMjJGQzNFMDgyMkM4M0UzMDIyNDgzRjg2QzIzODNGQzAwMTE4MTlBMDYxNDAwNTMwMTkwRTYxMDQwMTAwRUIKKzoyMDVEMjAwMDEwMDAxMUZDMTEwMDExMDBGRDAwMTFGQzE1MDQxOTA0MzEwNEQxRkMxMTAwMTEwMDExMDAxMTAwNTFGRTIwMDAyRgorOjIwNUQ0MDAwMTAwMDEzRkMxMjA0RkEwNDEzRkMxMjIwMTYyMDFCRkUzMjIwRDIyMDEzRkMxMzA0MTUwNDE1MDQ1OUZDMjEwNDZBCis6MjA1RDYwMDAwMDAwM0ZGQzIwMDAyMDAwMjAwMDNGRjAyMDEwMjAxMDIwMTAzRkYwMjAxMDIwMDAyMDAwM0ZGRTIwMDAwMDAwQ0QKKzoyMDVEODAwMDAwMDAwRkYwMDgxMDBGRjAwODEwMEZGMDA4MTAwRkYwMDgxMDA4MTBGRkZFMDQwMDA2MjAwQzEwMTAxODIwMDhGQworOjIwNURBMDAwMDAwMDdERkU0NTAwNDUwMDQ1MDA3REZDMTEwNDExMDQ1RDA0NTFGQzUxMDA1MTAwNUQwMDcxMDBDMUZFMDAwMDE5Cis6MjA1REMwMDAwMDAwN0RGQzQ1MDQ0NTA0N0RGQzU1MjAxMTIwNTFGRTVEMjA1MTIwNTFGQzUyODQ1RTg0RTI4NDA0RkMwODg0NjUKKzoyMDVERTAwMDEwMDAxMUZFMjEwMjNEMDI0MUZFN0QxMDkxMTAxMUZFRkQxMDExMTAxMTdFMTE0MjExNDIxNjQyMUE3RTE0NDJGRAorOjIwNUUwMDAwMTAwMDFCRjgxMjA4MjNGODMyMDg2M0Y4QTIwODIzRjgyMjA4MjIwODJGRkUyMTEwMjM4ODI2MEMzODA4MDAwMDAxCis6MjA1RTIwMDAwODAwMDgwMDBGRkMxMDA0MTAwNDIwMDQ0RkM0ODg0NDA4NDQwODQ0MEZDNDA4NDQwMDA0MDA0NDAwMjgwMDEwRTUKKzoyMDVFNDAwMDIwMDAyM0Y4MjIwODMzRjhBQTA4QUJGOEEyMDgyM0Y4MjIwODIyMDgyRkZFMjExMDIxMDgyMjA0MjQwNDAwMDA2RgorOjIwNUU2MDAwMTEwNDExRkUxMTAwMTUwMDE1MDA1OUZDNTEwNDkxMDQxMTA0MTFGQzI5MDQyNTAwNDUwMDQxMDQ4MUZFMDEwMDA2Cis6MjA1RTgwMDAwMDAyM0Y4MjIwODIyMDkyM0Y5MjIyMTIyMjEyM0ZEMjIyMTIyMjEyMkY5MjI4OTI0ODgyNDg4MjhGOEEwMDA0MEQKKzoyMDVFQTAwMDExRkUxMTAyMTEwMkZERkUxMDAwMTFGRTE1MDIxOTAyMzFGRUQxMDIxMTAyMTFGRTExMDIxMTAyNTEwQTIxMDQ5NworOjIwNUVDMDAwMDAyMDdFNDA0MkY4NDJDODdFQTgwMDg4N0VBODQyOTA3RUZFNDIwMjdFMDI0M0ZBNDIwMjQyMDI0QTBBNDQwNDU5Cis6MjA1RUUwMDAxMDAwMTFGQzExMDQxMTA0RkRGQzI0MDAyNUZDMjUwNDQ5RkM2OTA0MTEwNDI5RkMyNTA0NDUwNDgxMTQwMTA4RjgKKzoyMDVGMDAwMDEwODAxODkwMTQ5ODIyQTAyN0ZDNjA4MEFGRkUyMTIwMjNEODI2MkUzQTI0MjJBMDIyNDgyMjA4MjFGODAwMDBDRQorOjIwNUYyMDAwMTExMDA5MjAwNTQwM0ZGODAyMDBGRkZFMDQyMDA4MTAzRkU4QzgyNjBGRTAwODIwMEZFMDA4MjAwRkUwMDgyMDA2Cis6MjA1RjQwMDAwMTEwMTExODA5MjAzRkZDMDEwMDAyMDBGRkZFMDQyMDBGRDgxNDRFMjQ0NDg1NDAwNDkwMDQxMDAzRjAwMDAwNkUKKzoyMDVGNjAwMDEwMDAxMUZDMjEwNDIxMDQ0NUZDRjgwMDA5RkMxMTA0MjFGQzdEMDQwMTA0MERGQ0YxMDQ0MTA0MDExNDAxMDg2MworOjIwNUY4MDAwMjAwMDI3RkUyNDA4RkU0ODI1OEUyN0QyMzUxMjY1NDhBNTQ4MjdDODI5MDgyOTBDMkExNDMyMTJBNDIyNDAwMEUwCis6MjA1RkEwMDAxM0RFMTI1MjEzREUxMjUyRkZERTExMjAxQkZFMzYyMEQzRkMxMjIwMTNGQzEyMjAxM0ZFMTA4ODUwNzAyNzhFNUEKKzoyMDVGQzAwMDIwODAyMDgwMjA4MEZCRjgyMDg4MjA4ODI4ODgzMDg4RTdGRTIwODAyMTQwMjEyMDIyMTAyNDBFQjgwNDQwMDBBRgorOjIwNUZFMDAwMjdGQzI0MDQyNDA0RkZGQzI0MDAyQzIwMzUyNDY1MjRBNUZDMjQyMDI2MjIyNjIyMkEyMjJCRkVCMjAyNDAwMDAzCis6MjA2MDAwMDAxMDAwMUJGQzEyMDQzMjA0MjNGQzYyMjBBMkE0MjJBNDIyRkMyMkE0MjIyMDI1MjQyNTI0MjUyNDI5RkMzMTA0MDUKKzoyMDYwMjAwMDAwN0M3Rjg4MTEwODA4OTAzRkZDMjQ0NDNGRkMwMDAwM0UwODIyRkUzRTA4MjI0ODNFMjgyODA4MkMyODMyMTAwQworOjIwNjA0MDAwMjIwODExOEMwODkwN0ZGQzQwMDQwMDAwMUZGMDEwMTAxMTEwMTExMDExMTAxMTEwMDI4MDA0ODQwODg2MzA3QzJCCis6MjA2MDYwMDAwMDgwODA4MDQwODAzN0Y4MjA4ODAwODgyMDg4MjA4ODJGRkVDMDgwNDE0MDQxMjA0MjE4NDQwRTQ4MDQ1MDAwOUEKKzoyMDYwODAwMDQwODAyMDgwMzA4MDI3RjgwMDg4RTA4ODIwODgyRkZFMjA4MDIxNDAyMTQwMjEyMDJBMjAzMjEwMjQwQzA4MDg5RAorOjIwNjBBMDAwMjA4MDMwODAyMUZDNDEwODRBMTBGQkZDMTUyNDIxMjQ0MTI0RjlGQzAxMDAwMTAwMUQwMkUxMDIwMEZFMDAwMEZGCis6MjA2MEMwMDAxMDgwMTBDMDEwODQxMEZFRkQwNDExMDQxMjg0MTQ2NDEwNDQxNjFDMTg2NEUzODQ0MTA0MDAyNDAwMTQwMDA4QUMKKzoyMDYwRTAwMDA0NDAwNDQwRkZGRTA0NDAwNDQwM0ZGODIwNjgyRjg4MjEwODNGRjgyMzg4MjU0ODI5MjgzMTA4M0ZGODIwMDhCQworOjIwNjEwMDAwMTA0MDEwNDAyMDQwM0VGQzQwODQ3RDA0OTI4NDEwNjRGRTA0MTAxNDEwMjQxMEM0MTAwNDE0MDQxODE0MTAwOEQ4Cis6MjA2MTIwMDAwMDAwM0ZGRTIyMDI0MzA0NDQxMDNGRjgwNDAwMDkwMDA5MTAxRkY4MDEwMDAxMDQ3RkZFMDEwMDAxMDAwMTAwNjkKKzoyMDYxNDAwMDAwMDAzRkY4MDIwODAyMDhGRkZFMDQwODA0MDgzRkY4MDQwODA4MDAxRkY4MTgwODI4MDg0ODA4OEZGODA4MDg0NgorOjIwNjE2MDAwMTA4MDEwODAxMTA4MTNGRTU0OTQ1NEM4NTUwNDU2ODQ1NEY4NTQ4ODU1NTA1RTIwRjA1MDQwODgwMTA2MDYwNDNBCis6MjA2MTgwMDAwODgwMENDMDA5ODgxMjNDMTdFNjMxMTQ1MjA4OTUwNDE5RjgxMTEwMTI5MDE0QTAxMDYwMTE5ODE2MDYwMDAwREEKKzoyMDYxQTAwMDQwNDAyMDkwMjEwOEZCRkMwMDA0MDg5MDhEMDg0QTg0NTBGODUxMDgxOTkwRTI2MDAwNjAwMDk4MDMwRTBDMDRFQgorOjIwNjFDMDAwNDA4MDIwODAyMTEwMDI3ODg3ODg1MjEwNTIwQzE1MDQyOUY4MjEwOEUzMTAyNEEwMjA2MDIwOTgyMzBFMkMwNDMyCis6MjA2MUUwMDA3RjNFMTEyMjExMjJGRkU0MTEyNDExMjg3RjI4MTAyNDIwMjIzRjIyNjEyMkExM0EyMTI0M0YyMDIxMjAwMDIwNEEKKzoyMDYyMDAwMDAwNDBGODUwMDg4ODQ5RkM0ODA0NDg4ODQ5MDQ3QzgwMDRGQzE1ODgyNjUwQzQyMDA0NTAyOThFMTYwNDAwMDBBMAorOjIwNjIyMDAwMDA4MDAwNDBGN0ZFOTUwNDkxMDA5MUY4OTMxMDk0OTBGMDYwOTE5RTg2MDQwMUY4MDEwODAxMDgwMUY4MDEwODE5Cis6MjA2MjQwMDAwMjAwMDIwMEYyMDA5RkJDOTJBNDkyQTQ5MkE0OTJBNDkyQTRGMkE0OTRBNDA0QTQwOEJDMEFBNDExMjAwMDAwQzYKKzoyMDYyNjAwMDAxMDAwMTAwMDFGQzAxMDAwMTAwMDEwMDdGRkUwMTAwMDEwMDAxNDAwMTMwMDExODAxMEMwMTA4MDEwMDAxMDBGQQorOjIwNjI4MDAwMDEwMDAxMDBGOUZDOEEwODhCMDg4QzkwODg2MDg4OTA4QjBFRkZGQzhBMDgwMjA4MDIwODAyMDgwM0Y4MDIwODdECis6MjA2MkEwMDAwMDAwN0ZGRTA0MjAwNDIwMDQyMDA0MjBGRkZFMDQyMDA0MjAwNDIwMDgyMDA4MjAxMDIwMjAyMDQwMjAwMDAwNDgKKzoyMDYyQzAwMDIyMjAyMjIwMjIyNjIzQjhGQTIwMjJBMjJCMUUzMDQwNjNGQ0EyMDQyMjA0MjNGQzIyMDQyMjA0QTNGQzQyMDQwNQorOjIwNjJFMDAwMjIxMDIyMTAyM0RFMjIxMEZBOTIyMzEyNzI0RTY4ODBBM0ZDQTIwNDIyMDQyM0ZDMjIwNDIyMDQyM0ZDMjIwNDgzCis6MjA2MzAwMDAxMDAwOTJGODkyODg5Mjg4RkU4ODAwODhGRTg4MDI4ODdFODg0MDg4NDI4ODQ1MDg1OTBBRTIwQTQ0MDYwMDAwMTMKKzoyMDYzMjAwMDIwMDAyN0JFMjQ4ODI3ODhCNEE4QUNBOEE3QkUyNDE4MjQxODI1MTgyNUE4MjZBODI0NEEyMDhBMjMwNjIwMDAzNworOjIwNjM0MDAwMDAwNDdGMDQwODQ0MDg0NDA4NDQwODQ0RkY0NDA4NDQwODQ0MDg0NDA4NDQwODQ0MDgwNDA4MTQwODA4MDAwMDhGCis6MjA2MzYwMDAyMTEwMjExMDI3RkUyMTEwMjFGMEY5MTAyMUYwMjExMDJGRkUyMjkwMjJDODNBOENFMzA4NDIwNDA3RkUwMjAwNDIKKzoyMDYzODAwMDIyMjAyMjIwN0ZBMDIyMjAzRUZDMjIyNDNFMjQyMjI0RkZBNDU0MjQ1QTI0NTMyNDYyNDRGRjU0NDA4ODAwMDAxRgorOjIwNjNBMDAwMjA4MDIwQzAyMDgwMjFGQ0Y5MDQyMjQ4MjQ1MDIwNDAyMDQwMjRBMDM4QTBFMTEwNDExODAyMEUwNDA0MDgwMEZGCis6MjA2M0MwMDAwMDgwN0M4MDEwODAxMUZFMjEwNDIxNDgzQTQwNkM0MEE4NDAyOEEwMjhBMDI5MTAzOTEwMkEwODI0MEUwODA0ODQKKzoyMDYzRTAwMDAwRjgzRjAwMDEwMDNGRjgwMjAwRkZGRTA0MDAwRkYwMTgxMDZGRjA4ODEwMEZGMDA4MTAwODEwMEZGMDA4MTBDNworOjIwNjQwMDAwMDEwMDAwODAzRkZFMjA4MDJGRjgyMDg4M0ZGRTIwODgyRkY4Mjg4MDI0QzgyMkQ4MjRBMDU4OTg0QThFODEwNEE0Cis6MjA2NDIwMDAyMDIwMjNGRTIyMjAzM0ZDQUEyNEFCRkVBMjI0MjNGQzIyMjAyMzI0MjJFODI0QjAyNTI4MjYyRTI4QTQyMDQwRkEKKzoyMDY0NDAwMDIwNDAyMDIwQUJGRUFBMjA3MkZDRkEyNDYzRkU3MjI0NkFGQ0FCMjBBMkE4QTQ3MDI0QTgyQjI2MjhBMDMwNDBDMgorOjIwNjQ2MDAwMTAwMDEwMDAxMUZDMTAyMEZFMjAxMDIwMTQyMDE4MjAzMDIwRDAyMDEwMjAxMDIwMTAyMDE3RkU1MDAwMjAwMEIwCis6MjA2NDgwMDAxMDQwMTAyMDEwMjBGREZFMTAwMDEwMDAxNEYwMTg5MDMwOTBEMDkwMTA5MDExMTAxMTEyNTIxMjI0MEUwMDAwRUIKKzoyMDY0QTAwMDAyMDAwMTAwMDEwNEZGRkUwMDAwMDdFMDA0MjAwNDIwMDQyMDA0MjAwNDIwMDgyMjA4MjIxMDIyNjAzRTAwMDAxOAorOjIwNjRDMDAwMTA4MDEwNDAxMDQwMTdGRTE0MDA1ODAwNTBGMDkwOTAxMDkwMTA5MDI4OTAyNTEwNDUxMjQyMTI4NDBFMDgwMDM5Cis6MjA2NEUwMDAwMjAwMDIxMDNGRDgwMjIwMDI0MDdGRkUwMTAwMDIwMDA3RkMxQTAwRTdGODAyMDgwMDA4MDAwODAwNTAwMDIwMDcKKzoyMDY1MDAwMDEwNDAxMDQwMTFGOEZDNDgxMDUwMTNGRTE0NDAxODgwMzFGQ0Q2NDAxODQwMTA3QzEwMDQxMDA0NTAxNDIwMDg1NgorOjIwNjUyMDAwMTA0MDEwNDQxM0Y0MTQ0ODE4NTQ1N0ZFNTA0MDUwRkM5MTQwMTY0MDI4NzgyNDA4NDQwODQwMDg4MDUwMDAyMDQwCis6MjA2NTQwMDAwMTAwMTEwMDFGRjgyMTAwN0ZGRTEwMTAxMDEwMUZGMDA0NDA3QzdFMDQ0MDNDN0MwNDQwRkM3RTA0NDAwNDQwQTUKKzoyMDY1NjAwMDIwMDAyM0ZFMjAwNDIwMDRGOUU0MjEyNDIxMjQyMTI0MjEyNDIxRTQzRDI0RTAwNDQwMDQwMDA0MDAxNDAwMDhGMworOjIwNjU4MDAwMDQ0MDA0NDBGRkZFMDQ0MDAwMDA3RkZDMDAxMDFGOTAxMDkwMTA5MDFGOTAxMDkwMDAxMDAwOTAwMDUwMDAyMDU5Cis6MjA2NUEwMDAxMDAwMTAwMDEzRkUxMDA0RkMwNDExRTQzOTI0MzUyNDU1MjQ1MUU0OTAwNDEwMDQxMDA0MTAwNDEwMTQxMDA4MzEKKzoyMDY1QzAwMDEwMDAxMUZDMTEyNEZERkMxMTI0MzEyNDM5RkM1NDIwNTNGRTkwNjAxMEIwMTEyODE2MkUxMDI0MTAyMDEwMjAyQgorOjIwNjVFMDAwMDAyMDAwMjBGREZDMTAyMDEwMjAyM0ZFMzg1MDY4ODhBOUZDMjgwNDJCRkMyQTk0M0E5NDJBOTQyN0ZFMDAwMDAyCis6MjA2NjAwMDAwMDAwN0VGRTUyMTA3RTIwNTJGRTUyODI3RTkyMTA5MkZFOTIxODkyMzQ5MjUyOTI5MDI4MTA0NjExODIwMDAwQTMKKzoyMDY2MjAwMDA2MDg3ODg4MDg0ODA4NDhGRTA4MTg4ODFDNDgyQTQ4MjgwRTQ4Nzg4Qjg4MDgwODA4MDgwODA4MDgwODA4MDhENworOjIwNjY0MDAwMDEwMDAxMDA3RkZDMDEwMDNGRjAwMDAwM0ZGRTQwMDQ4MDA4MEZDMDA4NDAwODQwMDg0NDEwNDQ2MDNDMDAwMEU5Cis6MjA2NjYwMDAwMDgwMDA0MEZGRkU4ODgwODhDMDg4OTA4OTE4OEJFMDg4NDhGODhDODkxMDgyMzAwNDQ4MDA4NDAzMDQwQzAwNjcKKzoyMDY2ODAwMDAwMDA3RkZFMDAwODAwMDgxRjg4MTA4ODEwODgxMDg4MTA4ODFGODgxMDg4MDAwODAwNDgwMDI4MDAxMDAwMDA5RgorOjIwNjZBMDAwMjAwMDEzRjgxMjA4ODNGODQyMDg0QkY4MTEwMDExRkMyMjQ0MkM0NEMyQTQ0MzE0NDNGNDQwMDQ0MDE0MDAwODA1Cis6MjA2NkMwMDAwMTAwMDEwMDdGRkMwMTAwMDEwMDFGRjAxMDEwMTAxMDFGRjAxNDUwMDQ0MDA0NDAwODQyMDg0MjEwM0UyMDAwRUYKKzoyMDY2RTAwMDA4MDQwNjA0MDQwNDdGQTQxMDI0MjIyNDdGMjQyNjI0MENBNDE5RTQzMzI0QzYwNDA5MDQzMTg0QzExNDAwMDg4NQorOjIwNjcwMDAwMDIwMDAxMDAzRkZFNDQwNDQ0MDgwN0YwMEMyMDEyNDAyMTgwMDY3MDNGRkVDODE0MDgxMDA4MTAwRkYwMDgxMEI5Cis6MjA2NzIwMDA0MDAwMjFGQzMxMjQyMUZDMDEyNEUxMjQyMUZDMjAyMDI3RkUyMDYwMjBCMDI5MjgzMjI2MjQyNDAwMjAwMDIwNUQKKzoyMDY3NDAwMDAxMDAxMTAwMTFGODExMDBGRkZFMDAwMDFGRjAxMDEwMUZGMDEwMTAxMDEwMUZGMDEwMTAxMDEwMTA1MDEwMjBCMworOjIwNjc2MDAwMDA0MDAwNDAwMjdDRkE0MDhBNDA4RkZFODgwMDhCRjg4QTA4OEJGOEZBMDg4QTA4ODNGODAyMDgwMjI4MDIxMDE1Cis6MjA2NzgwMDAwMDAwMUZGMDEwMTAxRkYwMTAxMDFGRjAxMTA4MTQ5ODE4NjAxMTE4MDEwMDNGRjgwMTAwMDEwMEZGRkUwMDAwRUYKKzoyMDY3QTAwMDAwMDAxRkYwMTAxMDFGRjAxMDEwMUZGMDExMDgxNDkwMTg2MDEwMUMwMTA4NDg4MDQ4ODRDODEyMDdGMDAwMDA5RAorOjIwNjdDMDAwMTA4MDEwNDAxMDIwMTNGQ0ZDMDAxMDAwMTFGMDExMTAxMTEwMTUxMDE5MTBFMjEwNDIxMjA0MTIwNDBFMDgwMDg3Cis6MjA2N0UwMDAwMDgwMDA2MEY4NDA4RkZFODgwMDg5RjA4OTEwODkxMDg5MTBGOTEwODkxMDAyMTIwMjEyMDQxMjA0MEUwODAwMkUKKzoyMDY4MDAwMDAyMDAwMTAwN0ZGRTQwMDI4NDQ0MDgyMDEwMTAyMDA4MUZGMDAxMDAwMTAwMDEwMDAxMDAwMTAwN0ZGQzAwMDBFRgorOjIwNjgyMDAwMDAwMDdERjAxMTEwMTE5MDExNTAxNTUwMUExMkUyMTIwNDBFMDkwMDAwODAwODgwMjgxNDI4MTI2N0YyMDAwMDUxCis6MjA2ODQwMDAwMDQwN0Y0MDAyNDAwNDQwMDg0MDA4NDAwQjQwMEM0MDE4NDBFODQwNDg0MDA4NDAwODQyMjg0MjEwM0UwMDAwM0EKKzoyMDY4NjAwMDEwMDAxMDIwMTAxMEZERkUxMTA0MTA1MDE0OEMxOTA0MzAwMEQxRkMxMDIwMTAyMDEwMjAxMDIwNTNGRTIwMDA1RAorOjIwNjg4MDAwMTAwMDEzRkUxMjAwMTIwOEZGMEMxMjg4MTY1MDFBMjAzMjMwRDI0ODEyNDgxMjg0MTMwNDEyMDA1M0ZFMjAwMDYwCis6MjA2OEEwMDAwMDAwMDAwMDNGRjgyMDA4MjAwODIwMDgyMDA4MjAwODIwMDgyMDA4MjAwODNGRjgyMDA4MjAwODAwMDAwMDAwREEKKzoyMDY4QzAwMDA4MDAwODAwMDhGQzdFODQwODg0MDg4NDBBODQwQzg0MTg4NDY4ODQwODg0MDhGQzA4MDAyODAwMTAwMDAwMDAxNAorOjIwNjhFMDAwMDIwMDAxMDAzRkZFMjA0NDQwNDAzRTdDMDA0MDdFRjgxNDA4MTREMDE0MjAyNDUwMjU4QTQ0MDI4M0ZFMDAwMEU2Cis6MjA2OTAwMDAxMDIwMTAyMDEwMjBGRTIwMTFGRTMwMjAzODIwNTQyMDU1RkM5MTA0MTEwNDExMDQxMTA0MTFGQzExMDQxMDAwNDcKKzoyMDY5MjAwMDAwMDAzRUY4MjI4ODIyODgzRUY4MjI4ODAxMjAwMTEwRkZGRTAyODAwMjgwMDQ0MDA4MjAxMDFDNjAwODAwMDBCQQorOjIwNjk0MDAwMDEwMDdGRkU0ODEyMTAwODdGRkMxMDA4MUZGODEwODAxNDg4MTQ4ODE3RjgxMDg0MTg4NDI4ODQyRkZDNDgwNDczCis6MjA2OTYwMDAwNDIwMDQyMDdGRkUwNDIwMDUyMDAxMDBGRkZFMDEwMDAxMDAxRkYwMTAxMDEwMTAxMDEwMUZGMDEwMTAwMDAwNkIKKzoyMDY5ODAwMDAwMjBGRTIwMjhBMDI4RkNGRUEwQUIyMEFCRkVBRTAwQzIwMDgyRkNGRTg0ODI4NDgyODRGRUZDODI4NDAwMDAzRgorOjIwNjlBMDAwMDEwMDAwODAzRkZFMjEwMDIxMDAzRkZDMjI0MDI0NDAyRkZDMjQ0MDIwNDAzRkZFMjA0MDQwNDA0MDQwODA0MDhBCis6MjA2OUMwMDA0MDQwMzAyMDIzRkVGQTIwMEEyMDEyRkMxNjQwM0E1MDVBOTA5NkZFMTIxMDEyMTAxMkZFMTIxMDEyMTAxNDEwNUEKKzoyMDY5RTAwMDAyMDAwMjAwN0ZGRTA0MjAwODEwMUZGODIwMEVERkY0MDQwMDA0MTAwRkY4MDQxMDAwMTAwMDEwMDBBMDAwNDA4RgorOjIwNkEwMDAwMjA4MDIwODAyN0ZFMjEyMEY5MTAyM0Y4MjQwNjJCRjgyMTAwMjEwMDIzRjgzOTA4QzAwODAwMDgwMDI4MDAxMEI5Cis6MjA2QTIwMDAxMDQwMTA0MDEzRkVGQ0EwMTExMDEyMEUxMUY0MTgwMDM3RkVEMDgwMTBGODEwMDgxMDA4MTAwODUwMjgyMDEwMkUKKzoyMDZBNDAwMDAwNDA3ODQwNEJGRTQ4OTA0OTA4N0JGRTE0MDQxMDAwNURGRTUwODA1MDgwNTBGODVDMDhFMDA4MDAyODAwMTA2NAorOjIwNkE2MDAwMDA0MDc4NDA0QkZFNDhBMDc5MTg0QkY2NEMwNDQ4MDA3QkZFNDg4MDQ5Rjg0ODg4NDgwOEE4MDg5MDUwMDAyMDMxCis6MjA2QTgwMDAyMDgwMjA4MDIwODAyM0Y4Rjg4ODIwODgyMDg4MjA4ODJGRkUyMDgwMzk0MEUxMjA0MjE4MDIwRTA0MDQwODAwQzIKKzoyMDZBQTAwMDIwNDAzRTdFMjhBMDQ1MTA5MDQwMTNGODU4NDg1NDQ4NTA0ODE3RkUxMDQwMTBBMDEwOTAxMTA4MTIwRTE0MDRFOAorOjIwNkFDMDAwMTA4MDE4ODAxMEMwMTEyMDIyMTgyNDBFNkJGNEEwMDAyMDA4MkZGQzIxMDAyMTIwMjIxMDI0RjgyRjk4MjAxMDI4Cis6MjA2QUUwMDAyMDgwMjA4MDIwODAzN0Y4QTg4OEE4ODhBMDg4MkZGRTIwODAyMTQwMjE0MDIxMjAyMjEwMjIxODI0MEUyODA0NjUKKzoyMDZCMDAwMDAyMDAwMTAwN0ZGRTQ0NDRCRkY4MDQ0MDAwMDAxRkYwMTExMDExMTAxMTEwMTI5MDAyODQwNDg0MTg3QzYwMDA1QworOjIwNkIyMDAwMDg0MDA4NDBGRjQwMDg3RTdFODQwMTI4MDAyMDdFMjAwMDIwRkYyMDA4NTA0QTUwNEE4ODg4OEMyOTA2MTIwNEJCCis6MjA2QjQwMDAwMDAwN0ZGRTQwMDA0MDAwNUZGODQwODA0MDgwNEZGODQwODA0MDgwNDA4MDVGRkM0MDAwNDAwMDdGRkUwMDAwODIKKzoyMDZCNjAwMDIwNDAzRTdFNTBBMDg5MTA3RkZFNDAwMDVGRjg0MTAwNDEwMDVGRjg0MTAwNDEwMDdGRkM0MDAwN0ZGRTAwMDBDOQorOjIwNkI4MDAwODQwMDQ3RkMyODQwMTA0MDMwNDA0ODQwODg0MDFCRkMyODQwNDg0MDg4NDAwODQwMDg0MDEwNDA1N0ZFMjAwMDkyCis6MjA2QkEwMDAwMDAwMTAwMDEzRkUxMjAwRkVGQzEyMjAzQTIwMzZGQzUyMjA1MjIwOTIyMDEzRkUxMjAwMTIwMDEzRkUxMDAwRkUKKzoyMDZCQzAwMDAwMjBGRTEwMTFGRTExMDAxMTAwMjEwMDNEMDAyNTAwNjUwMEE1MDAyNTAwMjUwMDNEMDAyNjAwMjIwMDA0MDBGNgorOjIwNkJFMDAwMDAwMDdCRkU0QTAwNEFGQzRBMjA3QTIwNEEyMDRBRkM3QTIwNEEyMDRBMjA0QkZDN0EwMDRBMDA0M0ZFMDAwMDFFCis6MjA2QzAwMDAwMDQwMDAyMDc5RkU0OTAwNDkwMDQ5MDA3OTAwNDkwMDQ5MDA0OTAwNDkwMDdBMDAwMjAwMDQwMDE4MDAwMDAwOEQKKzoyMDZDMjAwMDQwMDAyM0Y4MzIwODJBMDgwQTA4MTIwODEzRjgyMEEwMjBBMEMwQTA0MTIwNDEyMDQyMjI0NDIyNTgxRTAwMDA3NAorOjIwNkM0MDAwMDAxMDNGRjgwMDAwMDAwNEZGRkUwNDAwMDQwMDA4MDgxRkZDMDAwODAwMDgwMDEwMDExMDAwQTAwMDQwMDAwMEE4Cis6MjA2QzYwMDAwNDAwMDQwMEZGRkUwODgwMDg4MDE0OEMxNTUwMjkyMDQyMTA4QzBFMUZGQzEyNDgxMjQ4MTI0OEZGRkUwMDAwOUYKKzoyMDZDODAwMDAwODAyMDg0MjA4NDNGRkMwNDAwMDQwMDI1RkMyNDA0MjQwNDI1RkMyNDA0MjQwNDA4MDQwOUZDMTAwNDIwMDBDMgorOjIwNkNBMDAwMDIwMDAxMDA3RkZFNDgyMjEwMTAyMUZDMTEwNDdEMjQxMTI0MTEyNEZEMjQxMTU0Mjg1MjI0OTI0NTEyODIwRUYwCis6MjA2Q0MwMDAwNDQwMDQ0MEZGRkUwNDQwN0M5MDA0NjQyNDI4MTgxODE3RUUyMTA0NDEwMDNGRjgwMTAwMDJDMDBDMzAzMDEwMUEKKzoyMDZDRTAwMDAxMDAwMTAwN0ZGQzAyNDAwNTIwMDkxMDNGRUVDMTA0M0ZGODAxMDAwMTAwMUZGMDAxMDAwMTAwN0ZGQzAwMDBFMAorOjIwNkQwMDAwMDgwODEwMDg3RTQ4NEEyODdFQTg0QTQ4NEE0ODdFMEUxNDc4MTUwODE2ODgyN0M4MjQwQTQ0MEE4M0ZFMDAwMDBBCis6MjA2RDIwMDAxMDgwMTkwMDE3RjAzNDkwMjdGMDY0OTBBNDkwMjdGMDI1NDAyMTUwMjE1NDIyN0MyMjQyMjQ0MjI4M0UwMDAwNzAKKzoyMDZENDAwMDIwMjAyMUZDMjEyNDNERkM0NDIwNEJGRTgwMDAyMUZDMjEwNDIxMjQyMTI0MjUyNDI4NTAzMThDMjYwNDAwMDBCNworOjIwNkQ2MDAwMjA0MDIwODAyM0Y4MjI0ODMyNDhBQkY4QUE0OEEyNDgyM0Y4MjBBMDIwQTgyMTM0MjEzRTIyMjIyNDFFMjAwMDk4Cis6MjA2RDgwMDAyMDQwMTNGODEyNDg4MjQ4NDNGODEwNDAxN0ZFMTAwMDIzRjgyMjA4QzI0ODQyNDg0MjYwNDA5MDQxMEM0NjA0RDIKKzoyMDZEQTAwMDAwMjAxMDIwMTAyMDEzRkVGRTIyMTIyMjEzRkUxMjIyMTIyMjFGRkUzMjIyQzIyMDAwMjAwMDIwMDAyMDAwMjBBMgorOjIwNkRDMDAwMDAwMDFGRjAxMDEwMUZGMDEwMTAxRkYwMjA0MDIwNDAyMDQ0M0U0QzIwNzAyMDQwMjY0MjM4NDIyMDNFMDAwMDY4Cis6MjA2REUwMDAxMDAwMTNGQzEyMDRGRTI0MTIyNDEzRkMxNjc0MUE2QzMyQTREMkE0MTMyNDEyMjQxMjI0MTIyNDUzRkMyMjA0NEQKKzoyMDZFMDAwMDdGRkM0MTA0NDEwNDQxMDQ1RkY0NDMwNDQzODQ0NTQ0NDU2NDQ5MzQ0OTI0NTEwNDQxMDQ0MDA0N0ZGQzQwMDQwRQorOjIwNkUyMDAwMTAwMDEwM0MxM0MwRkM0MDEwNDAxN0ZFMTg0MDEwNDAzMDQwRDNGODEyMDgxMjA4MTIwODEyMDg1M0Y4MjIwOEMyCis6MjA2RTQwMDAxMDIwMTAxMDEwMTBGREZFMTEwMDExMDAxNTAwMTkwMDMxMDBEMTAwMTEwMDExMDAxMjAwNTIwMDI0MDAwMDAwQ0IKKzoyMDZFNjAwMDAxMDAwMDgwM0ZGRTIyMDAyRkJFMjAyNDJGQTgyOEE4MkZBNDIwMjIyRkEyMjUyQTIzQTQ1RTIwNEEyMDg0MjBEMgorOjIwNkU4MDAwMTAwMDBCRkM0MDA0NTA2NDRCODQ0MDg0NjNGNDU0ODQ0NDg0NUJFNDRBMjQ0QTI0NEJFNDQwMDQ0MDE0NDAwODJGCis6MjA2RUEwMDAwMDQwMTAyMDEwMjAxN0ZFMTAwMEZDMDgxMTA4MTEwODEwODgxMDkwMTBEMDFDOTBFMDIwMDAyMDA3RkUwMDAwRUUKKzoyMDZFQzAwMDEwODAxMDYwMTAyMDExRkVGQzAwMTAwODE1MEMxODg4MzA4OEQwNDgxMDUwMTA1MDEwNTAxN0ZFNTAwMDIwMDAyOQorOjIwNkVFMDAwMDEwNDAxMDQ3N0U0NTEwNDUxMTQ1N0Q0NTU1NDU1NTQ1NTU0NTdENDUxMTQ3Mzg0NDU0NDA5NDQwMTE0MDEwOEQyCis6MjA2RjAwMDAxMDkwMTA5MDEzRkU3QzkwNTQ5MDU0OTA1N0ZFN0MwMDU1RjgxMTA4MTkwODE1RjgxRjA4RTUwODAxRjgwMTA4RDEKKzoyMDZGMjAwMDAwOTA3ODkwNEJGRTQ4OTA3ODkwNDg5MDRCRkU0ODAwNzlGODQ5MDg0OTA4NDlGODQ5MDg0OTA4QTlGODkxMDhGNworOjIwNkY0MDAwMjAyMDEwMjBGRkZFMDAyMDQ0MjAyOUZDRkQyNDExMjQxMUZDRkM2MDEwQjAxMEE4MjEyRTIyMjQ0NDIwODAyMDRCCis6MjA2RjYwMDAwMjIwMDIxMEYyMTA5RkZFOTIwMDkyMDQ5MjQ0OTM0NDk2NDRGQTQ0ODIyODAyMjgwMjAwMEFGRTA0MDAwMDAwNkYKKzoyMDZGODAwMDA0MjAwNDIwN0ZGRTA0MjAwNTIwM0ZGQzExMTAwOTEwMDkyMEZGRkUwNTQwMDkyMDExMTgyMTBFNDEwNDAxMDAzQworOjIwNkZBMDAwMDEwMDAxMDAzRkZDMDEwMDA5MzAwNTIwMDM0MDdGRkUwMTgwMDM0MDA1MjAwOTE4MzEwRUMxMDQwMTAwMDEwMDY1Cis6MjA2RkMwMDAwODIwMDgyMDdGM0MwODQ4M0VGQzJCNDQyQTQ0M0U1NDA4NTQxQzU0MUE1NDJBNTQ0ODI4ODg0NjA4ODIwOTAwMjQKKzoyMDZGRTAwMDA4NDAwODQwRkZGRTA4NDAwNDgwMjRGQzI0QTAyNTEwMjYxMDA0MDAxRkYwMTI5MDEyOTAxMjkwRkZGRTAwMDBGMworOjIwNzAwMDAwMDgyMDA4MjA3RUZFMUM3MDFBNjgyQUE2NDkyNDhBMjAwNDAwRkZGRTA4MjAxRjQwMDBFMDA3MTg3ODBDMDAwMEE0Cis6MjA3MDIwMDAxMDAwMTEwODEwODhGQzkwMTNGRTEwMDAzODAwMzQwMDU1RkM1MDAwOTAwMDEwMDAxMDAwMTdGRTEwMDAxMDAwRjAKKzoyMDcwNDAwMDEwMDgxMjBDMTEwOEZDOTAxN0ZFMTAwMDE4MDAxMDAwMzNGQ0QwMDAxMDAwMTAwMDEwMDAxN0ZFNTAwMDIwMDA1NAorOjIwNzA2MDAwMjA0MDNGN0U0ODkwODUwODA0NDAyNDdFMjQ5MDI0ODgwNTA4MDAwMDNGRjgyNDQ4MjQ0ODI0NDhGRkZFMDAwMEMzCis6MjA3MDgwMDAyMDAwMTdGQzAxMDQ0MTA0NUZGNDQxMDQ1RkY0NTU1NDVGRjQ0Mzg0NDU0NDU5MzQ0MTE0NDEwNDQwMTQ0MDA4NzkKKzoyMDcwQTAwMDAwMjAxMDMwMDgyMDA0NDAwMDgwN0ZGQzAwMDAwMDAwMDAwMDNGRjgwMDAwMDAwMDAwMDBGRkZFMDAwMDAwMDBENQorOjIwNzBDMDAwNDQwMDIyRkUyMDAyMDQ0Mjk3RkE1NDQyMTdGQTI1NUEyNEVBMjdGQUM0RTI0NTUyNDY0QTQ0NDI0NDRBNDQwNEQ1Cis6MjA3MEUwMDA0MjAwMzE3RTI1MDIwNDIyMDdGRUU0MjIyNUZFMjVBQTI1NzIyNUZFMjQ3MjJDQUEzNEE2MjUyMjA0MkEwNDA0RDgKKzoyMDcxMDAwMDIwOTAyMjkwMjJCRUZBQjAyMkM4MjA4NDJCRjgzMjA4NjI0OEEyNDgyMjQ4MjJBODIwQTIyMTIyQTYxRTQwMDBDNworOjIwNzEyMDAwMDQ4MDI0ODAyNEZFMjRBMDI1MTgwNjEwMUZGMDEwMTAxMTEwMTExMDExMTAxMTEwMTI4NDA0ODQxODg2NjA3Q0EzCis6MjA3MTQwMDAyMjEwMjIxRTJGQTIyMjQ0M0ZCRUFBQTJBQUEyQUZBQTIyMkEyNzJBMjZBQTJBMkEzMjA4MjIxNDIyMjIyMjQyQkYKKzoyMDcxNjAwMDAwOTAyMjkwMzI5RTIyQTA0QUM4RjA4NDEzRjgyMjA4NDI0OEZBNDgwMjQ4MDBBMDM4QTJFMTIyMDIxRTA0MDBDOQorOjIwNzE4MDAwMjAwMDIyMEMyMTA4Mjg5MDI4QTRCM0ZFQTAwMEEwMDAyMDAwMjNGQzMwMDA0ODAwNDgwNDQ3RkU4MDAwMDAwMDNCCis6MjA3MUEwMDAyMTIwMTEyMDE1MjAwNTdFODU0MDU1OTAxNTA4MjUwODIwMDAyN0Y4QzUyODQ1Mjg0NTI4NDUyODVGRkUwMDAwRTEKKzoyMDcxQzAwMDAwNDAwMDIwRkJGODIyMDgyMjA4MjNGOEZBMDgyMjA4MjNGODIyODgyMjUwMjIyMDNBMTBDMjhFMDMwNDAyMDBBNQorOjIwNzFFMDAwMTIwMDExMDAxM0RFRkU1MjEyNTQzM0Q4M0E1ODU2NTQ1M0QyOTIxMjEzMTIxMjlBMTM1NDEyNTAxMDEwMTAxMERCCis6MjA3MjAwMDA4ODQwNDg4MDMzRjgyMjA4NTIwODkzRjgxQTA4MkEwODJCRjg0QTg0OEE0ODBBNTAwQTIwMTI5ODUzMEUyMjA0RDgKKzoyMDcyMjAwMDAxMDAwMDgwM0ZGRTI0MDAyMjdDMkY0NDI5NDgyRjQ4Mjk1MDJGNDgyODQ0MkE0NDJCNUM1RDQ4NDk0MDgwNDAzNAorOjIwNzI0MDAwMTAwMDA4N0U3RTQ0NDI0NDdFNDg0MjQ4NDI1MDdFNDg0MDQ0NDg0MjQ0NDI0QTVBNTI0NDYwNDA0MDQwMDA0MDdBCis6MjA3MjYwMDAxMDAwMDg3QzdFNDQ0MjQ0N0U0NDQyN0M0MjQ0N0U0NDQwN0M0ODQ0NEM0NDU0ODQ2MDg0NDExNDA2MDgwMDAwNzMKKzoyMDcyODAwMDIwODAxMDQwMTNGODgyMDg0QkY4NEEwODEyMDgxM0Y4MTI4MDIyNENFMjUwMjIyMDIyMTAyMjk4MjMwRTIyMDRGOAorOjIwNzJBMDAwMTA5MDEwOTAxM0ZFRkM5MDEwOTAxM0ZFMUE0NDMwNDBEMDQwMTNGQzEwNDQxMDg0MTA4NDExMDQ1MjI4MjQxMDE0Cis6MjA3MkMwMDAwNDIwMDQyMEZGRkUwNDIwMDAwMDdGRkU0MjA0MDIwMDNGRjAwMjEwMDIxMDA0MTAwNDEwMDgxMDEwNTAyMDIwNEQKKzoyMDcyRTAwMDAxMDAwMDgwM0ZGRTIwMDI0ODg0MDg4MDBGRjgxMDgwMjA4MDAwODQ3RkZFMDA4MDAwODAwMDgwMDA4MDAwODBBMgorOjIwNzMwMDAwMDIwMDAyMDg3RkZDMDIwODAyMTAwMjIwRkZGRTAxODAwMjAwMEMzMDM0QzBDNzAwMDQwNDA0MDQwM0ZDMDAwMDIyCis6MjA3MzIwMDAwODgwMEM4NDE4ODYxN0VDMzA4ODIwOTA2RkZFQTA0MDIyODAyMzEwMkQzODMxQzQyMTA0MjEwNjIwRkMwMDAwNDgKKzoyMDczNDAwMDIwNDAzMDQwMjA0NDIzRjZGQzQ4MjQ1MDI3RkUyNDIwNDg0MDI4ODAxMTk4MkFFMDI0ODQ0NDg0ODA3QzAwMDA3MAorOjIwNzM2MDAwMDA0MEZFNDAyOEZDMjg4OEZGNTBBQTIwQUE1MEFBODhDRjA2ODJGOEZFODg4Mjg4ODI4OEZFRjg4Mjg4MDAwMDhECis6MjA3MzgwMDAxMDgwMTA4MDExRjgxNTA4MTY5MDU4NjA1MDYwNTA5MDkzMEUxNUZDMzEwODI5MDg0NTA4NDFGODgxMDgwMDAwOEUKKzoyMDczQTAwMDIxMTAxMTEwMTdGRTgxMTA1MTEwNTdGRTE0MDQyMDgwMjA4MDI3RjhDMDg4NDEwODQxMDg0MjA4NDQyODQ4MTBDMAorOjIwNzNDMDAwMjIyMDIyMjBGRkEwMjIyMDNFRkMwODI0N0YyNDQ5MjQ0OTI0N0YyNDA4MjRGRjQ0MDg0NDA4OTQwOTA4MDgwMDUyCis6MjA3M0UwMDAwMDMwMDFGODFGMDAxMDgwMTA4MDEwODAzRkZDMTA4MDA4ODAwQzkwMTg4ODMwOEMyNDg2NDI4NDAxMDAwMDAwRDkKKzoyMDc0MDAwMDFGRjgwMTAwN0ZGRTQxMDQxRDcwMDEwMDFENzAwMTAwM0ZGODIxMDgyMTA4M0ZGODIxMDgyMTA4M0ZGODIwMDgwNQorOjIwNzQyMDAwMjAwMDIxRkMzQzIwMjNGRTQyMjQ3REI4QTAyMDIxQjhGQzAwMjFGQzIxMjQyMUZDMjkyNDMxMjQyMUZDMDAwMDI0Cis6MjA3NDQwMDAwNDQwRkZGRTA0NDAzRkY4MDEwMDdGRkU0MTA0QTk1MDE1MjgwMDAwM0ZGODIxMDgzRkY4MjEwODNGRjgyMDA4NTgKKzoyMDc0NjAwMDAwMDA3RkZDMDQwMDBGRjAzODEwQzgxMDBGRjAwODEwRkVGRTEwMjAyMDIwM0U3QzYyQzRBMzQ0M0U3QzIyNDQwNAorOjIwNzQ4MDAwMUZGODExMDgxRkY4MTEwODFGRjgwMjAwMDQyMDBGQzAwMTIwMDYxMDBGRjgwMDg4MDhBMDA4OTgxMjg4MDEwMEQ3Cis6MjA3NEEwMDAxMDAwMUJGODEyNDgyM0Y4MjI0ODYzRjhBMDAwMkZCRTJBQUEyQUFBMkZCRTJBQUEyQUFBMkZCRTI4QTIwMDAwRUUKKzoyMDc0QzAwMDAxMDAwMjIwMDQxMDBGRjgwMDEwMTA0MDEwOTAyNTA4N0ZGQzI0ODgwMTAwM0ZGODAxMDAwMTAwN0ZGRTAwMDA2MworOjIwNzRFMDAwMDAwMDIzRjgyMDQwMjdGRUY0NDQyMzU4MjA0MDJCNTgzMDAwNjNGQ0EyNDQyM0ZDMjI0NDIyNDRBM0ZDNDIwNDExCis6MjA3NTAwMDAwMDQwM0M0MDI0NDAyNDQwM0RGQzI0NDQyNDQ0MjQ0NDNDNDQyNDQ0MjQ0NDI0NDQ0NDg0NTQ4NDg5MTQwMjA4NzcKKzoyMDc1MjAwMDIxMDgxMTEwMDkyMDdGRkUwMzgwMEQ2MDMxMThDMTA0MDEwMEZGRkUwMTAwMDI4MDA0NDAwODMwMzAwRUMwMDQ1RQorOjIwNzU0MDAwMjAwMDEzRkMxMjA0OEEwNDRBMDQ1M0ZDMTIwNDEyMDQyMjA0MjNGQ0UyMDQyMjA0MjIwNDIzRkMyMjA0MDAwMEQzCis6MjA3NTYwMDAxMDQwMTA0MDEzRkNGQzQwMTA0MDE3RkUzOTEwMzUwQzUyODQ1NEY4OTExMDE2QTAxMDYwMTE5ODE2MEUxMDA0NjcKKzoyMDc1ODAwMDEwMDAxM0ZFMTI1MkZBNTIxM0ZFMzg0MDM0MjA1M0ZFNTA0MDkwNDAxMDdDMTA4NDEwODQxMTA0MTIxNDE0MDg4MQorOjIwNzVBMDAwMDA4MDgwODA0MTQwNjEyMDUyMTgxNDhFMjg0NDIwNDAyRkY4QzAxMDQwMTA0MTIwNDBDMDQwNjA0MDQwMDAwMEE5Cis6MjA3NUMwMDAwMDAwM0ZGRTIwMDAyRkY4Mjg4ODJGRjgyODg4Mjg4ODJGRjgyODg4NDA4MDRGRkM0MDgwODA4MEJGRkUwMDAwOTEKKzoyMDc1RTAwMDA3ODQ3QzA0MDQyNDdGQTQwRTI0MTUyNDI1MDRDNDE0MDEwODdGRkUwMzgwMDU0MDA5MzAzMTBFQzEwNDAxMDAzRAorOjIwNzYwMDAwN0YwNDA4MjRGRkE0MUMyNDJBMjQ0OTI0ODgxNDA4ODgxMDgwMUZGQzIwODAwMDgwN0ZGRTAwODAwMDgwMDA4MDI5Cis6MjA3NjIwMDAwNjQwMzg0MDA4RkM3RUE0MTkyNDJFNDRDODk0MEIwODA0ODAxOTYwRTk1RTA3ODAwNTYwMTkxODAxMDgwMzAwREIKKzoyMDc2NDAwMDIwNDAzRjdFNTJBMDg5MTBGRkZFMDQ0MDEzOTAxNDUwMUZGMDAyMDAzRkY4MjQ4ODJGQzgyMDQ4MjAyODIwMTA2RgorOjIwNzY2MDAwMDgwMDhCRkM1MjQ0MjI0NDUzRkM5MjQ0MTI0NDJCRkMyQTQ0NDg0MDhCRkMwODQwMTA0MDEwNDA1N0ZFMjAwMDAzCis6MjA3NjgwMDAwMjAwMDEwNDdGRkUwNjYwMTE4ODEyNDgxNDI4MUZGODAxMDAzRkZDMjQ0NDI4MjQyRkY0MjAxNDIwMTQyMDA4MTcKKzoyMDc2QTAwMDIwODAxMDQwMTdGRTAwMDA4MkE4NTI2ODEyOTgyM0Y4MjA0MDI3RkNDNDg0NDUxNDQ1RjQ0NDA0NDQxNDQ0MDhEMworOjIwNzZDMDAwMDAwMDAzRkNGQTQ0MjI0NDIzRkMyMjQ0RkE0NDIzRkMyMjQ0MjA0MDIzRkMzODQwQzA0MDAwNDAwRkZFMDAwMDdCCis6MjA3NkUwMDAwMTAwMDEwMDdGRkMwMzgwMDU0MDA5MzAzMTBFREZFNDAwODAwMTAwN0ZGRTAxMDAwMTAwMDEwMDA1MDAwMjAwMDIKKzoyMDc3MDAwMDNGRjgyMTA4MjEwODIxMDgzRkY4MjEwODIxMDgzRkY4MDEwMDAxMDAzRkY4MDEwMDAxMDAwMTAwRkZGRTAwMDBCRQorOjIwNzcyMDAwMjAwMDIxRkMzRDI0NDUyNDQ5RkNGRDI0NTUyNDU1RkM3QzIwNTQyMDU1RkM3QzIwMDAyMDFDMjBFM0ZFMDAwMEQ4Cis6MjA3NzQwMDAxMDQwMDg0MDA4NDBGRTQwMDQ0MDA0NDAwODQwMUM0MDJBNDA0QTQwODg0MDA4NDAwODQwMDg0MjA4NDIwODNFQjkKKzoyMDc3NjAwMDA0MjA3RkZFMDQyMDA0MjQzRjA0MDQyNDA0MjQ3RkE0MEMyNDBFMjQxNTI0MjVBNDQ1MjQ4NDA0MDQxNDA0MDhFRAorOjIwNzc4MDAwMDQyMDdGRkUwNDIwMDIwMDNGRjgwMjEwMEM1MDMwMjAxMDIwN0VGQzEyMjQxMjI0MjI0NDIyNDQ0QTk0ODUwOEUwCis6MjA3N0EwMDAwMTAwMDEwMEZGRkUwMTAwM0ZGODIxMDgyMTA4M0ZGODIxMDgwOTAwMDUwMDAyMDAwNTgwMDg2MDEwMUM2MDA4NEYKKzoyMDc3QzAwMDdGRkUwNDQwMDQ0MDNGRjgyNDQ4MjQ0ODNGRjgwMTAwRkZGRTAxODAwMzQwMDUyMDE5MTg2MTBFMDEwNDAxMDBEMQorOjIwNzdFMDAwMDAwMEZGRkUwMDAwMDAwMDdFRkM0Mjg0NDJDNDYyQTQ1MkI0NUFBNDUyODQ0Mjg0NDI4NDRFQkM0NDg4MDAwMDA0Cis6MjA3ODAwMDAwMDAwM0ZGRTIwMDAyMDAwMkZGQzIxMDAyMTAwMjFGODIxMDgyMTA4MjIwODIyMDg0NDA4NDgyODkwMTAwMDAwNjMKKzoyMDc4MjAwMDAwMTAzRjkwMjAxMDIwMTAzRjdFMjgxMjI4MTIyRjEyMjkxMjI5MjIyOTIyNTEyMjU1NDJBMjRFNDA4NDAwMDAwOAorOjIwNzg0MDAwMDAwMEZFM0MxMUMwMTEyMDIxMjAyMTIwN0QyNDY1RkVBNDIwMjUyODI1MjQzRDI2MjYyMjI0MjIwOEEwMDA0MDMzCis6MjA3ODYwMDAwMDAwM0ZGRTIwMDAyMDgwMjA4MDJGRjgyMDg4MjA4ODIwODgyMTA4MjEwODIyMDg0MjA4NDQzODg4MTAwMDAwNzIKKzoyMDc4ODAwMDAwMDIwMzgyM0MwMjA0MjIwNDIyN0ZBMjBDMjIwQzIyMTYyMjE1MjIyNUEyNDUyMjg0MDIwNDEyMDQwQTA0MDQwQgorOjIwNzhBMDAwMTAwMDFGRkUxMDkwMjdGQzM0OTQ2NDk0QTdGQzI0NDQyMDQwMkZGRTIwRTAyMUQ4MjM0RTI2NDQyODQwMjA0MEU0Cis6MjA3OEMwMDAxMDAyMUJFMjExMDIyMTEyMjFEMjYyNTJBMjUyMjQ1MjJBOTIzMjkyMjExMjIxMDIyMjAyMjIwMjI0MEEyODA0Q0EKKzoyMDc4RTAwMDEwODQxOUM0MTYwNDMyMTQyMjE0NkZENEEzMTQyNjk0MjZENDJBOTQyQTE0MzIwNDIyMDQyMjNDMjIwODAwMDBGMworOjIwNzkwMDAwMDEwMDAwODAxRkZFMTBDMDk3MDQ1MTE0NTExNDFGRDQzMzE0NTU5NEE1NTQyOTE0MzExNDQxMDQ0MTE0ODEwOEQzCis6MjA3OTIwMDAwMjAwMDEwMDAxMDAwMDAwN0ZGQzAwMjAwMDMwMTAyMDA4NDAwQzQwMDQ0MDA0ODAwMDgwMDEwNEZGRkUwMDAwNkEKKzoyMDc5NDAwMDEwNDAxMDIwOTAyMDU1RkU1NDA4MTgwQ0ZFMDgzMTA4MzkxMDU0OTA1NjkwNTJBMDkwMjAxMDAwMTdGRTEwMDBGQgorOjIwNzk2MDAwMjAwMDEzRkUxMjIwODIyMDQyMjA0QkZDMEEyNDEyMjQxMjI0MjQ0NEU0NDQyNDg0Mjg4NDI5MDQzMjE0MjQwODNDCis6MjA3OTgwMDAwMTAwMDEwMDFGRjAwMTEwN0ZGRTAxMTAxRkYwMDEwMDExMTAwOTIwMDNDMDA1NDAxOTIwNjExQzA1MDgwMjAwMTAKKzoyMDc5QTAwMDAxMDAwMTAwMDEwMDAxMDA3RkZDMDEwNDAxMDQwMTA0MDEwNDAyMDQwMjA0MDQwNDA0MDQwODA0MTAyODIwMTBBNAorOjIwNzlDMDAwMDA0MDAwMjBGQkZFMjA4MDIxNTQyMTI0Rjk1NDIxRkMyMDIwMjNGRTJBNDIzMjkyQzJGMjAyMTIwMjBBMDIwNDFGCis6MjA3OUUwMDAwMDAwRjdGQzk0NDQ5NDQ0OTdGQzk0NDQ5NDQ0OTdGQ0Y0NDA5MDQwODdGQzAwNDAwMDQwMDA0MDFGRkUwMDAwQUEKKzoyMDdBMDAwMDEwMDAxRkZFMTA5MDIwOTAyN0ZFNjQ5MkE0OTIyNDkyMjQ5MjI1NkEyNTJBMjY0NjI0ODIyNDBBMjQwNDAwMDBFNgorOjIwN0EyMDAwMDEwOEZFOEM0NDQ4NDQ1MDdGRkU0NDIwNDQyMDdDMjA0N0ZFNDQyMDRFMjBGNDIwNDQ1MDA0NDgwNDg2MDUwNDE0Cis6MjA3QTQwMDAwNDQwMDQ0MEZGRkUwNDQwNDEwMDM3RkMyMTQwMDI0MEU3RjgyMDQwMkZGRTIwNDAyMDQwNTA0MDhGRkUwMDAwRkQKKzoyMDdBNjAwMDQwODAyMDgwMzdGQzIxMDAwMTQwMDI0MEY3RjgxMjQwMTA0MDFGRkUxMDQwMTA0MDEwNDAyODAwNDdGRTAwMDBDNAorOjIwN0E4MDAwMjA0MDIwMjAzQkZFNDI4ODQzRkVGQTUwMjNGQzIyNTRGQkZFMjI1NDIzRkMyMkQwMkQ1ODM1NTYyQTU0MDA1MEM1Cis6MjA3QUEwMDAwMDgwM0ZGRTI0MjAyMjQwM0ZGQzIyNDAyRkY4MjI0ODNGRkUyMjQ4MkZGODI2NjAyNjUwNEE0RTUyNDQ4MjQwN0IKKzoyMDdBQzAwMDIwODAyMDgwMjBDMDMxMjBBOTEwQUE4OEE0NDYyODQwMjdGQzIwMDgyMDEwMjEyMDIwQzAyMDYwMjA0MDAwMDA3QworOjIwN0FFMDAwNDA0MDI4NDAyNUZDMDQ0MDkwNDA1MEEwNTBBMDJERkMyNDIwMjVGRUM0MjA0NDIwNDQyMDRBMjA1MUZFMDAwMDk0Cis6MjA3QjAwMDAwMjAwMDEwMDdGRkU0MDA0OTExMDE5MEMzMTA4NUZGODExMDgxMTA4MTEwODExMDgxMTI4MTExMDAxMDAwMTAwOEIKKzoyMDdCMjAwMDA4NDAwODYwMTQ0MDEzNDAyMTdFNUVDODgwQzgxMTQ4NDk0ODI5MjgyQTEwMjE5MDBFMjg3MENFMDcwNDAwMDAzQworOjIwN0I0MDAwMDAyMDNDMjAyNDUwMjQ4ODNEMDYyNjA0MjVGODI0MDQzQzg2MjY0NDI1NjgyNTQ4MjUxMDQ0MDA1N0ZFODgwMDVCCis6MjA3QjYwMDAyMDIwMjAyMDNBRkMyMTIwNDE1MDc4NTBBMzdDMjExMEY5MTAyMUZFMjExMDI1MTAyOTEwMzI4MDI0N0UwMDAwNEEKKzoyMDdCODAwMDAyMDAwMTAwN0ZGRTA0NDAxNDUwMTQ0ODI0NDZDNDQ0MDQ0MDAwMDAwOTA4Mjg4NDI4OTI2ODEyMDdGMDAwMDBDMworOjIwN0JBMDAwMTA0MDEwNDQxM0ZFMTQ0MDU0ODA1OEYwNTEyMDkxMjAxM0ZFMzEyMDI4MjgyNTI0NDEyMjQyMjI4NEEwMDA0MDU4Cis6MjA3QkMwMDAwMDQwMjA0MDMzRkMyMDQwNDg0MEY5RjAxMDkwMjA5MDQxRkVGODEwMDA5MDAwOTQxOTEyRTIxMjAwNTAwMDIwQkIKKzoyMDdCRTAwMDEwNDAxMDIwOTVGODU1MDg1OTA4RkRGODMxMDgzOTA4NTVGODU1NDA1MTI0OTEyODExMTAxMTU4MTE4RTExMDRGRAorOjIwN0MwMDAwMDA4MDQwNDAyRkZFMzAwMDIwMDAxM0Y4MTIwODIyMDgyM0Y4QzA0MDQ0NTA0NjQ4NDQ0QzQ4NDY1MTQ0NDA4MEU4Cis6MjA3QzIwMDAyM0Y4MTA0ODgwNDg0QThDMTI4QUUxMEEyMjI4MkQxMDAxMDBGRkZFMDM4MDA1NDAwOTMwMzEwRUMxMDQwMTAwMjEKKzoyMDdDNDAwMDIzRjA5MDkwNTI5ODRBOTQxNDkyRTE1MDI2MjAzMTEwMDkyMDdGRkUwMzgwMDU0MDA5MzAzMTBFQzEwNDAxMDAxRgorOjIwN0M2MDAwMDIwMDAxMDAxRkUwMTAyMDFGRTAxMDIwMTAyMDFGRTAxMjEwMTIzMDExNDAxMDgwMTA0MDE0MzAzODBFMTAwNDQxCis6MjA3QzgwMDAwMDA0RkZGRTA0NDAwNDQ0N0ZGRTQ0NDQ0NDQ0NDY0NDQ5NjQ0ODk0NTA5NDYxMDQ0MjA0NDAxNDQwMDgwMDAwOEMKKzoyMDdDQTAwMDEwMDAxM0ZFRkM5MDIwOTAyM0ZFNTI5MjUyOTJGRTkyMTI5MjEyRDIxRjJBRjM0NjEyMDIxMjAyMTIwQTEyMDQ4QQorOjIwN0NDMDAwMUZGMDEwMTAxRkYwMTAxMDFGRjAwMDAwRkZGRTExMTAxRkYwMTExMDFGRjAwMTAwMUZGODAxMDBGRkZFMDAwMEM0Cis6MjA3Q0UwMDAwMDQwMDAyMDdCRkU0ODAwNDgwMDQ5RkM3OTA0NDkwNDQ5RkM0ODIwNDkyODc5MjQwMjI2MDQyMjAwQTAwMDQwMjMKKzoyMDdEMDAwMDAxMDA3RkZDMDAwMDBGRTAwODIwMEZFMDAwMDQ3RkZFNDAwNDg3QzgwNDQwMDQ0MDA4NDIxMDQyNjAzRTAwMDAwQgorOjIwN0QyMDAwNDA4MDIwNjAzMDIwMjNGRTAwMDBGMUZDMTEwNDExMDQxMUZDMTEyNDEwMjAxNTI4MTkyNDEyMjYwNEE0MDA0MDZGCis6MjA3RDQwMDAyMDgwMjA4MDI3RkNGNEM4MjMzMDJCRjgzNjE2MkJGNDYyMTBBM0YwMjA0MDIyNTAyMzQ4MjQ0Q0E5NDQ0MDgwQzQKKzoyMDdENjAwMDAwNjBGRjgwNEExRTRBNTI3QTUyNEE1MjRBNTI3QTUyNEE1MjRBREE0RjU0Rjg1MDA4OTAwODkwMDkxMDBBMTA0MgorOjIwN0Q4MDAwMTA4MDE4ODAxN0ZFMjhDODM1MkM2MjEwQTdGRTJBMTQzM0YwMjIxMDIzRjAyMjUwMjM0ODI0NEMyOTQ4MjA4MDNBCis6MjA3REEwMDAwMTAwMDA4NDFGRkUxMDAwOTAwMDU3Rjg1MDEwMzAyMDUwNDA5MDQwMTA0MDIwNDAyMDQwNDA0MDQxNDA4MDgwMTEKKzoyMDdEQzAwMDIwNDAyMDQwMjNGQzI0QTAyOTEwQjNGOEE2MTZBQkYwMjIxMDIzRjAzMjQwMjk1MDRBNEM0NDQ0ODE0MDAwODAzNgorOjIwN0RFMDAwMDEwMDdGRkU0MDA0QkVGODEyNDgwQTI4MTJDODIxMDgwNkMwMTkzMEU2OEUxOUMwMDYxODM4NjAwMzgwM0MwMEFCCis6MjA3RTAwMDA0MDAwMjdGQzMwMDgyMDEwMDBBMDAwNDBFMDQwMjA0MDIwNDAyMDQwMjA0MDIzQzAyMDgwNTgwMDg3RkUwMDAwQjcKKzoyMDdFMjAwMDQwODAyMDgwMkZGQzA1NDg5MjMwNTdGODFBMTYyM0YwMjIxMDIzRjBDMDQwNDI1MDQ0NDg1ODQ0NDE0NDQwODBEMgorOjIwN0U0MDAwMDAwMDdGRkMwMDE4MDA2MDAxODAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwNTAwMDIwMDlFCis6MjA3RTYwMDAxM0ZDMTI0NDEzRkNGRTQ0MTNGQzEwODAxOEY4MTE5MDMyNjBEMDUwMTE4RTE3RjgxMTA4MTEwODUxRjgyMTA4RjgKKzoyMDdFODAwMDIwNDAyMDQwM0JGQzIwQTA0NTE0N0JGOEE1MTYyMUYwRkQxMDIxMTAyMUYwMjA0MDJBNDgzMjQ0MjU0NDAwODAxMworOjIwN0VBMDAwMDEwMDNGRkUyMDAwM0Y3ODI5MjgyNTE4MjkyODMyOTgyMTYwMjY1ODM5ODYyRTYwMjE4QzRFMzA0MUMwOUUwMEVFCis6MjA3RUMwMDAwODA4MDg4ODRBNDgyQzQ4MTgwOEZGMDgxQzg4MkE0ODJBNEU0OUY4NDgwODg4MDgwODA4MDgwODA4MDgwODA4RTYKKzoyMDdFRTAwMDAwMDRGRjg0MDgwNDExMjQxRkE0MTEyNDIxMjQ1MjI0OEEyNDA0MjQwNDI0MDgwNDEwMDQyMDE0QzAwODAwMDBFRAorOjIwN0YwMDAwN0ZDNDA4MjQxRkE0MjBBNEQ5MjQwNjI0MTkxNDYwODg3RkZFMDI4ODA0OEMwQzUwMzQyMEM1MTAwRTBFMDQwNEVGCis6MjA3RjIwMDA3RkM0MDgwNDA4MjQwRkE0MTEyNDExMjQyQTI0NEEyNDA0MDQwODE0MzAwOEMwMTAyNDRDMjIyNjIyMjI0MDAwODUKKzoyMDdGNDAwMDAxMDAwOTIwMEQxODExMkMyMTc0QzFDMDAzMDAwRDAwNzEwMDBGRjgwMTA4MDIwODAyMDgwNDA4MTgyODYwMTAxRQorOjIwN0Y2MDAwMDQ5MDQ0OTAyODkwMTNGQzMwOTA0ODkwOEZGRTE4MDAyOUY4NDkwODg5MDgwOUY4MDkwODExMDg1MUY4MjEwOEY1Cis6MjA3RjgwMDAwMTEwMDExMEY5MTAyMTEwMjdCRTIxMTBGQjM4MjNCODIzNTgyNTU0MzU5NEM5MTYxMTEwMDExMDAxMTAwMTEwNzEKKzoyMDdGQTAwMDEwMjAxMDIwMTAyMDEwMjBGREZFMTAyMDEwNjAzODcwMzRCMDU0QTg1MTI4OTIyNjE0MjQxMDIwMTAyMDEwMjBFNQorOjIwN0ZDMDAwMDAyMDdEMjQxMEE4MTNGRTEwQjAyMTI4M0UyNjY5MjhBQkRFMkM0ODJBQTgzOUJFMjkyODIyMDgwNDA4MDgwOEJDCis6MjA3RkUwMDAzRkY4MDEwMEZGRkU4MTA0M0Q3MDAxMDAzRDcwMDgyMEZFRkUwODIwMUM3MDJBQTgyOEFFNDkyNDA4MjAwODIwMkYKKzoyMDgwMDAwMDAxMDAwOTgwMDkwMDQ5RkU0QTIwNEExMDRDMTA0OTA0NDlGRTQ5MjQ0OTI0NDkyNDQ5MjQwOUZDMDkwNDAwMDAwQworOjIwODAyMDAwMDgwMDA4N0UxNDQ0MTM0NDI5NDg0NDUwODQ0ODdGNDQwMTQyMDI0MjE0NTIwODRDMEM0MDA0NDAwNDQwMDA0MDFBCis6MjA4MDQwMDAyMTI0M0NBODQ0QjA0QkZFRkM2ODU1QTY1NDIwN0QwODU1RkU1NjQ4N0Q2ODAwQkUxQzg4RTEwODAyMDgwMDA4MkYKKzoyMDgwNjAwMDQyMTAyMjEwMjIxMDAyMTA4RjdDNDIxMDU2MzAyNzM4MkFEODRBNTREMjk2NDMxMDQyMTA0MjEwNDIxMDQyMTA1MworOjIwODA4MDAwMDA4MDRGRkUyMDAwMjdGQzE1RTQxNTI0MjVFNDI3RkMyMDAwQzdGODQwMDA1RkZFNDQ1MDQ0NDg0OTRDNTA4ODY5Cis6MjA4MEEwMDAwODNDMEJDMDEwNDAzN0ZFNTA0MDkwNDAxM0ZDMTAwMDBGRjAwODEwMDg5MDA4OTAwODkwMDE2MDA2MTgzODA2MTEKKzoyMDgwQzAwMDAyMDAwMTAwN0ZGRTA4MjAwNDIwMDI0MDAxODAwNjYwMzgxRUNGRjQwODEwMDgxMDA4MTAwODEwMEZGMDA4MTAxQgorOjIwODBFMDAwMjA0MDIwNDAyMDYwRjhBMDIwOTAyMTQ4MkEyNjM0MDA2MUY4QTAwODIwMTAyMDEwMjBBMDIwNDBBMDMwNDAxMDZBCis6MjA4MTAwMDAwMDQwRjg0MDIwQTAyMEEwMjExMDIxNDhGQTI2MjQyMDIzRjgyMDEwMjIyMDM5NDBDMEMwMDA2MDAwMjAwMDAwNjMKKzoyMDgxMjAwMDA0NDBGRkZFMDQ0MDA1NDAzRkY4MDEwMEZGRkUwODIwMTQxMDI3RUNDQzIwMTI0MDYxODAwNjYwMTgxRTYwMDRDMgorOjIwODE0MDAwMUZGODAxMDA3RkZFNDEwNDFENzAwMTAwMUQ3MDAyODAwNDYwMUExRUUxMDgxRkUwMDA0MDAyODAwMTAwMDEwMDYwCis6MjA4MTYwMDAwODIwMDgyMDRFNjA0ODUwNDg4OEZGNDYwMDI0NTIyMDUyRkM1MjA4NkExMDQ2NjA0RTIwNzIxMDAwMTAwMDAwRjYKKzoyMDgxODAwMDEwNDAxMDQwMjA0MDNDQTA0MDkwN0Q0RTkyMjQxMDIwRkRGQzEwMDgxMDEwMTBBMDEwNDAxNDIwMTgzMDEwMjBBNQorOjIwODFBMDAwMDg0MDBDNDAxOEMwMTEyMDMyOTA2NDQ4QTg2RTIwNDQyN0ZDMjAwODIwMTAyMTIwMjBDMDIwNjAyMDQwMDAwMEJFCis6MjA4MUMwMDAwMDIwNDQyMDI4NTBGQzUwMTA4ODExNDY3QTI0MTAyMDExRkNGQzA0MTAwODIwOTAyMDYwNDAzMDgwMjAwMDAwMzUKKzoyMDgxRTAwMDAwNDA0MDQwMjNGODMwNDAyRkZFMDFCMDIzMDgyNDg0MjlGOEMzMTA0Q0EwNDA0MDQwQjA0MzBFMUMwNDAwMDBDMgorOjIwODIwMDAwMDAwODNGRkMwMDA4MUZGODAwMDgzRkY4MDEwODAxOTAwOTEwMDkyMDEyODAwMjQwMDQyMDA4MUMzMDA4NDAwMDRECis6MjA4MjIwMDAwMDQwNzg0MDRCRkM1MDQwNTdGRTYxMjA1MTEwNEE4QzQ4RjA2OTEwNTJBMDQ0NDA0MEEwNDMxODRDMEU0MDA0NjIKKzoyMDgyNDAwMDEwMjAxMDIwMTA1MDEwNDg1NDg0NTU0NjU2MjQ1NDAwNTdGQzU0MDg1RDEwRTBBMDQwNDAwMDMwMDAxMDAwMDA2OQorOjIwODI2MDAwMTAwMDExRkUyODIwMjQ0MDQyRkM1MDg0ODhBNDdFQTQwNEE0MDhBNDMwQTQxMEI0MDg0ODA4ODQwMzA0MDAwMDA0Cis6MjA4MjgwMDAwMDAwMUZGODEwMDgxMDA4MTAwODFGRjgxMTA4MDEwMDNGRkMwMTA0MDIwNDAyMDQwNDA0MDgwNDEwMjgyMDEwODYKKzoyMDgyQTAwMDAxMDAwMTAwMDI4MDAyNDAwNDIwMDkxODMwOEVDMDE0MUZGODAwMTAwMDIwMDQ0MDAyODAwMTgwMDBDMDAwODA1MworOjIwODJDMDAwNDE4MDI2M0UyNDEyMDUxMjg1QTI1NkFBMTQ0NDIwMDAyN0ZDMjQ0NEM0NDQ0N0ZDNDQ0NDQ0NDQ0N0ZDNDQwNDFDCis6MjA4MkUwMDAwMDQwN0MyMDEzRkUxMDQwMTA5MDExMDg3QkZDMTAwNDExNTAxMTUwMTE1MDFENTBFMjUyMDI1MjA0NEUwODAwOEIKKzoyMDgzMDAwMDEwQzAxMzNFMTIxMkZBOTIxMkQyM0IyMjM2NDY1MDAwNTNGQzkyMjQxMjI0MTNGQzEyMjQxMjI0MTNGQzEyMDRBNAorOjIwODMyMDAwMDA0MDdDMjAxM0ZFMTA0MDEwOTAyMTA4M0JGQzI4MDQ2OTUwQTk1MDI5NTAzOTUwMjk1MjIyNTIwNDRFMDgwMEQ3Cis6MjA4MzQwMDAyMDQwMjNCRTIyMTIzRTkyNEE1MjUyOTI4MzJBMjI0NDIxRkMyMTI0MjEyNDI1RkMyOTI0MzEyNDIxRkMwMDAwQkUKKzoyMDgzNjAwMDA2MDAzOEZDMjA0NDI4NDQyNDQ0MkE4NDMyQTgyMTEwMUZGODExMDgxMTA4MUZGODExMDgxMTA4MUZGODEwMDgxMQorOjIwODM4MDAwMTAwNDA4MDQwNDA0N0ZBNDAxMjQyMTI0MTIyNDBBMjQwNDI0MDYyNDBBMjQxMTA0MjE4NDQxMTQ4MDA4MDAwMEFECis6MjA4M0EwMDAwMTAwMDA4MDFGRkUxMDAwOTdCQzU0MTQxNTE0MzVBNDU2NEM5MDgwMTdGQzE0NDQyN0ZDMjQ0NDQ3RkM4NDA0REYKKzoyMDgzQzAwMDIwODAxMDQwMTdGRTAwNDA4MDgwNDkxMDRCRjgxMDA4MTI1MDEyNTBFMjUwMjI1MDI0NTIyNDUyMjg0RTIwMDBCQQorOjIwODNFMDAwMTAwMDEwQzAxMzFFRkUxMjEyNTIzQTUyMzY1MjUyNTI1MkQyOTM1QTEyNTQxMDkwMTA5MDExMTAxNjEwMTAxMDIyCis6MjA4NDAwMDAwNDAwMDMwMDAxODAwMTAwRkZGRTAwMDAwMDAwMDQ4MDA2NDAwNDIwMDgxMDA4MTgxMDBDMjAwQzQwMDgwMDAwMjAKKzoyMDg0MjAwMDAyMDAwMjQwMDIyMDAyMjA3RkZFMDI4MDAyOTAwMjkwMDRBMDA0QzAwODgwMDk4MDEyODIyMDgyNDA3RTAwMDAyNAorOjIwODQ0MDAwMDI0MDAyMjRGRkZFMDJBMDA0QzQxOEZDMjMwMDdGRkMwODIwMEZFMDA4MjAwRkUwMDgyNEZGRkUwMDIwMDAyMDA0Cis6MjA4NDYwMDAwMDgwMDBBMDAwOThGODkwOEZGQzg4QTA4OEE0ODhBODg4QjBGOTIwODk2MDAyQTAwMjIyMDQyMjA4MUUwMDAwNjEKKzoyMDg0ODAwMDIwNDAzRjdFMjg1MDQ0ODg0NTA4ODIyMDAyMTA3RkZFMDQ4MDA0OTAwOEEwMDhDMDExODIyNjgyQzA3RTAwMDBGQworOjIwODRBMDAwMDEwMDdGRkU0ODI0MzExMDAxMDA3QkY4NEE5MDU0NjA1MTlFNEVGNDRBNDA2QkZDNTQ0MDQ5Rjg0MDQwNDdGRUQzCis6MjA4NEMwMDAwMDgwNzhGODQ5MDg1MjkwNTA2MDYwRDA1MzBFNDhGMDRBNDA2QkZDNTQ0MDQzRjg0MDQwNDA0MDRGRkU0MDAwQjMKKzoyMDg0RTAwMDAyMjAwMjEwN0ZGQzAyODAwNDkwMDRFMDA5ODQxNjg0MjE3QzQxMDAxRkY4MDEwMDAxMDAwMTAwRkZGRTAwMDBCNworOjIwODUwMDAwMTA4MDEwQTAxMDk4MTA5MEZCRkUxMEEwMTRBODE4QUMzMEE4RDEzMDExMjAxMjYwMTJBMjE0MjI1ODFFMjAwMEFFCis6MjA4NTIwMDAwMEEwN0M5MDQ4OTA1N0ZFNjBBMDUwQTA0OEE0NDkyNDQ5Mjg2OTMwNTE2MDQyQTA0MjIyNDQyMjQ4MUU0MDAwMEMKKzoyMDg1NDAwMDEwMjAxMEE0MTA2OEZERkUxMDcwMzhBODM1MjY1MDQwNTA0MDk3RkUxMDkwMTE5MDEwNjAxMEQ4MTcwNjEwMDI4QworOjIwODU2MDAwMTExMDA5MTgwOTIwN0ZGRTAzODAwNTQwMDkzMDExMEUyMjA0N0ZGRTA0MjAwODQwMDQ4MDAzMDAwQ0UwNzAxQ0U1Cis6MjA4NTgwMDAxMDQwMTI0QzExNDgxMEQwRkJGRTEwRDAxNTQ4MUFDNjMwODBEN0ZFMTEwODEzMTAxMEUwMTA1ODUxOEMyNjA0QkUKKzoyMDg1QTAwMDIwNDAzRTdFNDg5MDg1MDgxMTEwMDkyMDdGRkUwOTYwMzExRUMyMDQ3RkZDMDQyMDBFNDAwMTgwMEU2MDcwMTg5MQorOjIwODVDMDAwMjAwMDE3RkMxNDA0MDdGQzg0MDA1NDAwMTdGRTE0MjAyN0ZFMjYyMjI2QUFDNjIyNEFBQTRBMjI1MjJBNDIwNEU1Cis6MjA4NUUwMDAwMDAwN0JGRTQ4MjA1MDIwNjAyMDU1RkM0RDI0NDUyNDQ1NTQ0NTk0NkQwNDU1MTQ0NTA4NDQwMDQ3RkU0MDAwMUQKKzoyMDg2MDAwMDA0MjAwNDIwRkZGRTA1MjAwMDgwMUZGODEwMDgxMDA4MUZGODEwMDgxMDAwMTAwMDIwMDAyMDAwNDAwMDgwMDBEQQorOjIwODYyMDAwMDA4MDAwODAwMEZFMDA4MDAwODAxRkZDMTAwNDEwMDQxRkZDMTAwNDEwMDAxMDAwMTAwMDIwMDAyMDAwNDAwMDFBCis6MjA4NjQwMDAwODAwMDhGRTBFMjAwODQwN0VGQzQyODQ0MkE0N0VBNDQwQTQ0MEE0NDBBNDQwMzA0MDQ4NDE4Njg2MDIwMDAwNUIKKzoyMDg2NjAwMDAxMDAwMDgwM0ZGRTIwODAyMDQwMjdGODI0MDgyNDA4MjdGODI0MDgyNDAwMjQwMDQ4MDA0ODAwOTAwMDIwMDBGMgorOjIwODY4MDAwMTA0MDEwMjAxMDI0MTVGRTE1MDQ1OTA0NTEwNDkxRkMxMTA0MTEwMDE5MDAyNTAwMjIwMDQyMDA4NDAwMDgwMDY3Cis6MjA4NkEwMDAyMDQwMjA3QzIwNDBGN0ZFMjQ0NDI3RjgyQzQ0MzQ3QzY0MDBBNDQwMjVGQzI0NDQyODQ0Mjg4NEIwOTQ0MTA4NEMKKzoyMDg2QzAwMDAxMDAwMTA0MDFGRTAxMDAzRkZDMjA0NDI4NjQyNEM0MjI4NDIxMDQyMjg0MjQ2NDI4MjQzRkZDMjAwNDAwMDBERAorOjIwODZFMDAwMDEwMDAxRjgwMTAwM0ZGRTIxMDQyRkYwMjEwNDIwRkMyMTAwMkZGODIxMDgyMTA4MjIwODQyMDg0NDI4ODgxMEFCCis6MjA4NzAwMDAwNDAwMDdFMDA4NDAxRkY4NzEwODFGRjgxMTA4MUZGODAwMDBGRkZFMDAwMDBGRjAwODEwMEZGMDA4MTAwRkYwMjUKKzoyMDg3MjAwMDA4MjA3RUZDMUM3MDJBQThDQTI2MDEwMDNGRkMyNDQwM0ZGODI0NDgzRkY4Mjg0MDJGNTA0ODY0NEU0NDg4M0NFNgorOjIwODc0MDAwMDNGMEZDMTAxMDEwMTNGMDIwMTAzODEwNkZGRUE4NDQyQTY4Mjk1MDI4RDAzOTQ4MkE0RTI0NDQwMTQwMDA4MDAxCis6MjA4NzYwMDAzRkY4MDEwMDdGRkU0MTA0MTU1MDBBMjgzQzgwMjRGODNENTAxMjIwNUNEODUzMDY1MEY4NUM4OEUwRjgwMDg4QjgKKzoyMDg3ODAwMDAwODA3ODgwNDhGQzQ5ODg0QTQ4N0M1MDUwMjAxMDU4NUQ4NjUzRkM1MTA4NTEwODVEMDhFMUY4MDEwODAwMDBFQgorOjIwODdBMDAwMDA4MDdDODA0NEZDNTQ4ODU1NDg1NjUwNTQyMDU0NTA1NDhFNTVGQzUyODgxMDg4Mjg4ODQ2Rjg4NDg4MDAwMDI3Cis6MjA4N0MwMDAwMTAwMDA4MDNGRkUyMjQwMjI0MDNGRkMyMjQ0M0ZGQzIwNDAyODQwMkY0QzI4NzA0QTQyNEM0Mjg4M0UwMDAwODAKKzoyMDg3RTAwMDQwMjAyNzIwMjUzQzA1MjQ5NTQ4NTcyODEyMTAyMjI4MkE0NjJCRkNDQTQ0NEE0NDRCNDQ1QzdDNDA0NDAwMDA2MgorOjIwODgwMDAwMjAwMDEzRjgwMDA4RkRGODA0MDgwQkZFMTA0MDNBNDg1NTUwOTE2MDEwRDAxMTQ4MTY0NjEwNDAxMTQwMTA4MEVECis6MjA4ODIwMDAwMDAwM0ZGMDAwMTAxRkYwMDAxMEZGRkUwMTEwMTEzMDA5NDAwNTgwMDM0MDBEMzA3MTFDMjEwODA1MDAwMjAwODAKKzoyMDg4NDAwMDAwNDBGODQwODg0MDk3RkNBMDQwOTA0MDg4NDA4RkZFODg0MEE4NDA5NDQ0ODQ0NDg0NDQ4N0ZDODQwNDgwMDA5RAorOjIwODg2MDAwRjcyMDU1MjgzMzI0MzUyMEQxRkUxNTIwMEMyNDMyMjRDOUE4MTAxMDY0MzAxODUwNjI4QTA0MEExODA2RTAwMkE3Cis6MjA4ODgwMDAwMDIwN0MxMDA0MTAyNEZFMjQ4MjI0ODIyNDgyM0VGRTAyODAwMjgwMUE4MEUyODAwMzAwMTUwMDBBMDAwMDAwQTYKKzoyMDg4QTAwMDFGRjAxMDEwMTAxMDEwMTAxRkYwMTAxMDAwMDAwMDAwM0ZGODIwMDgyMDA4MjAwODIwMDgzRkY4MjAwODAwMDBFNAorOjIwODhDMDAwMTAwMDEwRkMyMDg0M0U4NDQwODQ3Q0ZDOTAwMDEwMDBGREZFMTEwMjExMDIxMTAyMTUwMjE5RkUxMTAyMDAwMEM1Cis6MjA4OEUwMDAxMDAwMUJGODEyMDgzMjA4MjIwODYzRjhBMjA4MjAwMDI3RkMyNDA0MjQwNDI0MDQyNDA0MjdGQzI0MDQwMDAwQTQKKzoyMDg5MDAwMDIwNDAxMDQwMTA4MEZFRkUyMTAwMjIwQzNDRjAyNDgwMjRDQzI0QjAyNEEwMjQ5MDQ0ODg0NEE2OTRDNDA4ODAyQQorOjIwODkyMDAwM0ZGQzIwMDQzRkZDMjEwMDI1RkMyRDAwMzNGQzI1MDQyOUZDMzkwNDI5RkMyODgwMjlGQzRBODg0ODcwOEI4RURGCis6MjA4OTQwMDAzRkZDMjAwNDNGRkMyNDkwMjJBMDNGRkUyMUMwMjJCMDJDOEMyMjgwM0ZGQzI0MjA0NDIwNDNDMDhDMzgzMDEwRDMKKzoyMDg5NjAwMDAwNDAyMjQ4MzE1MDIwNDA0QkZDRjhFMDExNTAyMjRDNDA4MEY3RkUwMTEwMDE5MDM4NjBDMDk4MDMwQzBDMDgxNAorOjIwODk4MDAwMDEwMDAxRjgwMTAwM0ZGRTIxMDQyMUYwMkYwMDIxMDgyMEY4MjAwMDIyODgyQTU0MkE1MjUyMUE0MUYwODAwMDE4Cis6MjA4OUEwMDAzRkY4MjAwMDVGRjAwMDAwN0ZGMDAwMTAzRjkwMDA5MDFGOTAwMDkwRkZGMDI0OTAxNzBBMTQ4QTY0NDYwQzAyREEKKzoyMDg5QzAwMDEwNDAxODQwMTNGODI4NDg0RkZFOTA0ODEzRjgzMDQwNTNGQzkwNDAxMDQwMTdGRTEwNDAxMDQwMTA0MDEwNDAxMAorOjIwODlFMDAwMDIwMDAxMDA3RkZFNDEwMDIyMjgxN0QwMDQ4MDExMTAyMjQ4NDdDNDAxMjBGRkZFMDEwMDAxMDAwMTAwMDEwMDQ5Cis6MjA4QTAwMDAyMDgwMTBGODEwODAwN0ZFODQ4NDU0RjgxNzgwMjQ4ODI0RjgyNDAwQzQ0MDQ5MjQ0RDBBNTUwQTYwRjgwMDAwQzMKKzoyMDhBMjAwMDIwMDAzM0Y4MjAwODIxRjg0ODA4RkZGRTEwNDAyMjQ4NDE1MEYwRTAwMTUwMDI0RTM0NDRDMDQwMDE0MDAwODA2OAorOjIwOEE0MDAwMDIwMDAxMDA3RkZFMDQ0MDE0NTAxNDQ4MjQ0NjQ0NDI4MTAwMDEwMDIxMDgyMTA4MjEwODNGRjgyMDA4MDAwMDQ2Cis6MjA4QTYwMDAwMjAwMDEwMDdGRkUwNDQwMTQ1MDE0NEMyNDQ2NDQ0NDBGRjAwMTAwMUZGODAxMDA3RkZFMDEwMDA1MDAwMjAwREYKKzoyMDhBODAwMDAxMDAwMDgwN0ZGRTAyNDAxMjUwMUE0ODIyNDQ0MjQwMEZGMDAwMjAwMDQwN0ZGQzAwODAwMDgwMDI4MDAxMDA4RAorOjIwOEFBMDAwNDA4MDIwNDAyRkZFMDEyMDk1Mjg1NTI0MTkyNDIxMjAyMDgwMkZGRUMwQzA0MUEwNDI5ODQ0OEU1ODg0NDA4MDFFCis6MjA4QUMwMDAwMzAwM0M3QzIyNDQyMjQ0MzI2NDJBNTQyRTVDMkE1NDI2NDQ3QTU0MjQ0ODA0NDAwODQwMzA0MEMwNDAwMDQwMTMKKzoyMDhBRTAwMDA2NDA3ODQwMDg0MDA4NDAwQTQwRkY0MDA4NDAwODQwN0U0MDQyNDA0MjQwNDI0NDQyNDQ3RTQ2NDIzQzAwMDBCRgorOjIwOEIwMDAwMTA0MDEwMjAxMDEwMTNGRUZFMDAxMUZDMTUwNDE5MDQzMUZDRDAyMDExMjgxMTI0MTIyNjE0MjI1MEEwMjA0MDFBCis6MjA4QjIwMDAwMDgwMDA4MEY5RkNBOTA4QUE5MEFDNjBGODUwQTk4OEFFMDZBOUY4QTkwOEY5MDg4OTA4MDFGODAxMDgwMDAwMzYKKzoyMDhCNDAwMDEwNDAxMDQwMTA0MEZDQTAxMDkwMTUwRTFBMDQxNTAwMzEzOEQxQzAxMTAwMTEwMDExMDQxMTA0NTBGQzIwMDBFMQorOjIwOEI2MDAwMTAyMDEwMjBGRTUwMjA1MDIwODg1MTA2OTI4NEZDODgxMDlDMTZFMDM4ODBEMDg0MTA4NDEwODYxMDdDMTAwMENBCis6MjA4QjgwMDAxMDQwMTg0MDEwNDAzMEEwMjExODYyMEVBNTA0MjkxMDIxMzgyMUMwMjEwMDIxMDQyMTA0MjEwNDIwRjgyMDAwODAKKzoyMDhCQTAwMDAxMDAwMTAwMDI4MDA0NDAwODMwMTAxQzY4MDgwODQwMDhFMDA5ODAwRTAwMDgwODA4MDgwODBDMDdGODAwMDAxRgorOjIwOEJDMDAwNDA0MDIwNDAyMEMwMDBBMDg5MTA0QTA4NTUwNjExMDAyMTMwMjFDMEUxMDAyMTAwMjEwNDIxMDQyMEZDMDAwMDQ0Cis6MjA4QkUwMDAxMDQwMTA0MDIwQTAyMDkwNDUwOEZBMEUwQzA0MTEwMDIxMDhGOTMwNDFDMDAxMDAxOTA0RTEwNjAwRkMwMDAwOUIKKzoyMDhDMDAwMDQwNDAyMDQwMzBBMDIwOTAwMTA4MDIwNkU1MDQyMTEwMjEzODIxQzAyMTAwMjUwMDI5MDQzMTA0MjBGQzAwMDBDQgorOjIwOEMyMDAwMDQ0MDA0NDBGRkZFMDQ0MDA0NDAzRkY4MjQ0ODNGRjgwMjAwMDdGODA4MTAzNDIwQzI0MDAxODAwNjAwNzgwMERGCis6MjA4QzQwMDAxMDAwMTFGQzExMjQ3REZDNTUyNDU1RkM1NDQ4N0NGMDU0MjgxMDQ0MTlGRTE2MjQxQ0E4RTUyNDAyQTIwMDQwQTUKKzoyMDhDNjAwMDAwMDAzRkZDMjI0NDIyNDQyMjQ0M0ZGQzIyMDAwM0ZDMDYwODBDMDgxMjEwNjEyMDAwQzAwMzAwMEMwMEYwMDBBNworOjIwOEM4MDAwMDAwMDQ3RkMyNTI0MjUyNDA3RkMwMTAwRTFGODIyMDgyNTEwMjA5MDIwMjAyMDQwMjA4MDUzMDA4RkZFMDAwMEYzCis6MjA4Q0EwMDAyMDAwMjNGRTNBNTIyMjUyNDNGRTc4ODA5MDgwMTFGQ0ZEMDQxMjg4MTA0ODEwNTAxNDIwMTg0MDExODAwNjAwQTcKKzoyMDhDQzAwMDIwNDAzRjdFNDg5MDQ1MDhCRkZDMjI0NDIyNDQzRkZDMjIwMDA3RkMwODA4MzQxMDAyNjAwMTgwMEUwMEYwMDAzNgorOjIwOENFMDAwRjlGQzA5MjQwOUZDNDkyNDQ5RkM0ODQwNDA4ODdERjAwNDQwMTQ4ODI1RkNDNDIwMDUyODI5MjQxMkE0MDA0MDg5Cis6MjA4RDAwMDAyMDAwMTFGQzExMjRGREZDMDkyNDExMjQzNUZDNTgyMDlCRkUxNDcwMTBCMDEwQTgxMTI0MTIyMjE0MjAxMDIwOEIKKzoyMDhEMjAwMDA0NDAwNDQwRkZGRTA0NDA0NTAwMjFGOEExMTA0QUEwNDg0MDEwQTAxMzE4RUZGNjIyMTAyMjEwMjNGMDIyMTA4MAorOjIwOEQ0MDAwMDEwMDQxMDAyM0Y4MjIwODg1MTA1MEEwNTA0MDEwQjAyMzBFMkUwNEUzRjgyMjA4MjIwODIyMDgyM0Y4MjIwOEI2Cis6MjA4RDYwMDAwMDgwRjg4MDA4RkM0OTg4NDk1MDRBMjA0ODMwN0M0ODA1ODYwNEZDMzQ4NEM0ODQwNDg0MTRGQzA4ODQwMDAwMzgKKzoyMDhEODAwMDIwODAzMDgwMjBGODQxODg0QTkwRjg2MDEwNjAyMDkwNDEwQ0ZCRkUwNTA4MDEwODM5MDhDMUY4MDEwODAwMDBGMQorOjIwOERBMDAwMTAwMDExRjgxMDA4MTA4OEZDODgyNDg4MjQ4ODI0RkUyODAyNDgwMjMzRkExODAyMjQwMjQ2MDI4NDE0MDAwODIzCis6MjA4REMwMDAwMTAwMDA4MDNGRkUyNDEwMjQxMDNGN0UyNDEwMjQxMDJFMzAyRDU4MzQ1ODY0OTY0NTE0ODQxMDA0MTAwMDAwREUKKzoyMDhERTAwMDAwMDBGQkY4MjAwODIxMDgyMTA4MjEwOEY5MDgyMUZFMjAwMjIwMDIyM0ZBMzgwMkMwMDIwMDA0MDAxNDAwMDg0MAorOjIwOEUwMDAwMDAwMEZERjgxMDA4MTA4ODEwODgyMDg4M0M4ODY0RkNBNDA0MjQwNDI1RjQyNDA0M0MwNDI0MDQyMDI4MDAxMDc4Cis6MjA4RTIwMDAxMDAwMTNGODEwMDgxMDg4N0M4ODU0OTA1NTEwNTVGQzdDMDQ1MDA0MUJGNDE0MDQxRTA0RTQxNDAwMDgwMDAwQUMKKzoyMDhFNDAwMDAwMDAzRkUwMDAyMDA4MjAwODIwMDgyMDA4MjAwRkZDMDAwNDAwMDQ3RkY0MDAwNDAwMDQwMDM0MDAwODAwMDA2OQorOjIwOEU2MDAwM0U3QzIyNDQyMjQ0M0U3QzAwMDAxRkUwMDAyMDA4MjAwODIwMEZGQzAwMDQ3RkU0MDAwNDAwMTQwMDA4MDAwMEIxCis6MjA4RTgwMDAwMDgwMDA0MEY3RkU5NTEwOTUxMDk3QkU5NTEwOTdCODk3NzhGNTU0OTU1Mjg5OTIwOTEwMTExMDIxMTAwMDAwQzUKKzoyMDhFQTAwMDAwMDAwM0Y4NzgwODQ5MDg0OTA4NDkwODQ5MDg0QkZDNDkwNDc4MDQ0QkY0MDAwNDAwMDQwMDA0MDAxNDAwMDg3QworOjIwOEVDMDAwMTAwMDEzRkMxMjQ0MTI0NDEzRkNGRTQ0MTI0NDEzRkMxMjQ0MTA0MDEzRkMxQzQwRTA0MDAwNDAwN0ZFMDAwMDlCCis6MjA4RUUwMDAwMDAwM0ZGRTAwMDQwNDg4MDJDMDEyODAwODgwMDg4MDAwODQzRkZFMDE0MDAzMzAwNjE4MTgwQzYwMDQwMDAwNjYKKzoyMDhGMDAwMDAxMDAwMTAwM0ZGQzAxMDAxRkY4MDEwMDdGRkUwNDAwMDdGMDA2MTAwOTIwMTBDMDAxMjAwNjEwMzgwRTAwMDRGMworOjIwOEYyMDAwMDA4MDAwODgzRkZDMDA4MDAwODA3RkZFMDQ4QzAyOTAxMjgwMDkwMDdGRkUwMTQwMDIyMDA0MzAwODE4MzAxMDQwCis6MjA4RjQwMDA0MDAwMjdGRTMwODAyMDgwMDA4MDAwRjhGMTA4MTEwODExMDgxMTA4MTIwODEyMjgxNDEwMjgwMDQ3RkU4MDAwM0IKKzoyMDhGNjAwMDAwODA3ODYwNDg0MDRCQzg3ODRDNDg0ODRCNTA0OTYwNzk1MDQ5NDg0OTRDNEE0NjRDNDQ4ODQwQTk0MDEwODAxNgorOjIwOEY4MDAwMDExMEY3RkU5MTEwOTExMDk3RkVGMDkwOTdGRTk0OTJGNDkyOTU1Mjk1MkE5NjQ2RjQ4Mjk0MDI4NDBBMDQwNDBGCis6MjA4RkEwMDAyMUY4MjEwODIxRjgzRDA4NDVGODQ4MDA4M0ZDMjI5NDIzRkMyMDAwMjFGODIwOTAyODYwMzA5MDIzMEUwMDAwRDYKKzoyMDhGQzAwMDAyMDAwMTAwN0ZGRTE0NTAxNDQ4MjQ0NDQ0NDQwNTQwMUZGMDExMTAxMTEwMUZGMDAxMDgwMUY4N0UwQzAwMDgyOAorOjIwOEZFMDAwNDExMDIxMTAyRkZFMDExMDgwMDA1N0ZFNTEyMDE3RkMyNTI0MjUyNDI1QjRDNjRDNDQ4NDQ0MDQ0NDE0NDQwODI3Cis6MjA5MDAwMDAwNDQwRkZGQzA0NDAxRkYwMTExMDFGRjAwMDAwM0ZGODI0NDgzRkY4MDAwMDBGRTAwNDQwMDM4MDFDNzBFMDBFODQKKzoyMDkwMjAwMDFGRjAxMDEwMUZGMDEwMTAxRkYwMDAwMDdGRkM0NDQ0N0ZGQzAwMDAxRkYwMDQyMDAyNDAwMTgwMDY2MDc4MUM1NQorOjIwOTA0MDAwMjFGODIxMDgyMUY4MzEwOEE5RjhBODAwQTdGRTI0OTIyN0ZFMjAwMDIxRjgyMDkwMjA2MDIxQjAyRTBFMjAwMDFECis6MjA5MDYwMDAyM0Y4MTIwODEzRjgwMjA4ODNGODUwMDAxN0ZDMjUyNDI3RkMyMDAwQzNGODQxMTA0MEEwNDA2MDQxOUM0NjA4ODUKKzoyMDkwODAwMDQzRjgyMjA4MzNGODIyMDgwM0Y4RTAwMDI3RkMyNEE0MjdGQzIwMDAyM0Y4MjExMDI4QTAzMDQwMjFCMDBFMEU5QworOjIwOTBBMDAwMDQyMDA0MjBGRkZFMDQyMDA1MjAwMDgwRkZGRTEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxRkZDMDAwMDFBCis6MjA5MEMwMDAwNDIwMDQyMEZGRkUwNDIwMjQ0MDEwMjA5N0ZFNDkwMDQ5MDAxMTAwMTEwMEUxMDAyMTAwMjNGRTIxMDAyMDAwRTYKKzoyMDkwRTAwMDAyMDAwMTAwRkZGRTEwMDAxMDAwMUZGQzAwMDAxRkYwMTAxMDFGRjAxMDEwMUZGMDEwMTAxMDEwMUZGMDEwMTA1OQorOjIwOTEwMDAwMDAwMDIxRkMxMTA0MTEwNEZERkM0MTIwNDEyMDQxRkU0MTIwNDEyMDQxMjA3RDEwMDExMjAxNEEwMTg2MDEwMjc2Cis6MjA5MTIwMDAyMDgwMjA0MDIwMjAzN0ZFQUEwMEFBMDBBMjAwMjIwMDIyMDAyMjAwMjIwMDIyMDAyMjAwMjNGRTIwMDAyMDAwOTcKKzoyMDkxNDAwMDA0MjA3RkZFMDQyMDAyNDAwMjIwN0ZGQzA0MjAwODEwMzQ0RUM0NDQzRkZFMDQ0MDA4NDAwODQwMTA0MDIwNDBFNAorOjIwOTE2MDAwMDg5MDg4OTA1N0ZFMjA5MDUwOTA4ODkwMUJGQzJBNDQ0QTQ0OEE0NDBCRkMwQTQ0MEE0NDEyNDQ1M0ZDMjIwNEYzCis6MjA5MTgwMDAwNDQwMDQ0MEZGRkUwNDQwMDAwMDNGRjgwMjMwMDE0MDdGRkUwMTg0MDI4ODA0ODAwODgwMzA4MEMyODAwMTAwRDEKKzoyMDkxQTAwMDIwOTAyMDkwMjNGRTNDOTA0MDkwN0MwMDkxRkMxMTI0RkQyNDExRkMxMTI0MTEyNDE1MjQxOUZDMTEwNDAwMDA1OQorOjIwOTFDMDAwMDAwMDAxRjg3RTAwMDIwMDAyMDAwM0Y4M0UwMDAyMDAwMjAwMDNGQ0ZFMDAwMjAwMDIwMjAyMDIwMUZFMDAwMEQxCis6MjA5MUUwMDAwMDAwMUZGODAwMTAwMjIwMDE0MDdGRkUwMTg0MDI4ODAyODAwNDgwMDg4MDEwODAyMDgwNDA4MDgyODAwMTAwRDgKKzoyMDkyMDAwMDIwNDAyMTgwM0QxRTIxMTI0MTUyN0Q1MkExNTIyMTUyRkQ1MjIxRDIyMTVBMjA1NDI4OTAzMDkwMjExMDAwMTAwRAorOjIwOTIyMDAwMDAwMDAzODAzQzdDMjI0NDIyNDQyMjQ0MjI0NDIyNDQyMjQ0MkE0NDc0NUMyNDQ4MDg0MDEwNDA2MDQwMDAwMEFECis6MjA5MjQwMDAwNDQwMDQ0MEZGRkUwNDQwMDBBMDAwOTAzRkZFMjA4MDIwODQyMDQ4MjA1MDIwNjAyMEEwNDMxMjRDMEE4MDA0NEQKKzoyMDkyNjAwMDNGRkMyMDA0MkZGNDIwMDQyRkY0MDAwNDFGRjgxMDA4MUZGODEwMDgxMDA4MUZGODEwMDgxMDA4MUZGODEwMDgzNQorOjIwOTI4MDAwMjAwMDIzRkMyMjA0RkFGNEFBMDRBQUY0QTgwMEE5RjhBOTA4QTlGOEI5MDgyMUY4MjEwODIxMDgyMUY4MjEwODI2Cis6MjA5MkEwMDAwQzIwRjA0MDExRkM0QjA0MkQwNDMxRkNDOTA0MTkwNDI1RkNDQzUwMTQ1MDI0NTBDNDkyMDQ5MjI5MEUxMjAwNjQKKzoyMDkyQzAwMDA2MDAzOEZDMjQyNDIyMjQyRjQ0NzI1NDIwODgxRkYwMTAxMDExMTAxMTEwMTExMDEyOTAwNDQwMTgzMDYwMjBBNQorOjIwOTJFMDAwMDEwMDAxODAwMTAwMDMwMDAyNDAwNDYwMDg0MDEwODAyMDgwMDEwMDAyMTAwNDA4MDg3QzFGQzYwMDA0MDAwMDNFCis6MjA5MzAwMDAwMDgwRjhDMDIwODAyMDg0MjFGRTIxMTBGQTEwMjMxMDI0QTAyMEEwMjA0MDM4QTBDMTEwMDYwRTE4MDQwMDAwODcKKzoyMDkzMjAwMDEwODAxMEMwMTA4MDEwODBGREZFMTExMDMyOTAzQzkwNTQ1MDUwNjA5MDIwMTA1MDEwODgxMzBFMUMwNDEwMDBCNgorOjIwOTM0MDAwMTEwMDExMDAxMUZFMTIwMEZCRjgxNTA4Mzk0ODM1Mjg1N0ZFNTE0ODkxMjgxMTA4MTFGRTEwMDgxMDI4MTAxMDlECis6MjA5MzYwMDAwMDQwRkU0MDI4RkUyODgwRkZGQ0FBQzRBQUE0QUFBNENGRkU4MkM0RkVBNDgyQTQ4MkZFRkUwNDgyMTQwMDA4QTEKKzoyMDkzODAwMDFGRjAwMTAwN0ZGRTQ5MjI4NTQ0MDkyMDEwMDAxRkY4MjAwMDVGRjAxMjEwRkZGRTEwOTAzRkY4MDAxMDAwNjBFNworOjIwOTNBMDAwMTExMDExMTAxN0ZFMTUxMDU5RjA1MTEwNTFGMDkwNDAxMDQwMTdGRTI4RTAyOTUwNDI0ODRDNDZCMDQyMDA0MDQyCis6MjA5M0MwMDAyMDAwMTFGMDExMTA4MTEwNDIxMjU0MEUxMDAwMTdGODIyMTAyMTEwRTBBMDIwNDAyMEEwMjExODI2MEUyMDA0NTEKKzoyMDkzRTAwMDNGRkMyMDg0MjA4NDNGRkMyMDAwMjdGQzI0MDQyNDA0MjdGQzI0MDQyNDA0NDdGQzQ0MDQ0NDA0ODdGQzA0MDQ0QgorOjIwOTQwMDAwMTEwODExMDgxN0ZFMTEwOEZERjgyNTA4MjVGODI4NDA0ODQ0NEZGRTMwRTAxMTUwMkE0ODQ0NEU4ODQ0MDA0MEVCCis6MjA5NDIwMDAyMTA4MjA5MDIzRkMzQzQwNDA0MDdCRkNBMDQwMjNGQ0ZDNDAyMDQwMjdGRTIwNDAyMEEwMjg5MDMxMEUyNjA0QzAKKzoyMDk0NDAwMDEwMDAxMDAwM0ZGQzIwMDA0RkYwOEExMDA5MTAwODEwRkZGRTExMTAxMDkwMTAxMDFGRkUwMDEwMDA1MDAwMjAwQworOjIwOTQ2MDAwMDgyMDA0NDA3RkZDMDEwMDFGRjgwMTAwMDEwMDdGRkUwMTAwMDEwMDNGRkMwMjgwMDQ0MDA4MzAzMDFDQzAwODFGCis6MjA5NDgwMDAwMDQwMDA0MDc4NDA0QkY4NDg0MDQ4NDA3RkZFNDhDMDQ4RTA0OTUwNDk1MDdBNDg0NDRFMDg0NDAwNDAwMDQwNDIKKzoyMDk0QTAwMDAyMDAwMTAwN0ZGRTQwMDQ4NDQwMjVGODNDNDAwNDQwMDdGQ0ZDRTAyNEQwMjU0ODI2NEU0NDQ0ODQ0MDA0NDAwMworOjIwOTRDMDAwMjAyMDMwMjAyMDIwRkRGQzI0MjAyNDIwMjQyMDQ3RkU0NDYwMjg3MDEwQjAxOEE4MkQyNjQ5MjQ4MjIwMDAyMDc0Cis6MjA5NEUwMDAxMDAwMTlGQzExMjQxMTI0RkRGQzI1MDAyNUZDMjU4NDRCRkM2QTg0MTJGQzFBODQyNjg0NDRGQzg4ODQwMDAwMUUKKzoyMDk1MDAwMDEwMDAwQkZDMDgwNDIwMDQyMDA0MjAwNDIwMDQyMDA0MjAwNDIwMDQyMDA0MjAwNDIwMDQyMDA0MjAxNDIwMDg0MAorOjIwOTUyMDAwMTAwMDBCRkMwODA0NDAwNDQxMDQ0NDg0NDRBNDU0MTQ1NDE0NjQwNDQ0MjQ0M0U0NDAwNDQwMDQ0MDE0NDAwOEU0Cis6MjA5NTQwMDAwQTAwMDkwMDExQkMxMTA0MzQwNDI0MDQ2NDA0QTQwNDI0MDQyNDA0MjQwNDI0MDQyNDA0MjQxNDI0MDgwMDAwN0EKKzoyMDk1NjAwMDA0MjAwNDIwRkZGRTA0MjAwMDAwN0NGODQ0ODg0NEY4NDQ4ODdDODg0NEY4NDQ4ODdEMDg0NTA4NDIyODA0MTBERQorOjIwOTU4MDAwMDQyMEZGRkUwNDIwN0ZGRTQwMDQwRkYwMDAwMDdGRkMwNjEwMTkxODYyQjAwQ0MwNzNBMDBDOTg3MjhFMDEwNDZBCis6MjA5NUEwMDAyMDkwMjdGRTIwOTBGN0ZFMjQwNDcxRjg2ODAwQTdGRUExODAyNjQ4MjFCMDI2NjgyMUFFMkUyNDIwQTAyMDQwNjQKKzoyMDk1QzAwMDAwMDA3Q0ZDNDQ4NDQ0RkM3Qzg0NDRGQzQ0ODQ3RDA0MDExNDAyMDgzRkY4MjQ0ODI0NDgyNDQ4RkZGRTAwMDBFQgorOjIwOTVFMDAwMjAwMDIxRjgyMDEwM0MyMDQxRkU3QzIwOTAyMDEwQTBGQzQwMTFGQzExNTQxMTU0MTU1NDE5NTQxN0ZFMDAwMDZECis6MjA5NjAwMDA4QkY4NDgxMDMwMjAyMDQwNTdGRTkwNDAxMTQwMzA4MDU3Rjg5NTQ4MTU0ODE1NDgxNTQ4MUZGRTUwMDAyMDAwQzkKKzoyMDk2MjAwMDA4MjAwODIwN0VGRTA4MzAxQzY4MkFBRUNCMjQwQzIwMDdGODA4MTAwQzIwMzI0MDAxODAwMzAwMEMwMDcwMDBGQQorOjIwOTY0MDAwMEZGMDAwMjAwMDQwMDA4MDdGRkUwMDgwMDA4MDAyODAwMTAwMUZGODEyNDgxMjQ4MTI0ODEyNDhGRkZFMDAwMEFGCis6MjA5NjYwMDAwMDQwNzg0MDQ4NEM0QTQ4Nzk1MDQ4NDQ0RkZFNDhFMDc4RTA0OTUwNDk1MDRBNDg3QzQ2NDg0NDQwNDAwMDQwRDgKKzoyMDk2ODAwMDAwMTBGQzEwNTI5NDUxNTRGQzU4RDRGRUQ3MzBERDMwQzU1ODg1NTRGRDk0ODUxMDg1MTBGRDgwODI3RTAwMDBCQgorOjIwOTZBMDAwMDA4MDNGRkUyNDIwM0Y3QzI0MzAyRTY4MzVBNjI0MjAyMTQwMkY3RTIxNDAyRjdDNDE0MDVGN0U4MTQwMDE0MDZCCis6MjA5NkMwMDAwMDgwM0ZGRTI0MTAyNDEwM0Y3QzJFMzgzNTU0MjQ5MjI0OTAyMkEwM0ZGRTIxQzA0MkEwNEM5OEIwODYwMDgwRjUKKzoyMDk2RTAwMDQwNDAyMDQ4MzQ0QzMzNDgwMjUwMEZGRUUwQzAyMEUwMjE1MDIyNDgyNDRDMjg0ODIwNDA1MDAwOEZGRTAwMDA5MAorOjIwOTcwMDAwNDAyMDI4MjQzNTI2MjZBNDA0QTgwMUZFRTA2MDJDNzAyNEE4MjRBNDI1MjYyNjI0MkMyMDM0MjAyQkZFMDAwMEZGCis6MjA5NzIwMDAwMDgwN0NDMDA0ODAwNUZFN0QwNDQxMjg0MjIwNDBCMDdDQTgwNTI0MDUyNjA2MjQwNDIwMDQyMDI4QTAxMDQwQTgKKzoyMDk3NDAwMDAxMDAyMTA4MTEwODA5MTAwOTIwRkZGRTA1ODAwNTQwMDk0MDA5MjAxMTIwMTExODIxMEU0MTA0ODEwMDAxMDBGQgorOjIwOTc2MDAwMEM4MDcwNDQxMDI2MTBBNEZFODQxMDg4MzA4ODNBOTQ1NjkyNTJBMjk0QTIxMEMwMTA4NDEzODQxQzdDMTAwMDZBCis6MjA5NzgwMDAwMDc4M0Y5MDEyMTgwOTkwMDkyMDFGRjAxMDEwMTExMDExMTAxMTEwMTExMDEyOTQwMjg0MDQ4NjA4RkMxMDAwMTkKKzoyMDk3QTAwMDIwODAxMDQwMTA0ODAxMDg4OTA4NDkxMDUxMTQxNTIyMTUyMjI1NDJFOTQwMjE4NDIxMDQyMzA0MkNGQzIwMDBEMgorOjIwOTdDMDAwMDEwMDNGRkUyMjI0NTU0ODE0OTQyN0Y2MDMwNDBDODAzMDgwMEZGODA4ODgwRkY4MDg5MDAwODgzRkZDMDAwODVGCis6MjA5N0UwMDAwMjAwMDEwMDNGRkU0MjI0NDk1MDI5NDg0OEE0MEIzNDFGRTBFMDAwNDEwMDExMDgxMTA4MTEwODFGRjgwMDAwMEMKKzoyMDk4MDAwMDNGRkUyMDA0NEZGMDA4MTAwRkYwMDgxMDBGRjAwNDAwN0ZGRTA5MDgzRkY2QzkxNDA5MTAwOTcwMDkyMDAxMDAxQQorOjIwOTgyMDAwMTAyMDEwNDAxMUZDRkQwNDExRkMzOTA0MzVGQzUwMjA1M0ZFOTIyMjEyMjIxMjIyMTIyMjEyMjYxMDIwMTAyMDc2Cis6MjA5ODQwMDAwMDAwN0JGQzRBMDQ0QTA0N0JGQzRBMjQ0QTIwNEJGRTdBMjA0QTIwNEEyMDRBMTI3QTUyNEE4QTAzMDYwMjAyRTYKKzoyMDk4NjAwMDEwMjAxMDQwMjFGQzIxMDQ0NUZDRkQwNDA5RkMxMDIwMjFGQzdEMjQwMTI0MEQyNEYxMjQ0MTJDMDAyMDAwMjBEOQorOjIwOTg4MDAwM0ZGODIwMDgyRkU4MjAwODJGRTgxMDAwMUZFMDMwNDA1RkYwMTIxMDFGRjAwMjgwMDQ4MjA4ODIxMDdFMjAwMEQ0Cis6MjA5OEEwMDAwNDAwMDQwMDBGRjAxMDIwMjA0MDVGRjgxMTA4MTEwODFGRjgxMjQ4MDI0MDA0NDAwNDQyMDg0MjEwM0UyMDAwOTMKKzoyMDk4QzAwMDEwMjAxMDIwM0YyMDIyRkM0NDI0N0YyNDQ5MjQ0OTI0N0Y0NDE0NDQxNDk0MTUwODI0MDI0NDAyODNGRTAwMDBGOQorOjIwOThFMDAwMTA4MDEwODAxMEY4RjkxMDJBMjAyQkZDMkE0NDJBNDQ0QkZDMkFBNDEwQTAyOEEwMkQyMjQ5MjI4MjFFMDQwMEZGCis6MjA5OTAwMDAyMDAwMzdGRTIwNDA0MDgwNEJGQ0YyOTQxMjk0MjJGNDQyOTRGQTk0MDJGNDAyOTQxQTk0RTNGQzAyMDQwMDAwQzYKKzoyMDk5MjAwMDAwMDA3RkZFMDIwMDA0MDAzRkZDMjQ0NDI0NDQyN0M0MjQ0NDI0NDQyN0M0MjQ0NDI0NDQzRkZDMjAwNDAwMDBDNAorOjIwOTk0MDAwMDgyMDA4MjAwODIwN0ZGRTA4MjAwODIwM0ZGODIxMDgyMTA4M0ZGODIxMDgyMTA4MjEwODNGRjgyMDA4MDAwMDI4Cis6MjA5OTYwMDAxMDg4MTA4ODEwODhGQkZFMTA4ODE0ODgxODAwMTNGRTMyMjJEMjIyMTNGRTEyMjIxMjIyMTNGRTUyMDIyMDAwODMKKzoyMDk5ODAwMDAwOTA3MDkwNTA5MDU3RkU1MDkwNzA5MDUzRkM1MjQ0NzI0NDUyNDQ1M0ZDNTI0NDcyNDQ1MjQ0MDNGQzAyMDRCQgorOjIwOTlBMDAwMDQ0MEZGRkUwNDQwMDgyMDMwNDBENUZDNTkwNDY5RkM5OTA0MjVGQ0NENTQxNDUwMjQ1MkM0OTIxNTBFMEEwMEJCCis6MjA5OUMwMDAwQzIwRjAyMDEwMjAxMTI4RkRBNDExMjIzMjIyM0EyMDU0MjI1NDIyOTAwNDEwMDgxMDEwMTA2MDExODAxNjAwOTEKKzoyMDk5RTAwMDQwMTAyMDEwMkYxMDA5NTQ4OTU0NUY1MjE5OTIyOTE2MkYxNDI5MDhDOTA4NEYxMDQwMjA0MEMwNDcwMDAwMDA4OAorOjIwOUEwMDAwMDEwMDAwODAzRkZFMjA4MDIwODAyMDgwMkZGODI4ODgyODg4MkZGODI4ODgyODg4NDg4ODRGRjg4ODA4MDAwMEYzCis6MjA5QTIwMDAyMDIwMjAyMDIwMjBGQzI4MjUyNDI1QTIyNTI0NDUyNjRBMjQyODI4MTgwODE0MTAyNjIwNDQ0MDgwODAwMTAwQjEKKzoyMDlBNDAwMDA4MjBGRkZFMDgyMDNGRjgyNDQ4MjQ0ODNGRjgwMDgwM0ZGQzIwODgyODhDMjY1MDI0NjA0MUE0NEUxNDgwMDg5MworOjIwOUE2MDAwMDAwODdGRkMwMTAwMDEwMDAxMDgxMTA4MTE5MDEyQTAyMjQwMDQ0MDA0MjAwODMwMTAxODIwMEU0MDA0MDAwMDUwCis6MjA5QTgwMDAwMDAwM0ZGMDIwMTAyMDEwM0ZGMDIxMDAyMTAwM0ZGQzIwODAyMDgwMjA0MDIwNDAyNDI0MjgxNDMwMEMyMDA0QTcKKzoyMDlBQTAwMDEwMDAxM0ZDMTIwNDEyMDRGRkZDMTIyMDE2MjAxQkZFMzIyMEQyMjAxMjEwMTIxMDEyMEExMjhBNTMwNjIyMDIyMgorOjIwOUFDMDAwMDAwMDNGRjgyNDQ4MjQ0ODI0NDgyNDQ4MjQ0ODI0NDgyNDQ4MjQ0ODI0NDgyNDQ4MjQ0OEZGRkUwMDAwMDAwMEFFCis6MjA5QUUwMDAyMDQwMjA2MDdGNDA0MDQwN0VGRUIyQzgyQjQ4MjI0OEZGNDgzMjI4MkEzMDIyMTAzRkE4MDIyODBBNDYwNDg0NUUKKzoyMDlCMDAwMDI0MDAyMjdFMjAwMjM0NDJBQzIyQTVGQUE0MTIyNDkyMjQ2MjI0MjIyNDUyMjQ5MjI1MDIyNDBBMjQwNDAwMDA5QgorOjIwOUIyMDAwMTAwMDA5RkM0ODA0NDEwNDQxMDQ0RkU0NDkyNDQ5MjQ0RkU0NDEwNDQxMjQ1RkY0NDAxNDQwMDQ0MDE0NDAwOEM5Cis6MjA5QjQwMDAwMEZDN0M4NDQ0ODQ0NDg0NDRGQzdDODQ0NDg0NDQ4NDQ0RkM3Qzg0MDA4NDAxMDQwMTA0MDIwNDA0MTQwMDA4QjUKKzoyMDlCNjAwMDIwMDAyM0ZFMjIwNEZERjhBOTA4QTlGOEE5MDhBOUY4Rjg0MEEwMjAzM0ZFMjg5MDNDODhDOTBDMDIwNjA0MDQ1QgorOjIwOUI4MDAwMDA0MDAwODA3QkY4NEEwODRBODg0QTQ4NEE0ODRBMTg0QTAwN0JGQzAwMDQxRkY0MDAwNDAwMDQwMDE0MDAwOEVDCis6MjA5QkEwMDAxMDQwMTA0MDIwN0MzQzg0NDA4ODdEODg5MjUwMTAyMEZDNDAxMUZDMTY4NDEwODQxMDg0MTQ4NDE4RkMxMDg0N0YKKzoyMDlCQzAwMDA0MDAwNDAwMDdGODA4MTAxMDIwMjQ0MDQyODAwMTAwMDYwMDFGRjhFODA4MDgwODA4MDgwRkY4MDgwODAwMDBDQgorOjIwOUJFMDAwMDEwMDAyODAwNDQwMDgyMDEwMTgyRkVFQzAwNDNFRjgyMjg4MjI4ODIyODgzRTg4MjJCODIwOTAwMDgwMDA4MEU5Cis6MjA5QzAwMDA0RkZDMjg4NDM0QTQyMkFDMDI5NDA0QTRFODQwMjBBMDIzMTgyQ0M2MjMzMDI4Q0MzNzE4MjA2MDAxODAwRTAwQUYKKzoyMDlDMjAwMDExMTAxMTEwMTdGRUY5MTAxM0Y4MTIwODFCRjgzMjA4RDNGODEwNDAxN0ZFMTA0MDEwQTAxMDk4NTEwRTI2MDRGMQorOjIwOUM0MDAwMDQyMDdGRkUwNDIwMUZGMDExMTAxRkYwMDQwMEZGRkUwODIwMTdEODIxMDZDRkUwMDEwMDFGRjgwMTAwMDcwMEYyCis6MjA5QzYwMDAwNDQwMDQ0MEZGRkUwNTQwM0ZGQzI0MjAzRkZDMkU3MDM1QUMyNEE0M0ZGRTIyMDAyN0Y4NEMwODU3RjhBNDA4NEMKKzoyMDlDODAwMDIwOTAyMDkwMjdGQzIwOTBGQkY4MjIwODczRjg2QTA4QTNGOEEwNDAyN0ZFMjA0MDIwQTAyMDk4MjEwRTI2MDRDNgorOjIwOUNBMDAwMDExMDc5MTA0RkZDNDkxMDdCRjg0QTA4NEJGODRBMDg3QkY4NDg0MDRGRkU0ODQwNDhBMDQ5MThBQTBFOTQwNEEzCis6MjA5Q0MwMDAwMDgwM0ZGRTI0MTAyNDEwM0Y3RTJFMzgzNTU0MjU5MjI0MTAzRkZFMjIwMDI3Rjg0QzA4NTQwODY3Rjg4NDA4QUYKKzoyMDlDRTAwMDAxMDAzRkZFMjQyMDNGRkMyNjMwMkQ2ODM0QTYyNTIwMkZGODIwODAyRkZDMjA4MDVGRkU0MDgwODI4MDAxMDBFQgorOjIwOUQwMDAwMDA4MDNGRkUyNDEwMkY3QzI2MzgyRDU2MzQ5NDIxMDAyRkY4Mjg4ODJGRjgyODg4NEZGQTQxNTI4NjY2MTgzRTExCis6MjA5RDIwMDAyMDQwMjA0MDIwNDBGQkZFMjA0MDIwNDAyQkZDMzA0MDYwQzBBMTYwMjE1MDIyNDgyNDRFMzg0NEEwNDA0MDQwNjkKKzoyMDlENDAwMDAxMDAwMTAwMDEwMDdGRkUwMTAwMDEwMDNGRjgwMTAwMDM4MDAzNDAwNTIwMDkxODMxMEVDMTA0MDEwMDAxMDAzNworOjIwOUQ2MDAwMDQyMDA0MjA3RkZFMDQyMDFGRjAxMDEwMUZGMDEwMTAxRkYwMDEwMEZGRkUwMjgwMDQ0MDA4MjAxMDFDNjAwODBECis6MjA5RDgwMDAzRkY4MjkyODI1NDgzRkY4MDEwMDNGRkMwMTAwRkZGRTI4ODgyNjY2NDQ0NDAxMDAxRkY4MDEwMEZGRkUwMDAwODMKKzoyMDlEQTAwMDAwMjA3RjIwNDkyODZCMjQ1RDI0N0ZGRTA4MjA3RjIwMDgyMDBGMjBGMDUwMDA1MEFBODg5NTBFOTYwNDAwMDBDOQorOjIwOURDMDAwMjA0MDEwNDAxMDQwODdGRTUwNDA1MDQwMTdGQzIwNDAyMEMwMjE2MEUxNTAyMjQ4MjQ0RTIwNDQyMDQwMjA0MEQ5Cis6MjA5REUwMDAyMTIwMTEyMDE3RkU4MTIwNDNGODUyMDgxM0Y4MTIwODIzRjgyMDQwRTdGRTIwNDAyMEEwMjA5MDIxMEUyNjA0RjgKKzoyMDlFMDAwMDAyMDAwMTAwN0ZGRTQ0NDRCRkY4MDQ0MDFGRjAxMDEwMUZGMDEwMTAxRkYwMDEwMDdGRjgwNjgwMTg2MDYwMUNFMAorOjIwOUUyMDAwMDAwMDdCRkU0ODQwNTA0MDYwODA1MUZDNDkwNDQ5MDQ0OTA0NjlGQzUxMDQ0MTA0NDEwNDQxMDQ0MUZDNDEwNDcyCis6MjA5RTQwMDA0MTEwMjExMDM3RkUyMTEwMDFGMEUxMTAyMUYwMjExMDIwNDAyN0ZFMjBFMDI5NTAzMjQ4MjQ0NjA4NDQwMDQwODgKKzoyMDlFNjAwMDAyMDAwNDIwMDgxMDFGRjgwMDA4MTEwMDExMDAzRkY4NDEwMDAxMDBGRkZFMDEwMDAxMDAwMTAwMDEwMDAxMDBFOAorOjIwOUU4MDAwMDgyMDA4MjA3RkZFMDgyMDBGRTAwODIwMDgyMDBGRTAwMTAwRkZGRTAzODAwNTQwMTkzMDYxMEUwMTA0MDEwMDFCCis6MjA5RUEwMDAxMDAwMTFGODExMDhGRDQ4MTEyODExMDgxRkZFMzIwOEQyNDgxMjI4MTIwODEzRkUxMDA4NTAwODIwMjgwMDEwM0IKKzoyMDlFQzAwMDA4MjAwODIwMjgyMDI4MjAzRTIwNEJGRTQ4MjA4RTIwMzgyMEU4MjA0ODIwMDgyMDA4MjAwQkZFMDgwMDA4MDBCNAorOjIwOUVFMDAwMDIwMDAxMDBGRkZFMDAwMDAwMDAzRkY4MjEwODIxMDgyMTA4M0ZGODIxMDgyMTA4MjEwODNGRjgyMDA4MDAwMDlGCis6MjA5RjAwMDAyMDAwMzAwMDIxRjhGRDg4MjU0ODI1MjgyQkZFNDkwODQ5NDgzMjI4MTIyODJCRkU0QzA4ODgwODAwMjgwMDEwQjUKKzoyMDlGMjAwMDAwMDAxRkYwMTAxMDEyMTAxMTEwMTExMEZGRkUxMDEwMTIxMDExMTAxMTEwMUZGQzAwMTAwMDEwMDA1MDAwMjA2MgorOjIwOUY0MDAwMDQ0MDdGRkUwNDQwMUZGMDEwMTAxRkYwMTAxMDFGRjAwMjAwN0ZGRTBEMjAzMTE4Q0ZFRTAxMDQwMTAwN0ZGQzVDCis6MjA5RjYwMDAwNDQwN0ZGQzA0NDAxRkYwMTAxMDFGRjAxMDEwMUZGMDA0MDBGRkZFMDgxMDNGRThDODI2MEZFMDA4MjAwRkUwM0QKKzoyMDlGODAwMDA0NDBGRkZFMDQ0MDFGRjAxMDEwMUZGMDEwMTAxRkYwMDIwMEZGRkUwOTEwMUZFODI5MjZDOTI0MDk2MDAxMDAwQQorOjIwOUZBMDAwMDQ0MEZGRkUwNDQwMUZGMDEyMTAxMTEwMUZGMDA0MDBGRkZFMDkyMDExMTgyRkVFQzIyNDA0MjAwOEEwMTA0MDQ5Cis6MjA5RkMwMDAwNDQwN0ZGRTA0NDAxRkYwMTIxMDExMTAxRkYwMDIwMEZGRkUwNDIwMDkxMDMxMEVDOUE0MDk1MDEzNTAwMTAwNzYKKzoyMDlGRTAwMDAxMDAwMTAwMDEwMDdGRkUwMTAwMDM4MDAzNDAwNTQwMDUyMDA5MTAxMTE4NjEwRTAxMDQwMTAwMDEwMDAwMDBGOAorOjIwQTAwMDAwMDAwMDFGRjgxMDA4MTAwODEwMDgxRkY4MTAwODEwMDgxMDA4MUZGODEwMDgxMDA4MTAwODFGRjgxMDA4MDAwMEY0Cis6MjBBMDIwMDAwMDQwRjA0MDkzRkM5MDQwOTA0MEY3RkU5MDkwOTMwODlDNDRGMDQwOTNGQzkwNDA5MDQwRjA0MDk3RkUwMDAwQ0QKKzoyMEEwNDAwMDEwODAxMDgwNTA4MDUxMDQ3REZFNTIxMDk1MTAxNTEwMTg5MEYwQTA1MDYwMTA2MDEwOTAxMzE4MUMwRTEwMDRCMworOjIwQTA2MDAwMEMyMDcxRkMxMTA0MTFGQ0ZEMDQzMUZDMzhBNDU1MjI1NjFBNThFMDk3MEMxMDcwMTc4NjEwMTgxMEUwMTcwMDBECis6MjBBMDgwMDAwMTAwMDJDMDBDMzA3N0VFMDAwNDBGRjAwODEwMEZGMDAwMDAwRkY4MDA4MDNGRjgwMDgwN0ZGRTAwODAwMTgwODYKKzoyMEEwQTAwMDA3REVGMjUyOTI1NDkyNTQ5N0Q0OTI1ODkyNTQ5RkQ0OTI1MkYyNTI5NDUyMDQ1QTA4NTQxMTUwMjA5MDAwMDAyNAorOjIwQTBDMDAwMDA0MDAwNDBGODQwOEJGQzhBNDQ4QTQ0OEE0NDhBNjRGQTk0OEE5NDgzMDQwMjA0MDIwNDAyMTQwMjA4MDAwMDhBCis6MjBBMEUwMDAyMDIwMjAyMDNFMjAyMUZFNDEyMjdEMjJBMTIyMjE1MkZENEEyMThBMjEwMjIxMDIyMTAyMjkwMjMxMEEyMTA0NDUKKzoyMEExMDAwMDAwMDA3RTdFMTI0NDEyNDg3RTQ4MTI1MDEyNDg3RTQ0MTI0MjEyNDIyMjUyMjI0QzQyNDA4QTQwMDQ0MDAwNDBGNQorOjIwQTEyMDAwMjAwMDI3REUyMTUyMjE1NEZGRDQ0OTU4NDk1ODQ5NTQ0RkQyMzE1MjEyNTIyQTVFMjQ1NDQ0NTA4OTUwMTA5MDRCCis6MjBBMTQwMDAxMDIwMTAyMDIwMjAyN0ZFNDYyMkZBMjIwQTIyMTI1MjIyNEE3RThFMDMwQTBFMDJGMjAyNDIwMjAyMEEwMjA0NDcKKzoyMEExNjAwMDEwMDAxRkZDMjAwMDJGRjg0MDAwQkZGMDAwMTAzRjkwMDg5MDA5MTAwOUQwMTA0ODEwNEEyMDQ2NDE0NjAwODJGNAorOjIwQTE4MDAwMDAxMDNGRjgwNDEwMDQxMDA0MjAwNDI0MDQ3RTA0MDQwNDA0MDgwNDA4MDQxMDA0MTA0NDIwMjhDMDEwMDAwMERBCis6MjBBMUEwMDAxMDAwMTFGODEwODhGQzkwMjQ5MDI0QTAyNEJDNDQ4NDQ4ODQyODg0MTA4NDE5MDQyNTA0NDIxNDg0MDgwODAwMDYKKzoyMEExQzAwMDAwMDhGRjA4MDgwODA4MDg3RkZFNTUwODU1MDg1NTQ4NTUyODU1Mjg1NTI4NTUwODUxMDg1NzI4NDIxMDAwMDA3RQorOjIwQTFFMDAwMDEwMDAxMDBGRkZFMDI4MDA0NDAwODMwMUZFRTYwMDQ4MDAwM0ZGQzAxMDAwOTIwMTkxODYxMEM4NTA4MDIwMERGCis6MjBBMjAwMDAwMTAwMDEwNEZGRkUwMTAwMDIwMDNGRkMyNDI0MjI0NDJGRjQyMTA0M0ZGQzIxMDQyMTA0MjExNDIxMDgwMDAwMjQKKzoyMEEyMjAwMDBGRjgwODg4MDg4ODBGRjgwODg4MDg4ODBGRjgwMTAwMDEwMDNGRkMwMjA0MDIwNDA0MDQwODA0MzAyOEMwMTA0NAorOjIwQTI0MDAwMDBBMDAwOTBGOTEwMDlGRThCMjA0QjIwMkRGQzExMjAxOTIwMjlGQzI1MjA0NTIwODEyMDAxRkUwMTAwMDEwMEE0Cis6MjBBMjYwMDAwMTAwN0ZGRTAxMDAzRkZDMjEwNDdGRkU5Mjk0MUVGMDA0MjAzRkZDMDQyMDdGRkUwQzg0MzQ2OEM2MzAwNDBFMUEKKzoyMEEyODAwMDEwODAxMDgwMTdGQzEwODBGQzU4MTA2MjE1QjIxODBFMzdGQ0QxMjAxMTIwMTEyMDEyMjIxMjIyNTQxRTIwMDBDOAorOjIwQTJBMDAwMDA4MDc4NDA0ODIwNEJGRTc4MDA0ODEwNEE5NDRBNjQ3QTY0NEE2NDRBOTQ0QTk0NEIwNEFCRkM5MjA0MDAwMDg1Cis6MjBBMkMwMDAyMDgwMjA0MDIwNDAzN0ZFQTgwMEE4MTBBMzE0MjJBNDIyNjQyMjY0MjI5NDIzMTQyMjA0MjIwNDIzRkMyMDAwODgKKzoyMEEyRTAwMDIwMDAxN0ZDMDIwNDIxMDQzRkY0MjEwNDIxMDQyRkU0MjkyNDI5MjQyOTI0Mjk2NDI5MjQyMTA0MjExNDIwMDgyRAorOjIwQTMwMDAwMTA0MDA4NDAwODdFODA0MDQzRkM0QTA0MEJGQzEyMDQxM0ZDMjA0MEUwNDAyN0ZFMjA0MDIwNDAyMDQwMjA0MDgxCis6MjBBMzIwMDAwMDAwRkJGQzhBMDQ4QTA0OEJGQzhBMDQ4QTgwOEE4OEZBOUM4QUUwODI4MDAyODAwNDgyMDQ4MjA4N0UxMDAwQjMKKzoyMEEzNDAwMDIwMDAyM0ZDMjA0MDNFMjQ0NTI4NDg5MDkwNDAxMDQwMTdGRTEwODgxMTkwMTQ2MDE4NTAxMThDMDYwNDAwMDBDNgorOjIwQTM2MDAwMDEwMDAxMDAwMTAwM0ZGQzIxMDQyMTA0MjE4NDIyNDQyMjI0MjQxNDI4MTQzMDA0MjAwNDIwMDQyMDE0MjAwOEI4Cis6MjBBMzgwMDAyMTEwMzExODIxMTAyN0QwRjExRTU3RTQ1NTY0NTU1NDU3RDQ1MzE0MjM5NDU1NDg1NTA4ODkxNDExMjIwMTQwMUIKKzoyMEEzQTAwMDIwNDAzMDQwMjQ0QzQyNzBGRjQ0NDI0NjAwN0M3RTAwNDI0MDdFNEM0MjcwN0U0MDQyNDQ0MjQ2NEEzQzQ0MDA1MgorOjIwQTNDMDAwMjAwMDIwMDAyMUZFRkQwMjI1MDIyNUZFMjUwMDQ1NDA0OTQ4Mjk1QzExNjAxMTQwMkE0MjQyNDI4NDNFMDgwMDk5Cis6MjBBM0UwMDAxRkY4MDEwMDdGRkU0OTE0NjU0ODExMjAwNDAwMzhGODIwMDgzQ0Y4MjAwODNGRjgwNDQwMDQ0MjE4NDJFMDNFOUMKKzoyMEE0MDAwMDEwNjAxQjlDMTIwNDEyMDQyM0JDMjIwNDYyMDRBM0ZDMjJBNDIwQTAyMTIwMjEyMjIyMjIyNDIyMjgxRTAwMDAwNQorOjIwQTQyMDAwMjAwMDEzRkMxMjA0MDIwNDhCRkM0QTAwNTI4MDEyODAxMjg0MjQ5OEU0RTAyNDgyMjg4MjI4ODIzMDdFMjAwMEJFCis6MjBBNDQwMDAwMDAwM0ZGODIwMDgyMDA4M0ZGODIwMDgyNDAwMjQyMDI0RjAyNzgwMjQwMDI0MDA0NDA0NDQwNDgzRkMwMDAwOUMKKzoyMEE0NjAwMDEwMDAxMDg0MTI2NDEyMjRGRTA0MTIwNDFBMDQzMjA0RDIwNDEyNDQxMjg4MTMwODEyMzQ1MEMyMjMwMjAwMDBDMgorOjIwQTQ4MDAwMDkwMDA5ODAxMTA0MTNGRTIyMDQzNDQ4Njg0MEEyNTAyMzQ4MjI0ODI0NDQyNDQ2Mjg0NDIxNDAyMDgwMDAwMEI0Cis6MjBBNEEwMDA3RkZDNDAwMDQ0MjA1RkY4NDQyMDQxMDA1RkZDNDIwMDQ3RjA0QzEwNTQxMDY3RjA0NDEwNDAwNDdGRkUwMDAwODEKKzoyMEE0QzAwMDAwMTA3ODE0NDgxNDRGRkU3ODEwNEJEMDQ4MTA0QkU4N0EyODRBQTg0QUE4NEFBODQ4OEE0OTRBNkEyNDk0MjBFQQorOjIwQTRFMDAwMDIxMDQxMTAyMTIwMjdGQzAwNDAwMDQwRTI0ODIyNDgyM0Y4MjA4MDIwODAyMTAwMjIwMDUwMDA4RkZFMDAwMDA2Cis6MjBBNTAwMDAyMDAwMTdCQzEwODQ4MDg0NDdCQzU0MjAxNDIwMTdCQzIwODQyNEE0MjI5NEMyOTQ0Q0U0NDA4NDQyOTQ0MTA4QTcKKzoyMEE1MjAwMDA0NDBGRkZFMDQ0MDdGRkMwMTAwMDlGMDA5MDBGRkZFMTAwMDFGRjgxMDAwMUZGQzI5MjQyNDk0NDQ5NDAwMDhFNAorOjIwQTU0MDAwMTAyMDEwMjAxMDIwMTAyMEZFM0UxMDIwMTQyMDE4MjAzMUZDRDEwNDExMDQxMTA0MTEwNDExMDQ1MUZDMjAwMEEwCis6MjBBNTYwMDAwODAwMEZGQzEwODAxMDgwMjA4MDRGRjg4ODgwMDg4MDA4ODAwODgwRkZGRTAwODAwMDgwMDA4MDAwODAwMDgwQTQKKzoyMEE1ODAwMDAwMDBGQkZDMjIwNDIzRkMyMjUwNDI1MDdCRkM2QTUwQUJGRTJBQTQyQUE4M0E5MDI0OTAwNEE4MDhDRTEwODQ2RAorOjIwQTVBMDAwMjIwODIyMDgyN0JDRjIwODI3QkUyMzA4MzQ5NDYwQTBBRkZFMjE0MDIzRkMyMDQwMkZGRTIwNDBBMDQwNDA0MDE4Cis6MjBBNUMwMDAxMDgwMTA4MDEwQzBGRDIwMTExMDEyNEUxQzQ0MzNGOEQwMTAxMEEwMTA2MDE1MjQxNTBBMUQwQTUwRjgyMDAwN0IKKzoyMEE1RTAwMDAxMDAwMTAwMDI4MDA0NDAwOTMwMTA4RTZGRTQwMDIwMDA0MDAyODAwMTAwMjg4ODI4OTYyODEyNEZGMDAwMDA5RgorOjIwQTYwMDAwMjA4MDMwNDAyM0Y4MjIwOEZCRjgyQTA4MkEwODJCRjg0QTg0NEE0RTMyNTgyQTIwNEExMDQyODg4MzA2MDIwMDgyCis6MjBBNjIwMDAwMDQwRkUyMDI4RjgyODg4RkU4OEFBRjhBQTg4QUFGOENFODA4MkE0RkU5ODgyOTA4MkE4RkVDRTgyODQwMDAwRDgKKzoyMEE2NDAwMDAyMDAwNDAwMUZGMDEwMTAxMjEwMTE1MDExMjAxMDAwMUZGQzAwMDQwMDA0RkZGNDAwMDQwMDA0MDAyODAwMTBBQgorOjIwQTY2MDAwMDAwMDNGRjgyMDA4MjAwODNGRjgyMDgwMjA4ODIwOUMzRUEwMjRDMDI0QTA2ODkwNDg4ODUwOEVBMjg0ODEwMDQ1Cis6MjBBNjgwMDAxMDAwMTFGQzExMDQxMTA0RkRGQzExMDQxOTA0MTFGQzMwMjBEMDIwMTNGQzEwMjAxMDIwMTAyMDU3RkUyMDAwRTcKKzoyMEE2QTAwMDdGRkMwODIwMEZFMDA4MjAwRkUwMDgyMDdGRkMwMDIwN0ZGQzQ0ODgyNDkwMTg2MDI0NjAyNjkwNDUwRTgyMDRBOAorOjIwQTZDMDAwMDQyMEZGRkUyNDIwN0RGQzQ0NDg3REZFNDAyMDdDRkM0NDIwN0ZFMDAwNDAwMDgwN0ZGRTAwODAwMjgwMDEwMEJBCis6MjBBNkUwMDAwMDQwMDA0MDAwNDBGMjdDOTI0MDkyNDA5N0ZFOTA0MDk0NjRGNDQ0OTQ0NDg0QTQwNTE0MDYwQzBGRkMwNDA0QjUKKzoyMEE3MDAwMDIzRkMyMTA4M0RGODQxMDg0MUY4RjkwRTIzRjgyMDA4RkJGQzIyNjQyMUE4MjA5MDI5NTgzMjI2MkNDNDAwMDAzMQorOjIwQTcyMDAwMjAyMDIxRkMzRDA0MjFGQzQxMDQ3REZDOTEwNDExRkNGQzIwMTNGRTEwNjAxMEIwMTRBODE5MjYxMjIwMDAyMDU0Cis6MjBBNzQwMDAyMDAwMTNGQzEyMDQwMjA0ODNGQzRBMDQ0QTA0MTNGQzEwNDAyMDQwRTNGQzIwNDAyMDQwMjA0MDJGRkUyMDAwODgKKzoyMEE3NjAwMDA4MDAwOTAwMTFGRTEyMDQzNDQwMzI1MDUyNDg5NDQ0MTE0NDEwODAwMDAwMjkwNDI4OTI2ODEyMDdGMDAwMDBGRQorOjIwQTc4MDAwMTA0MDEwMjAxM0ZFMTIwNEZDMDAxMDAwMzlGQzM0MjA1NDIwNTAyMDkwMjAxMDIwMTAyMDEwMjAxMEEwMTA0MDU5Cis6MjBBN0EwMDAwMDQwNDQyMDJCRkUxMjAyMzQwNDQ4MDA4ODAwMUJGRTI4MjA0ODIwODgyMDA4MjAwODIwMDgyMDUwQTAyMDQwNzcKKzoyMEE3QzAwMDA4MDA4OTdFNEUwQzY4MzA0OTEwMjdGRTI4MTI0RjE0NTQxMERGREM0NDUwNEM1MDRBNTA1MzcwNjI5RTQxMDA3MAorOjIwQTdFMDAwMDIwMDAxMDQzRkZFMjAwNDQwMDgwMDAwMDAwMDdGRkMwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwNTAwMDIwMDIxCis6MjBBODAwMDAxMDQwMTAyMDEzRkUxMjA0RkUwODEwMDAxNDAwMUJGRTMwMjBEMDIwMTAyMDEwMjAxMDIwMTAyMDUwQTAyMDQwRkUKKzoyMEE4MjAwMDQwODAyMDQwMjdGRTA0MDQ4ODAwNDgwMDU3RkUxMDQwMTA0MDIwNDBFMDQwMjA0MDIwNDAyMDQwMjE0MDIwODA2NQorOjIwQTg0MDAwMDA4MDEwODAxMDgwMUZGQzIwODAyMDgwNDA4MDAwODA3RkZFMDA4MDAwODAwMDgwMDA4MDAwODAwMDgwMDAwMDQwCis6MjBBODYwMDAxMDAwMTNGODEwODgxMDg4RkM4ODEwODgxNDg4MUJGODMxMDhEMTA4MTEwODExMDgxMTA4MTEwODVGRkUyMDAwQ0YKKzoyMEE4ODAwMDEwMDAxMUY4MjA0ODNFNDg0MDQ4N0M0ODkwNDgxMUY4RkM4ODEwODgxMDg4MTA4ODE0ODgxODg4MTNGQzAwMDBFRAorOjIwQThBMDAwMDAwMDExRjgxMDQ4MTA0ODI0NDg3QzQ4MDg0ODExRjgyMDg4N0M4ODAwODgwMDg4MUM4OEUzRkUwMDAwMDAwMDE1Cis6MjBBOEMwMDAwMDQwNzg0MDQ4NDA0QkZFNEE0NDdDNDg0OEE0NDkyNjc5Mjg0QjEwNEQxMDQ5MDg0OTA4NDk0NkFCODQxMTAwMzgKKzoyMEE4RTAwMDQwNDAyMDQwMjA4MDA3RkU4NDg0NTUwODUxODAxMzQ0MjM1ODI1MjBFNTIwMjkxMDMxMTAyMTQ4MjE4NjIxMDREMgorOjIwQTkwMDAwMDIwMDAzMDAwMjA0M0ZGRTIyMDQ0NTA4MDUxMDBDQjgxOEEwMjg0MDQ4MjA4ODMwMDkxODBBMEUxQzA4MDgwMEZFCis6MjBBOTIwMDAwMDAwM0ZGQzAxMDAxRkY4MDEwMDAxMDA3RkZDMDgyMDA4MjAwODIwRkZGRTA4MjAxMDIwMTAyMDIwMjA0MDIwQUEKKzoyMEE5NDAwMDEwMDAxMDAwMTFGQ0ZFODQxMjg0MTI4NDIyODgyMjQ4NDQ1MDI0NTAxNDIwMDgyMDE2NTAyNDhDQzEwNjA2MDRCRAorOjIwQTk2MDAwMTAwMDEwRkM3RTQ0MjI0NDIyMjgxNDEwMEMyODMyNDZDMTAwM0ZGODAxMDgwMjA4MDIwODA0MDgwODI4MTAxMDA4Cis6MjBBOTgwMDAwODAwMDgwMDA5RkM3RTg4MTI0ODIyNTAxNDIwMEM1MDMyOEVDMDA0MDEwMDA4ODQyODkyMjgxMjQ3RjAwMDAwMDQKKzoyMEE5QTAwMDAyMDAwMjAwMDIwMDA0MDAwNDAwRkZGRTA4MjAwODIwMTA0MDBDNDAwMzgwMDFDMDAyMzAwQzE4MzAwQ0MwMDgwMgorOjIwQTlDMDAwMDAxQzAzRTA3QTQ0NDkyODQ4MDA0QkZDNzg4MDRGRkU0ODgwNDlGQzc5ODg0QTUwMDIzMDA0Q0UwQjA0MDAwMEJBCis6MjBBOUUwMDAwMTAwMDFGODAxMDAzRkZFMjEwNDIxRTAyRjEwMjFGMDIwMDAyN0ZDMjQwMDNGRkUyNDAwNDQwMDQ3RkM4MDAwREEKKzoyMEFBMDAwMDAwODAwMDQwMUZGRTEwMDA5MDAwNTNGQzUyMDAxMjAwMzIwMDVGRkVBMjAwMjIwMDIyMDA0M0ZDNDIwMDgwMDA5MAorOjIwQUEyMDAwMjAwMDI3REUyMjUyRkE1NDIyNTQyRkQ4MzI1ODIyNTQ2N0QyQTI1MjIyNTIyNDVBMjQ1NDI5NTBCMDkwNDAxMDEyCis6MjBBQTQwMDAyN0ZDMjA0MDI3RkUzNDQ0QUY1Q0EwNDBBMzVDMjA0MDI3RkUyMDgwMjdGQzI0QTQyNEE0MjRBNDI0QTQyNDBDNTQKKzoyMEFBNjAwMDIwMDAyM0ZFQTgyMEFCRkU2QTIyRkRBQzYwMjA3MUFDNjgwMEEzRkVBMDQwQTNGQzIyOTQyMjk0MjI5NDIyMDg3RQorOjIwQUE4MDAwODEwODYxMDg0N0ZFMDEwODAxMDhFMDQwMjdGRTIwODAyMDgwMjFGQzIxMDQyQjA0MzUwNDIxRkMwMTA0MDAwMDFDCis6MjBBQUEwMDAwMDIwMDdCMEYxMkM5MTI4OUZGRTkxMjA5MTI4OTFBQzkzMjhGNTEwODExMDAxMzIwMTRBMDUwNjAyMDIwMDAwQzcKKzoyMEFBQzAwMDAwNDA3RjQwNDA0MDYyN0U1Mjg0NTUyODRDMjA0ODIwNEMyMDUyMjA1MjYwNjA1MDdFODgwMzBFMEMwNDAwMDA4OQorOjIwQUFFMDAwMDAyMDdFNDA0MEY4NDRDODY0QTg1NEE4NDg5ODQ4ODA1NEZDNTQwNDYyMDQ0M0Y0NDAwNDdFMDQwMDE0MDAwODVECis6MjBBQjAwMDAwMDAwN0VGODQwODg2NDg4NTQ4ODU1MEU0ODAwNDlGQzU0ODg1NDkwNjQ1MDQwMjA0MDUwN0Q4RTA2MDQwMDAwQzYKKzoyMEFCMjAwMDA0MjA3RkZFMDQyMDEwRkNGRUE0MTBGQzdDQTQxMEZDRkUyMDMxRkUzOTIyNTUyQTUxM0U5MUVBMTEwQTExMDQwOQorOjIwQUI0MDAwMDAwMDAzRkVGQTA4OEEwQzhBODg4QTUwOEE1MDhBMjA4QTMwRkE0ODhBNDQwMjg2MDMwNDAyMDAwM0ZFMDAwMDkwCis6MjBBQjYwMDAwMDAwMTNGODFBNDgxMjQ4MzNGODIyNDg2MjQ4QTNGODIwNDAyN0ZDMjQ0NDI0NTQyNEZDMjc4NDI0MTQyNDA4QTIKKzoyMEFCODAwMDIwMDAxN0ZFMTQwODA0MDg4NTEwNTQ5MDU0NjAxNDIwMjQ1MDI0NTBFNDg4MjUwQzI2MDgyNDAwMjdGRTI0MDBENworOjIwQUJBMDAwMDIxMDAyMTg3QTEwNEZBMDRBN0M0QTQ0NEFDNDRCNDQ0RTdDN0E0NDRBNDQ0MjQ0MDI0NDBBN0MwNDQ0MDAwMDRGCis6MjBBQkMwMDAwMDEwN0MxMDQ0OTA0NDkwNDQ5MDdDOTAxMDkwMTA5MDVDOTA1MTA4NTEwODU1MDg1QTA0NjQwNjg4MDQwMDAwQzIKKzoyMEFCRTAwMDA2MDA3Q0ZFNTQ5MjU0OTI1NDkyNTRGRTU0ODA1MjgyNTI4MjUyODI1MTdFNTA4MDUwNDA5MDMwMTAwRTAwMDQ3MAorOjIwQUMwMDAwMTAyMDEwMzAxMDQwN0RGQzU1MDQ1NTA0NTUwNDU1MDQ1NUZDNTUwNDU1MDQ1RDA0MTEwNDExRkMxMTA0MTAwMEVDCis6MjBBQzIwMDAyMDQwMjA0MDIwODAyM0ZDQjIwNEFBMDRBQTA0MjIwNDIzRkMyMjA0MjIwNDIyMDQyMjA0MjIwNDIzRkMyMDAwNDEKKzoyMEFDNDAwMDAwMDA3RUZDMDgyMDdFRkMwODIwMDgyMEZFRkUwMDAwM0ZGODIxMDgyMTA4M0ZGODIwMDIyMDAyMUZGRTAwMDA2QgorOjIwQUM2MDAwMTAyMDEwMzAxMDQwRkRGQzExMDQxMTA0MTUwNDE5MDQzMUZDRDEwNDExMDQxMTA0MTEwNDExRkM1MTA0MjAwMEY4Cis6MjBBQzgwMDAxMDAwMTEyMDExMjAxMTIwRkIzRTExMjAxNTIwMTkyMDE3M0MzMTIwRDEyMDFGM0UxMTIwMTEyMDUxMjAyMTIwMzMKKzoyMEFDQTAwMDA4NDA0OUZDNDkyNDQ5MjQ3REZDNDEyNDQxNDQ3OUZDNDhBNDQ5MjA0RkZFNDgyMDQ4MjA0ODIwODgyMDAwMjBCMworOjIwQUNDMDAwMTEyMDE5MjAyMTIwNTczQzk5MjAzMTIwNjczQ0ExMjAyMTIwMjEyMDJGM0UyMTIwMjEyMDIxMjAyMTIwMjEyMDk0Cis6MjBBQ0UwMDA0MDgwMjczRTIxMDgwMTNFODdDODUxMDg1MTNFMTEwODJGQzgyMTdFRTEwODIyMDgyMjA4MjQwODI4MDgyMDA4MjAKKzoyMEFEMDAwMDQwMDAyMDNDMjNDMDBBMUM4QUUwNTJBMDUyQTIxMkE0MjJBODIyOTBDMjkwNDQ5MDQ0ODg0OEE4NTBDNjQwODQ1MAorOjIwQUQyMDAwMTI5MDExMTA3RUZFM0FCODU1NTY5MjkwRkZGRTA0MjAwODEwMzdFRUMxMDQwRkYwMDEwMDFGRjgwMTAwMDMwMEQ3Cis6MjBBRDQwMDA0MDM4MjdDMDIyNDgwMTUwODdGQzUwRTAxMTU4MjY0NjIzRkMyMjQ0QzI0NDQzRkM0MjQ0NDI0NDQzRkM0MjA0RjYKKzoyMEFENjAwMDAyMDAwNDAwMUZGMDEyMTAxMTEwRkZGRTEyMTAyMTEwMjE1MDQwMjA5RkY4MTI0ODEyNDgxMjQ4RkZGRTAwMDBCOAorOjIwQUQ4MDAwMDgwMDNFNzgyMjQ4MkE4RTdGMDAzMkZDMkE0ODRBMzA4NUM2M0ZGQzA0MDAwRkYwMzgxMEM4MTAwRkYwMDgxMDdBCis6MjBBREEwMDAwMDIwNzkyMDQ5MjA0OTEwN0ExMDRBMDg0QzBFNEJGNDc4OTA0ODkwNDg5MDQ5MTA3OTEwNEExMDQ0NTAwODIwRjMKKzoyMEFEQzAwMDAwMjA3RTI0NTUyNjU0QTQ1NEE4NTdGRTdDMjA1NDIwNTdGRTU0MjA1NDIwN0MyMDQ0MjAwMDIwMDAyMDAwMjA0MAorOjIwQURFMDAwMDgwNDA4MDQ0OTA0MjlBNDJBMjQ3RkE0MDgyNDA4MjQwOTI0RkZBNDA4MjQxMDI0MTAwNDIwMDQ0MDE0ODAwODE0Cis6MjBBRTAwMDAxMDAwMTQzQzk3QzA1NTAwNTkwMEZERkMxMTg4MTE4OEZGNDgxMTUwMTEzMDIyMjAyMjUwNDQ4RTg5MDQwMjAwQTQKKzoyMEFFMjAwMDAwMzAwMUY4MUYwMDEwMDAxMDAwMUZGQzEwNDAxMDQwMTA0MEZGRkUwMDAwMDA0MDAwMzAwMDE4MDAwQzAwMDgwNgorOjIwQUU0MDAwMDEwMDAwODAzRkZFMjE0MDIxMzAyMTIwM0ZGQzIxNDAyMTQ4MjI0QzIyNTAyNDYwNDRDMjQ5NDI5MDNFMDAwMDc5Cis6MjBBRTYwMDAwMjAwMDEwMDNGRkMwODIwMDQ0MDdGRkU0MTA0MDA4MDNGRkMwMjAwMDNGMDA0MTAwNDEwMDgxMDMwNTAwMDIwRDYKKzoyMEFFODAwMDEwNDAxMDIwRkZGRTEwODRGQzQ4MTFGRTExNDJGQzI0MTNGRTM4NDAzNDdDNTA0NDkwODQxMDg0MTExNDEyMDgyNworOjIwQUVBMDAwMDA0MDNDNDAyNjQ4MjU0QzI1NTAzQzQwMjdGQzI0NDAzQzQwMjQ0MDI3RkUyNDQwNDQ0MDQ0NDA1NDQwODg0MEIyCis6MjBBRUMwMDAyMjEwMjIxMDIyMTBGMjEwMkZCQzIyOTQyQTk0MzI5NDYyOTRBMkE0MjRCNDI0QzgyODgyQTg4MjUwN0UwMDAwMTMKKzoyMEFFRTAwMDAxMDAwMTgwRjkwMDhCRkM4QTA0OEZFNDhBMjQ4QTI0OEEyNEZCRTQ4QTE0ODIwODAyMDIwMjAyMDFGRTAwMDAzNworOjIwQUYwMDAwMTAwNDEwMDQzRjI0MjEyNDQxMjRCRDI0MjUyNDI1MjQzRDI0MjEyNDI3MjQyMjA0MjA4NDIwOTQxRjg4MDAwMDczCis6MjBBRjIwMDAxMTAwMTEwNDE1RkUxNTA0MUEwNDUzRjQ1NTE0OTkxNDExRjQxMTA0MjkxNDI1MDg0NTAyNDEwMjgwRkUwMDAwQjgKKzoyMEFGNDAwMDQwODAzMDgwMTA4MEZERkMwNjA0MEEwNDExRTQzNTI0NTkyNDk5RjQxNTA4MTEwMDExMDIxMTAyMTBGRTEwMDAxNgorOjIwQUY2MDAwMDA4MDdDQzA0NDgwNDRGQzQ1MDQ3REY0NTI5NDEwOTQ1RTk0NTBGNDUwOTQ1MDg4NTA4MjVFODJFMDdFMDAwMENCCis6MjBBRjgwMDAyMTAwMTEwMDEyMDAwQkY4OEMwODU0MDg1QkU4MTIyODIyMjgyM0U4RTIwODIyMTgyMjAyMjIwMjIxRkUyMDAwRkQKKzoyMEFGQTAwMDAwMDAwN0ZFNzgyMDQ4MjA0ODYwNDg3MDQ4QTg0OEE0NDkyNjdBMjI0NDIwMDgyMDAwMjAwMDIwMEZGRTAwMDA2QworOjIwQUZDMDAwMDAwMDNERkUyNDEwMjQyMDNDMjAyNDQwMjRDODNENDQyNjQ2MjQ0NDI0NDAyNDQwNDQ0MDU3RkU4ODAwMDAwMDk0Cis6MjBBRkUwMDAxMDQwMTAyMDEzRkUxMDAwRkQwODEwQ0MxMDkwMTNGRTEwMDAxMUZDMUQwNEUxMDQ0MTA0MDFGQzAxMDQwMDAwQjQKKzoyMEIwMDAwMDA0NDA3QzdDMDQ0MDNDN0MwNDQwN0M3RTA2NDAwMTAwN0ZGRTAzMDAwNDg4MDg1MDM4MjBDQTEwMEMwRTA4MDRCNworOjIwQjAyMDAwMDA0MDdDMjA0NUZFNTQwMDU1MDg1NENDNTQ1MDU3RkU1NDAwNTVGQzExMDQyOTA0MjUwNDQ1RkM4MTA0MDAwMDUxCis6MjBCMDQwMDAwMDgwN0M0MDQ1RkM0ODAwNTEwODUwOTA0OEEwNEZGRTQ4MDA2ODAwNTNGODQyMDg0MjA4NDIwODQzRjg0MjA4NUYKKzoyMEIwNjAwMDAwMDBGRUZDMjgwNDI4MDRGRTA0QUEwNEFBRkNBQTgwQzY4MDgyODBGRTgwODI4MjgyODJGRTgyODI3RTAwMDBCMAorOjIwQjA4MDAwMTAwMDFGRjgxNDA4MzQwODI3RTg2NDg4QTdFODI2QTgyNkE4MjZBODJBQTgyQUFBMkFFQTMyODYyMDgyMDAwMDI5Cis6MjBCMEEwMDAyMDQwMTA0MDE3RkUwMDQwODg0MDRGRkM1NDQ0MTQ0NDI0NDRFNDQ0MjQ0NDI0NTQyNDQ4MjA0MDIwNDAyMDQwOEMKKzoyMEIwQzAwMDAwNDAwMDQwRjdGQzkxNTA5MTUwOTdGRTkxMTA5M0Y4RjI0ODkyNDg4MjQ4MDJBODAwOTAwMTBDMDIwNjA0MDQ0NQorOjIwQjBFMDAwMDA4MDA0NDAwODIwMTAxMDJGRUVDMjI0MDQyMDA4QTAzMDQwREZGODEyNDgxMjQ4MTI0ODEyNDhGRkZFMDAwMEM5Cis6MjBCMTAwMDAwMDAwRkJGQzIwMjAyMDIwMjIyNDQxMjQ3OTI4QzgyMDRCRkU0ODIwNDgyMDc4MjA0ODIwNDAyMDAwMjAwMDIwQ0IKKzoyMEIxMjAwMDEwMDAxM0ZFMTAyMEZFMjQxMTJDMTVBODE4QjAzMDIwRDdGRTEwMjAxMDIwMTAyMDEwMjAxMDIwNTAyMDIwMjAxNQorOjIwQjE0MDAwMDEwMDAwODQ3RkZFMDAwMDBGRjAwODEwMEZGMDAwMDAzRkY4MDAzMDAwQzAwMDgwMDI4MDI5MDgyNDQ0NDIyMkIxCis6MjBCMTYwMDA0MTA0MjEwNDI3QzgwMTEwODdDMDUwMDQxN0M0MTQ0ODI3RDAyMDAyMjQ4MkMzMDQ0MUM4NEUzMDQwQzAwMDAwODYKKzoyMEIxODAwMDA4MDAwODA4RkY4QzA4MTA3RjIwMDA0ODdGMEM0MTEwN0YyMDQyNDQyMjA2MTQwQzA3OThGODIwNDA0MDAwMDA4RAorOjIwQjFBMDAwMDQyMEZGRkUwNDIwNDUwMDMxRjAyMzIwMDRDMEYzMzgxQzQ2MTNGODEwNDAxM0Y4MTA0MDE3RkUyODQwNDdGRUQ4Cis6MjBCMUMwMDAxMDAwMTM5RTEyOTJGRTkyMTM5RTNBOTIzNjkyNTI5MjUzOUU5MjkyMTI5MjE0QTIxNEEyMUFDQTExMDQxMDAwMjMKKzoyMEIxRTAwMDAwMDA3QkRFMjI1MjIyNTIyMjUyM0JERTZBNTI2QTUyQUE1MjJCREUyQTUyMkE1MjNBNTIyQzUyMjU2QTA4ODRFNworOjIwQjIwMDAwMTA0MDNFRkM0OTIwODFGODQzMTAyNEUwMDExOEY2NDYxQkY4MTA0MDEzRjgxMDQwMTdGQzEwNDAyODQwNDdGRTQ4Cis6MjBCMjIwMDAwMDgwNzg4NDRGRjY0ODg4N0JGMDQ4MDQ0QkU2N0EyODRCRjA0ODA0NEEyNjQ5NDQ0OEU4NEYxMEE4MjA5MDQwNDgKKzoyMEIyNDAwMDAwMDAzRTdDMjI0NDIyNDQzRTdDMjI0NDIyNDQzRTdDMjI0NDIyNDQyMjQ0MjI0NDQyODQ0QTk0ODUwODAwMDA1RgorOjIwQjI2MDAwMDAxMDc3MjA1NTdDNTU2NDc3NTQ1NTU0NTU0QzU1NDA3NzdFNTUwMjU1MDI1NUZBNTUwMkI5MTQxMzA4MDAwMEMyCis6MjBCMjgwMDAyMDgwMjA4MDI3RkNGODgwMjdGODIwODAyRkZFMzExMDY2NDhCQkY2MjA0MDI3RjgyMDQwMjA0MEEwNDA0MDQwQTgKKzoyMEIyQTAwMDAwMDAwMTA4RkM5MDIwMjAyN0ZFMjA5MDQ0OTA3QTkyNkE5NEE4OTgyODkwMjg5MDI4OTAzODkwMjdGRTAwMDBCMQorOjIwQjJDMDAwMDAwMDE3RkUxMDIwMTAyMDEwNDBGQzQwMTBEMDExNDgxMjQ0MTQ0NjEwNDQxQzQwRTA0MDRGRkUwMDAwMDAwMDY3Cis6MjBCMkUwMDAwMTEwRkQxMDIxMTAyMTEwMjExMDIxMUU3REQwNjUxMEE1MTAyNTEwMjUxMDI1MTAzRDUyMjU5MjIxMEUwMDAwRDMKKzoyMEIzMDAwMDFGRjgwMTAwN0ZGRTU1NTQwQjI4MDE0MDNFMjAyMkZDM0U0ODIxRkUzRTIwNjJGQzYyMjBCRTIwMjAyMDAwMjBERQorOjIwQjMyMDAwMTIyMDEyMjAxMjIwRkUyMDEyMjAxMjI2MTdCODFBMjAzMjIwRDIyMDEyMjAxMjIwMTJBMjEzMjI1MjFFMjAwMEM1Cis6MjBCMzQwMDAxMDIwMTAyMDEwMjBGREZFMTEyNDE1MjgxOTIwMzFGQ0QxMDgxMTg4MTI1MDEyMjAxNDUwNTQ4RTJCMDQwMDAwMEYKKzoyMEIzNjAwMDAwMTAzRUZFMjI0NDNFMjgyMUZFM0UxMDUyRkU1MjEwOUUxMDAwMTAzRkY4MDIwODAyMDgwNDA4MDgyODEwMTAzMQorOjIwQjM4MDAwMDAwMDdFRkMxMDIwN0VGQzEwMjAxMDIwRkVGRTIwMDAyMDg4M0U5QzIwRTAyMDgwMjQ4MjM4ODIyMDdFMDAwMEVECis6MjBCM0EwMDAwMTEwMDExMDdEMTA1NTEwNTUxMDU1REU3RDEwNTUxMDU1MTA1NTEwNTUxMDdEMTI0NTUyMDE5MjAxMEUwMDAwRjgKKzoyMEIzQzAwMDAwNDAwMDgwRjNGODkyNDg5M0Y4OTI0ODkyNDg5M0Y4RjA4MDkxNDA4RkZFMDA0MDAwNDAwMDQwMDA0MDAwNDAxMAorOjIwQjNFMDAwMDAyMDNDNDAyNUZDMjUyNDI1MjQzREZDMjUyNDI1MjQyNUZDM0M2MDI0QTAyN0ZFMjQyMDQ0MjA1NDIwODgyMEM5Cis6MjBCNDAwMDAwMDgwMUZGRTEwNDAxMDQwOTdGQzU0NDgxNDQwMzdGODU1MDg5NTEwMjQ5MDI0NjAyODYwNDg5MDUzMEVBQzA0OTIKKzoyMEI0MjAwMDAwODAwMDgwM0ZGQzIwODQyMDg4MjA4MDJGRjAyNDEwMjIyMDIyMjAyMTQwMjA4MDIxNDA0MjMwNDQwRTk4MDQ0QworOjIwQjQ0MDAwMDAwMDdGRkM0NDQwNDQ0MDQ0NDA0NDQwNDQ0MDQ0NDQ0NDQ0NDg0NjUwM0M2MDAwNDAwMDdGRkUwMDAwMDAwMDk2Cis6MjBCNDYwMDAwMTAwMDA4NDFGRkUxMDAwOTAwNDVGRkU1MDYwMTBEODMzNDY1QzQyOTNGODEyMDgyMjA4MjIwODQzRjg4MjA4QkMKKzoyMEI0ODAwMDEwMjAxRjEwMjlGRTI5MDQ2OTQ2QUYyNDI4MjgyOEZFMkYxMDJEMTAyRDdFMzUxMDM3MTAyNTEwMjQxMDAwMTBENQorOjIwQjRBMDAwMDAwMDNGRjgyMDA4MjAwODNGRjgyNDQwMjQ0MDI0NEMyNzcwMjQ0MDI0NDAyNDQ0NDU0NDQ2NDY4NDNDMDAwMEZBCis6MjBCNEMwMDAzQzQwMjVGQzNDODgyMDUwN0RGQ0E0MjAzRkZFMjQyMDdGRkUwMDAwMUZGMDAwMDAxRkYwMTAxMDFGRjAxMDEwRjMKKzoyMEI0RTAwMDIwNDAzRTdFMjg5MDQ1MDg4NDgwMUZGODEwMDgxRkY4MTAwMDFGRkMyOTI0MkZGQzI5MjQ0OTI0NDkzNDg4MDg3NworOjIwQjUwMDAwMTA4MDE4NDAxN0ZDMjQwNDM0MDQ2N0ZDQTQwMDI3RkMyNjk0MjY5NDJCRkMyQTk0MkE5NDMyOTQyMjg0MjIwQ0Y1Cis6MjBCNTIwMDAwMDQwMTA0MDEwNDAxMDQ0MUZGRTEwMDAxMDAwMTAwMDFGRjAxMDEwMTAxMDEwMTAyMDEwMjAxMDQwMTA4MDEwREIKKzoyMEI1NDAwMDAwNDBGODIwMDlGQzQ5MDQ0OUZDNDkwMDQ5MDA3REZFMDVBQTE1QUEyNUZFQzZBQTA2QUExNkFBMEM4NjAwMDBFQworOjIwQjU2MDAwMDAwMEZFRkMyODg0RkU4NEFBODRGRUNDMDBENDdDQTQwMEI0RkVENDEwQ0M1NDg2OTUwNjUxMDIyMjAyMDAwMDY5Cis6MjBCNTgwMDA0RkZFMjEyMDIxMjA4N0ZDNTUyNDU3RkMxMDAwMjdGQzIwMDAyRkZFQzA0MDQ0NTA0NDRDNDg0NDQxNDA0MDgwMUMKKzoyMEI1QTAwMDAwMDBGRTFDMjhFOEZFQThBQUE4QUFBOEFBQThGRUE4MDBBODdDQTgwMEE0RkVCNDU1MjQ5MTNDNTIyNjI0MDQxNworOjIwQjVDMDAwN0ZGRTAyNDAzRkZDMjI0NDIyNDQzRkZDMDAwMDFGRjgwMDAwMDAwMEZGRkUwMTAwMTExMDIxMDg0NTA0MDIwMEMwCis6MjBCNUUwMDAyMjEwMjI5MDJBOTBGNzFFMkZEMjJBNTIzQTYyNkE2NEFGNTQyQUQ0MkE0ODJBNDgyQTU0QUE2NjRBQzQwMDAwMzAKKzoyMEI2MDAwMDQ5NDAyQTQwN0Y3RTQ5Qzg1RDQ4NkIzMDQ5MzA0QUNFMUZGMDEwMTAxRkYwMTAxMDFGRjAxMDEwMUZGMDAwMDBCQworOjIwQjYyMDAwMjAwMDIxMTAyMDk4RjhBMDIzRkUyMTEwMjkxMDMxMTBFN0ZFMjExMDIxMTAyMTEwMjIxMDIyMTBBNDEwNDgxMEI1Cis6MjBCNjQwMDAwODAwMDhGRTRFMjA0ODQwNDhGQ0ZFODQwMEE0MDhBNDRBQTQ0QUE0ODRBNDA4NTAxMDQ4MjA4NkMzMDIwMDAwQjEKKzoyMEI2NjAwMDA4NDAwQzIwMTAxMDJGRUU0NDI0MDUyMDA4QzAxRkYwMTAxMDExMTAxMTEwMTExMDEyOTAwNDYwMDgzMDMwMjBBNAorOjIwQjY4MDAwMDAwMDBGRjAwODEwMDgxMDA4MTAwRkYwMDgxMDAwMDA3RUZDNDI4NDQyODQ0Mjg0NDI4NDdFRkM0Mjg0MDAwMDdBCis6MjBCNkEwMDAwMDIwRkUyMDQ1RkM0NTI0N0RGQzQ1MjQ0NUZDN0MwMDQ3RkU0NDQwNDRGQzdFNDRDNDA0MDQwNDA0MTQwNDA4NDQKKzoyMEI2QzAwMDAwNzgwRkMwMDgwMDA4MDAwRkZDMDg0MDA4NDAwODQwMDg0MEZGRkUwNDAwMDYwMDBDMDAxODAwMzAwMDQwMDA0RAorOjIwQjZFMDAwMjAwMDI3RkMyMDQwMjA0MEZBNDgyMjRDMjE0ODIxNTAyN0ZFMjA0MDJDNDAzMDQwQzA0MDAwNDAwMDQwMDAwMERDCis6MjBCNzAwMDAwNDQwMDQ0MEZGRkUwNDQwMDQ0MDNGRkMxMTEwMDkxODBEMjAwOTQwRkZGRTAxMDAwMTAwMDEwMDAxMDAwMTAwMjcKKzoyMEI3MjAwMDA0NDAwNDQwRkZGRTA0NDA0MDQwMzdGQzIwNDg4NDRDNjI0ODUxNTAxMDQwMjdGRUUwNDAyMDQwMjA0MDIwNDA1NQorOjIwQjc0MDAwN0ZGQzAxMDAyMTEwMTExODA5MTAwRDIwMDk0MDAxMDBGRkZFMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDdGCis6MjBCNzYwMDAxMDE4MUJFMDEwNDAzMDQwNUZGRTkwNDAxMDQwMTdGQzEwMDAwN0UwMDQyMDA0MjAwODIyMDgyMjEwMUUyMDAwNzUKKzoyMEI3ODAwMDAyMDAyMkZFMTQ0MDdGNDAxNDc4MTQ0ODE0NDgxNDQ4RkY0ODE0QTgxNEE4MjQ4ODI0OEEyNEFBNDRDQTg0ODZENQorOjIwQjdBMDAwMDAwMDQwMDAzN0ZFMjA0MDAyNDgwMTRDRjE1MDEwNDAxN0ZFMTA0MDEwNDAxMDQwMTQ0MDE4NDAxMDQwMDA0MDRCCis6MjBCN0MwMDAzRkZDMjAwNDIwMDQzRkZDMjQxMDIyMjAyRkZDMjIyMDIyMjAzRkZFMjIyMDIyMjA0NDIwNDQyMDg4MjAxMDIwMjUKKzoyMEI3RTAwMDIwMjAyMDIwMjAyMDIzRkVGQTI0MjIyODIyMjAyMkY4MjI4ODJBODgzMjUwQzQ1MDA0MjAwODUwMDg4RTEzMDQ4OQorOjIwQjgwMDAwMjA0MDEyNDgxMjQ0MDI0MDhCRkU0ODgwNTA4MDEwRjgxMTA4MjE5MDIyNTBFMjIwMjQzMDI4NDgyMThFMjYwNEQyCis6MjBCODIwMDAwODAwMDlGRTA4MjA3RjQwNEFGQzQ4ODQ3RUE0NDJBNDY0QTQ1NEE0NDhBNDU0NTA1MjQ4QTA4NjgxMDIwMDAwMjUKKzoyMEI4NDAwMDQwNDAyM0ZFOEE0NDRBNDAxM0Y4MTUxMDY0QTAyODQwMzBCMDI1MEM3RkZFMDgyMDA0NDAwMzgwMEM2MDcwMUNERQorOjIwQjg2MDAwMDAyMEZFMjAxMDIwMTFGRTIxMjQyMTI4NzkyMDY5RkNBOTg4Mjk0ODI5NTAzQTIwMkE1MDI0ODgwOTBFMTIwNEY3Cis6MjBCODgwMDAxMDIwMTA0MDIxRkM3RDI0NDVGQzQ1MjQ3RDI0NDVGQzQ0NjA0NDY4N0NBODQ0QjYwMTNFMDIyMjBDMUUwMDAwRTMKKzoyMEI4QTAwMDQwNDAyMDQwMzA4MDIzRjgwMjA4MDIwOEYyMDgxM0Y4MTIwODEyMDgxMjA4MTNGODEyMDgyODAwNDdGRTgwMDA2NAorOjIwQjhDMDAwMTAyMDEwMjA5MjQwNTNGRTU1MDJGRjAyMTEwMjM5MDIzNUZFNTUwMjUxMDI1MTAyOTEwMjExMDIxMUZFMTEwMjQ3Cis6MjBCOEUwMDAwODA0MDQwNDdGODQyMTI0MTIyNDEyMjQ3RkE0MDAyNDAwMjQzRjI0MjEyNDIxMjQyMTA0M0YwNDIxMTQwMDA4ODMKKzoyMEI5MDAwMDA4MjAwODIwMDgyMDA4MjA3RjIwMDgzMDBBMjgwQzI2MTgyMjY4MjAwODIwMDgyMDA4MjAwODIwMjgyMDEwMjA3MgorOjIwQjkyMDAwMTAyMDEwMjgyMDI0M0RGRTQwMjA3REZDOTEyNDExRkNGRDI0MTEyNDExRkMxMTI0MTEyNDE1MjQxOTI0MTEwQzI1Cis6MjBCOTQwMDAwNDQwMDY0MDBDNDAwODQwMTA0MDE4NjAzMDUwNTA0QzkwNDYxMDQyMTA0MDEwNDAxMDQwMTA0MDEwNDAwMDAwMkQKKzoyMEI5NjAwMDA4MjAwODIwRkZGRTA4MjgwOTI0RkZGRTAxMDAxRkYwMTExMDFGRjAxMTEwMTExMDFGRjAxMTEwMTE1MDExMjBEQworOjIwQjk4MDAwMDQyMDA0MjA3RkZFMTQyMDFGRkMxMTI0MkZGNDQxMDQxRkY0MTExNDFGRjQxMTE0MUZGNDExMTQxMTU0MTEyQ0FDCis6MjBCOUEwMDAwODQwMDg0MEZGRkUwQTQwMDEwMDdGRkMwODIwMDQ0MEZGRkUwMDAwMUZGMDEwMTAxMDEwMTAxMDFGRjAxMDEwMkQKKzoyMEI5QzAwMDA0NDBGRkZFMDQ1MDg0NDg1RkZFMjA0MDk3RkM1NDQ0NTdGQzE0NDQyNDQ0RTdGQzI0NDQyNDQ0MjQ1NDI0NDg3NAorOjIwQjlFMDAwMTAyODEwMjQxM0ZFMTAyMEZGRkUxMjIyMTIyMjEzRkUxMjIyMTIyMjFGRkVFMjIyNDIyMjAyMkEwMjA0MDAwMDA1Cis6MjBCQTAwMDAwODIwMDgyMDA4MjA3RjIwMDgyMDE4MzAxQzI4MkIyNjI5MjI0ODIwNDgyMDg4MjAwODIwMDgyMDA4MjAwODIwQTcKKzoyMEJBMjAwMDAwMDA3RkZDNDEwNDVGRjQ0MTA0NEZFNDQ5MjQ0RkU0NDkyNDRGRTQ0OTI0NDkyNDQ5NjQ0MDA0N0ZGQzQwMDRCMQorOjIwQkE0MDAwMDgyMDA0NDA3RkZDMDQ0MDI0NDgxNDUwRkZGRTAwMDAxRkYwMTAxMDEwMTAxRkYwMTAxMDEwMTAxRkYwMTAxMDIxCis6MjBCQTYwMDAyMDQwMTA0ODEwNDQwRkZFOTA0MDU3RkM1NDQ0MjdGQzI0NDQyNDQ0QzdGQzQ0NDQ0NDQ0NDQ0NDQ0NTQ0NDQ4ODAKKzoyMEJBODAwMDAyMDg0MTEwMkZGRTMxMTAyNTE0MDMxOEVGRkUyMDAwMjNGODIyMDgyMjA4MjNGODJBMDgzMjA4MjNGODAyMDg2MQorOjIwQkFBMDAwMDNGODdBMDg0QkY4NEEwODRCRjg3OTEwNEZGQzQ5MTA0RkZFNDk1MDdCNTgwNEU2MTk1MDA2NEMwMTQwMDA4MEU1Cis6MjBCQUMwMDA0M0Y4MjIwODIzRjg5MjA4NTNGODUxMjAzN0ZDMjEyMDJGRkU0MjUwQ0Q1RTUwRTQ0MzUwNDY0QzQxNDgwMDgwRDAKKzoyMEJBRTAwMDIyMDAyMjdDN0Y0NDIyNDQzRTQ0MjI3QzNFNDQyMjQ0MjI0NEZGN0MwMDQ0MjQ4NDIyODQ0MzE0ODEwODAwMDAwMgorOjIwQkIwMDAwMjIyMDIyMjA3RjIwMjI3RTIyNDQzRTg4MjIyMDNFMjAyMjIwRkYyMDAwNTAyNDUwMjI4ODQyODg4MTA2MDYwNDZDCis6MjBCQjIwMDAxMDAwMTdGRTEwOTAxMDkwRkM5MDEzRkMzQTk0MzY5NDUyOTQ1Mjk0OTMxQzEyMDQxMjA0MTNGQzEyMDQxMDAwOTEKKzoyMEJCNDAwMDAwNTAwMDQ4MDA0MDNGRkUyMjQwMjNDNDIyMjYzRkU0MjIyODIyMzg0QjEwNEE5MDUyQUE5MkNBODYwNjAyMDI1QgorOjIwQkI2MDAwMDEwMDdGRkMwMTAwM0ZGMDAxMTA3RkZFMDExMDNGRjAwMjAwRkZGRTA0MjAwODIwMDY0MDAxODAwNjYwMzgxODgzCis6MjBCQjgwMDAwMDAwMDEwMDAxMDAwMTAwMDEwMDAxRkU3RjAwMDEwMDAxMDAwMTAwMDEwMDAxMDQwMTA0MDEwNDAwRjgwMDAwMTgKKzoyMEJCQTAwMDAwODA4RkZFNjA4MDJGRjAwMDkwMUZGRTIwOTAyRkYwMjEwNERGRkU0MjEwNDQyMDQyNDA0MTgwNDY3MDU4MENFOAorOjIwQkJDMDAwNDA0MDI3RkMyMEUwMDE1MDk2NEM1MDQwMTBBMDIxMTAyNjRDMjI1MEMxNjA0MEUwNDM1ODRDNDQ0MTQwNDA4MDhECis6MjBCQkUwMDAxMDgwMDg4MDQwOUMyMEUwMDc4NDEwODQxMDdDMjAwMDAxMDA3RkZFMDM0MDA1MjAxOTE4NjEwRTAxMDQwMTAwRkEKKzoyMEJDMDAwMDAyMDA0MjAwMjJGQzIyMjQ4QTI0NEZBNDUyMjQxMjI0MjIyNDIyQTRFMzQ0MjI0NDIwODQyMTE0MjIwODAwMDA5MworOjIwQkMyMDAwMDgyMDA4MjA3RkZDMDgyMDA4MjAwRkUwMDgyMDBGRTAwODIwMDgyMEZGRkUwODQwMEMyMDE4MTAzMDE4NDAxMDYyCis6MjBCQzQwMDAxMDg4MTA4ODExRkVGQzg4MzA4ODM4Rjg1NDg4NTBGODkwODgxMDg4MTNGRTEwMDAxMDg4MTA4NDExMDYxMjAyRUQKKzoyMEJDNjAwMDAxMDAwMTAwM0ZGODAxMDAwMkMwMEMzODMwMTBGRkZFMDAxMDFGMTAxMTEwMTExMDFGMTAxMTEwMDA1MDAwMjAwNgorOjIwQkM4MDAwMDg0MDA4NDAwODQwMEJGRTQ4NDA0RTQwNDg0MDRCRkM0OTA4NDg4ODRFOTBGMDYwMDA2MDAxOTAxRTBFMDAwNDZFCis6MjBCQ0EwMDAwMDIwMDAyMDdDMjA1NUZDNTQyMDU0MjA3RkZFNTQyMDU0MjA1NDIwNTVGQzdDMjA0NDIwNDAyMDAzRkUwMDAwRTQKKzoyMEJDQzAwMDEwMjAxMDIwMTNGQzU0NTA1NDg4NTUwODU3RkU1NDA0NTVFNDU1MjQ1RDI0RjFFNDQxMjQwMDA0MDAxNDAwMDhERQorOjIwQkNFMDAwMDA0MDc4MjA0QkZFNDkwODc4OTA0ODYwNDg5MDQ5MEU3RTk0NDg5MDQ4OTA0ODkwNDg5MDQ5MTBCOTEwOTIxMEJECis6MjBCRDAwMDAwMjAwMDEwMDdGRkUwNDIwMDI0MDAxODAwMjQwMEMzMDc0MkUwNDI0MDQyMDA4MjAwODIwMTAyMDIwMjAwMDIwNzAKKzoyMEJEMjAwMDIwODAxMDgwRkRGRTIxMDAyMjg4MjNGRTNDODgyNEY4MjQ4ODI0RjgyNDg4NDdGRTU0ODg4OTBDMDIwNDAwMDBEQworOjIwQkQ0MDAwMjAwODEwM0MxMUMwRkQwMDA5MDAxMTAwMTFGRTMxMTA1OTEwOTUxMDExMTAxMTEwMTExMDEyMTAxMjEwMTQxMDVFCis6MjBCRDYwMDAxMDAwMDg3RTAwNDQ3RjQ4MDI0ODA0NTAwODUwMUM0ODJBNDQ0QTQ0ODg0MjA4NDIwODU0MDg0ODA4NDAwODQwN0MKKzoyMEJEODAwMDAwNDBGODQwMEJGQzQ4QTA0ODkwNDkwODRCRkU3QzA0MDVFNDE1MjQyNTI0QzVFNDA0MDQxNDE0MDgwODAwMDBGNgorOjIwQkRBMDAwMDgwMDA4MDAwOEY4N0UwODA4MDgwODA4RkVGODA4ODA0ODgwNEU4NDQ4ODQ0ODdDNDgwMEE4MDA5RkZFMDAwMDk4Cis6MjBCREMwMDAwMTAwMjEwODIxMDgzRkY4MDAwODAwMDAzRkYwMDAxMDAwMTAzRkYwMjAwMDIwMDgyMDA4MjAwQzFGRjgwMDAwQTAKKzoyMEJERTAwMDEwMDAxODA4MUZGQzEwMDAyMDAwMjAwMDVGRTA4MEMwMDE4MDAzMDAwNjAwMEMwNDE4MDQxMDA2MEZGQzAwMDA1MgorOjIwQkUwMDAwMDEwMDAxODAwMTAwMDI4MDA0NDAwODMwMzExRUMxODQxMTEwMTlGODExMDAxMTAwMTEwMDExMDRGRkZFMDAwMDk2Cis6MjBCRTIwMDAwMTAwMDBDMDAwODAxRkZDMTAwNDEwMDQxRkZDMTAwMDEwMDAxN0ZDMTQwNDI0MDQyNDA0NDdGQzg0MDQwMDAwRkQKKzoyMEJFNDAwMDA4MDAwOEZDN0YyNDA4MjQ3RjI0MDgyNEZGNDQwODVDMDg4ODAxMDBGRkZFMDI4MDA0NDAwODMwMzAwRUMwMDQwMworOjIwQkU2MDAwMDEwMEZEMDAyMTdFMjExMjIxRDI0NzEyNzkxMjY5MTJBOTIyMjkyMjI5QTIyOTIyMzg0MjI4NDQyMDk0MDEwOEQxCis6MjBCRTgwMDAzRTdDMjI0NDIyNDQzRTdDMDExMDAxMDhGRkZDMDZDMDE4MzBFMDBFM0VGQzIyODgyMjg4MjI4ODNFRjgwMDAwRTMKKzoyMEJFQTAwMDA4MDAwODAwMUZGRTEwMDAyMDAwNEZGODAwMDAxRkYwMDAxMDAwMTAwMDEwMDAxMDAwMEEwMDBBMDAwNjAwMDI3MworOjIwQkVDMDAwMDIwMDQyMDAzM0Y4MjQwMDA4MDAxN0UwRTA0MDIwODAyMTA4MjIwODI0MDgyN0YwMjAwMDU4MDA4N0ZFMDAwMDdECis6MjBCRUUwMDAwMTAwMDA4NDdGRkUwMjIwMDQxMDA4RjgxRjEwMDQyMDA0MjBGRkZFMDQyMDA0MjAwODIwMDgyMDEwMjAyMDIwOEUKKzoyMEJGMDAwMDQyMDAyMjAwMjNGQzA0MDA5N0Y4NTgwMDU3RjAxMDEwMTAxMDIwMTBFMDEwMjAxMDIwMEEyMDBBMjAwNjIwMDI0MAorOjIwQkYyMDAwMjA4MDEwNDAxMDQwMDdGQzg4MDA0ODA4NTAwODEyMTAyMjEwMjExMEUxMjAyMTIwMjA0MDIwNDAzRkZFMjAwMEFBCis6MjBCRjQwMDA0MTAwMjE4MDMxMDAyMUZFMDIwMDAyMDBFNUY4MjAxMDIwMjAyMDQwMjA4MDIxMDIyQTAyMzIwMjIxRkMwMDAwQkUKKzoyMEJGNjAwMDEwODAxMDgwMTBGRUZEMDQxMTA4MTYxMDE4MDAxMDQwMzM5RUQyMDIxMjAyMTNERTEyMDIxMjAyNTNGRTIyMDJBNAorOjIwQkY4MDAwMjA4MDIwODAyMEMwMzEyMDI5MTBBMjA4QTdGNkE4MDAyMDAwMjNGODIyMDgyMjA4MjIwODIzRjgyMjA4MDAwMDBBCis6MjBCRkEwMDA0MDgwMjA4MDIxNDAwMTIwODIxODU0MDY1QkYwMTAwMDIwMDAyN0Y4QzQwODQ0MDg0NDA4NDQwODQ3Rjg0NDA4RDYKKzoyMEJGQzAwMDAxMDAwMTAwM0ZGQzAyNDAwNDIwMTgxMDdGRkU0ODgyODg4NDFGRjgyMDgwMDA4MDdGRkUwMDgwMDA4MDAwODAwRgorOjIwQkZFMDAwMTAwMDEwM0MxMUUwRkMyMDEwMjAxNDIwMTgyMDE3RkUzMDIwRDAyMDEwMjAxMDIwMTAyMDEwMjA1MDIwMjAyMDc3Cis6MjBDMDAwMDAxMDAwMTAxQzIwRTAzRTIwNDAyMDdDMjA5MUZFMTAyMEZFMjAxMDIwMTAyMDEwMjAxMDIwMTQyMDE4MjAxMDIwNTEKKzoyMEMwMjAwMDEwMDAxMEY4MjA4ODNFODg0MDg4N0M4ODkxMDYxMDAwRkRGODExMDgxMTA4MTEwODE1MDgxOUY4MTEwODAwMDA4MAorOjIwQzA0MDAwMDAxMDAwRjgzRjAwMDEwMDAxMDAwMTA0RkZGRTAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDAwMDhECis6MjBDMDYwMDAwMDAwNDAzQzM3QzAyMDQwMDA0MDAwNDBFRkZFMjA0MDIwNDAyMDQwMjA0MDIwNDAyMDQwNTAwMDhGRkUwMDAwNjMKKzoyMEMwODAwMDIwNDAzRTdFMjg5MDQ1MDg4MzA4MDQ4MDA4NjAxMDFFMkZFNEMwMTAxMjEwMDkyMDA5MjAwMDQwN0ZGQzAwMDBDOAorOjIwQzBBMDAwMDgwODBDM0MwQkMwMTA0MDEwNDAzMDQ0NUZGRTkwNDAxMDQwMTA0MDEwNDAxMDQwMTA0MDEwNDAxMDQwMDAwMEVDCis6MjBDMEMwMDA4MjA4NDExMDZGRkU0MTIwMDdGODAxMjhFRkZFMjEyODIxMjgyN0Y4MjEyMDJCMzAzNTJDMjkyNjExMjQwMTIwNEYKKzoyMEMwRTAwMDEwNDAxMDYwRkY0MDEwN0U3RTgwNDI4MDdGN0M0MjA4N0UxMDRBMjAwODQwRkY0NDA4ODQwODg2MDg3QzA4MDA4NQorOjIwQzEwMDAwMDAyMEZFMjA5MjIwRDY1MEJBODhGRjA2MTA0MEZFMjAxMDIwMUVGQ0UwMDgyQTA4NTUxMDU1MTA4MDIwMDAwMDg2Cis6MjBDMTIwMDAyMEEwMjA5MDNDOTAyMEZDNDM4MDc4ODBBMEJDMjNDMEZDNDQyMDQ4MjAzMDIwNjAyODkyMzMwQTIwMDYwMDAyMTYKKzoyMEMxNDAwMDEwODgxMDg4MjA4ODNDODg0M0ZFN0M4ODkwODgxMDg4RkNGODEwODgxMDg4MTA4ODE0ODgxOEY4MTA4ODAwMDA0RQorOjIwQzE2MDAwMDgxMDA2MTgwNDIwRkZGRTAwMDAzRTA4MjI0ODNFNDgyMjQ4MjI0ODNFNDgyMjQ4MjI0ODJBMDgyNDI4MDAxMDc2Cis6MjBDMTgwMDA0MjEwMjIxMDI3QkMwMjEwOEZCRTUyMTAxNTI4MjhDNjIwMDAyN0Y4QzQwODQ3Rjg0NDA4NDQwODQ3Rjg0NDA4REYKKzoyMEMxQTAwMDAwNDAyM0Y4MTI0ODEzRjgwMDQwMDdGRUUwMDAyM0YwMjIxMDIzRjAyMjAwMjNGODIyMDgyM0Y4NTAwMDhGRkVFMworOjIwQzFDMDAwMjA4MDEwOTAxMDg4MDA4MDgzRkM0ODgwNDg4MDE3RkUxMDgwMjA4OEUwNTAyMDYwMjFBMjI2MTIyMDBBMjAwNkIwCis6MjBDMUUwMDA0MDIwMjlGQzM1MjQyNUZDMDAyMDAzRkVFMDAwMkNGODI0ODgyNEY4MjQ4MDI0RjgyNDg4MzRGODJBMDAxMUZFODIKKzoyMEMyMDAwMDA4MDAwODBFN0Y3MDEwNDAyODdFN0U0ODA4ODgwRTg4NzkwODBBMDgwOTAwMUZGODAxMDAwMTAwN0ZGRTAwMDBGRAorOjIwQzIyMDAwMDEwMDIxMDgzRkY4MDAwMDI0NDAyNDQwN0U3QzI0ODQyNTI4M0MyMDI0MjAyNDUwM0M0ODI0OEUyNTA0MDIwMDcxCis6MjBDMjQwMDAwODAwMEMwMDA4MDAxRkZDMTAwODIxMTA0MTIwODEwMDAyODAwMjgwMDQ0MDA0NDAwODMwMzAxRUMwMDgwMDAwQTIKKzoyMEMyNjAwMDIxMjAxMTIwMTIyMDdGQkUxNDI0N0Y0ODE1MTBGRkQwMTUxMDdGMTAxNjI4MzUyODU1NDg5NDQ0MTQ4NjE1MDQ3MworOjIwQzI4MDAwMTA0MDEwNDAxMEUwRkU5MDExMDgxMjBFMzlGNDM1MTA1NTEwNTExMDkxNTAxMTI0MTEwNDExMDQxMEZDMTAwMEIzCis6MjBDMkEwMDAwMDQwMDA0MEY4NDA4OEEwODkxMDhBMEU4RkY0OEExMDhBMTBGQTEwOEE1MDgyMjAwMjA0MDIwNDAxRkMwMDAwMjcKKzoyMEMyQzAwMDAwNDAzQzIwMjVGRTI2MDQzQzkwMjRDODI0ODYyNTA0M0UwMDI1RkMyNDIwMjQyMDI0MjA0NDIwNTdGRTg4MDA3RQorOjIwQzJFMDAwMTAyMDA4MzAwNDQwN0ZGQzAxMDAxRkY4MDEwMDAxMDA3RkZFMDI0MDAyNDAwNDQ0MDQ0NDA4NDYxMDNDMjAwMEIyCis6MjBDMzAwMDAyMDQwMjA0MDI3RkUyMDQ4RkE0QzIxNTAyN0ZFMjAwMDIzRkMyMjA0M0FGNEUyOTQ0MkY0MDIwNDAzRkMwMjA0QUEKKzoyMEMzMjAwMDA4NDBGRkZFMDg0MDAxMDAzRkY4MDkyMDA1NDBGRkZFMDAwMDNGRjgyMDA4MjdDODI0NDgyN0M4MjAwODNGRjhDNQorOjIwQzM0MDAwMDAwMDc5RjgwOTA4MDkwODc5Rjg0MDQwNDNGQzQyNDQ3QTQ0MEE0NDBCRkMwODQwMDg0ODA4NDQyODdFMTNDNDIwCis6MjBDMzYwMDAyMDQwMjA0MDIwNDBGQ0EwMjExODIyMEUyREY0MzExMDYxMTBBMTEwMjE1MDIxMjAyMTA0QTEwNDQwRkMwMDAwNUMKKzoyMEMzODAwMDExRjgxMDQwMTFGOEZDNDAxM0ZDMzg0MjM0M0U1MDAwNTdCQzkyMTAxRkJDMTIxMDFGRkUxMjEwMTMxMjEyMEU3RQorOjIwQzNBMDAwMjBEMDI3MTAzOTEwNDE1MjQxMzRGRkQ4MjExMDIzMTBGQjkwMjU1MDI5MjgyMTI4Mjk0NDMxNDQyMTgyMDEwMEFBCis6MjBDM0MwMDAxMDIwMDgyMEZGQTAwMDNFM0UyMDIyMjAzRUZFMDA4NEZGNDQ4MTQ4QkQyOEE1MTBCRDMwODE0ODg1OEU4MjA0RDMKKzoyMEMzRTAwMDEwNDAxMDQwMTI0NDE5NDg1NTUwNTNGQzkyMDQxM0ZDMTIwNDEyMDQxM0ZDMTIwNDEyMDQxMjE0MTIwODAwMDBBNgorOjIwQzQwMDAwMjAwMDIzRkMyMDQwRkM0MDI3RkU3MEEwNjkxMEEyMDhBRDE2MjExMDIxMTAyMTEwMjIxMDIyMTAyNDEwMjAxMENCCis6MjBDNDIwMDAwMTQwNzkyMDRCRkU0QTIwNEUyMDdCRkM0QTIwNEEyMDdCRkM0QTIwNEEyMDRCRkU3QTAwNEQyNDQ0OTIwODkyQzcKKzoyMEM0NDAwMDAwRjgzRjgwMDEwMDAxMDQ3RkZFMDM0MDA2MjAwODE4MzQyRUM0MjQwNDIwMDgyMDA4MjAxMDIwNjAyMDAwMDBBQgorOjIwQzQ2MDAwMTAzODFCQzAxMDgwMjA4MDJGRkU2MUEwQTMxODI2MEUyOTE0MjExMDIxMTAyMjEwMjIxMDI0MTAyODEwMDAwMERECis6MjBDNDgwMDAwMDAwMDFGRTdDNDAxMDQwMTA0MDEwNDAxMEZDMTA0NDEwMDQxNjA0MzgwNEMwMDQwMDA0MDA0NDAwMjgwMDEwRTMKKzoyMEM0QTAwMDI0MjAyNDIwRkYyNDI0QTQzQzY4MTBGQzdFODQ1Mjg0N0VGQzEwODQxMDg0RkVGQzEwODQxMDg0MTA5NDEwODg4MQorOjIwQzRDMDAwMjNGODIwNDAyM0Y4Rjg0MDI3RkMyMDQyMjg3RTMwMDA2RjdDQTQxMDNGN0MyNDEwM0Y3RTI0MTBBNjEyNDQxRTlBCis6MjBDNEUwMDAyMDAwMjFEQzNDNDRFMDY0MkE1NDE1NTQyQUM0NDBDQ0ZENTQyQTY0Mjg0NDI5NTQyODhBNDgwMjg3RkUwMDAwMzEKKzoyMEM1MDAwMDEwMjAxMDIwMTEyNDU0QTY1NEE4NTVGQzU1MDQ1NUZDNTUwNDU1MDQ1REZDRjEwNDQxMDQwMTE0MDEwODAwMDAzMgorOjIwQzUyMDAwMDg0MDBDNDgxQTRDMTE1MDMzRkMzMjA0NTIwNDkzRkMxMjA0MTIwNDEzRkMxMjA0MTIwNDEyMTQxMjA4MDAwMEE3Cis6MjBDNTQwMDAwMTAwMDA4MDdGRkU0NDQ0OTgzMDYwMDgwMUZDN0U0MDEwNDAxMDc4MTAwODFDMDhFMDA4MDAwODAwNTAwMDIwRjYKKzoyMEM1NjAwMDEwMDAxMDAwMTNGQzEwNDQxMDQ0MUU0NEYwNDQxMDQ0MTA0NDEyODQxNDg0MTkwNDExMDQwMjE0MDQwODAwMDAyNAorOjIwQzU4MDAwMDQyMDA0MjBGRkZFMDQyMDA0MjAwODAwMDg3QzdGNDQwOTQ0MDk0NDExNDQxMTQ0MjE0NDQ3N0M4MjQ0MDAwMDhECis6MjBDNUEwMDAwMDAwMEZGMDA4MTAwODEwMDgxMDBGRjAwODEwMDgxMDA4MTAwRkYwMDgxMDA4MTAwODEwN0ZGRTAwMDAwMDAwMjkKKzoyMEM1QzAwMDIwNDAyMDQwMjA0MDMwNDBBOUZDQTg0MEEwNDAyMDQwMjdGRTIwNDAyMDgwMjA4ODIxMDQyM0ZFMjAwNDAwMDBDNworOjIwQzVFMDAwMDEwMDAwODAzRkZFMjIyMjBDMTAzMDA4MTAwMDExRkMxRTQ0RjA0NDEwNDQxMjQ0MTQ4NDE4ODQxMTI4MDIxMDA5Cis6MjBDNjAwMDAyMDQwMjA0MDNFNDAyMDgwNDBGRTdDQTRBMTI4MjAyMEZDMjAyMDIwMjA1MDIwNTAyODg4MzEwRTI2MDQwMDAwODAKKzoyMEM2MjAwMDEwMDAxQkY4MTAwODIzRjgyMDA4NzNGOEEwMDAyN0ZFMjgwMjJCRjQyMTEwMjEyMDIwQzAyMUIwMkUwRTAwMDBBNAorOjIwQzY0MDAwMDIwMDAxMDAzRkZDMDgyMDA0MzAwNDQwN0ZGRTAxMDAwMTAwM0ZGQzAxMDAxMTIwMTkxODIxMEM0NTA4MDIwMDYzCis6MjBDNjYwMDAwMTAwM0ZGQzAyMDAzRkY4MDIwMEZGRkUwNDIwMDhGMDNGMDhDMTA2M0ZGODAzNDAwNTIwMDkxODMxMEVDMTA0NTgKKzoyMEM2ODAwMDAwMDA3RUZFMDgxMDNFN0MwODEwN0VGRTAxMDAwMjgwMEM2MDMxMUVDMDg0MEZGMDAwMjAwMDQwMDA4MDAwMDA1NworOjIwQzZBMDAwMTExMDExMTBGRkQwMTExMDFGN0UwNDEyM0Y5MjI0OTIzRjkyMDQxMjNGQTIwNDIyM0ZBMjA0NEUwNzQ0Nzg4MEFBCis6MjBDNkMwMDAwNDQwMDQ0MEZGRkUwNDQwMDBGODFGMDAxMDAwMTAwMDFGRkUxMDQwMTA0MDEwNDAyMDQwMjA0MDQwNDA4MDQwNEQKKzoyMEM2RTAwMDEwNDAxMDYwMTA5MEY5NEUxN0Y0MTBBMDFBNDgxMkE4MzNGOEQwNDAxN0ZDMTRBNDE1RjQxNDE0NTQwNDI0MENGRAorOjIwQzcwMDAwMDEwMDAyODAwRDYwMzA5RURGRjQwMjQwMTE5MDEyNTAxRkYwMDIwMDNGRjgyNDQ4MkZFODIwMjgyMDI4MjAxMEI4Cis6MjBDNzIwMDAwMjAwMDEwMDdGRkU0ODA0ODlGODQ4MDgzOUY4MjgwODBCRkUxQzA0MjlGOEM4OTA0ODYwMDg5MDA5MEUwQTA0RjQKKzoyMEM3NDAwMDQwODAyMDQwMjAyMDAwMjA4OTAwNDkwMDUxMDgxNTA0MjUwMjI5MDJDOTAwNTEwODQxMDg0MTA4NDBGODAwMDBENworOjIwQzc2MDAwMDEwMDAxMDAzRkY4MDEwMDFGRjAwMTAwRkZGRTAwMDAxRkYwMTAxMDFGRjAxMDEwMUZGMDEwMTAxMDUwMTAyMDU1Cis6MjBDNzgwMDAyMDAwMjFGQ0ZFMDgyMDEwNTAyMDUwNTA5MDhDRkQwNDEzRkUxMDIwMUMyMEYwMjAxMDIwMTAyMDE3RkUxMDAwRTcKKzoyMEM3QTAwMDA4MDAxRkZDMTAwMDJGRkM0MDAwM0ZGMDAwMTAzRkQwMDA5MDAzMTAwQ0QwNzAzMDFGRDAwMjBBMDIwQTdGRjZGMgorOjIwQzdDMDAwMTAwMDE5RkUxMDIwMjg0MDY4RkNBRTg0MjhBNDI4QTQyOEE0MjhBNDJBQTQyQzIwMjg1MDIwOEMyMTA0MjIwMDRGCis6MjBDN0UwMDAwQzAwNzNERTQyNTI0QTUyNEJEMjRBNTI0QTUyNEJEMjVBMTI2QTlBMTJENDEzNTAyMjEwNDAxMDgwMTAwMDAwNkYKKzoyMEM4MDAwMDQwNDAyM0ZDMjA0MDBCRkM4ODQwNTdGQzUwMDAxM0Y4MjIwODIzRjhFMjA4MjNGODIyMDgyMjA4MjIyODIyMTA4MgorOjIwQzgyMDAwMTQ0MEZGNDAxNDdFN0U4ODQyRDBCQjMwMkEyODNBNEUwNjg0M0ZGODAxMDAzRkZDMDEwMDdGRkUwMTAwMDMwMDc3Cis6MjBDODQwMDAwMDQwMDNGQzc4NDA0OUY4NDg0MDRGRkU3ODAwNDlGODQ5MDg0OUY4NzkwODQ5RjgwMTA4MDEwODAxMjgwMTEwNzIKKzoyMEM4NjAwMDNGRkMyMDAwNUZGMDgwMDA3RkYwMDQxMDNGOTAwNDEwM0Y5MDA0MDg3RkU4MTA4QTFGOEExMDg2MUY4NjEwODJENgorOjIwQzg4MDAwMjA0MDIwNDAyN0ZDMzA0MEFCRjhBMDQwQUZGRTIwMDAyM0Y4MjIwODIzRjgyMjA4MjNGODIyMDgyMjI4MjIxMEFBCis6MjBDOEEwMDAwMDAwMDNGRTIwNDAyMDgwMjFGQzNEMDQyMTI0MjEyNDI1MjQyOTI0MzEyNDIwNTAwMDg4MDMwNjBDMDIwMDAwOTUKKzoyMEM4QzAwMDAwNDA0N0ZDMzA0MDIzRjgwMDQwMDdGRUYwMDAxM0Y4MTIwODEzRjgxMjA4MTNGODE2MDgxQTA4MTIyODAyMTAzNAorOjIwQzhFMDAwMDEwMDAwODAzRkZFMjA4MDIwODAyMDgwM0ZGRTIxNDAyMTQwMjEyMDIyMjAyMjEwNDQxODQ4MEU5MDA0MDAwMEEwCis6MjBDOTAwMDAwMDgwMDA0MDc4NDAxN0ZFMTAwMDEzRjg3QTA4MTIwODEzRjgxMDQwMTI1MDFBNDg2NDQ0MDQ0NDA5NDAwMDgwRkIKKzoyMEM5MjAwMDAyMDAwMTAwN0ZGRTQwMDIxMDIwMTAxMDIyMDg0MjAwM0ZGODAyMDgwNDA4MDQwODA4MDgxMDEwMjA1MDQwMjAyMAorOjIwQzk0MDAwMDAyMDBFMjBGMDIwMTAyNDEwQTRGRUE4MzBCMDM5MjA1NDYwOTQ1MDEwNTAxMDg4MTA4ODExMDQxMjA2MTQwNDQ1Cis6MjBDOTYwMDAwMDAwMTBGMDFGMDAxMDAwMTAwMDEwMDAxMDA4MUZGQzEwNDAxMDQwMTA0MDEwNDAxMDQ0RkZGRTAwMDAwMDAwQTQKKzoyMEM5ODAwMDAwMDAwNzdFMzg0NDIwNDQyMDQ4M0Y1MDI0NDgyNDQ0MjQ0MjI0NDIyNDQyMkY1QUYwNDQwMDQwMDA0MDAwNDBCOAorOjIwQzlBMDAwMDA1MDAwNDhGODQ4MjdGRTIwNDAyMjQ0Nzk0ODIxNTAyMDYwMjBEMDIxNDgzQTQ2QzQ0MDAwNDAwMTQwMDA4MDI0Cis6MjBDOUMwMDAwMTQwMDEzMDAxMTBGRkZFMDEwMDIxMTgxMTIwMDk0MDA1QzAwOTIwMTExODYxMEUwMTA0MDEwMDA1MDAwMjAwOTAKKzoyMEM5RTAwMDAwMDA3RkZDNDEwNDQxMDQ0MTA0NDEwNDQxMDQ0Mjg0NDI0NDQ0MjQ0ODM0NTAxNDYwMDQ3RkZDNDAwNDAwMDBBQworOjIwQ0EwMDAwMDgyMDA0MjAwNDQwRkZGRTA0ODAzRkY4MjQ4ODI0ODgyODg4Mjg3ODMwMDgzRkY4MjAwODIwMDgzRkY4MjAwODA4Cis6MjBDQTIwMDA0MDAwMjdGQzI0NDQwNDQ0ODQ0NDU0NDQ1NDQ0MTQ0NDI0QTQyNDk0RTUxNDI2MDQyNDA0MjQwNDI3RkMyNDA0NTUKKzoyMENBNDAwMDA4NDAwODQwN0U3QzA4ODgwOTEwMDhGQ0ZGMDQwODA0MjhGQzJGMDQyODA0MjlGQzI4MDQ1ODAwOEZGRTAwMDBENworOjIwQ0E2MDAwMDAwMDdGRkM0MDIwNDAzMDQ4MjA0NjQwNDE0MDQwODA0MTQwNDIyMDQ0MzA0ODE4NTAxMDdGRkMwMDAwMDAwMEFBCis6MjBDQTgwMDAxMDAwMTFGODExMDg3RDA4NTUwODU1Rjg1NTA4NTUwODdEMDg1NUY4MTEwODE5MDgxNTA4MUZGRUU0MDAwMDAwNTEKKzoyMENBQTAwMDA0NDAwNDQwMDQ0MDNGRkMyNDQ0MjQ0NDI0NDQyNDQ0M0ZGQzI0NDQyNDQ0MjQ0NDI0NDQzRkZDMjAwNDAwMDA5NQorOjIwQ0FDMDAwMTAwMDIwRkU3QzgwNDQ4NDdDODQ0NEM4N0NBODQ0OTA0NDkwRkNBODBDQTgxNEM0MjQ4NDQ0ODA5NEZFMDgwMDU2Cis6MjBDQUUwMDAxRkZDMTAwNDEwMDQxRkZDMTAwNDEwNDAxNDQ0MTQ0NDI3RkMyMDQ0Mjg0MjI4NDI0ODQyNEZGRTg4MDIwMDAwMDgKKzoyMENCMDAwMDAwMDBGOUZFMDkwMDQ5MDQ0OTg0NDk0ODQ5Mjg3RDEwMDUxODA1MjgzNTI0QzU0NDA1ODQyOTAwMTFGRTAwMDBGRgorOjIwQ0IyMDAwMjAwMDEzRkM4MjAwNEJGODEyMDgxM0Y4NjIwMDIzRkMyMTAwN0ZGRTAzODAwNTQwMDkzMDMxMEVDMTA0MDEwMEI3Cis6MjBDQjQwMDAwMDAwRkY4MDIyN0UyMjQ0M0U0NDIyNDQyMjQ0M0UyODIyMjgyMjkwMjcxMDNBMjhDMjQ2MDI4NDAyMDAwMjAwNzUKKzoyMENCNjAwMEZGMDAyMkZDM0U4ODIyNDgzRTUwMjMyMDNFNTBFMzhDMDIwMEZGRkUwNDIwMDgyMDA0NDAwMzgwMEM2MDcwMUM5MAorOjIwQ0I4MDAwMDgwMDA4RkMyRTIwMjhGQ0ZFQTQwMEE0MTBGQzUyMjA1MkZFNkFBMjQ2QUE0MkZFNDI4MjRFOEE3Mjg0MDAwMDM1Cis6MjBDQkEwMDAxMDAwMTNGMDExNDA3RDVFMTFFNDExNTRGRjQ4MTFDODUxNDg1RDU0NTFEMjU2NjJCMDQwOEMwMDAzRkMwMDAwMUMKKzoyMENCQzAwMDAxMDAwMTAwMDEwMDNGRkMwMTAwMDEwMDAxMDAwMTAwN0ZGRTAyMDAwNjAwMDgyMDEwMTAzRkY4MTAxMDAwMDBFRgorOjIwQ0JFMDAwN0ZGQzQwMDQ0OTI0NDU0NDVGRjQ0MjA0N0ZGQzQ0NDQ0RkJDNzQ5NDQ1ODQ0NDI0NDNFNDQwMDQ3RkZDNDAwNDc2Cis6MjBDQzAwMDAyMjAwRkY3RTIyMTA3NzIwNTU3Qzc3NDQyODU0N0Y1NDQ4NTRGRTU0NDg1NDdFMjg0ODI0N0Y0MjQwODIwMDAwQjIKKzoyMENDMjAwMDEwMDAxMDAwMTFGQ0ZFODQxMDg4MzA4ODM4ODgzNDQ4NTQ1MDUwNTA5MDIwMTAyMDEwNTAxMThFMTYwNDEwMDA2QworOjIwQ0M0MDAwMDA5MEZFOTAyQkZFMjg5MEZDNDBBQzYwQUM5MEFEMDhBRUY2QzQyMEZDMjA4NUY4ODQyMEZDMjA4NUZFMDAwMDM4Cis6MjBDQzYwMDAwMTAwMDIwMDFGRjAxMDEwMUZGMDEwMTAxRkYwMDEwMDAxMUM3REUwMDU0MDA5MjAxMTE4MjEwRUM1MDQwMjAwMzgKKzoyMENDODAwMDAxMDAwMTAwMDI4MDA0NDAwODMwMTAxQzNGRjg0MTAwMDEwMDAxMTAxRkY4MDEwMDAxMDAwMTA0N0ZGRTAwMDA0MworOjIwQ0NBMDAwMDA4MDAwNDAxRkZFMTA0MDkwQTA1MTEwNTIwODE0MDYzQkY4NTA0MDkwNDAyN0Y4MjA0MDIwNDQ0RkZFODAwMEZGCis6MjBDQ0MwMDAwMjAwMTIyMDBBNDA3RkY4MDIwMEZGRkMwNTgwMTg2MEU3OUMwMTAwMUZGMDAxMDA3RkZDMDEwMDA1MDAwMjAwNEUKKzoyMENDRTAwMDAxMDAwMTIwMDExMDAxMTA3RkZFMDEwMDAyODAwMjgwMDI0MDA0NDAwNDIwMDgyMDEwMTAyMDBFQzAwNDAwMDA4QQorOjIwQ0QwMDAwMTExMDBEMTgwOTIwM0ZGQzAxMDAwMjAwRkZGRTBDMjAxODE4MkZGRUMyMTQwMjEwMDQxMDA4MTAxMDUwMjAyMDJDCis6MjBDRDIwMDAwMDIwMDAyMDdFMjAwMjIwNDNGRTI0MjIxNDIyMDgyMjBDMjIxNDQyMTI0MjIyODI0MDgyMDExQzAyMDgwNDAwQTMKKzoyMENENDAwMDIwNDAzMDQwMjA0MDdERjg1MDQ4OTA0OEZFNDgxMUZFNTQ0MDU0QTA1NEEwNTQ5MDVEMTg2MTBFMDIwNDA0MDAxQgorOjIwQ0Q2MDAwMTA0MDEwNDAxNDQwMTdGODE4NDg1MDQ4NTA4ODkwODgxN0ZFMTBBMDI5MjAyNTEwNDIxMDQ0MDg4ODBFMTAwNDNECis6MjBDRDgwMDAwMTAwM0ZGRTIyMDAyRkJDQTRBNDY0QTQyQUJDNzE0MEE3RkMyNEE0MjU1NDI2NDQ0NEE0NDUxNDg2MTQwNDA4MkMKKzoyMENEQTAwMDA4MDAwODdDMDg0NDdGNDQwODQ0MDg0NDA4NDRGRjQ0MTA0NDEyNDQyMTQ0MjdENDc5NDgyMDQwMDA0MDAwNDAwNgorOjIwQ0RDMDAwMDAxMDI0MjAyNDdDN0U2NDI0NTQyNDQ0RkY0QzAwNDAzRTdFMjIwMjIyMDIzRUZBMjIwMjIyMDIzRTBBMjIwNDIwCis6MjBDREUwMDAyMDIwMjAyMDIzRkVGQTQ0MjA2MDYwOTA3MUZFQUIxMEE1MTAyOUZDMjExMDIxRkMyMTEwMjExMDIxRkUyMTAwRjAKKzoyMENFMDAwMDAwODAwMEZDN0M4ODExMTAxM0ZDMjEyNDNEMjQ2NUZDQTUyNDI1MjQyNUZDM0QyNDIyMjQyMjI0MDQxNDA4MDgxMworOjIwQ0UyMDAwMDEwMDExMTAxMTI4MjE0ODAxODAwNjgwMTg0MEVGRkMwODgwMEZGODA4ODAwRkY4MDg4MDA4ODAwRkZDMDgwMEEzCis6MjBDRTQwMDAyMDAwMTNGODEwODhGODg4MEZGRTEwODgxN0Y4Mjg4ODcxMDBBOUZDMjI4NDI0ODQyODg0MjBGQzIwODQyMDAwM0IKKzoyMENFNjAwMDAwODQ3RTQ2MTIyOEZFRkUxMjEwMTIxMDdFN0MxMDEwMjAxMDNFMTA2MkZFQTIxMDIyMTAzRTEwMjIxMDAwMTA4NAorOjIwQ0U4MDAwMDg0MDA4NTAxRjQ4MTE0ODMzRkUyQTQwNjQ2MDk0QTAwODkwMTEwRTI2MDQ0MDAwMjg4ODI0NDQ2NjY2NDIyMjM2Cis6MjBDRUEwMDAyMjEwMjIxMDIzRDgyQzU0QjQ5MEFBRkVBNTEwQTIyODIyNDgyNDg0MjkwNjUyNDg0RDI0NDVCNjg4OTIwMDAwQzcKKzoyMENFQzAwMDAxMDAwMTAwM0ZGODIxMDgyMTA4M0ZGODIxMDgyMTA4MjEwOEZGRkUyMDA4MjAwODIwMDgyMDA4MjAyODIwMTAwMAorOjIwQ0VFMDAwMjA4MDEwODA4M0YwNDg5MDExMTA2MTEyMjIxMjJEMEUwMTAwRkZGRTAzODAwNTQwMDkzMDMxMUNDMTA4MDEwMDlFCis6MjBDRjAwMDAxMDAwRkYxQzUyRTg3NkE4MjRBODdFQTgyNEE4N0VBODI0QThGRkE4MjhBODZBQTRBNTI0MzEzQzIyMjYwNDA0RDMKKzoyMENGMjAwMDIwODAyRkZFMjJBODIzQjhGOTEwMjExMDI3RkMyMTEwMjdGQzIxMTAzRkZFRTM1ODQ1MjAwOTU4MTM4RTAxMDRCOQorOjIwQ0Y0MDAwMTA0MDE3RkUxMDAwMTNCQ0ZBQTQxM0JDMTg5MDEzRkMzMDkwRDNGQzEwOTAxN0ZFMTEyNDEzMTg1NThFMjEwNEJECis6MjBDRjYwMDAwMDgwMDA0MEZGRkU5NEE0OTdCQzkxMTA5N0ZDOTExMDk3RkM5MTEwRkZGRTkxNDAwMzI0MDU1ODBCOEUwMTA0NzAKKzoyMENGODAwMDQwNDAyMDQwMzA0MDIwNDAwMDQwMDA3Q0UwNDAyMDQwMjA0MDIwNDAyMDQwMjA0MDI4NDAzMDQwMjdGRTAwMDAyOAorOjIwQ0ZBMDAwMjA0MDIwNDAyMUZFM0MyMDQ0Mjg0ODEyODA2QTIxODYyM0ZDMjBBMDIwQTAyMTIwMjkyMjMyMjIyNDFFMDAwMDFFCis6MjBDRkMwMDAxMDQwMTA1MDEwNDhGQzQwMTNGRTEwNjAxNDYwMThBMDMwQTBEMEEwMTEyMDExMjAxMjIyMTQyMjU4MUUyMDAwQkUKKzoyMENGRTAwMDExMDAxMTAwMjBGQzIzODg0ODUwRjAyMDEwNTQyMThDNDdGRUY5MjAwMTIwMDEyMDFBMjJFMjIyMDQxRTAwMDA4RAorOjIwRDAwMDAwMDg0MDA4NDA3RUZDMDk0MDAyMDA3RkZDMDgwMDFGRjAyODEwQ0ZGMDAwMDAwOTAwMjg4NDI4MTI0N0YyMDAwMDBBCis6MjBEMDIwMDAxMDgwMTA4MEZGRjgxMDkwMTI5MDE5OTBGMEQwNTE2ODEyMkE1NDBBMjgwNjAxMTAyODg4NjRDQ0M0NDQ4MDAwMzQKKzoyMEQwNDAwMDAwMDAwMUY4M0YwMDAxMDAwMTAwMDEwMDAxMDBGRkZFMDEwMDAxMDAwMTAwMDEwMDAxMDAzRkZDMDAwMDAwMDA1NworOjIwRDA2MDAwMTAwMDE4MDgxN0ZDMzAwMDIwMDA2MDAwQTAwMDIwMDAyMDAwMjAwMDIwMDAyMDA0MkZGRTIwMDAyMDAwMDAwMDBDCis6MjBEMDgwMDAwMTAwMDE4MDAxMDAwMTAwMDEwMDAxMDAwMjgwMDI4MDA0ODAwNDQwMDg2MDA4MzAxMDE4MjAwRTQwMDQwMDAwMDQKKzoyMEQwQTAwMDNGRjgwMTA4MTEwODExMDgxMjA4MjIwODA0MDgwOEYwMTIyMDAxMDgwOEM0Mjg4NjI4MTQyODEwNDdGMDAwMDA1NgorOjIwRDBDMDAwMDgwMDA4N0NGRjI0MDgyNDA4QTQ3RUE0MDkyNDA4MjRGRjI0MDkyNDA5MjQwRDI0MEE0NDA4NDQwODk0MDkwODU5Cis6MjBEMEUwMDAwODAwMEMzQzFCQzAxMDQwMzA0MDMwNDA1MDQwOUZGRTEwNDAxMDQwMTA0MDEwNDAxMDQwMTdGRTEwMDAwMDAwRjMKKzoyMEQxMDAwMDQwNDAyMDQwMTg0MDEwNDAwMDQwMDA0MEYwNDAxMEEwMTBBMDEwQTAxMDkwMTExMDE1MDgxQTA4MTIwNjA0MDRBNworOjIwRDEyMDAwMDAwMDNGRkMwMTA0MDEwNDAxMDQwOTA0MDkwNDE5MDQzMTA0MDIwNDAyMDQwNDA0MDgwNDMwMzhDMDEwMDAwMEUxCis6MjBEMTQwMDAxMDAwMTgwRTExRjBGQzIwMjQyMDI0MjAyNDIwMjdGRTQ4MjA0ODIwMzAyMDEwMjAyODIwNDVGRTg0MDAwMDAwMkMKKzoyMEQxNjAwMDA4MDAwODAwMTFGQzEyMjQyNDI0N0QyNDA5MjQxMTI0MjEyNDdBNDQwMjQ0MEM0NEYwODQ0MTA0MDIyODA0MTA4MQorOjIwRDE4MDAwMTAwMDEzRjgxMTA4MTExMEZEMTAxMTIwMTUzQzE5MDQzMTA0RDEwNDEyMDQxMjA0MTIwNDE0MDQ1ODI4MjAxMDdBCis6MjBEMUEwMDAxMDAwMUJGODExMDgyMTA4MzExMDYxMTBBMTNDMjExNDIxMDQyMjA0MjIwNDIyMDQyNDA4MjQ0ODI4MjgyMDEwOTcKKzoyMEQxQzAwMDAwMDAxRkYwMTAxMDEwMTAxMDEwMTAxMDFGRjAxMDEwMTAxMDEwMTAxMDEwMTAxMDFGRjAxMDEwMDAwMDAwMDBFMgorOjIwRDFFMDAwMDA0MDAwNTAwMDQ4N0ZGRTA4NDAwODUwMDg1ODA4NTA3RjMwMDgyMDA4NjAxMEE0MTMxNDJDMEM0MDA0MDAwMEVDCis6MjBEMjAwMDAwNDQwMDQ0MEZGRkUwNDQwN0ZGQzA4MjAwRkUwMDgyMDA4MjAwRkUwMDgyMDA4MjBGRkZFMDAyMDAwMjAwMDIwQzcKKzoyMEQyMjAwMDA0NDBGRkZFMDY0MDA1NDAzRkZFNDQyNDQ5MTAxMjhDMjQ0ODA4MzAxRkVFNjgyNDA4MjAwODIwMEZFMDA4MjBFMgorOjIwRDI0MDAwMDQ0MDA0NDA3RkZFMDQ0MDA0NDA3RkZFNDEwNDgxMDAzRkZDMDE4MDAzNDAwNTIwMDkxODMxMEVDMTA0MDEwMEI0Cis6MjBEMjYwMDAwMDEwRkUxMDAwMTA3QzEwNDRGRTdDOTIwMDkyRkU5MkFBRkU5MjkyRkUxMDkyMTQ5MjEyOTIxRTk2RTIwMDAwMzYKKzoyMEQyODAwMDIwNDAyMDIwMjNGRTIyMDRBQzkwQjEwOEEyNDRBNEEwMjExMDIyMEMzNUZFMjkwODQ1MDg0MUY4ODEwODAwMDBCNgorOjIwRDJBMDAwNDA4MDIwNDAyN0ZFMDQwNDgxMjA1MjE4MTI4ODI0QzAyMTIwMjIxOENGRjY0MjEwNDIxMDQyMTA0M0YwNDIxMERECis6MjBEMkMwMDAwMjAwMDEwMDdGRkU0NDQ0OEQzMDE5MTgyMjkwMDQ0MDA4MzAzMDBFQ0ZFNDA4MjAwODIwMDgyMDBGRTAwODIwQUEKKzoyMEQyRTAwMDEwMjAxMDIwMjAyODIwMjQ0RkZFRjEyMDExMjAyMTI0NDdBNEYxMTgwMTEwMDIzMDFBNEFFNDhBMDgwNjAwMDI1NQorOjIwRDMwMDAwMDAwMDdGRkU0MDA0ODAwODA3RTAwNDIwMDQyMDA0MjAwNDIwMDQyMDA4MjAwODIyMTAyMjIwMUVDMDAwMDAwMEE3Cis6MjBEMzIwMDAwMDAwMTFGQzEwMDgxMDMwRkRGRTEwNjQxNEEwMUIyMDEwNjAzM0ZFRDA2MDEwQjAxMEE4MTEyRTU2MjQyMDIwRTgKKzoyMEQzNDAwMDFGRjAwMDIwMDE0MDdGRkUwMzA0MEQwODMxMDAwMzAwMDEwMEZGRkUwMzgwMDU0MDE5MzBFMTBFMDEwNDAxMDA4QworOjIwRDM2MDAwMDEwMDAxMDAwMTAwM0ZGQzIxMDQyMjg0MjQ2NDI5MjQzMTA0MjI4NDIyNDQyNDM0MjgyNDIwMDQyMDE0MjAwODZBCis6MjBEMzgwMDAwNDQwMDQ0MEZGRkUwNDQwMTAwMDEwMDBGRjdDMTI0NDEyNDQyMjQ0MzQ0NDBDNDQxMjdDMjE0NDQxODA4MTAwMUEKKzoyMEQzQTAwMDIwMDAyM0ZFMjA0MEZCRkVBQTQ0QUQ1MEE4ODhGRkZFQTA0MEEzRkMzMkE0MkFBNDNFQTRDQUE0MDJBQzAwMDA5QQorOjIwRDNDMDAwMTdGODE4NDAxN0ZFMjg0NDI3Nzg2MDQwQTczODIwMDAyRkZFMjA4MDI3RkMyNEE0MjRBNDI0QTQyNDk0MjQwOEZCCis6MjBEM0UwMDAwM0ZDRjgyMDBGRkUxNDIyMTEyODEwQTQxODIwMTdGRTMwNDBEM0ZDMTJBNDEyQTQxMkE0NTJBNDIyQUMwMDAwNzQKKzoyMEQ0MDAwMDEwMDAxMDAwMTgwMDEwN0VGRTQyMjI0MjIyNDIyMjQyMjI0MjI0NDIxNDQyMDg0MjE0N0UyMzQyNDI0MjgwMDA3NQorOjIwRDQyMDAwM0ZGQzIwMDAyRkY4MjAwMDNGRkUyNTA4MjQ5MDQ0NjA0NjFFODQyODdGRkUwMDIwMDQyMDA0MjAwMEEwMDA0MEIzCis6MjBENDQwMDAwNzIwN0MyMDAxMjA0OUEwMkEyMDAwMjA3RkEwMDIyMDA0MjAwN0EwN0MyMDA0MjIwNDIyMTQyMjA4MUUwMDAwNDUKKzoyMEQ0NjAwMDIwNDAxMDQwMTA0MDgwODA0RkZFNDA4ODA5MDgxMTEwMTIxMDIxQTBFMDYwMjA1MDIwODgyMzBDMkMwNDAwMDBDQgorOjIwRDQ4MDAwMEMwMDA2MDAwMjAwMDEwMDAzMDAwMjgwMDI4MDA0NDAwNDIwMDgyMDA4MTAxMDA4MjAwRTQwMDQ4MDAwMDAwMEJFCis6MjBENEEwMDAyMDAwMTNGQzEyMDBGQkY4MEEwMDEzRjgxMkNDMzZCMDVBQ0U5Njg4MTNGRTE0MDgxNDg4MTg4ODEwMjgxMDEwNTgKKzoyMEQ0QzAwMDEwNDAxMDQwMTA4MEZFRkUyMDg0MjkyMDQ4MjBGRTIwMDgyMDA4NTAwRTUwRjg4ODA4ODgwOTA0MDkwNjBBMDQ5NQorOjIwRDRFMDAwMDAwMDdCRjg0ODAwNTAwMDUwMDA2N0ZDNTEyMDQ5MjA0OTIwNDkyMDY5MjA1MjIyNDIyMjQ0MjI0ODFFNDAwMDU1Cis6MjBENTAwMDAwNDQwMDQ0MDdGRkUwNDQwMDExMDI5ODgyODI4NDdFMDEwMDAwQzE0MjgwQUEyQUFBNUE0QTRBNDNEMUMwMDAwRjEKKzoyMEQ1MjAwMDAwMjBGOTI0MjEyNDIxMjQyMUZDMjAwMEZCRkUyMDQwMjNGRTIyNTIyQTUyMzI1MkMyNTIwMjUyMDI0QTAyMDQzRgorOjIwRDU0MDAwMjEwODIwODgzQzUwMjFGQzQxMDQ3RDA0QTEwNDIxRkNGQzUwMjA1MDIwNTAyNDkyMjg5MjMxMTIyNjBFMDAwMEI2Cis6MjBENTYwMDAxMDAwMDlGQzA4MDQyMDA0MkZGNDIxMDQyMTA0MkZGNDIxMDQyMTA0MjEwNDNGRkMyMDA0MjAwNDIwMTQyMDA4ODgKKzoyMEQ1ODAwMDQ0MDAyMkZDMjAwNDA0MDQ4NDA0NTdGNDU0ODQyNDg0MjdGNDQ0ODRDNDg0NDdGNDQ0MDQ0NDA0NDQxNDQ0MDgxMAorOjIwRDVBMDAwMDQyMDA0MjA3RkZFMDQyMDA1MjAwMjAwRkZGRTA0MDAwODAwMUZGODI4MDg0ODA4ODgwODBGRjgwODA4MDAwMDE0Cis6MjBENUMwMDA3RUZDMDIwNDAyMDQzRUZDMjA4MDIwODAzRUZDMDIwNDIyNDQxMjI0MEExNDEyMUNFMkU0NDI0NDE0MTQwODA4OUYKKzoyMEQ1RTAwMDI1MTAyNTE4MkZEMEY1MTAyNTFFMkZGNDIwMjQzN0U0NjQ5NEE3OTQyNDg4Mjc4ODI0OTQyNEE2QTVDNDQ0ODBCMworOjIwRDYwMDAwNDAwMDI3RkUyMEEwMDhBMDg4QTA1N0ZDNTRBNDE0QTQyNEE0MjRBNEU1MUMyNjA0MjQwNDI0MDQyN0ZDMjQwNEJDCis6MjBENjIwMDAwNDQwMDQ0MEZGRkUwNDQwMDQ0MDc4MjA0QkZFNTA4ODYwNTA1M0ZFNEEwMDZBMDA1MjAwNDQwMDQ0MDA0ODAwNEQKKzoyMEQ2NDAwMDAwMDA3QkY4NEE0ODRBNDg3QkY4NEE0ODRBNDg0QkY4NzgwMDQ4QTg0QTk0NEE5MjRBODI0Qzg4QTg3ODkwMDBFNworOjIwRDY2MDAwMjAwMDIxRkMzRDI0NDUyNDQ5RkNGRDI0NTUyNDU1RkM3QzAwNTQyMDdDOTQwMjkyMUE4MkU0ODQwMDdDMDAwMDVGCis6MjBENjgwMDAwMjAwMDEwMDdGRkU0NDQyMUZGODA0NDAxRkY4MDQ0MDdGRkUwNDIwMDkxODNGRkVDMTA0MDEwMDdGRkMwMDAwOEUKKzoyMEQ2QTAwMDAxMDA3RkZFNDQ0NEJGRjAwNDQwM0ZGODA0NDA3RkZDMDgzMDNGRUVDOTI0MDkyMDA5MjAwMkMwMEMzODMwMTA5MQorOjIwRDZDMDAwMDAwMDAwMDA3RkZDMDAwMDAwMDAwMDAwMDAwMDNGRjgwMDAwMDAwMDAwMDAwMDAwMDAwMDdGRkUwMDAwMDAwMDFCCis6MjBENkUwMDAwMjAwMDQ0MDA4MjAxRkYwMEEyMDA0MDQ3RkZFMDgyMDEwMTgyRkVFQzAwNDBGRTAwMDAwMDAwMDNGRjgwMDAwQTcKKzoyMEQ3MDAwMDAxMDAwMTAwMDI4MDA0NjAwOTE4MzEwRUMxMjQxMTMwMEQyMDA5NDBGRkZFMDEwMDAxMDAwMTAwMDEwMDAxMDAyMworOjIwRDcyMDAwMjQ0MDI0NjBGRjQwMjQ0MDI0N0VGRjg0MDBDNDdGNDg0MjI4N0UyODQyMTA3RTEwNDIyODQyMjg0QTQ2NDQ4NDkyCis6MjBENzQwMDAwRkUwMDI0MDAxODAxRTc4MDAwMDdDRkMyNDQ4MTkzMDY1NENGRkZFMDM4MDA1NDAxOTMwNjEwRTAxMDQwMTAwMjAKKzoyMEQ3NjAwMDAzRjAwMTEwRjBFMDkzMTg5N0JDOTBBNDk3MTg5MzI0OUNDMkZGRkU5MEMwMDE2MDAyNTgwNDRFMDg0NDAwNDBGOQorOjIwRDc4MDAwMDEwMDAxMDA3RkZDMDEwMDE5MjAwRDMwMDk0MDdGRkUxMTAwMTExMDEwQjgxMEMwMTA2MDEyMzgxQzEwMTAwMDBGCis6MjBEN0EwMDAxMDAwMTdGQzEyNDgxMTMwRkNBMDEwNjAxNEQ4MUI0RTNGRkNEMjQ4MTI0ODEzRjgxMDQwMTA0NDU3RkUyMDAyNzUKKzoyMEQ3QzAwMDAwMDBGOUZDMDhBODQ4NTA0ODIwNDhEODRCMjY3QzIwMDVGQzE1MjQyNUZDQzQyMDA0MjQxNUZFMDgwMjAwMDBGMworOjIwRDdFMDAwMTAwMDEwMDAxMUZDMTAwNEZFMDQxMDA0MTQwNDE4RkMzMDA0RDAwNDEwMDQxMDA0MTFGQzUwMDAyMDAwMDAwMEY5Cis6MjBEODAwMDAyMDIwMjBBMDIzMkUyMjIyRkJBRTJBMjIyQkZFMkEyMjQ4MjA0QkZDMzEwODI4OTA0QzYwNDg5ODgzMEUwQzA0M0MKKzoyMEQ4MjAwMDAwMDA3RUZDMTAyMDdFRkMxMDIwMTAyMEZFRkUwMTEwMDA5MDI0QTAyNDQ0MjU4MjQ2MTIxQzEwNjNGMDAwMDAxRAorOjIwRDg0MDAwMDQwMDA0MDAwN0YwMDgyMDEwNDAzRkYwNTExMDExMTAxMTEwMUZGMDEwMDAxMDA0MTAwNDEwMDQwRkZDMDAwMDE5Cis6MjBEODYwMDA0MDAwMjdGQzIwNDQwMjQ0OTI4NDU0ODQ1MTE0MTYwODIwNDAyMjQwRTI3QzIyNDAyMjQwMjI0MDJGRkUyMDAwOTcKKzoyMEQ4ODAwMDAxMDAwMTAwN0ZGQzAzODAwNTYwMTkxMDYxMEMwODIwRkVGRTA4MjAxQzcwMkE2OEM4QTgwQjI2MDgyMDA4MjAzMgorOjIwRDhBMDAwMTIxMDE5MTgxMTIwMjdGQzM2NTQ2NTVDQTU2NDI3RkMyNDA0MjNGODIyMDgyM0Y4MjIwODIyMDgyM0Y4MjIwODI5Cis6MjBEOEMwMDAwNDIwMDQyMDdGRkUwNDIwMjA0MDEwNTAwQTQ4NEI0NjJBNDQxNDQ4MTA0OEYwNTAyMDIwMjBDMDIzMDAyQzAwRUIKKzoyMEQ4RTAwMDAwMjBGQzIwMjAyMDIwMjAyMTI4MjEyNDNBMjI2QTIwNkMyNEE4MjQyODA4MjgxMDM4MjAyOEMwMjMwMDBDMDBDNQorOjIwRDkwMDAwMDAyMDE4MjAwNjQwMDE4MDAyNjAwQzMwMzExMDAxMDA3RkZFMDEwMDA5MjAwOTEwMTEwODIxMDgwNTAwMDIwMEZGCis6MjBEOTIwMDAyMTA0MTIwNDBDMjQxQTI0MzFBNDQ1MjQwNDI0N0ZBNDA0MjQyNjI0MzUyNDY0QTQ4NDg0MTQwNDA4MTQwMDA4OUUKKzoyMEQ5NDAwMDIwNDAxMDQwMTA0MDAxNTA0MTQ4MkE0NDBBNDIxNDQwMTA0NDIwNDRFMDA4MjAxMDIwMjAyMEMwMjMwMDJDMDBBMAorOjIwRDk2MDAwMTAyMDEwMjAyMDIwMjUyODQ1QTRGOTIyMTIyMjI0MjA0MDI0RkMyODAwMTAwQzIwRjA0MDQxODAwNjAwMTgwMDZCCis6MjBEOTgwMDAxMDgwMUJGQzEyOTQyMjY0MzI5NDYyMDRBM0ZDMjQwODI2MDYyQkZDMjMxMDI0QTAyODQwMjFCMDJFMEUwMDAwRkUKKzoyMEQ5QTAwMDAwNDAwMDQwRjBBMDkxMTA5MjA4OTVGNjk4NDA5N0ZDOTA0MEYwNDA5M0Y4ODIwODAyMDgwM0Y4MDIwODAwMDAwMgorOjIwRDlDMDAwMTA0MDEwNDAzRTQ0MjRGRTdFODg4MzQ4M0U0ODAyMzAwMjMwM0VDRTAzMDQwMDAwNDg4ODQ0NDRDNjY2ODIyMjBECis6MjBEOUUwMDAyMDQwM0Y3RTI4OTA0NTA4ODgwMDBCRkU0ODIwNDlGQzQ5MjQ0OTI0NDkyNDQ5MjQxMTM0MTEyODIwMjA0MDIwRjUKKzoyMERBMDAwMDAwMDAwN0ZFNzg5MDQ4OTA0ODkwNEJGQzdBOTQ0QTk0NEE5NDRBOTQ3QjFDNEEwNDAyMDQwMjA0MDNGQzAyMDQ2NAorOjIwREEyMDAwMDAwMEZCQkMyMkE0MjJBNDIyQTQyMkE0RkZGRTIyQTQyMkE0MjJBNDI0QTQzQ0E0QzZDNDA5NTQxMDg4MDAwMEExCis6MjBEQTQwMDAwNDIwMDQyMDdGRkUwNDIwMDUyMDAxMDAwMUZDMDEwMDAxMDAzRkY4MjAwODIwMDgyMDA4M0ZGODIwMDgwMDAwQUEKKzoyMERBNjAwMDA4MDAwODA4MDgxMDdGMjAwOEMwMUMwNDFBMDgyQTEwMjg2MDQ5ODI4ODA0MDgwODA4MTAwODYwMEI4MDA4MDA5MQorOjIwREE4MDAwMDEwMDAxMDAwMTAwMDEwMDAxMDAyMTA0MjEwNDIxMDQyMTA0MjEwNDIxMDQyMTA0MjEwNDdGRkMyMDA0MDAwMEJBCis6MjBEQUEwMDAwMDAyM0I4MjJBOTIyQTkyMkE5MjJBOTJGRkYyMkE5MjJBOTIyQTkyMkE5MjRBOTI0QTgyQkE4Mjk1OEUwMDA0Q0IKKzoyMERBQzAwMDEwNDAxMDIwMTNGQzEyMDQxN0ZDNUEwMDUzREM1MjQ0OTM0NDEyRDQyQTRDMjRENDI1NDQ0NDQ0ODk1NDEwODhERQorOjIwREFFMDAwMjAwODEwMEMxMDEwRkUyMDA0NDgwODhDMTIxMDM0MjA1ODQwOTQ4NDEzMDYxMjBDMTAzMDEwQzAxNzAwMTAwMDMwCis6MjBEQjAwMDAyMDAwMTNGQzEwMDQ0MDA0NDEwNDQxMDQ0MTA0NDEwNDQyODQ0MjQ0NDQyNDU4MjQ0MDA0NDAwNDQwMTQ0MDA4MTYKKzoyMERCMjAwMDAwODBGODgwODg4MDk3RkM5MDgwQTQ4ODkyOTA4QUEwOEZGRTg4ODBBOTQwOTEyMDgyMTA4NDA4OTgwNjgwMDA1RgorOjIwREI0MDAwMTA0MDE3RkUxMDAwRkJGQzEyMDQxNkY0MUE5NDEzRkMzMDAwRDFGODExMDgxMUY4MTEwODExRjg1MDAwMjdGRUNBCis6MjBEQjYwMDAwMDQwN0NGQzQ1MDg1N0ZFNTU0NDU1OTI1NTdDNTUwMDU1N0M1NTAwNTU3QzEyMDAyMjdDNEE0NDg0N0MwNDQ0MjgKKzoyMERCODAwMDc5MDg0ODkwNEZGRTQ4NDA3QkZDNDg0MDRCRkU0QTQ4Nzk1MDRGRkU0ODAwNEJGQzRBMDQ0QTA0QUJGQzkwMDAwNQorOjIwREJBMDAwMDgyMDA0NDA3RkZDMDEwMDFGRjAwMTAwN0ZGQzExMTAwOTIwRkZGRTAwMDAxRkYwMTAxMDEwMTAxRkYwMTAxMDJECis6MjBEQkMwMDAyMDAwMTA0MDEwNDAwMDQwODA0MDU0NDQ1NDQ0MTQ0NDI0NDQyNDQ0RTQ0NDI0NDQyNDQ0MjdGQzI0MDQwMDAwRUEKKzoyMERCRTAwMDAxMDAwMDgwM0ZGQzIwMDQzRkZDMjAwMDJGN0MyMTA0MjkyNDI1MUMyMzE0MjUyNDU5NDQ0MTA0ODUxNDAyMDg4NworOjIwREMwMDAwMjEwODMwOTAyN0ZFNDA0MDRCRjhGODQwMTdGRTIyNDg0MTUwRjdGRTAwMDAwM0Y4MUEwOEUyMDgwM0Y4MDIwOEVBCis6MjBEQzIwMDAyMDgwMjA0MDI3RkUyMTA4RkM5MDIzRkMyMjU0MjI4QzIzRjQyMjk0M0E5NEUyRjQ0Mjk0MDIwNDAyMTQwMjA4NUEKKzoyMERDNDAwMDA5MDAwRDgwMDkwNDExRkUxMjQwMzQ0MDVCRkM5MDQ0MTA0NDEwNDQxMDg0MTA4NDExMDQxMTA0MTIxNDE0MDhFNQorOjIwREM2MDAwMDEwMDAwODA3RkZDMDQyMDAyNDAzRkY4MjI0ODI0MjgzRkU4MjQ0ODI0NDgyN0M4MjQ0ODI0MDgyMDI4MjAxMDU3Cis6MjBEQzgwMDAxMTEwMDkyMDdGRkU0MDA0MEZFMDA4MjAwRkUwMDAwMDFGRjAxMTEwMTExMDExMTAxMjkwMDQ2MDE4MUM2MDA4NUYKKzoyMERDQTAwMDAwNDAwMDQwMDA4MDdCRkM0QTA0NEEwNDRBRjQ3QTk0NEE5NDRBOTQ0QTk0NEFGNDdBMDQwMjA0MDIxNDAyMDg4OQorOjIwRENDMDAwMDAwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDFGODAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDQ3RkZFMDAwMEJFCis6MjBEQ0UwMDAwMTAwMjExMDExMTgwRDIwMDk0MDNGRkMyMDA0MjdFNDI0MjQyNDI0MjQyNDI3RTQyNDI0MjQwNDIwMTQyMDA4M0EKKzoyMEREMDAwMDExMTAwOTE4MDUyMDdGRkU0MDA0OEZFMDA4MjAwRkUwMDEwMEZGRkUwNjg4MEM1MDM0MzBDNTBFMEUwNDA0MDAyMAorOjIwREQyMDAwMTAyMDEwMjAxMTI0RkNBNDEwQTgzOUZDMzUwNDU1RkM1MTA0OTEwNDExRkMxMTA0MTEwNDExMDQxMTE0MTEwOEMzCis6MjBERDQwMDAxMDIwMTIyNDExMjZGREFDMTBBODExRkUxNTAyMTkwMjMxRkVEMTAyMTEwMjExRkUxMTAyMTEwMjUxMEEyMTA0QkEKKzoyMERENjAwMDBFMjA3OTIyMDhBNDA4QTg3REZDMTkwNDFEMDQyQkZDMjkwNDQ5MDQ0OUZDODkwNDA5MDQwOTA0MDkxNDA5MDgwQworOjIwREQ4MDAwMTA4MDEwODAxN0ZDMTQ4ODE4NTA1MEU0NTMzNDVDMEU5N0ZDMTEyMDI5MjAyNTIwNDIyMjQyMjI4NDFFMDgwMDYzCis6MjBEREEwMDAwNDQwMDQ0MEZGRkUwNDQwMTAwMDFGRjgxMDA4MjAwODQ0MDgwMjA4MDE4ODAxMDgwMDA4MDAwODAwNTAwMDIwQ0IKKzoyMEREQzAwMDA4MDAwODAwMEZGQzEwMDQxMDA0MjAwNDQ0MDQ4MjA0MDEwNDAxODQwMTA0MDAwNDAwMDQwMDQ4MDAyODAwMTBGNworOjIwRERFMDAwMTAwMDA4RkM3RjI0MjIyNDE0MjRGRjQ0MDA5NDAwMDgzRTAwMjJGQzIyODQzRTg0MjI4NDIyODQzRUZDMjI4NDFGCis6MjBERTAwMDAwMTAwMDEwMDAxMjAwOTEwMEQwQzA5MDgxMTAwMjEwODQxMEMwMTE4MDAzMDAwNjAwMTgwMEUwMDcwMDAwMDAwNkQKKzoyMERFMjAwMDAwNDAwNDQ4RkI0Qzg5NTA4QkZDOEEwNDhBMDQ4QkZDOEEwNEZBMDQ4QkZDOEEwNDAyMDQwMjA0MDIxNDAyMDgzRgorOjIwREU0MDAwMDAwMDdGN0UxMTQ0MTE0ODExNDgyMTUwMjU0ODQyNDRCRjQyMjE0MjIxNDIyMTVBM0Y0NDIxNDAwMDQwMDA0MEI0Cis6MjBERTYwMDAxMDAwMTFGQzIwNDQyMDQ0NDg4NEYwODQxMTE0MjIwODQxRkNGOTA0MDEwNDAxMDQxOTA0RTFGQzAxMDQwMDAwRUIKKzoyMERFODAwMDAyMDA3RkZFMDQ4MDA4NjAzMTE4Q0ZFNjAxMzBGRkZFMDMwMDBGRjAzODEwQ0ZGMDA4MTAwODEwMEZGMDA4MTA5QgorOjIwREVBMDAwMDAyMDdDMjA0NDUwNDQ4ODU1MDY1NjA0NTRGODU0MDA1NUZFNTQyMDU0QTgxMEE0MjkyNjQ2MjQ4NEEwMDA0MDVECis6MjBERUMwMDAxMDQwMTAzMDEwMjAxMUZFN0QwNDU2ODg1NDgwNTQ4ODdDQjA1NEMwMTA4MDE0ODQxRTg0RTQ4NDAwNzgwMDAwN0EKKzoyMERFRTAwMDAwRjg3RjAwMDEwMDAxMDAwMTAwRkZGRTAxMDAwMTAwM0ZGODIwMDgyMDA4MjAwODIwMDgzRkY4MjAwODAwMDA3MworOjIwREYwMDAwMDEwMDAyODAwNDQwMDgzMDNGRUVDMTA0MDEwMDdGRkMwMTAwMDEwMDFGRjAxMDEwMTAxMDEwMTAxRkYwMTAxMEY0Cis6MjBERjIwMDAwODQwMDg0MDdFNDAwODQwMDg3RUZGQzQyNDg0MjQ0OEE2MjhBNTEwQTUxMDI0MjgyNDI4NDQ0NDU0ODY4OTA0MkYKKzoyMERGNDAwMDI3RkMyMTEwMjFGMEY5MTAyMUYwMjkxQzM3RjA2MDEwQUZCRTI0QTIyMzE0MjEwODIyOTgyNDY2QTk4NDQwMDAyMgorOjIwREY2MDAwMDgwODEwMDgzRjA4MjEwODNGRkUyMTA4M0YwODIxNDgyMTI4N0YyODA1MjgwOTA4MTEwODIxMDg0NTI4MDIxMDA0Cis6MjBERjgwMDAyMDAwMjdGRTIxNDgzMTI4QTk5OEE5NEVBN0Y4MjAwODJGQkUyMDgyMjUyNDIyMTQyNTA4Mjg5NjIwNjQyMDAwREUKKzoyMERGQTAwMDIwNDAxMDQwMTI0MDBBN0M4QTQwNTI0MDVGRkUxMDQwMjI0NEUyNDQyNDQ4Mjg1MDIwMjAyMEMwMjMwMDJDMDBGMQorOjIwREZDMDAwMjA0MDEwNDAxMDQwRkM0MDA0NDAwODQwMEJGQzEwNDAzODQwRDQ0MDEwNDAxMDQwMTA0MDEwNDAxN0ZFMTAwMDMxCis6MjBERkUwMDA0MDAwMjFGMDMxMTAyMTEwMDExMDAxMTBFMjBFMjVGODIxMDgyMTA4MjA5MDIwOTAyODYwMzA5MDIzMEUwQzA0RjQKKzoyMEUwMDAwMDAwMjA3QzIwMTAyMDExRkMxMTI0MjEyNDNERkM2NTI0QTUyNDI1MjQyNUZDMjUyNDNDMjAyNDIwMjAyMDAwMjA0RgorOjIwRTAyMDAwMDEwMDAxMDAzRkY4MjEwODIxMDgyMTA4M0ZGODIxMDgyMTA4MjEwODNGRjgyMTA4MDEwMDAxMDAwMTAwMDEwMDE2Cis6MjBFMDQwMDAwMDIwMDAyMEZCRkU4QTIyOEEyMjhCRkU4QTIyOEEyMjhBMjJGQkZFOEEyMjAwMjAwMDIwMDAyMDAwMjAwMDIwNUQKKzoyMEUwNjAwMDA4NDAwQzQwMTg0MDE3RkMzNDQ0MzQ0NDU3RkM5NDQ0MTQ0NDE3RkMxNDQ0MTQ0MDEwNDAxMDQwMTA0MDAwMDA3RgorOjIwRTA4MDAwMDIwMDA0MDAwRkYwMDgxMDBGRjAwODE0MEZGNjA4MTQwODE4N0ZGRTAwNzAwMTkwMDYxMDE4MTA2MDUwMDAyMDdCCis6MjBFMEEwMDA0MDAwMjdGRTI0MDQwMTIwODExODU2MDg1MDQwMTA0MDI3RkMyMDQwQzBFMDQxNTg0NjRFNTg0NDQwNDA0MDQwRUYKKzoyMEUwQzAwMDIwMDAzMUZDMjEwMDIxMDBGREY4MjkwMDI5RkU0OUEwNEFBNDMyQTgxMjkwMkE5MDJBODg0NEFFODRDNDA4ODBFQgorOjIwRTBFMDAwMDAyMDEwMjAxMDIwMjFGQzQ1MjRGOTI0MDlGQzExMjQyMTI0N0RGQzAwMjAxQzIwRTAyMDAwMjAwMDIwMDAyMDQ5Cis6MjBFMTAwMDAyMDIwMTAyMDEwMjBGREZDMDUyNDA5MjQxMUZDMzkyNDU1MjQ5NUZDMTEyNDEwMjAxMDIwMTAyMDEwMjAxMDIwNzcKKzoyMEUxMjAwMDIwNDAxMDQwMTA0MDg3RkU0QzQ0NTQ0ODEwQzAxMEMwMjBDMDIwQzBFMTQwMjE0MjIyNDIyNDQyMzgzRTAwMDAwQQorOjIwRTE0MDAwMDIwMDAxMDA3RkZFNDEwNDgxMDAxRkYwMTExMDExMTAxRkYwMTExMDExMTAxRkYwMTExMDAxMDAwMTAwMDEwMEE0Cis6MjBFMTYwMDAyMDQwMjAyMDIxRkVGQTIyMkEyNDI5RkMyOTI0NDkyNDQ5RkMyOTI0MTEyNDI5RkM0NTI0ODQyMDAwMjAwMDIwNUUKKzoyMEUxODAwMDA4MjAwODIwN0ZGRTA4MjAwRkUwMDgyMDBGRTAwODIwMDgyMEZGRkUxMDAwMTE0MDEyMjAxNDEwMUZGODAwMDA2OQorOjIwRTFBMDAwMDRGODI1MDgyNDkwMjQ2MDI0NTAyNDg4MDUwNDFGRjAxMDEwMUZGMDEwMTAxMDEwMUZGMDEwMTAxMDUwMTAyMDk4Cis6MjBFMUMwMDAyMDQwMjA0MDI3RkMzMDgwQUJGOEFBMDhBM0Y4MjIwODIzRjgyMjA4MjNGODIyMDgyRkZFMjExMDIyMEMyNDA0NTQKKzoyMEUxRTAwMDQwODAyMDgwMjExMDAzRjg4MDgwNTdGRTUxMjAxMjEwMjQ0ODM5ODZDNjIwNDBDODQ3MzA0MEMwNDMwMDRDMDA4QworOjIwRTIwMDAwMDEwMEZGRkUwMTAwMDEwMDdGRkMwMDAwM0ZGODIxMDgyMTA4M0ZGODIwMDgyMDAwNDAwMDQwMDA4MDAwMDAwMDdCCis6MjBFMjIwMDAwMDgwMTBDMDEwODAxMDg4MUZGQzIwODAyMDgwNDA4ODlGRkMwMDgwMDA4MDAwODAwMDgwMDA4NDdGRkUwMDAwQTcKKzoyMEUyNDAwMDA4RkMwOEE0NDhBNDQ4RkM3RUE0NDhBNDg4RkM3RTIwMDlGQzA4MjQwODI0MEU0NEY4NDQ0MDg0MDExNDAyMDhFMAorOjIwRTI2MDAwMTAyMDExMjA1MTIwNTEyMDdERkU5MjIwMTIyMDFBMjAzNUZDRDAyMDEwMjAxMDIwMTAyMDE3RkUxMDAwMDAwMEVDCis6MjBFMjgwMDAwMDAwMDcyMDNDMjAwNDIwMDQyMDA0MjQ3RkZFMDQyMDA0MjAwNDIwMDgyMDA4MjAxMDIwMjAyMDQwMjAwMDAwODIKKzoyMEUyQTAwMDIwMDAzMUY4MjEwODQxMDg0OUY4Rjg0MDEzRkMyMjQ0NDNGQ0ZBNDQwM0ZDMDA0MDE4NDJFMDQyMDAzRTAwMDAzRgorOjIwRTJDMDAwMDEwMDA5MTAwOTA4MTExNDYxNjQwMTgwMDYwMDNGRjhDODA4MEZGODA4MDgwRkY4MDgwODA4MDgwRkY4MDgwODQ2Cis6MjBFMkUwMDAwMEEwMDA5MDNGRkUyMDgwMjA4MDNFNDgyMjUwMjIyMjRBRDI0NTBFOUZGODEyNDgxMjQ4MTI0OEZGRkUwMDAwMjQKKzoyMEUzMDAwMDAzODI3QzAyMDQwMkZGRDIxNTEyNzU1MjE1OTIzNTUyRDREMjBFMTIxNTEyMjRDMjQ0ODI4NDBBMDQwNDAwMDBEOAorOjIwRTMyMDAwMDAyMDNDMjAyNTIwMjUyMDNERkMyNjIwMjQyMDI0MjAzREZDMjQyMDI0MjAyNDIwNDQyMDU3RkU4ODAwMDAwMDhBCis6MjBFMzQwMDAwMDAwM0ZGODA4MzAwNDYwMDJDMDAxMDAwNkMwMTgzQ0UxMDgwMTAwMUZGODAxMDAwMTAwMDEwMDdGRkUwMDAwOEMKKzoyMEUzNjAwMDA4MDAwQkZFNDgyMDQ4MjA0QkZFNEEyMjRBMjI0QTIyNEEyMjUyMjI1MjJBMTIyNDIwMjA0MDIwODAyMDAwMjAzRAorOjIwRTM4MDAwMDEwMDA5MDAwOTAwMTEwMDFGRjgyMTAwNDEwMDAxMDA3RkZFMDEwMDAyODAwMjQwMDQyMDA4MzAxMDFDMjAwOEVECis6MjBFM0EwMDA4MTAwNDk3RTM1MTAyNTEwNTU3RTk1NTIxNTUyMzU1MjU1NTI5NTUyMTU1MjExNUExMjU0QTQxMDQ4MTAxMDEwMDEKKzoyMEUzQzAwMDIwODAxMEMwMTA4MEZERkUyMTAwMjIyMDNDQTAyNEJDMjRFNDI3QTQyNEE0MjRBQzQ0QTI1NDgyODg3RTAwMDBGNgorOjIwRTNFMDAwMDAwMDIzRjgxMjA4MTNGODgyMDg0M0Y4NTAwMDEwQTAxMEEwMjRBNDIyQThFMkIwMjBBMDIwQTAyRkZFMjAwMDc3Cis6MjBFNDAwMDA0MDQwMjA0MDMzRkMyMDQwMDA0MDA3RkVGMDA4MTAwODE3RkUxMTA4MTA4ODEwODgxNDA4MTgwODEwMjgwMDEwNTYKKzoyMEU0MjAwMDAwMDAzRkZDMjAwNDIwMDQyMDA0M0ZGQzIwMDAyMDAwMjAwMDIwMDAyMDAwMjAwMDIwMDA0MDAwNDAwMDgwMDAxQQorOjIwRTQ0MDAwMDAwMDdGRjAwMDEwMDNEMDdDMTAwNDEwM0Y5MDI0OTAyNDkwM0Y5MDI0MTAwNDhBMDdDQTdDNjYyMDQyMDAwMEVECis6MjBFNDYwMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDBGRkZFMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMDAwOTEKKzoyMEU0ODAwMDAwMDBGRkZFMDIwMDAyMDAwNDAwMDQwMDA3RjgwQzA4MEMwODE0MDgyNDA4NDQwODg0MDgwN0Y4MDQwODAwMDAyMQorOjIwRTRBMDAwMTA0MDEwNDAxMDYwRkM5MDExMTgxMjBFMURGNDEwMDAzMDAwRDFGODExMDgxMTA4MTEwODExMDg1MUY4MjAwMDkwCis6MjBFNEMwMDAwMDEwMDAxMDdDMTA0NDEwNDdGRTQ0MTA3QzEwNDUxMDQ0OTA0NDkwN0MxMDAwMTAwMDEwMDAxMDAwNTAwMDIwRUUKKzoyMEU0RTAwMDA4NDAwQzQwMDg0MDE4NDAxMDQwMzA0MDU3RkU5MDQwMTA0MDEwNDAxMDQwMTA0MDEwNDAxMDQwMTA0MDAwMDBEMworOjIwRTUwMDAwMDIwMDAzMDAwNDgwMEE0MDMxMzBERkVDMTAyMDFGRTAxMDIwMUZFMDEyMTAxMUEwMTA0MDE0MzAxODEwMTAwMEZGCis6MjBFNTIwMDAwMDIwMjAyMDIwMjAyMDIwM0RGQzQ1MjQ0OTI0QTEyNDIxRkMyMTI0MjAyMDI0MjgyODI0MzAzRTIzQzQwMDAwOTgKKzoyMEU1NDAwMDAxMDAwMDgwM0ZGRTI4MDQ0Njg4MDQ4MDA4ODAwNjgwMDQ4MDdGRkUwMDgwMDE0MDAyMjAwNDEwMTgxODYwMTBEOQorOjIwRTU2MDAwNDAwMDIxRjgzMTA4MjEwODAxMDgwMTA4RjEwODExRjgxMDAwMTA5MDEwODgxMDg4MTUwNDE5MDYxMjA0MDQwMDlBCis6MjBFNTgwMDAwMTAwMDEwMDAxMDAzRkY4MjEwODIxMDgyMTA4M0ZGODIxMDgwOTAwMDUwMDAyMDAwNTAwMDhFMDMwMUVDMDA0NTcKKzoyMEU1QTAwMDA4MDAwODAwMDgwMDFGRjgxMTAwMjEwMDQxMDBGRkZFMDI4MDAyODAwNDQwMDQ0MDA4MjAxMDEwNjAwRTgwMDRGNgorOjIwRTVDMDAwMDg0MDBDNDAxQkZFMTA0MDM3RkM2NDQ0QTQ0NDI3RkMyNDQ0MjI0MDIxODAyMDgwMjE3MDIyMUUyQzA0MDAwMDRDCis6MjBFNUUwMDAzRkY4MjAwODIwMDgzRkY4MjA5MDI4OTgyNEEwM0ZGQzIxODAyMUMwMjJBMDI0OTgyODhFNTA4NDQwODA4MDgwQTQKKzoyMEU2MDAwMDAwMjBGODIwMDgyMDQ5RkM0OTI0NDkyNDQ5MjQ3RkZDMDIyMDAzMjAxQUEwRTI0MDAyNjAwMjk4MTUwRTA4MDQ0NworOjIwRTYyMDAwMTAyMDE4MzAxMDIwMTA0OEZDODQyNUZFMjQ4NDQ0MDA0NEZDMjg4NDE4ODQxNDg0MjI4NDQyRkM4MDg0MDAwMDQzCis6MjBFNjQwMDAwMEEwMDA5ODAwOTA3RkZDMDA4MDAwODAwMDgwM0U4MDA4NDAwODQwMDg0MDBCMjAxQzIyNzAxMjIwMEEwMDA0NDgKKzoyMEU2NjAwMDAwMDAxRkY4MDAwMDAwMDAwMDAwN0ZGRTAxMDAwMTAwMTEyMDExMTAyMTA4NDEwQzgxMDQwMTAwMDUwMDAyMDBBRgorOjIwRTY4MDAwMDEwMDAxMDAwMTAwMDEwMDAxMDBGRkZFMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDA3RkZDMDAwMEY1Cis6MjBFNkEwMDAwMDAwMTIxMDEyMTAxMjEwMTIxMEZGRkUxMjEwMTIxMDEyMTAxM0YwMTIxMDEwMDAxMDA4MUZGQzAwMDAwMDAwMDcKKzoyMEU2QzAwMDEwNDAxMDIwMTAyMEZERkUxMDIwMzAyMDM5RkM1NTI0NTEyNDkxMjQxMTI0MTEzNDExMjgxMDIwMTAyMDEwMjBGNAorOjIwRTZFMDAwMDEwMEZGRkUwMTAwMUZGODExMDgxRkY4MDEwMDNGRjgwMTA4RkZGRTAxMDgzRkY4MDEwODA5MDAwNTAwMDIwMDNECis6MjBFNzAwMDAxMDIwMTAyODEwMjQxMDIwRkJGRTEwMjAxODIwMTdFMDMxMTBEMTEwMTE1MDExODgxMTBBMTYwNjUwMDIyMDAwMTAKKzoyMEU3MjAwMDEwMENGRUYwMTA4MDdDRkUxMTEwNTIxMDI0OTBGRkZFMDAwMDFGRjAwMDAwMUZGMDAwMDAxRkYwMTAxMDFGRjAzNQorOjIwRTc0MDAwMDAwMDQyMEMyMjcwMjI0MDBGQzAwMjdFRTM1MDI2NTAyQTUwMjI5MDIyOTAyQjEwMjQxMDUwMDA4RkZFMDAwMDU1Cis6MjBFNzYwMDAwODQwMDg0MDdERjAwODkwMEQ5MDM4RDAwOTRBMkEwQTE1MDQwMTEwM0ZGODAyMTAwMjEwMDQxMDA4NTAxMDIwQjcKKzoyMEU3ODAwMDAwMDAwRkYwMDgxMDBGRjAwODEwMEZGMDAwMDBGRkZFMDEwMDA5MDAwOUY4MDkwMDE1MDAyMzAwNDBGRTAwMDBDNQorOjIwRTdBMDAwMDA0MDAzRjRGMDQ4OTdGRTkwMjA5MEQwOTNGNDlEMDY5MUZDRjAwMDkzRjgwMjA4MDNGODAyMDgwM0Y4MDIwOEZGCis6MjBFN0MwMDAwMjIwMDIyMEYzRkU5NTI4OTk0NDk3RkU5MDQwOTI0ODkyNDhGMjQ4OTI1NDg1NTIwOEUyMDA0MDFGRkUwMDAwMTMKKzoyMEU3RTAwMDQwMzgyM0MwMjA0MDAwNDAwRkZFMDA0MEUwNDAyM0Y4MjIwODIyMDgyMjA4MjNGODIwMDA1MDAwOEZGRTAwMDAwMAorOjIwRTgwMDAwMDg0MDBDNDAxODQwMTA0MDMwNDQyRkZFNjA0MEEwNDAyMDQwMjA0MDIwNDAyMDQwMjA0NDJGRkUyMDAwMDAwMDZBCis6MjBFODIwMDAwODQwMDg0MDE3RkMxMDQwMjA0MDZGRkVBMDEwMjAxMDI3RkUyMDEwMjIxMDIxOTAyMTEwMjAxMDIwNTAyMDIwRUYKKzoyMEU4NDAwMDBERkM3MDg4MTA1MDU0MjAzODU4RkQ4NjEwMjAzODIwMzVGQzUwMjA1M0ZFOTAyMDEwMjAxMDIwMTAyMDAwMDAxNgorOjIwRTg2MDAwMjA4MDIwODAyMDgwM0RGRTQ1MjA0QTIwQTNGQzI1MjQyMTI0MjEyNDIxMjQyMTI0MjkyQzMwMjAyMDIwMDAyMEFECis6MjBFODgwMDAwMDAwMDBGODNGMDAyMTAwMjEwMDIxMDAzRkZDMjA4MDIwODAyMDgwMjA0MDIwNDAyNDI0MjgxNDMwMEMyMDA0MUYKKzoyMEU4QTAwMDAyMDAwMTAwRkZGRTAxMDAwMTAwMUZGODExMDgxMTA4MTEwODExMDgxMTA4MTEwODExMjgxMTEwMDEwMDAxMDA0RAorOjIwRThDMDAwMjA0MDIwNDAyM0ZDMzA0MEE4NDBBN0ZFQTAxMDIwMTAyN0ZFMjAxMDIyMTAyMTEwMjAxMDIwNTAyMDIwMDAwMEU0Cis6MjBFOEUwMDAwMjAwMDEwMDNGRkUyMDA0NDAwODNGRkMwNDAwMDgyMDFGRjAwMTEwMDEwMDNGRjgwMTAwMDEwMEZGRkUwMDAwQUUKKzoyMEU5MDAwMDIwMDAxOUZDMTEwNEZEMjQwNTI0MDkyNDExMjQyOTI0NTUyNDk2NTQxNDUwMTA5MDEwOTIxMTEyMTIwRTE0MDA1NAorOjIwRTkyMDAwMDAyMDQwMjgyMDI0MzAyNDI3RkUwMDIwRTAyMDI3RTAyMTIwMjExMDIxMTAyMTBBMjlDQTM2MDYyMDAyMDAwMDRDCis6MjBFOTQwMDAwODgwMDg4MDA4ODA0ODgwNDlGRTQ5MDg0QTg4NDg4ODQ4ODg1ODUwNjg1MDQ4MjAwODUwMDk4RTBFMDQwODAwN0MKKzoyMEU5NjAwMDAwMDAwMUY4N0YwMDAxMDAwMTAwN0ZGQzAxMDAwMTAwMDEwMEZGRkUwMTAwMDEwMDAxMDAwMTAwMDUwMDAyMDA5NworOjIwRTk4MDAwMDgxMDA0MjBGRkZFMDEwMDAyMDAxRkYwMTAxMDEwMTAxRkYwMTAxMDFGRjAxMDEwMTAxMDFGRjAxMDEwMDAwMDNGCis6MjBFOUEwMDAwMTAwMDA4MDNGRkUyMDA0NDAyODAwMjAwMDIwN0ZGRTAwMjAwODIwMDQyMDA2MjAwNDIwMDAyMDAwQTAwMDQwOUEKKzoyMEU5QzAwMDAxMDAwMTAwN0ZGRTAxMDAxRkZDMDIwMDdGRkUwMjEwMDQxMDA1RkUwQTEwMTExMDIxOTBDMTEwMDA1MDAwMjBDNworOjIwRTlFMDAwMjAzQzI3QzAyMDg0RkE0ODIxNTAyN0ZFMkMwNDMwMDA2M0Y4QTExMDIwQTAyMDQwMjBBMDIzMUNBQzA4NDAwMEQ5Cis6MjBFQTAwMDAwOTAwMDg4MDFGRkMxMDgwM0ZGODUwODA5RkY4MTA4MDFGRkMwMDAwMUZGODEwMDgxMDA4MTAwODFGRjgxMDA4RTMKKzoyMEVBMjAwMDAwRjg3RjkwMjIxODExOTAwOTIwN0ZGRTQwMDQ4MDA4MUZFMDA4MjAwNDQwMDI0MDAxODAwNjYwMTgxQzYwMDg1MgorOjIwRUE0MDAwMDEwMDAwODAxRkZFMTI4MDk0Qjg1NDg4NTZCODE0ODgzN0Y4NTA4MDk3RjgxMjEwMjEyMDIwQzA0MzMwOUMwRUM2Cis6MjBFQTYwMDAwODIwMDQ0MDNGRjgyMTA4M0ZGODIxMDgyMTA4M0ZGODAwMDBGRkZFMDAwMDFGRjAxMDEwMTAxMDFGRjAxMDEwOEYKKzoyMEVBODAwMDA0NDBGRkZFMDQ0MDAwMjA3REZDMDg0MDEwODgxMUZDNTAwNDVENTA1MTUwNTE1MDVENTJGMjUyMDI0RTA0MDBFMQorOjIwRUFBMDAwMTAwMDExRkUxMTAwRkQwODExMEMzMTQ4MzkyODU1MTA1NTE4OTEyODExNDQxMTg0MTEwMDExRkUxMDAwMTAwMDc1Cis6MjBFQUMwMDAxMDQwMTAyMDEzRkVGQzQwMTA4MDMxMDgzQkZDNTQwNDUxNDg5MTQ4MTE0ODExNDgxMjRBMTI0QTE0NDYxMDAwQ0IKKzoyMEVBRTAwMDAwMjAwMTIwRkQyMDIxRkMyMjIwM0MyMDQ3RkU0NDYwQTg3MDE4QjAxMEE4MTEyODIyMjY0QzI0ODAyMDAwMjBDQgorOjIwRUIwMDAwMTAwMDExRkMxMDA4RkM5MDEwNjAxMDIwMTVGRTE4MjQzMDI4RDAyMDEwMjAxMDIwMTAyMDEwMjA1MEEwMjA0MEVECis6MjBFQjIwMDAyMDQwMjA0MEZDQTAyMTE4NDNGNjU0MDBGQzA0NTNENDEyNTQxRkQ0RjI1NDEzRDQxMjU0MTI1NDEzNDQxMjhDNDUKKzoyMEVCNDAwMDA4MDAwODAwMDhGQzBFODgwODg4MDg4OEZGNDgwODQ4MkM1MDJBMzA0OTIwNDk1MDg4ODgyOTA2MTIwNDAwMDAyNworOjIwRUI2MDAwMTAwMDExRkMyODA0MjQ0ODQzMzBGRTEwMTFGRUZFMTQxMDEwMTAxMDdFMTA0MjEwNDIxMDdFNTA0MjIwMDAwMDlDCis6MjBFQjgwMDA0NDAwMjQwMDI0N0M4NzQ0NDQ0NDQ0NDQxRkE4MjQyODI0Mjg0RDEwRDQ5MDU0QTg2NDRDNDQ4NjU1MDQ0ODAwNUIKKzoyMEVCQTAwMDAwNDBGQzIwMDdGRTI4ODAxMDkwMTEwODUzRkM1QzA0NTE0ODUxNDg1MTQ4NUQ0ODcyNEFDMjRBMDQ0QTA4MDY1MAorOjIwRUJDMDAwMDIwMDAyMTAwMjBDM0ZGNjAyMTQwMjEwMDIxMEZGRkMwMjA0MDIwNDAyMDQwMjA0MDI0ODAyMjgwMjEwMDAwMDBCCis6MjBFQkUwMDAwMDIwRjgyMDhCRkNBODIwQUJGRUE4MjRBOTI4QUNFMEFBQTBBQTIwQTdGRTIwMjAyMDUwNTA4ODQ5MDY4QTA0OUUKKzoyMEVDMDAwMDEwNDAwODQwRkU0MDAwNDA3REY4NDQ0ODdDNDgwMEM4N0U2ODA0NTgxRTg4RTg4QTA4OEEwOTBBMjkwNjEyMDAxMQorOjIwRUMyMDAwMTAyMDA4MjBGRjIwMjRGODNDMjgwMEE4N0U0ODA0NjgwODRBN0U4QTA5MDYyQTEyNTA4ODQ0NENDNDQ0MDAwMEVFCis6MjBFQzQwMDAwNDIwRkZGRTA0MjAxRkY4MTI0ODFGRjgwMTIwM0ZGODAxNDA3RkZFMDMwMDFGRjA2ODEwMEZGMDA4MTAwRkYwMzEKKzoyMEVDNjAwMDFGRjAxMDEwMUZGMDEwMTAxRkYwMDIwMDNGRjgwMjIwRkZGRTAzMDAwRkYwMzgxMENGRjAwODEwMEZGMDA4MTA5NworOjIwRUM4MDAwMDNGQzdBOTQ0QTk0NEJGQzQ4NDA0QkZDNzg0ODRGRkU0ODYwNDlGQzRGMDQ3OUZDMDEwNDAxMDQwMUZDMDAwMEFBCis6MjBFQ0EwMDAzRkZDMjI0NDIyNDQzRkZDMDExMDFGRjgwMTIwRkZGRTAyMDAwRkYwMzgxMENGRjAwODEwMDgxMDBGRjAwODEwN0QKKzoyMEVDQzAwMDAwMDAxRkY4MTI0ODFGRjgxMDAwMUZGQzExMDQyMTA0NUZGNDExMTQxRkY0MTEyNDAxRjQ3RTI0MDAxNDAwMDhENAorOjIwRUNFMDAwMDBGODFGMDAwMTAwN0ZGRTAzODAwNTYwMTkxMEUxMEMwMjg0MDU0MDE5MzBFNTRFMDNDMDBEMjAzMTE4MDMwOEY2Cis6MjBFRDAwMDAwNDAwMzlGMDIwMTAzREYwMjAxMDNGRjAwMDAwMzE5MDI5NTAzMTEwMjk5MDIxNTIyOTBBMzE4QTIxMDYwMDAwNEUKKzoyMEVEMjAwMDNGRkMyMDA0M0ZGQzIwMDAyRkY4MjA4MDI3RjgyNDg4MjdGODIwODAyRkZDMjhBNDQ4RjQ0QjE0ODgwNDA4MEM5NgorOjIwRUQ0MDAwMDEwMDAxMjAwMTEwMDEwMEZGRkUwMTAwMDM4MDA1NDAwNTIwMDkxMDExMTgyMTBFQzEwNDAxMDAwMTAwMDAwMDVDCis6MjBFRDYwMDA0MDQwMjA1MDMwNDgyMDQwMDdGQzAwQzBFMTYwMjE1MDIyNDgyNDQ0Mjg0NDIwNDAyMDQwNTgwMDg3RkUwMDAwN0IKKzoyMEVEODAwMDEwMDQxMDA0MTAwNDEzQzRGQzdFMTI4NDNBODQzNTI0NTU5NDUxNDQ5MjQ0MTQwNDE4MDQxMDA0MTAxNDEwMDg2MQorOjIwRURBMDAwMDEwMDAxMDBGRkZFMDEwMDNGRjgyMTA4MjEwODNGRjgyMzA4MDU4MDA1NDAwOTMwMzEwRUMxMDQwMTAwMDEwMDVGCis6MjBFREMwMDAwMEEwMDA5MDAwOTAzRkZFMjA4MDIwODAzMDQ4Mjg0ODI0NTAyMjIwMjA2MDIwOTI0MzBBNEMwNjgwMDIwMDAwMDUKKzoyMEVERTAwMDA0MDAyNUZDMjQ4ODI0NTAyNDYwMjQ5MDI3MEUwNTA0MDA4MDNGRkMwODEwMDQyMDA0MjAwMDQwN0ZGRTAwMDA4MAorOjIwRUUwMDAwMDAwMDNFN0MyQTI4M0UxMDJBRkUzRTEyMDgxNDNFMTAwODUwN0UyMDAxMDAzRkZDMDEwMDAxMDA3RkZFMDAwMDA1Cis6MjBFRTIwMDAwMTAwMDA4MDNGRkUyMjIwMjIyMDIyMjAzRkZFMjIyMDIyMjAyM0UwMjIyMDIwMDAyQTQ4NDkyNjUxMjQ4MDAwNTIKKzoyMEVFNDAwMDA4MjA0OTMwMkEyMDFDMjBGRjdFMUM0NDJCNDQ0OEM0MDgyOEZGMjgxMjEwMzQxMDBDMjgzMjRFQzA4NDAwMDA3RQorOjIwRUU2MDAwNDIyMDIyMjAyRkEwMDIzRThGQTQ1QUQ0MUE5MDJBOTAyRjkwMjIxMEM3MTA0QUE4NTIyODQyNDQ0MjQ2NDI4NDEyCis6MjBFRTgwMDAxMDAwMTAwMEZFRkMyNDg0MjQ4NDY4ODQxODg0MTRGQzIyMDBDMDAwMDkwODI4ODQyODk2NjgxNDQ3RjAwMDAwNjAKKzoyMEVFQTAwMDNGODIyMDgyMjA5MjIwOTIzRjkyMjIxMjIyMTI1RkQyNTI1MjUyNTI1MjUyNTI1MjUyNDI5M0MyMDI4QTAyMDQxNgorOjIwRUVDMDAwN0ZGRTAzMDAwNDAwM0ZGQzIyNDQyMjQ0MjI1QzIyMDgwNDAwRkZGRTA4MTAwNjIwMDFDMDA2MzAxODBDNjAwNDQxCis6MjBFRUUwMDAyMDgwMjA0MDI3RkVGODQwMjQ5MjIyRTQyQTQ4MzRBNEU5RjIyMDUwMjA0MDJGRkUyMDQwMjA0MEEwNDA0MDQwQjcKKzoyMEVGMDAwMDAxMDA3RkZFMDAwMDBGRjAwODEwN0ZGRTA4MTAwRkYwMDEwMDAyODgwQzUwMzgyMEM4MTgwQTBFMEMwNDA4MDA3OQorOjIwRUYyMDAwMDAwMDNGRjgyMTA4MjEwODNGRjgyMTA4MjEwODNGRjgyMTA4MjEwODIxMDgyMTJBNDExMjQxMDI4MEZFMDAwMEFFCis6MjBFRjQwMDAwODIwMDgyMDA4MjA0QkZFNEEyMjRBMjI0QTIyNEEyMjRBMjI0QTIyNEEyMjEyMkUxMjI0MjAyMDQwMjA4MDIwNDYKKzoyMEVGNjAwMDEwNDAxMDQwMTBBMDEwQTBGRDEwMTIwRTM5RjgzNDQwNTA0MDUxRjg5MDQwMTA0MDEwNDAxMDQwMTdGRTEwMDAwMQorOjIwRUY4MDAwMjA0MDIwNDAyMEEwMjExMEZBMEUyMDA0MkJGODMwNDAyMDQwRTNGODIwNDAyMDQwMjA0MEFGRkU0MDAwMDAwMEI5Cis6MjBFRkEwMDAxRkY4MDEwMDdGRkU0MTA0MUQ3MDAxMDAxRDcwMDgwMDA4Rjg3RTg4MUNGODJBODgyOEY4NDg4ODA4RjgwODg4MDgKKzoyMEVGQzAwMDAwMDA3RUZDMDI4NDAyODQ0Mjg0MjQ0ODE0NDgwODQ4MEM1MDE2MjAxMzIwMjI1MDQwODg4MTA2MDIwNDAwMDA0MQorOjIwRUZFMDAwMDEwMDAxMDBGRkZFMDUwODI5NTAxMTIwMjk1MDQ1NDAyOTI4MTI5MDJBQTg0NDQwMDgyMDEwMTgyMDBFNDAwNDUyCis6MjBGMDAwMDA0MTQwMjEzMDMxMjAyM0ZFMDIyMEU2MjAyQkZDMjIyMDIyMjAyM0ZDMjIyMDJBMjAzMjIwMjNGRTAyMDAwMDAwQjkKKzoyMEYwMjAwMDAxMDAwMTAwMDEwODAxMTA3RDIwMDVDMDA1NDAwOTIwMDkyMDExMTAxMTE4MjEwRUMxMDQwMTAwMDUwMDAyMDA3NQorOjIwRjA0MDAwMDAzQ0Y3QzA5MDQwOTA0MDk3RkVGMjQ4OTI0ODk3RkVGMjQ4OTI0ODkyNDg5N0ZFRjA0MDkwNDA4N0ZDMDAwMEQ5Cis6MjBGMDYwMDAwQzA4NzEwODEwOTAxMDIwRkRGODExMDgzOTA4MzUwODUxRjg1MEEwOTBBMDEwQTAxMTIwMTEyMjEyMjIxNDFFQzQKKzoyMEYwODAwMDAwNDAwMDYwRjg4MDg5MDg4QTdDOEZDNDg4MDA4OTIwRjkyMDg5MjA4MTIwMDIyMDAyMjIwNDIyMDgxRTEwMDAzOAorOjIwRjBBMDAwMDAzQzc3QzQ1MjQ0NTEyODU3RkU3NDBBNUEwODUzQkU3Mjg4NTRBODVCM0U1MTQ4NzIwODU0MDg0ODA4MTAwODFFCis6MjBGMEMwMDAwMDAwNDVGRTU0MjA1NDQwNTVGQzU1MDQ1NTA0NTUyNDU1MjQ1NTI0NTUyNDU0MjA0NDUwODQ4QzA1MDQwMDAwREQKKzoyMEYwRTAwMDAwMzgzRkQwMTIxODA5MjAzRkZFMjAwNDUwMjAxRUZDMjIyMDIyQTA1NUZFODgyMDEwMjAyMDIwNDAyMDgwMjAxQworOjIwRjEwMDAwNDIwODIxODgzMTEwMjNGODAyMDhFMjA4MjIwODIzRjgyMkE4MjBBMDIwQTAyOTIwMzEyMjIyMjIwNDFFMDgwMDEzCis6MjBGMTIwMDAwMDAwN0RGRTEwMjAxMDQwMjFGQzIxMDQzRDI0NjUyNEE1MjQyNTI0MjUyNDNENTAyNDQ4MjA4NDAxMDYwNjAyQTEKKzoyMEYxNDAwMDIxMDAxMTNFMTIyMjdGQTIwODNFMjkyMjI5MjIyOTNFM0YyMjA4MjIwODQyMTA0MjEwODIyMDhBNDEwNDAwMDBGRgorOjIwRjE2MDAwMTAwODEwM0MxM0MwMTYyMDVBMjA1MjIwNTNGRTkwMjAxMDIwMThBODI1QTQyNTIyNDIyMjQ0MjA4MEEwMDA0MDBECis6MjBGMTgwMDAyMjBDMjI3MEZGNDAyMjQwM0U0MDIyN0UyMjQ4M0U0ODIyNDgyMjQ4RkY0ODAwNDgyNDg4NjI4ODgzMDgwMDA4NzQKKzoyMEYxQTAwMDI0ODAyNDg2MkZGOEY0QTAyN0EwMjRCRTJGQTQzNEE0NjRBNEFGRTQyMTI0MjRBNDI0QTQyODQ0QTA0NDQwODQ2RQorOjIwRjFDMDAwMDQ4MDA0OEVGRkY4OTRBMDk3QTA5NEJFOTRBNDk3QTRGNEE0OUZFNDk1MjQwNEE0MDhBNDEwMjQyMDQ0MDA4NEFFCis6MjBGMUUwMDAwMDAwMUZGODExMDgxMTA4MUZGODExMDgxMTA4MUZGODAwMDAwMTAwMDg4ODQ4ODQ0ODE2QzgxMjA3RjAwMDAwREEKKzoyMEYyMDAwMDAyMjA3RjMwMDgyMDA4MjBGRjQwMTg0MDE4NDAyQzgwMkE4MDRBODg0OTA0ODkwNDBCRkUwOTAyMDgwMjA4MDBCNgorOjIwRjIyMDAwMDAwMDNGRkMwMDA0MDAwNDdGRTQwMDA0MDAwNDNGQzQyMDQ0MjA0NDNGQzQyMDQ0MjAwNDAwMTQwMDA4MDAwMEFFCis6MjBGMjQwMDAwMDAwMDgyMDBDMzAxODIwMTA2ODIyNEM3RUY4MjQ1MDA4MjAxMDQwM0VGQzAwMDAwMDAwMDAwNEZGRkUwMDAwOEYKKzoyMEYyNjAwMDAwMDA3RkZFMDg0MDA4NDAxRjQwMTE0NjIxNTgzMjYwNEE0MDhBNDAwNDQwMDQ0MjA4NDIzMDQyQzAzRTAwMDAyOAorOjIwRjI4MDAwMDAyMDNFMjAyMUZDM0MyNDIxRkUyMDI0M0RGQzIwMjBGRTIwMjFGQzI4MjAyN0ZFNUUyMEU0MjA0MDIwMDAyMEVECis6MjBGMkEwMDAwMTAwMDEwMDNGRjgwMTAwMDEwMEZGRkUwMDIwMDAyMDdGRkUwMDIwMDgyMDA0MjAwNjIwMDQyMDAwQTAwMDQwQzMKKzoyMEYyQzAwMDAwMDA3RjdDNDEwNDQxNzQ3RjA0MDAwNDdGNzQ1NTU0NTU1NDdGNTQ1NTc0NTU1NDU1MDQ1NTA0NDMxNDAwMDgxNworOjIwRjJFMDAwMDAwMDdGRkM0NDg0NDQ4NDQ0ODQ0NDg0NDQ4NDQ0ODQ0ODg0NDg3QzUwMDQ2MDA0NDAwNDdGRkM0MDA0MDAwMDk4Cis6MjBGMzAwMDAwODAwMEZGQzA4MDQxMDA0MTdGNDMwMDQzM0U0NTIyNDkyMjQxMjI0MTNFNDEyMjQxMDA0MTAxNDEwMDgwMDAwODUKKzoyMEYzMjAwMDExMDgxODg4MTBDODI0ODgzNDA4MjQwODY0MDhBNDA4MjQ0ODI0ODgyNTE0MjYxNDI0MjIyMEMyMjMwMjAwMDAzOAorOjIwRjM0MDAwMTAwMDExRkMyMDA0M0UwNDQ0RjQ0ODA0ODBGNDEwOTQxMDk0MTBGNDEwMDQxMDA0MTQwNDE4MTQxMDA4MDAwMDYyCis6MjBGMzYwMDAwMDAwM0ZGMDIwMTAyMDEwMjAxMDIwMTAzRkYwMjAxMDIwMDAyMDAwMjAwMDIwMDQyMDA0MjAwNjFGRkMwMDAwNTYKKzoyMEYzODAwMDEwMTAxMDkwMTBEMEZFOTAxMDg4MTEwODM5MDQzNjQ2NTQ2NDUwQzA5MDgwMTEwODEyMDQxN0ZFMTAwNDEwMDA5NQorOjIwRjNBMDAwMDg0MDA4NDAwODQwMTRBMDIyOTA0MzA4QkZGODA4MjAwRkUwMDgyMDBGRTAwODIwMDgzRUZGRTAwMDIwMDAyMDUyCis6MjBGM0MwMDAwODQwMDg0MDA4NDAwODQwMTQ0MDEyQTAyMjkwQzEwRTAyMDAwMTAwNDg4ODQ4ODRDODE2ODgxMjA3RjAwMDAwNzgKKzoyMEYzRTAwMDEwMDAyQkZFMjQyMDI0NDA0MUZDNTEwNDkxMjQxMTI0MjEyNDI5MjQ0NTI0RkM1MDA0NDgwMDg2MDMwMjAwMDA5MgorOjIwRjQwMDAwNDIyMDIxMjAyMTQwMDdGODAwODAwMDgwRUZGQzIwODAyMTQwMjEyMDIyMTAyNDEwMjAwMDUwMDA4RkZFMDAwMDU5Cis6MjBGNDIwMDAwMjAwMDEwMDdGRkU0MTA0ODEwODAxMDA3RkZDMDM4MDA1ODAwNTQwMDkyMDExMTAyMTBFNDEwNDAxMDAwMDAwRjYKKzoyMEY0NDAwMDQwMjAyMEEwMzBBMDIwOTAwMTEwRTEwODIyMDgyNDg2MjA4NDIwODAyMTAwMjExMDJBMDgzN0ZDMjAwODAwMDAxQgorOjIwRjQ2MDAwNDAwMDIzRkMzMDQ4MjAzMDAzRkUwMjIyRjIyMjEzRkUxMjIyMTIyMjEzRkUxMjIyMTYyMjFBMjIxMjJBMDIwNEI4Cis6MjBGNDgwMDAxMDIwMTBBMDEzMkVGRTIyMTNBRTE2MjIxQkZFMTAyMDMxRkNEMDg0MTA4ODEwNTAxMDIwMTA1ODUxOEUyNjA0Q0YKKzoyMEY0QTAwMDEwQTAyMTJDM0QyNDI1QUMzNTI0MkQyNDI1RkNGQzAwMjVGQzM0ODgyQzg4MjQ1MDI0MjA0NDU4NTQ4RTg5MDQwMgorOjIwRjRDMDAwMjExMDIxMTgyNTUwRkI5MDI3REUyM0E0MzU2NDI5NTQ2MjE0QUZDODI0ODgyMzA4MjMxNDI0OTRBODI2NDA0NERCCis6MjBGNEUwMDAwMjEwMDIxMEVGRDBBMjNFQUZBMkFBRDRBQTkwQUY5MEVBMTBBNzEwOEFBODBBQTgxMjI0MjI0NjAyNDQwMjgwMDYKKzoyMEY1MDAwMDA0NDAwNDQwRkZGRTA0NDAwNTQwMDEwMDNGRjAwMTEwMTMxMDEyMTQzNjEyMjQxMjA4MTAxMDkwNjA2MDAwMDA1RAorOjIwRjUyMDAwMDAxQ0ZFRTAyODIwMjgyMEZFMjBBQkZFQUEyMEFBNjBDRTcwODJBODgyQThGRjI2ODIyNEZFMjA4MjIwMDAyMDY5Cis6MjBGNTQwMDAxMTIwMTkxODEyNEMzNDQ4Mjg0MDYwQTBBMTE4MjIwRTI0MDQyQkY4MjIwODIyMDgyMjA4MjNGODIyMDgwMDAwMTAKKzoyMEY1NjAwMDAxMDA3RkZDMDEwMDNGRjgwMTAwRkZGRTAyMDAwNDQwMUY4MDA0MTAzRkY4MDEwODA5MjAxMTEwNjUwODAyMDBFNworOjIwRjU4MDAwMDA4MDQwODAyRkZDMjA4MDAwODAwN0Y4RTQ4ODI0ODgyN0Y4MjFBMDIyOTgyQzg4MjA4MDUwODA4RkZFMDAwMDdFCis6MjBGNUEwMDAwMDAwN0ZGQzA0NDAzRkY4MjQ0ODI0NDgzRkY4MTExMDA5MjBGRkZFMDM4MDA1NDAwOTMwMzEwRUMxMDQwMTAwRjkKKzoyMEY1QzAwMDEwMDAxRkZFMTBBMDI3RkMzNEE0NjRBNEE3RkMyMjQ4MjE1MDJGRkUyMEUwMjE1MDIyNEMyNDQ2Mjg0NDIwNDA4QgorOjIwRjVFMDAwMDAwMDQyN0MyNDQ0RkY3QzA4NDQ0QTQ0NEE3QzdFNDQxMjk0MTA4ODIxMDA3RkY4MDEwMDAxMDBGRkZFMDAwMDMzCis6MjBGNjAwMDA0ODgwMjQ5RTIxMTIwRkQyODExMjUxMUU1NTUyMjU1MjI1NUUyN0QyQzExMjQxMTI0MjIyNDIyMjQ0NEE0ODg0NjgKKzoyMEY2MjAwMDAyMDAwMTAwM0ZGRTQ4MDQ0RkY4MDg0MDEwODAxM0Y4MzIwODUyMDg5M0Y4MTIwODEyMDgxM0Y4MTIwODAwMDA5QworOjIwRjY0MDAwNDAwMDIwMUMzMUUwMjEwMDAxMDAwMUZFRTExMDIxNTAyMTMwMjExODIxMTYyOTE0MzIxMDIyMTAwNDEwMDAwMDE0Cis6MjBGNjYwMDAwMTAwMDEwMDNGRjgwMTA4RkZGRTAxMDgzRkY4MDEwMDIxMDgyNTQ4MjUyODI1MjgyOTI4NDkwODUxMDg4MTA4NTYKKzoyMEY2ODAwMDAwMjBGRjIwMjg0NDI4RkVGRTAyQUE4OEFBODRBQjQyQ0U3QzgyODhGRjQ4ODIzMEZFMzA4MjQ4ODE4NjAwMDAwMAorOjIwRjZBMDAwMDg0MDA4NDBGRkZFMDg0MDAwMDA3RUZDMDAwMEZFRkUwODEwNEM5ODZBRDQ0QTk2ODkxNDhBMTAyODUwMTAyMDA2Cis6MjBGNkMwMDA0MDQwN0U3RTQ4OTBCRkY4MjAxMDNGRjAyMDEwM0ZGMDIwMTAzRkYwMDg0MEZGRkUwODQwMTA0MDEwNDAyMDQwNzUKKzoyMEY2RTAwMDFGRjAxMDEwMTAxMDFGRjAxMTEwMDEwMDNGRjgyMTA4MjEwODNGRjgyMTAwMDEwODAxMDQwMUZFN0YwNDAwMDAxOQorOjIwRjcwMDAwMDA4MDc4ODA0QkZDNTEwMDYzRjg1NDQwNTNGRTQ4MDA0OUY4NDkwODY5Rjg1MTA4NDFGODQxMDg0MTI4NDExMEM5Cis6MjBGNzIwMDAwMDIwRjgyMDk1RkU5NDQwQTBGOEMxODhBQzg4OTRGODk0ODg5NEY4RDQ4OEE0QTg4NDkwOEIwMDkwRkU4MDAwOEMKKzoyMEY3NDAwMDAwM0MxM0UwMTAwNDIyNDY0OUE0RjkyODEwNDAyN0ZFNDA4OEYxMDgwMzEwMDBBMDE4NjBFMDkwMDMwQzBDMDQwMAorOjIwRjc2MDAwMDAyMDc4MjA0OUZFNjg0MDY4RkNGRDEwOEFGRTc5MDA0ODdDN0I1NDQ5NkM3OTU0NDk0QzRCNDQ1Q0ZFMDAwMERECis6MjBGNzgwMDAwMDgwRkM0MDE3RkMxMTEwMjExMDIxMTAzQUE4NkM0NEE4MDAyODQwMkZGRTI4NDAzODQwMjg0MDIwNDAwMDQwNjAKKzoyMEY3QTAwMDAxMDAyMTA4MjEwODIxMDgzRkY4MDQwMDA0MDAwRkY4MTAxMDI0MTA0MjIwMDI0MDAxODAwNjAwMTgwMDYwMDA5MAorOjIwRjdDMDAwMEM0MDczRkMxMDQwMTNGOEZFNDgxM0Y4MzI0ODNCRjg1NDQ0NTNGRTkwMDAxMTQ0MTUyMjE1MEExOEY4MTAwMEQxCis6MjBGN0UwMDAwNDIwNDIyMDIxNDAyRkZDMDEwMDAyOTBFQ0EwMjM0MDJDRTAyMTU4MkU0ODIwNDAyMTQwNTA4MDhGRkUwMDAwNUMKKzoyMEY4MDAwMDAwODRGODQ4OTVGRTk0MjBBMDQwQTFBNDlDNTg5NDkwOTczOEQ0NTZBNTkwODQ1MDg0MjA4QjAwOTBGRTgwMDA2MQorOjIwRjgyMDAwMDEwMDExMDgxRkY4MDEwMDIxMDQyMTA0M0ZGQzAwMDAzRkY4MDAwMEZGRkUwMTAwMEQyMDMxMThDNTA4MDIwMDk3Cis6MjBGODQwMDAwMDIwN0UyMDA0MjAwODIwMTAyMDExMjgxREE0MzEyNDUyMjI5MjIyMTQyMjEwMjAxMDIwNTBBMDIwNDAwMDAwMTEKKzoyMEY4NjAwMDExRkMxMTA0MTEwNEZERkMxMDAwMTVGRTE5MDIzMTIyRDEyMjExMjIxMTIyMTE0MjEwNTAxMDg4NTEwNjIyMDJBOAorOjIwRjg4MDAwMjA0MDIwNDAzRTdFNTBBMDg5MTAzRkY4MDIwODdGRkUwMjA4MDIwODNGRjgwMjAwMDQwMDA0MDAwODAwMzAwMDE4Cis6MjBGOEEwMDAwNDIwN0ZGRTA1MjAwMDgwN0ZGQzAwMDAwRkYwMDgxMEZGRkUwODEwMEZGMDA0NDAwQzIwMTUxMDY2MEUwNDA0NEIKKzoyMEY4QzAwMDEwMjAxMDQwMTA4ODExRkNGQzA0MTEwODM5MDQzMjQyNTRGODUwODg5MTUwMTIyMDEwNTAxMTg4MTYwRTEwMDREMQorOjIwRjhFMDAwMDEwMDAxMTBGMjA4OTdGQzkxMDg5MTkwOTIwQzk0ODQ5OUY4RjExMDkyOTA4QzkwMDA2MDAwOTAwMTBFMDYwNDIwCis6MjBGOTAwMDAxMDQwMTgyMDMzRkUyMjA0NDQwMEY5N0MxMTEwMjI3QzQ2NDRGQTQ0MDI3QzAyNDQzQTQ0RTI3QzAyNDQwMDAwRTIKKzoyMEY5MjAwMDAwMjA3RDI0MTBBNDEwQTgxMUZDN0QwNDExMjQxMTI0MTEyNDExMjQxRDY0NjE1NDAwODgwMTA0MDYwNjE4MDI0RgorOjIwRjk0MDAwMDEwMDNGRjgwMTAwMDEwMDdGRkM0MjA4MDQ4MDFGQzAwMzAwMEMyMDFGRjAwMTEwMTEyMDExMTAyNTEwMDIwMDZECis6MjBGOTYwMDAxMDIwMTIyMjNEMjQyMEE4NDFGQzdEMDQ5MTA0MTEyNEZEMjQxMTI0MTEyNDExNDQxNDUwMTg4ODEzMDYwMDAwNzUKKzoyMEY5ODAwMDBFMUU3MEUwNDA4MDQwODA3QzgwNDRGRTQ0ODg0NDg4N0M4ODQwODg0MTA4NDEwODQyMDg0MjA4ODQwODA4MDgwNworOjIwRjlBMDAwMjAwMDIxRkMyMTA0MjFGQ0ZEMDQyMUZDMjAwMDI3QkUyMEEyMjQ5MjIyOEEzQTkyQzRBMjA4ODIwMjhBMDEwNDM0Cis6MjBGOUMwMDAxMDQwMTg0MDEyNDAxMjQ0MjI1RTcyRTRBRjQ0MjI0NDIyNDQyMjU0MjI0ODIyNDIyMjQyMjIwMjIzRkUwMDAwNTUKKzoyMEY5RTAwMDAyMDAwMTAwM0ZGRTIwMDQ0MDA4MDgwMDA4MjAwODcwMDk4MDBFMDAwODAwMDgwODA4MDgwODBDMDdGODAwMDBFMQorOjIwRkEwMDAwMDAyMDIwQTAyMEEwMjBBNEZDQkUyN0U0MjRBNDQ0QTQ0NEE0NDhCNDI4QTgxMEEwMjg4MjQ2ODI4NDdFMDAwMDM1Cis6MjBGQTIwMDAyMTEwMjExMDI3RkUyMTEwRkQ1MDIwQTAyMTEwMjIwODI3RkUyODAwMjNGODNBMDhDMjA4MDNGODAyMDgwMDAwMkQKKzoyMEZBNDAwMDBBMTA4QTEwNTdERTIyMjQ2RkM4OUFCRTFBQTIzRkFBNTJBQTk3MkExQUFBMTJBQTEyMTQyMjIyQTI0MjQyODBGNgorOjIwRkE2MDAwMTAxMDEyMTAxMTEwRkQxMDEwRkUxNDEwMTgxMDE3MTAzMTE4RDEyNDExMjYxMTQyMTMwMDE0ODA1MDdFMjAwMDM4Cis6MjBGQTgwMDA3REZDNDUwNDQ1RkM0NTA0N0RGQzU1MDQxMDAwMTNERTVDNDI1MTRBNTBDNjUxNEE1RTUyRTA0MjAxNEEwMDg0QkMKKzoyMEZBQTAwMDAwMjA3QzI0NDdFNjQ0Njg0NEIwN0NBODExMjYxMjY0NURGQzUxMDQ1MTA0NTFGQzVEMDRGMTA0MDFGQzAwMDA0NQorOjIwRkFDMDAwMDA0MDNDNjAyNDQwMjQ4ODNEMDQyN0ZFMjUwNDI0MDAzREZDMjUwNDI1MDQyNTA0MjUwNDQ1RkM1NTA0ODgwMDg4Cis6MjBGQUUwMDAwNDQwMDQ0MDdGRkUwNDQwMDIwMDA0MTAwODA4MTBGQzNGODgwMDAwMUZGMDEwMTAxMDEwMTAxMDFGRjAxMDEwMjYKKzoyMEZCMDAwMDEwNDAxMDYwMTA0MDEwODBGQzg4MTEwNDFCRkUxMDAwMzAwMEQxRkMxMTA0MTEwNDExMDQxMTA0NTFGQzIwMDBDNQorOjIwRkIyMDAwMDEwMDAxODAwMjAwMDQxMDA4MDgxMUZDM0YwODAwMDAxRkYwMTAxMDEwMTAxMDEwMTAxMDFGRjAxMDEwMDAwMDBCCis6MjBGQjQwMDAwMjAwN0ZGQzAyMDAzRkY4MDIwMEZGRkUwNDQwMDkyMDExMTgyOTJFQzc0NDA1QzAxOTIwNjExODA1MDAwMjAwN0EKKzoyMEZCNjAwMDAwMjBGRjIwMjgyMDI4MjBGRUZFQUEyMEFBMjBBQTIwQ0U1MDgyNTBGRTUwODJDODgyQThGRjI2ODIwNDAwMDBGRgorOjIwRkI4MDAwMDEwMDAxMDAwMTAwMDEwMDdGRkUwMTAwMDEwMDAxMDAwMjgwMDI0MDA0MjAwNTEwMDg5ODEwQ0MyMDg2NDAwNDdFCis6MjBGQkEwMDAwMTAwMDEwMDdGRkMwMTAwMDI4MDAyNDAwNTIwMDg5ODMwMDYwMTAwMDQ4ODI0ODQyNDEyNjQxMjQzRjAwMDAwRjQKKzoyMEZCQzAwMDIwODAxMDgwMTA4MDAwODA4RkZFNDA4MDUwODAxMDgwMjE0MDIxMjBDMjIwNDMxMDQ0ODg0ODhFNTAwNDAwMDA2QgorOjIwRkJFMDAwMTAwMDExRkMxMTA0MTE0NEZEMzQxMTI0MTEwNDE3RkUxMTA0MTMwNDFEMDRGMTA0NDIwNDAyMDQwNDE0MDgwODM4Cis6MjBGQzAwMDAyMDUwMjA2ODI3NDBGOTdFMjVDODI1NDgyQTdFMzI0ODY1NDhBNTdFMjk0ODMwNDgyMDQ4MjA3RUEwNDA0MDQwNzMKKzoyMEZDMjAwMDAxMDAwMjgwMDQ0MDBBMzAzMTBFQ0ZFNDAwNDAxRkYwMTAxMDExMTAxMTEwMTExMDEyOTAwNDYwMDgzMDMwMTA4MQorOjIwRkM0MDAwMDEwMDAwODAzRkZFMjBBMEFFOTA2MkZDMjM5MDMyOTA2QUZDQTQ5MDJDOTAyQUZDNTI5MDYwOTA0MEZFODA4MDg5Cis6MjBGQzYwMDA0MDUwMjA0ODJGNDAwMUZFOTI5MDRCOTA1NkZDMTQ5MDI2OTAyQTkwQ0FGQzUwOTA2MDkwNDA5MDQwRkU0MDgwNTcKKzoyMEZDODAwMDAwMDAxMUZDMTAwMDEwMDAxMDAwRkMwMDEzRkUxMDQwMTA2MDEwODAxQzg4MzEwNEMyN0UwN0M2MDIwNDAwMDBERQorOjIwRkNBMDAwMjA0MDI3RkUyMDAwMjNGQ0ZBMDQyMkY0NzI5NDZCRkNBMDAwQTFGODIxMDgyMUY4MjEwODIxRjgyMDAwMjdGRUZECis6MjBGQ0MwMDAwMTAwMDA4MDFGRkU5MDg4NTQ5MDU0QzAxNTMwMzIwODVDODA5NDkwMTRBMDI5NDAyMTIwNDIxMDhDMEUzMDA0NzkKKzoyMEZDRTAwMDQ3RkMyMEEwMjdGQzA0QTQ4N0ZDNDgwMDBCRjgxMjA4MTNGODEyMDgyM0Y4RTA0MDI3RkUyMDQwMjA0MDIwNDBBOQorOjIwRkQwMDAwMDdGQzQwQTAzN0ZDMjRBNDA3RkNFMDAwMjNGODIyMDgyM0Y4MjIwODIzRjgyODQwMzdGRTIwNDAwMDQwMDA0MDAwCis6MjBGRDIwMDA0MDQwMjA0ODMyNEMyMjUwMDRBMDAxMTBFMjBDMjQ0MDIxNDgyMTQ4MjI1MDIwQTAyODkwMzEwODIyMEUwNDA0QjcKKzoyMEZENDAwMDAwMDAxMUY4MTEwODExMDgxMTA4RkRGODExMDgxMTA4MTEwODExMDgxREY4MzEwOEUwMDA0MDAwMEZGRTAwMDA3QgorOjIwRkQ2MDAwMDA0MDBDNDA3MTU4MTE2MDEwNTAxQzg4NzM0ODEwNDAxRDQ4RjE3MDEwNjAxMDkwMTMwQTEwMDIwRkZFMDAwMDlDCis6MjBGRDgwMDAyMDAwMTlGQzExMDRGRDA0MDUwNDA5RkMxMzA0MzUwNDU5MDQ5NUZDMTUwNDEwMDAxMDAwMTdGRTEwMDAxMDAwNUUKKzoyMEZEQTAwMDAwNDBGQTQ0MjI0NDIzRkMyMjA0MjEwMDNGRkU2OTIwNjkyNEE5QTgyQTUwM0E1MDI0OTAyOTA4MTIwRTI0MDQyNAorOjIwRkRDMDAwMTAwMDEzRkUxMjA0RkQxMDExMEMxMjQ0MTg0MDE3RkUzMEMwRDE2MDExNTAxMjQ4MTQ0RTEwNDQ1MDQwMjA0MDdECis6MjBGREUwMDAwMDAwRkZGQzhBMDg4QTA4OEEwODg5MTA4OTEwODhBMDg4QTBGODQwODBBMDgxMzAwMjE4MEMwRTMwMDQwMDAwNUYKKzoyMEZFMDAwMDAxMDAyMTA4MjEwODNGRjgwODAwRkZGRTA4ODAwODg4MTA4ODE0OTAxNTQwMjk0MDIyMjA0NDE4OTgwRTIwMDREOQorOjIwRkUyMDAwMjAwMDEzRjgxMDEwMDAyMDg4NDA0ODgwNTFGQzEwOTQyMDk0RTEyNDI2MjQyMDQ0MjA4NDIzMDQyQzE0MjAwODNDCis6MjBGRTQwMDAwMDgwMjA0MDI3RkUyNDQwRkRGODI0NDgyN0ZFMjQ0ODI1RjgyNDQwMjVGODNEMDhDNTA4MDlGODExMDgwMDAwN0QKKzoyMEZFNjAwMDEwNDAxMDIwMTNGRTEyMjBGRkZDMTIyNDFCRkUxMjI0MzNGQ0QyMjAxM0ZDMTUwNDE1MDQxOTA0NTFGQzIxMDQ0RQorOjIwRkU4MDAwMDEwMDExMTAwRDE4MDkyNDNGRkUyMDA0NEZFODA4MjAwODIwMEZFMDAxMDAzRkZDMDEwMDAxMDA3RkZFMDAwMDVDCis6MjBGRUEwMDAwMTAwMDkyMDA1NDA3RkZDNDAwODBGRTAwODIwMEZFMDAxMDA3RkZDMDM4MDA1NDAwOTMwMzEwRUMxMDQwMTAwODgKKzoyMEZFQzAwMDAwMjA3OTI0NDhBODRCRkU3QTA0NERGODQ5MDg0OTA4NzlGODQ4MjA0ODIwNDlGQzQ4MjA0ODIwQUJGRTkwMDAzOAorOjIwRkVFMDAwMDEwMDAwODAzRkZDMjA4MDJGRjAyMDkwM0ZGQzIwOTAyRkYwMjA4MDJGRjAyODEwNDgxMDRGRjA4ODEwMDAwMEE3Cis6MjBGRjAwMDAxMDQwMTAyMDkzRkU1NjIwNUJGQ0ZFMjQzM0ZFM0EyNDU3RkM1MjIwNTIyMDkzRkMxNTA0MTUwNDE5RkMxMTA0MzAKKzoyMEZGMjAwMDEwNDAxODQ4MTI0QzExNDgyMTUwMjdGQzY0MDRBNUY0MjUxNDI1MTQyNTE0MjVGNDI1MDQyNDE0MjQwODAwMDA3NAorOjIwRkY0MDAwMTA0MDIwNDg3QTRDNDk1MDc4NDA0QkZDN0EwNDRBRjRGQTk0MEE5NDFBOTQyQUY0NEE5NDhBMDQyQTE0MTIwODEzCis6MjBGRjYwMDAyMDQwMTA0MDEyNDgwMTQ4ODk1MDRGRkM1NDA0MTQwNDI1RTQyNTI0RTUyNDI1RTQyNDA0MjQwNDI0MTQyNDA4ODIKKzoyMEZGODAwMDEwNDAxMjQ4MTE0QzdENTAxMDQwMTNGOEZFMDgxMkU4NTJBODVFQTg1MkU4NTIwODUyMjhCQTEwODdGRTAwMDBENQorOjIwRkZBMDAwMjNGODEwMzA4OEMwNEJGRTUwOTQxMTI0NjI0NDIxOTQyNzA4MDEzMDExNDAxMjgwMjQ0MDA4MzAzMDFFQzAwNEYwCis6MjBGRkMwMDAxMDgwMTA4MDExRkUxMTAyRkE4MjExRjIxMjQyMTg0MjM3RkFEMDQyMTI0QTEzRkExMjBBMTAwMjUwMEEyMDA0NUEKKzoyMEZGRTAwMDQwODAyMDgwMjdGQzAwODA5N0ZDNTEwMDVGRkUyMjEwMjIxMDI1RkVDNDEwNDg5MDQ4NTA1MDEwNDA1MDQwMjBBMgorOjAyMDAwMDA0MDAwMkY4Cis6MjAwMDAwMDA0MDNFMjdDMDIwNDIwMjIyOTEyNDUwMDAxMEMwMjMxRTIyMDIyMjAyQzNERTQyMDI0MjAyNDIwMjQzRkU0MjAyQTUKKzoyMDAwMjAwMDIwODAzMDgwMjFGODIxMTA0QUEwNDg0MEYxQjAyNjRFNDA0MEZCRkMwMDQwMDE0ODNBNDRDNDQ0MDk0MDAwODA1MAorOjIwMDA0MDAwMDQyMEZGRkUwNDIwMTQyMDFGRkMyODA0NEZFNDg5MDQxMTA0N0ZGNDAxMDQxMTE0MTExNDFGRjQwMDE0MDAwODFBCis6MjAwMDYwMDAyMEEwMjBBMDIwQTBGOEE2MjJBNDcxQTg2OEEwQTBCMEExQTgyNkFDMjBBNDIxMjAyMTIyMjIyMjJDMUUwMDAwN0EKKzoyMDAwODAwMDAxNDA0MTQwMjk0ODI1NTAwNTYwMDE0MEUzNjAyNTUwMjk0ODIyNDQyMjQ0MjQzQzIwMDA1MDAwOEZGRTAwMDBDMAorOjIwMDBBMDAwMjEwMDExMDAxM0ZDMDIwNDg1MDQ1M0Y0NTQ4NDEwODQyN0Y0MjA4NEU0OTQyNDk0MjdGNDIwMDQyMDE0MjAwODMzCis6MjAwMEMwMDAwMTAwNzkwMDRCRkM0QTA0NTUwNDYxRjQ1MjQ0NEJGQzQ4NDQ2OTU0NTE1NDQxRjQ0MDA0NDAwNDQwMTQ0MDA4M0YKKzoyMDAwRTAwMDQwMDgyMDA4MzAwODIwMDgwN0ZFMDAwOEYwMDgxMTA4MTA4ODEwQzgxMDg4MTAwODE0MDgxODQ4MTAyODAwMTAyRQorOjIwMDEwMDAwMDIwMDAyMDA3RkZFMDQ0MDBGRTAzODE4Q0ZFRTA4MDQwRkUwMDgwMEZGRkUwNDAwMDgyMDExRjAzRjE4MDAxMDhBCis6MjAwMTIwMDAxMDQwMTA0MDUzRkM1MDQwN0M0MDk3RkUxMDEwMUMxMDMzRkVEMDEwMTExMDEwOTAxMDkwMTAxMDEwNTAxMDIwODEKKzoyMDAxNDAwMDA0NDAwNDQwRkZGRTA0NDA3QTQ4NDk1MDRCRkM3ODgwNEJGQzQ5MTA3QTRDNEQ0NDQ4RDA0OTQ4OEE0ODk4QzA3MgorOjIwMDE2MDAwMDQ0ODdCNEM0QTUwNEZGQzc4ODA0RkZFNDkxMDRCRUM3RDI2NDkyNDQ5Rjg0ODA4NEJFODQ4MDhBODI4OTAxMDFFCis6MjAwMTgwMDAwMTAwMDA4NDFGRkU5MTAwNTNGODU1MTAxOEEwMTBDMDMzMzA1QzhFQTA2NDIwMjAyMTAwNDBDMDQwNjA4MDIwMDIKKzoyMDAxQTAwMDExMTAwOTIwM0ZGQzAyMDBGRkZFMDUyMDA4OTAzRkVFQzAwNDBGRTAwMDAwMEZFMDAwMDAxRkYwMTAxMDFGRjBGMQorOjIwMDFDMDAwMTEwODEwOTAxMEEwRkJGQzEwNDQzODQ0MzdGQzUyNDA1MjQwOTNGRTEwQzIxMTQyMTI0QTE0NDQxMDQwMTA0MDhFCis6MjAwMUUwMDAwMDA0M0YwNDIxMjQzRjI0MjEyNDNGMjQyMDI0M0ZBNDRBQTQ5MkE0MTRBNDI0ODRDODg0MTA5NDYzODgwMTAwRTEKKzoyMDAyMDAwMDAwMDA3REZDNDUwNDQ1RkM0NTA0N0QwNDExRkMxMTAwNURGRTUyNTI1NDkyNTEyMjUyNDI1ODgyRTMxNDAwMDgyRQorOjIwMDIyMDAwMjA4NDIwNDgzREZDMjAyNDQwMjQ3REZDOTEyMDExMjBGREZFMTA2MjEwQTIxMEEyMTUyQTFBMjQxMDIwMDAyMEQ4Cis6MjAwMjQwMDAxMDAwMTFGODExMDhGREY4MTEwODExRjgxODAwMzdGQzUwNDA5MjQwMTI3QzEyNDAxNjQwMTVDMDU4N0UyMDAwQTcKKzoyMDAyNjAwMDAwMDAzREZFMjQyMDNDNDAyNEZDM0M4NDAwQTRGRUE0MDhBNDI4QTQyRTMwMjg0ODU4ODQ0QzAwODNGRTAwMDA2RQorOjIwMDI4MDAwMDA0MDdDMjA0N0ZFNDUwODQ0OTA3RkZFMTIyMjEyMjQ1REZDNTEyNDUxMjQ1MTI0NUQzNEUxMjgwMDIwMDAyMEEzCis6MjAwMkEwMDAwMDgwMDA0NEY3RkU5MTA4OTA5MDk3RkU5NDQ0OTg0ODkzRjhGMjQ4OTI0ODgyNDgwMjY4MDI1MDAwNDAwMDQwREEKKzoyMDAyQzAwMDEwNDAxODQwMTA0MDIwNDAzN0ZDNjBDMEEwRTAyMTYwMjE1MDIyNDgyNDRFMkJGNDIwNDAyMDQwMjA0MDAwMDBFNgorOjIwMDJFMDAwMDgxMDA4MTAzRTdDMDgxMDdFRkUwODMwMTQ0ODIyODZERkY0MTAxMDFGRjAxMDEwMTAxMDFGRjAxMDEwMDAwMEQzCis6MjAwMzAwMDAwMDQwMDdGQ0YwNDA5N0ZFOTAwNDkzRjg5MjQ4OTNGODkyNDg5N0ZFRjA0NDkyNzgwMjQwMDU0MDA4QzAxMDNFMDcKKzoyMDAzMjAwMDIwMDAyM0Y4MjIwODMzRjhBQTA4QUJGOEExMDAyMTAwMjNGRTJDOTIyMTEyMjYyMjIwNDIyMTgyMjYwQTIwMDQ2MworOjIwMDM0MDAwMjIxMDExMTAxMTIwMDdGQzgwNDQ1MDQ0MTdGQzI0NDAyNDQwMjdGRUMwQzI0MTQyNDY0MjU4NEE0MDQ0NDA0MDhCCis6MjAwMzYwMDAyMTAyMTIwMjdGODIwNDkyMDQ5MjdGOTI0NDkyNDQxMjdGRDIwQzUyMTQ1MjI1QzI0NDgyODQwMjA0MEEwNDA0N0UKKzoyMDAzODAwMDAwMDAzRkY4MjAwODIwMDgzRkY4MjkxMDI5MTAzRkZFMjkxMDI5MTAyOTEwMjlGMDQ4MDA0RkZDODgwMDAwMDAxMQorOjIwMDNBMDAwMDAwMDNGRkMwMTAwMDEwMDAxMDAwMTAwN0ZGRTAxMDAwMTAwMDI4MDAyNDAwNDIwMDgxODEwMEUyMDA0NDAwMEY1Cis6MjAwM0MwMDAyMDAwMTdGODEwODAwMDgwOEZGRTQxNDA1MTIwMTIxODI0OEUzODg0RTA4MDI0QzgyNEE0MjhBNDIyODAyMTAwMjQKKzoyMDAzRTAwMDIwNDAyMDQwMjdGRTIwNDBGQkY4MjIwODIzRjgyMjA4MjNGODIyMDgzQkY4RTIwODBGRkUwMTEwMDIwQzA0MDRDMAorOjIwMDQwMDAwMDAwMDAwMDAzRkY4MjEwODIxMDgyMTA4MjEwODNGRjgyMTA4MjEwODIxMDgyMTA4M0ZGODIwMDgyMDA4MDAwMDlGCis6MjAwNDIwMDAwRTg4RjA4ODEwODgxMDg4MTFGRUZFODgxMDg4MTA4ODdDRjg0NDg4NDQ4ODQ0ODg0NDg4N0NGODQ0ODgwMDAwRDUKKzoyMDA0NDAwMDIwMDAyMDdDMjdDMDMwNDBBODQwQTdGRUEwNDAyMDQwMjA0MDIzRjgyMjA4MjIwODIyMDgyMjA4MjNGODAwMDA3RQorOjIwMDQ2MDAwMEMwMEYzRkMxMDQwMTA0MEZGRkUxMDkwMTA4ODExNEU3RTQ0NDU2ODQ1NTQ0NTUyNDY1MjdENDA0NDgwMDAwMDk1Cis6MjAwNDgwMDAwMEEwNzhBMDRCRjg0QUE4N0FBODRBQTg0QkY4N0FBODRBQTg0RkZFNDgwMDQ5MjA0OTkwNDkwOEFBMDg5NDAwOTYKKzoyMDA0QTAwMDEwQTAxMEEwMTBBMEZDQTAxMEFDMTJCMDE1QTAxOEIwMzFBOEQyQUMxRDI0MTEyMDEyMjIxMjIyNTQxRTIwMDBEMgorOjIwMDRDMDAwMDQwMDA0MDAwRkYwMEMyMDEyNDA2MTgwMDI2MDBEMUU3MTA4MUZGQzAxMDAwOTIwMTExODIxMDgwNTAwMDIwMDEyCis6MjAwNEUwMDA0MDAwMjdGQzMwODQyMDg0MDEwNDAyMzg3NDEwMTNGODEyMDgxMjA4MTIwODEzRjgxMjA4MTAwMDJGRkU0MDAwODMKKzoyMDA1MDAwMDAwQTA3OEEwNDhBNDRDQTQ0QUE4N0FCMDQ4QTA0OUIwN0FBODRDQTQ0OEEwNDkyMDc5MjI0QTIyNDIxRTA0MDA3QworOjIwMDUyMDAwMDBBMDc4QTA0OEEwNENBNDRBQUU3OUIwMTBBMDUxQTA1RUIwNTRBODUwQTQ1MTIwNUQyNEUyMjYwNDNDMDgwMDI5Cis6MjAwNTQwMDAwMDIwN0MyMDQ0MjA0NDIwNDQzRTU0MjA1NDIwNTQyMDU1RkM1NTA0NTUwNDExMDQyOTA0MjVGQzQ1MDQ4MDAwMEEKKzoyMDA1NjAwMDEwMjAxMDIwMjEyMDNEMjA0MUZDNzkyMDkyMjAxM0ZFRkMyMDEwMjAxMDUwMTI1MDE0ODgxOTBFMTYwNDAwMDBGOQorOjIwMDU4MDAwMTA0MDEwNDAxMDQwN0M0MDU0N0M1NDQwNTQ0MDU0NDA1NUY4NTUwODVEMDgxMTA4MTEwODExRjgxMTA4MTAwMEIwCis6MjAwNUEwMDAwMDAwM0ZGRTIwMDAyMDAwMjAwMDJGRkMyMDQwMjA0MDIwNDAyMDQwMjA0MDIwNDA0MDQwNDE0MDgwODAwMDAwMzIKKzoyMDA1QzAwMDAwMEM3OUYwNDkwMDQ5MDA0OTAwNDlGRTQ5MTA0OTEwNzkxMDQ5MTA0MjEwMDIxMDA0MTAwNDEwMDgxMDEwMDAzQworOjIwMDVFMDAwMTAwMDEzRkMxMDA4MTQxMDU0MjA1ODU4NTE4Njk2MDIxMDAwMjlGQzI0MjAyNDIwNDAyMDQ3RkU4MDAwMDAwMDJCCis6MjAwNjAwMDAyMDAwMTAwMDE3RkUwMDIwODAyMDQ4MjAxMDIwMTAyMDIwMjAyMDIwRTAyMDIwMjAyMDIwMjAyMDIwQTAwMDQwQ0QKKzoyMDA2MjAwMDAwMDBGODNDMEJFMDEwMjAxMDIwMjAyMDdGRkUwODIwNDgyMDQ4MjAyQkZDMTAwMDI4MDA0NjAwODFGRTAwMDA2MgorOjIwMDY0MDAwMDg0MDBDMjAwQkZFMTAwMDExRjgzMTA4NTFGODkwMDAxN0ZFMTQwMjExRkMxMDIwMTAyMDEwMjAxMEEwMTA0MDJBCis6MjAwNjYwMDAwMTAwN0ZGQzAwMDAxRkYwMTAxMDFGRjAwMDA0N0ZGRTQwMDQ5RkY4MDA4MDAwODAwMDgwMDQ4MDAyODAwMTAwREQKKzoyMDA2ODAwMDAxMDAwMDgwM0ZGRTIwMDAyRTFDMjJFMDIyMjAyNEZDMjgyMDI0MjAyNDIwMzVGRTRDMDA0QTAwOTFGRTIwMDA4NgorOjIwMDZBMDAwMTAwMDEwMEUxNzcwRkQxMDExMTAxMjEwMUE3RTM3OTBEMDkwMTkxMDE1MTAxMjdDMTMwMDE0ODA1ODdFMjAwMEZECis6MjAwNkMwMDAwODAwMTMwQzNENzAyNTEwMzUxMDJEMTAyN0ZFRkM5MDI0OTAzNDkwMkVCQzI1MDAyNDgwNDU0MDU1M0U4QTAwMTEKKzoyMDA2RTAwMDQwMDAyN0Y4MjA5MDAwNjAwN0Y4MDQ0OEU3RjgyNDQ4MjQ0ODI3RjgyNDQ4MjQ2ODI0NTA1MDAwOEZGRTAwMDAyMQorOjIwMDcwMDAwMjAwMDIzRkMyMjA0RkFGNDIyMDQ3MjA0NkFGNDZBOTRBMjk0QTI5NDIyRjQyMjA0MjIwNDIyMDQyMjE0MjIwODNBCis6MjAwNzIwMDAwMDAwRkVGRTI4ODIyODgyRkVGRUFBODJBQUJBQUFBQUNFQUE4MkFBRkVCQTgyODI4MjgyRkU4MjgyOEEwMDg0MTUKKzoyMDA3NDAwMDAwNDBGN0ZDOTExMDkwQTA5RkZFRjAwMDkzRjg5MjQ4RjNGODkyNDg5M0Y4OTA0MEY3RkM5MDQwMEZGRTAwMDBCMworOjIwMDc2MDAwMDAwMDdGRkM0MDA0NDAwNDVGRjQ0MDA0NDAwNDRGRTQ0ODI0NDgyNDQ4MjQ0RkU0NDgyNDQwMDQ0MDE0NDAwOEE1Cis6MjAwNzgwMDAyMDAwMjFGRTNEMDIyMTAyNDFGQTdEMDJBMTdBMjE0QUZENEEyMTRBMjE3QTIxMDIyNTAyMjkwMjMxMEEyMTA0NTYKKzoyMDA3QTAwMDAwMDAzRjEwMjExODMxMzAyRDQ0MjU4NjIxMEM3Rjk4MjEyMDIxNDQyMTA2MjEwQzQxMTg0NTIwODI0MDAwMDA3NgorOjIwMDdDMDAwMDIwMDAxMDAzRkY4MDgyMEZGRkUwMDAwMUZGMDExMTAxRkYwMTExMDFGRjAwMTAwM0ZGODAxMDBGRkZFMDAwMDE1Cis6MjAwN0UwMDAxMDAwMTFGQzEwNDhGQzMwMTNGRTNBMjIzNjIyNTNGRTUyMjI5MjIyMTNGRTEyMjIxMjIyMTIyMjEyMkExMjI0RkIKKzoyMDA4MDAwMDEwMDAxMUZFMTA0NEZDMjgxMUZFMTEyMjE1MjIxOUZFMzEyMkQxMjIxMUZFMTEyMjExMjIxMTIyNTEyQTIxMjQwMworOjIwMDgyMDAwMjA0MDNFN0UyOEEwNDUxMEJGRkMyMDA0MjAwNDJGRjQyMDA0MjdFNDI0MjQyNDI0MjdFNDIwMDQyMDE0MjAwODBGCis6MjAwODQwMDAxMDQwMTAyMDIzRkUyMDQwNDQ0MEY4ODgwOTA0MTNGRTIwOTQ3QzkwMDA5MDAwOTAxRDEyRTExMjAyMEUwNDAwNUYKKzoyMDA4NjAwMDAxMDAwMDgwMUZGRTEwMDA5N0Y4NTAxMDU4QTAxN0ZDMzQ0NDU3RkM5NDQ0MjdGQzI0NDQyNDQ0NDQ1NDg0MDgxNgorOjIwMDg4MDAwMTA4MDE4ODAxMTYwMjIxODM1RUU2ODA0QTc4ODI0QTgyNEE4MjdBODI0QTgyN0E4MjQ4ODI2QTgyNTEwMDAwMDE2Cis6MjAwOEEwMDAxMDAwMTFGMDExMTAxMTEwRkQxMDEyMTIxMDBFMTgwMDEzRjgzMTEwRDA5MDEwQTAxMDQwMTBCMDUzMEUyQzA0ODEKKzoyMDA4QzAwMDAwODAxMDgwMEM4MDA0ODAxMDgwMEM4MDA4ODAwMDgwRkZGRTAwODAwMTQwMDIyMDA0MzAwODE4MTAwQzIwMDg1QworOjIwMDhFMDAwMDA3ODQ3ODAyMDgwMkZGQzAxRTAwMjkwRUZFQzIyNDAyMjc4MjQwODI0MDgyODI4MjAxMDUwMDA4RkZDMDAwMEYxCis6MjAwOTAwMDAwN0UwMDQyMDA0MjAwNDIwMDQyMDA0MjAzQzdDMjQyNDIwMDQyMDA0MjAwNDIwMDQyMDA0M0ZGQzIwMDQwMDAwMjkKKzoyMDA5MjAwMDAwRjg3RjAwMDEwMDAxMDQ3RkZFMDM0MDA1MjAwOTFDMTEwODI3QzAwNDQwMDQ0MDA4NDAwODQyMTA0MjYwM0UyNgorOjIwMDk0MDAwMDIwMDAxMDA3RkZFNDI0NDA0MjAwOTE4MzE0ODAxMjA3RkZFMDEwMDAyODAwMjQwMDQyMDA4MTgzMDBFQzAwNDJBCis6MjAwOTYwMDAwMDAwN0ZGQzQ0MDQ0N0U0NDQ0NDRBODQ3MTA0NDJDNDRDM0M3MTE0NDA4NDQyMDQ0MTg0NDEwNDdGRkM0MDA0RDgKKzoyMDA5ODAwMDEwNDAxODQwMjA0MDUzRjg5ODQwMTA0MDI3RkM2MDAwQTA0MDIwNDAyMjc4MjI0MDIyNDAyNTQwMjhGRTMwMDAwMAorOjIwMDlBMDAwMDA4MDQwQzAyMTIwMjIxMDBERUMwMDQwRTA0MDI3RjgyMDQwMjE1MDIyNDgyQzQ4MjE0MDUwODA4RkZFMDAwMDVGCis6MjAwOUMwMDA0MDQwMjA0MDIwQTA4MTEwNDIwODU1RjYxMDQwMjA0MDI3RkNDMDQwNDI1MDQyNDg0NDRDNDg0NDQxNDA0MDgwMDUKKzoyMDA5RTAwMDNGRkMyMDA0M0ZGQzIwODAyMDg4MjdGMDIwQTAzRkZFMjMwMDJGRjgzNDA4MjdGODQ0MDg0NDA4ODdGODA0MDgzOQorOjIwMEEwMDAwMDAwMDAxMDAwMTAwMDEwMDAxMDg3RkZDMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwNEZGRkUwMDAwMDAwMDQ3Cis6MjAwQTIwMDAwMDQwMDA0MDAwNDA3QzQwNDQ0MDQ3RkM0NDQwNDQ0MDQ0NDA0NDQwNDQ0MDdDNDA0NDQwNDdGRTAwMDAwMDAwNUEKKzoyMDBBNDAwMDA0MDAwN0YwMDgyMDEwNDAzRkY4NTEwODkxMDgxMTA4MUZGODAyQTAwMjkwMDQ5ODA0OTIwODgyMTBGRTIwMDBBQworOjIwMEE2MDAwNDA0MDIyNDQyMjQ0MEE0NDhCRkM1MDAwNTdGRTEwODAyN0ZDMjRBNEU0QTQyNEE0MjRBNDI0QTQyNEI0MjQwODUxCis6MjAwQTgwMDAwMDAwN0ZGQzQwODQ0MDg0NUZGNDQxODQ0MTg0NDI4NDQ0ODQ0ODg0NTA4NDYwODQ0Mjg0NDEwNDdGRkM0MDA0OUEKKzoyMDBBQTAwMDExMjAxMTkwMTExMEZERkUxMzEwMTUxMDExRkUxOTEwMzExMEQxMTAxMUZFMTExMDExMTAxMTEwNTFGRTIxMDBDNAorOjIwMEFDMDAwMDAwMDFERkVGMDIwMTA0MEZFRkMzODg0NTRBNDkwQTQzQ0E0MjRBNDI0QTQyNDMwNDY0ODQ0ODY4MzAyMDAwMDE4Cis6MjAwQUUwMDAwMDAwN0NGODRBODg0QUY4Nzg4ODQ4ODg0RUY4NEFBMjdBOTQ0QTk4NEFBODRCQ0M0QTg4NEEwMEFERkU5MDAwMUMKKzoyMDBCMDAwMDEyMDgxMThDMTA5MDdERjg1NTA4NTUwODU1MDg1NTA4N0RGODUwOTAxODkwMTQ5MDFFOTJFNTEyMDEwRTAyMDAzQworOjIwMEIyMDAwNDAwMDM0NzgyMjQ4RkI3ODBBNDgxMDQ4Mjg3ODc2NTJCMjU0MkE0ODIyNTQyMjYyMjI0MDI1ODAyODdFMjAwMDlCCis6MjAwQjQwMDA0MDAwMjdGMDI0MTAwN0YwMDQxMDA0MTBFN0YwMjQ4ODI0NTAyNDIwMjUxMDI2MTgyNDA4NTAwMDhGRkUwMDAwMzQKKzoyMDBCNjAwMDAwMDAzRkY4MDIwMDAyMDBGRkZFMDQ4MDA4NDAxMDIwMjAxQzVGRjg5MDEwMTAxMDEwMTAxRkYwMTAxMDAwMDA5RgorOjIwMEI4MDAwMDIwMDAyMDAwMjAwRkZGODAyMDAyMjEwMjIxMDIyMTAyMjEwM0ZGMDIyMTAwMjA0MDIwNDAyMDYwMUZDMDAwMDFDCis6MjAwQkEwMDAzRjc4MjE0ODNGNDgyQTg2M0Y3QzJBNDg1RjMwOEE0ODExODYxRkYwMTAxMDFGRjAxMDEwMUZGMDEwMTAxMDMwRUMKKzoyMDBCQzAwMDEwODAxMDgwMTFGRUZEMDAxMjIwMTQyNDExM0MxOUU0MzcyNEQxMjQxMTM0MTEyODExMjIxMTAyNTBGRTIwMDBCMworOjIwMEJFMDAwMjAwMDIwM0MyM0MwRjg0MDIwNDAyMDQwMjg0MDM3RkVFMDQwMjA0MDIwNDAyMDQwMjA0MjIwNDJBMDNFNDAwMERGCis6MjAwQzAwMDAwMTA4M0NDQzI0OTAyNUZDM0QwNDI1MDQyNTA0MjVGQzNDNTAyNDUwMjQ1MDQ0NTA0NDkyNTQ5Mjg5MEUwMjAwREQKKzoyMDBDMjAwMDA4NDAxMDIwN0MyMDY1RkU1NTA0NDUwODU0NDA0ODRDN0U3MDAyNDAxQTQwRTI0MDAyNDIwQTQyMDQzRTAwMDBGMQorOjIwMEM0MDAwMDA0MDc4MjA0ODIwNTNGRTYyMDQ1MDgwNDg4MDQ4OTg0OEUwNjg4MDUwODA0MDg0NDA4NDQwODQ0MDdDNDAwMEZECis6MjAwQzYwMDAwMDQwRjg0MDA4NDA0ODQwNEJGQzQ4NDA0ODQwN0M0MDA0NDAzNEEwQzRBMDA1MTAwNTEwMkEwRTE0MDQwMDAwMjMKKzoyMDBDODAwMDAwNDBGODIwMDgyMDRCRkU0QTA0NEE4ODQ4ODA3QzgwMDQ5ODA0RTAzNDgwQzQ4MDA0ODIyNDgyMTg3RTAwMDA2RAorOjIwMENBMDAwMjAxMDI3OTAyNEZFRkQxMDI1MjA3NjNDNkQ2NEE0QkNBNEE0MjRBNDI2QkMyNTI0MjQyNDI0MjQyNDJDMjQyNDkzCis6MjAwQ0MwMDAwMDEwMDFGODNFMjAxMjMwMDlBMDA5NDAwNDAwRkZGRTA0MjAwODIwMTg0MDA2ODAwMUMwMDYzMDE4MEM2MDA0Q0YKKzoyMDBDRTAwMDEwMDAxM0ZFMTA0MEZFNDAxMDQwMTQ4MDE4ODAxMEZDMzE4NEQxODQxMjg0MTQ4NDEwODQxMEZDNTA4NDIwMDBGMQorOjIwMEQwMDAwMDAwMDAwM0NGN0MwOTA0MDk3RkM5MjUwOTI1MDk3RkM5MjUwRjI1MDkyNTAwRkZFMDA0MDAwNDAwN0ZDMDAwMDkwCis6MjAwRDIwMDAxMDgwMTA2MDEwMjBGRkZFMTIwNDEwOTAxOTBDMTIwNDMxRjBEMDIwMTA0MDEwODIxMTAyMTEwMjUwRkUyMDAwMEUKKzoyMDBENDAwMDAwNDAwMDQwRjA0MDk3RkM5MDQwOTA0MDlGRkU5MDQwOTA0MEYwNDA5N0ZDODA0MDAwNDAwMDQwMUZGRTAwMDA1MworOjIwMEQ2MDAwMTAwMDEwMjAxMDIwN0RGQzU0MjA1NDIwNTdGRTU0MDA3QzIwNTAyMDE1RkMxRTIwRjQyMDQwMjAwM0ZFMDAwMDI5Cis6MjAwRDgwMDAyMDQwMTA0MDEwNDAwN0ZDODA0MDQ4NDA0RkZFMTA0MDEwNDAyMDQwRTdGQzIwNDAyMDQwMjA0MDJGRkUyMDAwNkIKKzoyMDBEQTAwMDEwNDAxODQwMTA0MDExRkNGQzQwMjQ0MDJCRkUyODAwMjg0MDI4NDAxM0ZDMTA0MDI4NDA0ODQwODdGRTAwMDA5OQorOjIwMERDMDAwMDAwMEZGRkUwODAwMDgwMDA4MDAwRkUwMDgyMDBDMjAwQTIwMEIyMDA5MjAxMDQyMTI0MjE0NDIxODNFMTAwMERCCis6MjAwREUwMDAyMDQwMTA0MDEwNDBGRkZFMDQ0MDA4NDAxN0ZDMzA0MDU0RTA5OEUwMTU1MDEyNDgxNDQ2MTA0NDEwNDAxMDQwMkUKKzoyMDBFMDAwMDAwMDA3RkZDMDA4MDAzNjAwRDE4NzEwNjAxMDI3RkZDMDEwMDAxMDAxMUY4MTEwMDExMDAxMTAwRkZGRTAwMDAxRgorOjIwMEUyMDAwMDgyMDA4MjAwRjIwMTEyMDExMjAyMTMwNTIyODhBMjQwQzIyMDQyMjA4MjAxMDIwMjAyMDQwMjA4MDIwMDAyMDRDCis6MjAwRTQwMDAwMDQwRkMyMDAzRkUwMjA0NzkwMDQ5M0M0OUE0N0FBNDAyQTQ4REI0NDhBODUxMjAzRDIyRTIyMjA0MUUwODAwNTEKKzoyMDBFNjAwMDAxMDBGRkZFMDI0MDEyNTAxQTRDMjI0NDdGRjgwMDA4MUZGODEwMDAxMDAwMUZGQzAwMDQwMDA0MDAyODAwMTBGMworOjIwMEU4MDAwMjA4MDEwNDAxN0ZFMDhBMDhBQTQ1NEEyNTNGODEwMDgyM0Y4MjIwMEUzRkMyMDA0MjAwNDIwMDQyMDE0MjAwODNBCis6MjAwRUEwMDAwMDAwRjlGODIwMDAyMDAwMjAwMDIzRkVGODkwMjA5MDIwOTAyMDkwMzkxMEMxMTAwMjEyMDQxMjA4MEUxMDAwQkUKKzoyMDBFQzAwMDAwMDA3REZFMDAyMDAwNDBGRUZDMjg4NDI4QTQyOEE0MjhBNDI4QTQyQUE0NEMzMDQ4NDg4MDg2MDMwMjAwMDA3QworOjIwMEVFMDAwMDIwMDAyMDAwMjAwMDIyMDdGRjAwMjIwMDIyMDBBMjAwNjIwMDIyMDA1MjAwNTI0MDgyNDMwMjZDMDFDMDAwMEY5Cis6MjAwRjAwMDAxMDQwMTAyMDEzRkUxMjAyMTQwNDU5RjA1MDAwOTAwMDE3RkMyOTIwMjUyMDI1MjA0MjIyODQyMjA4MUUxMDAwQzUKKzoyMDBGMjAwMDAyMDAwMTAwM0ZGRTIwMDQ0MDA4MUZGMDAwMDA3RkZDMDQ0MDA0NDAwNDQwMDg0MDA4NDQxMDQ0MjAzQzQwMDAyQgorOjIwMEY0MDAwMDA0MEZDMjAxM0ZFMTIwMjI1MDQyMTAwMzlGQzZBNjRBRDY0MjhBNDI4QjQyOTI4MzkyMDJBMjIyNDIyMDgxRUE4Cis6MjAwRjYwMDAxMDgwMTA4MDExRjhGRDEwMTNGQzEyNDQxNjQ0MUE0NDMzRkNEMDYwMTBBMDEwQTAxMTIyMTEyMjUyMUUyNDAwNjUKKzoyMDBGODAwMDAwODAwMDgwNzlGODRBMTA0QzIwNEJGQzdBNDQ0QTQ0NEJGQzRBNDA0OEEwNzhBMDAxMjIwNjIyMzgxRTAwMDAxNQorOjIwMEZBMDAwMjA0MDMwMjA0M0ZFRkEwMjhDMDQ4OUY4ODgwMEY4MDA4RkZFODkyMDg5MjBGOTIwODkyMjgyMjIwNDFFMDgwMDQyCis6MjAwRkMwMDAyMDgwMjA0MDI3RkUzNDA0QUEwMEEyMDBBM0JDMjRBNDI0QTQyQUI0MjJBODIxMjAyMTIyMjIyMjI0MUUyMDAwQTcKKzoyMDBGRTAwMDAxMDAwMDgwM0ZGRTIwMDQ0ODA4MEU3ODEyNDgxMjQ4MzI0ODRBNDg4NDc4MDQ1MDA4NDQxMDQ0MjA3QzQwMDBBRAorOjIwMTAwMDAwMjA0MDMwMjAyM0ZFMjIwMkZEMDQ0OTAwNDlCQzRBQTQ1NEE0MkFBNDEyQUMyRDIwMjkyMjQyMjI4NDFFMDgwMDc0Cis6MjAxMDIwMDAwMDAwN0ZGRTAyMDAwMjAwMDIxMDAzRjgwMjEwMDQxMDA0MTAwNDEwMDgxMDA4MTAxMDEwMjBFMDQwNDAwMDAwMDQKKzoyMDEwNDAwMDAwNDA3ODIwNEJGRTRBMDQ3QzA4NDkwMDQ5REM0OTU0N0E1NDRENTQ0ODlDNDg5MDQ5MTI0OTEyNkExRTk0MDA5NQorOjIwMTA2MDAwMjAwMDE3RkUxMDQwMDA0MDg4NDA0ODQwNTA0MDEzRkMyMDQwRTA0MDIwNDAyMDQwMjA0MDJGRkUyMDAwMDAwMENGCis6MjAxMDgwMDAwMDA4N0ZGQzAxMDAwMTAwMDEwMDAxMDAwMTA4M0ZGQzAxMDAwMTAwMDEwMDAxMDAwMTA0RkZGRTAwMDAwMDAwN0YKKzoyMDEwQTAwMDAyMDAwMTAwMDA4MDAwMDRGRkZFMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAzRkZDMTAwMDAwMDBFMQorOjIwMTBDMDAwMTAwMDEzRkUxMDIwRkMyMDEwMjAzMDIwMzgyMDU1RkM1NDIwOTAyMDEwMjAxMDIwMTAyMDEwMjAxM0ZFMTAwMDc1Cis6MjAxMEUwMDAwMDAwN0ZGQzQwMDQ0MTA0NTExNDRBOUM0NDU0NDQyNDRBMjQ0QTU0NTE5NDYxMDQ0MDA0NDAxQzQwMDgwMDAwNjMKKzoyMDExMDAwMDEwODAxODYwMTA0MDI3RkU1MDQwOTg0MDEwNDAzMDQwNTNGQzkwNDAxMDQwMTA0MDEwNDAxMDQwMTdGRTEwMDBBNgorOjIwMTEyMDAwMDAwMDAzRkM3QzQwNDQ0MDQ0NDA0NDQwN0M0MDQ1RkM0NDQwNDQ0MDQ0NDA3QzQwMDA0MDAwNDAwN0ZFMDAwMDlFCis6MjAxMTQwMDAxMDAwMDhGQ0ZFODQyMEZDMjA4NDI0RkMyODg0MzExQzAwMDAzRkZDMDEwMDFGRjgwMTAwMDEwMDdGRkUwMDAwNEUKKzoyMDExNjAwMDAxMDAwMDgwRkZGRTEwMDAxMDAwMTAwMDEwMDAxRkZDMDAwMDA5MDAyODg4Mjg4NDI4MTY0ODE0NDdGMDAwMDA2MAorOjIwMTE4MDAwMDIwMDAxMDBGRkZFMTAwMDEwMDAxRkY4MDIwMDAyMDBGRkZFMDQyMDA4MjAwRTQwMDE4MDA2NjAxODFDNjAwOEZBCis6MjAxMUEwMDAwMDQwMDA1MDAwNDgzRkZDMjA0MDNGNDgyODRDMjg0ODNGNTAyOTMwMjkyMDI2MjAyNTUyNDg4QTUzMDQ4MDAwQkEKKzoyMDExQzAwMDAxMDAyMTA0M0ZGQzAwODA3REZDMTEyNEZGRkMzOTI0NTUyNDIxRkNGQzU0NDg1NDMwNUUyODkyNDQ5RTg1MDBGNworOjIwMTFFMDAwMjIxMDMyMTgyQTkwNEFBMEFGQkUzMDY0MkZBNDYwMjRBN0E0MjQ5NDI0OTQyNDg4MjRENDI4QTQzMDQ2MjA4NDMyCis6MjAxMjAwMDAwNDAwMDdGMDA4MjAxMDQwM0ZGRTUwMDA5MDAwMTNGMDEyMTAxMjEwMTI1MDIyMjQyMjA0NDIwNjgxRkMwMDAwNjQKKzoyMDEyMjAwMDAxMDAwMTAwN0ZGQzAxMDAwMTAwM0ZGODAxMDAwMTAwN0ZGQzAxMDQwMTA0MDEwNDAxMTQwMTA4MDEwMDAxMDA0QworOjIwMTI0MDAwNDA0MDIwNDAzN0ZDMjA0MDAzRjgwMDQwRjA0MDE3RkMxMDQ0MTA0NDEwNTQxMDQ4MTA0MDI4NDA0N0ZFODAwMEJDCis6MjAxMjYwMDAyMDgwMjBGODIxMTBGQTIwMjdGRTcyMDA2QkY4NkE4OEEyODhBMkE4MjI5MDI0ODAyNDgyMjg4MjMwN0UyMDAwOTcKKzoyMDEyODAwMDdGRkM0MjA0NDIwNDVGRjQ0MjA0NEZFNDQyMDQ1RkU0NDIyNDQyMjQ0MjI0NDJBNDQyNDQ0MDA0N0ZGQzQwMDQ1MQorOjIwMTJBMDAwMDEwMDAxQTBGMTEwOTNGRTkzMTA5NTEwOTVGRTk5MTA5MTEwRjFGRTkxMTAwMTEwMDExMDAxRkUwMTAwMDAwMDIzCis6MjAxMkMwMDAyMTQwMjEyMDIxMjAzM0ZFQUEyMEE2MjBBQkZDMjIyMDIyMjAyM0ZDMjIyMDIyMjAyMjIwMjNGRTIyMDAwMDAwMTcKKzoyMDEyRTAwMDAwODAxMDgwMEM4MDA0ODQ3RkZFMDEwNDAxMDQwMTg0MDE0NDAyMjQwMjI0MDQwNDA4NDQxMDI4MjAxMDAwMDA3MQorOjIwMTMwMDAwNDAwMDI0NTAyNDQ4MDg3RTlFRDA2NTUwMjQ3QzI4NTA1RTUwNDA3Q0MwNTA0MzUwNUM1MDQwN0U0MDQwMDAwMEY1Cis6MjAxMzIwMDAyMTAwMzFBMDIxMTA0M0ZFNEIxMEY1MTAxMUZFMjExMDQxMTBGOUZFMDExMDAxMTAxOTEwRTFGRTAxMDAwMTAwMzUKKzoyMDEzNDAwMDA4NDAwODQwRkZGRTA4NDAwMTAwN0ZGQzAxMDAzRkY4MDEwMDAxMDA3RkZDMDEwNDAxMDQwMTE0MDEwODAwMDA1RgorOjIwMTM2MDAwMDQ0MDA0NDBGRkZFMDQ0MDNGRjAwMTAwN0ZGQzA1NjAwOTFDMTUwOEZGRkUwNDIwMEM0MDAzODAwQzcwNzAwQzZBCis6MjAxMzgwMDAwMUY4MUYwMDAxMDA3RkZFMDM0MDA1MjAxOTFDNjEwODA0MDBGRkZFMDgyMDBDNDAwMzgwMEM2MDMwMzhDMDEwMTUKKzoyMDEzQTAwMDA4NDAwQzQwMDg0MDE3RkMxMDQwMzNGQzMwNDA1MDQwOTdGQzEwNDQxMDQ0MTA0NDEwNDQxMDU0MTA0ODEwNDBEMAorOjIwMTNDMDAwMDg0MDBDNDAwQTQwMTE0MDExNDAyN0ZDMzA0NDUwODQ5MEE0MTA5NDExMTQxMTA0MTIwNDE0MjgxODEwMDAwMDk2Cis6MjAxM0UwMDAwMDAwM0ZGODIwMDgzRkY4MjAwMDIwRjgyRjAwMjEwMDIxRjgyRjAwMjFGQzNGMDAyMTA0NDEwNDQwRkM4MDAwMDUKKzoyMDE0MDAwMDEwNDAxMDQwMjNGRTI0NDA0NDQwRkJGQzEwNDAyMDQwNDNGRUY4NDIwMDQyMEM0MkYwNEE0MDQ0MDA0MDAwNDAzMworOjIwMTQyMDAwMDEwMDAxMDAwMTAwM0ZGODAxMDAwMTAwRkZGRTAzMDAwMzgwMDU0MDA1MjAwOTE4MzEwRUMxMDQwMTAwMDEwMDVDCis6MjAxNDQwMDAwNDQwMDQ0MEZGRkUwNDQwM0Y0ODIxMDgyMTA4M0ZGRTIwMDgzRTQ4MjAyODVGMjg0NDA4NTUwODY0QTg4QzEwREYKKzoyMDE0NjAwMDAwNDAwODQwN0M0ODRCRkM0ODQwNDg0MDQ4NDQ0RkZFNDg0MDQ4RTA0OTUwN0E1MDQ0NEUwODQ0MDA0MDAwNDA3RgorOjIwMTQ4MDAwMUZGMDExMTAxMTEwMUZGMDExMTAxMTEwMUZGMDAwMDBGRkZFMTIwMDExMTAxMEEwMTA0MDEwMzAxNjFFMTgwNERCCis6MjAxNEEwMDAwMDAwM0ZGODIxMDgzRkY4MjEwODNGRjgyMDA4MUZGMDEwMTAxRkYwMTAxMDFGRjAxMDEwMTAxMDEwNTAxMDIwRDAKKzoyMDE0QzAwMDAwMDAwM0Y4RjI0ODkzRjg5MjQ4OTNGODkwMDA5RkZFOTI4OEYyOEM5MjU4MDIyMDAyOTgwNzBFMDIwNDAwMDA2MQorOjIwMTRFMDAwMEMyMDcwNDAxMUZDRkYyNDM5MjQ1NUZDOTEyNDExRkMyMDUwRkM1NDI4NUE0ODlFMzA5MDI5MTJDMjFFMDAwMDZECis6MjAxNTAwMDAwOTAwMENDMDEwNDAxN0ZDMjAwMDM0MTA1MjE4NTIxMDkxMTAxMTIwMTEyMDEwMjAxMDQwMUZGRTEwMDAwMDAwQjMKKzoyMDE1MjAwMDIwMDAxN0ZDMTQ0NDg3RkM0NDQ0NTdGQzEwMDAxM0Y4MjIwODIzRjhFMjA4MjNGODIyMDgyMjA4MjIyODIyMTA4RAorOjIwMTU0MDAwNDAwMDIzRkUzMjIyMjNGRTAyMjIwM0ZFNzAwMDExRkMxMTA0MTFGQzExMDQxMUZDMTUwNDE5MDQxMTE0MDEwODZCCis6MjAxNTYwMDAwMDA4N0YwODQxMDg3RjA4NDBGRTdGMDg0MDA4NDA0ODdGQTg0NDI4NTUwODU0ODg2NDg4ODQwODk0MjgwODEwNUYKKzoyMDE1ODAwMDdGMDg0MTA4N0YwODQwN0U1RTA4NDA0ODdGMjg1NjA4QTUwODk0MjgwODEwMDEwMDI4ODgyODI0NDdFNDAwMDA5QQorOjIwMTVBMDAwMDAwMDNGRjgwMTA4MDEwODAxMDgwMTA4MDEwODAxMDgwMTA4MDEzODAxMTAwMTAwMDEwMDAxMDA3RkZFMDAwMEVCCis6MjAxNUMwMDAwMTAwMDA4MDFGRkMxMDAwOTNGMDUyMTA1M0YwMTIxMDMzRjA1MDAwOTdGQzI1MjQyNTI0MjUyNDVGRkU4MDAwNTcKKzoyMDE1RTAwMDQwMDAyN0YwMjQxMDA3RjA5NDEwNTQxMDE3RjAyMDAwMkZGQ0M5MjQ0OTI0NDkyNDQ5MjQ0OTI0NUZGRTQwMDBEMQorOjIwMTYwMDAwMTA0MDEwMzAxMDI0N0ZGRTU1MDg1NTA4NTQ4ODU0OTA3QzUwMTAyMDE0MjAxMjUwMUY1OEUyOEUwMTA0MDIwMDhGCis6MjAxNjIwMDAwMjAwMDEwMDAxMDBGRkZFMDgyMDA4MjAwODIwMDQ0MDA0NDAwMjgwMDEwMDAyODAwNDYwMTgxRUUwMDgwMDAwMjIKKzoyMDE2NDAwMDEwMDAwQkZDNDAwNDQwMDQ1RkY0NDQ0NDQ3QzQ0NDQ0NDdDNDQ0NDQ0NEY0NUY0NDQwNDQ0MDQ0NDA1NDQwMDgyQgorOjIwMTY2MDAwMjA4MDMwNjAyMDQwNDdGRTQ4MTBGMTEwMTExMDIxMTA0MEEwRjhBMDAwNDAwMDQwMUNBMEUxMTgwMjBFMDQwNDI1Cis6MjAxNjgwMDAwMTAwMDE4MDc5MDA0OUZFNEE1MjRBNTI0QzkyNDg5MjQ5MjI3OTIyNDI0MjA0NDIwMDgyMDEwNDA2MTQwMDA4OUYKKzoyMDE2QTAwMDBDODA3MEYwMTExMDEyMjBGREZDMTAwNDMxRkMzODA0NTVGQzUwNDA5MTI4MTUyNDE1MEExNTBBMTBGODEwMDA0QworOjIwMTZDMDAwMDEwMDdGRkMwODIwMDQ0MDAzODAwQzdFRjMwNDA0NjAxRjgwMDQyMDFGRjgwMTA4MDkyMDExMTg2NTA4MDIwMDE2Cis6MjAxNkUwMDAxMDAwMEJGQzA4MDQyMDA0MjAwNDI3RTQyNDI0MjQyNDI0MjQyN0U0MjAwNDIwMDQyMDA0MjAwNDIwMTQyMDA4QTUKKzoyMDE3MDAwMDAxMjAwMUEwRjExMDkyODg5NTE2OUJGODkxMTA5N0JDOTA4NEYyQTQ5MTk0MDI4QzBDOTQwMEE0MDI5NDAxMDg3QQorOjIwMTcyMDAwMDg0MDA4MjAxMjMwMjIxQzQ0NDgwRkUwMDAyMDdERjgwNDA4MjQ0ODE0MjgxNDQ4MjQ4ODQ0MDgxNDI4MDgxMDRECis6MjAxNzQwMDAwMDAwMDQ4MDA4NDAxMjMwNjQ4RUNGQzQwMDIwRkZGRTA4MDAwRkUwMDgyMDBBMjAxMTIwMTVBMjE4QTIxMDFFQzAKKzoyMDE3NjAwMDIwMDgyNDA4MjIwOEZBRkUyMDA4MjAwODJFODgzMjQ4NjI0OEEyMDgyMjA4MjIyODIyMTAyNTgwQTg3RTQwMDA2RQorOjIwMTc4MDAwMTAwMDExRjgxMTA4MTEwODdERjg1NTQ4NTQ0MDU3RkM3RTQ0NTI0NDEyQTQxMzE0MUUwNEUyMDQwMjE0MDIwOEE4Cis6MjAxN0EwMDAyMDAwMTNGODEyMDgwMjA4OEJGODQ4NDA1MDQwMTdGQzI0NDQyNDQ0RTRBNDI3MTQyNDA0MjQwNDI0MTQyNDA4RTUKKzoyMDE3QzAwMDAyMDAwMTAwN0ZGRTQ0MjIxODE4MkZFNDA4MjAwODIwMEZFMDAxMDAzRkZDMjEwNDIyODQyNDQ0MjAxNDIwMDhENgorOjIwMTdFMDAwMDY0MDM4NTAwODQ4MDg0ODA4NDBGRkZFMDg0MDA4NDgwRTI4MzgzMEM4MjAwODUwMDk5MjA4MEEyODA2MTAwMkQzCis6MjAxODAwMDAxMDIwMTAyMEZFNTAxMDQ4N0U4NjQzMTQ3RTUwNDIzMDdFOTAxMDUwMTAxRUZFRjAxMDEwMTAxMDEwMTAxMDEwMUQKKzoyMDE4MjAwMDAwNDA3RjQwNDg0MDQ4NDA0ODQwN0Y2MDQxNTA0MTRDN0Y0NjQ4NDI0ODQwNDg0MDQ4NDA3RjQwMDA0MDAwMDAyRQorOjIwMTg0MDAwMjAwMDIzRkMyMjA0RkJGQzIyMDAyM0ZFMkE0MDMyODg2M0ZDQTIyNDIyMjAyM0ZDMjQyMDI0MjBBQkZFNDAwMENFCis6MjAxODYwMDAyMDAwMTA3ODE3ODAwMDgwODA4MDQwODA0RkZFMTA4MDEwODAyMTQwRTEyMDIyMjAyMjEwMjQwQzI4MDgwMDAwNDYKKzoyMDE4ODAwMDAwMDA3RkZDMDEwMDExMTAxOTEwMTExMDExMTAyOTEwMjkyODQ1MjQ0NTQ2ODE4NDAxMDAwMTAwRkZGRTAwMDBCRQorOjIwMThBMDAwMDA4MDAxMDBGQkY4OEEwODhBMDg4QTA4OEEzODhBMTBGQkZDOEEwNDgwMDQwRkY0MDAwNDAwMDQwMDE0MDAwODcyCis6MjAxOEMwMDAyMDQwMjA4MDNERjgyMTA4NDEwODdEMDhBMTI4MjExMEZERkMyMDA0MjAwNDIzRjQyMDA0MjgwNDMwMTQyMDA4Q0UKKzoyMDE4RTAwMDAxMDAxMjIwMUZGMDEwMjAxMDIwMTAyMDEwQTAxMDQwMUZGQzAwMDQwMDA0N0ZGNDAwMDQwMDI0MDAxNDAwMDgzQworOjIwMTkwMDAwMjAwMDEzRkMxMDAwMDAwMDgwMDA0QkZFNDg4MDEwODAxMEZDMjAwNEUwMDQyMDA0MjAwNDIwMDQyMDE0MjAwODhCCis6MjAxOTIwMDA0MDAwMjdGQzMwNDAyMjQ4MDI0ODAyNDhFMjQ4MjI1NDI1NTYyOTY0MjA0MDI4NDAzMDQwMkZGRTAwMDAwMDAwQzkKKzoyMDE5NDAwMDAwMDAzRkZDMjAwNDNGRkMyMDAwM0ZGQzIyMjAyNDEwMkZGODIwOTAyMDgwM0ZGQzQwODA0MDgwQkZGRTAwMDAyRAorOjIwMTk2MDAwMDAwMDNGRkMwMTAwMDEwMDAxMDAwMTAwN0ZGRTAxODAwMjgwMDI4MDA0ODAwODgwMTA4MjIwODJDMDdFMDAwMEE4Cis6MjAxOTgwMDAwNDQwMDQ0MEZGRkUwNDQwMDAwMDNGRjgwMjAwMDIwMDdGRkMwMjgwMDQ4MDA0ODQwODg0MTA4NjIwN0M0MDAwM0MKKzoyMDE5QTAwMDEwMDAxM0ZDMTA0MDEwNDBGQkY4MTA4ODM4ODgzN0ZFNTQwMDUxRjg5MTA4MTEwODExMDgxMTA4MTFGODExMDg0NQorOjIwMTlDMDAwN0ZGODAyMDAwMjAwM0ZGMDA0MTAwNDEwMDQxMEZGRkMwMDAwMUZGMDEwMTAxMDEwMTAxMDFGRjAxMDEwMTAxMDY4Cis6MjAxOUUwMDAwMDAwMUZGMDEwMTAxMDEwMTAxMDFGRjAwMDAwM0ZGODAxMDAwMTAwRkZGRTAyODAwNDQwMDgzMDMwMUNDMDA4MjEKKzoyMDFBMDAwMDAwMDAxRkYwMTExMDExMTAxMTEwMTExMEZGRkUyMTEwMjExMDIyMTAzRkZFMDIxMDA0MTAwODUwMzAyMDAwMDA5NworOjIwMUEyMDAwMDA0MDAwNTAzRjQ4MDA0MEZGRkUwMDQwMDQ0MDA0MjAyN0EwMjQyMDI0MjAyNDEwMjcxMjM4MEFFMDA2MDAwMkM0Cis6MjAxQTQwMDAwMDAwN0ZGODAyMDAwMjAwMDIwMDAyMDAwMjIwM0ZGMDA0MjAwNDIwMDQyMDA0MjAwNDI0RkZGRTAwMDAwMDAwMDEKKzoyMDFBNjAwMDEwMDAxM0ZDMTA0MDEwNDBGREY4MTA4ODE0ODgxQkZFMzAwMEQwMDAxMUY4MTEwODExMDgxMTA4NTFGODIwMDBBOAorOjIwMUE4MDAwMDgwMDA4MDAxRkY4MTEwMDIxMDAyMTAwNDEwNEZGRkUwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDAwMDgzCis6MjAxQUEwMDAxMDAwMUZGQzJBNTA0QTUwQkZGRTBBNTA3RkZFMTAxMDEwMTAzRUZFMjI1MDU0OTAwOEZFMTAxMDIwMTA0MDEwREIKKzoyMDFBQzAwMDEwMDAxODA4MTNGQzMwODAyMDgwNjA4MEEwODgyN0ZDMjEwODIxMDgyMTA4MjEwODIxMDgyMTA4MkZGRTIwMDAwOQorOjIwMUFFMDAwMTIwMDFBMDAxM0ZFMzQwMDJCRjg2Mjg4QTI0ODIyNDgyRkZFMjI4ODIyNDgyMjQ4MjNGRTIwMDgyMDI4MjAxMEE4Cis6MjAxQjAwMDAwMDIwMTA0MDExRkMxMTA0MTEwNEZEMDQxMTFDMTEwODExRkUxMDAyMUMwMjMzRkFDMDAyMDAwMjAwMTQwMDA4OEIKKzoyMDFCMjAwMDAwODAwMDkwMDA4ODAwODAzRkZFMjA4MDIwODgyMDg4MjA1MDIwNjAyMDYwMjBBMDIzMTI0QzBBNDAwNjgwMDJERAorOjIwMUI0MDAwMUZGODAxMDA3RkZFNDEwNDVENzAwMTAwMUQ3MDA4MDAwRkUwMTQ0MDIzODAwRDYwNzExQzBGRTAwMjIwMDQ2MEYzCis6MjAxQjYwMDAwMDAwMDdGQ0Y4ODA4ODgwOEJGMDg5MTBGOTEwOEZGRTg4MDA4ODAwRkJGODhBMDgwMjA4MDIwODAzRjgwMDAwOTQKKzoyMDFCODAwMDEwODAxMDgwNTA4MDUxRkM3RDU0NTI1NDk0OTQxNDk0MTkyNDMyMjRENDQ0MTA4NDExMDQxMjA0MTQyODAwMTAwQgorOjIwMUJBMDAwMDgwMDBDMDAwODAwMEZGQzExMjQxMTI0MjIyNDQyNDQ4NDQ0MDg4NDExMDQyMjA0MDQwNDA4NDQzMDI4MDAxMDdECis6MjAxQkMwMDAwNDAwMDdGMDBDMTAxNDIwNjI0MDgxODAwNjYwMTkxRTYxMDQxRkYwMDIxMDAyMTAwNDEwMDgxMDMwNTBDMDIwNTYKKzoyMDFCRTAwMDIwMDAyN0ZDMjA4MDMwODBBQkYwQTExMEExMTAyRkZFMjAwMDIzRjgyMjA4MjIwODIyMDgyMjA4MjNGODIwMDAwQQorOjIwMUMwMDAwNDNGODIyMDgzMjA4MjIwODAzRjgwMDAwRTdGQzIwNDAyMDQwMjdGRTIwNDAyOEEwMzExMDIyMEMwNDA2MDgwNDhCCis6MjAxQzIwMDAwNDIwMDQyMDA0MjAzRkZDMDQyMDA0MjA3RkZFMDAwMDBGRjAwODEwMDgxMDBGRjAwODEwMDgxMDBGRjAwODEwQzMKKzoyMDFDNDAwMDAwMDA3RjdDNDQ0NDQ0NDQ1RTdDNTI0NDVFNDA0NDQyNDQ0MjdGM0U0MDAwMjg4ODI0NDQ2NjY2QzIyMjAwMDA5QQorOjIwMUM2MDAwMTAwMDEwM0MxMUMwRkQwMDExMDAzMUZFMzkxMDU1MTA1NTEwOTExMDExMTAxMTEwMTIxMDEyMTAxNDEwMTAxMDdDCis6MjAxQzgwMDAwMDAwRkZGRTA0NDAwNDQwN0ZGQzQ0NDQ0NDQ0NDQ0NDQ0NDQ0ODNDNTAwNDYwMDQ0MDA0N0ZGQzQwMDQwMDAwRTUKKzoyMDFDQTAwMDAwMDBGQkZFMjA1MDIwNTAyM0ZFMjI1MjdBNTI2QTUyQUE1MjJBOTIyQThFMkIwMjNBMDIyQkZFMjIwMjAwMDAwOAorOjIwMUNDMDAwMDA0MEZFNjAxMDQwMTA3RTEwODQyMDg0M0QwNDY2ODhBNDQ4MjQ1MDI0MTAyNDIwM0M0MDI1ODAyRTAwMDAwMEZBCis6MjAxQ0UwMDAwMjAwMDIwQ0YyNzA5MjQwOUZDMDkyN0VGMzQ4OTZDODk2NDg5QTQ4OTI0OEYyNDg5Mjg4MDI4ODAzMDgwMjA4MEIKKzoyMDFEMDAwMDAwNDAwN0ZFRjA0MDkzRkM5MDAwOTNGQzkyMDQ5M0ZDOTEwOEYwOTA5RkZFODAwMDAzRkMwMjA0MDNGQzAyMDQzQgorOjIwMUQyMDAwMDAwMDA3RjBGMTEwOTExMDkxMTA5Mjk4OTI4ODkyODhGMjkwOTQ1MDg0MjAwODMwMDhEODEzMEUyQzA0MDAwMDk4Cis6MjAxRDQwMDAyMUZDMjEwNDNEMDQyMUZDNDEwNDdERkM5MDgwMTA4MEZERkUxMTRBMTI0QTEwOTIxMzIyMTRDMjFCMEExMDA0RUQKKzoyMDFENjAwMDEwMDAxN0ZFNTA5MDUwOTA3QzkwNTNGRTU2OTI5QTkyMzI5MkQyOTIxMjhFMTMwMjEyMDIxM0ZFMTIwMjEwMDBFNworOjIwMUQ4MDAwMEM4ODcwNTAxMDIwMTA1MEZFQTgxM0ZFMzg4MDM1MjA1M0ZDNTUyNDk5MjQxMTI0MTEyNDExMzQxMTI4MTAyMEZFCis6MjAxREEwMDAwMTAwMDIwMDFGRjAxMDEwMUZGMDEwMTAxRkYwMTAxMDFGRjAwMDAwMDkwMDI4ODQyODkyNjgxMjA3RjAwMDAwQTQKKzoyMDFEQzAwMDA4MjAwNjQwMDE4MDBFNjAzMjEwRkZGRTA0ODAwODgwMUZGODI4ODg0ODg4ODg4ODA4ODgwOEI4MDA5MDAwODA1NAorOjIwMURFMDAwMDBGMDFGMDAwOTIwMDU0MDdGRkUwMzgwMDU0MDE5MjA2MTFDMDEwODAwMDAyOTA4Mjg4NDY4MTQwN0YwMDAwMDEyCis6MjAxRTAwMDA3ODQwNDg0MDRCRkU0OEQwNzk0QzRBNDQ0QzQwNDhBMDc5NTg0RTQ2NDk1NDQ4RTA0OTUwNEE0Q0FDNDQ5MEMwQzEKKzoyMDFFMjAwMDAyMDAwMjAwMDNGODA0MDgwNDA4MEMxMDEyMTAyMTIwMDBBMDAwNDAwMDgwMDEwMDAyMDAwQzAwNzAwMDAwMDAyRAorOjIwMUU0MDAwMjExMDIxMTAyMTEwMzdGQ0E5MTBBMTEwQUZGRTIwMDAyM0Y4MjIwODIyMDgyM0Y4MjIwODIyMDgyM0Y4MDAwMDhDCis6MjAxRTYwMDAxMDIwMTA0MDExRkMxNTA0NTlGQzUxMDQ1MUZDOTEwNDIxRkMzMDgwMkQ0ODJEMjY0NTBBNDkwODgwRjgwMDAwODMKKzoyMDFFODAwMDIyMDgyMTk4MjA2MDI4OTAyQjQ4MzdGRUEwODBBMTQwMjNGODM2NDgyQTQ4NEE0ODQyNjg0MjUwODA0MDAwNDBBNQorOjIwMUVBMDAwNDA3ODJGODAyNDg4MDI1MDgwODA1MTIwMTNDMDIxMTAyN0Y4MjA0OENGRkU0MDQwNDBBMDQzMTA0QzBFNDAwNEEzCis6MjAxRUMwMDAyMDQwMTA0MDEwNDAwMDdFODQ4MjQ4ODQ0OTg0MTI0ODEwMjgyMDEwRTAyMDIwNDAyMDgwMjMwMDJDMDAwMDAwRDQKKzoyMDFFRTAwMDAwMDAzRkZDMjAwNDNGRkMyODg4MjQ5MDIwODAyNDkwMzgwQzI0ODAyN0Y4Mjg4MDVGRkU0MDgwNDA4MDgwODAwNAorOjIwMUYwMDAwMjIxMDI3OTAyNDkwMjc5RUZDQTQyN0E0NzI2NDYxMTRBRkQ0QTIxNDIzODgyNDg4MjQ5NDI4QTQzMkM2MjEwNDc4Cis6MjAxRjIwMDAwMjQwMDIyMDdGRkMwNDkwMDRFNDA5ODQzNkY4QzEwMDdGRkUwMzA4MDRCMDE4NDBFODMwMEEwRTBDMDQwODAwRUUKKzoyMDFGNDAwMDAxMDAwMDgwM0ZGRTIyMjAyMjIwM0ZGQzIyMjAyM0UwMjA4MDJGRjgyODg4Mjg4ODI4QTg0ODkwNDA4MDgwODAzMAorOjIwMUY2MDAwMDAwMDNGRkMwMDA0MDgwNDA0MDQwMzA0MDExNDAwNjQwMTg0MDYwNDM4MDQxMDA0MDAwNDAwMjQwMDE0MDAwODZCCis6MjAxRjgwMDAyMDYwMjA0MDIxRkMyMTA0RkRGQzI1MDQyOUZDMjkwNDQ5RkM2ODQwMTAyNDJBQTIyQThBNDI4ODg0NzgwMDAwNDQKKzoyMDFGQTAwMDAxMDA3RkZDMDEwMDNGRjgwMDAwMUZGMDEwMTAxRkYwMDQ0MEZGRkUwMDAwMUZGMDEwMTAxMDEwMUZGMDAwMDA5MAorOjIwMUZDMDAwMjAyMDIxMjAzRDIwMjFGQzQxMjA3QTIwQTAyMDIzRkVGQzkwMjA5MDIwOTAyMTEyMjkxMjMyMTIyNDBFMDAwMDVBCis6MjAxRkUwMDA0MDQwMjI0MDIyNDAwN0Y4OTQ0MDU4NDA1MDQwMUZGRTIxMjAyMTIwRTEyMDIyMjAyMjIyMjQyMjI4MUUyMDAwRDAKKzoyMDIwMDAwMDAwN0MzRjgwMDIyMDA0MjAwODQwMUY4MDAzMjAwQzEwM0ZGODEwOEMwNEEwMDg5MDEwODgyMDg0NDI4NDAxMDAwNworOjIwMjAyMDAwMDAyMDdEMjg0NTI0NEEyNDUwMjA2M0ZDNTIwNDRCRkM0QTA0NkJGQzUwMjA0MDIwNDIyODQyMjQ0NEE0NDA0MERCCis6MjAyMDQwMDAwMDQwMDA1MDdFNDgwMjQ4NDQ0MDI1RkUxODQwMDg0NDBDMjgxNDMwMTIyMDIyNTA0MTkyMDYwQTAwMDYwMDAyOEUKKzoyMDIwNjAwMDEwMDAxODAwMjFGQzQ1MjRGOTI0MDkyNDExMjQyMUZDN0QyNDAxMjQwMTI0MUQyNEUxRkMwMTA0MDAwMDAwMDAwOAorOjIwMjA4MDAwMDA4MEYwNDA5N0ZFOTQ0MjlCRkNGMDQwOTNGODkwNDBGN0ZFOTA0MDkzRjg5MjA4RjIwODkyMDg4M0Y4MDIwODAwCis6MjAyMEEwMDAxMDAwMTNGRTEwMjAxMDIwN0MyMDU0MzA1NDI4NTQyQzdDMjY1MDI0MTQyMDEyMjAxRjIwRTIyMDAwMjAwMDIwODYKKzoyMDIwQzAwMDAwMDA3RkZFNDAwMDRGRjg0ODg4NDg4ODRGRjg0ODg4NDg4ODRGRjg0MDgwNDA4MDQwODA0MDgwN0ZGRTAwMDBCMQorOjIwMjBFMDAwMUZGMDAxMDBGRkZFODkxNDI1NDgxMTIwMDAwMDdERjg0NDA4N0RGODQwMDA3REY4NDA5MDdDNjA0MEIwNDcwRUJDCis6MjAyMTAwMDAxMDQwMTAyMEZERkUyMjI0NTFGQzUwMjA5MEZDRkMyMDEzRkUxMDIwM0RGQ0QxMDQxMTA0MTFGQzExMDQxMDAwMDMKKzoyMDIxMjAwMDAwMDAwN0JFRjQ4Mjk0ODI5N0JFOTQwMEY0MDA5N0JFOTQyMjk0MjI5Nzk0RjQxNDk0MDgwNDE4MDQ2NjA1ODREMgorOjIwMjE0MDAwMjA0MDIwNDAyM0ZDQTg0MEFBNDhBOTRDQTk0OEE5NTBBRkZFQTg0MEI4QTBFOEEwODExMDAyMEUwNDA0MDgwMEMxCis6MjAyMTYwMDAwODQwMEM0MDA4NDAxN0ZDMTA0ODM0NEM1MzQ4OTI1MDFGRkUxMEEwMTBBMDExMTAxMTE4MTIwRTE0MDQwMDAwMUMKKzoyMDIxODAwMDA4NDA4ODQwNTdGQzIwNDA1MDQwOTQ0ODBBNTAxOTYwMkZGRTQ4QTA4OEEwMDkxMDA5MTAxMjA4NTQwRTI4MDQyNgorOjIwMjFBMDAwMDAwNDdGRkUwMTAwMDEwMDAxMDAwMUMwMDE2MDAxMzAwMTIwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDAwMDIxCis6MjAyMUMwMDAzRkZDMjAwMDNGRjgyMjAwMkZGMDI4MTAyRkYwMjgxMDJGRjAyNDAwMjdGMDJBMjA0MjQwNDE4MDg2N0MxODEwOEMKKzoyMDIxRTAwMDdGRkUwMjAwMUZGMDEwMTAxRkYwMTAxMDFGRjAxMDEwMUZGMDA4MDAwRkYwMDgyMDE2NDAyMTgwMEU3MDcwMEVBMgorOjIwMjIwMDAwMDAwMDdGRkU0NDQwNDQ0MDQ0NDA0NDYwNDQ1MDQ0NEM0NDQ4N0M0MDQ0NDAwMDQwMDA0MDAwNDAwMDQwMDAwMDIxCis6MjAyMjIwMDAyMDAwMjFBMDI2MzAyNDIwRkMzRTI3RDIyRDU0MzUxMDY1MTBBNTI4MjUyODI1MjgyOTQ0Mjk4NkExMDQ0MTAwNEMKKzoyMDIyNDAwMDIwOTAyNzEwMjQxMDdDMjA0NDNFODdEMkZENTQyNTEwRkQxMDI1MTAyNTI4MjUyODI1NDQzNTQ2Mjk4NDAwMDBGOQorOjIwMjI2MDAwMDEwMDExMDAxMTAwMUZGODExMDAyMTAwMjEwMDdGRkMwNDQwMDQ0MDA0NDAwODQwMDg0MjEwNDIyMDNFNDAwMDA4Cis6MjAyMjgwMDAwODIwMEMyMDA4MjAxMDIwMTAyMDMyMjIzMjIyNTIyMjkyMjIxMjIyMTIyMjEyMjIxMjIyMTdGRTEyMDIwMDAwOTkKKzoyMDIyQTAwMDIwMDgzQzg4MjQ0ODQ4NTA3REZFRDQyMDU0MjA3Q0ZDNTQyMDU0MjA3REZFMDAyMDBFMjBGMDIwMDAyMDAwMjBEMgorOjIwMjJDMDAwMTAzODEzQzAyMDQwMjQ0MDQ0NDBGODQwNEZGRTEwNDAyMDQwN0M0MDIwNDAwMDQwMEU0MEYwNDA0MDQwMDA0MENDCis6MjAyMkUwMDAwMDUwMDA0ODNGRkUyMDQwMjA0MDNGNDgyMDRDMkY0ODI5MjgyOTMwMjkyMDJGNTI0MDkyNDEwQTgyMDQwMDAwQzgKKzoyMDIzMDAwMDA5RkM0OTA4NDg4ODQ4NTA0ODIwNDhEODBCMDYxRkYwMTAxMDExMTAxMTEwMTExMDEyOTAwNDYwMTgzMDYwMTAxNgorOjIwMjMyMDAwMjIwMDMyMUUyM0MwNTQwMDk4MDAxN0RFMjEwODYxMDhBRkU4MjEwODIxMDgyMTA4MjE0ODIzQTgyMTEwMDAwMDVFCis6MjAyMzQwMDAwODQwMTAyMDNERkUyNDQwMzQ2MDJDNDgyNDhDRkRGODI0MTAzNDIwMkMyODI0NDQyNDlFNDVGNjU0MDQ4ODAwOTgKKzoyMDIzNjAwMDIwMDAxQkZDMDgwNDIxMDQyMTA0MkZGNDIxMDQyMzg0MjM0NDI1MjQyNTI0MjkwNDIxMDQyMTA0MjAxNDIwMDgxNQorOjIwMjM4MDAwNDAwMDIwMEUyRjcwMDExMDgyMTA1NDUwNTc1RTIxNTAyMjUwMkE1MENBN0U0NDAwNEIwMDUwQzA0MDNFNDAwMDMyCis6MjAyM0EwMDAwMDQwRjgyMDBCRkUwODAwNzg0MDQ4NDg0MDhDNDE3OEZCRDA0ODIwMDg0MDA4ODgwOTA0NEJGRTI5MDQxMDAwNDkKKzoyMDIzQzAwMDIyMDgyMTEwMjdGRUY4QTAyQkY4MjhBODRGRkU0OEE4NDhBODMzRjgxMUEwMjlCMDJBQTg0NEE2ODhBNDAwQTA4OAorOjIwMjNFMDAwMDAwMDFGRjAxMDEwMUZGMDEwMTAxRkYwMDQ0MDA0NDA0NDQ4MjQ0ODE0NTAxNDYwMDQ0MEZGRkUwMDAwMDAwMEQ3Cis6MjAyNDAwMDAwMDQwNzg0MDQ4NDA1MEEwNTExMDYyMDg2REY2NTAwMDQ4ODg0QTQ4Njk1MDUxMTA0MDIwNDA0MDRGRkU0MDAwRTUKKzoyMDI0MjAwMDAwMDBGRkY4MTIwODEyNDgxMjQ4MTI0ODdFNDgxMjQ4MTI0ODEyQTgxQ0EwRTEyMjAxMjIwMjIyMDQxRTA4MDAxOQorOjIwMjQ0MDAwMDgyMDA4MjBGRkE4MTAyNDEwMjA3RkZFNTUyMDU1MjA3RjUwNDk1MDdGNTA0OTQ4NDk0ODQ5NDQ0NTQ2NDI4NDgzCis6MjAyNDYwMDAwMDAwMEZGMDA4MTAwRkYwMDgxMDA4MTAwRkYwMDgxMDA4MTBGRkZFMDI0MDA0MjAwODEwMUZGODA4MTAwMDAwM0QKKzoyMDI0ODAwMDAwMjAzQzQwMjVGQzI1MDQzREZDMjUwNDI1RkMyNDI0M0ZBNjI0QTgyNEIwMjUyODI1MjY0NjI0NTRBMDg4NDA0OAorOjIwMjRBMDAwMjA0MDIwNDAyMDdDM0U4NDQ0ODg0OTEwQTI0MDIxOUMyMTA0MjEwNDIxREMyNTA0MjkwNDMxMDQyMUZDMDAwMDRCCis6MjAyNEMwMDAwODIwMDQ0MDdGRkMwMTAwM0ZGODAxMDA3RkZFMDEwMDIxRkMxMjA4MDQ5MDEwODA2MTQwMjIzMDI0MUMyODA4QTAKKzoyMDI0RTAwMDAyMDAwMTAwM0ZGRTIxMDQ0OTA4MEZGMDA5MDAxMTAwN0ZGQzA0NDAwNDQwMDQ0MDA4NDQwODQ2MTAzQzIwMDBDMAorOjIwMjUwMDAwMDA0MDc4NDA0OEZDNTA4ODUxMTA2MjAwNTA4MDRCMUM0QTA0NEEwNDZCQkM1MjA0NDIwNDQyMDQ0M0ZDNDIwNDgzCis6MjAyNTIwMDAwMDAwRkJGODkyMDg5M0Y4QTIwOEEyMDg5M0Y4OEE4MDhBNDhBQTUwOTIyMDgyMjA4MjEwODI4RTgzMDQ4MjAwQ0YKKzoyMDI1NDAwMDEwNDAxODUwMTA0QzIwNDgyM0ZDNDg0MEY4NDAxM0ZFMjA0MDdDNDgwMDMwMDAyMjFDRDJFMzBBMDAwNjAwMDJCNgorOjIwMjU2MDAwMTAwMDEwRkMxMDg0MTA4NEZFODQxOEZDMzQ4NDMyODQ1Mjg0NTBGQzkwODQxMDg0MTA4NDEwODQxMEZDMTA4NDgxCis6MjAyNTgwMDAwMDAwM0ZGRTI0MDAyNDdDMjQ0NDNGNDQyNDdDMkU0NDJENDQyRDdDNTQ0NDU0NDQ2NDdDODQ0NDg0NDAwMDAwODcKKzoyMDI1QTAwMDIwMjAyM0ZFMjAwMDNCQkM0MkE0N0JCQ0EwODgyM0ZDRjg4ODIzRkUyMDg4MjdGRTIxMjQyQjU4MzE4ODIxMDYyOQorOjIwMjVDMDAwMDFGMDNGMDAwMTAwRkZGRTAzODAwNTQwMDkzMDMxMEVDRkY0MDgxMDA4MTAwRkYwMDgxMDA4MTAwRkYwMDAwMDZDCis6MjAyNUUwMDAyMDQwM0Y3RTI4NTA0NDg4ODkwODA4RkMwODg0N0U4NDE4RkMxQzg0MkE4NDJBRkM0ODg0ODg4NDA4RkMwODg0NjcKKzoyMDI2MDAwMDAxMDA3RkZFMTI0ODFFNzgwNDQwM0ZGQzA0NDAzRkY4MDQ0MEZGRkUwNDg4MEM1MDM0MjBDNTE4MDYwRTA0MDREQworOjIwMjYyMDAwNDIwMDIyMDAyMjdDMDI0NDhGQzQ0MjdDNTY0NDE3NDQyQTQ0MkE3Q0YyNDQyMjQ0MjI0NDIyN0MyMjQ0MDAwMDMyCis6MjAyNjQwMDAwMTAwMDE4MDAzMTAwNjE4MDgzMDFGRTAwMDg4MDMwQzBDNzgxRjkwMDgxMDAwMjAwMEMwMDcwMDc4MDAwMDAwNEYKKzoyMDI2NjAwMDQ0MDAyN0RDMjg0NDdDNDQxMjY0MTE1NDdENTQxMDQ0MTBDQzdENTQxMjY0MTA0NDIwNDQyMTU0NDA4ODgwMDA0RgorOjIwMjY4MDAwMjEwNDEwODgxMDUwRkRGRTA0MjAwODIwMTFGQzM4MjA1NDIwOTQyMDEzRkUxMDIwMTAyMDEwMjAxMDIwMTAyMDQ4Cis6MjAyNkEwMDA0MjA4MjExMDMwQTAyN0ZFMDA0MEUwNDAyM0ZDMjA0MDIwNDAyN0ZFMjA0MDI4NDAzMDQwMjA0MDAwNDAwMDAwNkUKKzoyMDI2QzAwMDEwMDAxMEZDMTA4NEZFRkMzODg0MzRGQzU0ODQ1MDg0OTBGQzAwMDAwMTAwMDg4NDI4ODIyODEyNjdGMDAwMDA2NAorOjIwMjZFMDAwMDA0MDAwNjBGMDgwOTdGRTk0MDI5NDAyOTVGQTk1MEE5NTBBRjUwQTk1MEEwNUZBMDUwQTA0MDIwNDBBMDQwNDc0Cis6MjAyNzAwMDAwMjAwMDEwMDdGRkMwMDAwMUZGMDEwMTAxRkYwMDAwMDNGRjAwMDYwMDA4MEZGRkUwMDgwMDQ4MDAyODAwMTAwNkEKKzoyMDI3MjAwMDAwMDAwM0ZFRkMyMDEwNDAxMUZDMTEwNDExMjQxMTI0MTEyNDExMjQxRDI0RTEzNDAwNDgwMTg2MDYwMjAwMDAwOQorOjIwMjc0MDAwMDQyMDA0MjA3RkZDMDQyMDA0MjBGRkZFMDQyMDA4MTAxRkU4MjgyNkM4MjQwRkUwMDgwODA4MEMwN0Y4MDAwMEUyCis6MjAyNzYwMDAyMTAwMjFGMDIyMjBGRkY4MjI0ODcyNDg2QkY4QTg4MEExQ0MyNkYwMjE3MDI2NjgyMUE2MkUyNDIwQTAyMDQwNjQKKzoyMDI3ODAwMDExMDAxOUYwMTIyMDI3RkMzNDQ0NjQ0NEE3RkMyNDg4MjE5QzJFNjAyMzUwMkNBODIzMjYyQzI0MjBBMDIwNDAxMAorOjIwMjdBMDAwMDIwMDA0MDAzRkZDMjAwNDIwMDQyN0U0MjQyNDI0MjQyNDI0MjQyNDI3RTQyNDI0MjAwNDIwMTQyMDA4MDAwMDkyCis6MjAyN0MwMDAwODAwMEZFMDEwNDAzRkY4NTEwODFGRjgxMjEwMDUxODE5QTBFNkMwMTlBMDY2OTAxODhFNjA4NDAyODAwMTAwQjEKKzoyMDI3RTAwMDA0NDAwNDQwRkZGRTA1NDAzRkYwMDExMEZGRkUwMTEwM0ZGMDAxMDAyNTA4MjU0ODI5MjgyOTI4NTEwODgxMDg3MworOjIwMjgwMDAwMDAyMDdDMjAxMTI0MTBBODEwMjAyMUZDM0QwNDY1MDRBNUZDMjUwNDI1MDQyNUZDM0QwNDI1MDQyMTE0MDEwODVDCis6MjAyODIwMDAxRkY4MDEwMDdGRkU0MTA0MUQ3MDAxMDAxQzcwMDkyMDA1NDAxRkYwMTAxMDFGRjAxMDEwMUZGMDEwMTAxMDMwNjkKKzoyMDI4NDAwMDA4MDQwOTA0NDk4NDI5MjQyQTI0N0YyNDQxMjQ3RjI0NDEyNDQxMjQ3RjI0NDEyNDQxMDQ0NzE0NDIwODAwMDA5MAorOjIwMjg2MDAwMDA4MDAwODhGM0VDOTA5MDlGRkU5MDQwOTA4MDkxRjA5MjIwRjQ0NDhGRkUzMDQwMDA0MDAwNDAwMTQwMDA4MDJCCis6MjAyODgwMDAzRTdDMjI0NDNFN0MwMDAwN0ZGRTA0MDAxRkY4MTEwODExMDgxNkM4MzgzMEZFRkUyMjg4MjI4ODNFRjgyMjg4MUUKKzoyMDI4QTAwMDEwMjAxMTI0M0VBNDIwNjg0MUZDN0QwNDkxMDQxMUZDRkQwNDExMDQxMUZDMTEwNDExMDQxNTA0MTkxNDExMDgzRAorOjIwMjhDMDAwMjA0MDEwNDAxMjQ0ODE0ODQ5NTA0QkZDMTIwNDEyMDQyM0ZDMjIwNEUyMDQyM0ZDMjIwNDIyMDQyMjE0MjIwODI3Cis6MjAyOEUwMDAwMjAwMDEwMDdGRkU1MTI0ODkzMDA1NDAxRkYwMTAxMDFGRjAxMDEwMTAxMDFGRjAxMDEwMTAxMDEwNTAxMDIwODgKKzoyMDI5MDAwMDIxMDgxMDkwMTA2MDAxOTg4ODQwNEJGRTUwODAxMUY4MTMwODI1RjhFMTA4MjFGODIxMDgyMTA4MjEyODIxMTBGNQorOjIwMjkyMDAwMDA4MDc4ODA0QkZDNDg0MDQ4NDg0ODMwNzhEMjRCMEE0RkY2NDkyMDc5MjA0QTIwMDIyMjA0MjIwODFFMDAwMDg4Cis6MjAyOTQwMDAwMTAwMDEwMDAxMDAwMTAwMDk0MDBEMjAxOTEwMTExODIxMEM0MTA2ODEwNDAxMDAwMTAwMDEwMDA1MDAwMjAwQTgKKzoyMDI5NjAwMDAxMDAwMTA4MUZFQzAxMTBGRkZFMDBDMDAxMDAwM0YwMEM0MDMwODBDRkZDMDA4MDAwODAwMDgwMDI4MDAxMDBCNgorOjIwMjk4MDAwMTA0MDEwMjAxMDIwRkRGRTEwMDAzODg4MzQ4NDUxMEE1MTA4OTI5MDEwOTAxMDYwMTA2MDExOTgxNjBFMTAwNENECis6MjAyOUEwMDAwMTAwMjEwODExMTAwOTIwMDEwMDFGRjgxMDA4MUZGODEwMDgxMDA4MUZGODEwMDgxMDA4MTAwODEwMjgxMDEwNzUKKzoyMDI5QzAwMDAwODAwMDgwRjdGODkwODg5N0ZFOTA4ODk3Rjg5MDgwOTRDOEY1QTg5NkI4MDZBODA0ODgwODg4MDg4ODAwMDAwMworOjIwMjlFMDAwMjA4MDNFRkU1MEEwNDkxMDgyMDgwMEYwM0YwMDAxMDAwMTAwN0ZGQzAyODAwMjQwMDQyMDA4MTgzMDBFQzAwNDcyCis6MjAyQTAwMDAxMDIwMDgzMDA4MjA3RjIwMTQ3RTEyNDQyMUM0MjI0NDYyMjgxNDI4MDgxMDBDMTAxMjI4MjBDRUMzMDQwMDAwNkIKKzoyMDJBMjAwMDIxMDAyMTNDMjdENEY5MTQyN0Q0NzExNDZGRDRBMTI0QTE0ODI3RkUyMDQwMjBBMDIwOTgyMTBFMjYwNDIwMDAyOQorOjIwMkE0MDAwMDg0MDA4NDA0ODQ4NkY1QzQ4NjA0ODQwNEI0NDVDNDRFMDdDMDAwMDNGRjgwMDAwMDAwMDAwMDBGRkZFMDAwMDlDCis6MjAyQTYwMDAwMDAwM0UyMDIyMjAzRTdFMjI0NDNFODgxMDIwM0YyMEM5MjA0OTIwNTUyMDYzNTA3RjUwMDE4ODBEMEUwMjA0NEMKKzoyMDJBODAwMDEwMDAxMUY4MTEwODdERjg1NTA4NTVGODU1MDA1NUZDN0YyNDU1MjQxOTU0MTU4QzFGRjRFNDA0MDAxNDAwMDhGRQorOjIwMkFBMDAwMjQyMDI0MjBGRTIwMjVGQzNDMjAxMDIwN0ZGRTUyMDA3RTIwMTAyMDExRkNGRTIwMTAyMDEwMjAxM0ZFMTAwMDdBCis6MjAyQUMwMDAyMDQwMjA0MDIwNDAyM0Y4RkM0ODIwNDgyMjQ4MjI0QzI0OEEyNDhBMjA4ODIxMDgyMTA4MjIyODI0MTAwMDAwNjMKKzoyMDJBRTAwMDEwNDAxMDQwMTA0MEZERkMxMDQwMTI0ODE1NTAxOEUwMzNGRUQwNDAxMEEwMTA5MDExMDgxMjBFNTQwNDIwMDBBNAorOjIwMkIwMDAwMTE0MDExMjAxM0ZFMTIyMEZGRkMxMjIwMTNGQzFBMjAxM0ZFMzAwMEQzRkMxMDg4MTExRTExMDI1MjEyMzQwQ0VDCis6MjAyQjIwMDAwMDAwN0Y3RTIyNDQyMjQ4MjI0ODdGNTAwMjQ4MDY0NDBBNDIwQTQyMTI1MjIyNENDMjQwMEE0MDA0NDAwMDQwQzEKKzoyMDJCNDAwMDA4MDgwODA4MTQ0ODEzMjgyMTI4N0UwODg4ODgwODQ4N0YwRTA4Rjg0QTA4NDkwODg5MDgwODA4MjgwODEwMDg3NgorOjIwMkI2MDAwMDA0MDc4NDA0ODQwNEJGODQ4NDg3ODQ4NEE0ODRBNEM3QTRBNEM4QTQ4ODg0ODg4NDkwODQ5MDhBQTI4OTQxMEM4Cis6MjAyQjgwMDA0NDIwMjQyMDM0MkMyN0IwMDQyMjA1MjJFNjVFMjQ4MDIzRjgyMjA4MjIwODIzRjgyQTA4MzIwODIzRjgwMDAwMTAKKzoyMDJCQTAwMDAwMDAzRkZFMjAwNDQ4MDgwRkZDMDgwMDA4MDAxRkZDMDgwNDAwMjQ3RkY0MDAwNDAwMDQwMDA4MDAyODAwMTA0MworOjIwMkJDMDAwMjAyMDIwMjgyMDI0MjNGRUY4MjAyMkEwNzJBNDZBQTQ2N0U4QTJBOEEyOTAyNDkyMjRBQTI4NEEyMDg2MjAwMjgxCis6MjAyQkUwMDAyMDAwMjA3QzNGNDQ0NDQ0MDQ0NDdGNDQwNDQ0MjQ0NDI3NDQyNDQ0MjQ0NDI3NUNGODQ4NDA0MDAwNDAwMDAwOTUKKzoyMDJDMDAwMDIwMDAzRUZDNDQ0NEJFOEMyQjUwM0U3QzJBOTAzRTdFNEIxMDlGRjAxMTEwMUZGMDExMDgwMUZDN0UwODAwMDAyNworOjIwMkMyMDAwMjQwMDI3QkMyNDk0MjkxNEJGQTRBQUNDQUFBODJGQkUyQUM4MkY4ODJBRkUyQTg4MkE4ODJBODgzMTg4MjAwOEI4Cis6MjAyQzQwMDA0MDAwMjI0ODIyNDgwMjQ4OEE0ODRGRkU1MjQ4MTI0ODEyNDhFMjQ4MjI3ODIyMDAyMjAwMjIwMDIzRkUyMDAwM0UKKzoyMDJDNjAwMDQwMDAyM0ZFMjIwNDAwODA4ODgwNDhGQzUxMDAxMTAwMjFGQzIwMDRFMDA0MjdGNDIwMDQyMDA0MjAxNDIwMDhCQgorOjIwMkM4MDAwMDEwODQyMDgzNzg4MjQ4ODA3RkUwNDg4RTdDODI0QTgyRkE4MjE4ODIyODgyQTg4MzQ4ODI4ODgxMkE4MDExMDU3Cis6MjAyQ0EwMDAzRkZDMjAwNDIwMDQzRkZDMjA5MDI0OTgyMkEwMjdGODI0MDgyN0Y4MjQwODI3Rjg0NDA4NDQwODg0MjgwNDEwMUIKKzoyMDJDQzAwMDA0NDAwNDQwRkZGRTE0NDAwODBDN0Y3MDIyNDAxNDQwN0Y3RTA4NDg3RjQ4MDg0ODJDODg0QTg4QTkwODEyMDhBRAorOjIwMkNFMDAwMDQyMDA0MjA3RkZFMDQyMDA0MjAwMjAwMDEwMDA5OTAwODg4NDg4NDQ4MDY0ODE0ODgxMDA4MTgwN0YwMDAwMDc2Cis6MjAyRDAwMDAyMDQwMjAyMDNERkMyMDA4NDA4ODdDNTA5MDIwMTNGRUZDMjAxMDIwMTFGQzEwMjAxNDIwMTgyMDEwMjAwMDIwMTgKKzoyMDJEMjAwMDAzNDAzQzQwMjA0MDIwN0UyMDg0M0VBODI1MjAyNDIwMjQyMDI0MjAyNDUwNDQ0ODQ0ODg4NTA2MDYwNDAwMDBEQQorOjIwMkQ0MDAwMDIwMDAxMDA3RkZDMDAwMDEwMTAwODIwMDQ0MEZGRkUwMTAwMDEwMDdGRjgwMTAwMDEwMDAxMDAwMTAwMDEwMEVFCis6MjAyRDYwMDAxMDAwMDgwRTdGNzAyMjQwMTQ0MEZGN0UwODQ4MDg0OEZGNDgwODQ4MkM0ODJBODg0QTg4ODkwODJBMDgxMDA4MDEKKzoyMDJEODAwMDIwMzgyM0UwMjIwMDMyMDBBQTAwQUEwMEEzRkVBMjIwMjIyMDIyMjAyMjIwMjIyMDI0MjAyNDIwMjgyMDMwMjBBNQorOjIwMkRBMDAwMDIwMDAxMDAwMDgwMDBDMDA4ODAwODAwMDgxMDQ4MDg0ODA0NDgwNjg4MDQwODEwMDgxMDA4MTAwN0YwMDAwMDczCis6MjAyREMwMDAwODgwMEM2MDE4NDAxN0ZFMzAwMDMzRjg1MDAwOTNGODEwMDAxM0Y4MTIwODEyMDgxMjA4MTNGODEyMDgwMDAwQ0UKKzoyMDJERTAwMDEwMTAyMDEwN0Y5MjU1NTI1NTU0NTVGRTU1MTA1NTEwNTUxMDU1RkU1NTEwNUY5MEYwMTAwMDEwMDAxMDAwMTBDOQorOjIwMkUwMDAwMDAwMDFGRjgxMDA4MUZGODEwMDgxRkY4MDEwMDExMDAxRkZDMjEwMDIxMDA0RkY4MDEwMDAxMDA3RkZFMDAwMDA4Cis6MjAyRTIwMDAwMDAwNzlGQzQ5MDQ0OUZDNzkwNDQ5RkM0ODIwNDkyMDc5RkM0OTIwNEEyMDQ5RkM0ODIwNDgyMDRCRkU5ODAwQkEKKzoyMDJFNDAwMDg0MDA0NUZDMjkwNDExRkMzMTA0NDlGQzk5MjQyOTIwMjlGQzRBMjA4QTIwMERGQzA4MjAxMDIwNTNGRTIwMDBFOAorOjIwMkU2MDAwMjAwMDIzRjgyMjA4MzNGOEFBMDhBQkY4QTA0MDIyNDAyM0ZDMjQ0MDI4NDAyM0Y4MjA0MDIwNDAyRkZFMjAwMDE4Cis6MjAyRTgwMDAwMDAwNDQwODIyMEMzMzA4MTk5ODExMTAwMDIwN0ZGRTAwMDAwODQwMEMyMDE4MTAzMDE4NDAwQzgwMDgwMDAwNTYKKzoyMDJFQTAwMDAwMDQ3Rjg0MTIyNDEyMjQxMjI0MTIyNEZGQTQxMjI0MTIyNDEyMjQxMjI0MjIwNDIyMDQ0MjE0ODIwODAwMDA4QworOjIwMkVDMDAwMDAwNDdGODQxMjI0MTIyNEZGRTQxMjI0MTIyNDIyMjQyMjA0NDExNDAxMDgzRkZDMDEwMDAxMDBGRkZFMDAwMDJDCis6MjAyRUUwMDAwMDA0N0Y4NjEyMEMxMjEwMTIyMDEyMDhGRkNDMTIxODEyMjAxMjQ0MTI4NjEyMEMyMjEwMjIyMDQyNDA4MDgwMTQKKzoyMDJGMDAwMDAwMDA3RjNFMTIyNDEyMjQxMjI4MTIzMEZGQTgxMjI0MTIyMjEyMjIxMjIyMjIzQTIyMjQ0MjIwODIyMDAyMjBDQgorOjIwMkYyMDAwMDgwMDFDMDAzMUZDNDAwMDg4MDAwQzAwMUJGRTMwMjA1MDIwOTAyMDEwMjAxMDIwMTAyMDEwMjAxMEEwMTA0MDIzCis6MjAyRjQwMDAwMDAwRkVGQzI4ODQyOEZDRkU4NEFBRkNBQTIwQUFBMEFFRkNDMzIwRkUyMDgyRkM4MjIwRkUyMDgxRkUwMDAwMDMKKzoyMDJGNjAwMDAxMDAwMTAwM0ZGODAxMDBGRkZFMTAyMDA4MzAwNDQwM0ZGODAxMDAwMTAwN0ZGQzAxMDAwMTAwMDEwMDAxMDBCNgorOjIwMkY4MDAwMDAwMDAxMDAwMTAwN0ZGRTAxODAwMzQwMDUzMDE5MUU2MTA4MDEwMDFGRjAxMDEwMTAxMDEwMTAxRkYwMTAxMDdBCis6MjAyRkEwMDAyMDIwMjEyMDIxMjAzMTIwQUJGRUFBMjBBNDIwMjAyMDIxRkMyMDIwMjAyMDIwMjAyMDIwMjdGRTIwMDAwMDAwMjUKKzoyMDJGQzAwMDIwMjAzMDIwMjEyMDIxMjBGREZFMjUyMDI2MjA0NDIwNDgyMDI5RkMxMDIwMjgyMDI0MjA0NDIwODNGRTAwMDBDNworOjIwMkZFMDAwMDAwMDFGRjAxMDEwMTAxMDEwMTAxMDEwMUZGMDE0NTAwNDQwMDQ0MDA0NDAwODQyMDg0MjEwNDIyMDNFNDAwMDdGCis6MjAzMDAwMDAwMDAwMTAyMDA4MzAyNDI0MjI0NDIyODQyMTg0MjI4NDIyNDQyNDY0MjgyNDMwMDQyMDA0N0ZGQzIwMDQwMDAwNzgKKzoyMDMwMjAwMDAxMDA3OTAwNDlGRTQ5MDI3QTIyNDkzMjRBQUE0QTRBN0FBQTRCMUE0QTBBNEJGQTRBMEE0ODAyQTgxNDkwMDhEMQorOjIwMzA0MDAwMDgwMDA4MDAxRkZDMTAwNDIwODQ0OEE0QTUyNDIyMjQyNTI0MjhBNDMwQTQzRkU0MjAyNDAwMDQwMDI4MDAxMDA2Cis6MjAzMDYwMDA0MDAwMjAxMDIyMTAwMTIwOTBBMDU0QTQ1NDQ0MTQ0NDI0QTQyNEE0RTUxNDI1MTQyNjA0MjdGQzI0MDQwMDAwM0UKKzoyMDMwODAwMDEwQTAxMDkwMTA5MEZERkUyMTEwMjMxMDI5RkM0OTEwNTExMDUxRkNBMTEwMjkxMDQ1MTBGREZFMDUwMDAxMDA3NQorOjIwMzBBMDAwMTA0MDE0NTAyMjc4N0Y0NDQxNDQzRTNDMjIwMDNFNEMyMjcwM0U0NDIyNDQyNjNDMjg4ODI0NDQ0NDQ0MDAwMEQ4Cis6MjAzMEMwMDAxMDQwMTg2MDEwNDAxMDQ4MjdGQzIwQzA2MEUwNjE2MEExNTAyMjUwMjI0ODI0NEUyODQ0MjA0MDIwNDAwMDAwMTEKKzoyMDMwRTAwMDExMDAxOTAwMzFGODIzMDg2QTkwQUM2MDI4OTgyQjRFMjhFNDI5OTgyNjYwMjE4QzI2MzAyMEMwMjcwMDAwMDBCNgorOjIwMzEwMDAwMDgxMDA0MjAzRkZDMDEwMDFGRjgwMTAwN0ZGRTAyMDAwNDAwMDdGMDA5MTAxN0YwMjExMDQxMTAxRkZFMDAwMEU2Cis6MjAzMTIwMDAxMDAwMTNGRTEwNDBGRTQwMTA0MDEwNDAzOEZDMzQwNDU0MDQ1MDA0OTAwNDEwMDQxMDA0MTAyODEwMTAwMDAwMTQKKzoyMDMxNDAwMDAwNDAwMDgwRjNGODkyMDg5M0Y4OTIwODkzRjg5MjA4OTNGOEYwODA5RkZFODE0MDAyMjAwNDE4MDgwRTEwMDQxRgorOjIwMzE2MDAwMjAwMDIxRkMzQzQwMjNGRTQwRTA3RDU4QTI0NjIxRjhGQzkwMjA5MDIxM0MyMTA0MjkwNDMyMDQyMjE0MDQwODFDCis6MjAzMTgwMDAwMEY4M0YwMDAxMDA3RkZFMDNDMDBEMzAzMTBFQzEwNDFGRjAwMjIwMDI0MDA0RkMwNDA0MDgwNDEwMjgyMDEwODcKKzoyMDMxQTAwMDIwMjAxODIwMTAyMEZDMjAwNUZDMDkyNDExMjQzNTI0NTlGQzk5MjQxNTI0MTEyNDExMjQxMUZDMTEwNDEwMDBBOAorOjIwMzFDMDAwMTAzQzFCRTAxMDQwMjNGRTQ4RDBGOTQ4MTI0NjIwNDQ3QkY4MDA5MDAwOTAxRDNDRTEwNDAyMDQwNDI4MDgxMDA3Cis6MjAzMUUwMDAyMDQwMjA3QzIwNDAyN0ZFRkM0NDI1RjAyNDQ0MjQzQzI0OTAzQzkwRTY5NDQ1OTgwODkwMDg5MDE3RkUyMDAwRjUKKzoyMDMyMDAwMDAwNDAwMDUwMDA0ODNGRkUyMDQwMjA0MDIwNDgyMDQ4M0U1MDIwMjAyMDYwMjBBMDQzMTI0QzBBODAwNjAwMDJDOAorOjIwMzIyMDAwM0ZGQzAxMDA3RkZFNDEwNDFENzAwMTAwMUQ3MDAwMDA3RkZFMDIwMDNGRkMyNDQ0MjQ0NDI0NDQyNDU0MjAwOEUzCis6MjAzMjQwMDAwMTAwMDFGODAxMDAzRkZFMjEwNDIxRjAzRjA0MjFGQzIwMDAyMjQwMzI0ODJBNEM0QTUwNDI0MEJGRkUwMDAwNTUKKzoyMDMyNjAwMDAwNDAwMDdDMDA0MEY3RkU5NDg0OTRGMDk3ODQ5NDdDOTQwMEY0OTA5NDkwMDY5NDA5OTgwODkwMTdGRTIwMDA1MgorOjIwMzI4MDAwMDgwMDEzRkUyMDIwQzA0MDA1RkMwOTA0MTEyNDIxMjRDMTI0MDUyNDA5MjQxMDUwMjA0OEMxODYwNjAyMDAwMEZCCis6MjAzMkEwMDAxMDQwMTg0MDIwQTA0MTE4OTIwRTFERjQzMDQwNjA0MEE3RkMyMDQwMjI1MDIzNEMyNDQ2Mjg0NDIxNDAyMDgwRDEKKzoyMDMyQzAwMDQxMDAyMTAwMzEwMDIxRkMwMjIwMDIyMEY0MjAxMDIwMTdGRTEwMjAxMDIwMTAyMDE0MjAxODIwMTAyMDAwMjA1NQorOjIwMzJFMDAwMDQ0MEZGRkUwNDQwMDEwMDdGRkMwODYwMUZDMDAzMTAxQzA4M0ZGQzAwMDgzRkY4MjEwODNGRjgyMTA4M0ZGODE1Cis6MjAzMzAwMDAwMDAwRkYwODI4MDgyODQ4RkVBQUFBQjJBQTkyQUU5MkMyQUE4MkFBRkVDQTgyODI4MjgyRkVGRTgyODIwMDAwMUUKKzoyMDMzMjAwMDA4MDAwQzAwMTI3RTExQzQyMTQ0N0U0NDg4NDQwODQ0N0YyODA4Mjg0QTEwNjkzMDQ5NDhCODg2MTEwNDAyMDAyNQorOjIwMzM0MDAwMTAwMDEwRkMxMDg0MTA4NEZDODQxNEZDMTQ4NDE0ODQxNDg0MjQ4NDI0RkMyNDAwNDQwMjQ0MDI4M0ZFMDAwMEQ4Cis6MjAzMzYwMDAwMTAwMDA4MDNGRkUyMDAwMjdGODIxMTAyMEEwMjA0MDJGRkUyMDQ0MjA0MDIwNDAyMDQwNDA0MDQxNDA4MDgwNEQKKzoyMDMzODAwMDAyMDAwMTAwRkZGRTAyMDAwQ0MwM0YyMDBDMTAzRkY4MDAwODFGRjgxMTA4MUZGODExMDgxMTA4MUZGODEwMDhGRAorOjIwMzNBMDAwMjA4MDIwODAyMTAwMzNGOEFBQThBQUE4QTJBODIyQTgyMkE4MjJBODIyQTgyMkE4MjJBODJGRkUyMDAwMDAwMDhBCis6MjAzM0MwMDAwODAwN0Y3QzEyNDQyMjQ0MTQ0NDBDN0M3MjAwMDQ0MDBGODAwMjEwMEZGODAwODgxMDkwMTA4QzIyODQwMTAwODUKKzoyMDMzRTAwMDIwMDAzM0ZFMjAyNDIxMzhGOTIwNEFBMDRBN0U0QzAwNDlGODMxMDgxMUY4MjkwODJERjg0OTA4ODEyODAxMTBFNAorOjIwMzQwMDAwMTA0MDEwNDAyMUY0MjA0NDQ4NDhGQkZFMTAyMDIwNDA0MUY4RkIwODA1MDgwMUY4MzkwOEMxMDgwMUY4MDEwODJDCis6MjAzNDIwMDAxMDQwMTg0MDExRkMyMDQwNEJGRUYxMjQxMEE4MjJBMDQxMjBGN0ZFMDAyMDAwNTAxODQ4RTA4NDAxMDQwMDAwMTAKKzoyMDM0NDAwMDEwMDAxMUZDRkUyMDEwMjAyMDIwMjgyMDQ4MjBGREZFMDgyMDBFMjAzODIwQzgyMDA4MjAwODIwMDgyMDA4MjBFMAorOjIwMzQ2MDAwMDA4MDAwNDBGM0ZDOTQwNDkwMDg5M0ZDOTAwMDkzRjg5MjA4RjNGODkyMDgwM0Y4MDIwODAwMDAwRkZFMDAwMDkyCis6MjAzNDgwMDAwMjAwMDEwMDNGRkU0MDA0MUZGODAwMDAwRkYwMDgxMDBGRjAwODEwMDgxMDBGRjAwODEwMDAwMEZGRkUwMDAwMzcKKzoyMDM0QTAwMDBGRjAwODEwMEZGMDA4MTAwRkYwMDgxMDdGRkUwNDAwMDgxMDFGRjgwMDA4MDkwMDI4ODQyODEyNjdGMjAwMDBDNworOjIwMzRDMDAwMjA4MDEwODAxMEZFRkQwMDIyMDAyMUZFM0MyNDI1MjAyNTIwMjUzQzI1MjA0NTIwNDVBMEFBNjAxMjFFMDQwMDU4Cis6MjAzNEUwMDAwMTAwMDA4MDAwODQ3RkZFMDEwMDAyMjAwNDIwMDg0MDFGODAwOTAwMDIyMDA0MTAwODA4M0ZGQzEwMDQwMDAwN0UKKzoyMDM1MDAwMDAwNDAyMjQwMTI0MDEzRjgwNDQwMDA0MEY3RkMxMTIwMTEyMDEyMjQxMjI0MTQxQzEwMDAyODAwNDdGRTAwMDBCQQorOjIwMzUyMDAwMDEwMDAwODAzRkZFMjQwMEE3NDQ2OTI4M0ZGRTJBOTA2RjkwQUFCQzJGOTAyODkwNDA3RTVGOTA4ODEwMDAxMDA1Cis6MjAzNTQwMDAwMDgwNzg0MDQ4NDQ0RkZFNDg0MDc4NDQ0ODg0NDlGODQ4MTA3ODIwNDg0MDQ4ODg0OTA0N0JGQzQ5MDQwMDAwQjAKKzoyMDM1NjAwMDEwODAxMDgwMjEwMDIxRkM0QTA0RjVGNDExMTQyMTE0NDFGNEY5MTQwMTE0MDFGNDE4MDRFMDA0MDAxNDAwMDhGNAorOjIwMzU4MDAwMjQ1MDI0NTBGRTUwMjQ5NDNEOTQxMjk4N0U5MDUyQjA3RUQwMTA5MDEwOTBGRTkyMTA5MjEwOTIxMDhFMDAwMEIyCis6MjAzNUEwMDAwODQwMDg0MEZGRkUwODQwMjAyMDdERkM0NTA4NDQ4ODdDNTA0M0ZFN0MyMDQ1RkM0NDIwN0MyMDQ0MjAwMDIwRjYKKzoyMDM1QzAwMDAxMDgxMDhDMENDODA4OTA3RkZFNDAwNDhGRTgwMDQwMDA4MDdGRkUwMDgwMDA4MDAwODAwMDgwMDI4MDAxMDBFMgorOjIwMzVFMDAwMDIwMDAxMDAwMTAwM0ZGRTIwMDQyMDA4MDQ0MDA0NDAwNDQwMDQyMDA4MjAwODIwMTAxMDEwMTgyMDBFNDAwNDQ0Cis6MjAzNjAwMDAwMDAwM0ZGODAxMDA3RkZFNDEwNDFENzAwMTAwMUQ3MDAwMDAzRkY4MDAwODFGRjgwMDA4MDAwODNGRjgwMDA4RjAKKzoyMDM2MjAwMDAyMDAwMzAwMDIwMDA0MDAzRkY4MjQ4ODI0ODgyNDg4MjQ4ODI0ODgyNDg4MjQ4ODI0ODhGRkZFMDAwMDAwMDBFQgorOjIwMzY0MDAwMDAyMDdGMjA0MTIwNDEyMDdGRkMwMDI0N0YyNDQxMjQ0OTI0NDkyNDQ5MjQ0OTI0MTQ0NDIzNTRDMjg4MDAwMDc1Cis6MjAzNjYwMDAwMEY4M0YwMDAxMDA3RkZDMDEwMDFGRjAxNTUwMTU1MDFGRjAwMTAwM0ZGODAxMDBGRkZFMjQ0ODIyMjQ0MjI0NjAKKzoyMDM2ODAwMDEwM0MxQkUwMjIyMDUyMjA5QkZFMzIyMDYyRkNBMjg0MjJGQzIyODQyMjg0MjJGQzIyODQyNDg0MjRGQzI4MDBBMgorOjIwMzZBMDAwMDgwMDA4MDAxRkZDMTAwNDIwMDQ1RkM0OTA0NDEwNDQxRkM0MTA0NDEwNDQxRkM0MTA0NDAwMDQwMDE0MDAwODdBCis6MjAzNkMwMDAwMTAwNDEwMDMxRkMyMjA0MDQwNDAzRTRFMjI0MjIyNDIzRTQyMjI0MjIyNDIzRTQyQTI0MzAwNDIwMTQwMDA4QzIKKzoyMDM2RTAwMDAwMDAzRkY4MDAwODFGRjgwMDA4MDAwODNGRjgwMDIwN0ZGRTAwMjAwODIwMDQyMDA2MjAwNDIwMDBBMDAwNDBGQQorOjIwMzcwMDAwMDA4NDdDODQwNEE0MjRBNDI0QTQyNEE0MjRBNDNFQTQwMkE0MDJBNDFBQTRFMkE0MDUyNDE1MDQwQTA0MDAwNDk3Cis6MjAzNzIwMDAwMTI0NDFCNjIxMjQyMjQ4MDI0ODA0OTBGODkwMTQ0ODEyNDgxMjI0MTEzNjExMjQxMDAwMjgwMDQ3RkU4MDAwRjMKKzoyMDM3NDAwMDAwNDBGRTQwMTA4MDEwRkUzRDAyMjYwMjQ0RjI2NDkyOTg5MjA4RjIxMDkyMTA5MjIwRjI0MDAyODAwQTAwMDQ3MAorOjIwMzc2MDAwMjAwMDE3RjAxMTEwMDExMDgxMTA0OTEwMEZEMDExMTAxMTEwMjExMEUxMDgyMTBBMjEwQTIxMDYyMTAyMDAwMDJCCis6MjAzNzgwMDA0MTA0MjEyNDMxMjQyMTI0MDEyNDAxMjRGMTI0MTEyNDExMjQxMTI0MTEyNDExMjQxNTI0MUEyNDEyMjQwNDA0RTgKKzoyMDM3QTAwMDQwMDAyN0Y4MzEwODIxMDgwMTA4RjEwODE3RTgxMTA4MTEwODExMDgxMTA4MTEwQTE1MEExOTBBMTEwNDAwMDA3MQorOjIwMzdDMDAwMDAxMDRGOTAyMDkwMjExMDAyMTAwMjU4RTM1NDI2OTQyQTkyMjMxMjIyMTIyQTUwMjQyMDUwMDA4RkZFMDAwMEZDCis6MjAzN0UwMDA0MDAwMjdGMDMxMTAyMTEwMDExMDBGRDBFMTEwMjExMDIxMTAyMTE0MjEwQzIxMDQyMTAwNTAwMDhGRkUwMDAwMzgKKzoyMDM4MDAwMDAwMDAzRkZFMjAwMDIwODAyMDgwMjA4ODJGRkMyMDgwMjBBMDIwOTAyMDk4NDA5MDQwODBCRkZFMDAwMDAwMDAyMworOjIwMzgyMDAwMTAwMDExRkUxMTIyRkQyMjExMjIxMUZFMTUyMjE5MjIzMUZFRDAyMDEwMjAxMDIwMTAyMDEwMjA1MDIwMjAyMEQ0Cis6MjAzODQwMDAwMDIwN0U0MDA4RkM0OEE0NDg5NDdFODQwODk0MTg4ODE4RkUyODAyMjgwMjRCRkE4ODAyMDgwMjI4MTQxMDA4RTkKKzoyMDM4NjAwMDAwMjA3QzQwNTRGQzU0QzQ1NEE0N0NBNDU0OEM1NDgwN0NGRTEwMDIxMDAyMTNGMjEwMDIxMDAyMTAwQTEwMDQ0MworOjIwMzg4MDAwMDAwMDAzRkM3ODEwNDkxMDQ5MTA0OTEwNEJGRTQ4MzA3ODUwNDg1MDQwOTAwMTEwMDIxMDA0NTAwODIwMDAwMDA2Cis6MjAzOEEwMDAwMDAwMDgyMDA0MzAwNjQwMDI4MDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMDAwREEKKzoyMDM4QzAwMDBBNDAwNDI0N0ZGRTA0NjAzRkRDMTAyMDBDMjAwODIwMUY3RTEwQTAwMTIwMDIyMDBDMjA3MTIwODBFMDAwMDA0OQorOjIwMzhFMDAwMDAwMDNGRkMwMDQwMDg0MDA4NDAxMDQwM0ZGRTEwQzAwMTQwMDI0MDA0NDAwODQwMTA0MDIwNDA0MTQwMDA4MEEwCis6MjAzOTAwMDAxMDAwMTFGRTEwMDg3Qzg4NTQ4ODU0ODg1NUZFNTQ5ODdDMjgxMDI4MTQ0ODFFNDgzNDg4QzEwODAyMjgwNDEwMTQKKzoyMDM5MjAwMDAxMDAyMTA4M0ZGODAwMDAzRkZDMjA4MDJGRjgyMDgwMjA4MDNGRkMyMDgwMkZGODQwODA0MDgwQkZGRTAwMDBBNQorOjIwMzk0MDAwMjAwMDM3REU0MjAwODIwMDI3QzAzMjVFNjI0NEFGRTQyMDA0MjdDNDI0NDQyNDQ0MjQ0NDI3QzQyNDU0MjAwOEVDCis6MjAzOTYwMDA0MDAwMjdGRTI0NDAwNDQwOTVGODU0NDA1NDQwMjdGRTI0NDAyNDQwQzdGQzQ4NDA0ODQwNTA0MDY3RkU0MDAwOTAKKzoyMDM5ODAwMDAwNDBGRTUwNDg4ODQ4RkU0OTEwN0QxMDBCRkUxOTEwMjkxMDI5RkU0OTEwODkxMDA5MTAyOUZFMTEwMDAwMDBDOAorOjIwMzlBMDAwMDAwMDA3RkNGOTIwODkyMDg5MjQ4OTI2OEQyNDhCMjg4OTI4RjkzMDg5MjAwMTIwMDEyMDFGRkUwMDAwMDAwMEEwCis6MjAzOUMwMDAwMDAwN0ZGRTAyNDAwMjQwMDI0ODIyNEMxMjQ4MTI0ODBBNTAwQTUwMEE2MDAyNDAwMjQ0RkZGRTAwMDAwMDAwRDcKKzoyMDM5RTAwMDAwMDA0M0ZDMzAxMDIxMTAwMTEwRjExMDExRkUxMDMwMTA1MDEwNTAxMDkwMTQ5MDE5MTAxMjEwMDQ1MDAwMjBGMworOjIwM0EwMDAwN0ZGQzAxMDAxMUY4MTEwMDExMDRGRkZFMDgwODBGRkMxMDAwM0ZGRTAwMDQyOTI0MjQ5NDQ0ODgwMDI4MDAxMDg5Cis6MjAzQTIwMDAwMDAwMDNGQzAyMDRGQTQ0OEE0NDhCRkM4QTQ0OEE0NDhBNDQ4QUE0OEE5Q0ZCMTQ4QTA0MDIwNDAzRkMwMjA0ODgKKzoyMDNBNDAwMDEwMDAwQkZDMDkwNDQxMDQ0RkY0NDI0NDQ1MjQ1RkZDNDUyNDQ3RTQ0NTI0NDdFNDQxMTQ0MEY0NDAwNDQwMEMyRgorOjIwM0E2MDAwMTAwMDEzRkUxMjIyMTIyMjU2MjI1QUZBNTIyMjkyMjIxMjUyMTI1MjJBOEEyQjBBNDIwMjQyMDI4M0ZFMDIwMjBCCis6MjAzQTgwMDA0MDgwMjA4MDJGRkMwMTQwODIzMDU0OEU1RkY0MjQ5MDI3RjA0NDkwQzQ5MDQ3RjA0MDgyNDA4MjQwN0U0MDAwQzcKKzoyMDNBQTAwMDA4NDAwODQwMDg0MDdGNTAwODQ4MDg0QzBGNDRGODQwNDAwMDFGRjgxMjQ4MTI0ODEyNDgxMjQ4RkZGRTAwMDA3NAorOjIwM0FDMDAwMDAwNDdGRkUyMjQ4MTI0ODBBNTAzRkZFMjAwMDIwMDAyMDAwMjAwMDIwMDAyMDAwNDAwMDQwMDA4MDAwMDAwMDRBCis6MjAzQUUwMDAwMDAwRkRGRTEwODgxMDg4MjA4ODIwODg3QkZFNjg4OEE4ODgyODg4Mjg4ODI5MDgzOTA4MjIwODA0MDgwODA4OUEKKzoyMDNCMDAwMDIwMDAyNzhFMjE3OEY5MDhBOTA4QUEwOEFGQUVBOEE4RjhBODIyQTgzMTNFMjkwMDNFODBFQTYwMDQxRTA4MDBGMgorOjIwM0IyMDAwMDEwMDIxMDgyMTA4MjEwODNGRjgwMDAwN0ZGRTA0MDAwODAwMUZGODI4MDg0ODA4ODgwODBGRjgwODA4MDAwMDBCCis6MjAzQjQwMDAwMDAwRjgxQzEzRTAxMDIwMjAyMDc5MjAyOTNDMDkyMDQ5MjA0OTIwMjlGRTEwMDAyODAwNDYwMDgxRkUwMDAwRDEKKzoyMDNCNjAwMDAyMDAwMTAwN0ZGRTAwMDAwMDAwMUZGMDAwMDAxRkYwMDAwMDAwMDAxRkYwMTAxMDEwMTAxMDEwMUZGMDEwMTAwOQorOjIwM0I4MDAwMTAwMDA4N0U3RjEwMjIyMDE0N0M3RjQ0NDQ1NDQ4NTQ3MjU0NDQ1NDQ4NTQ3MTI4NDYyNDk4NDZFMTgyMDAwMEY5Cis6MjAzQkEwMDAyMDAwMUJGQzA4MDQyMjA0MjNFNDI0NDQzQTA0MkNGNDI4MTQyRUY0MjgxNDJGRjQyMDA0MjAwNDIwMTQyMDA4NkUKKzoyMDNCQzAwMDAxMDAwMTEwMDkyMDA5NDAxMjgwMDQ2MDE5MTg2MTgwMDkxMDA5MTAxMkEwMDI0MDA0MzAxODFFNjAwNDAwMDA2NQorOjIwM0JFMDAwMjAwMDExRjAxMTEwODExMDQ5MTA0OTEwMTIwRTE0MDAyMDAwRTNGODIyMDgyMjA4MjIwODIyMDgyM0Y4MjIwODI0Cis6MjAzQzAwMDAwMTAwMDEwMDdGRkUwMjgwMDQ0MDA5MzAzMTBFREZGNDExMTAxRkYwMTExMDFGRjAxMTE0MDEwNDAwRkMwMDAwOEUKKzoyMDNDMjAwMDEwNDAxMDQwMTNGRUZDNDAxMEEwMTU1ODFBNEUzRkZDRDI0ODEzRjgxMjQ4MTNGODEwNDIxMDQyNTAzRTIwMDBGQgorOjIwM0M0MDAwMDAwMDc5Rjg0OTA4NDkwODc5Rjg0OTA4NDkwODQ5Rjg3OTQwNDk0MDQ5MjQ0OTI4NzkxMDQ5NDgwMThFMDEwNDJGCis6MjAzQzYwMDAxNDAwMUI3QzIyMDA0MDAwOTEwMDE5N0UyMTA4NjEwOEEyMDgyRTA4MjIwODIyMDgyMjA4MjIwODIyMjgyMjEwNzkKKzoyMDNDODAwMDQwODAyMDQwMjdGRTA0MDQ4M0Y4NTA0MDEzRjgyMjQ4MjNGODIyNDhDMjQ4NDNGODQwMDA0MTEwNDEwODQyMDg2OQorOjIwM0NBMDAwMTA4MDEwODAxMEZDRkU4ODExMDgxM0ZDN0QyNDExMjQxMTI0MTFGQ0ZGMDAxMTA0MTEwNDExMDYxMEZDMTAwMEI2Cis6MjAzQ0MwMDAwMDAwMjdGRTI0MDAyNUY4MjUwOEZERjgyNTA4MjVGODI0NDAyN0ZFM0M5MEU0NjA0NDk4MDUwODA3RkUwMDAwOEIKKzoyMDNDRTAwMDA0NDAwNDQwRkZGRTA0NDAxN0MwMTAxNEY3REUxNDUwMzQ1MkQ3Q0UwMDAwMjg4ODI0NDQ2NjY2QzIyMjAwMDBENAorOjIwM0QwMDAwMDAwMDNGRkUyMTAwMjE0MDIxMzAyMTIwM0ZGQzIxMDAyMTAwMjI4MDIyNDAyNDYwNDQzODQ4MUM5MDA4MDAwMEQ1Cis6MjAzRDIwMDAwMDAwRkRGQzExMDQxMTI0MjEyNDIxMjQzRDI0NjUyNEE1MjQyNTY0MjQ1MDI0OTAzQzkyMjUxMjIyMEUwNDAwMTkKKzoyMDNENDAwMDdGRkM0MDAwNDRBMDQ0OTA0OTEwNEJGQzVCMjA2REZDNDkyMDQ5MjA0OUZDNDkyMDQ5MjA0OUZFODkwMDAwMDBCMworOjIwM0Q2MDAwMDA0MDAwMjBGRkZFODgwMDg5Rjg4ODAwODgwMDg5Rjg4ODAwRkJGQzhBMDQwMjA0MDIwNDAzRkMwMjA0MDAwMDJFCis6MjAzRDgwMDAwMTAwMDA4MDNGRkUwNDEwMDIyMDNGRkUyMDAwMjA2MDIxODAyRTE4MjBFMDIzMDYyQzE4NDA2MDQzODA5QzAwRkYKKzoyMDNEQTAwMDEwNDAxMDQwMTBGQzE0ODQ1OTA4NTIxMDUwQzQ5MzFFMUUwNDEyMDQyQkJDMjYwNDQyMDQ0M0ZDODIwNDAwMDBFMworOjIwM0RDMDAwMDIwMDAxMDA3RkZFNDAwNDhGRTgwODIwMEZFMDA4MjAwRkUwMDQwMDdGRkMwODIwMDQ0MDAzODAwQzYwNzAxQzE0Cis6MjAzREUwMDA0MDQwMjAyMDMzRkUyMTA4MDA5MDAzRkVGMjAwMTIwQzEyNzAxMzhDMTI3MDEzODYxQzE4MTQ2MDBCODAxMDAwODkKKzoyMDNFMDAwMDAwMDBGODQwMDg0MDQ4QTA0ODkwNDkwRTRCRjA3QzAwMDQ4NDA2NDQzNTQ4QzU0ODA0MTAxN0ZFMDgwMDAwMDBDNworOjIwM0UyMDAwMDA0MEZFNDAyMDQwMjFGODNENDg0NTQ4NDU0OEE5NDgyQkZFMTA0MDEwQTAyMDkwMjExODQyMEU4QzA0MDAwMDA5Cis6MjAzRTQwMDAwMTAwMDEwMDAxMDAxRkYwMTExMDExMTAxMTEwMTExMEZGRkUwMTAwMDI4MDAyNDAwNDIwMDgxODMwMEVDMDA0QzQKKzoyMDNFNjAwMDAxMDAxRkYwMTExMEZGRkUwMjgwMDU2MDdGRkUwQTEwMDkzMDA4MDAwRkZDMDAwNDNGRjQwMDA0MDAxNDAwMDhGMworOjIwM0U4MDAwMEMyMDcwMjAxMDIwMTFGQ0ZEMjQxMTI0MzkyNDM1MjQ1N0ZFNTA1MDkwNTAxMDg4MTA4ODExMEMxMjA2MTQwNENCCis6MjAzRUEwMDAxMDAwMTNGODEwMTBGRTIwMTA0MDEwODAzOUZDMzQ1NDU0OTQ1MEE0OTEyNDEyNDQxMDg0MTEwNDEwMTQxMDA4NDAKKzoyMDNFQzAwMDEwMDAxM0Y4MTAxMEZDMjAxMDQwMTA4MDE1RkUxODUyMzA5MkQwOTIxMTIyMTYyMjEwNDIxMDgyNTMxNDIwMDgyQworOjIwM0VFMDAwMTIxMDE5MTAxMTI0MkZGRTIwNDA3MDQ4QTdGQzIwNDAyMDQ0MkZGRTIwNDAyMDQwMjA0MDIwNDAyMDQwMDAwMDg5Cis6MjAzRjAwMDAwMTAwMDA4MDFGRkM5MDAwNTdGMDUwNjAxMTgwMzNGQzUwOTQ5MTE0MTIyNDI0NDQyMTg0NDYwODU4Mjg4MDEwOTQKKzoyMDNGMjAwMDA4MjAwNDMwMDI0MDNGRkMwMTAwMDEwMDFGRjgwMTAwMDEwMDdGRkUwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwQQorOjIwM0Y0MDAwMjIxMDExMTAxMTIwMDdGQzgwNDA1MDQwNTdGQzEwNDAyMDQwMkZGRUUwNDAyMDQwMjA0MDIwNDAyMDQwMjA0MDVBCis6MjAzRjYwMDAwMDAwN0RGQzQ1MDQ0OTA0NDkwNDUxMDQ0OUZDNDUwNDQ1MDQ0NTA0NjkwNDUxMDQ0MUZDNDEwNDQwMDA0MDAwQUMKKzoyMDNGODAwMDEwMDAxRkZDMjAwMDVGRjAwMDAwN0ZGMDEwOTAwOTEwM0ZEMDAyMTAzRkQwMDIxMDdGRUEwMjBBMDIwNjAyMDI5QworOjIwM0ZBMDAwMDgwMDA4QzAxNzNFMTQyMjM0MjIyNDIyNjQyMkE0MjIyNDIyMjRBMjI1MkUyNjI0MjQyMDIwMjAyMDIwMDAwMDUxCis6MjAzRkMwMDAwMTAwMDA4NDFGRkU5MjA4NTExMDU3RkUxMDQwMTA0MDM3RkM1MDQwOTA0NDJGRkUyMDQwNDA0MDQwNDA4MDQwNkIKKzoyMDNGRTAwMDA4MjAwNDQ4M0ZGQzAxMDAxRkY4MDEwNDdGRkUwMzQwMDYyMDBDMTgzNDJFQzQyNDA4MjAwODIwMTAyMDIwMjBFMQorOjIwNDAwMDAwMTEwODEwODgxMDkwRkRGRTEwMjAzMDIwMzlGQzU0MjA1MDIwOTAyMDEzRkUxMDIwMTAyMDEwMjAxMDIwMTAyMDBBCis6MjA0MDIwMDA0MjEwMjEyMDJGRkUwMDQwODdGODUwNDAxN0ZFMjA4MDIzQzgyMDUwQ0Y2MDQxNTA0MjQ4NDQ0RTU5NDQ0MDgwMjgKKzoyMDQwNDAwMDAyMjA0NDIwMkZBMDJDQkUwQUE0MEZBNEUyNjQzRkQ0MjQwODI3ODgyNDk0MjhBNjMyQzI1MTAwOEZGRTAwMDAzNAorOjIwNDA2MDAwMDAwMDdCRkU0ODUwNEJGRTdBNTI0QTUyNEJGRTQ4ODA3QkZFNDg4ODQ5MDg0OUQwNDgyMDQ4NTBBODhDOTMwNEVGCis6MjA0MDgwMDAxMDAwMTAzQzEzQzAxMDQwRkM0MDI0NDAyN0ZFMjQ0MDQ4NDAyODQwMTBBMDI4QTAyNTEwNDUwODgyMEUwNDA0RjYKKzoyMDQwQTAwMDAwM0MwM0MwN0M0MjEyMjQxMTI4MTEwMDdERkMxMjIwMTAyMDEzRkUxNDIwMTkyNDYxMjQwMUZDMDEwNDAwMDBERgorOjIwNDBDMDAwMTAxQzEzRTAxMDgwMTI0NEZENDgxMTEwMTVGQzFBMjAxMDIwMzdGRUQwMjAxMjIyMTIyMjEyMjI1M0ZFMjIwMkM0Cis6MjA0MEUwMDAwNDAwMDQzODBGQzBGMjIwMDE3MDAxODQwRTY0NzAxQzAwMDBGRkZFMDQ0MDA0NDAwODQ0MTA0NDIwM0M0MDAwRUEKKzoyMDQxMDAwMDAwNzg0NzgwMjEwODI0OTAwMjIwMDNGOEU0NDAyMDQwMjdGQzIwNDAyMjQ4MjI0ODIzRjg1MDAwOEZGRTAwMDA5MworOjIwNDEyMDAwMDIwMDAxMDA3RkZFNDA0NDBDMzAzMDBDREZGODExMDAyMTAwRkZGRTAxMDAyMTA4MjEwODIxMDgzRkY4MjAwODIyCis6MjA0MTQwMDA0MDFDMjdFMDM0ODgyMjRDMDE0ODAyMTBFM0ZDMjIyMDI0MjAyM0ZDMjAyMDIyMjIyQTIyMzNGRTIyMDIwMDAwQ0UKKzoyMDQxNjAwMDEwQTAxMEEwMTBBMDEyQTQ3REE4MjRCMDI0QTAyNEIwNDlBODJFQUMxMkE4MThBMDI1MjI0MTIyODIxRTA0MDA1RAorOjIwNDE4MDAwMDA4MDAwNDhGN0ZDOTAwMDkxMTA5MTg4OTIwQzk1MTQ5MTEwRjExMDkwQTA4MDQwMDBBMDAxMTgwMjBFMDQwNDcwCis6MjA0MUEwMDAwMDdDN0Y4ODExMEMwOEM4MDg5MDA2MDAzOEY4MjAwODIwMDgzRUY4MjAwODIwMDgyMDA4M0ZGODIwMDgwMDAwNjQKKzoyMDQxQzAwMDA0NDAwNDQwN0ZGRTA0NDAxNDQwMTA0MDI0N0M3Qzg0MDkwNDEwNDQ3RTI0MjAyNDA2MDQ3ODA0MjAyODAwMTAyRAorOjIwNDFFMDAwMDAwMEZGRkUwNDQwM0ZGODI0NDgyNDQ4M0ZGODI0MDgwNDAwRkZGRTA4MTAwRTIwMDFDMDA2MzAxODBDNjAwODQyCis6MjA0MjAwMDAxM0RDMTI0NDk1NTQ1NENDMTE1NEZFQzQyOTIwMjlGQzJCMjAyREZDMjkyMDJCRkM1RDIwNDkyMDgxRkUwMTAwNzEKKzoyMDQyMjAwMDIwMDAyN0ZFMjI1MkZBNTIyM0Q0NjI1NDcyNThBQTU4QTNENDIyNTIyMjcyMjNEQTJFNTQyMDUwMjA1MDIwNTBCMgorOjIwNDI0MDAwMDA0MDA3RkNGMDQwOTNGODkwMDA5N0ZFOTgwNDkzRjg5MDAwRjNGODkyMDg4M0Y4MDExMDAwQTQwRkZFMDAwMEMyCis6MjA0MjYwMDAwMDAwN0Y3RTIyNDQyMjQ0M0U0ODIyNTAyMjQ4M0U0NDIyNDQyMjQyMkY0MkYyNTQwMjQ4MDI0MDAyNDAwMjQwMDAKKzoyMDQyODAwMDA0MjAwODEwMzQyQ0MyNDQwMTgwMDY2MDE4MUVFMDA0MUZGMDAyMTAwMjEwMDIxMDAyNTAwMjIwMDIwMDAyMDBCRQorOjIwNDJBMDAwMDAwMDdFRkM1MjA4N0UxMDUyNjA1MjEwN0VGRTEwMjQxMDIwRkUyMDEwMjAxMDIwMUUyMEUwMjAwMEEwMDA0MDBDCis6MjA0MkMwMDAwMDgwNDBDMDIwODAzMTEwMjEwODEyN0MxNzg2MTAwNDIzRjhFMjA4MjIwODIyMDgyMjA4MjNGODIyMDgwMDAwNEQKKzoyMDQyRTAwMDAxMDAwMTgwMTEwMDE5MDgxMTdDMTc4OEY5MDgxMTA4MTEwODExNDgxMTI4MTAxNDEwMDQxMDA2MEZGQzAwMDBDMAorOjIwNDMwMDAwN0ZGRTAxMDAwMjAwMEZGMDA4MTAwOTEwMDkxMDA5MTAwOTEwMDkxMDA5MTAwOTkwMDI0MDBDMzA3MDBDMDAwNEQ5Cis6MjA0MzIwMDAxMDQwMTAyMDEzRkVGQzkwMTBBMDE1N0MxQTQ0MTZBNDMzOThEMjQ4MTIzMDEyMzAxMjQ4MTI4RTUzMDQyMjAwMkIKKzoyMDQzNDAwMDA0NDAwNDQwMDQ0MDA0NDQ0NDQ2MjQ0QzI0NDgxNDUwMUM1MDE0NjAwNDQwMDQ0MDA0NDRGRkZFMDAwMDAwMDBEMgorOjIwNDM2MDAwMDA0MDAwNDBGODQwODg0MDg4NDA4ODQwOEZGRTg4NDA4ODQwRjg0MDg4NDA4MDQwMDA0MDAwNDAwMDQwMDA0MDUwCis6MjA0MzgwMDAwMjAwMDIwMDNGRjAyMjEwMjIxMDNGRjAyMjEwMjIxMDNGRjAwMTAwMDExMDAwQjAwMUM0MEUyNEYwMTQwMDBDRkIKKzoyMDQzQTAwMDAwNDA3ODIwNEZGRTQ4QTA3OEEwNDkzRTQ5MjQ0Qjc0N0RBQzQ5MjQ0OTI0NDkxODQ5MjQ0OTI0QTk0MjkxNDIyOQorOjIwNDNDMDAwMDIwMDAxMDBGRkZFMDg4MDBDODAwOUZDMTEwODMyODg1MjUwOTUxMDEwQTAxMDQwMTBBMDExMTAxMjBFMTQwNEExCis6MjA0M0UwMDA0MDQwMjAyMDI3RkUwOTIwODkyMDUyN0M1MjQ0MTZBODJCOTgyMjUwRTIyMDIyMzAyMjUwMjI4ODIzMEUyMjA0RTgKKzoyMDQ0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQ3RkZFMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxQgorOjIwNDQyMDAwMDEwMDdGRkMwMTAwMUZGODAwMDA3RkZFODAwNDNGRjgwMDAwMUZGMDEwMTAxRkYwMDgyMDA0NDA3RkZFMDAwMDg5Cis6MjA0NDQwMDAwMDAwN0ZGQzQ4MDA0ODAwNEZGODUwODA2MDg4NUZGQzQxNDA0MTIwNDIxMDQ0MTg0ODEwNDAwMDdGRkUwMDAwNTIKKzoyMDQ0NjAwMDIwMDAyMUY4MjEwOEY5RjgyMDAwMjNGRTI5MDgzMUY4NjEwOEExRjgyMTA4MjEwRTI3RjgyMDA4QTAwODQwMDhCRAorOjIwNDQ4MDAwMjA0MDIwMjAzQzIwMjNGRTQwNjA3ODYwQTBBNDIwQThGOTkwMjI5MDIwOTAyMDg4MjhBODMwQzYyMDg0MDAwMDdFCis6MjA0NEEwMDAxMTAwMThDMDEwODAzRkZFMzA4MDUwQzQ1MTRFOTMzMDEzMjAxNTMwMTkxMDExMjgxMTRFMTM4NDExMDAwMDAwM0YKKzoyMDQ0QzAwMDEwMDgxQkZDMTA4ODEwODgyN0ZFMjA4ODYwODhBN0Y4MjA4ODIwODAyMTAwMjEwMDIyMDAyMjAwMjQwMDAwMDAzNworOjIwNDRFMDAwMDIwMDAxMDBGRkZFMDEwMDAxMDAwMzA4MDQ4QzA4OTAxODYwMjg0MDQ4MjA4ODIwMDgxMDBBMEUxQzA0MDgwMDNGCis6MjA0NTAwMDAwMDAwRkVGRTg4MjA4ODQwQkVGQ0EyODRBMkE0QTJBNEJFQTQ4OEE0ODhBNDg4NTBGRTQ4MDA4NjAzMDIwMDAwNjAKKzoyMDQ1MjAwMDAxMDA3RkZFMDEwMDNGRjgwMTA4MDEwODNGRjgyMTAwMjEwMDNGRkMwMTA0MDI5NDA0NDgwODMwMTAxQzYwMDg0QworOjIwNDU0MDAwNDA0MDIzRjgyMjQ4MDNGODAwNDAwRkZFRTAwMDIzRjgyMjQ4MjI0ODIyNDgyMEEwMjMxODUwMDg4RkZFMDAwMEY1Cis6MjA0NTYwMDAwQzQwNzA3QzEwODQxNTA4RkU1MDMwMjAzMEQwNUIyMDU0N0U5MDg0MTE4ODEyNTAxMDIwMTA0MDExODAxNjAwMzEKKzoyMDQ1ODAwMDA4ODAwODQwMTA2ODEyNDgyMjA4NjIxMEExMTAyMTEwMjBBMDIwQTAyMDQwMjBBMDIxMTAyMjBFMkMwNDIwMDBBQQorOjIwNDVBMDAwMDAyMDNDMjAyNUZFMjQyMDNERkUyNDIyMjVGRTI1MjAzRDIwMjVGRTI0MjIyNDU2MjQ1MDQ0ODg1NTBFOEEwNEJFCis6MjA0NUMwMDAyMDAwMkRGQzMwMDgyMjUwMjIyMDFERkU0MDIyN0UyNDQ4QTA4OEJDRkVBMDE4QTAxNTYwMjEzMDQyMEU4NDA0NjcKKzoyMDQ1RTAwMDIwMDAxMDNDMTNDMDAyMDA4QTAwNEEwMDUzRkUxMjIwMjIyMDIyMjBDMjIwNDQyMDQ0MjA0ODIwNTAyMDQwMjBCRAorOjIwNDYwMDAwMDEwMDAwODAzRkZFMjAwNDQwMDgwRkUwMDgyMDA4MjAwRkUwMDgyMDA4MjAwRkUwMDgyMDA4MjA3RkZFMDAwMDM2Cis6MjA0NjIwMDAyMDQwMzA0MDI3RkMyMDQwRkJGODI4NDgyQkY4NEE0MDRCRkMzMjQ0MTBBNDI4QUM0RDEwODkwODAyMDYwNDA0RDQKKzoyMDQ2NDAwMDA4MjAwRkYwMTAyMDFGRTAwMDI0RkZGRTQ5MjAyQTc4N0YyNDFDRkUyQTU0NDg5MkZGRkUwODEwMTAxMDYwMTAxRQorOjIwNDY2MDAwMTA0MDEwNDAxM0ZFMTA0MEZDQTAxMTEwM0JGRTM0MDg1MUU4NTEyODkxMjgxMUU4MTAwODEwMDgxMDI4MTAxMDFCCis6MjA0NjgwMDAxMDgwMTA0ODExNjg3RDQ4NTUwODU1MDg1NTEwNTQ5MDdDOTA1MEEwMTg0MDE0NDAxRUEwRTUxODAyMEUwNDA0NzYKKzoyMDQ2QTAwMDEwNDAxODQwMTdGQzIwQTAyMTEwNjIwOEFGRkUyMDA4MjdDODI0NDgyNDQ4MjdDODI0NDgyMDA4MjAyODIwMTA0RAorOjIwNDZDMDAwMDAwMDNGRjAwMDEwMDAxMDAwMTAyMDEwM0ZGMDIwMDAyMDAwMjAwMDIwMDQyMDA0MjAwNjNGRkMwMDAwMDAwMDEzCis6MjA0NkUwMDAwMDAwRkZGMDAwNjAwMEMwMDE4MDAzMDAwNjAwMEMwMDE4MDAzMDAwMjAwMDYwMDQ0MDA0NjAwNjNGRkMwMDAwNjQKKzoyMDQ3MDAwMDAxMDAwMjIwMDQxMDBGRjgwMDA4MDgwMDBGRjgxMTAwMjEwMDdGRkUwMjgwMDI0MDA0MjAwODE4MzAwRUMwMDQ4QgorOjIwNDcyMDAwMDAxMDI0MTAyMjEwMjMxMDIyMTAyMDEwMjAxMDIxMTAyMjEwMkMzMDM4MzA3MDY4MjBDNDAxMDcwNjAyMDAwMDRCCis6MjA0NzQwMDAwNDQwMDQ0MEZGRkUwNDQwMDQ0MDFGRjAwMDYwMDA4MDAxMDAwNjAwMDgwMDEwMDQyMDA0MjAwNjFGRkMwMDAwRDUKKzoyMDQ3NjAwMDEwNDAxMEMwMTMzRUZBMjIxMjIyMTIyMjEyMjIxQTIyMzIyMkQyQTIxMzJBMTIyNDEwMjAxMDIwNTAyMDIwMjA4OQorOjIwNDc4MDAwMDAwMDBGRjAwODEwMEZGMDA4MTAwRkYwMDQwMDBGRkMxMTI0NjIyNDA0NDQxODg0NjMwNDBDMDQ3MDE0MDAwODNCCis6MjA0N0EwMDAwMDAwMUZGMDEwMTAxMDEwMUZGMDAwMDAzRkY4MjEwODIxMDgzRkY4MjAwMDIwMDIyMDAyMjAwMjFGRkUwMDAwMzgKKzoyMDQ3QzAwMDEwODAxMEMwMTA4MDEwRkU1NTAwNTYwMDU1RkM1NDA4NTQxMDU0MjA1NDQwNUM4NEYxMDQ0MTA2MDBGQzAwMDBGRgorOjIwNDdFMDAwMDgwMDBERkMwODA0MTAwODEwMTAzMDIwNTA0MDkwODAxMTAwMTEwMDEyMDAxMjA0MTQwNDE0MDQxM0ZDMTAwMERCCis6MjA0ODAwMDAxMDAwMTlGMDIxMTA0OTEwOEQxMDEyMEUzNDAwNTNGODkxMTAxMTEwMTBBMDEwQTAxMDQwMTBCMDExMUMxNjA4M0MKKzoyMDQ4MjAwMDAwODA3ODQwNEJGQzQ4OTA3RkZFNDgwMDQ5Rjg0OTA4NzlGODQ5MDg0OUY4NDg0NDRBQTI0QThBQUM4QTkwNzA0NQorOjIwNDg0MDAwMDIwMDQzRjAyNDIwMjQ0MDBGRjgxNDg4MDQ4OEU3RjgyMTQwMjE2MDIyNTQyMjQ0MjQzQzUwMDA4RkZFMDAwMDcyCis6MjA0ODYwMDAyMDIwMjQyMDM5RkMyNDI0M0ZGRTAwMjQyMUZDM0UyMDQ5RkMwODIwN0UyMDBCRkUxNDIwMjIyMDQyMjA4MDIwQ0YKKzoyMDQ4ODAwMDAxMDAwMDgwMUZGQzEwMDAxM0UwOTIyMDUyMjA1NDFDMTgwMDMzRTBEMjIwMTIyMDIxNDAyMDgwNDM2MDhDMUM0QQorOjIwNDhBMDAwMDIwMDAxODAwMDgwN0ZGRTAyNDAwMjQwMTI1MDFBNDgxMjQ0MjQ0NjQ0NDQwODQwMDg0MDExNDAyMDgwMDAwMDY3Cis6MjA0OEMwMDAwMTAwN0ZGRTAxMDgwMjkwMEM2MDc1MUMwNjA4M0ZGQzIyNDQyNDM0MkZGNDM0MjQyN0U0MjQyNDIwMTQyMDA4OTEKKzoyMDQ4RTAwMDAxMDAzRkZDMDgyMDA0NDBGRkZFMDAwMDFGRjAxMjEwMTExMDFGRjAwMDAwMjkwODI4ODQ2ODE0MDdGMDAwMDA2MgorOjIwNDkwMDAwMTAwMDA4Nzg3RjQ4MjI0ODE0NDhGRTg2MTAwMDMyN0NEQzg4MkU0OENENTAzNDIwQzQ1MDA0ODgyQjBFMTAwNDAwCis6MjA0OTIwMDAxMDAwMTAwMDEzRkMxMDA0MTQwODUyMTA1MjIwNTA0MDkwODAxMTAwMTEwMDEyMDIxMjAyMTIwMjExRkMxMDAwMjkKKzoyMDQ5NDAwMDAwMDAwNDIwMjIzMDIxMjAxMTIwMTA0MDA4NDAwNDgwMDI4MDAxMDAwMjgwMDQ0MDA4MzAzMDBFQzAwNDAwMDBEMAorOjIwNDk2MDAwMDAyMDEwMzAwODQwMDQ4MDdGRkMwNDIwMDgxMDMwMENDMDA0MUZGODEyNDgxMjQ4MTI0ODEyNDhGRkZFMDAwMEQ4Cis6MjA0OTgwMDAyMDAwMTIwODExMTAwMTIwODdGRTUwOTAxMTA4MTYwNDIwMDAyM0ZDRTJBNDIyQTQyMkE0MjJBNDI3RkUyMDAwQTcKKzoyMDQ5QTAwMDQxMDAyMTAwMzExQzIxRTAwMTA0RjEwNjEwRkMxMDAwMTFGQzExMDQxMUZDMTEwNDE1MDQxOUZDMTEwNDAwMDBBOAorOjIwNDlDMDAwNDEwMDIwODAzMjQ4MjI0ODAyMDhFMjA4MjExMDIxMTAyMEEwMjBBMDIwNDAyNEEwMjkxMDMyMEUyNDA0MDgwMDZGCis6MjA0OUUwMDAwMDgwNDA0MDM3RkMyNDA4MDAwMDAzRjBFMjEwMjIxMDIzRjAyMjEwMjNGMDIyMTAyQTEwMzIxMDJGRkUwMDAwMEUKKzoyMDRBMDAwMDAwMDA0M0Y4MjEwODMwOTAyMDYwMDA5MEUzNEUyQzQ0MjNGODIwNDAyMDQwMkZGRTI4NDAzMDQwMjA0MDAwNDA0MQorOjIwNEEyMDAwMDAwMDFGRjAxMDEwMTAxMDFGRjAxMDA4MTAwQzBGRjgwNDIwMDQyMDdGRkUwNDIwMDgyMDA4MjAxMDIwMjAyMDM0Cis6MjA0QTQwMDA3RUY4MTI0ODBBMjgxMjE4MjIyODFGRjAxMTEwMUZGMDExMTAxRkYwMDgyMDdGRkMwODIwRkZGRTE4MzA2MDBDRjUKKzoyMDRBNjAwMDAwMDA3RUY4MTI0ODEyMjgwNjE4MUEyODYzNDgwMDgwM0ZGQzAwMjAwODMwMDQ2MDA0NDAwMDgwRkZGRTAwMDBFOQorOjIwNEE4MDAwMTAwMDExRkMyMDg4MjA1MDQ4NjBGMDkwMTMwRTIwMjQ0MUZDRjgyMDAwMjAwM0ZFMTgyMEUwMjAwMDIwMDAyMDY2Cis6MjA0QUEwMDAwODIwMDgyMEZGRkUwODIwM0ZGODIxMDgyMTA4MkZFODIxMDgyMTA4MjI4ODI0NjgyODQ4MjAwODNGRjgyMDA4NjIKKzoyMDRBQzAwMDA0NDAwNDQwRkZGRTA0NDAwNDQwM0NGODI0ODgyOEY4Mjg4ODI0ODgzNEY4Mjg4ODIxMDgyMTA4MjIyODI0MTBDMQorOjIwNEFFMDAwMDAwMDdGRkM0MTA0NDEwNDQxMDQ1RkY0NDEwNDQzMDQ0Mjg0NDY0NDQ0MjQ0ODM0NTAyNDQwMDQ3RkZDNDAwNEUyCis6MjA0QjAwMDAwODAwMDg3ODNFNDgyMjQ4M0U4ODIyOEUzRjAwMjBGQzIwODgzRTQ4MjIzMDIyMTA0MjI4NEE0RTg1ODQwMDAwOEYKKzoyMDRCMjAwMDAxMDAwMDgwM0ZGQzA4MjAwNDIwMDQ0MEZGRkUwMDAwMUZGMDEwMTAxMDEwMUZGMDEwMTAxMDEwMUZGMDEwMTA1RgorOjIwNEI0MDAwMDAwMDdERkM0NTA0NDkwNDQ5RkM1MTA0NDkwNDQ1MDQ0NUZDNTUwNDQ5MDQ0MTA0NDIwNDQyMDQ0NDE0NDgwOEI2Cis6MjA0QjYwMDAyMDAwMjFGRTIxMjIyMTIyRkQyMjI1RkUyNTIyMjUyMjQ5MjI2OTUyMTE0QTE5OEEyNTAyNDVGRTgxMDIwMTAyOEMKKzoyMDRCODAwMDAwNDBGODQwODhBMDg4OTA4OTBDOEE0NjhDMjI4ODIwRkJGQzg4MDg4ODA4MDAxMDAwMTAwMDIwMDAyMDAwNDBFQgorOjIwNEJBMDAwMTAwMDExRkMyMTA0M0QwNDQxRkM3RDA0OTEwNDExRkNGRDQwMTEyNDExMjgxMTEwMTU0ODE5OEUxMTA0MDAwMDJECis6MjA0QkMwMDAyMDAwMTA3QzE3ODAwMDg0ODQ0NDUyNDg1MjEwMTdGQzIwNDAyMDQwQ0ZGRTQwNDA0MDQwNDA0MDQ3RkM0MDAwQTcKKzoyMDRCRTAwMDAyMDAwMTAwN0ZGRTQwMDQ5RkYwMDEwMDFGRjAxMTEwMTExMDFGRjAxMTEwMTExMDFGRjAwQzIwMzAxOEMwMDg3NAorOjIwNEMwMDAwMjA4MDIwODAyMDgwM0RGRTQ1MDQ0QTQ4OTQ0MDEwNDAxMDQwMTBBMDEwQTAxMTEwMTUwODFBMEUxNDA0MDAwMDRDCis6MjA0QzIwMDAwMDAwM0ZGODAyMDgwMjA4N0ZGRTAyMDgwMjA4M0ZGODAyMDgwMjAwMDQwMDA0MDAwODAwMTAwMDIwMDA0MDAwRDUKKzoyMDRDNDAwMDAwMDQ3RjA0MDEwNDAxMDQzRjA0MjAwNDIwMDQyMTA0N0Y4NDIxMDQwMTA0MDEwNDAxMDQwMTA0MDUwNDAyMDRDOAorOjIwNEM2MDAwMDA4MDc4RjA0OTEwNTIyMDY3Rjg1MDA4NTNGODQ4MDg0QkY4NjgwMDUxNDA0NTI0NDUwQTQ5MEE0MEY4NDAwMDcwCis6MjA0QzgwMDAwMDAwMEVGQzcwODQ0MDg0NDA4NDQwODQ3RTg0NDA4NDQwODQ0NDg0NTg5NEUwODg0MDgwMDA4MDAwODAwMDgwRTQKKzoyMDRDQTAwMDA0MjAwNDIwRkZGRTA0MjAwMTAwMUZGMDExMTAxMTEwMTExMEZGRkUwMTAwMDI4MDA0NDAwODMwMTAxQzIwMDhDOAorOjIwNENDMDAwMjAwMDI3RkUyNTYyMjU2QUY1NkEyNTZBNzE4ODZBNTRBNEEyQTA4MDJGRkUyMTEwMjMyMDIwRTAyMzE4MkMwODVFCis6MjA0Q0UwMDAzRUY4MjI4ODJBQTgyQUE4MkFBODJBQjAxNDQ4MzI4QzQzMDBGRkZFMDgyMDFFNDAwMUMwMDMzMDBDMUM3MDA4MTAKKzoyMDREMDAwMDAxMDA3RkZFNDkyMDRCRkM1RTIwNkJGQzRBMjA0QkZDNEIwMDQ3Rjg0NDg4NDQ1ODQ3RkU0MDAyOUZDQTgwMDQ2OQorOjIwNEQyMDAwMDEwMDAwODAzRkZDMjAwMDIyMDAyMTA4MzA4QzI4QzgyNDkwMjQ5MDI2MjA0NDIwNDA0MDVGRkU4MDAwMDAwMDMxCis6MjA0RDQwMDAwMDAwMjdCRTM0QTIyNEFBNDZBQTkyMDhGNTE0MjgyMjQwODBGN0ZFMDExMDAyMTAxOUEwRTA0MDAxQjAwNjBDNzkKKzoyMDRENjAwMDA0NDAwNDQwN0ZGRTA0NDAwNDQwN0ZGRTQwMDQ5RkY4MDEwMDAxMDAxRkY4MDE0MDAxMzAwMTIwN0ZGRTAwMDAyNQorOjIwNEQ4MDAwMDQ0MDA0NDBGRkZFMDQ0MDA0NDA3RkZFNDEwNDgxMDAxRkY4MTEwODExMDgxRkY4MDExMDAxMDgwMUZDM0YwODA1Cis6MjA0REEwMDAwNDQwMDQ0MDdGRkUwNDQwN0ZGRTQwMDQ4RkU4MDgyMDA4MjAwRkUwMDAwMDFGRjAxMDEwMTAxMDFGRjAxMDEwQjUKKzoyMDREQzAwMDA0MjAwNDIwN0ZGRTA0MjAwNDIwN0ZGRTQwMDQ4MTA4MDkyMDA5MzAxMTQwMDI4MDA0NDAwODIwMzAxQ0MwMDhDNworOjIwNERFMDAwMTAwMDExRkMxMTA0N0QwNDU1RkM1NDIwNTVGQzU1MjQ3REZDMTEyNDE5MjQxNUZDMUUyMkU0MjIwMDFFMDAwMDExCis6MjA0RTAwMDA0MDAwMjE4MDM2N0MyNDQ0MDQ0NDA0NDRFNDQ0MjQ0NDI1NDQyNjU0MjQ0ODIwNDAyMDQwNTAwMDhGRkUwMDAwOEIKKzoyMDRFMjAwMDAxMDBGRkZFMTAwMDFGRjAwMDAwM0ZGODIwMDgzRkY4MDAwMDc3REM1NTU0NzU1NDU1NUM3MTE0NTI5NEI0NjZDNAorOjIwNEU0MDAwMDAwMDNGRjAwODEwMEJBMDA4QjgxMjg4MTEwODIyODg0NDUwODAyMDNGRjgyNDQ4MjQ0ODI0NDhGRkZFMDAwMDk3Cis6MjA0RTYwMDA3RjA0NDEwNjdGMEM0MTA4N0YxMDA4MjRGRjg2MDAwQzdGMDg0MTEwN0YyNDA4MDYyQTA4NDk5MEE5MjAxMDQwOUIKKzoyMDRFODAwMDIwMDAyNUZFMzgyMDIyNDAxRUZDMDA4NDNFQTQwOEE0N0VBNDA4QTQxQ0E0MkFBNENBMzAwODRDMDk4NDAwMDBCMgorOjIwNEVBMDAwMDAwMEZERkUxMDIwMTFGQzIxMjQyMTI0N0RGQzY1MjRBNTI0MjVGQzI2NDAzRDQwMjRDMDIxMzAwNjBFMTgwNEZDCis6MjA0RUMwMDAwMDQwMDA0MDc4NDA0QkY4NEE0ODRBNDg3QTQ4NEE0ODRGRkU0ODQwNDg0MDc4QTAwMDkwMDEwODA2MEUxODA0QTEKKzoyMDRFRTAwMDAyMTAwMzE4RjIxMDkyMjA5NEJFOTdBMjk5NDI5MjAyOTQyMkZGOTI5NDFBMDAxMjAwMDIwMzgyMEMwQTAwMDQyRgorOjIwNEYwMDAwMTAwMDEzRkUxMjIyRkUyMjEyMjIxM0ZFMTYyMjFBMjIzM0ZFRDIyMjEyMjIxMjIyMTQyMjE0MjI1ODJBMjAwNEM0Cis6MjA0RjIwMDAwODAwMEJGQzEyNDQxMjQ0MzI0NDMzRkM1MjQ0OTI0NDEzRkMxMjQ0MTI0NDE0NDQxNDQ0MTQ1NDE4NDgwMDAwNzIKKzoyMDRGNDAwMDAwNDA3ODIwNEZGRTRBNTA0QTQ4N0NGRTRGNDg0QTdFN0FDODRGQzg0OTdFNDk0ODRBNDg2QTdFOTQ0MDAwMDAyOAorOjIwNEY2MDAwMDEwMDAwODAxRkZFMTAwMDk3RkM1NDQ0NTQ0NDE3RkMzNDQ0NTQ0NDk3RkMyNDQ0Mjg0NDQ4NDQ5MDU0MjA0ODVFCis6MjA0RjgwMDAwMDgwM0ZGRTIwODAyRkY4MjA4ODNGRkUyMDg4MkZGODIwODAyRkY4Mjg4ODJGRjgyODg4NEZGODQ4ODg4ODk4NTQKKzoyMDRGQTAwMDAyMDAwMTAwN0ZGRTEwQTAxMDkwMjVGRTc5MTAxMzEwMTFGQzI1MTA3RDEwMDlGQzA5MTAzMTEwQzFGRTAxMDA2NAorOjIwNEZDMDAwMDAwMDdERkM0NDA0NDQ0ODQ0MzA3REZDMTEyNDExMjQ1MUZDNUQyNDUxMjQ1MUZDNTEyNDVEMjRFMTI0MDEyQzc1Cis6MjA0RkUwMDAxMDAwMTFGQzEwMDgxMDUwN0MyMDU1RkM1NTI0NTVGQzdEMjQ1NTI0MTFGQzE1MjQxRjI0RTUyNDAxMTQwMTA4OUIKKzoyMDUwMDAwMDAxODAwMDQwRjAwMDkzQzA5MDQ4OTA0Qzk3NDg5MTUwOTE2MEYyNTA5MjQ4MDQ0RTA0NDQwODQwMDE0MDAwODA2OAorOjIwNTAyMDAwMjA4MDEwNDAxMDAwMDdDMDgwNDQ1MDQ4NTc1MDExNjAxMjYwMjI1MEU0NDgyNDRFMjg0NDMwNDAyMTQwMjA4MEQ2Cis6MjA1MDQwMDAyM0ZDMTAwODEwOTAwMDYwOEJGQzRBNDQ1MjQ0MTNGQzEyNDQyMjQ0RTNGQzIyNDQyMjQ0MjI0NDIyNTQyMjQ4QjIKKzoyMDUwNjAwMDAyMDAwMTgwMDA4MDFGMDAwMTA4MDExODdEQTAwNTQwMDkyMDA5MjAxMTEwMTEwODIxMDZDMTAwMDUwMDAyMDAwRgorOjIwNTA4MDAwMUZGMDAyMjAwMTQwMUZGODExMDgxRkY4MTEwODFGRjgxMTA4MTEyODAyMTAwOTAwMjkwODI4MTQ2N0Y0MDAwMEYyCis6MjA1MEEwMDAzRkYwMDI2MDAxODAzRkY4MjEwODNGRjgyMTA4M0ZGODIxMDgwMjAwN0ZGODAyMDgwNDA4MDgwODEwMjgyMDEwQjcKKzoyMDUwQzAwMDAwMDAxRkZDMTA4NDEwODQxMDg0MUZGQzEwODQxMDg0MTA4NDFGRkMxMDg0MTA4NDIwODQyMDg0NDA5NDgwODhCQgorOjIwNTBFMDAwMDEwMDAxMDAwMTAwNDkyNDREMzQ1MTQ0NjU1NDdERkM0OTI0NTU1NDdGRkM0NTE0NDEwNDdGRkM0MDA0MDAwMDBBCis6MjA1MTAwMDAxMDgwMThBMDEwOTgyMDkwMzdGQzYxNDBBMTQwMjE0MDIxNDAyMTQwMjE0MDIyNDQyMjQ0MjQ0NjI4M0MyMDAwRkMKKzoyMDUxMjAwMDEwODAxMDgwMjFGRTI5MDg2QTkwQUM1MDI4MjAyODUwMjE4RTIwMDQwMTAwMDg4MDQ4OTQ0ODEyQzdGMjAwMDBGRQorOjIwNTE0MDAwMjA4MDIwOTAyMDhDMzA4OEE4ODBBN0ZFQTBBMDIwQTAyMTIwMjEyMDIxMjAyMjIwMjIyMjI0MjIyNDFFMjgwMEQ1Cis6MjA1MTYwMDAwMjAwMDI0MDAyMzAwMjEwN0ZGRTAyNDAwMjQwMDI0MDAyNDAwNDQwMDQ0MDA4NDIwODQyMTA0MjIwM0U0MDAwMTYKKzoyMDUxODAwMDAxMDAwMTAwMDEwMDAxMDAzRkY4MjEwODIxMDgyMTA4M0ZGODIxMDgyMTA4MjEwODIxMDgzRkY4MjAwODAwMDAxRgorOjIwNTFBMDAwMDgwMDA4N0UwODQ0N0Y0ODQ5NDg0OTUwNDk0ODdGNDQ0OTQyNDk0MjQ5NDI3RjVBNDE0NDAwNDAwMDQwMDA0MDExCis6MjA1MUMwMDAxMDIwMTAyMDIwMjAzRTIwNDFGQzdEMjQ5MTI0MTEyNEZERkMxMTI0MTEyNDExMjQxNTI0MTlGQzExMDQwMDAwMEUKKzoyMDUxRTAwMDAwQTA0NDkwMjg5ODEwODgzN0ZFNDhBMDA4QTAxOEEwMjhBMDQ5MjA4OTIwMDkyMjBBMjIxMjIyNTQxRTI4MDA2NworOjIwNTIwMDAwNDA0MDIwNDAyMDQwMDA0MDk3RkM1NDQ0NTQ0NDE0NDQyNDQ0MjdGQ0U0NDQyNDQ0MjQ0NDI0NDQyN0ZDMjQwNEJECis6MjA1MjIwMDA0NDIwMjIyMDIyMjAwRkJFODQ0MDU0QkM1NzA4MjUxMDI1MTAyNTdFQzUxMDQ5MTA0OTEwNDkxMDU1NTA0MjIwOTIKKzoyMDUyNDAwMDAwMDBGRkZFMDI4MDAyODAzRkY4MjI4ODI0ODgyNDg4Mjg3ODMwMDgzRkY4MjAwODIwMDgyMDA4M0ZGODIwMDgyRQorOjIwNTI2MDAwMDEwMDAxMDA3RkZFMDIwMDA0MDAwRkYwMTgxMDI4MTA0RkYwODgxMDA4MTAwRkYwMDgxMDA4OTAwODcwMDgyMDBDCis6MjA1MjgwMDAwMjAwMDIwMDAyMDBGRkZFMDIwMDAyMDAwN0YwMDQxMDA2MjAwOTIwMDhDMDEwQzAyMTIwNDIxODhDMEUzMDA0QUMKKzoyMDUyQTAwMDAyMDAwMjAwMDIwMEZGRkUwNDAwMDQwMDA4MDAxODAwMkZGODQ4MDg4ODA4MDgwODA4MDgwRkY4MDgwODAwMDA4NQorOjIwNTJDMDAwMTA4MDE4ODAxMDgwMkZGRTIwODA2MTAwQTEwMDIzRkMyMjA0MjYwNDJBMDQzMjA0MjIwNDIzRkMyMjA0MDAwMDA5Cis6MjA1MkUwMDAwNjIwNzgyMDEwMjA1NDIwMzlGRUZEMjIxMTIyMzkyMjM1RkU1NTIyNTEyMjkxMjIxMTIyMTFGRTExMDIwMDAwNDMKKzoyMDUzMDAwMDQwMzgyM0MwMzA0MDI3RkUwMEUwMDE1MEUyNDgyN0ZDMjA4ODIwOTAyMDlDMjkwNDMxMDQyMjA0MDQxNDA4MDg1QgorOjIwNTMyMDAwMDAwMDNGRjgxMDA4MDgxMDA4MTAwNDIwMDQyMDAyNDAwMjQwMDE4MDAxODAwMjQwMEMzMDMwMEVDMDA0MDAwMEEwCis6MjA1MzQwMDAxMDQwMTg0MDEwNDAyMDQwMjVGQzQ2NDRGQzQ0NDg0NDEwNDQxMDg0MjQ4NEZFODQ0NTA0MDEwNDAyMTQwNDA4RkMKKzoyMDUzNjAwMDQwMDAyN0ZDMzA0MDIwNDAwMDQwMEZGRUUwNDAyMDQwMjA0MDIwNDAyMDQwMjE0MDIwODA1ODAwODdGRTAwMDAyRgorOjIwNTM4MDAwNDQxMDIyMTAyMjEwMEY5ODg0Mjg1NDI0NTc0NjE1OTAyNTA4MjUwOEU1MDA0OTIwNDkxMDU1MTg2MjA4MDAwMDcwCis6MjA1M0EwMDAwMDAwM0ZGQzAxMDAwMTAwMDEwMDAxMDBGRkZFMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDkwMDA1MDAwMjAwOUIKKzoyMDUzQzAwMDAwMDAzRkY4MDEwMDAxMDBGRkZFMDEwMDAxMDAwNTAwMDIwMDNGRjAyNDkwMjQ5MDI0OTAyNDkwRkZGRTAwMDA5MgorOjIwNTNFMDAwMTA0MDEwNjAxMDkwRjkwODE2RjYzODAwMzdDMjUyNTI1M0QyOTI1MjEzRDIxMjUyMTI1MjEyNDIxMjRBMTJDNDJGCis6MjA1NDAwMDAwMjAwMDNGMDAyMDAzRkZFMjIwNDJGQzAyMjEwMjFFMDJGRjAyODEwMkZGMDIxMDAzRkY4NDE0MDQyMzA4QzBDQjcKKzoyMDU0MjAwMDFGRjgxMTA4MUZGODExMDgxRkY4MDEwMDNGRkMyMTQ0MkZFNDIwMjQyMDBDMDkwMDI4ODQyODEyNjdGMjAwMDA4OQorOjIwNTQ0MDAwMEEwMDMyMzgyN0M4M0EwODI1MzgyN0M4MjEwODNGRjgyMTA4MjEwOEZGRkUwMDAwMTAyMDE4MTAyMDE4NDAxMENDCis6MjA1NDYwMDAwMTAwMDEwMDAyODAwNDYwMDgxMDNGRkVDMTA0MDEwMDNGRkMwMTAwMTE0MDE5MzAxMTE4MjExMDQ1MDAwMjAwQjIKKzoyMDU0ODAwMDAxMDAwMjgwMDQ0MDA4MjAzRkY4QzAwRTNFMDQyMjQ4M0U0ODIyNDgyMjQ4M0U0ODIyMDgyQTI4MjQxMDAwMDBEQworOjIwNTRBMDAwNDA4MDIwODAyMTQwMDIzMDBERUUwMDAwRTc4ODI0QTgyN0E4MjRBODI3QTgyNDg4MjU5ODUwMDA4RkZFMDAwMDEzCis6MjA1NEMwMDAwODAwMEZFMDA4MjAxMDQwMUZGODMxMDg1MTA4MTEwODFGRjgxMTA4MTEwODFGRjgwMDAwMDAwMEZGRkUwMDAwM0UKKzoyMDU0RTAwMDIwNDAyMDQwMjBBMDMzMThBREY2QTAwMEE3ODQyNDk0Mjc5NDI0OTQyNzk0MjQ5NDI0ODQyNTk0MjQ4ODAwMDBDOAorOjIwNTUwMDAwNDA0MDIwNDAyMEEwMDMxODhERjY0MDAwNTc4NDE0QTQyN0E0MjRBNEM3QTQ0NEE0NDRBNDQ0ODQ0Njk0NDUwOEJECis6MjA1NTIwMDAyMTAwMTEwMDEzRjgwMjEwODQyMDRCRjg1MjQ4MTI0ODIzRjgyMjQ4RTI0ODIzRjgyMDAwMjAwMDJGRkUyMDAwRUEKKzoyMDU1NDAwMDc4MDA0QkY4NTI0ODUzRjg2MjQ4NTNGODQ4NDA0ODQwNEZGQzZDNDQ1NDU0NDdGQzQ0MDQ0NDA0NDQxNDQ0MDg4QworOjIwNTU2MDAwMUZGODAwMzAwNDYwMDI4MDAxMDQ3RkZFMDEwQzAxMDgwMTEwMDEwMDAxMDAwMTAwMDEwMDA5MDAwNTAwMDIwMDQxCis6MjA1NTgwMDAxMDAwMTlGQzExMDQxMTA0RkRGQzI0MDAyN0ZDMjgyMDQ4MjAyQkZFMTAyMDE4NTAyQzg4NDkwQzgyMDYwNDA0NzIKKzoyMDU1QTAwMDAwMDBGRkZFMDEwMDAxMDAzRkY4MzE4ODI5NDgyNTI4MzE4ODI5NDgyNTI4MjEwODIxMDgyMTA4MjEyODIwMTBEMworOjIwNTVDMDAwMDAwMDA4MDAwODA0MEZGRTA4MDAwODAwMEZGQzAwMDQwMDA0MDAyNDdGRjQwMDA0MDAwNDAwNDgwMDMwMDAwMDcwCis6MjA1NUUwMDAxMDgwMTA4MDEwODAxMEZFNTQ4MDU0ODA1NUZDNTQ4NDU0MDQ1NDA0NURGNEU0MDQ0MDA0MDAwNDAwMTQwMDA4Q0YKKzoyMDU2MDAwMDAwMDgzRkZDMDEwMDFGRjgxMTA4MTEwODFGRjgwMTAwN0ZGQzQxMjQ0MTE0NUZGNDQ4MTQ0MDA0NDAxNDQwMDgyMQorOjIwNTYyMDAwMDEwMDAwODAzRkZFMjAwNDQwMDgxRkYwMDA4MDAwODA3RkZDMDA4MDAwODAwMDgwMDA4MDAwODAwMjgwMDEwMEIzCis6MjA1NjQwMDA0MDAwMjNGQzMwNDAyMDQwMDNGOEUwODgyMDg4MjdGRTIwMDAyMUY4MjEwODIxMDgyOTA4MzFGODIxMDgwMDAwREQKKzoyMDU2NjAwMDAwMDA3RUZDMDIwNDAyMDQyMjQ0MTIyNDEyMjQwNjA0MEExNDEyMjQ2MkM0MDIwNDAyMDQwMjA0MEExNDA0MDgxMgorOjIwNTY4MDAwMDAwMDdGRkMwMTAwMDEwMDAxMDAwMTAwM0ZGODAxMDAwMTQwMDEyMDAxMzAwMTEwMDEwMEZGRkUwMDAwMDAwMEIxCis6MjA1NkEwMDAyMDIwMjAyODIwMjQyN0ZFRjgyMDIwMjQyN0E2MjRBNDI0QTgyN0E4MjQ5MDM4MzJDMzRBMEM4QTAzMDQwMDAwQTUKKzoyMDU2QzAwMDA0NDAwNDQwN0ZGRTA0NDAwMDAwM0ZGODAxMDAwMTAwRkZGRTAxMDAwMTAwMDEwMDAxMDAwMTAwMDUwMDAyMDAzRgorOjIwNTZFMDAwMDgwMDA4N0VGRkM0MTA0ODEwNDgzRjUwNjE0OEJGNDQyMTQyMjE0MjNGNDIyMTRBMjE0NDIxNDAyNTQwMjI0MDJGCis6MjA1NzAwMDAwMDAwN0ZGRTQ0MjA0NDIwNDQyMDQ0MjA0N0ZFNDQyMDQ0MjA3QzIwNDQyMDAwMjAwMDIwMDAyMDAwQTAwMDQwMkYKKzoyMDU3MjAwMDAwMDA0M0Y4MjI0ODIzRjgwMjQ4MDNGOEUwNDAyN0ZDMjQ0NDI0NTQyNUY0MjQwNDI0MTQ1MDA4OEZGRTAwMDBFMworOjIwNTc0MDAwMDA0MDAwNDA3OEEwNDkxODRFRjY0ODAwNEJDNDRBNTQ0QkQ0N0E1NDRCRDQwMjU0MDI0NDAyNTQwMkM4MDAwMDRGCis6MjA1NzYwMDAyMDkwMjBDODIwOEMyMTQ0QUE0MEFDQTBBODkwQTkwRUFBMDRBREY4QjkwOEU5MDgwOTA4MDFGODAxMDgwMDAwNDMKKzoyMDU3ODAwMDAyMDAyMjAwMzNERTY1MTI5NTEyMTkxMjJGRDI2MTEyQTUxMjI1RDIyNTEyMjUxQTI1RDQyRjEwMjAxMDIwMTA1QgorOjIwNTdBMDAwMDEwMDAyODAwQzYwMzdEQ0MwMDgzRTEwMkE5MDM2OTAyQTkwMjI1MDI2MjAwMDAwMjkwODI4QTQ2N0U0MDAwMDk3Cis6MjA1N0MwMDAxMDIwMTQyMDIyNDAyMjdFNDg4NDA5MjgxNDIwMjIyMDdGMjBBMjIwMjI1MDIyNTAzRTg4MjEwRTA2MDQwMDAwQUMKKzoyMDU3RTAwMDA4MjA4QTIwNTEyODIwMjQ1MDIwOUVGRTEyMjAxMjIwMzI1MDUyNTA5MjQ4MTM4ODEyODQ1MTA2MjIwMjAwMDAwMAorOjIwNTgwMDAwMDIwMDAxMDBGRkZFMDQyMDA4MTAzRkY4MTAxMDFGRjAxMDEwMUZGMDEwMTAxRkYwMTAxMDEwMTAxMDUwMTAyMEI4Cis6MjA1ODIwMDAyMjA4MTExMDAwMjBGRkZFMEEyMDExMTAzRkZFNDAwNDhGRTAwMDAwMEZFMDAwMDAxRkYwMTAxMDFGRjAxMDEwNzgKKzoyMDU4NDAwMDIwMjAxMTEwMTEwODgyMDQ0NDgwNTBDMDExMjAxMjE4MjQwNjNCRjhFMjA4MjIwODIyMDgyMjA4MjNGODIyMDgwRgorOjIwNTg2MDAwMDIwMDAxMDA3RkZFNDAwNDlGRjgxMTEwMUZGMDExMTAxRkYwMDEwMDNGRjgyMTQ4MjEyODIxRjgyRTI4MjAxOERDCis6MjA1ODgwMDAyMTEwMTE4ODAxMENGQTQ0MEM0MDA4QTAxMDkwMzUwODVBMDY5OUY4MTUwODExMDgxMTA4MTFGODExMDgxMDAwQjAKKzoyMDU4QTAwMDAwMDA3REZFMDQyMDI4NDAxMEZDRkU4NDE0QTQxMEE0MTBBNDEwQTQxMEE0MTA1MDEwNDg1MDg2MjMwMjAwMDAxOAorOjIwNThDMDAwMDA4MEZDRjgwOTEwNTNGQzI1MjRGREZDMjg0ODIwOEMyMzUwMkNBMDIzMzAyQzY4MjBBNkEzMjQ0Q0EwMDA0MEFGCis6MjA1OEUwMDAwMDAwRjgwMDBCRkM0OTA0NDkwODQ4ODg0ODg4N0M5MDA0NTAwNDYwMzQyMEM0NTAwNDg4MjkwRTE2MDQwMDAwNjIKKzoyMDU5MDAwMDEwMDAxRUY4MjI4ODM0QkE0ODgyMTQ3RTZGRjAwQTEwMDkzMDA4MDAwRkZDMDAwNDdGRjQwMDA0MDAxNDAwMDgxMQorOjIwNTkyMDAwMjQwNDE0NDQxNDQ0ODY1NDQ1NTQ1NEU0MTdGQzI0NDQyNEU0QzU1NDQ1NTQ0NjQ0NDg0NDQ4NDQ1MDA0MDAwMEI5Cis6MjA1OTQwMDAwMDAwM0ZGRTI0MDQ0N0U4MDgyMDEwNDAxRkY4MTEwODFGRjgxMTQ4MDI1MDAyNEEwNDRBMTgzRTYwMDAwMDAwRjkKKzoyMDU5NjAwMDAwMDAxRkY4MDAwMDAwMDAwMDAwN0ZGRTA0NDAwNDQwMDQ0MDA0NDAwODQwMDg0MDEwNDIyMDQyNDAzRTAwMDBDMQorOjIwNTk4MDAwMjAwMDI3RkMyMDAwMjAwMDIzRjhGQTA4MjIwODIzRjgyMjA4MjIwODNBMDhFM0Y4NDIwODAwMDAwRkZFMDAwMDVBCis6MjA1OUEwMDAwMTAwMDEwMDNGRjgwMTAwRkZGRTAwMDAxRkYwMTAxMDFGRjAwMzA0MDQ4ODA4NTAzODIwQ0ExODBDMEUwODA0MjcKKzoyMDU5QzAwMDAwMDAzRkZDMjE4MDIxMDAyN0YwMjQxMDI3RjAyNDEwMjQxMDI3RjAyMDgwMjRBMDQ2OTg0ODhDOTI4ODgxMDAzOAorOjIwNTlFMDAwMTAzQzE3QzAxMjhDRkQ1MDExRkMxNDgwMTg4MDE3RkUzMDgwRDFGODExMTAxMkEwMTQ2MDE4OTA1MTBFMjYwNDVBCis6MjA1QTAwMDAxMDIwMTAyMEZERkMyMDIwMjNGRTUwMDBGREY4NTEwODExRjgxQzYyMzBBNEQxOTgxNjkwMTBBRTEwQzQxMDgwQTIKKzoyMDVBMjAwMDAwMDA3RkZDNDAwNDRGRTQ0MDA0NDAyNDVGRjQ0NDg0NDQ4NDQ0OTQ0ODk0NTA3NDYwMDQ0MDA0N0ZGQzQwMDQwQQorOjIwNUE0MDAwMEZGMDA4MTAwODEwMEZGMDAwMDAxRkY4MTAwODExMDgxMTA4MTEwODExMDgxMjg4MDI0MDA0MzAwODE4MzAxMDE1Cis6MjA1QTYwMDA3RkZDNDAwNDRGRTQ0ODI0NEZFNDQwMDQ0RkU0NDgyNDQ5MjQ0OTI0NDkyNDQyODQ0NDQ0NDgyNDdGRkM0MDA0RjIKKzoyMDVBODAwMDA4NDA0ODQwMzNGQzMwNDA1N0ZFODgwMDA5RjgxOTA4MjlGODQ4QzA4OTQ2MEIyODBEMTAwOTQ4NTE4RTIxMDRGQgorOjIwNUFBMDAwNDAwMDI3RkUyNDQwMDQ4MDg1RkM1NTA0MTVGQzE1MDQyNUZDMjQyMEM0QTg0NEE0NDkyMjRBMjI1MEEwNDA0MDk1Cis6MjA1QUMwMDAyMDgwMzBGODIxMDg0MUYwNDgxMEY3RkUxMTgwMjI0NDRDRThGMzMwMDQ2ODE4QUVFMzI0MEMyMDAwQTAwMDQwQzQKKzoyMDVBRTAwMDAwMDA0N0Y4MzAwMDIwMDAwMDAwMEZGRUYxMjAxMTIwMTEyMDExMjIxMjIyMTQxRTEwMDAyODAwNDdGRTAwMDA4MQorOjIwNUIwMDAwMDQyMDA0MjA3RkZFMDQyMDI0MjAyMEY4M0U4ODIyODg0Mjg4NTI4ODhBQjgwNDkwMDg4MjEwODIyMDdFNDAwMDVDCis6MjA1QjIwMDAzRkZFMjEwMDI3RjgyNDA4MjdGODI0MDgyN0Y4MjA0MDIyNDgyQ0M0MjA0MDRBODQ0QTQyOUExMjAxRjAwMDAwNDEKKzoyMDVCNDAwMDEwMDAxMEY4MUU4ODIyODgyMjg4NjRBODk0OTAwODgyMzA4MkMyN0UwOTAwMjkwODI4MDQ2ODE2MDdGMjAwMDBBQQorOjIwNUI2MDAwMDA4MEY4NDA4RkZFOTQwNEEwMDBBM0Y4OTAwMDg4MDA4RkZFQTkyMDkxMjA4MTIwODIyMjgyMjI4NDIyODgxRUI5Cis6MjA1QjgwMDAwMDAwMDAwMDNGRkMyMDA0MjAwNDIwMDQyMDA0M0ZGQzIwMDQyMDA0MjAwNDIwMDQzRkZDMjAwNDAwMDAwMDAwMTAKKzoyMDVCQTAwMDEwNDAxMDQwMTA0MDI0RkMyNDg0NDkwNEZBODQxMDQ0MjAyNDdDMjQwMDA0MEUwNEYwMDQ0MDA0MDAyODAwMTBBNAorOjIwNUJDMDAwMDgyODA4MjQwODIwN0RGRTA5MjAwOTI0RkYyNjA5MTQ0OTE4NEY1MjQ5QUE0OTQ2NDgwMkE4MDA5RkZDMDAwMDFECis6MjA1QkUwMDAwMDAwN0MzQzQ1RTA0NDIwNDQyMDdDMjAxM0ZFMTAyMDVDNTA1MDUwNTA4ODUwODg1RDA0RTEwNjAyMDQwNDAwRDUKKzoyMDVDMDAwMDEwMDAxMDdDMUY0NDEwNDQyMDdDM0U0NDQ4NDQ4ODQ0N0Y3QzA4NDQwODQ0MDg0NDBBODQwQzk0MDkwODAwMDA5RAorOjIwNUMyMDAwMDAxMDFGRjgxMDAwMTAwMDFGRjgxMDgwMTA4MDEwODBGRkZFMDEwMDExMDgxMTA4MTEwODNGRjgxMDA4MDAwMEJFCis6MjA1QzQwMDAwNDAwM0ZGODIxMDgyNTQ4MkZFODI1NDgyOTI4M0ZGODIwMDhGRkZFMDgwMDBGRjgwMDA4MDAwODAwNTAwMDIwQjMKKzoyMDVDNjAwMDA3RjAwNDEwMDQxMDA0MTAwN0YwMDQxMDA0MTAwNDEwMDdGMDA0MTAwODEwMDgxMDEwMTAyMDUwNDAyMDAwMDA5MworOjIwNUM4MDAwMjIwODIxMTAyMEEwMzNGOEFBMDhBQTA4QTIwODIyMDgyM0Y4MjBBMDIwQTAyMTIwMjEyMjIyMjIyQzFFMjAwMEI5Cis6MjA1Q0EwMDAyMDAwMTNGQzUwMDQ0NDI0NDI0NDRGRTQ0ODI0NDgyNDRGRTQ0Mjg0NDI5NDQ0OTQ1ODc0NDAwNDQwMTQ0MDA4MTUKKzoyMDVDQzAwMDA4MDAwODAwRkVGQzA4MDA3RTAwMDgwMDA5RkVGRTIwMTgyMDFDMjAyQTQwMkE0NDQ4ODI4OUZGMDgwMjA4MDA1NworOjIwNUNFMDAwMDAwMDAwMzAzRkY4MDAwMDAwMDAwMDBDRkZGRTAzMDAwNzAwMDY0MDBDMjAxODEwMzFGODdGMEMyMDA4MDAwMEI0Cis6MjA1RDAwMDAwMDAwN0Y3RTQxNDQ3RjQ4MDA0ODdGNTA0MTQ4NDk0NDQ5NDI0OTQyNDk0MjU1NUExNDQ0MjI0MEMzNDAwMDQwQzAKKzoyMDVEMjAwMDA4MDAwODA0MEZGRTEwMDQxMDA0MjYwNDQxODQwMDg0MDAwNDAwRTQwNzA0MzgwNDAwMDQwMDI4MDAxMDAwMDAzQworOjIwNUQ0MDAwNzlGODQ5MDg0OTA4NTFGODYwMDA1M0ZDNEEwNDRBNDQ0QTQ0NkE0NDUyNDQ0MkE0NDA5MDQxMEM0NjA0NDAwMEZECis6MjA1RDYwMDAwMjAwMDIwMDA0MDAwNDEwMDgwODFGRkMwQTQ4MDI0MDAyNDAwMjQwMDQ0MDA0NDAwODQyMTA0MjIwM0U0MDAwMDIKKzoyMDVEODAwMDQwMDAyM0ZDMzAwMDIwMDAwMDAwMDdGRUUwODAyMTIwMjExMDIyMDgyNDdDMkZDQzIwMDg1ODAwODdGRTAwMDBCMworOjIwNURBMDAwMDQ0MDA0NDBGRkZFMDQ0MDExRjgyMTA4NDVGOEY5MDgxMUY4MkMwMDczRkMwMjk0MUU5NEUyOTQwRkZFMDAwMDNCCis6MjA1REMwMDAwMDAwRkVGQzI4MDAyODAwRkUwMEFBMDBBQkZFQUEyMENFMjA4MjQwRkU0MDgyODQ4MjgyRkZGRTgyMDIwMDAwRTUKKzoyMDVERTAwMDFGRjAxMDEwMUZGMDEwMTAxRkYwMDAwMDdGRkU0MTA0M0ZGMDA0MDAwOTAwMUZGMDAxMDA3RkZDMDEwMDAxMDBBQgorOjIwNUUwMDAwMTAyMDA4MjA3RjQwMjI3RTEyODIxNTQyRkYyMjAwMjIzRTAyMjIxMjIyMjIzRUMyMjIwMjIyMDIzRTBBMjIwNDJGCis6MjA1RTIwMDAzRkUwMDQyMDA0MjAwODNDMDgwNDFGRjQyMDI0NDE1NDgwODg3RkZDMDA4MDAwODAwMDgwMDA4MDAyODAwMTAwQjkKKzoyMDVFNDAwMDAwMDA3RkZDNDA4MDQwODA0RkY4NDg4ODQ4ODg0ODg4NDg4ODQ4ODg0OEE4NDg5MDQwODA0MDgwN0ZGRTAwMDAyQgorOjIwNUU2MDAwMDAwMEZCRkUyMjIwMjIyMDIyRkMyMkE0N0FBNDZBQTRBQUE0MkFBNDJBQjQyQUE4M0EyMDJBMjAwM0ZFMDAwMDI0Cis6MjA1RTgwMDAwMjAwMDIwMDNGRTAwNDIwMDQyNDA4MjQzMTFDMDEwMDdGRkUwMTAwMDkyMDA5MTAxMTBDMjEwNDA1MDAwMjAwMTAKKzoyMDVFQTAwMDA4NDAwODUwN0Y0ODA4NDgwODQwRkZGRTA4NDAwODQ4N0Y0QzA4MjgxQzMwMkIyMEM5NTIwODhBMDkwNjA4MDJGNgorOjIwNUVDMDAwMDg0MDA4NTA3RjQ4MDg0QzA4NDhGRkZFMDA0MDAwNDg3RTRDNDIyODQyMzA0MjMyN0U1MjQxOEEwNjA2MDAwMDcxCis6MjA1RUUwMDAwMjAwMDEwMDNGRkUyMTA0NDE4ODAxMDAwMTEwMTExMDEyQTAxMjgwMjI0MDA0MjAwODE4MzAwRUMwMDQwMDAwNTUKKzoyMDVGMDAwMDAxMDAwMDgwN0ZGRTQxMDQ4MDgwM0ZGODA4MjAwNDQwN0ZGQzAxMDAwMTAwM0ZGODAxMDAwMTAwMDEwMDAxMDBFMworOjIwNUYyMDAwMDQ0MDA0NTAzRjQ4MDQ0MEZGRkUwODQwN0Y0NDEwNDQyNDI4N0YyODA0MzAwNzMwN0M1MjA0OEEwNTA0MDQwMERCCis6MjA1RjQwMDA3RkZDMDEwMDAxMDAxRkYwMTExMDExMTAxRkYwMTExMDExMTAxMTEwRkZGRTEwMTAxMDEwMTAxMDEwNTAxMDIwMTQKKzoyMDVGNjAwMDAyMDAwMjAwN0ZGRTA0MDAwNDAwMDg0MDE4NDAxN0ZDMzA0MDUwNDA5MDQwMTA0MDEwNDAxN0ZFMTAwMDAwMDA1MAorOjIwNUY4MDAwMDA0MDAwODBGQkZDOEEwNDhBMDQ4QkZDOEEwNDhBMDQ4QTA0RkJGQzhBMDQ4MjA0MDIwNDAzRkMwMjA0MDAwMEU3Cis6MjA1RkEwMDAyMTA4MjUyODI3QkNGOTQ4MjdCRTIxMTgyQkFBMzU0NjY4MDBBM0Y4MjIwODIyNDgyMjQwMjBBMEExMTg0NjA4MTkKKzoyMDVGQzAwMDA4MDA3RUZDMTA4MDI4ODA3RUZFMDg4ODBFODhGOTA4MEEwODFGRjAxMDEwMUZGMDEwMTAxMDEwMUZGMDAwMDBDNQorOjIwNUZFMDAwMDgyMDI4QTAzRUZDNDkyMDdFRkMxNDUwMjY5MkM1MEUxRkYwMTExMDExMTAxMTEwMTJDMDA0MzAxODE4NjAxMDhECis6MjA2MDAwMDAwMDIwN0MxMDQ1RkU1NTAwNTUxMDU1MTA1NTEwNTVGQzU1MTA1NTEwMTExMDI5MTAyQTEwNDJGRTg0MDAwODAwOTIKKzoyMDYwMjAwMDAwMjA3QzEwNDVGRTQ1MDA3RDEwNDUxMDQ1MTA0NTdDN0QxMDQ1MTA0NTEwNDUxMDQ1MTA1NkZFNEEwMDg0MDAzMQorOjIwNjA0MDAwMDQ0MEZGRkUwNDQwN0ZGQzA4NDAxRjU4MjI2MkQ0NDIwODNFMzQyMEZGRkUwNDIwMDQyMDA4MjAxMDIwMjAyMDcwCis6MjA2MDYwMDAwMTIwNEZGQzIxMjAyRkY4MDkyODBGRjhFOTI4MkZGODIwMDAyN0YwMjQxMDI3RjAyNDEwMjdGMDUwMDA4RkZFMzIKKzoyMDYwODAwMDEwOTAxMDkwOTNGRTU0OTA1QkZFRkU5MjMzRkUzQTkyNTdGRTU0MDA1MUZDOTEwNDExRkMxMTA0MTFGQzExMDQ5NgorOjIwNjBBMDAwMDI0MDIyNDgxMjRDMEE1MEZGRkUwNDIwMjI0ODJGRTgyMTA4MjEwODNGRjgyMTA4MjEwODNGRjgyMDA4MDAwMEEwCis6MjA2MEMwMDAwNDQwRkZGRTA0NDA0M0YwMjIxMEEzRjA1MDAwNTdCQzE0QTQyN0JDRTA0MDJGRkUyMEUwMjE1MDIyNEUyQzQ0QTcKKzoyMDYwRTAwMDAxMDAwMTAwM0ZGQzAxMDAxRkY4MTEwODEzODgwNTYwMTkxRTYyMDgwMTgwMDBDMDA2MDAwMTgwMDBFMDAwNDBBOQorOjIwNjEwMDAwMDAwMDFGRjgxMDA4MTAwODFGRjgxMDA4MTAwODFGRjgwMTAwMDEwMEZGRkUwMTAwMDEwMDAxMDAwMTAwMDEwMEQ2Cis6MjA2MTIwMDAyMDAwMTNGMDEyMTAwM0YwODAwMDU3MzgxNTI4MjczODIwODAyMDgwQ0ZGQzQxQzA0MkEwNDQ5MDU4OEM0MDgwMTYKKzoyMDYxNDAwMDNGRjAwQTEwMDkyMDA0NDAwMzgwMUM2MEUxMUUxRkY0MTExMDExMTAxRkYwMDEyMDAxMTAwMUY4N0YxMDAwMDA2RAorOjIwNjE2MDAwMDFGQzc5MDQ0OTA0NDlGQzQ4MDA3QkRFMTI1MjFGREU1MDIwNTNGRTUwNzA1MEE4NUQyOEUyMjYwNDI0MDAyMEMzCis6MjA2MTgwMDAwMUYwRjExMDkxMTA5MUYwOTdCQzk0QTQ5NEE0OTdCQ0YwNDA5RkZFMDBFMDAxNTAwMjQ4MDQ0RTE4NDQwMDQwOUYKKzoyMDYxQTAwMDQwNDAyMjQwMjI0MDAzRkMwNDQwMDA0MEVGRkUyMDAwMjNGODIyMDgyMjA4MjNGODIyMDg1MDAwOEZGRTAwMDA3QQorOjIwNjFDMDAwMDEwMDAyMDAxRkYwMTAxMDEwMTAxRkYwMTAxMDEwMTAxRkYwMDIwNDAzRkVGRTAwMDIwNDAyMDQwMUZDMDAwMDAxCis6MjA2MUUwMDAyMDQwMjA0MDIwNDAyODQwMjg0MEIwNDBBN0ZDQTA0MDIwNDAyMDQwMzA0MDI4NDA0ODQwNEZGRTgwMDAwMDAwNEYKKzoyMDYyMDAwMDExRjgxMTA4MTUwODE5Rjg1N0JDNTRBNDU0QTQ5N0JDMTA0MDE3RkUyOEUwMjk1MDQ2NDg1ODQ2ODA0MDAwNDBDNgorOjIwNjIyMDAwMDEwMDdGRkMwMTAwM0ZGODAxMDBGRkZFMDAwMDFGRjAxMTEwMTExMDExMTAxMTEwMTJDMDA0MzAxODE4NjAxMDczCis6MjA2MjQwMDAyMDAwMjNGODIxMTBGQ0EwMjA0MDIwQTAyQjU4MzA0NjYzRjhBMDQwMjA0MDI3RkUyMDQwMjA0MEEwNDA0MDQwM0QKKzoyMDYyNjAwMDAwMDQ3RjA0NDEyNDQ5MjQ0OTI0NDkyNDQ5MjQ0OTI0NDkyNDQ5MjQxODI0MTQyNDIyMDQ0MTk0ODEwODAwMDAzRgorOjIwNjI4MDAwMjAwMDE3RjAwMjIwMDk0MDg4QzA1MTMwNTYwRTEwODAyN0Y4MjA4MEUwODAyRkZDMjA4MDIwODAyMDgwMjA4MEU1Cis6MjA2MkEwMDAwMDIwN0MyODQ0MjQ1N0ZFNTQyMDU1MjQ1NTI0NTUyNDU3RTg1NTI4MTExMDI5MUEyRDJBNEE0Njg0ODIwMDAwNzEKKzoyMDYyQzAwMDA4MDAwODAwMEZGRTE0MDAyN0Y4NDQwMDA0MDAwN0Y4MDQwMDA1MDAwMDg4MjQ4NDI0MTI2NDEyMDNGMDAwMDA0RgorOjIwNjJFMDAwMjIwODIxOEMyMDkwMjNGRUZBMjIyMkFBMjI3MjIzRkUyMDAwMjFGQzM5MDRFMUZDNDEwNDAxMDQwMUZDMDEwNEI2Cis6MjA2MzAwMDAyMjA4MjExODIwQTAyN0ZDMzQ0NEFENTRBNEU0QTdGQzIwMDAyM0Y4MjIwODIzRjgyMjA4MjIwODIzRjgyMjA4N0EKKzoyMDYzMjAwMDA4MzAwNDIwMDI0MDNGRkMyOTE0MjUyNDI1NDQzRkZDMDAwMDBGRjAwODEwMEZGMDA4MTAwODEwMEZGMDA4MTBGRAorOjIwNjM0MDAwMDEwOEY4OEM4ODUwQUJGRUFCMjZBQUFBQUFBQUFCRkVBODAwQTlGQ0E5MDQyMUZDMjEwNDUxMDQ0REZDODkwNEE2Cis6MjA2MzYwMDAxMDgwMTA4MDEwODBGRTgwMTA4MDEwODAxNDgwMTg4MDMwODBEMDgwMTA4MDEwODAxMDgyMTA4MjUwN0UyMDAwNzEKKzoyMDYzODAwMDAwNDAwMDQwRjdGRTkwRTA5MTUwOTI0ODk0NDY5QkY4OTIwOEYzRjg5MjA4MDNGODAwMDAwMDAwMEZGRTAwMDBDOQorOjIwNjNBMDAwNDA0MDIwNDAyN0ZFMDBFMDkxNTA1NjRDNTA0MDIzRjgyMjA4MjNGOEMyMDg0M0Y4NDAwMDQwMDA0RkZFMDAwMEIzCis6MjA2M0MwMDAwODQwMDg0MDA4NDBGRjQwMDg0MDFDNDAxQTQwMUI0MDI5NDAyODQwNDg0MDg4NDAwODQyMDg0MjA4M0UwODAwNEEKKzoyMDYzRTAwMDA4MjAwODIwMTAyMEZGQTAxMDIwMjQyMDI0MjA3RjIwMjQyMDA1QTAxRTIwRTQyNDQ0MjQwNDI2MDQxQzA0MDA0MgorOjIwNjQwMDAwMjAwNDI3QzQzQzU0MjQ1NDQ0NTQ3RDU0QTU1NDI1NTRGRDU0MjU1NDIxMTQyMjk0MkFDNDM0NDQyODE0MDAwODJCCis6MjA2NDIwMDAxMDAwMEJGQzA4MDQyMDA0MjdGNDI0OTQyN0Y0MjQ5NDI3RjQyMDg0MjA4NDIwODQyMDg0MjA4NDIwMTQyMDA4QzQKKzoyMDY0NDAwMDAwMDhGQkZDODg4MDg4NDA4ODQwRkJGQzg4MDg4ODEwRjgyMDg4NDA4ODgwODkwMEZBMDA4RDgwODg3RTAwMDQwNAorOjIwNjQ2MDAwMTAwMDEzQkMxMkE0RkVBNDEyQTQzQUE0MzdGRTUyQTQ1MkE0OTJBNDEyQTQxMkE0MTRBNDE0QTQxQUI0MTE0OEY3Cis6MjA2NDgwMDAxMDQwMTAyMDEzRkVGQUE0MTA5MDNCMDgzNDgwNTBGRTUxNDA5MjdDMTA0MDEwN0MxMDQwMTA0MDEwNDAxMDQwMkQKKzoyMDY0QTAwMDAwODAwMEMwRjg4MDg5RkU4QTgwOEM4MDg4RkM4ODgwODg4MEY4ODA4OEZFMDA4MDAwODAwMDgwMDA4MDAwODA3NQorOjIwNjRDMDAwMDgwMDA4MDQwRkZFMTEwMDExMDAyMTA4NDFGQzAxMDAwMTAwMDEwODAxRkMwMTAwMDEwMDAxMDAwMTAwMDAwMDA3Cis6MjA2NEUwMDAxMDgwMTA4MDEwODQxNUZFNTU0MDVBNDA1NDQ4OTA3QzEwNDAyODQ4MjQ3QzI0NDA0MDQwNDA0MDgwNDAwMDQwM0EKKzoyMDY1MDAwMDQwODAyMEMwMzA4MDIxMDAwMUZDMDI4MEY0ODAxMEZDMTA4MDEwODAxMEZDMTA4MDE0ODAxODgwMTA4MDAwODAxMworOjIwNjUyMDAwMTA0MDEwMjAxM0ZFRkM4ODEwNTAxM0ZFMUEyMjEyMjIzM0ZFRDIyMjEyRkExMjhBMTJGQTEyMDI1MjBBMjIwNEY2Cis6MjA2NTQwMDAwMjAwMDEwMDdGRkUwNDIwMDI0MDAxODAwNkUwRjgxRTNGRkMwMjAwM0ZGODIyNDgyMjQ4MjI0ODIyNDgyMDE4ODQKKzoyMDY1NjAwMDAyMDAwMTAwM0ZGRTIwMDQ0MDAwMDFGMDNFMDAwMjAwMDIzQzBGQzBGMjAwMDIwMDAyMDQwMjA0MDFGQzAwMDAzQworOjIwNjU4MDAwMDIwMDAxMDAzRkZFMjAwMjA0NjAxODE4NjQwNDA3RjgwQTAwMEJGODEyMDAwM0Y4MDIwMDAyMDAwMjAwMDIwMDdDCis6MjA2NUEwMDAxMDQwMTdGQzEwNDAyM0Y4MjA0MDY3RkNBMDAwMjNGODIyMDgyMjQ4MjI0ODIyNDgyMEEwMjExODI2MDgwMDAwMDAKKzoyMDY1QzAwMDAxMDAwMDgwN0ZGRTQ0NEM5RkYwMDQ0MDFGRjgwNDQwN0ZGRTA5MTAzN0VFQzEwNDA5MjAxMTE4MjUxMDAyMDBGNgorOjIwNjVFMDAwMDA4MDcxRjg1MjEwNTdGRTVBNDg3MkE0NTNGRTUyMDA3MkZDNTIwMDUyRkM1NDAwNzRGQzU0ODQwOEZDMTA4NDVFCis6MjA2NjAwMDAwMDIwMEUyMEYwMjAxMDNFMTAyMEZDMjAxMUZDMTEwNEZGMDQxMTA0MTFGQzEwMDAxMDAyMTAwMjBGRkUwMDAwRkEKKzoyMDY2MjAwMDA4MDAwRkUwMTA0MDNGRkM2MjIwQTUxODM4OTAyRkZDMjAwMDI3RjAyMDAwMjdGMDIwMDA0RkY4NDgwODhGRjhGQQorOjIwNjY0MDAwMTA0MDEwNDAxMDQwOTQ0MDU0N0U1ODQwRkU0MDMwNDAzOUZDNTUwNDU1MDQ1MTA0OTEwNDExMDQxMUZDMTEwNDU2Cis6MjA2NjYwMDAyMDQwMTA0MDEwNDAwMDdFODg0MDQ4NDA1MDQwMTA0MDEzRkMyMjA0RTIwNDIyMDQyMjA0MjIwNDIzRkMyMjA0OUEKKzoyMDY2ODAwMDAyNDAwMjIwMDNGODdFMDAwMUZDRkYwMDAwQjgwM0M0N0MzNDAwMEMzRkY4MjQ4ODI0ODgyNDg4RkZGRTAwMDBBRQorOjIwNjZBMDAwMTAwMDEwMEVGRUYwMTA4MDIwODAyODgwNDhGRTdFODgwODg4MDg4OEZFODgwOTA4MDkwODBBMDgwQzA4MDgwODlDCis6MjA2NkMwMDAxMDAwMTFGQ0ZEMDQyMTA0MjFGQzUxNDg1MUZFRkQ0ODExRkUxRDUwRjE1NjUxNTgxMjQ4MTI0RTEyNjQxNDQwM0QKKzoyMDY2RTAwMDAxMDAyMTA4M0ZGODAwMDAxMDFDRkVFMDEwODAyODgwNDhGQ0ZFOTAwODkwMUU5MEU4OTAwODkwMDkxMDBBMTA5QworOjIwNjcwMDAwM0ZGODIwMDgyMDA4M0ZGODIyMjAyMjIwMkZGQzIyMjAzRkZFMjUwODI0OUMyNDYwNDQyMDQ1MTg4RTBFMDQwNEI3Cis6MjA2NzIwMDAwNDQwRkZGRTA0NDAwMEEwRkU5MDI4RkVGRjkwQUFGRUFBOTBBQUZDQ0U5MDgyRkVGRTAwODJBQUZFQUEwMTJBOEUKKzoyMDY3NDAwMDEwODAxMEEwMTA5OEZDOTAxM0ZDMzg4MDM0ODA1N0ZFNTA0MDkwNDgxMDZFMTAzODEwNzIxMTlBMTYwRTEwMDQ2MgorOjIwNjc2MDAwMDIwMDAyMDAwMjAwMDNGQzAyMDAwMjAwMDIwMDNGRjAyMDEwMjAxMDIwMTAyMDEwMjAxMDNGRjAyMDEwMDAwMDkwCis6MjA2NzgwMDAxMDQwMTA1MDEwNDgxRTQ4MTA3RTEzQzAxMDQwN0M0ODQ0MkM0NDM4NDQxMDQ0MzA3QzUyMDE4QTA2MDYwMDAyRkIKKzoyMDY3QTAwMDAwMjAyMDIwMTAyMDEwMjBGRTNFMDQyMDQ0MjAyNDIwMjlGQzI5MDQxMTA0M0QwNEMxMDQwMUZDMDEwNDAwMDBBMgorOjIwNjdDMDAwNDExMDIxMTAyN0ZFMDExMDkxRjA1MTEwMTFGMDIxMTAyMTEwMkZGRUM0OTA0NTA4NDYwODQ0MDA0N0ZFMDAwMDE3Cis6MjA2N0UwMDAyMDQwMzAyMDIzRkU0MjA0OTAwMEYzRkMyMDQwNDA0MDgyNDBGMjdDMDI0MDNBNDBDNTQwMDRDMDA4M0UwMDAwMjgKKzoyMDY4MDAwMDEwNDAxM0ZFMTA4OEZDNTAxM0ZFMTAwMDM5RkMzNTA0NTFGQzUxMDQ5MUZDMTAyMDEzRkUxMDIwMTAyMDEwMjBBNAorOjIwNjgyMDAwMDEwMDNGRkMwODIwMDQ0MEZGRkUwMDAwMUZGMDEwMTAxRkYwMTAxMDFGRjAwMTAwRkZGRTAxMDAwMTAwMDEwMDQ1Cis6MjA2ODQwMDAxMDA4MDgwQzdGMDgyMjEwRkZBNDAwNDY3RjBDNDEwODdGMTA0MTI0N0Y0NjA4MENGRjg4MDgxMDA4MjAwODQwQkEKKzoyMDY4NjAwMDIwODAxN0ZDMTIxMDAxMjA4RkZFNTAwMDE3RjgxNDA4MjdGODI0MDhFN0Y4MjA0MDJGRkUyMDQwMjA0MDIwNDA0MworOjIwNjg4MDAwMDA4MEY4ODgwODhDMDg5MDc4QTA0MEMwNDA4MDQzRkVGOEEwNDhBMDA4OTAwODkwMDg4ODA4QTYyOUM0MTA4MDQ4Cis6MjA2OEEwMDAxMTEwMDkyMDdGRkU0MDA0MEZFMDA4MjAwRkUwMDAwMDNGRjAwMTAwM0ZGODAxMDA3RkZDMDEwMDA1MDAwMjAwREMKKzoyMDY4QzAwMDQwNDAyRjQ0MjE0NDAxNDg4RjUwNTg2MDU4NDAyOEZFMkY0MDIxNjBDMTUwNDE1MDQxNDg0MTRFNDU2NDQyNDBFRAorOjIwNjhFMDAwMTAyMDEwMjAxMDIwRkRGRTEwMjAzMDIwMzgyMDU0MjA1NTIwOTBBMDEwNDAxMDYwMTA5MDExMEUxNjA0MTAwMDczCis6MjA2OTAwMDAwMDgwMDA4MDAwODQ3RkZFMDA4MDEwODAwODgwMDg4MDA0ODAwMzAwMDEwMDAyODAwNDYwMTgxRTYwMDQwMDAwNEUKKzoyMDY5MjAwMDEwODAxMDgwMTA4ODdDOUM1NEIwNTRDMDU0ODA1N0ZFNTRBMDU0QTA1QzkwMTA5MDEwODgxMEE2MTFDNDEwODAxRgorOjIwNjk0MDAwMDA4MDdDODg0NDhDNTQ5MDU0QTA1NEMwNTdGRTU0QTA1NEEwNTRBMDU0OTAxMDkwMjhBODQ2QzY4NDg0MDAwMDVFCis6MjA2OTYwMDAxMDQwMTg0MDEwNDQyRkZFMzA0MDY0NDBBNDQwMjI0MDIyNDAyMTQwMjA4MDIwQzAyMTMwMjYxRTI4MDQwMDAwOTAKKzoyMDY5ODAwMDAwODAzQzgwMjQ4ODI0OUMzQ0IwMjRDMDI0ODAyN0ZFM0NBMDI0QTAyNDkwMjQ5MDI0ODg0NEE2NTVDNDg4ODBGNworOjIwNjlBMDAwMDA4MDNGRkUyMDgwQUZGQzYyMTAzRkZFMjAwMDY3RjhBNDA4MjdGODI0MDgyN0Y4NDA4MDVGRkU4MDgwMDA4MEVFCis6MjA2OUMwMDAwMDQwN0JGQzQ5MDg1MDkwNTdGRTYwMDA1M0Y4NEEwODRCRjg2QTA4NTNGODQwNDA0RkZFNDA0MDQwNDA0MDQwMzAKKzoyMDY5RTAwMDEwMDAxM0ZDMTA0NEZDNDQxMDg0MTQ4NDE5MTQzMjA4RDQwMDExRkMxMTA0MTEwNDExMDQxMUZDNTEwNDIwMDBBRgorOjIwNkEwMDAwMDAwMDAzRkM3ODg0NDg4NDQ4ODQ0ODg0NDkwNDc5MTQ0QTA4NDlGQzQ5MDQ0OTA0NzkwNDAxMDQwMUZDMDEwNDg4Cis6MjA2QTIwMDAxMDQwMTA1MDEwNDhGRTQwMTFGRTEwNDAxNDQwMTg0ODMwMjhEMDMwMTAyMDEwNzAxMTkyMTYwQTUwMDYyMDAyQkEKKzoyMDZBNDAwMDIwMDAxM0ZDMTA4NDAwODQ4OTA0NDkwNDUyMTQxNDA4MjAwMDIzRkNFMjA0MjIwNDIyMDQyMjA0MjNGQzIyMDRCNworOjIwNkE2MDAwMDgwMDA4MDAwODA0N0U4NDA4NDgwODI4RkYxMDA4MTAyODI4MkYyODI4NDQyODg0NTgwMDQ4MDA4N0ZFMDAwMDZECis6MjA2QTgwMDAwMUZDM0M0NDI0NDQyNDQ0MjQ5NDNEMDgyNkZDMjQ4NDNDODQyNEZDMDA4NDI4ODgyNDQ0NjY2NkMyMjIwMDAwQjYKKzoyMDZBQTAwMDNGRjgyNDQ4M0ZGODAxMDAwMUY4MDEwMDFGRjAxMDEwMUZGMDEwMTAxRkYwMDEwMDdGRkMwMTAwMDEwMDAxMDAxNQorOjIwNkFDMDAwMDQ0MDA0NDAwNDQ4NDQ0QzM0NTAyNDYwMDQ0MDA0NjAxNDUwRTQ0QzQ0NDgwODQwMDg0MjEwNDIyMDNFNDAwMDAwCis6MjA2QUUwMDAxMDQwMDg0MDNFRkUyMzQ4M0UzMDQwQzg0MTA2OUZGMDAxMTA3RkZDMDExMDNGRjAwMTAwRkZGRTAxMDAwMTAwM0YKKzoyMDZCMDAwMDAwMDAzRkZDMDEwNDAxMDQwMjA0MDQwNDA4NzgzMDEwMEZGODA4MDgwODA4MDgwODA4MDgwODA4MEZGODA4MDhGNAorOjIwNkIyMDAwMDA4MDQwNDAyN0ZFMjQ5MDA0OTAwN0ZFRTQ5MDI0OTAyNEYwMjgwMDJBQTgzMjU0MjQ1NDUwMDA4RkZFMDAwMEQyCis6MjA2QjQwMDAwMDAwMTAzQzExQzAxMTAwRkQwMDExMDAxMUZFMTUxMDE5MTAzMTEwRDExMDExMTAxMjEwMTIxMDU0MTAyODEwNzkKKzoyMDZCNjAwMDA4MDAwOEZDMDg4MEZFODAwOEZFMUM5MEU5MTAwOTEwMkExMDEwMDAxRkYwMTAxMDEwMTAxMDEwMUZGMDEwMTA1NworOjIwNkI4MDAwMTA0MDEwNDA3REYwMTI1MDM5OTBEMUM4MTI0QTY1MDQzRkY4MTEwODExMDgxRkY4MDExMDAxRjg3RTBDMDAwODQzCis6MjA2QkEwMDAyMjE4MjExMEZGRDAyMTFFNDJBNDU3RTQ5MEE0RkZFNDE0NTQxN0Q0M0M0OEQ3QzgxNDQ4MTQ1NDE1NTIxNEEyQ0QKKzoyMDZCQzAwMDAxMDAwMTA4M0ZFQzAxMTAwMTIwN0ZGRTAwODAwMzAwMDdGODFDMDhFNDA4MDdGODA0MDgwNDA4MDdGODA0MDgxRAorOjIwNkJFMDAwMjA0MDIwNDAyMDQ0M0RGNDQwNDg3QkZFQTAyMDIwNDBGOUY4MjMwODI1MDgyMUY4MjEwODI5MDgzMUY4MjEwODExCis6MjA2QzAwMDAwNDIwN0ZGRTA0MjAwNTIwM0ZGQzIwMDAyMjIwMjIyMDNGRkUyMjIwMjNFMDIwMDg0QTQ0NDkyNjkxMjIwMDAwNTEKKzoyMDZDMjAwMDAwODA0MDYwMzA0MDE3RkMwMDEwMDIxMEYxMjAxMEEwMTA0MDEwNDAxMEEwMTExMDEyMDgyODAwNDdGRTgwMDA1NgorOjIwNkM0MDAwNDIwMDIyN0UyMjQwMEZDMDgyNDA1MjdFNTI0ODIzNDgyNjQ4MkE0OEMyNDg0MjQ4NDI4ODQyODg0QjA4NDQwOEUzCis6MjA2QzYwMDAwMDQwRjg0MDIwQTAyMTEwMjIyODI0NDZGODgwMjMxMDIwMjQyMDQ0Mzk4OEM2MTAwMDYwMDE4MDA2MDAzODAwRUUKKzoyMDZDODAwMDIyMDgyMjQ4N0ZBODIyMjgzRTA4MjI0ODNFMjgyMjI4RkY4RTRBNzg0OTA4NTEwODQwMDg3Rjg4MDAwODAwMDAzRgorOjIwNkNBMDAwMDEwMDAxMDQ3RkZFMDIwMDBGRjAwODEwMEZGMDA4MTAwRkYwMDgxMDBGRjAwODEwRkZGRTA0NDAxODMwNjAwQ0ZFCis6MjA2Q0MwMDAwMDAwRkZGRTE0NDA3RjQwNTU3ODU1NDg1NTQ4N0Y0ODA4NjgwODU4N0U4ODA4ODgwODhBMEVBQUYwQ0E0MDg2QTYKKzoyMDZDRTAwMDAwMjA3RTIwMTAyNDEwM0UxMDIwMjAyMDNDMjA2NUZDQTUwNDI1MDQyNTA0MjUwNDNEMDQyNUZDMjEwNDAwMDA3QworOjIwNkQwMDAwMDA0MEZDNDAyM0ZDMjA0MDRCRjhGQzgwMEJGQzIxMTBGQUU4MjQ0NjJCRkEyMEUwMzk1MEUyNEMwNDQ4MDA0MENECis6MjA2RDIwMDAwMTAwMDEwMDAxRkMwMTAwMDEwMDFGRjAxMDEwMTExMDExMTAxMTEwMTExMDExMTAwMkMwMDQzMDE4MEM2MDA4RkMKKzoyMDZENDAwMDEwMjAxMDIwMjAyMDNFMjA0MDIwN0MyMDkxRkUxMDIwRkUyMDEwMjAxMDIwMTIyMDE0MjAxODIwMTAyMDAwMjAwRQorOjIwNkQ2MDAwMDg0MDBDNDAwODdFMTg0MDEwNDAzM0ZDNTIwNDkyNDQxMjQ0MTI0NDEyNDQxMkE0MTA5MDExMEMxMjA0MTQwMDU3Cis6MjA2RDgwMDAxMDIwMTAyMDEwMjBGQkZFMTIyNDMyMjgzODQwMzQ2MDUwNjA1MEEwOTBBMDExMjAxMTIyMTIyMjE0MUUxMDAwMjQKKzoyMDZEQTAwMDAxMDAwMDgwMUZGRTEwODA5MTQwNTIyMDU0MTAxOENFMzMwMDVDMzA5MEMwMjMwQzJDMzA0MEMwNDcwMEI4MDA3RgorOjIwNkRDMDAwNDA4MDIwODAzMTQwMjEyMDAyMTgwNDI2RTg3NDIxODAyNjIwMjA3MDIwQzgyMzBDMjgxODMwNjAyMTgwMDYwMEZDCis6MjA2REUwMDAzRkY4MDEwMDdGRkU0MTA0NUQ3MDAxMDAxRDcwMDAwMDNGRjgyMDAwMkZGMDIwMDAzRkZDNDQ1MDQ2MjA4NDFDRDMKKzoyMDZFMDAwMDEwMDAxM0ZFMTIwMEZFMDAxMkZDMTYwMDFCRkUxMkMwMzJBNEQyQTYxMjk4MTI4ODE0ODgxNEE2NThDNDIwODA4RQorOjIwNkUyMDAwMjAyMDIwMjAzREZDMjA0MDQxRjg3RDA4OTFGODExMDhGREY4MTEwODExRjgxMTA4MTdGRTE0OTAxOTA4MTIwNEI5Cis6MjA2RTQwMDAwMDgwRjg4MDg4ODA5N0ZDQTEwMDkxNDA4QTQwOEZGQzg4NDBBODQwOTdGRTgwNDA4MDQwODA0MDgwNDA4MDQwRDMKKzoyMDZFNjAwMDA0NDBGRkZFMDQ0MDA0NDAzRkYwMDA2MDdDOEMwNUIwMDU0MDA5MjAzNTFDQzIwODNGRjAxNDg4MTI2NjIyNDRDQgorOjIwNkU4MDAwMTA4MDEwODAxMUY4MTExMEZFMjAxM0ZDMTQ0NDFCRkUzMDQ0RDA0NDEzRkMxMDQwMTA0MDEwNDA1MTQwMjA4MDUyCis6MjA2RUEwMDAwMTAwNzlGODQ5MTA0QTEwNEJGODc4NDg0ODQ4NEZGRTc4NDg0ODQ4NEJGODQ4NDA3ODQwNDg0MDAxNDAwMDgwQjEKKzoyMDZFQzAwMDEwMDAxQkZFMzAyMDQ4MjA4QzIwMTgyMDMyMjA2MjNFQTIyMDIyMjAyMjIwMjIyMDIyMjAyRkZFMjAwMDAwMDBFNAorOjIwNkVFMDAwMDg4MDg4ODA1MEY4MjExMDUyMjA5N0ZDMTA0NDE3RkUzMDQ0NTA0NDkzRkMxMDQwMTA0MDUwNDAyMTQwMDA4MDczCis6MjA2RjAwMDAwNDAwMDQ0MDBGRTAxMDQwM0ZGODQxMDgwMTA4N0ZGRTAxMDgwMTA4M0ZGODAxMDgwMTAwMDkwMDA1MDAwMjAwODEKKzoyMDZGMjAwMDIwMDAyN0ZDMjA0MDMwNDBBODQwQTg0MEEyN0MyMjQwMjI0MDIyNDAyMjQwMjI0MDIyNDAyRkZFMjAwMDAwMDBCNworOjIwNkY0MDAwMDgyMDA4MjA3RjdFMDg0NDNFQTgyQTI4M0UxMDFDMjgyQUM2N0ZGQzAxMDAxMUYwMTEwMDExMDA3RkZDMDAwMEM0Cis6MjA2RjYwMDAxMDAwMTNGODEwMTAxMDIwRkM0ODE3Q0MxNTUwMTk2MDMyNTBEMjQ4MTQ0RTE5NDQxMEMwMTdGQzUwMDAyMDAwRjMKKzoyMDZGODAwMDAwMDA3RkZFMDA4MDAwODAwMDgwMDA4MDEwODAxMEZDMTA4MDEwODAxMDgwMTA4MDEwODBGRkZFMDAwMDAwMDAwQgorOjIwNkZBMDAwMDA0MDAwNjBGRjQwMDg0MDA4RkU0ODg4NEYwODQ5ODg0QTUwNDg1MDRBMjA0QzIwNzA1MEMxOEUwRTA0MDAwMDgzCis6MjA2RkMwMDAxMDIwMTAyMDEwM0U3QzIwNTVGQzU1MDQ1NTI0NTUyNDU1MjQ1NTI0NUQyNDExMjQxMDUwMTA4ODExMEMxMjA4RjQKKzoyMDZGRTAwMDAxMDAwMDgwMUZGRTEwMDA5MDAwNUZGQzUwNDAzMjQwNTI0MDkyN0MxMjQwMjI0MDIyNDA0MjQwNUZGRTgwMDBFMQorOjIwNzAwMDAwNDIwMDIyM0UyNDIyMDgyNDdGQTQwODI4MDgyOEZGQTQwODIyMEMyMjEyMjIxMTNBMjEyNEMwMjAwMDIwMDAyMEZBCis6MjA3MDIwMDAwMDAwNDAwMDI3RkUzMDIwMjAyMDAwMjBFMjIwMjIyMDIyM0MyMjIwMjIyMDIyMjAyQTIwMzIyMDJGRkUwMDAwMEEKKzoyMDcwNDAwMDA0MjAwNDIwRkZGRTA0MjAwNTIwMDA4MDNGRjgwMDEwMDAyMDAwQzAwMzAwMEMwMDMwMDA0QzAwODNGRTAwMDBFRgorOjIwNzA2MDAwMTAyMDEwMjAxMDIwRkRGRTEwMjAxMDIwMzlGQzM0ODg1NDg4NTA1MDkwNTAxMDIwMTA3MDExODgxNjBFMTAwNDU3Cis6MjA3MDgwMDAwMTAwMDEwMDAxMDA3RkZFMDEwMDAxMDAxRkY4MDgxMDA0MjAwNDIwMDI0MDAxODAwMjQwMEMzMDcwMEUwMDA0MzQKKzoyMDcwQTAwMDAwNDAwMDQwRjg0MDhGRkU4ODQwODg0MDhCRkM4OTA4ODkwODg4OTBGOEEwODg0MDAwQTAwMTE4MDIwRTBDMDQwMQorOjIwNzBDMDAwMjEwMDIxODAyMTAwRkJGRUFBOTJBQzkyQTg5MkFCRDJGODkyQTA5MjMxNTIyOTcyM0Q1RUVBMTIwMjEwMDQwMDFDCis6MjA3MEUwMDAxMDAwMTAwMDEwMDAzRjdDMjQ0NDQ0NDQ4NDQ0N0Y0NDA4NDQwQzQ0MEE0NDExNDQxMTdDMjA0NDQwNDA4MDAwRkEKKzoyMDcxMDAwMDAwMjA3QzIwNDQyMDQ3RkU3QzIwNDQyMDQ1RkM0NTA4N0M4ODQ0OTA0NDUwNDQyMDQ0NTA0NDhFNTUwNDhBMDA2MworOjIwNzEyMDAwM0M4MDI0ODgyNDlDMjRFMDNDODQyNDg0MjRGQzNDMDAyNUZDMjUwNDI1MDQ0NUZDNDUwNDU1MDQ4OUZDMDEwNDdGCis6MjA3MTQwMDAyMDQwMTA0MDEwNDA4MDQwNDg0MDQ4NDAxN0ZFMTA0MDIwNDAyMDQwRTA0MDIwNDAyMDQwMjA0MDIwNDAyMDQwM0EKKzoyMDcxNjAwMDAyMDAwMTAwMDA4ODdGRkMwMDA4MDAxMDAwMjAwMDQwMDA4MDAxMDAwNjAwMTgwMDI4MDBFNzAwNDBGRTAwMDBBNQorOjIwNzE4MDAwMTAwMDExRkMyMTA0MjkwNDQ5MDRGMTA0MTEwNDIxRkM0MDAwRjgwMDAwOTAwMDg4MTkwQ0UyMDYwNDA0MDAwMEE3Cis6MjA3MUEwMDAwMDAwRkVGQzI0ODQyNDg0M0M4NDI0ODQyNDg0M0NGQzI0ODQyNDAwMjc0ODNDNjRDNDQyMDQ4MjA1MDAwNDAwQ0QKKzoyMDcxQzAwMDAxMDAwMTAwN0ZGQzAyMDAxRkYwMTAxMDEwMTAxRkYwMTAxMDFGRjAxMDEwMUZGMDEwMTAxMDEwRkZGRTAwMDAzNworOjIwNzFFMDAwMTAwMDEwMjAxMDIwMTNGRUZDNDAxMUY4MzEwODM5Rjg1NTA4NTFGODkxMDgxMUY4MTEwODExMDgxN0ZFMTAwMEMwCis6MjA3MjAwMDAwMDQwRkU0MDExRkMxMDQwMjA0MDNERjg0NTA4NDlGOEE5MDgxOUY4MTEwODIxRjgyMTA4NDEwODhGRkUwMDAwN0QKKzoyMDcyMjAwMDEwODAxMDgwMTA4MEZERjgxMDg4MTQ4ODE4ODgzMTg4RDA4ODEwQzgxMEE4MTEwODExMEExMjBBNTQwNjI4MDI2MAorOjIwNzI0MDAwMTA0MDE4NjAxN0ZDMTA0MDIwODAzM0Y4NjIwOEEzRjgyMjA4MjNGODIyMDgyM0Y4MjIwODIyMDgyRkZFMjAwMDA4Cis6MjA3MjYwMDAxMDAwMUJGQzEwODAzMDkwMjEwODcyN0NBN0M0MjA0MDIwNDAyN0ZDMjA0MDIwNDAyMDQwMkZGRTIwMDAwMDAwQzUKKzoyMDcyODAwMDAwMjAxMDIwMTAyMDEwMjAxMDIwRkQyMDExM0MxMTIwMTEyMDExMjAxMTIwMUQyMEYxMjQ0N0ZFMDAwMDAwMDA0OQorOjIwNzJBMDAwMTEwMDExMzgxMUMwMTEwNEZEMDQxMUZDMTQwMDE5RkMzMTA0RDEwNDExRkMxMTA0MTEwNDExMDQ1MUZDMjAwMDk0Cis6MjA3MkMwMDAwMDgwMDA4MDAwODAwMDgwMDg4MDA4ODAwOEZDMDg4MDA4ODAwODgwMDg4MDA4ODAwODgwMDg4MEZGRkUwMDAwRTUKKzoyMDcyRTAwMDAwMTA3QzEwNDQxMDQ0MTA0NDEwN0M5MDU0OUUxMDkwNTA5MDVFOTA1MDkwNTA5MDU2OTA3ODkwQzdGRTAwMDAxNworOjIwNzMwMDAwMDAwMDFGRjgxMDA4MTAwODEwMDgxMDA4MTAwODFGRjgxMDA4MDQyMDA2MTAwQzA4MTgwQzMwMDY0MDA0MDAwMEMzCis6MjA3MzIwMDAyMDAwMjAzODNGQzAyMDA0MjAwNDFGRkMwMDAwMDAwMDFGRjAxMDEwMTAxMDFGRjAxMDEwMTAxMDFGRjAxMDEwQTYKKzoyMDczNDAwMDEwMDAxMDFDMjNFMDIyMjA0QTIwRkEyMDEzRkUyMjIwNDIyMEZBMjAwMjEwMDIxMjFBOTJFMzBBMDIwNjAwMDA5MgorOjIwNzM2MDAwMDEwMDAxMDAwMTAwN0ZGRTAxMDAwMTAwM0ZGQzAwMDAwMTAwMDg4ODQ4QzQ0ODg2NDgxNDg4MTgwN0YwMDAwMEYyCis6MjA3MzgwMDAwODQwMDg0MDdFRjgwODQ4MUU0ODY4Q0EwOEFBMkIwNjFGRjAwMTAwM0ZGODAxMDA3RkZFMDEwMDA1MDAwMjAwNEYKKzoyMDczQTAwMDIwMDAyOEJFMjRBMkZCMjQyN0E0MkEyODMyMjg2RkE0QTIyMjIyMjIyMzIyMjRBQTI0QTQyODIwQTAyMDQwMjAwRAorOjIwNzNDMDAwMDAwMDdGRkMwMjAwMDQyMDA4MTAxM0Y4M0QxMDAxMDAwMTAwM0ZGODAxMDAwMTAwMDEwMEZGRkUwMDAwMDAwMDYzCis6MjA3M0UwMDAwMDQwN0Y2MDEwNDAxNDQwMjJGRTdGODgwQTQ4MDg0ODdGNDgwODUwMDgyMDA4MjAwRjUwNzg4ODAxMDYwMjA0MjYKKzoyMDc0MDAwMDNGRjgyNDQ4MjQ0ODNGRjgwMTAwN0ZGQzAyMDAxRkYwMTAxMDFGRjAxMDEwMUZGMDEwMTAxRkYwMTAxMEZGRkVFRgorOjIwNzQyMDAwMTAwMDExRjgxMTA4N0QwODU1MDg1NTA4NTUwODU1Rjg1NTA4NTQwMDVDOTAxMEM4MTE4QzExMDYxMjA0MTQwMERFCis6MjA3NDQwMDAyMDIwMjAyMDIxRkMyMDIwQTgyMEFCRkVBODEwQTgxMEFCRkVBOTEwQTg5MEI4RDBDMDkwMDAxMDAwNTAwMDIwN0MKKzoyMDc0NjAwMDI0MDQzNDA0MjQyNDNGQTQ0NDI0MDQyNDdGQTQwNDI0M0ZBNDI0QTQyNEE0MjRBNDI0ODQyNzg0MDUxNDA0MDhGMworOjIwNzQ4MDAwMjAwMDNGMDA0ODdDMDg0NEZGNDQwQzQ0MEE3QzExMDA2RkYwMDgxMDA4MTAwRkYwMDgxMDA4MTAwRkYwMDgxMDdFCis6MjA3NEEwMDAwMDIwMEMyMEYxMjAxMTI4MTFGQ0ZFMjAzMDI0M0JGRTU0MjA1NDUwOTA1MDEwODgxMDg4MTEwNDEyMDYxNDA0MTEKKzoyMDc0QzAwMDBDQTA3MDkwMTA5MDExRkVGRDEwMTMxMDM1RkMzOTEwNTUxMDU1RkM5MTEwMTExMDExMTAxMUZFMTEwMDExMDBERAorOjIwNzRFMDAwMDA3QzNGODAyMDgwMkZGODIwODAyMTAwMjdGMDI0MTAyNDkwMjQ5MDI0OTAyNDkwMjE0MDQyMzA0NDE4ODgxMEU3Cis6MjA3NTAwMDAwMjAwMDdGMDA4MTAxNDIwMzI0MDQ5ODAwNjAwMTkwMDYxMTAxMTEwMTJBMDIyNDAwNDIwMDgxMDMwMEVDMDA0RTgKKzoyMDc1MjAwMDAxMDAwMDgwMUZGRTEwNDAxMDQwOTdGQzUwNDAxMDQwM0ZGRTUwMTA5RkZFMjIxMDIxMTAyMTEwNDA1MDgwMjA5QworOjIwNzU0MDAwMjE1MDExNTAxN0ZFMDE1MDQ4MDAyRkZFMEM0NDEwNDAxM0Y4MTI0ODYyNDgyMjQ4MjI2ODIyNTAyMDQwMjA0MEE5Cis6MjA3NTYwMDAyMDQwMTA0MDEwODAwMDkwODkwODRBM0M1N0M0MTAwMDEwMDAyM0Y4RTIwODIyMDgyMjA4MjIwODIzRjgyMjA4MjEKKzoyMDc1ODAwMDAyMDAwMTAwN0ZGRTQ0MjIxODE4NkZGNDA0NDAwODIwMUZGMDAxMTAwMTAwMUZGODAxMDAwMTAwN0ZGRTAwMDA0RgorOjIwNzVBMDAwMDEwMDAxMDAyMTA4M0ZGQzIxMDgyMTA4MjEwODIxMDgyMTA4M0ZGODIxMDgwMTAwMDEwMDAxMDAwMTAwMDEwMDMzCis6MjA3NUMwMDAwMTAwMDEwMDFGRjAxMTEwMTExMDFGRjAxMTEwMDEwMDAxMDAzRkY4MjQ0ODI0NDgyNDQ4MjQ0OEZGRkUwMDAwNDIKKzoyMDc1RTAwMDAxMDAwMTAwM0ZGODIxMDgyMTA4MjEwODNGRjgwMTAwMDEwMDBBMDA0OTA4NDk4NDQ5MTY0ODE0ODdGMDAwMDA0NAorOjIwNzYwMDAwMTAyMDEwMjAyMDIwM0RGQzQxMjQ3RDI0OTEyNDExMjRGREZDMTAyMDEwMjAxMDIwMTAyMDE0MjAxODIwMTAyMDRDCis6MjA3NjIwMDAwMjAwMDEwMDdGRkMwMTAwM0ZGODIxMDgyMTA4M0ZGODAxMDAwMzBDMENCMDM4NDBDODIwMEExODBDMEUwODA0OTcKKzoyMDc2NDAwMDEwODAxMDgwMjBGQzI5MDg0OTg4RjI1MDEwMjAyMDUwNDA4OEZCNDYwMDMwMDAxMDE4NDBFMDMwMDAxODAwMDgzOQorOjIwNzY2MDAwMDYyMDc4MjAwODIwMDgyMDdERkMwOTI0MUQyNDFCMjQyOUZDMjkyNDQ4MjA4ODIwMDgyMDA4MjAwODIwMDgyMEI0Cis6MjA3NjgwMDAwMDIwM0MyMDI0MjAyNDIwM0RGQzI1MjQyNTI0MjUyNDNEMjQyNUZDMjQyMDI0MjA0NDIwNDQyMDU0MjA4ODIwRTQKKzoyMDc2QTAwMDAxRjAzRjAwMDEwMEZGRkUwMTAwMUZGMDExMTAxRkYwMTExMDFGRjAwMTAwM0ZGODAxMDAwMTAwRkZGRTAwMDBGNQorOjIwNzZDMDAwMDg0MDBDNDAxODQwMTdGQzM0NDQyNDQ0NjQ0NEE0NDQyN0ZDMjQ0NDIwNDAyMDQwMjA0MDIwNDAyMDQwMDAwMEQwCis6MjA3NkUwMDAwMTAwMDEwMDAxMDAwMjgwMDQ0MDA4MzAzMDBFQzgyNDA4MjAwODIwMDgyMDE0NTAyMjQ4NDI4QzgxMDgwMDAwQzIKKzoyMDc3MDAwMDAxMDAwMjAwMEZGMDA4MTAwOTEwMDg5MDA4MTBGRkZFMDgxMDBBMTAwOTkwMDg5MDEwMTAxMDEwMjA1MDQwMjAxNgorOjIwNzcyMDAwMDAwMDFGRkMxMDg0MTNFNDEwODQxMDg0MTdGNDEwMDQxM0U0MTIyNDEyMjQxM0U0MjIyNDIwMDQ0MDE0ODAwOEJDCis6MjA3NzQwMDAwODA0MDg4NDA4ODQwODg0MDhDNDRDQTQ0QUE0NEE5NDg4OTQwODg0MDg4NDEwODQxMDg0MjA4NDIwODQ0MDA0MDkKKzoyMDc3NjAwMDQyMDQyMjI0MjIyNDAyMjQ5MjI0NUIzNDU2QUMyMjI0MjIyNDIyMjRDMjI0NDQyNDQ0MjQ0ODI0NTAyNDQwMDQxRQorOjIwNzc4MDAwMDA0MDQwNjAzMDgwMjBGQzAxMDgwMjEwRkZGQzEwMDQxMDA0MTFGQzEwMDQxMDA0MTQwNDFCRkMxMDA0MDAwMDg3Cis6MjA3N0EwMDAwMTAwNzkxRTA5MDIwRDQyN0I1RTQzOTA0RkYwNDExMDdCOUUwQjQyMEQyMjA5MjIwOTAyMDkwMjUxMTQyMTA4MzcKKzoyMDc3QzAwMDIwMjAzMDIwMjAyMEZDMjA0MUZDNTEyNDkxMjRGRDI0MTFGQzExMjQxRDI0RjEyNDExRkMxMTA0MTEwNDEwMDA1NgorOjIwNzdFMDAwMDAxMDNDMTAyNDEwMjQxMDNERkUyNDEwMjUxMDI0OTAzQ0QwMjQ5MDI0MTAyNDEwMjQxMDQ0MTA1NDUwODgyMDcxCis6MjA3ODAwMDAzRkY4MDAwODFGRjgwMDA4M0ZGODAwMDA3RkZFNDEwNDlGRjAxMTEwMTExMDExMTAxMTUwMTEyMDAxMDAwMTAwOEIKKzoyMDc4MjAwMDAwMDAzRTdDMjI0NDIyNDQzRTdDMjI0NDAwMDAwRkMwMDg0MDA4NDAwODQwMDg0MDEwNDIxMDQyMjAzRTQwMDA3MQorOjIwNzg0MDAwMjAyMDIwMjAzQzIwNDlGRTg5MjIxMTI0RkQyMDA1RkMwNTQ0RkQ0ODA1NDgwNTMwRkUzMDAyNDgwNDg2MDkwNEU4Cis6MjA3ODYwMDAwMjAwMDEwMDdGRkU0MDA0ODEwODAxMDAzRkY4MjEwODIxMDgzRkY4MjEwODIxMDgyMTA4M0ZGODIwMDgwMDAwMjAKKzoyMDc4ODAwMDAwMDAxRkY4MTAwODEwMDgxRkY4MTA0MDIwMjAyRkY4NDgyRThGRTQwODIwMDgyMDBGRTAwMDAwN0ZGRTAwMDAyRQorOjIwNzhBMDAwMDdFMEYyNUUxM0MyNTI1NDUzQzg1Mjc2NTdDMjc4NTgwOUUwMjgyNEM5MjgwRUIwMDkyODU2MjYyMDIwMDAyMDU5Cis6MjA3OEMwMDAwMDIwRjkyMDIxMjgyMUZDMjEyMDIyMjBGODIwMjdGRTIwNzAyMEE4MzhBOEMxMjQwMjI2MDQyNDA4MjAwMDIwOTQKKzoyMDc4RTAwMDEwNDAxMDQwMTE0MEZERkMxMjQwMzg0MDM3RkU1NDQwNTBFMDkxNTAxMTQ4MTI0RTE0NDQxMDQwMTA0MDEwNDBGOQorOjIwNzkwMDAwMTA0MDExNDAxMTQwN0RGQzU1NDA1NjQwNTQ0MDdGRkU1NEUwMTBEMDExNTAxRDQ4RTI0NjA0NDQwODQwMDA0MEVFCis6MjA3OTIwMDAwMTAwMTEwMDExMDAzRkY4MjEwMDQxMDBGRkZFMDEwMDAzODAwNTQwMDkyMDExMTgyMTBFQzEwNDAxMDAwMTAwN0QKKzoyMDc5NDAwMDA4NDA4ODQ0NTNGNDIwNDg1MDUwOTdGRTA4NDAxODgwMjlGQzRCMDQ4RDA0MDlGQzA5MDQxMTA0NTFGQzIxMDRCMQorOjIwNzk2MDAwNDA4MDIwODAzN0U4MjA4QzAwOTBFRkZFMjA0MDIwODAyM0Y4MkQwODMxMDgyNUY4MjkwODMxMDgyMUY4MDEwODJECis6MjA3OTgwMDA0MDQwMjI0MDEyNDAwM0ZDMDI0MDA0NDBGMDQwMjdGRTIwRTAyMTUwMjU0ODJBNEMzMjQ2MjQ0NDA4NDAwMDQwMUQKKzoyMDc5QTAwMDAwMDA0RkZDMjA4MDIxMDAwMzBDMEM5MEUzNjAyQzUwMjBDQzIzNDQyQzQwMjE0MDIwODA1MDAwOEZGRTAwMDBCNAorOjIwNzlDMDAwMjA0MDMwNjAyMDQ0M0U3RTUwOTA1MDkwOTExMDEyMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDUwMTAyMEM0Cis6MjA3OUUwMDAxMDQwMTA2MDEwNDAxNDQwMTdGQzVBNDg1MjQ4OTI0ODEzRjgxMjQ4MTg1MDI0NDgyMDdDNDdDNDgyMDAwMDAwOTgKKzoyMDdBMDAwMDAxMDAwMTA4M0ZEODAxMjRGRkZFMDMwMDBGRjAzODEwQ0ZGMDA4MTAwRkYwMDAxMDI0ODgyMjQ0NDI2MjAwMDAzRAorOjIwN0EyMDAwMTA4MDEwNjAxMDIwMTFGRUZDMjAxMDIwMTQyMDE4MjAzMUZDRDAyMDEwMjAxMDIwMTAyMDEwMjA1M0ZFMjAwMDAxCis6MjA3QTQwMDAwN0ZDNzQwNDU3RkM1NDAwNTVGQzc0MjA1NUZDNTUyNDc1RkM1NDIwNTVGQzU1MjQ3NUY0NDkwQzA5MTQxMTA4QjIKKzoyMDdBNjAwMDA3RkUwNDAyRjdGRTk0MDA5NUZDOTQyMDk1RkM5NTI0RjVGQzk0MjA4QkZFMEEyQTEyM0UxM0NBMjIwMjAyMDYyOAorOjIwN0E4MDAwMDIwMDAxODAwMTAwMDAwODNGRkMwMTAwMDEwMDAxMDgzRkZDMDEwMDAxMDAwMTAwMDEwNDdGRkUwMDAwMDAwMDU0Cis6MjA3QUEwMDAwNDQwMDQ0MDdGRkUwNDQwMDUxMDFGRjgwMTIwMDE0MEZGRkUwMjAwMEZGODM0MDhDN0Y4MDQwODA3RjgwNDA4RDcKKzoyMDdBQzAwMDEwODAxMDQwMTAyMEZCRkUxMDIwMzgyMDM0MjA1MDIwNTFGQzkwMjAxMDIwMTAyMDEwMjAxMDIwMTdGRTEwMDA2RgorOjIwN0FFMDAwMDAyMDNFMjAyMjIwMjIyMDIyRkMzRTI0MjIyNDIyMjQzRTI0MjIyNDIyNDQyNzQ0Rjg4NDAxMTQwMjA4MDAwMDY0Cis6MjA3QjAwMDAxMDQwMTAyMDEwMzAxMDIwN0RGQzU0MjA1NDIwNTQyMDdERkM1MDIwMTgyMDE0MjAxRTIwRjQyMDAzRkUwMDAwRjgKKzoyMDdCMjAwMDAwODA3QzQwNDQyMDU0MjA1NUZFNTUwNDU2MDg1NDAwNTQwMDU0MDAxMDAwMjgwMDI0MDA0N0ZFODQwMDAwMDAwNgorOjIwN0I0MDAwMTAyMDEwMjAyMUZFM0MyMDQxRkM3QzQwOTNGRTEwNDhGQzg4MTBGRTExMDgxMjQ4MTAyODE0MDgxODI4MTAxMEFGCis6MjA3QjYwMDAyMDgwMjA4MDNFRkU1MTIwOEExMDAxRjA3RDEwMTExMDExOTAxMTUwMTE1MDFEMTBFMjEyNDIxMjA0MEUwODAwRUQKKzoyMDdCODAwMDA5MDAwODgwMTA0ODE3RkMyMDQwNjA0MEEwNDAyMDQ4MjdGQzIwNDAyMDQwMjA0MDIwNDQyRkZFMjAwMDAwMDBBRAorOjIwN0JBMDAwMjA4MDEwNDAxMDQwMDdGRTgwNDA0ODQwNDg0MDEwNDAxM0ZDMjA0MEUwNDAyMDQwMjA0MDIwNDAyRkZFMjAwMDY0Cis6MjA3QkMwMDAyMDAwMTFGODExMDhGRDA4MDUwODA5MDgxMTA4MzlGODU0OTA5NDkwMTA5MDEwOTAxMTEyMTExMjEyMTIxNDBFMjIKKzoyMDdCRTAwMDAwNDBGODIwMDgyMDQ5RkU0ODIwNDgyMDQ4MjA3RTIwMDJGQzAyMjAzMjIwQzIyMDAyMjAxNDIwMEJGRTAwMDAzNQorOjIwN0MwMDAwMjAwMDIwM0MyM0QwRkE1MDIyNTAyMjUwMkE1MDMyNTA2MjUwQTI0ODI0NDgyNDQ4MjQ0NDI4NDZCMDQ0NDA0MDBECis6MjA3QzIwMDAwMDM4M0ZFMDIyNDAyMjQwMjI0MDIyMjAyMjIwMjIyMDIyMTAyMjEwMjIwODQyMDg0MjBDNDIwNjgyMDQwMDAwMEQKKzoyMDdDNDAwMDEwNDAxMDQwMTNGQ0ZFNDQxMjQ0MTdGQzFBNDQzM0ZDRDA0MDEwNDQxMDI4MTAzMDEwRDIxNzEyNTAwQTIwMDZENgorOjIwN0M2MDAwMDEwMDAxMDAzRkY4MDIwMDAyMDBGRkZFMDQwMDA4MjAwRkYwMDAyMDAwNDAwMjgwMDEwMDAwODAwMDQwMDAwMEZDCis6MjA3QzgwMDAwMDQwRkM0MDEwNDAxM0ZDMjA0MDIwNDAzRkZFNjg4MDY4ODBBOUY4MjgwODI4MTAzOEEwMjg0MDIwMjAwMDAwQjMKKzoyMDdDQTAwMDEwMjAxMDIwMjAyMEZFRkMyMDQwNTA0MDkxRkVGRTQwMTA4MDExRkMzQzA4RDA4ODEwNTAxMDIwMTAxMDEwMTA2NAorOjIwN0NDMDAwMTNCQzEyQTQxM0JDRkUyMDEyQTQxMTlDMTQwMDE5MTAzM0ZDRDExMDE3RkUxMDAwMTExMDUxMEMyMjA0MDAwMEI5Cis6MjA3Q0UwMDAwMjA4RjkwQzg4OTBBQkZFQTg5MEFCRkNBODk0QUZGRUE4OTRBQkZDQTk5MDIxOTg1Mjk0NEM5Njg4OTQwMDkwQTMKKzoyMDdEMDAwMDIwNDAzRjdFNTA5MDhBMDgwN0UwMDgyMDFGQzAwMDQwRkZGRTBFMjA3MTQwMEVBMDcxOUMwRTg4RjI4MDAxMDAwNgorOjIwN0QyMDAwMTA0MDEwMjAxMDIwMTNGRUZFMjAxMjIwM0EyMDM2MjA1MkZDNTIyMDkyMjAxMjIwMTQyMDE0MjAxQkZFMTAwMDRECis6MjA3RDQwMDAwMTAwMDA4MDNGRkUyMDAwMjA4MDIwODAyMDgwMkZGQzIwODAyMDgwMjA4MDIwODA0MDgwNUZGRTgwMDAwMDAwMUQKKzoyMDdENjAwMDA0MjA0NDIwMzdGRTI0MjAwQzIwMzVGQzQ1MDAwNDgwN0ZGRTAzMDAwNDg4MDg1MDM4MjBDQTEwMEMwRTA4MDQyMAorOjIwN0Q4MDAwMDg4MDA4QzAwODgwNDg4MDJGRkUyOTA4MDkwODBBMTAxQTEwRTlBMDQ4NjAwODkwMDkwODBBMEMwQzA0MDgwMDg4Cis6MjA3REEwMDAyMDQwMjdGQzIxMTAyMEEwRjdGRTIwMDAyQkY4MzI0ODYzRjhBMjQ4MjNGODIwNDAyN0ZDMjA0MEFGRkU0MDAwNkQKKzoyMDdEQzAwMDA4MjAwODIwMDgyMDg4MjA0ODIwNkZGRTQ4MjAwODIwMTgyMDI4MjBDODIwMDgyMDA4MjAwQkZFMDgwMDA4MDA0RAorOjIwN0RFMDAwMTBBMDEwOTAxMDk4OTA4ODUwODA1RkZFMTBBMDEwQTAzMTIwNTEyMDkxMTAxMjEwMTIwODE0MEUxODA0MTAwMEY5Cis6MjA3RTAwMDAxMDgwMTBBMDExMTBGREZFMTMyMDNEMjAzNTIwNTFGQzUxMjA5MTIwMTFGQzExMjAxMTIwMTEyMDExRkUxMTAwRjIKKzoyMDdFMjAwMDIwQTAyMDkwM0M5MDIxRkU0MTIwN0IyMEE1RkUyMTIwRkQyMDIxRkUyMTIwMjEyMDI5MjAzMTIwMjFGRTAxMDA4RgorOjIwN0U0MDAwNDA0MDIwODAzM0Y4MjIwODAyMDgwM0Y4RTIwMDIzRjgyMjA4MjIwODIyMDgyM0Y4MjIwODUwMDA4RkZFMDAwMDBCCis6MjA3RTYwMDAwODQwN0Y0MDA4N0UzRUM4MDg0ODdGMzAxMjI4MjI0NjQ2ODQ5RkYwMTExMDExMTAxMTEwMDJDMDBDMzAzMDEwRDQKKzoyMDdFODAwMDNFNDAyMjQwMjQ0MDI4NDAyNEEwMjJBMDM1MTAyOTE4MjIwRTI1MDQzRkY4MDEwMDAxMDAwMTAwN0ZGRTAwMDAxQQorOjIwN0VBMDAwMDAwMDI3QkMzMDg0MjJBODQxMTA0QUE4RjQ0NDI3QkM0MDg0RjRBODAzMjgwMzEwMzRBOEM4NDYxMDg0MDAwMEU3Cis6MjA3RUMwMDA0MDgwMjA0MDM3RkUyMDAwMDFGODAxMDhFMUY4MjAwMDIxRjgyMDEwMjdGRTI4MjAzMDIwMjAyMDAwQTAwMDQwMEMKKzoyMDdFRTAwMDAyNDA0MzIwMjIyNDMzRkUyNjIwMEEyODEzRkMxMjIwMTIyOEUzRkMyMjIwMjIyMDIyMjQyM0ZFMjIwMDAwMDA4NworOjIwN0YwMDAwMTAwMDEzRjgxMjA4RkEwODEyMDgxM0Y4MTQ0MDE4NDAzMjQwRDI3QzEyNDAxMzQwMTRDMDE0NjA1ODFFMjAwMDE2Cis6MjA3RjIwMDAxMDIwMTAyMDEwMjAxMjI0RkEyNDEyMjQxQTI0MzNGQ0QwMjAxMjI0MTIyNDEyMjQxMjI0MTNGQzUyMDQyMDAwNkQKKzoyMDdGNDAwMDAyMDAwMjAwMDNGODAyMDAzRkYwMjAxMDNGRjAyMDEwM0ZGMDIxMTAwMTAwRkZGRTAxMDAwMTAwMDEwMDAxMDAwMAorOjIwN0Y2MDAwMDEwMDAxRkMwMTAwMUZGODEwMDgxRkY4MTAwODFGRjgwMTAwRkZGRTAzODAwNTQwMDkzMDMxMEVDMTA0MDEwMDg5Cis6MjA3RjgwMDAwMDAwRkJGRTIwNDAyMDg0MjE4ODIyNTBGNEUwMjMzMDJENzAyMEE4MjEyODNBMjZDNDI0MDAyMDAxNDAwMDgwQ0IKKzoyMDdGQTAwMDA4NDAwODQwRkZGRTA4NDAwMTAwMjEwODIxMDgyMTA4M0ZGODAxMDA0MTA0NDEwNDQxMDQ3RkZDNDAwNDAwMDBBQQorOjIwN0ZDMDAwMDAyMEZGMjAyODIwMjg3Q0ZFNDRBQTg0QUEwNEFBNDRDRTI0ODIyNEZFMDQ4MjA0ODIwNEZFMTQ4MjA4MDAwMDI4Cis6MjA3RkUwMDAwMDAwMDdGQ0YwQzA5MTg4OTMwQzlDOTA5NTYwOTI1MEY1NzA5MEE4MDFFODA2QTYxODI0MDBBMDAwNDAwMDAwQzUKKzoyMDgwMDAwMDA4MTAwNDIwN0ZGRTAxMDAzRkY4MDEwMDdGRkUwMjAwMDdGODBDMDgzN0Y4QzQwODA3RjgwNDA4MDdGODA0MDhDQgorOjIwODAyMDAwMTA0MDEwNDAxNDgwMTRGRTU5MDI1MjAyOTQ4MjEwNDIxMDIyMTAyMjI4MDIyNDAyNDQwNDQwMTQ4MDA4MDAwMDBCCis6MjA4MDQwMDA0MDQwMjA0MDIwNDAwMDQwOEJGODRBNDg1MjQ4MTI0ODIzRjgyMDQwQzA1MDQwNDg0MDdDNEY4NjQwMDQwMDAwQUYKKzoyMDgwNjAwMDEwMjAwQzMwMDQ0NEZGRkUwODIwMDgyMDEyMjgyMzRDN0VGODA0NTAwODEwMTAyMDI0NDQ3RUZFMDIwNDAwMDA1QQorOjIwODA4MDAwNDEwMDIxMDAyOUZDMEE0ODE0NTA3MEEwMTExMDEyMUMxNDA4MUZGMDEwMTAxMDEwMTAxMDFGRjAxMDEwMDAwMDhBCis6MjA4MEEwMDA0MTAwMjEwMDIzRkMxNDU4RTg0MDQxQTA0NjE4NUZGNjEwMTAxMTEwMTExMDExMTAxMkMwMDQzMDE4MUM2MDA4RjIKKzoyMDgwQzAwMDIxMDAxMTAwMTFGRTAyNDQxNDQ4NzBBMDIxMTAyNjBDMTkwODdGRkUwMjIwMDYyMDAxQzAwMjMwMEMxQzMwMDgxMQorOjIwODBFMDAwNDIxMDIxMTAyMTIwMEZGRTgxMDg1MTA4NTIxMDIyOTQyNEE0MkY3OEMxMDg0MjEwNDUyNDRGQkU0MDgyMDAwMEYzCis6MjA4MTAwMDAyMDAwMTEyNDExNDQwMjg4OEM0ODRBMjQ1MTI0MTdGQzI0NDQyNDQ0RTdGQzI0NDQyNDQ0MjdGQzI0MDQwMDAwOTMKKzoyMDgxMjAwMDAwNDA3RTYwMDI0MDA0ODAwOEZFMDg4ODA5ODgwRTg4Mzg1MEM4NTAwODIwMDg1MDA4OTgwOTBFMkEwNDE0MDA4NQorOjIwODE0MDAwMDg0MDI4NEMyRjcwMjg0MDJFNDI3MTNFMDIwMDA0QzAxRjAwMDQxMDNGRjgxMTA4MTEyMDIxMTA0NTA4MDIwMDQzCis6MjA4MTYwMDAwODAwMEJGODEwMDgxMDEwMzAyMDMwNDA1RkZFOTA0MDEwNDAxMDQwMTA0MDEwNDAxMDQwMTA0MDExNDAxMDgwMEUKKzoyMDgxODAwMDEwMDAxMUZFOTIwNDUyMDg1NDEwRkUyMDMwMjAzQkZFNTQyMDU0MjA1MDIwOTAyMDEwMjAxMDIwMTBBMDEwNDA1RAorOjIwODFBMDAwNDA4MDIwNDAyN0ZFMDQ4NDkwNDA1M0Y4MTExMDIwQTAyN0ZDMjA0MEUwNDAyM0Y4MjA0MDIwNDAyMDQwMjA0MEI4Cis6MjA4MUMwMDAwMDAwM0ZGMDAwMjAwMDQwMDA4MDAxMDAwMTAwMDEwNEZGRkUwMTAwMDEwMDAxMDAwMTAwMDEwMDA1MDAwMjAwODAKKzoyMDgxRTAwMDAxMDAwMTgwMDIwMDFGRjgxMDA4MTAwODFGRjgxMDA4MTAwODEwMDgxRkY4MTAwODEwMDgxMDA4MUZGODEwMDhDNworOjIwODIwMDAwMjA0MDEzRkMxMDQwMDNGODgwNDA1N0ZFNTAwMDEzRjgyMjA4MjI0OEUyNDg0MjQ4NDBBMDQxMTA0MjFDNEMwODA5Cis6MjA4MjIwMDAwMjAwMDEwMDNGRkMyMDA0NDAwODFGRTAwMDQwMDA4MDAxMDA3RkZFMDEwMDAxMDAwMTAwMDEwMDA1MDAwMjAwNEMKKzoyMDgyNDAwMDFGMDgxNDMwMUFDNDE0MTg3RjY0MTQxODNFRTAwMTAwM0ZGRTIwMDQwRkYwMDAwMDNGRkMwOTEwMzMwODAxMDA4QgorOjIwODI2MDAwMTA0MDEwMjAxM0ZFRkEwNDEwMDAzOUZDMzQwMDUwMDA1M0ZFOTAyMDEwQTgxMTI0MTYyMjEwMjIxMEEwMTA0MDRFCis6MjA4MjgwMDAwMDQwNzgyMDRCRkU0QTAyN0EwNDUxRjgxMDAwMUMwMDUzRkU1MDIwNTEyODVEQTQ3MjI2QzQyNDAwQTAwMDQwRTMKKzoyMDgyQTAwMDAxMDAwMDgwM0ZGRTIwMDQ0MDAwMEZGODAwMDAwMDAwN0ZGRTAwODAwODkwMEM4ODEwOEMyMDg4NDI4MDAxMDA2NQorOjIwODJDMDAwMTA0MDE4MjAxM0ZFMjIwMjQ4MDBGOUZDMTAwMDIwMDA0M0ZFRjgyMDAxMjgwMTI0MUEyMkU0MjIwMEEwMDA0MEFCCis6MjA4MkUwMDAwODIwMDQyMDA0NDAxRkYwMTAxMDEwMTAxMDEwMUZGMDAwMDAwMTAwMDg4ODI4ODQyODE2NjgxMjA3RjAwMDAwODQKKzoyMDgzMDAwMDExMTAxMTEwMjExMDI1MTA0OTEwRjExMDExMzAyMkIwNDJBOEZBNjgwMjI4MzQ0OEM0NDQwODg0MTEwNjIyMDQ4NQorOjIwODMyMDAwMjAwMDIwN0U3RTQ0NDQ0NDg4NDg3RjUwMDE0ODAxNDQ3RjQyMDE0MjAxNDIwMTVBN0Y0NDAwNDAwMDQwMDA0MEUzCis6MjA4MzQwMDAwMTAwMDEwMDNGRkMwMTAwMDEwMDAxMDBGRkZFMDEwMDExMDAxMUY4MTEwMDExMDAyOTAwNDUwMDgzRkUwMDAwQjQKKzoyMDgzNjAwMDAxMDA3RkZDMDEwMDNGRjgwMTAwRkZGRTAyNDAwNDIwMEZGODMxMDZDMTA0MUZGODAyNDAwNDMwMTgxQzYwMDhCOQorOjIwODM4MDAwMjA0MDIzRkMyMDQwRkJGQzIwNDAyN0ZFMjhBMDMxMTA2M0Y4QUM0NjIwNDAyN0ZDMjA0MDIwQjBBMTBFNDYwNDgwCis6MjA4M0EwMDAwQzAwNzFGODExMDgxMTA4MTEwOEZERjgzMTA4MzkwODU1MDg1MUY4OTEwODExMDgxMTA4MTEwODE3RkUxMDAwREYKKzoyMDgzQzAwMDAwMDAxRkYwMTAxMDEwMTAxMDEwMUZGMDExMTAwMTAwMDkwMDA5RjgwOTAwMDkwMDE1MDAyMzAwNDBGRTgwMDBFQgorOjIwODNFMDAwMDIwMDAxMDA3RkZDMDgyMDA4MjAwODIwMTQ1MDIyNDg0Mjg4MDEwMEZGRkUwMTAwMDEwMDAxMDAwMTAwMDEwMEVDCis6MjA4NDAwMDAyMDgwMTBDMDEwODBGREZFMjEwMDIyODAzQ0ZDMjUyMDI0MjAyNUZFMjQyMDQ0MjA0NDUwNDQ4ODk3MDYwODAwMEQKKzoyMDg0MjAwMDIwMDAxMUY4MTEwOEZEMDgwNTA4MDlGODExMDgzOTA4NTUwODk1RjgxMTA4MTEwODExMDgxMTA4MTdGRTEwMDAxQQorOjIwODQ0MDAwNDAwMDIxRjgzMTA4MjEwODAxMDhFMUY4MjEwODIxMDgyMTA4MjFGODIxMDgyMTA4MjkwODM3RkUyMDAwMDAwMDEzCis6MjA4NDYwMDA3QzAwNEJGODRBMDg1MjA4NjIwODUzRjg0QTA4NEEwODRBMDg2QkY4NTIwODQyMDg0MjA4NDIwODRGRkU0MDAwQkUKKzoyMDg0ODAwMDEwMDAxOUY4MTEwODI1MDgyNTA4NzlGODA5MDgxMTA4MjEwODdERjgwMTA4MDEwODBEMDg3M0ZFMDAwMDAwMDA3NworOjIwODRBMDAwMTAyMDEwMjAyMDIwM0UyMDQwM0U3QzIwOTAyMDEwMjBGREZDMTEwNDExMDQxMTA0MTUwNDE5RkMxMTA0MDAwMDQ5Cis6MjA4NEMwMDAyMDQwM0U3QzQ4OTAxRkYwMTAxMDFGRjAxMDEwRkZGQzBBMjAzNDk4Q0YwNjA0NDAwRkUwMDEwMDExMjAyMzEwRUUKKzoyMDg0RTAwMDAxMjAwNTIwRjVGQzk1MjI5NUUyOUU5RTkxRjg5MjEwOTdGQ0YyNDQ5M0ZDMDI0NDAzRkMwMjQ0MDQ1NDA4NDgyNQorOjIwODUwMDAwMDAyMEZFMTAyOUZFMjgwMEZFODhBQTg4QUI1NEFGMjRDMjIwODIyMEZGRkU4MjIwODIyMEZFMjA4MjIwMDAyMEFGCis6MjA4NTIwMDAxRkYwMTAxMDFGRjAxMDEwMUZGMDAwMDBGRkZFMjIwMDNFRkMyMjg4M0U1MDIzMjAzRTUwRTI4RTAzMDQwMjAwRjMKKzoyMDg1NDAwMDNGRkMyMjQ0MjI0NDNGRkMwNDQwMDQ0MDdDN0MwNDQwM0M3ODA0NDAwNDQwRkM3RTA0NDAwNDQwMDQ0MDA0NDA0RgorOjIwODU2MDAwMDgyMDA0NDA3RkZFMDI0MDFGRjgxMjQ4MTQ3ODEwMDgxRkY4MTAwODFGRjgwMDIwN0ZGRTA0MjAwNEEwMDA0MEQwCis6MjA4NTgwMDAwMjEwNDEyMDJGRkMyMTQwMDdGODA1NzhFNjA4MjdGODI0MDgyN0Y4MjAyMDJGRkMyMTIwNTBBMDhGRkUwMDAwREYKKzoyMDg1QTAwMDAwODA3ODgwNDkwMDQ5RkU0QTQwN0E0MDRDN0M0ODQwNDg0MDQ4NDA3ODdDNDg0MDAwNDAwMDQwMDA0MDAwNDA5MworOjIwODVDMDAwMDIwMDAzMDAwMjAwRkZGRTAyMDAwMjAwMDQwMDA0MDAwRkY4MDg4MDEwODAxMDgwMjA4MDQwODBCRkZFMDAwMEJGCis6MjA4NUUwMDAxMDgwMTg4MDEwODAzRkZFMjA4MDYwODA2MTAwQTFGQzIyMjAyMjIwMjQyMDI4MjAzMDIwMjdGRTIwMDAwMDAwNjMKKzoyMDg2MDAwMDEwODAxMEMwMTA4MEZERkUxMTQwMzI0MDM4NDA1NDdFNTQ0MDkwNDAxMDdFMTA0MDEwNDAxMDQwMTA0MDEwNDBFMAorOjIwODYyMDAwMTIyMDFBMzAxMjIwMkZBMDIyN0U2MjY4QTJBODJGQTgyOEE4MjhBODI4OTAyRjkwMjhBQzI4NDYyMTg0MDAwMDM0Cis6MjA4NjQwMDAwODgwMEM4MDA5MDAxM0ZFMTI4MDM0ODg1MEZDOTA4MDEwODAxMDg0MTBGRTEwODAxMDgwMTA4MDEwODAxMDgwNDAKKzoyMDg2NjAwMDAxMDAwMTAwMTExMDExMTAxMTEwMjkxMDI1Mjg0NTQ0ODE4MDAxMDAzRkY4MDEwMDAxMDAwMTAwRkZGRTAwMDA0RAorOjIwODY4MDAwMDIwMDAxODAzRkZFMjE0MDI2OTAyNDg4MjQ5MDJBODgxMkE0MjBDMDRGRkM0MDgwNDA4MDgwODBCRkZFMDAwMEQzCis6MjA4NkEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwQkEKKzoyMDg2QzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA5QQorOjIwODZFMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDdBCis6MjA4NzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNTkKKzoyMDg3MjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzOQorOjIwODc0MDAwMDAwMDNGRjgwMDAwMDAwMDAwMDAwMDAwRkZGRTAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDA5MDAwNTAwMDIwMENGCis6MjA4NzYwMDAwMDAwN0ZGRTA0MjAwNDIwMDQyMDA0MjAwNDIwMDQyMDA0MjAwODIwMDgyMDEwMjAxMDIwMjAyMDQwMjAwMDAwMzAKKzoyMDg3ODAwMDAwMDA3RkZFMDQ0MDA0NDAwNDQwMDQ0MDA0NDAwNDQwMDQ0MDA0NDAwODQwMDg0MjEwNDIyMDNFNDAwMDAwMDBCQQorOjIwODdBMDAwMDAwNDdGRkUwMTAwMTEwMDExRkMxMTAwMTEwMDExMDQxRkZFMDAwNDAwMDQwMDA0MDAwNDAwNDgwMDMwMDAwMDNECis6MjA4N0MwMDAwODIwMDgyMDA4MjAwODIwMDgyMEZGRkUwODIwMDgyMDA4MjAwODIwMDgyMDA4MjAwODIwMEZFMDA4MjAwMDAwQTUKKzoyMDg3RTAwMDExMTAxMTEwMTExMDExMTAxMTEwMTExMEZGRkUxMTEwMTExMDExMTAxMTEwMjExMDIxMTA0MTEwODAxMDAwMDBFRgorOjIwODgwMDAwMDAwMDdGRkUwMDgwMDA4MDAxODAwM0UwMDZCMDBDOUMxODg2MzA4MjQwODAwMDgwMDA4MDdGRkUwMDAwMDAwMDhDCis6MjA4ODIwMDAwMDA4N0ZGQzAwMDAwMDEwMUZGODEwMTAxMDEwMUZGMDEwMTAxMDEwMUZGMDEwMTAwMDA0RkZGRTAwMDAwMDAwQ0YKKzoyMDg4NDAwMDAwMDAzRkY4MDAzMDAyQzAwMTEwN0QxODA1NjAwOTgwMDk0MDExMjAyMTE4NDUwRTgzMDAwMTA0RkZGRTAwMDBEMAorOjIwODg2MDAwN0ZGQzAwMDAxRkYwMTAxMDEwMTAxRkYwMDAwMDdGRkM0ODI0NDQ0NDVGRjQ0MTA0NDEwNDQxMDQ0MTE0NDAwOEYxCis6MjA4ODgwMDAwMDAwN0ZGQzAxMDAwMzIwMEQxODcxMTAxMTAwMTBGQzdFMDgxNDEwMjVGRTE0MTAwODEwMTQxMDIyNTA0MDIwNzcKKzoyMDg4QTAwMDAwMDAzRkZDMDEwMDNENzgyNTQ4MjU0ODNENzgwMTAwN0ZGRTAxMDAzRDc4MjU0ODI1NDgzRDc4MDEwMEZGRkU3NworOjIwODhDMDAwMDAwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDAwMDhBCis6MjA4OEUwMDAwMDAwM0ZGODIxMDgzRkY4MjEwODIxMDgzRkY4MDEwMDdGRkM0MTI0NDExNDVGRjQ0ODE0NDAwNDQwMTQ0MDA4OTMKKzoyMDg5MDAwMDAwODAwMEMwMDA4MDAwODAwMDgwMDA4MDAwODAwMTAwMDEwMDAxMDAwMjAwMDIwMDA0MDAxODAwNjAwMDAwMDAxNAorOjIwODkyMDAwMDAwMDEwMDAxMDAwMTAxMDEwMzgxMEMwMTMwMDFDMDAxMDAwMTAwMDEwMDAxMDA4MTAwODEwMDgwRkY4MDAwMDMxCis6MjA4OTQwMDAwMDAwMDAzMDAxRjg3RjAwMDEwMDAxMDAwMTFDMDdFMDc5MDAwMTAwMDEwMDAxMDQwMTA0MDEwNjAwRkMwMDAwRTEKKzoyMDg5NjAwMDAwMDAwMEY4N0YwMDAxMDAwMTAwMDEwMDdGRkUwMTAwMDEwMDAyODAwMjQwMDQyMDA4MTAxMDE4MjAwRTQwMDQ2NAorOjIwODk4MDAwMDAyMDE4MjAwNjQwMDE4MDA2NjAxODE4NjAwODA4MjAwNDIwMDQ0MDAyODAwMTAwMDJDMDBDMzAzMDFFQzAwNDk3Cis6MjA4OUEwMDAwMDc4MUY4MDEwMDAxMDAwMUZGRTEwMDAxMDAwMTdGMDE0MTAxNDEwMjQ1MDI0MjI0NDAyNDQwMjgzRkUwMDAwMkQKKzoyMDg5QzAwMDAwMDAwMEYwM0YwMDIxMDAyMTAwMjEwMDNGRkMyMTAwMjA4MDIwODAyMDgwMjA0MDI0NDAyQTI0MzE5NDIwOEM0NgorOjIwODlFMDAwMDEwMDAzMDAwNDAwM0ZGQzMwMjQyODM0MjQyNDIyNDQyMTg0MjE0NDIyMjQyNDM0MjgxQzMwMTQzRkZDMjAwNDQ3Cis6MjA4QTAwMDAyMjEwMjQ5MDJGOTAyMTEwMjIxMDJGRDAyMDEwMkZEMDI4NTAyRkQwMjg1MDJGRDI0ODUyNDk1Mjg4OEUwMDAwRTUKKzoyMDhBMjAwMDIxMDgyMDg4MjA1MDIzRkVGQzQwMjVGODI1MDgyNUY4MjUwODI1RjgyNTA4MjVGODQ0MDI0NDAyODNGRTAwMDA5MAorOjIwOEE0MDAwMjA0MDIwMjAzREZDNDAyMDdDNDBCNDg4MkRGQzI0MDRGRUE4MzRBODJDQTgzRUE4MDRBQTA1MkExNTJBMEEyNjBDCis6MjA4QTYwMDAwMjAwMDQwMDNGRjgyNDQ4MjQ0ODNGRjgwMTAwM0ZGODAxMDBGRkZFMDQ0MDNGRjgwMTAwN0ZGQzAxMDAwMTAwN0IKKzoyMDhBODAwMDA0ODAyNEEwMTRDMDI0QjQxODg0Njg3QzdGMjAwOEZDM0UyMDAwRkMzRTg0MjI0ODNFMzAxNDMwMTY0RTc5ODQyNgorOjIwOEFBMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNDAwMDMwMDAxODAwMEMwMDA2MDAwNDAwMDAwMDAwMDAwMDAwMDAwMDAwMENFCis6MjA4QUMwMDAwMDAwM0ZGQzAwMTgwMDYwMDA4MDNEN0MyNTQ0MjUyODI1MTAzRDE4MDEyQzAxNDQwNTAwMDIwMDdGRkUwMDAwNzQKKzoyMDhBRTAwMDdGRkMwNDA4MDgxRTBGRTIxNEFBNjY2NDA1MjAyN0U0MjAwNDNFN0MwMjQwN0U3QzEyNDQxMjQ0MjI0NDQyNDQ2RQorOjIwOEIwMDAwMDgwMDBDMDAwODAwMDgzODA5QzgxRTA4RTgwODA4MDgwODA4MDg3ODA4MTAwODA0MDgwNDA4MDYwN0ZDMDAwMDMxCis6MjA4QjIwMDAwODQwMDg0MDA4NDAwQTQwMEY0MDA4NDAwODQwNDk0MDdGNDA0MTQwNDE0MDQxNDQ0MTQ0N0Y0NjQxM0MwMDAwOUUKKzoyMDhCNDAwMDAwMTAzRkY4MDAwMDAwMDAwMDBDN0ZGRTA0MjAwNDIwMDQyMDA0MjAwODIwMDgyMDEwMjAyMDIwNDAyMDAwMDA5NQorOjIwOEI2MDAwMDkyMDA5MjAwOTIwNzkzQzA5MjAwOTIwMDEwMDNGRkMwMTAwMDEwMDdGRkUwMTAwMDEwMDAxMDAwMTAwMDEwMEIzCis6MjA4QjgwMDAwMTAwMDEwMDNGRkMwMTAwN0ZGRTQwMDQ4MDA4MUZGMDAwNDAwMDgwRkZGRTAxMDAwMTAwMDEwMDA1MDAwMjAwNzgKKzoyMDhCQTAwMDAxMDAwMTAwN0ZGQzExMTAwOTIwMDkyMDdGRkUwMDAwM0ZGODIwMDgyRkU4MjgyODJGRTgyMDA4M0ZGODIwMDhFNAorOjIwOEJDMDAwMjAwMDIzREMyMjQ0RkE0NDIyNDQyM0RDMjIwMEZCQkM4QTI0OEEyNDhCQTQ4QTE4RkExODhBMjQ4QTQyMDI4MjU3Cis6MjA4QkUwMDAwMDAwM0ZGRTIwODAyMDgwMjA4MDIwODAyMDgwMjE0MDIxNDAyMTIwMjIyMDIyMTA0NDE4NDgwRTkwMDQwMDAwNUIKKzoyMDhDMDAwMDAwMDAzRkZFMjEwMDIxMDAyRkZDMjI0MDI0NDAyRkZDMjQ0MDIwNDAyRkZFMjA0MDQwNDA0MDQwODA0MDAwMDBBOAorOjIwOEMyMDAwM0ZGRTIyMjAyMjIwMkZGQzIyMjAyMjIwM0ZGRTIwMDAyN0YwMjQxMDI0MTA0N0YwNDQxMDQ0MTA4N0YwMDAwMDkyCis6MjA4QzQwMDAwMDAwN0ZGQzQxMjA0MTEwN0ZGQzQ2NjA1ODE4NkZFRTQ5MjQ0RkUwNDkyMDRGRTA0OTIwNDEwMDQxMDA4MTAwNTkKKzoyMDhDNjAwMDAwMDA3RkZFNTEyMDRBMjA1RkJFNDQyMjU1NTQ1NTEwNTUxMDVGMTA1NTEwNDQyODQ4NDQ5MDg2QTEwNDAwMDAxRgorOjIwOEM4MDAwMDAwMDdGRkU0QTAwNEEwNjdGQjg0QTIwNEUzRTRBMjg0RTI4NEEyODdGQTg0QTQ4NDk0ODUwODhBMTA4MDAwMDZCCis6MjA4Q0EwMDAzRkZFMjBBMDIwOTAzRkZFMjE0MDIyMzAzRkZFMjA4MDJGRkMyOTI0MjlFNDI5MjQ0OUU0NDkyNDhGRkMwMDAwNDMKKzoyMDhDQzAwMDNGRkUyNTIwMkRGODJCMjAzREY4MjkyMDI5RkMyOTAwMkZGODI4ODgyODg4Mjg4ODQ5NDg0MjIwODQxODA4MTBGOAorOjIwOENFMDAwMDAwMDdGRkM0MDAwNDAwMDQwMDA0MDAwNDAwMDQwMDA0MDAwNDAwMDQwMDA0MDAwNDAwMDdGRkMwMDAwMDAwMEJFCis6MjA4RDAwMDAwMDAwN0ZGQzQwMDA0MDAwNDdGMDQ0MTA0NDEwNDQxMDQ0MTA0N0YwNDQxMDQwMDA0MDAwN0ZGRTQwMDAwMDAwMDkKKzoyMDhEMjAwMDAwMDA3RkZFNDgyMDQ4MjA3Rjc4NDgyODU0Mjg1RjI4NDQyODQ3NDg3QzRBNDQ4NjQ1MDA0MDAwN0ZGRTAwMDBFRgorOjIwOEQ0MDAwN0ZGQzQxMDA0RkUwNDkyMDRGRTA0MTAwN0ZGODQwMDA0RkUwNDkyMDQ5MjA0QUEwNDQ0MDQ4MjA3RkZDMDAwMDQ2Cis6MjA4RDYwMDA3RkZDNDA4MDRGRjg0ODA4NEZGODQ4MDA0RkY4NEQyODU3Rjg1NTI4NjUyODY1Mjg0NDE4NDAwMDdGRkUwMDAwRDcKKzoyMDhEODAwMDAwMjBGRkZFODgyMDg5RkM4ODIwQkZGRUE0MDBBNUZDQTUyNEJEMjQ4OTI0ODkyNDg4NTBGRTQ4MDA4NjAxMDQzMgorOjIwOERBMDAwMDgyMDA4MjAwODIwN0ZBMDA4MjAwODMwRkZBODA4MjQwODI2N0ZBNDA4MjAwODIwMDgyMDBGQTBGMDIwMDAyMDQxCis6MjA4REMwMDAwMTAwMDEwODAxRkMwMTAwMDEwMDdGRkM0MDA0NDAwNDdGQzQ0MDQ0NDA0NDdGQzQ0MDA0NDAwNDdGRkM0MDA0QjIKKzoyMDhERTAwMDAwMDgwMDA4MDA4ODAwODgwMDg4MDA4ODAwODgwMDg4MDA4ODAwODgwMDg4MDAwODAwMDgwMDA4MDAyODAwMTA0QgorOjIwOEUwMDAwMDAwNDAyMDQ4MzQ0NDI0NDI0NDQxNDQ0MDg0NDA4NDQxNDQ0MTY0NDIyNDQ0MzQ0ODIwNDAwMDQwMDE0MDAwODVFCis6MjA4RTIwMDAxMDAyMTgwMjEwOTIxRkQyMkE5MjRBOTI4QTkyMTI5MjEyOTIyNDkyQzQ5MjA4OTIzMDgyQzcwMjAyMEEwMDA0NDYKKzoyMDhFNDAwMDAwMDQ3RjA0MDIwNDA0MjQwQTI0MTFBNDYwQTRCRjI0MDgyNDA4MjQwODI0MDlBNDBFMDRGMDA0NDAxNDAwMDgwMAorOjIwOEU2MDAwMDQwNDA0MDQ3RkE0MEEyNDExMjQyMEE0NUYyNDgwMjQ3RkE0MDgyNDA4MjQxRjI0MDEwNDAxMDQwNTE0MDIwODg2Cis6MjA4RTgwMDAwNDA0MjQ4NDI0QTQyNEE0M0ZBNDEwMjQxRjI0MTEyNDIxMjQ1MTI0OEEyNDA2MDQwNDA0MTgxNDYwMDgwMDAwRjUKKzoyMDhFQTAwMDA4MDQ0OTA0NDkwNDQ5MjQ3RjI0MDAyNDdGMjQwMTI0MDEyNDNGMjQyMDI0MjAyNDIxMDQyNjA0NzgxNDIwMDhGRAorOjIwOEVDMDAwMDgwNDA5MDRGRjg0MDgyNDA4MjQ3RjI0NDkyNDQ5MjQ3RjI0NTkyNDFDMjQyQTA0MjkwNDQ5MDQ4ODE0MDgwODZECis6MjA4RUUwMDAwODA0MDgwNDdGQTQwQzI0MTIyNDIxMjRGRkE0MDEyNDNEMjQyNTI0MjUyNDNEMjQyMTA0MDEwNDA1MTQwMjA4MjMKKzoyMDhGMDAwMDA4MDQwOTA0MkEyNDI4MjQ0QzI0MTMyNDIyMjQ0NTI0MjUyNDI2MjQyNDI0NEEwNDExODQyMEQ0NDA4ODAwMDBDRQorOjIwOEYyMDAwMDgwNDA0NDQ3RkU0NDA0NEEwOTQzQkQ0MkE1NDJBNTQ0QTU0QUJENDFBOTQxMjQ0MTI4NDI3MTRDMjA4MDAwMEZCCis6MjA4RjQwMDAxMTAyMTEwMkZGRTIxMTEyN0JEMjRBNTI0QTUyN0JEMjRBNTI3QkQyNEE1MjRBNTI0QTUyNEE0MjRENEE5ODg0MTkKKzoyMDhGNjAwMDAwMDI3RkMyMEExMjdGOTI0QTkyNEE5MjdGOTI0MDkyM0YxMjAwMTI3RkQyMjQxMjM1MDI0NEMyOTQ4QTA4MDQ5NQorOjIwOEY4MDAwMDAwNDdGQzQ2MjE0NTQ5NDdFOTQ0OUY0NEE1NDZBOTQ2QTk0N0U5NDQ4OTQ0OTU0NTI2NEE0NDRDODE0MDAwODM2Cis6MjA4RkEwMDAyNDAyMzIwMjIyMTI3RkQyQTQxMjNGOTIyNDEyM0Y5MjI0MTIyNDEyM0ZEMjAwMTI1NDgyNEE0MjhBNEEwMDA0N0IKKzoyMDhGQzAwMDExMDZGRkUyMTUxMjIyMTI3RkQyQTIxMjNGRDIyMjEyM0ZEMjIyMTIzRkQyMTA5MjA5MDIwNjAyMTk4QTYwODQ2MgorOjIwOEZFMDAwMDgwNDdGMDQ0MTI0NzkyNDQ3MjQ0MTI0N0YyNDAwMjQ3RjI0NDkyNDdGMjQ0OTA0RkZDNDIyMTQyMjA4NDIwMEU0Cis6MjA5MDAwMDAwMDAwM0ZGQzIwMDQyMDA0MjAwNDIwMDQyMDA0MjAwNDIwMDQyMDA0MjAwNDIwMDQyMDA0MjAzQzIwMDgwMDAwMDUKKzoyMDkwMjAwMDdGRkM0MDA0NDgyNDQ0NDQ0Mjg0NUZGNDQyMDQ0MTA0NUZGNDQ4MDQ0ODA0NEZGNDQwMDQ0MDE0NDAwODAwMDBDQgorOjIwOTA0MDAwMDA4MDAwQzAwMTgwMDEwMDAzODAwMzAwMDUwMDA5MDAxMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMEEyCis6MjA5MDYwMDAwODAwMEMwMDFCRkUxMDIwMzAyMDMwMjA1MDIwOTAyMDEwMjAxMDIwMTAyMDEwMjAxMDIwMTBBMDEwNDAwMDAwRTMKKzoyMDkwODAwMDA4MDAwQzAwMTlGMDExMTAxMTEwMzExMDUxMTA5MTEwMTExMDExMTAxMTEwMTExMDEyMTIxMjEyMTQwRTEwMDAzMAorOjIwOTBBMDAwMDg0MDBDNDAxODQwMTA0NDM3RkUzMDQ0NTA0NDUwNDQ5MDQ0MTA0NDEwODQxMDg0MTEwNDExMDQxMjE0MTQwOEUzCis6MjA5MEMwMDAwODAwMDgwMDE3RkMxMDAwMjAwMDMwMDA1MDAwOTNGQzEwMDAxMDAwMTAwMDEwMDAxMDAwMUZGRTEwMDAwMDAwQjEKKzoyMDkwRTAwMDExMDAxOTA0MTNGRTMyMDAyNDAwNjdGOEE4MTAyMDIwMjA0MDIwODAyMTAwMjEwMjIyMDIyMjAyMjFGRTAwMDBEOQorOjIwOTEwMDAwMDg0MDBDNjAxODQwMTA4MDIwOTAzMTEwNTEyMDUyMjA5QzQwMTA1MDEwODgxMTA0MTI3RTE3QzYxMDAyMTAwMDY3Cis6MjA5MTIwMDAwODA0MERGRTE4NDQxMDQ0MTA0NDMyNDQ1MzQ0NTI0NDk0NDQxMDg0MTA4NDExMDQxMTQ4MTIyODE0MTAwMDAwQTUKKzoyMDkxNDAwMDEwMDAxRkZFMTQwODM0MEMyNTA4NjQ5MEE0NTAyNDIwMjQyMDI0NTAyNDQ4MjQ4QzI1MDgyN0ZFMjAwMDAwMDBFNworOjIwOTE2MDAwMTIyMDFBMjAxMjIwMTIyMDMyMjQyM0FFNjIzOEEyMjAyMjIwMjIyMDIyMjAyMjIwMjJBMjIzMjIyMjFFMDAwMDRCCis6MjA5MTgwMDAxMDAwMUJGQzEwMjAzMjIwMjMyMDYyMjBBN0ZFMjAyMDIwNjAyMEEwMjEyMDIyMjAyNDIwMjhBMDIwNDAwMDAwNEQKKzoyMDkxQTAwMDEwMDAxRkZFMTEwMDExMDAyMUYwMzExMDUxMTA5MjkwMTI1MDEyNTAxMjEwMTI1MjEyOTIxNzEyMTIwRTAwMDA1NAorOjIwOTFDMDAwMDkwMDA5MDAxMUZDMTIyMDMyMjA1NDIwOTAyMDE3RkUxMDIwMTAyMDEwMjAxMDIwMTAyMDEwMjAxMDIwMDAwMDYzCis6MjA5MUUwMDAxMTAwMTkxMDExMTgzMTMwMjE0MDYxODBBMTA0MkZGRTIxNDAyMTQwMjEyMDIxMTAyMTE4MjE0RTIxODQyMTAwRjUKKzoyMDkyMDAwMDEwODAxODgwMTE0MDIxMzAyMjFDNjQwOEFCRjAyMjEwMjIxMDIyMTAyMjcwMjIyMDIyMDgyMjA4MjFGODIwMDA0OAorOjIwOTIyMDAwMTEwMDE4QzAxMDQ0MzdGRTIwMDA2MUYwNjExMEExMTAyMTEwMjExMDIxMTAyMjE0MjIxNDI0MTYyODBDMDAwMEJDCis6MjA5MjQwMDAwODQwMEMzMDA4MjAxM0ZFMUEwMjM0MDQ1MDAwOTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMTdGRTEwMDAwMDAwQTgKKzoyMDkyNjAwMDA4MDAwQkY4MTAwMDEwMDQyN0ZFNjA4MEEwODQyRkZFMjEwODIxMDgyMzEwMjBFMDIwNTAyMTg4MjYwNDAwMDBBMQorOjIwOTI4MDAwMDg4MDBDODAxOEZDMTA4MDMwODA2MDgwQUZGRTIwODAyMEMwMjBCMDIwOTgyMDhDMjA4ODIwODAyMDgwMDAwMDNECis6MjA5MkEwMDAxMDgwMThDMDEwODAyNDgwMjVGRTI1MDg2Njg4QTQ4ODI0NTAyNDUwMjQyMDI0NTAyMDg4MjMwRTJDMDQyMDAwREYKKzoyMDkyQzAwMDEwNDAxQTQwMTI0ODEzRkMyNDQwMjQ0MDY4NDRBRkZFMjA0MDIwQTAyMEEwMjExMDIxMTAyMjA4MjQwRTI4MDQ5MAorOjIwOTJFMDAwMTEwMDE5MDQxMUZFMzIwNDIyMDQ2NDA0QUJFNDIyMjQyMjI0MjIyNDIzRTQyMjI0MjAwNDIwMTQyMDA4MDAwMDNGCis6MjA5MzAwMDAwOTAwMEQwMDE5RkMxMzA4MjUxMDY4OTBCMDQwMjBBMDIzMTgyQzhFMjA2NDIwMjAyMDgwMjA2MDIwMjAwMDAwMTEKKzoyMDkzMjAwMDA4ODAwQzQ0MUJGRTEyMDQzNDA4MzEwMDUxMDg5MTFDMTEzMDExQzAxMTAwMTEwNDExMDQxMTA0MTBGQzAwMDA0NQorOjIwOTM0MDAwMTAwMDFCRkMxMjA0MzIwNDIzRkM2MjAwQTI4MDIyODgyMjlDMjJFMDIyODAyMjgyMjQ4MjI0ODIyODdFMDAwMDU1Cis6MjA5MzYwMDAxMjAwMUEwMDEyMDAyMjNFM0ZBMjIyQTI2MkEyQTJBMjI0QTIyNEEyMjRBMjI4QTIyOEJFMzNBMjIxMjAwMDAwNEEKKzoyMDkzODAwMDA4NDAwQzQwMTg0NDE3RkUzMDQwMzA0ODUzRkM5MDAwMTAwMDEzRjgxMjA4MTIwODEyMDgxM0Y4MTIwODAwMDA3MworOjIwOTNBMDAwMDgwMDBGRkUxQTEwMTIxMDMzRjAyMjEwNjIxMEEzRjAyMjEwMjIxMDIyMTAyRkZFMjAxMDIwMTAyMDEwMDAwMDlGCis6MjA5M0MwMDAxMDgwMTg4MDEwODAyN0ZDMjEwMDYzRjhBMjA4MjYwODI3RjgyQTA4MzIwODIzRjgyMjA4MjIwODIyMjgyMjEwRTgKKzoyMDkzRTAwMDEwODAxODgwMTdGRTMxMjAyMjE4NjVFNkI4MDQyMDAwMjdGQzIxMDAyMTAwMjFGODIwMDgyMDA4MjAyODIwMTAzOAorOjIwOTQwMDAwMDgwMDBGRjgxQTA4MTIwODMyMDgyM0Y4NjAwMEEyNDgyMjQ4MjI0ODIyNDgyNDQ4MjQ0QTI4NEEzMDQ2MDAwMDYyCis6MjA5NDIwMDAwODQwMEM0MDFBNDgxM0ZDMzI0MDI0NDA2MDQ0QTdGRTIwRTAyMTYwMjE1MDIyNDgyNDQ2Mjg0NDIwNDAwMDAwNzYKKzoyMDk0NDAwMDA5MjAwREEwMDkxMDEyMTgzMjBFMjdGQzZBMDhBM0Y4MjIwODIyMDgyM0Y4MjIwODIyMDgyMjI4MjIxMDAwMDA0NAorOjIwOTQ2MDAwMTEyMDE5MjAxMTIwMTEyODI5MkMyNTMwNjUyMEEzMzAyNTI4MjkyNDIxMjAyMjIyMjIyMjI0MUUyODAwMDAwMDQ5Cis6MjA5NDgwMDAwODgwMDg0MDE3RkMxMjEwMjEyMDYwQzBBMEMwMjMzMDJDMEMyMTEwMjExMDIxMTAyMjEwMjIxMDI0MTAyODEwMTgKKzoyMDk0QTAwMDEwODAxODYwMTA0MDI3RkMyMjIwNjMxOEEyMEMyNTE0MjkxMDIwQTAyMEEwMjA0MDIwQTAyMTEwMjIwRTJDMDQyMworOjIwOTRDMDAwMTA0MDE4NDAxMDQ0MjdGRTI0ODQ2OEM4QTE0MDIxNEMyMzMwMjUyMDI5MTAyMTA4MjE2RTIxQzQyMTAwMDAwMEI2Cis6MjA5NEUwMDAwODgwMENDMDE5ODgxMjNDMzdFNjIyNDQ2MjQ4QTdGQzI0NDAyODQ0MkZGRTIwNDAyMDQwMjA0MDIwNDAwMDAwREMKKzoyMDk1MDAwMDEwNDAxODQwMTdGQzIwNDAyN0ZDNDA4MEFGRkUyMTEwMjExMDIzRkUyMjkwMjQ1MDI4NTAzMDEwMjA1MDIwMjA4RgorOjIwOTUyMDAwMTAwMDFGRkUxMEE4MzRBQzIyQTg2MkIwQTdGRTI0MDAyNDAwMjQwMDI0MDAyNDAwMjgwMDI4MDAzMDAwMDAwMEIxCis6MjA5NTQwMDAxMDAwMUZGRTEwMDAzMDAwMjdCQzc0QTRBNEE0MjZCNDI1QUMyNUFDMjRBNDI0QTQyNEE0MjZCNDI1MjgwMDAwNjAKKzoyMDk1NjAwMDEwNDAxODUwMTA0ODM3RkUyMDQwNjQ0OEEyNEMyMzUwMjI2MDIwRDAyMzQ4MkU0NjI0NDQyMTQwMjA4MDAwMDA3RgorOjIwOTU4MDAwMTAwMDFCRjgxMjQ4MjI0ODMzRjg2MjQ4QTI0ODIzRjgyMDQwMjA0MDI3RkMyMDQwMjA0MDIwNDAyRkZFMjAwMEJBCis6MjA5NUEwMDAwODAwMEZGODFBMDgxMjA4MzNGODYwMDBBN0ZDMjA0MDIwNDQyRkZFMjBBMDIwQjAyMTE4MjIwRTJDMDQwMDAwMTgKKzoyMDk1QzAwMDEwNDAxODQwMTNGODIyNDgyM0Y4NzI0OEEzRjgyMDAwMkZGRTIxMDAyM0Y4MjEwODIwMDgyMDA4MjAyODIwMTA4NAorOjIwOTVFMDAwMTAwODE3RkMxMDkwMjA2MDI3RkM2NDQ0QTQ0NDI3RkMyNDQ0MjQ0NDI3RkMyNDQ0MjQ0NDI0NTQyNDQ4MDAwMEEzCis6MjA5NjAwMDAwOTAwMEQ5MDFBMDgxN0ZDMzAwODIyMDA2M0Y4QTI0MDI0NDAyRkZFMjA0MDIwQTAyMTEwMjIxODI0MEMyODA4NUMKKzoyMDk2MjAwMDEwODAxODgwMTdGQzIwODAzN0Y4NjA4MEFGRkUyMTEwMjY0ODNCRjYyMDQwMjA0MDI3RkMyMDQwMjA0MDIwNDBDMAorOjIwOTY0MDAwMTA0MDEwNDAxRkZDMTA0MDIzRkMzMDQwNjdGQ0EwMDAyM0Y4MjIwODIzRjgyMjA4MjNGODIyMDgyMjI4MjIxMDIyCis6MjA5NjYwMDAxMTEwMTkxMDE3RkUyMTEwMjE1MDYwNDBBRkZFMjA4MDIxMDAyM0Y4MjYwODJBMDgyMjA4MjNGODIyMDgwMDAwRjEKKzoyMDk2ODAwMDExMjAxOTIwMzEyMDJGM0U2MTIwQTEyMDJGM0MyMTIwMjEyMDIxMjAzRjNFMjEyMDIxMjAyMTIwMjEyMDAwMDBCMQorOjIwOTZBMDAwMTA4MDE4ODAxMEZDMjA4MDM3Rjg2NDA4QTdGODI0MDgyN0Y4MjA4MDIwODAyRkZDMjA4MDIwODAyMDgwMjA4MDY2Cis6MjA5NkMwMDAxMTAwMTkwMDMxRkMyMzA4NkM5MEE4NjAyOTlFMkU0NDI4NTAyRkZDMjg0MDI4QTAyMTEwMjIwODJDMDYwMDAwNkIKKzoyMDk2RTAwMDEwMDAxQkY4MTI0ODIzRjgzMjQ4NjI0OEEzRjgyMDQwMkZGRTIwQzAyMTYwMjI1ODI0NEUyODQ0MjA0MDAwMDA2RAorOjIwOTcwMDAwMTAxODFCRTAxMDQwMjdGQzIxNjA2MzUwQTQ0RTI4ODQyMTAwM0ZGRTIyMTAyMUEwMjA2MDIxOTgyRTBDMDAwMDFECis6MjA5NzIwMDAwODQwMDg4MDE3RkMxNDQ0MzdGQzU0NDQ1NDg0OTdGQzE1NDQxMjQwMUZGRTEwNDAxMDQwMTA0MDEwNDAxMDQwNjAKKzoyMDk3NDAwMDEwMDAxRkZDMTQ0NDI0NDQzNUY0NjQ0NEE1RjQyNDA0MjVGNDI1MTQyNTE0MjVGNDI5MDQyODE0MzAwODAwMDA0NworOjIwOTc2MDAwMTA4MDE4NDQxN0ZFMzQwNDI4MDg2M0Y4QTIwODIzRjgyMjA4MjIwMDIzRjgyMjA4MjIwODIzRjgyMjA4MDAwMDYwCis6MjA5NzgwMDAxMDgwMTg2MDEwNDQyN0ZFMjQwNDY5MTBBMzA4MjQwNDJCRjgyMDQwMjA0MDIwNDAyMDQwMjA0MDI3RkMwMDAwQUUKKzoyMDk3QTAwMDEwMDAxQkZDMTIwNDIyMDQyM0ZDNjIyMEEyMjQyM0ZFMjIyMDIyMjAyM0ZDMjUwNDI1MDQyNTA0MjlGQzIwMDA1QgorOjIwOTdDMDAwMTA0MDFGRkMxMDQwMjI0ODJGRkU2MjA4QTAwMDIzRjgyMjQ4MjI0ODIyNDgyMkE4MjI5MDIxMTgyMjBDMjQwOEM1Cis6MjA5N0UwMDAxMDAwMUZGRTE0MDAyNUY4MzUwODY1RjhBNTA4MjVGODI0NDAyN0ZFMjQ5MDI0NjAyNDUwMjU4ODI3RkUwMDAwQTAKKzoyMDk4MDAwMDE0MjAxQzI0MTQyRTI3QjAyNDIyNjVBMkE2NUUyMDgwMjNGODIyMDgyMjA4MjNGODIyMDgyMjA4MjNGODIyMDhBNworOjIwOTgyMDAwMTAwMDFCRkMxMjA0MjNGQzMyMDQ2M0ZDQTEwMDIzRkMyNjQ0MkE0NDIyQTQyMzE0MjdGNDIyMDQyMDE0MDAwODI1Cis6MjA5ODQwMDAxMDAwMUJGODMyNDgyM0Y4MjI0ODYyNDhBM0Y4MjAwMDJGRkUyMjQ0MjI0NjIyMjgyMjMwMjI5ODI3MEUyMjA0RDUKKzoyMDk4NjAwMDExODAxOTA0MzNGRTI0QTQyQjI0NzE4NEE2NjQyODk0MjMzODI0OTAyMDQ4MjU2NDI1NEEyNTBBMjhGODAwMDA3OQorOjIwOTg4MDAwMTA0MDFBNDgxMTUwMjdGRTMwRTA2MTU4NjI0RUFENDQyMTAwMkZGRTIxMTAyMTEwMjBFMDIxOTgyRTA4MDAwMDg3Cis6MjA5OEEwMDAxMDQwMUE0ODExNEMzNDUwMjdGRTY4MDRBQkY4MjIxMDIyMTAyM0YwMjJBMDIwQTQyMTI0MjIyNDJDMUMwMDAwMTEKKzoyMDk4QzAwMDEwODAxODQwMTNGRTI0MDQyNDM4NjNDMEEyMDAyM0ZDMjIyMDIyMjQyRkZFMjEyMDIxOTgyMjBDMjQwNDAwMDAyMgorOjIwOThFMDAwMTBBMDE4RDAxMDkwMkVGRTIzOTA3MjkwQUFGRTJBOTAyNDkwMkFGRTJBOTAzMjkwMjA5MDIwRkUyMDgwMDAwMDI3Cis6MjA5OTAwMDAxMjAwMUJCQzE0QTQyNkE4MkE5MDc1MTBBMjA4MjdGRTI4MDQzN0ZDMjA0MDIyNTAyMzQ4MjI0QzI1NDgyMDgwQjMKKzoyMDk5MjAwMDEwNDAxRkZDMTA0MDM3RkMyMDAwNjNGOEEyMDgyM0Y4MjExMDJGRkUyMDAwMjNGODIyMDgyM0Y4MjIwODAwMDBGMQorOjIwOTk0MDAwMTUxMDE1MTgyRkQwMjUyMDY1M0VBRkM0MjhBNDM2QTQyQUE4MkE4ODJFOTAyMDkwMjBBODI1NDYyMjg0MDAwMEVBCis6MjA5OTYwMDAxMDAwMUY3QzEyMTAyQTUwMkZGRTY1MThBNUFBMjk0RTMwMDAyN0Y4MjQwODI3RjgyNDA4MjdGODI0MDgwMDAwMUYKKzoyMDk5ODAwMDExNDAxOTIwMTNGQzIyNDAyNjQwNkJGQ0EyNDAyM0ZDMjI0MDIyNDAyM0ZDMjAwMDI1NDgyNEE0MjhBNDAwMDBGQQorOjIwOTlBMDAwMTAyMDE0MzAxMjI4MkZBQzIwMjg2RjdDQTkyMDI5MjAyRjUwMjI1MDJCNTAyQUQwMzI1MjJBOTIyNTBFMDAwMDAwCis6MjA5OUMwMDAxMDgwMTg0MDE3RkMyMTEwMkZGRTYwMDBBN0Y4MjQ0ODI3RjgyNDQ4MjdGODIwNDAyRkZDMjA0MDNGRkUyMDAwRDEKKzoyMDk5RTAwMDE3RkMxNEE0MjRBNDI3RkM3MDAwQUZGRTIwMDAyM0Y4MjIwODIzRjgyMTQ0MjMyODJEMTAzMTRFMjM4NDIxMDBFMAorOjIwOUEwMDAwMTEwMDE5RjgxMjEwMjdGRTc0OTBBNTQ4MjYyNDI1RkUyNDAwMjVGQzI0MDAyNUZDMjQwMDI5RkMyOTA0MzFGQzUyCis6MjA5QTIwMDAwMTAwMDEwMDAyODAwNDQwMDgyMDEwMTgyMDBFQzAwNDNGRjgwMTAwMDEwMDAxMDAwMTAwMDEwNDdGRkUwMDAwNUYKKzoyMDlBNDAwMDAxMDAwMTAwMDI4MDA0NjAxODE4NjEwRTAxMTA3RDIwMDVDMDA1NDAwOTIwMDkxODExMEU2MTA0MDUwMDAyMDBGMgorOjIwOUE2MDAwMDEwMDAxMDAwMjgwMDQ2MDA4MTgxN0VFNjAwNDAwMDAxRkY4MDA4MDA4QTAwQzk4MTg4QzEwODgyMjgwMDEwMEIzCis6MjA5QTgwMDAwMTAwMDEwMDAyODAwNDQwMDgyMDEwMTgyRkVFNDAwNDAyMTAxMTE4MDk5MDBEQTAwOTIwMDA0MDdGRkMwMDAwRTgKKzoyMDlBQTAwMDEwMDAxMUY4MTEwODI5MDgyNTA4NDVGODgxMDgxMTA4MTEwODExRjgyOTA4MjUwODQ1MDg4M0ZFMDAwMDAwMDBFOQorOjIwOUFDMDAwMDEwMDAyQzAwQzMwNzdFRTAwMDAzQkI4MkFBODNCQjgwMDAwM0ZGQzIyNDQzRkZDMjI0NDIyNDQyMjU0MjAwODI0Cis6MjA5QUUwMDAwMjAwMDEwMDAyODAwNDQwMDkzMDMxMEVDMTEwN0QyMDA1QzAwOTQwMDkyMDExMTAyMTA4QzEwRTA1MDQwMjAwNUMKKzoyMDlCMDAwMDA2MDAwMTgwMDI0MDA0MjAxOTE4MjEwRUM5MjQwNTQwN0ZGQzAzODAwNTQwMDkyMDMxMThDMTBFMDEwNDAxMDAzQworOjIwOUIyMDAwMDRDMDA2ODAwQzQwMDgyMDEwMTAyMDBFNUZGNDg0MDAwODIwMUZGMDA4MjAwMDIwMDAyMDAyMjAwMTQwMDA4MEMwCis6MjA5QjQwMDAzRUY4MjI4ODNFODgyMEY4MjI4NDNFRkMwNDQwMDQ0MDNGRkMwNDQwRkZGRTA0MjAwRTEwMTgxODIwMEM0MDA4N0QKKzoyMDlCNjAwMDIyMDgxMTEwN0ZGRTQ0NDIxRkY4MDQ0MDdGRkUwMTAwMUZGMDExMTAxRkYwMTExMDFGRjAwNDQwMDgzMDMwMTA5MworOjIwOUI4MDAwODQxMDQ0MTg0ODE0RkVGRTEwMTA3REQyNDU1MjdENTQ0NUQ0NDQwODdDQzg0NzE4NDQyQTdDNDYwMDgyMDAwMEVDCis6MjA5QkEwMDA0NDAwMjVGQzI5MDQ3REZDNTU1NDdENTA1NUZDNTU1MDdERkUxMTY0RkQ2QzEyNTAxMjQ4MTRFNjE4NDQxMDAwQjMKKzoyMDlCQzAwMDA4MjBGRkZFMEEyMDE3QkM1NEE0NUVCQzU1QTA1Q0EyRjc5RTE0MDgyN0Y2Q0MyNDEyMjAyMUMwMEUzMDcwMEVEMQorOjIwOUJFMDAwMDAwMDA4MDAwODAwMEZGQzEwMDQyMDA0NDAwNDAwMDQwMDA0MDAwNDAwMDQwMDA0MDAwNDAwMTQwMDA4MDAwMDlBCis6MjA5QzAwMDAxMDAwMTAwMDFGRkMyMjQ0NUZGNDgyMDQxRkU0MTIyNDFGRTQxMjI0MUZFNDEyMjQxMkE0MTI0NDAwMTQwMDA4RjcKKzoyMDlDMjAwMDEwMDAxMDAwMUZGQzIxMDQzRkY0NDAwNDlGRTQwMDA0MUZFNDAwMDQxRkU0MTAyNDFGRTQxMDA0MDAxNDAwMDg1NQorOjIwOUM0MDAwMDgwMDA4MDAxRkZDMTAwNDJGRTQ0MDA0OUZFNDEwMjQxRkU0MDAwNDNGRTQyMjI0M0ZFNDIyMjQzRkY0MDAwOEEzCis6MjA5QzYwMDAwMTAwMDIwMDFGRjAxMjEwMTE5MDEwQTAxMDAwMUZGQzAwMDQwN0Q0MDQ0ODA0NDAwODQ0MDg0NDEwM0MyMDAwQzEKKzoyMDlDODAwMDAwMDAzRkY4MjAwODIwMDgzRkY4MjIwODIzQzgyNDQ4MkE0ODMxNDgyMDg4MjEwQTQyMEE0NDA2OTgwMjAwMDA5NworOjIwOUNBMDAwMDAwMDNFN0MyMjQ0MjI0NDIyNDQyM0M0MjAwNDNGRkMyNDQ0MDQ0MDA0NDAwODQwMDg0MjEwNDIyMDNFNDAwMDAwCis6MjA5Q0MwMDAwMDAwMDAwMDAwMDAwNDAwMDIwMDAxMDAwMTAwMDAwMEZGRkUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwN0YKKzoyMDlDRTAwMDAyMDAwMTgwN0ZGRTA4MjAwQzE4MTIwQzYzMjgwNDEwMUZGODBBNTAwMjQwMDQ0NDA0NDQwODQ0MTAzQzIwMDA2MAorOjIwOUQwMDAwMDIwMDAxMDg3RkZDMDgyMDBGRTAwMDA0N0ZGRTQwMDQ4MEYwMUYwMDAxMDAwMUY4M0YwMDAxMDQwMTA0MDBGQzEzCis6MjA5RDIwMDAwMTAwMDA4MDdGRkUwNDIwMDkxODEyNEUyNDI0MEZGMDAyMjAwNTBDMDhCMDM4NDBDODMwMEEwRTBDMDQwODAwQUUKKzoyMDlENDAwMDAxMDA3RkZDMDAwMDFGRjAwMDIwN0ZGQzAyODgwQzkwMzI4MEMxMDAwMzA4MEM5MDM4NjBDQTEwMEMwRTA4MDQwNQorOjIwOUQ2MDAwMDEwMDAwODRGRkZFMDg0MDdERjAwOTUwMUM5MjY5NEEyQTA2MTEyMDA3NzAwQ0MwMzQzMEM1OUUwRTA0MDQwMDcxCis6MjA5RDgwMDAwMTAwMDA4MDdGRkUwNDQwMTQ1MDI0NEM0NDQ0ODU0MDNGRjgyMjg4MjU0ODI5MDgyMjg4MjQ2ODI4NDgyMDE4MDMKKzoyMDlEQTAwMDAyMDAwMTAwRkZGRTAyMDAxQ0YwMTAxMDFFRjAxMDEwMUZGMDAzMEMwQ0IwMzg0MEM4MjAwQTE4MEMwRTA4MDRDNQorOjIwOURDMDAwMDEwMDdGRkUwMDAwMUZGODEyNDgxM0M4MTAwODFGRjgwMDAwMUZGODAwMDA3RkZFMDg5MDEwODgyMDg0MDE4MEExCis6MjA5REUwMDAwMjAwRkZGRTIwMDAzRkY4MDAwMDNGRjgyMDA4M0ZGODAyMDA3QTNDNEZBNDdBQjQ0QUFDNzkyNDRBQTQ5QzQ2M0IKKzoyMDlFMDAwMDAxMDA3RkZDMTAwMDFGRjgwMDAwM0ZGODIwMDgzRkY4MDEwMDcxMUM1N0Q0NzU1QzU3RDQ3MTE0NTFENEI2MjZDRQorOjIwOUUyMDAwMDEwMEZGRkUyMDAwM0ZGODAwMDAzRkY4MjAwODNGRjgwMjgwN0ZGQzQ5MjQ3QkI0NDkyQzdGRTQ0OTI2OTk0MjdDCis6MjA5RTQwMDA4MDAwNDAwMDMwMDAxNDAwMDQwMDA0MDAwODAwMDgwMDEwMDBGMDAwMjAwMDIwMDAyMDAwMjAwMDIwMDAwMDAwNDYKKzoyMDlFNjAwMDAwMDA0RkZFMjEwMDIxMDAxMTA4MTFGQzEyMDgyMjA4MjIwOEM3RjA0MjEwNDAxMDQwMTA0MDE0NUZGRTAwMDA2NQorOjIwOUU4MDAwMDAwNDBGQzQwMjA0MjIxNDEzOTQxNDk0MDQ5NDI4OTQyNDk0QzMxNDQxMTQ0MjA0NDQwNDA4MTQxMDA4MDAwMDY2Cis6MjA5RUEwMDAwMDQwMDI0MDQyNDAyM0ZDMzQ0MDI4NDAwMDQ0MTdGRTExMjAxMTIwRTEyMDIyMjIyMjIyNjQyMjI4MUUwMDAwOTMKKzoyMDlFQzAwMDA0MDA4NDA4NDQyODY0Mjg0RjI4MjQ0NDJFNDQ0REEyNTRCMkQ1MjA2NDQwNDQ0ODQ0ODQ0NUZDNDQ4NDAwMDBCRQorOjIwOUVFMDAwNDAwNDdGRkU0MDA0ODAwODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEQ1Cis6MjA5RjAwMDAwMDA0N0ZGRTQwMDQ4MDA4M0ZGODA0MDAwQTA4MTMxMDM0QTA0OUMwMTZDMDI0QTA0ODkwMTA4RTIyODQwMTAwRjAKKzoyMDlGMjAwMDAwMDQzRkZFMjAwNDVGRjAxMDEwMUZGMDEwMTAxRkYwMDIwMDAxMDRGRkZFMDg0MDBDMzAxODE4MzAwQzQwMDhEMworOjIwOUY0MDAwMDAwMDEwMDAwQzAwMDgwMDAwMDA3ODAwMDgwMDA4MDAwODAwMDgwMDA4MDAwODAwMEEwMDBDMDAwODAwMDAwMDE3Cis6MjA5RjYwMDA0MDAwMjAwMDMxRkUyMDIwMDAyMDAwMjBGMDIwMTNGRTEwMjAxMDIwMTAyMDEwMjAxNDIwMTgyMDEwMjAwMDIwMzUKKzoyMDlGODAwMDQwMDAyMDAwMzNGQzIwMjAwMDIwMDAyMEUwMjAyMDIwMjAyMDIwMjAyMDIwMjQyMDI4MjAzN0ZFMjAwMDAwMDBEMQorOjIwOUZBMDAwNDAyMDIwMjAzMDIwMjAyMDAyMjIwMjIyRTIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMkJGRTMyMDIyMDAwMDAwMDU0Cis6MjA5RkMwMDA0MDAwMjNGRTMyMDAyMzA0MDI4NEUyNDgyMjI4MjIxMDIyMjgyMjI4MjI0NDIyODYyQjA0MzIwMDIzRkUwMDAwNzcKKzoyMDlGRTAwMDQwMDAyM0ZDMzIwMDIyMDAwMjAwMDNGOEUyMDgyMjA4MjIwODIzRjgyMjAwMjIwMDJBMDAzMjAwMjNGRTAwMDA5NworOjIwQTAwMDAwNDAyMDIwMjAzMDIwMjNGRTAyMjJGMjIyMTIyMjEyNTIxMjRBMTI4RTEzMEExMjAyMTYwMjFBMDIxMjBBMDIwNERDCis6MjBBMDIwMDA0MDIwMjAyMDMwMjAyM0ZFMDAyMDAwMjBGMDIwMTAyMDExRkMxMTA0MTEwNDExMDQxNTA0MTlGQzExMDQwMDAwMDAKKzoyMEEwNDAwMDQwMDAyN0ZFMzAwODIwMDgwMDA4RTNDODIyNDgyMjQ4MjI0ODIzQzgyMjQ4MjAwODI4MDgzMDQ4MjAyODAwMTBDRAorOjIwQTA2MDAwNDAxQzIzRTAzMjIwMjIyMDAyMjBGMjIwMTNGRTEyMjAxMjIwMTIyMDEyMTAxMjEyMTZBQTFCMkExMjI0MDAwMDkxCis6MjBBMDgwMDA0MDAwMjNGQzMwODQyMDg0MDEwNEYxMDQxMjI4MTQxMDExRkMxMTA0MTEwNDExMDQxNTA0MTlGQzExMDQwMDAwMjIKKzoyMEEwQTAwMDQwMjAyMDIwMzAyMDIxMjQwMTI0RjEyNDExRkMxMTI0MTAyMDEyMjIxMjIyMTYyMjFBMjIxM0ZFMDIwMjAwMDBDRQorOjIwQTBDMDAwMDA0MDQwNDAzMDgwMTExMDAyMDgwN0ZDRjAwNDEwMDAxM0Y4MTIwODEyMDgxMjA4MTYwODFBMDgxM0Y4MDIwODMwCis6MjBBMEUwMDA0MDAwMjNGRTMyMDAyMjAwMDJGQzAyMjBFMjIwMjJGQzIyMjAyMjIwMjNGRTIyMDAyQTAwMzNGRTIyMDAwMDAwMjcKKzoyMEExMDAwMDQwNDAyMDQwMzdGQzIwNDAwMDQwMDNGQ0UwNDAyRkZFMjBFMDIwRTAyMTUwMjE0ODJBNDYzMjQ0MjQ0MDAwNDBEQworOjIwQTEyMDAwNDA0MDIwNDAzMDQwMjNGODAwNDAwMDQwRTdGQzIwNDAyMDQwMjNGQzIwNDAyMDQwMjg0MDM3RkUyMDAwMDAwMEY1Cis6MjBBMTQwMDA0MDIwMjAyMDM3RkUyMDIwMDAyMDAwMjBGM0ZFMTAwMDEwMDAxMUZDMTEwNDExMDQxNTA0MTlGQzExMDQwMDAwMUYKKzoyMEExNjAwMDQwODAyMDgwMzA4MDJGRkUwMTAwRTEyMDIxMjQyMkE0MjJBODI0MjAyNDUwMjg1MDMwODgyMTA4MDIwNjA0MDRBQQorOjIwQTE4MDAwNDA0MDIyNDAxMjQwMTNGQzAyNDAwNDQwRjdGRTEwQTAxMEEwMTBBMDEwQTAxMEE0MTUyNDE5MjQxMjFDMDQwMEU1Cis6MjBBMUEwMDA0MDA0MjAzRTMzQzAyMjAwMDIwMDAzRkVFMjAwMjIwMDIyRkMyMjg0MjI4NDJBODQzNDg0MjRGQzA4ODQxMDAwNTUKKzoyMEExQzAwMDQwNDAyMDQwMzBBMDIxMTAwMjBFMDQwNEUzRjgyMDQwMjA0MDIzRkMyMDQwMjA0MDI4NDAzN0ZFMjAwMDAwMDA0RgorOjIwQTFFMDAwNDEwMDIxRjgzMjEwMjQyMDAzRjgwMDQ4RTA0ODJGRkUyMDQ4MjA0ODIzRjgyMDQwMjg0MDMwNDAyMTQwMDA4MEUzCis6MjBBMjAwMDA0MDAwMjNGRTMyMDQyNDQwMDNGQ0UwNDAyMEEwMjEyMDIzRkMyMDIwMjAyMDJCRkUzMDIwMjAyMDAwMjAwMDIwOEIKKzoyMEEyMjAwMDQwMDAzN0JFMjA4MjAwQTIwNDkyRjI5MjEyODIxMDgyMTE4QTEyOTIxNEEyMTA4MjE0ODIxQjhFMTEwNDAwMDA4QQorOjIwQTI0MDAwMDAyMDIyMjQxMUE2MTkyODEwMjAwMUZDRjEwNDExRkMxMTA0MTEwNDExRkMxMTA0MTUwNDE5MDQxMTE0MDEwOEMxCis6MjBBMjYwMDA0MDQwMjI0MDMyNDAyM0ZDMDQ0MEYwNDAxMDQwMTdGRTEwMDAxM0Y4MTIwODEyMDgxMjA4MTYwODFCRjgxMjA4REUKKzoyMEEyODAwMDAwMDA0MDgwMjhGRTI0OTAwMzEwMDUxMEU5MTAyMzdFMjI5MDI0OTAyODkwMjA5MDI4OTAzNTEwMjJGRTAwMDA3NworOjIwQTJBMDAwNDA4MDIwRDAzMTA4MjNGQzAwMDgwMjAwRTNGODI0NDAyODQwMkZGRTIwNDAyMEEwMjkxMDMyMDgyNDBFMDgwNEU3Cis6MjBBMkMwMDAwMDAwOUZFMDY0ODAyNEJFMDRBNEU3QTQyNEE0MjRBNDI3QTQyNDk4MjREODJEOTgzNkE0MjhBNjAwQzQwMDgwNDIKKzoyMEEyRTAwMDQwMDAyRkZFMTA2MDAwQzAwMTA4RTI4QzJDOTAzMkUwMjMyMDJENzAyMEE4MjkyNDMyMjYyQzI0MDBBMDAwNDBGRgorOjIwQTMwMDAwNDAzODI3QzAzMDQwMkZGRTAwQzAwMTYwRTI1ODI0NDYyMDgwMjdGRTIxMTAyQjkwMzA2MDIwOTgwMzBDMEMwNDY0Cis6MjBBMzIwMDA0MDQwMjFDMDM2NUMyNDQ0MDQ0NEU3NUMyNDQ0MjQ0NDI3RkMyMDQwMjBBMDI4QTAzMTEwMjIwODA0MDYwODA0REIKKzoyMEEzNDAwMDQwNDAyMDQwMzBBMDIxMTAwMjhFRTQ0NDJCRjgyMDEwMjAyMDIwODAyMDY4MjU0NDJEMEEzNTBBMjhGODAwMDBBQQorOjIwQTM2MDAwNDEwMDIxMDAzMUZDMjIwODAyMTAwNDgwRTMzQzIyMDQyMjA0MjNCQzIyMDQyMjA0MkEwNDMzRkMyMjA0MDAwMDc1Cis6MjBBMzgwMDA0MDgwMzA0MDI3RkUwMTEwMDExMEUxMTAzMkE4MjQ0NDI4MDIyMDQwMjdGRTI4NDAzMDQwMjA0MDAwNDAwMDQwQUMKKzoyMEEzQTAwMDQxMTAyMTEwMzdGRTIxMTAwMUYwRTExMDIxRjAyMTEwMkZGRTIyMDAyMjkwMjI4ODJCMDgzMjAwMjNGRTAwMDA2MAorOjIwQTNDMDAwNDA0MDIwNDAzRkZFMjA0MDA3RkMwNDQ0RTU1NDI0RTQyN0ZDMjBFODI1NjAyOTUwMzI0ODI0NDYwODQ0MDA0MERCCis6MjBBM0UwMDA0MDQwMjA3QzMwNDAyM0ZFMDI0NEUzRjAyMjQ0MjIzQzIyMDAyMkZDMjI4MDJCRkUzNDgwMjQ4MDA4RkMxMDAwNUMKKzoyMEE0MDAwMDQwMDAzM0ZDMjIwNDAzRkMwMjA0RTNGQzIxMDAyM0ZDMjY0NDJBNDQyMkE0MjMxNDJCRjQzMDA0MjAxNDAwMDgxRgorOjIwQTQyMDAwNDAwMDI3QkMzNEE0MjdCQzAwMDBFM0Y4MjAwMDIwMDAyRkZFMjEwMDIzRjgyMTA4MjgwODMwMDgyMDUwMDAyMDk5Cis6MjBBNDQwMDA0MDQwMjA0MDMwQTAyMTE4MDdGNkU4MDAyNzg0MjQ4NDI3QTQyNEE0MjRBNDI3QTQyQ0E0MzQ4NDI0OTQwNTg4RTgKKzoyMEE0NjAwMDQwMUMyM0U0MzI0NjIxMjgwM0ZDRTA4MDIwODAyN0ZFMjA4MDIwRjgyMTg4Mjk1MDMyMjAyNDUwMTg4RTAzMDQ0NworOjIwQTQ4MDAwNDA4MDIwNDAzN0ZDMjIwODAxMTBGMEEwMTdGRTEwMDAxM0Y4MTIwODEyMDgxM0Y4MTYwODFBMDgxM0Y4MDIwOERBCis6MjBBNEEwMDA0MDgwMjA0MDM3RkUyMjA4MDExMDA3RkVFNDQ0MjA0MDIzRjgyMjQ4MjI0ODIyNDgyQTQ4MzI1ODIwNDAwMDQwOEEKKzoyMEE0QzAwMDQwNDAyODQwMzQ3QzIyODQwMkE4MEYyMEU0NTAyNDg4MjUwNjIzRkMyMTA4MjEwODI5MDgzMUY4MjEwODAwMDA2NgorOjIwQTRFMDAwNDA0MDIwMjAzM0ZDMjIwNDAzRkMwMjAwRTIwMDIzRkMyMzU0MjM1NDI1RkMyRDU0MzU1NDI5NTQxMTBDMDAwMDkyCis6MjBBNTAwMDA0MTEwMjExMDM3RkUyMTEwMDNGODAyMDhFM0Y4MjIwODIzRjgyMDQwMjdGRTIwNDAyOEEwMzExMDIyMEUwNDA0MDgKKzoyMEE1MjAwMDQwNDAyMjQ4MzE1MDI3RkUwNDA0RTgwMDIzRjgyMjA4MjIwODIzRjgyMTIwMjEyMDJBMjQzMjI0MjQxQzA4MDBBMworOjIwQTU0MDAwNDdGQzM0NDQyN0ZDMDQ0NDA3RkNFMTEwMjIwODI0ODYyOEZDMjE4ODIyODgyNDUwMjgyMDMwRDAyMzBFMEMwNDk5Cis6MjBBNTYwMDA0MjA4MjE4QzMxMTAyMDIwMDdGRTAxMTBFMjA4MjQwNDJCRkUyMkE4MjJBODIyQTgyQUE4MzJBODJGRkUwMDAwREIKKzoyMEE1ODAwMDQwMDgyMDhDMzE2ODI1NTAwNTI0MDk0QUUxODgyMkY4MkMwMDIxRkMyMTU0MjE1NDI5NTQzMTU0MjdGRTAwMDA2MAorOjIwQTVBMDAwNDA0MDIwMjAzN0ZFMjEwNDAwODhFM0ZFMjIyMjIzRkUyMjIyMjJGQTIyOEEyQUZBMzI4QTIyMDIwMjBBMDIwNDkxCis6MjBBNUMwMDA0MjA4MzExMDI3RkUwMDA0MDNDNEUyNTQyM0Q0MjI1NDIzNTQyMjg4MjdGQzI4ODQzMDg0MjEwNDAyMjgwNDEwNTYKKzoyMEE1RTAwMDAwMDA4RkZFNkE1MDRBNTAxRkZFMDUxMEU1MkEyOUNDMzEwMDIzRjgyMjA4MjNGODJBMDgzMjA4MjNGODAyMDgyMgorOjIwQTYwMDAwNDI0MDIyMjAzM0ZFMjYyMDA2MjAwQkZDRTIyMDIzRkMyMjIwMjIyMDIzRkUyMDAwMkFBNDMyNTIyNDUyMDAwMDI0Cis6MjBBNjIwMDA0M0ZDMjA4ODMwNjAyN0ZFMDBBNDAxMjhFNjYwMkJGQzIyOTQyMzBDMjJGNDIyOTQyQUY0MzIwNDIyMTQwMjA4RkYKKzoyMEE2NDAwMDAyMDg0MjA4MkZDQzIyMEEwRkJFRTg4ODJEODgyQTg4MkY4ODJBODgyQTg4MkE5NDI4OTQzQUEyMjk0MjAwMDBGRgorOjIwQTY2MDAwNDEwMDIxRkMzMjA4MjdGRTBBOTAwMzI4RTNGRTIyMDAyMkY4MjIwMDIyRjgyQTAwMzVGQzI1MDQwOUZDMTAwMDY2Cis6MjBBNjgwMDA0MjUwMjI1ODMyQjQyNTE0MDAxMEVGRkUyNTEwMkRENDI1MTYyREQ0MjUxNDJERDgzNTFBMjVENjFFMjIwMDQwMTgKKzoyMEE2QTAwMDAwMDAwN0UwMDQyMDA0MjAwNDIwMDQyMDA0MjAwNDIwMDQyMDA0MjAwNEUwMDQ0MDA0MDAwNDAwMDQwMDA0MDA1QgorOjIwQTZDMDAwMUZFMDAwNDAwMDkwM0QzODA1QzAwOTYwMTUxODAyMDY1RkY4MDAwMDBGRjAwODEwMDg1MDA4MjQwODA0MDdGQ0QyCis6MjBBNkUwMDAwMDAwN0YwMDQyMDA0NDAwNDQwMDQ4MDA0NDAwNDIwMDQxMDA0MTAwNDEwMDRBMDA0NDAwNDAwMDQwMDAwMDAwNzIKKzoyMEE3MDAwMDAwMDA3QkZFNDg5MDUwOTA2MDkwNTA5MDQ4OTA0NDkwNDQ5MDc0OTA0OTEwNDExMjQyMTI0NDEyNDgwRTQwMDBDOAorOjIwQTcyMDAwMDAwMDc4MUM0OEUwNDgyMDUwMjA1MDIwNDgyMDQ1RkU0NDIwNzQyMDQ4MjA0MDIwNDAyMDQwMjA0MDIwNDAyMDJBCis6MjBBNzQwMDAwMTEwN0QxMDQ5MTA1MTEwNjdGQzUxMTA0OTEwNDkxMDRGRkU2OTEwNTExMDQxMTA0MjEwNDIxMDQ0MTA0ODEwNjMKKzoyMEE3NjAwMDAwMDA3QkZDNEEwMDUyMDA2MjAwNTNGODUzMDg0QTkwNEE5MDZBNTA1NDIwNDQ2MDQ4OTA1MzBFNEMwNDQwMDA2RgorOjIwQTc4MDAwMDA0MDdDNDA0NDQwNDg3RTUwNDA1MDQwNDg0MDRCRjg0QTA4NkEwODUyMDg0MjA4NDIwODQzRjg0MjA4NDAwMDExCis6MjBBN0EwMDAwMDgwN0M4MDQ1MDA0OUZFNTI4MDU0ODA0OEZDNDQ4MDQ0ODA1NDgwNDhGRTQwODA0MDgwNDA4MDQwODA0MDgwNDUKKzoyMEE3QzAwMDAwMDA3ODIwNEJGRTRBMjQ1MjI4NjIyMDUzRkM0QTg4NEE4ODRBNTA2QTUwNTIyMDQ0NTA0NDg4NEIwRTQwMDQ3OAorOjIwQTdFMDAwMDAwMDdCRkM0ODA4NTAxMDYwMjA1MDUwNDk4QzRFMDY0ODA0NkJGODUwNDA0MDQwNDA0MDQwNDA0RkZFNDAwMDlECis6MjBBODAwMDAwMDgwRjg0MDg4NDA5N0ZFQTA4MEExMDg5MjEwOEJFMDg4NDhBODkwOTMyMDhDNTA4MDg4ODMwQzlDMDQ4MDAwRkYKKzoyMEE4MjAwMDc4NDA0ODQwNTI3ODUyNDA2MjQwNTdGRTQ4NDA0ODQwNkE0ODUyNDg0NDUwNDAyMDQwNDA0MTgwNEUwMDQwMDA2NgorOjIwQTg0MDAwMDAwMDdCRjg0QTA4NTIwODUzRjg2MjA4NTIwODRCRjg0ODQwNjg0MDUzRjg0MDQwNDA0MDQwNDA0N0ZFNDAwMDA3Cis6MjBBODYwMDAwMDAwRkZFMDk0ODA5NEZDQTdBNEE0QTQ5NEE4OTdBOEQ0QThBNDkwODVEMDhFQTg4MEFFODBDNDgwODA4MDgwOUEKKzoyMEE4ODAwMDc4M0M0QkMwNTA0MDU3RkU2MTUwNTE1MDQ5NTA0RkZFNDk1MDY5NTA1MTUwNDdGRTQwNDA0MDQwNDNGQzQwMDAyNQorOjIwQThBMDAwMDA0MDc4ODA0QkY4NTI0ODUzRjg2MjQ4NTI0ODRCRjg0OEEwNjkyMDU3RkU0MDIwNDAyMDQwMjA0MDIwNDAyMDBCCis6MjBBOEMwMDA3ODAwNEJGQzRBNDQ1M0ZDNjI0NDUzRkM0ODAwNEZGRTRBNDA2QTQ0NTIyODQyMzA0MjEwNDI4RTQzMDQ0MjAwODMKKzoyMEE4RTAwMDAwNDA3ODgwNEJGODUyMDg1M0Y4NjIwODUzRjg0ODAwNEJGQzY4NDA1MDQwNDNGQzQwNDA0MDQwNDdGRTQwMDBGOAorOjIwQTkwMDAwMDA0MDc4ODA0QkY4NTI0ODUzRjg2MjQ4NTI0ODRCRjg0OEMwNjhEMDUxNTA0MTY4NDI3QzQ0NDI0ODNFNDAwMEJDCis6MjBBOTIwMDA3QkY4NEEwODUzRjg1MjA4NjNGODUwMDA0OTA4NEExNDRGMzg2QTk0NTdCRTQwMDA0NTI0NDQ5MjQ4OTI0MDAwMjAKKzoyMEE5NDAwMDAwMDA3RjdFMDg0NDA4NDgwODQ4MDg1MEZGQzgwODQ0MDg0MjA4NDIwODUyMDg0QzA4NDAwODQwMDg0MDA4NDA0MQorOjIwQTk2MDAwMDAwMDdGN0UwODQyMDg0NDA4NDgwODUwMDg0ODA4NDQwODQ0MEY0MkYwNDIwMDU0MDA0ODAwNDAwMDQwMDA0MEQ1Cis6MjBBOTgwMDAwODAwMDQ3RTNGNDIyMDQ0MjA0NDIwNDgyMDUwMjA0ODIwNDQyMDQyMjA0MjQwNTI0MDRDODA0MDAwNDAwMDQwMUUKKzoyMEE5QTAwMDEwMDAwODdFMDg0NEZGNDgyMDQ4MjA1MDIwNDgyMDQ0MjA0MjIwNDIyMDQyM0U1NDAwNDgwMDQwMDA0MDAwNDAwQQorOjIwQTlDMDAwMDgwMDEwN0MzRTQ0MjI0ODIyNDgyQTUwMjQ1MDNGNDgwMTQ0MDE0MjFENDJFMTU0MDE0ODE5NDAwNjQwMDA0MEQ0Cis6MjBBOUUwMDAxMDAwMDg3RTA4NDJGRkM0MTA0ODEwNTAxRjQ4MTE0NDExNDIxMTQyMjE0MjIxNTIyMTRDNDU0MDgyNDAwMDQwRDAKKzoyMEFBMDAwMDAwMDBGRjdFMDg0NDA4NDg3RjQ4NDk1MDQ5NDg1NTQ0NTM0MjUxNDI2MTQyNDE1QTQxNDQ0NTQwNDI0MDAwNDA2MQorOjIwQUEyMDAwMDAwMEZGN0UwODQ0MDg0ODE4NDgxQzUwMkE1MDI5NDhDODQ0MDg0MjA4NDIwRjcyNzA0QzAwNDAwMDQwMDA0MEE5Cis6MjBBQTQwMDAwMDAwMTIzRTEyMjIxMjI0RjNBNDEyMjgxMjI4MTIyNDEyMjIxMjIyMzIzQTUyQTQ5MzIwMTIyMDAwMjAwMDIwMEMKKzoyMEFBNjAwMDE0MDAxNDdFMTQ0NDE1NDQ5NTQ4NTU0ODU2NTA1NDQ4MTQ0NDE1NDIxNjQyMTg1MkUwNEMwMDQwMDA0MDAwNDA2NgorOjIwQUE4MDAwMDcwMDc4N0U0ODQ0NDg0NDQ4NDg0ODUwN0Y0ODQ4NDQ0ODQyNDg0MjQ1NDI1NTVBNkI0NDQ1NDAwNDQwMDA0MDI0Cis6MjBBQUEwMDAwODAwMDg3RTEwNDQyNDQ4NDI0OEZGNTAwMTQ4N0U0NDQyNDI0MjQyNDI0MjQyNTQ3RTQ4NDI0MDAwNDAwMDQwN0EKKzoyMEFBQzAwMDA4MDAwODNFN0ZBMjA4MjQ0OTI0MjkyODJBMjhGRkE0MDgyMjBDMjIxMjIyMTEzQTIxQTQ0MTIwODAyMDAwMjA2QgorOjIwQUFFMDAwMDAwMDdGN0UxMDQ0MTA0ODIyNDg3RjUwMDk0ODA4NDQ3RjQyMDg0MjA4NUEwODQ0MEY0MDcwNDAwMDQwMDA0MDlGCis6MjBBQjAwMDAwNDAwMjQ3RTI0NDIzRjQ0NDQ0ODg0NTA3RkM4MEM0NDE2NDIxNTQyMjU0MjQ0NUE4NDQ0MDQ0MDA0NDAwNDQwNjcKKzoyMEFCMjAwMDA4MDAwQzNFMTIyNDIxQTRDMDI4M0YzMDAwMjhGRkE0MDgyMjEwMjIxMjMyMjEyQzRGMjA3MTIwMDAyMDAwMjA3OQorOjIwQUI0MDAwMjEwMDEyM0UwQzI0MTIyNDY5MjgwODI4RkZBNDEwMjIxNDIyMjQyMjQ4MkE4QTI0MTEyMDNGQTAwMEEwMDAyMDFDCis6MjBBQjYwMDAxMDAwMTAzRTNGMjIyMTI0NDEyNEJEMjgyNTI0M0QyMjI1MjIyNTIyM0QyMjAxMkEwMTI0MDUyMDAyMjAwMDIwM0IKKzoyMEFCODAwMDAwMDA3RjdFNTI0NDEwNDg3RjQ4MTA1MDI4NDg3RjQ0MDg0MjA4NDIwRjUyRjg0QzA4NDAwODQwMDg0MDA4NDAxNworOjIwQUJBMDAwMDAwMEZGREUwMDEyN0JENDRBNTQ0QTU4NkI1NDVBRDI0QTUyNEE1MjRBNTI0QTVBNEE1NDRBRDAwMDEwMDAxMERDCis6MjBBQkMwMDAwMDAwM0U3RTIyNDQyMjQ0MjI0ODNFNTAwMDQ4N0Y0NDA4NDI3RjQyMDg0MjA4NUEwRjQ0RjA0MDAwNDAwMDQwMzAKKzoyMEFCRTAwMDA4MDAyODNFMjgyMjNGMjQ0ODI4ODgzMEZGQTgwMDI0M0YyMjIxMjIyMTIyMjEzQTNGMjQyMTIwMjAyMDAwMjAwMQorOjIwQUMwMDAwMjEwMDEyM0UwQzIyMTMyNDY1MjhGRkE4MDgyNDE0MjIzRkEyNjRBMkE0QkEyNEE0MjZBMDI1MjAwNDIwMDQyMDY4Cis6MjBBQzIwMDAwNzAwNzg3RTUxNDQyOTQ0MkE0ODdGNTAwMjQ4MDQ0NDA4NDIwRjQyRjg0MjA4NUEwODQ0Mjg0MDEwNDAwMDQwQzcKKzoyMEFDNDAwMDA4MDAxMDdFN0Y0MjQ5NDQ3RjQ4NDk1MDQ5NDg3RjQ0MTQ0MjI0NDJGRkMyMDQ1QTA0NDQwNDQwMDQ0MDA0NDA2RAorOjIwQUM2MDAwMDgwMDBBN0UyQTQ0MkM0ODRDNDgxMjUwMjE0OEM4NDQyQTQyMkM0MjRDNDIxMjVBMTE0NDIxNDA0MDQwMDA0MEFECis6MjBBQzgwMDAwMDAwN0Y4MDQwM0U1RjI0NTEyODVGMjg1MTMwNUYyODQ4MjQ3RkEyNTIyMjRDM0E0QTI0NzEyMDdGQTAwMDIwRTcKKzoyMEFDQTAwMDAwMDBGRkJFMTQyMjdGMjQ1NTI0NTUyODU1MjQ3RjIyMDgyMjdGMjIwODIyMDgyQTBGQTRGMDIwMDAyMDAwMjBDNAorOjIwQUNDMDAwMDAwMDdGQkUwODIyMkYyNDI4MjhGRkE4NDAyNDdGMjI0MDIyN0ZBMjAwQUFBQUE0QUFBMDAwQTAwMUEwMDAyMDk4Cis6MjBBQ0UwMDAyMjAwRkZCRTIyMjIzRTI0MDgyODdGMzA0OTI4N0YyNDA4MjI3RjIyMDgyMjdGMkEwODI0MEYyMEYwMjAwMDIwQjMKKzoyMEFEMDAwMDA4MDA3RkJFMjIyMjE0MjRGRkE4MDAzMDNGMjgyMTI0M0YyMjIxMjIzRjIyMDQyQUZGQTQwNDIwMDQyMDA0MjBBRAorOjIwQUQyMDAwMDc4MEY4M0U0OTIyMkEyNEZGQTQxQzI4MkEyOEM5QTQ3RjIyNDkyMjQ5MjI3RjJBNDkyNDQ5MjA3RjIwMDAyMDQyCis6MjBBRDQwMDAyMTAwMTIwMDdGQkUwNDIyN0ZBNDA0MjQ3RkE4MjUyNDE2MjRGRkUyMDAyMjNGMkEyMTI0MjEyMDNGMjAwMDIwRjcKKzoyMEFENjAwMDdDMDAyODNFM0ZBMjJBQTQzOTI0MkFBODc4MjgwQkE0N0MyMjBEQTIzNjMyQ0QyQzM0QTBDNDIwMDQyMDA0MjAxNgorOjIwQUQ4MDAwM0UwMDA4M0VGRkEyODhBNDZCMjQwODI4NkIyODA4MjQwMDIyRUVFMkFBQTJBQUFBQUFBNEVFRTAwMDIwMDAyMEY2Cis6MjBBREEwMDAwODAwQUE4MEZGQkVBQUEyRkZBNEFBQThGRkE4MDAyNEZGQTIwMDIyN0YyMjQxMzQ3RjI4MjIyMDE3QTBGODIwMDcKKzoyMEFEQzAwMDA0MDAwNjAwMEZGMDA4MjAxMDQwMjA4MDdGRkM4MDA0MDAwNDFGRkMwMDA0MDAwNDAwMDQzRkZDMDAwNDAwMDBFOQorOjIwQURFMDAwMDQwMDA0MDAwRkUwMTA0MDIwODA1RkY4MTEwODExMDgxMTA4RkZGRTAyODAwMjQwMDQyMDA4MTgzMDBFQzAwNEMzCis6MjBBRTAwMDAwMDIwRkZBMDEwMjAxMDIwMUVGRTEyMjIxMjIyMTIyMjEyMjIyMjQyMjI0MjQyNDI0QTg0ODQ5NDAxMDgwMDAwRUMKKzoyMEFFMjAwMDIwMjAzMDIwNDAyMDdFMjA4MkZDN0EyNDRBMjQ0QTI0NEEyNDdBNDQ0QTQ0MDI0NDEyODQwQTlDMDUwODAwMDA0MworOjIwQUU0MDAwMDAyMDdGMjAxMTIwMTEyMDExN0MyNTI0MjIyNDdGMjRBMTI0MjEyNDIxMjQzRjQ0MjE0NDIwOTQwMTA4MDAwMDFFCis6MjBBRTYwMDAwODIwMDQyMDdGQTAwODIwMTBGQzIyMjQ3RjI0MjQyNDA5MjQzMjI0QzQ0NDBCNDQxMjg0MjExNEMyMDgwMDAwOTMKKzoyMEFFODAwMDEwMDAxMDAwN0Y3QzExNDQxMTQ0MjU3QzQyMDBGRkZFMDAwODFGODgxMDg4MTA4ODFGODgxMDg4MDAyODAwMTBCNworOjIwQUVBMDAwMDAyMDdFMjAwNDIwMDgyMEZGN0MwODI0MjgyNDEwMjQ3RjI0NTUyNDU1MjQ1NTI0NUZDNEYwNTQwMDg4MDAwMDY0Cis6MjBBRUMwMDA3RjIwNDEyMDVEMjA0MTIwNURGQzAwMjQ3RTI0NDIyNDdFMjQ0MjI0N0U0NDQyNDQ0Mjg0N0U5NDQzMDgwMDAwOUMKKzoyMEFFRTAwMDEwMDAxMEZFN0U5MjEyOTIxMkZFMkE5MkM0OTIyOEZFRkYyMDU1OTA1NTU0NTU0MjU5NEFCNTQ4MjIzODAwMDBGQQorOjIwQUYwMDAwMEQwMDMxNzgyMTA4M0Q3ODIxMDgyMTA4M0ZGODAxMDAzRkYwMDgxMDA0MjAwMjQwMDE4MDA2NjAxODFDNjAwOEUzCis6MjBBRjIwMDAwMjA4MkZDODIwMkEyQjJDQjA0OEE3ODhBNDk0MzdBMjQ4NDI5RkY4MDQxMDAyMjAwMUMwMDM3MDBDMUU3MDA0MEUKKzoyMEFGNDAwMDNFN0MyMjQ0M0U3QzIyNDQzRjdDMDg4MDFGRkUxMDgwM0ZGQ0QwODAxRkZFMTAwMDBGRjgwMjEwMDFFMDNFMUVCMworOjIwQUY2MDAwMDAwMDc4MDAwODAwMDgwMDEwMDAzQzAwMDQwMDQ0MDA0ODAwMjgwMDI4MDAxMDAwMjgwMDQ0MDA4M0ZFMDAwMDIwCis6MjBBRjgwMDAwMDAwMjAwNDIwMDQyMDA0MjAwNDIwMDQyMDA0MjAwNDIwMDQyMDA0MjAwNDIwMDQyMDA0N0ZGQzIwMDQwMDAwNjIKKzoyMEFGQTAwMDAxMDAwMTAwMDEwMDQxMjQ1RjM0NDM0NDQzODQ0NTQ0NDUyNDQ5MTQ1MTFDNjUxNDQyMDQ3RkZDNDAwNDAwMDAwRQorOjIwQUZDMDAwMDEwMDA0QTAyMjQ0MzE5NDI5NEMyMjI0MkM5NDNGRkMwMDAwMTAzMDExQzAxRTAwMTAwNDEwMDQwRkZDMDAwMDg5Cis6MjBBRkUwMDAwMTAwMDE4MDAxMDAwMTAwMDIwMDAyMDAwNDAwMDQwMDA4MjAwODEwMTAwODIwRkM3Rjg2MjAwNDAwMDAwMDAwMjQKKzoyMEIwMDAwMDAyMDAwMzIwMDQxMDA4MDgzRkZDMTAwODA0MjAwNDIwRkZGRTA0MjAwNDIwMDQyMDA4MjAwODIwMTAyMDIwMjAyMworOjIwQjAyMDAwMDIwMDA0MjAwOEYwMUYwODAxMDhGRkZFMDQ0MDA4MjAxRkY4MzExRUQxMTQxRkYwMTExMDExMTAxRkYwMTAxMDhFCis6MjBCMDQwMDAwMDQwRjgyMDBGRkUxMDQwMTA1MDI4ODhDNUZDMDAwNDdENDgxMTQ4MTE0ODExNDgxRDRBRTI0QTAyNDYwNDAwQjcKKzoyMEIwNjAwMDA4ODAwQzQwMDgyMDEwMTgyRkVFNDQyNDg0MjAwODIwMDhBMDExNDA3RkY4MDEwMDAxMDAwMTAwRkZGRTAwMDBFQgorOjIwQjA4MDAwMDAwMDNGRkMwMjQwMjI0ODEyNEMxQTQ4MTI1MDdGRkMwMTAwMDEwMDNGRjgwMTAwMDEwMDAxMDA3RkZFMDAwMDczCis6MjBCMEEwMDAxMEEwMTg5MDEwOUUzRkUwMzA4ODUwOTA5MDYwMTFBMjE2MUExMTA2MDEwMDFGRjgwMTAwMDEwMDdGRkUwMDAwNTIKKzoyMEIwQzAwMDEwNDBGRTQwMDFGODdDNDg0NTQ4N0NDODAwNjg3QzU4MDg0QTEwOEFGRTg2MTEwMDVGRjgyMTAwMDEwMDdGRkVBMQorOjIwQjBFMDAwMDgwMEZGNzgwODQ4N0Y0ODQ5NEE3RjhFNDk3ODdGNDgwODMwNDk0ODdGODYwMTAwN0ZGQzAxMDAwMTAwRkZGRTQ5Cis6MjBCMTAwMDAwMjAwMDEwMEZGRkUxMTIwMjVGQzdCMjAxNUZDN0QyMDI1MjAwOUZDMzEyMEMxRkUwMTAwN0ZGQzAxMDBGRkZFQzAKKzoyMEIxMjAwMDEwMDAxRTAwMTBGQ0ZGNDQ4MTQ4N0UyODI0MTA1QTEwQTUyODdFNDZDNTgwN0MwMDAxMDAzRkY4MDEwMEZGRkVGRAorOjIwQjE0MDAwMDAwMDEzRkUxMDIwMTAyMEZDMjAxMDIwMTdGRTEwMjAxMDIwMTYyMDE4MjA2MDIwODAyMDAwQTAwMDQwMDAwMDRGCis6MjBCMTYwMDAxMDAwMTFGQzEwMDAxMDAwRkUwMDExRkUxMDgwMTA4MDEwRkMxNjA0MTgwNEUwMDQ0MDA0MDA0ODAwMzAwMDAwODMKKzoyMEIxODAwMDEwODAxMEMwMTA4MDExRkUxMTAwRkEwMDE1RjgxMDEwMTAyMDEwNDAxQzgwMzA4MEMxMDIwMTAyMDBGRTAwMDBFOAorOjIwQjFBMDAwMDAwMDEyMDQxMjQ0MTI0NEZFNDQxMjQ0MTI0NDEyNDQxMjQ0MTI0NDNBNDRDNDQ0MDQ0NDA4MDQxMDA0MDAwMEVGCis6MjBCMUMwMDAwMDQwMTAyMDEzRkUxMjAwRkUwMDEyMDAxMjAwMTIwMDEyMDAxMjAwMUUwMEUyMDA0NDAwMDQwMDA4MDAxMDAwMjQKKzoyMEIxRTAwMDAwMDAxMUZDMTAwNDEwMDRGRTA0MTAwNDExRkMxMTAwMTEwMDExMDAxMTAwMUQwMkUxMDI0MTAyMDFGRTAwMDA2RgorOjIwQjIwMDAwMDAwMDExRkMxMTA0MTEwNDExMDRGRjA0MTFGQzExMDQxMTAwMTEwMDExMDAxRjAwRjEwMjQxMDIwMEZFMDAwMDM3Cis6MjBCMjIwMDAwMDAwMTNGRTEyNDAxMjQwRkU0MDEzRkMxMjQ0MTI0NDEyNDQxMjQ0MUE0NEU0ODQ0NDg0MDkzODEyMTAwMDAwQzMKKzoyMEIyNDAwMDEwMDgxMUZDMTEwMDExMDBGRDAwMTFGRTExMTAxMTEwMTExMDFEMTAzMjEwQzIxMDA0MTAwNDEwMDgxMDEwMDBBNworOjIwQjI2MDAwMDAwODEzRkMxMjAwMTIwMEZFMDAxM0Y4MTI4ODEyODgxMjUwMTI1MDFBMjBFNDIwMDQ1ODA4OEUxMTA0MDAwMDRECis6MjBCMjgwMDAxMTA4MTEwODExMDgxMTA4MTNGRUZEMDgxMTA4MTEwODExRjgxMTA4MTUwODE5MDhFMTA4NDFGODAxMDgwMDAwNzcKKzoyMEIyQTAwMDEwQTAxMDk4MTA5MDEwODRGRkZFMTBBMDEwQTgxMEFDMTEyODE1MzAxOTIwRTI2MDQ0QTIwOTIyMTAxRTAwMDBBOQorOjIwQjJDMDAwMTA0MDEwNDAxMDQwMTA3RUZFNDAxMDQwMTA0MDExRkMxMTA0MTMwNDFEMDRFMTA0NDFGQzAxMDQwMTA0MDAwMDhDCis6MjBCMkUwMDAxMDQwMTA0MDEwN0UxMDQwN0RGQzExMDQxMTA0MTEwNDExRkMxNTA0MTkwMEUxMDA0MjAwMDIwMDA0MDAwODAwQTgKKzoyMEIzMDAwMDEwMDgxMUZDMTEwMDExMDBGRDAwMTFGRTExMjAxMTIwMTEzMDFEMkNGMjI2NDIyNDA0MjAwODIwMTAyMDAwMDBGNAorOjIwQjMyMDAwMjAwODIzRkMyMjIwMjIyMEZBMjAyM0ZFMjIyMDIyMjAyMjIwMjIyMDIyNTAzQTkyRTc0QTQyMjYwMDIyMDAwMDA2Cis6MjBCMzQwMDAwMDQwMTAyMDExRkUxMjA0MTIwOEZDODAxMDg4MTA5QzEwQjAxMEMwMTY4MDE4ODRFMDg0NDA4NjAwN0MwMDAwMTYKKzoyMEIzNjAwMDEwMDAxM0ZDMTIwNDEyMDRGRkZDMTIwNDEyODAxMjg4MTI5QzEyRTAxRTgwRTI4NDQ0ODQwNDg0MDg3QzEwMDBCRAorOjIwQjM4MDAwMTAwMDExRjgxMTA4MTE0ODExMjhGRDI4MTNGRTExMDgxMTQ4MTEyODFEMjhFM0ZFNDEwODAwMDgwMDI4MDAxMDU5Cis6MjBCM0EwMDAyMTEwMjE5MDIxMTAyMjEwRkE3QzI0OTQyN0Q0MjA5NDIxMTQyMkE0M0RBNEU2QzQwMDQ0MDA5NDAxMDgwMDAwMDQKKzoyMEIzQzAwMDEwMDAxN0ZFMTA5MDEwOTA3QzkwMTA5NDE0OTYxMjk0MTI5ODEyOTAxQzkwRTA5MDQwOTAwMDkwMEZGRTAwMDAzMworOjIwQjNFMDAwMTAwMDEzRkUxMDQwMTA0MDEwODhGRDA0MTNGRTExNDQxMDQwMTNGQzEwNDAxQzQwRTA0MDQwNDAwN0ZFMDAwMERECis6MjBCNDAwMDAxMDAwMTNGQzEyMDQxMjA0MTNGQ0ZFMDQxMkY0MTI5NDEyOTQxMjk0MUVGNEUyOTQ0MjA0MDIxNDAyMDgwMDAwRUEKKzoyMEI0MjAwMDEwMjAxMTI0MTEyNDExMjQxMUZDRkMwMDExRkMxMDA0MTAwNDExRkMxMTAwMUQwMEUxMDI0MTAyMDBGRTAwMDBBMAorOjIwQjQ0MDAwMjAwNDJFMUUyMkYwMjIxMEZBMTAyNDVFMjc1MDIxNTAyOTUwMjU1MDNEN0VFMjAwMDU4MDA4NjAxMDFFMDAwMDFFCis6MjBCNDYwMDAxMDQwMTA2MDEwODAxM0ZFMTIwMkZFMDIxMkZBMTI4QTEyOEExMkZBMTI4QTFFMDJFMjAyNDIwQTAyMDQwMDAwMTUKKzoyMEI0ODAwMDEwODAxMDYwMTA0MDE3RkUxMDAwRkQwODEyOTQxMjY0MTI2NDEyNjQxMjk0MUYxNEUyMDQ0M0ZDMDIwNDAwMDAyNgorOjIwQjRBMDAwMTA4MDEwNjAxMDI0MTNGRUZDNDAxMDg4MTExMDEzRTAxMDQ4MTY4QzE5MThFNjMwNDBDQzAzMDYxQzA0MDAwMEU5Cis6MjBCNEMwMDAxMDAwMTNGODEyMDgxMjA4RkZGODEyMDgxMjA4MTNGODEyNDQxMjRFMUUzMEYyMjA0MjE4MDI4RTA3MDQwMjAwREEKKzoyMEI0RTAwMDEwMDAxMUY4MTEwODExMDgxMUY4RkQwODEwMDAxM0ZDMTA0MDEwNDAxM0ZDMUM0MEUwNDA0N0ZFMDAwMDAwMDA2NAorOjIwQjUwMDAwMDAwODI3ODgyNDg4MjQ4ODI0RkVGQzg4MjdDODI0QTgyNEE4MjRBODNDODhFNzg4NDQ4ODAwMjgwMDEwMDAwMEVDCis6MjBCNTIwMDAxMUZDMTEwNDExMDQxMTA0MTFGQ0ZEMjQxMDIwMTNGRTEyMjIxMjUyMUU0QUUyOEU0MzBBMDIwMjAyMEEwMjA0N0QKKzoyMEI1NDAwMDExRkMxMTA0MTEwNDExMDQ3REZDMTAwMDEzRkUxMjIyMTIyMjEyMjIxRTIyRTI0MjQwNTAwMDhDMDMwNjBDMDREMAorOjIwQjU2MDAwMTAxRTEzRTAxMDA0MTI0NjExMjRGREI4MTEyODEwMDgxM0ZFMTA4ODFDNDhFMDQ4NDAwODAwMDgwMDI4MDAxMDQ2Cis6MjBCNTgwMDAxMDQwMTAyMDExRkUxMTAyRkMwNDExRjgxMDAwMTAwMDEzRkUxMEEwMUNBMDMxMjBDMTIyMDIyMjA0MUUwODAwRTEKKzoyMEI1QTAwMDIwNDAyMDQwMjdGQzIwNDAyMDQwRkJGODIyMDgyM0Y4MjIwODIzRjgyMjA4M0JGOEMyMDgwMjA4MEZGRTAwMDAyRAorOjIwQjVDMDAwMTA0MDEwNDAxM0ZFMTBBMDEwOTBGRDQ4MTI0NjEzRkMxMjQ4MTNGODFFNDhGM0Y4NDI0QTAwNDIwMDNFMDAwMEZDCis6MjBCNUUwMDAxMDAwMTFGQzExMDQxMUZDRkQwNDExRkMxMDgwMTA4NDExRkUxMjU0MUM5NEUxMjQ0NjQ0MDE4NDA2MTQwMDA4N0YKKzoyMEI2MDAwMDIwNDAyMDgwMjNGQzIyNDQyM0ZDRkE0NDIyNDQyM0ZDMjBBMDIxMjAyN0ZFMzgyMEMwMjAwMDIwMDAyMDAwMjAwNQorOjIwQjYyMDAwMjA0MDIwNDAyMEEwMjExMEZBODgyNDQ2MjgwNDIzRjgyMDEwMjAyMDJDNDgzMTI0QzUyMjA1MEEwOUY4MDAwMEY2Cis6MjBCNjQwMDAyMDAwMjNCQzIyQTQyMkE0MjNCQ0ZBQTQyMkE0MjJBNDIzQkMyMkE0M0FBNEM0QTQ0NEE0MDk0NDEwNTQwMDg4NEEKKzoyMEI2NjAwMDIxMDAyMTAwMjFGODIxMTBGQTIwMjdGQzIyNDQyMjQ0MjNGQzIyNDQzOEEwRTBCMDQxMkEwMjIyMDQxRTA4MDA4RgorOjIwQjY4MDAwMjAwMDIzRjgyMDA4MjFGOEY4MDgyM0Y4MjAwMDI3RkUyNDQ0MkJGODIyNDgzQTQ4RTI0ODQyNTgwMDQwMDA0MDEzCis6MjBCNkEwMDAxMDQwMTA0MDEzRjgxMDQ4RkZGRTEwNDgxM0Y4MTA0MDEyNDQxMTY4M0NEMEUxNDg0MjRFMDQ0NDAxNDAwMDgwM0EKKzoyMEI2QzAwMDIwMDAyM0ZFMjIwMjIyMDJGQkZFMjIxMDIyOTIyMjkyMjJGRTIyOTIzQTEwRTI5MjQ0OTIwNEZFMDg4MjEwMDA0QQorOjIwQjZFMDAwMjE0ODIxNDgyMTQ4MjdGRTIxNDhGRDc4MjEwMDIxRkMyMDIwMjNGRTIwNjAzQ0IwRTEyODQyMjYwNDI0MDAyMDQ4Cis6MjBCNzAwMDAwMDAwMkZGRTIwOTAyMDkwRkZGRTI0OTIyNDkyMjdGRTIwNDAyMDQwM0ZGQ0UwNDA0MDQwMDA0MDBGRkUwMDAwMjYKKzoyMEI3MjAwMDIwMDAyM0ZDMjJBNDIyQTRGQkZDMjA0MDIwMjAyRkZFMjEwMDIxMDgyMUZDMzkwOEMyMDgwMjA4MDQyODA4MTBCQQorOjIwQjc0MDAwMjIwMDIzNzgyMjA4MjIwOEZERkUyNDgwMkNGRTM1MjAyNjIwMjVGRTNDMjBFNDUwNDQ0ODA0OEMwNDg2MDUwNDEyCis6MjBCNzYwMDAyMDAwMjdGRTIwMDAyMUY4RkQwODIxRjgyMDAwMjNGQzIyQTQyMjQ0M0JGNEUyNDQ0MjQ0MDI1NDAyNDgwMDAwNDcKKzoyMEI3ODAwMDIwMDAyN0ZFMjQ0MDI0ODBGREZDMjUwNDI1RkMyNTA0MjVGQzI0MjAyNEE4MzRBNEM5MjIwQTIyMTBBMDIwNDBDMAorOjIwQjdBMDAwMjFGODIxMDgyMUY4MjEwOEY5RjgyMDAwMjNGQzIyOTQyM0ZDMjAwMDNCRkNFMTA4NDA5MDAwNjAwMTk4MDYwNkVCCis6MjBCN0MwMDAyMDQwMjdGRTI0MjAyNUZDMjQyNEY3RkUyNDI0MjVGQzI0MjAyNUZDM0QyNEU1RkM0NTI0MDlGQzA5MjQxMTJDNUEKKzoyMEI3RTAwMDI0MDAyMkY4MjgyODI0QUNGNEFBMjM0QTIyNjgyNDkwMjg0MDI3RkMyMEUwMzk1MEUyNDg0NDRDMDg0ODAwNDA0NAorOjIwQjgwMDAwMDAwMDIzRkUyMjAyMjNGRUZCMjQyMkE4MjI3MDIyQTgyMzI2M0FBMEUyRkM0NTIwMDdGRTA4MjAwODIwMTAyMDkyCis6MjBCODIwMDAwODc4N0Y0ODA4NEUzRTgwNDk3QzdGMjg0MDEwNUZFRTgxMDAzRkY4MDU0MDE5MzA2RkZDMDkxMDA4OTAwRkYwNDMKKzoyMEI4NDAwMDA4MjA3RUZDMDgyMDNFRkMyMjQ4M0UzMDE0NUNGRjg4MDIwMDFGRTAxMjIwMUZFMDE1MjBGRkZFMDEwMDAxMDBBRgorOjIwQjg2MDAwMTAyMDExMzBGRUEwMTAzRTdDNTQwMDkwRkU5ODg1MjQ3QzQ2MDA4MjdDMDA0NDUwN0Q0QTI5NDIyRDQ2RjAzQ0E3Cis6MjBCODgwMDAwNDQwMDQ0MDA0NDBGRkZFMDQ0MDA0NDAwNDQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTMKKzoyMEI4QTAwMDA0MjAwNDIwN0ZGRTA0MjAwNDIwMDIwMDAyMDAzRkUwMDIyMDAyMjAwNDIwMDQyMjA4MjIxMDIyMjAxRTQwMDBGMAorOjIwQjhDMDAwMDQyMDA0MjBGRkZFMDQyMDA0MDAxRkYwMDQxMDA0MjAwNDIwMDQ3QzA4MDQwODA0MDgwNDEwNDQxMDI4MjAxMDMwCis6MjBCOEUwMDAwNDIwMDQyMEZGRkUwNDIwMDQyMDAxMDAwMTAwMDEwMDNGRjgwMTAwMDEwMDAxMDAwMTAwRkZGRTAwMDAwMDAwODAKKzoyMEI5MDAwMDA0NDAwNDQwN0ZGQzA0NDAwNDQwMDAzODNGQzAwMTAwMDEwMEZGRkUwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDA2MAorOjIwQjkyMDAwMDQ0MEZGRkUwNDQwMDQ0MDNGRTAwNDQwMDQ0MDA0ODAwNEY4MEExMDBBMjAxMTQwMTBDMDIxMzA0NjBFOTgwNDcxCis6MjBCOTQwMDAwNDIwMDQyMEZGRkUwNDIwMDQyMDAyMDA3RkUwMDIyMDEyMjAwQzIwMDcyMDA1QTAwOTIyMzAyMkMwMUUwMDAwNTIKKzoyMEI5NjAwMDA0NDBGRkZFMDQ0MDA0NDAzRkY4MDAwODAwMDgxRkY4MTAwMDEwMDAxRkZDMDAwNDAwMDQwMDA0MDAyODAwMTAyMQorOjIwQjk4MDAwMDQ0MDA0NDBGRkZFMDQ0MDA0NDAzRkYwMDAxMDAwMTAxRkYwMTAwMDEwMDAxMDA0MTAwNDEwMDQwRkZDMDAwMEQ1Cis6MjBCOUEwMDAwODIwMDgyMEZGRkUwODIwMDQwMDA4MjAxRkMwMDA4ODAzMEMxRkYwMDgyMDAwNDAwMDgwMDMwMDBDMDA3MDAwRkEKKzoyMEI5QzAwMDA4NDAwODQwRkZGRTA4NDAwOTQwMDEwMDNGRkMwMTAwMDEwMEZGRkUwMjgwMDI0MDA0MjAwODE4MTAwRTYwMDQ4NAorOjIwQjlFMDAwMDQ0MDA0NDBGRkZFMDQ0MDA0NDAzRkY4MDAwMDAwMDBGRkZFMDQ0MDA0NDAwNDQwMDg0NDA4NDQxMDNDMjAwMDM2Cis6MjBCQTAwMDAwNDIwMDQyMDdGRkUwNDIwMDQyMDFGRjgwMDAwMDAwMEZGRkUwMjAwMDMyMDA0MTAwODA4MTFGQzNGMDgwMDAwNjgKKzoyMEJBMjAwMDA4NDAwODQwRkZGRTA4NDAwMTAwRkZGRTAxMDAwMTAwMUZGMDExMTAxMTEwMTExMDExNTAxMTIwMDEwMDAwMDAyQworOjIwQkE0MDAwMDgyMDA4MjBGRkZFMDkyMDAxMDA3RkZDMDEwMDAxMDAxRkYwMDgyMDA0NDAwMjQwMDE4MDA2NjAxODFFRTAwNDM0Cis6MjBCQTYwMDAwNDIwRkZGRTA0MjAwMDAwM0ZGRTIxMDAyMTAwMkZGODIxMDgyMTA4MjIwODIyMDg0NDA4NDg0ODkwMzAwMDAwOTkKKzoyMEJBODAwMDA0MjAwNDIwRkZGRTA0MjAzRkZDMjAwMDIwMDAyN0YwMjQxMDI0MTAyNDEwMjQ1MDQ0MjQ0NDA0ODNGODAwMDA3MAorOjIwQkFBMDAwMDQyMDA0MjBGRkZFMDQyMDNGRkMyMDAwMjAwMDNGRjAyMDEwMjAxMDNGRjAyMDEwMjAwMDIwMDAzRkZFMDAwMDM3Cis6MjBCQUMwMDAwODIwMDgyMEZGRkUwODIwMTA0MDEwNDAxMDQwMTA0QzFFNzAxMDQwMTA0MDEwNDQxMjQ0MTQ0NjM4M0MxMDAwRUYKKzoyMEJBRTAwMDA4MjAwODIwRkZGRTA4MjAwODIwMDEwMDAxMDAxMTAwMTFGODExMDAxMTAwMTEwMDExMDAxMTAwRkZGRTAwMDAzQgorOjIwQkIwMDAwMDgyMDA4MjBGRkZFMDgyMDA5MjAzRkY4MjEwODIxMDgyMTA4MjI4ODI0NjgyODQ4MzAwODIwMDgyMDI4MjAxMDU3Cis6MjBCQjIwMDAwNDQwMDQ0MEZGRkUwNDQwMDAwMDFGRjAxMTEwMTExMDExMTAxMzkwMTI5MDE2OTAwNDg0MTg4NDYwNzgwMDAwRTMKKzoyMEJCNDAwMDA0MjBGRkZFMDQyMDA0MjAwODAwMDg2MDA4ODAwOTAwRkZGRTA5MDAwODgwMDg0MDA4MzAwQjFDMUMwODA4MDAxQQorOjIwQkI2MDAwMDQyMDA0MjBGRkZFMDQyMDA0MjAwMDAwMDgyMDA4MjAwODIwMTg1MDE0NTAyMjQ4MjI4ODQxMDY4NjA0MDAwMDBGCis6MjBCQjgwMDAwNDIwRkZGRTA0MjAwNTIwMDEwMDAyODAwNDQwMEEzMDMxOEVDMTA0MUZGMDAwMjAwMDIwMDA0MDAwNDAwMDgwNjcKKzoyMEJCQTAwMDA0MjAwNDIwN0ZGRTA0MjAwODAwMEZGRTEyNDQyMjQ0QzQ0NDA4ODQxMDg0NjEwNDAyMDQwNDA0MTgyODYwMTA4MAorOjIwQkJDMDAwMDQyMDA0MjA3RkZFMDQyMDEwMDAxRkZDMTAwODIxMTA0MTAwMDEwMDAyODAwMjQwMDQyMDA4MTgzMDBFQzAwNEJDCis6MjBCQkUwMDAwNDQwMDQ0MEZGRkUwNDQwMDA3ODNGQzAyMTAwMjEwMDNGRkMyMDgwMjA4MDIwODAyMDQ4MkM0ODcwMjgyMDEwMDQKKzoyMEJDMDAwMDA0NDBGRkZFMDQ0MDAwMDAwRkUwMDgyMDA4MjAxMDFDMkZFMDA0MjAwNDIwMDI0MDAxODAwNjYwMTgxRTYwMDQxQQorOjIwQkMyMDAwMDQyMDA0MjA3RkZFMDQyMDA1MjAwMDgwM0ZGQzAxMDAwMTgwMDE2MDAxMzAwMTIwMDEwMDAxMDAwMTAwMDAwMDAzCis6MjBCQzQwMDAwODIwMDgyMEZGRkUwODIwMDkyMDAwODAzRkZFMjAwNDQwMDgwMDAwMDAwMDAwMDAwMDA0RkZGRTAwMDAwMDAwMUMKKzoyMEJDNjAwMDA0NDAwNDQwN0ZGRTA0NDA3RjAwMDI0MDA0NDAwODQwMEE0MDBDNDAzODQwQzg0MDA4NDIwODQyMjgzRTEwMDAwRQorOjIwQkM4MDAwMDQ0MDA0NDBGRkZFMDQ0MDAwMDgyNDA4MjIwODIzMDgyMjA4MjAxMDIwMTAyNDEwMjgyODMwNDQyMDg2MDMwNDIzCis6MjBCQ0EwMDAwNDIwMDQyMEZGRkUwNDIwMDEwMDdGRkUwMTAwMDEwMDNGRjgwMzQwMDUyMDA5MzAxMTFDMjEwODQxMDAwMTAwMkIKKzoyMEJDQzAwMDA0NDAwNDQwRkZGRTA0NDAwNDQwMDgyMDA4MjBGRkZFMDgyMDA4MjAwRkUwMDgyMDA4MjAwODIwMEZFMDA4MjAzQworOjIwQkNFMDAwMDQ0MDA0NDBGRkZFMDQ0MDdGRkMwMDgwMDEwMDAxMDAwMzIwMDUxODE5MEM2MTA4MDEwMDAxMDBGRkZFMDAwMEIxCis6MjBCRDAwMDAwNDIwMDQyMEZGRkUwNDIwMDEwODAxMDg3RkZFMDI4MDAyODgwNDkwMDRBMDA4QzQxMTg0MjI4NjQwN0MwMDAwMjIKKzoyMEJEMjAwMDA0NDAwNDQwRkZGRTA0NDAwMjIwMDIxMDdGRkMwNDAwMDdGMDBBMjAwQTIwMTE0MDEwODAyMTYwNDIxQzhDMDhFOAorOjIwQkQ0MDAwMDQ0MDA0NDBGRkZFMDQ0MDFGRjgxMDA4MTAwODFGRjgxMDA4MTAwODFGRjgxMDA4MTAwODFGRjgxMDA4MTAwOEZFCis6MjBCRDYwMDAwNDIwMDQyMEZGRkUwNDIwMDAwMDFGRjAxMDEwMTAxMDFGRjAxMDEwMTAxMDFGRjAxMDEwMTAxMEZGRkUwMDAwNzAKKzoyMEJEODAwMDA4MjAwODIwRkZGRTA5MjAwOTIwM0ZGODIxMDgyMTA4M0ZGODIxMDgyMTA4RkZGRTIwMDgyMDQ4MjAyODIwMTBFRAorOjIwQkRBMDAwMDQ0MDA0NDBGRkZFMDQ0MDAwMDAzRkY4MjAwODI3QzgyNDQ4MjQ0ODI0NDgyN0M4MjQ0ODIwMDgyMDI4MjAxMDJECis6MjBCREMwMDAwNDIwRkZGRTA0MjAwODIwMEM0MDA4NDAxMDQwMzA0MDU3RkU5MDQwMTA0MDEwNDAxMDQwMTdGRTEwMDAwMDAwNjgKKzoyMEJERTAwMDA0NDAwNDQwRkZGRTA0NDAxNDUwMTgxMDEwMTAzN0ZFMzAxMDUxMTA5MDkwMTBEMDEwOTAxMDEwMTA1MDEwMjBBOAorOjIwQkUwMDAwMDQyMDA0MjBGRkZFMDUyMDAxMDAwMjgwMDQ2MDE5MThFMDg2NUZGODAwMTAwMDIwMDI0MDAxODAwMEMwMDA4MEIwCis6MjBCRTIwMDAwNDIwRkZGRTA0MjAwMjAwMEZGMDA4MTAwQTEwMDk1MDA4MjAwRkZDMDAwNDdGRjQwMDA0MDAwNDAwMTQwMDA4NjMKKzoyMEJFNDAwMDA0MjBGRkZFMDQyMDA0MjAwNjAwMzg3QzIwNDQyMDQ0M0U0NDIwNDQyMDQ0MjY0NDM4NTQyMDQ4MDA0MDAwNDBDRgorOjIwQkU2MDAwMDQyMDdGRkUwNDIwMDAyMDA2MDAzOEZDMjI4NDIyODQyMjg0MkU4NDcyODQyNDlDMDQ4ODA4ODAxMDgwMjA4MDA1Cis6MjBCRTgwMDAwNDIwMDQyMDdGRkUwNDIwMDQyMDAwMDA3RkZFNDEwNDgxMDgwMTAwM0ZGODAxMDAwMTAwMDEwMDdGRkUwMDAwOTIKKzoyMEJFQTAwMDA0NDBGRkZFMDQ0MDA0NDA3RkZFNDAwNDgwMDgzRkUwMDQyMDA0MjA3RkEwMDQyMDA0MjQwNDE0MDQwODA0MDA3NgorOjIwQkVDMDAwMDQyMDA0MjBGRkZFMDQyMDFGRjgxMDA4MTAwODFGRjgxMDgwMUZGQzEwODAxMDQwMTI0NDE0MjQzODE0MTAwODFFCis6MjBCRUUwMDAwNDIwMDQyMEZGRkUwNDIwMDQyMDNGRjgwNDA4MDQwODA4MjgxMDEwMkZGODA4MDgwODA4MDgwODBGRjgwODA4QTgKKzoyMEJGMDAwMDA0NDAwNDQwRkZGRTA0NDAwNDQwRkZGRTA0NDAwNDQwM0ZGODI0NDgyNDQ4MjQzODI4MDgzMDA4M0ZGODIwMDg1RAorOjIwQkYyMDAwMDQ0MDA0NDA3RkZFMDU0MDdGRkMwMTAwM0ZGMDAxMTAxRkYwMTEwMDFGRkMwMjg0MDQ0QzA4MjAxMDFDNjAwODJFCis6MjBCRjQwMDAwNDQwMDQ0MEZGRkUwNDQwMDIzQzNGQzAwMjE4MDE2NDFFQzQwMDM4N0ZGODA0NDAwNDQyMDg0MjEwM0UyMDAwODkKKzoyMEJGNjAwMDA0MjBGRkZFMDQyMDA0MjAyMDgwM0U5QzIwRTAyMDgyMkM3RTMxMDAwMTAwRkZGRTAxMDAwMTAwMDEwMDAxMDA1RgorOjIwQkY4MDAwMDQyMDA0MjBGRkZFMDQyMDAwNDAwNDQ0MDQ0NjI0NEMyNzU4MjQ2MDI0NDAyNDQwMjc0MjNDNDJFMDNFMDAwMDI2Cis6MjBCRkEwMDAwNDIwMDQyMEZGRkUwNDIwMDQyMDFGRjgxMDA4MTAwODFGRjgwMDAwM0ZGQzIwMDQyMDA0MjAwNDNGRkMyMDA0OTAKKzoyMEJGQzAwMDA0NDAwNDQwRkZGRTA0NDAwNDQwM0ZGODIwMDgyRkU4MjAwODI3QzgyNDQ4MjQ0ODI3QzgyNDQ4MjAyODIwMTAxQworOjIwQkZFMDAwMDQ0MDA0NDBGRkZFMDQ0MDA0NDAzRkZDMjAwNDIwMDQyN0U0MjQyNDI0MjQyN0U0MjAwNDIwMDQzRkZDMjAwNDY0Cis6MjBDMDAwMDAwNDIwRkZGRTA0MjAxNTIwMTEwMDFGRjgxMTAwMjEwMEZGRkUwMzgwMDU0MDA5MjAxMTE4MjEwRTQxMDQwMTAwQzAKKzoyMEMwMjAwMDA0NDAwNDQwN0ZGRTA0NDA3ODFDMDlFMDEwMjAyMDIwN0ZGRTA0MjAyODIwMTFGQzI4MDA0NjAwODFGRTAwMDBFNworOjIwQzA0MDAwMDQ0MEZGRkUwNDQwMDRGMDNGMDAwMjAwN0ZGRTA0NDAwODIwMzAxOEM0MjYwNDIwMDQyMDA4MjAxMDIwMjAyMDJCCis6MjBDMDYwMDAwNDIwN0ZGRTA0MjAwODQwMEM1MDE4NDgxMDQwMzdGRTUwNDA5MEEwMTBBMDEwOTAxMTEwMTEwODEyMDYxNDA0RjgKKzoyMEMwODAwMDA0MjA3RkZFMDQyMDA0MjAwODAwMEMxQzEzRTAzMDQwNTA0MDlGRkUxMDQwMTA0MDEwNDAxMDQwMTdGRTEwMDA5MgorOjIwQzBBMDAwMDQyMDdGRkUwNDIwMDgwMDBDRkMxMDAwMjgwMDRERkUxODEwMjgxMDQ4MTA4ODEwMDgxMDA4MTAwODUwMDgyMDI4Cis6MjBDMEMwMDAwNDIwMDQyMDdGRkUwNDIwMDUwMDAyODAwNDYwMDgxODNGRUVDMTA0MDEwMDFGRjAwMTAwMDEwMDdGRkUwMDAwRUIKKzoyMEMwRTAwMDA0MjAwNDIwRkZGRTA1MjAwMjgwMDQ0MDA4MzAzRkVFQzAwNDAwMDg3RkZDMDQyMDA4MTAxMUY4M0YxMDAwMDBEMAorOjIwQzEwMDAwMDQ0MDA0NDBGRkZFMDQ0MDE0NDAxRkZDMTAwNDIwMDQ0RkM0MDg0NDBGQzQwODQ0MDg0NDBGQzQwODU0MDAwOEFFCis6MjBDMTIwMDAwNDQwMDQ0NEZGRkUwNDQwMDIwMDA3RjAwODIwMTRDMDIzMDAwNDA4MEZGQzM4MDhDODA4MDgwODBGRjgwODA4Q0MKKzoyMEMxNDAwMDA0MjA3RkZFMDUyMDA0QTA3RkZDMDgyMDA2NDAwMTgwMDY2MDE4MUVFNDI0MDQyMDA0MjAwODIwMTAyMDIwMjA4NworOjIwQzE2MDAwMDQ0MDA0NDA3RkZFMDQ0MDAxMDA3RkZFMDgyMDBDMTAxMDJDMjQyODQ0NDAwMjQwMDE4MDA2NjAxODFFRTAwNDY1Cis6MjBDMTgwMDAwNDQwMDQ0MEZGRkUwNDQwMDU0MDdGRkMwMjIwMDQxMDA4RjgxRjEwMDQ0MDA0NDAwNDQ0MDg0NDA4M0MxMDAwNDEKKzoyMEMxQTAwMDA0MjAwNDIwRkZGRTA0MjAyMDAwMTdGQzg4NDA2MDQwNTA0MDEwNDAxMDQwRTA0MDIwNDAyMDQwMkZGRTIwMDAxRQorOjIwQzFDMDAwMDQ0MDA0NDBGRkZFMDQ0MDA0NDA3RkZFNDEwNDg5MDgwOTAwMUZGODIxMDAwMTAwRkZGRTAxMDAwMTAwMDEwMEJECis6MjBDMUUwMDAwNDIwMDQyMDdGRkUwNDIwN0ZGRTQxMDQ4MTAwMDEwQzdEQjAwNTQwMDkyMDExMTgyMTBFNDEwNDg1MDAwMjAwNDcKKzoyMEMyMDAwMDA0MjAwNDIwRkZGRTA0MjAzRkY4MDAwODFGRjgwMDA4M0ZGODAwMjBGRkZFMDgyMDA2MjAwNDIwMDBBMDAwNDBCMQorOjIwQzIyMDAwMDQ0MDA0NDBGRkZFMDQ0MDFGRjAxMDEwMUZGMDEwMTAxRkYwMTIwODExMEMxMDkwMTI2MDE0MzAzODBFMTAwNEUxCis6MjBDMjQwMDAwNDQwMDQ0MEZGRkUwNDQwMUZGMDEwMTAxMDEwMUZGMDEwODAxMjQwMjFCMDI0OEU0MjA0ODE4MDAwQzAwMDgwQ0IKKzoyMEMyNjAwMDA0MjAwNDIwN0ZGRTA0MjAwNDIwM0ZGQzA4ODgwNjkwMTQ4MDA4ODA3RkZFMDA4MDAxNDAwMjMwMEMxODMwMTA2MAorOjIwQzI4MDAwMDQ0MDA0NDBGRkZFMDQ0MDdFMjAwNDIwMDgyMDBBQTAwQ0E4MzkyNEM5MjIwQTIyMEMyMDA4MjAyOEEwMTA0MEFECis6MjBDMkEwMDAwNDQwMDQ0MEZGRkUwNDQwMTAwMDExRkMyMjIwN0MyMDA4MjAxNzIwN0MyMDIwMjAwNzIwNzgyMDIzRkUwMDAwOUYKKzoyMEMyQzAwMDA0NDAwNDQwRkZGRTA0NDAxMDEwMTIxMDI1RkU3ODEwMTAxMDJFOTA3MEQwMDA5MDBFMTBGMDEwNDA1MDAwMjAyQworOjIwQzJFMDAwMDQ0MDA0NDBGRkZFMDQ0MDA0ODAxMDgwMTBGRTdEMDQxMjI4MTAyMDEwMjAxMDUwMUM1MEUwODgwMTA2MDIwNEY3Cis6MjBDMzAwMDAwNDQwMDQ0MDdGRkUwNTQwMUZGODAxMDA3RkZFNDAwNDlGRTgwMDQwMDA4MDdGRkMwMTAwMDEwMDA1MDAwMjAwMkYKKzoyMEMzMjAwMDA0NDAwNDQwRkZGRTA0NDAwNDQ4N0MwODQ3RkU0NDA4NDQ4ODdDNDg0NDY4NDQ0ODQ0MDg3QzA4NDQyODAwMTBCRgorOjIwQzM0MDAwMDQyMDA0MjBGRkZFMDQyMDBGRjAwODEwMDgxMDBGRjAwMTAwM0ZGQzIxMDQyMjg0MjQ2NDI4MjQyMDE0MjAwODBGCis6MjBDMzYwMDAwNDIwRkZGRTA0MjAwNEY4M0Y4MDAxMDA3RkZDMDUyMDA5MTgzMTBFN0ZGNDA0MjAwNDM4MDgwODA4MjgxMDEwODkKKzoyMEMzODAwMDA0MjAwNDIwRkZGRTA0MjAwRjUwNzQ0ODA0NDhGRkZFMDQ0NDA3NDgxQzUwNjQyMjA0NTIwNDhBMTUwNjA4MDA0MAorOjIwQzNBMDAwMDQyMDA0MjA3RkZFMDgyMDBGRkMxMDAwMkZGMDQ5MTAwODkwRkZGRTA5MTAwODkwMEZGRTAwMTAwMDUwMDAyMDJBCis6MjBDM0MwMDAwNDQwMDQ0MEZGRkUwNDQwMDg0MDA4ODAxNEZFMzUwODU2ODg5NDkwMTQ1MDE0MjAxNDUwMTA4ODExMDYxNjA0QUUKKzoyMEMzRTAwMDA0MjAwNDIwN0ZGRTA1MjAxMEMwMTg4MDE3RkMzMDAwNTAxMDkyMTgxMTEwMTFBMDExMjAxMDAwMUZGRTEwMDA1RQorOjIwQzQwMDAwMDQyMDA0MjA3RkZFMDUyMDAyODAwNDQwMDgzMDNGRUVDMTA0M0ZGODA5MDAwRDIwMTkxMDIxMTg0NTEwMDIwMDFDCis6MjBDNDIwMDAwNDQwMDQ0MDdGRkUwNDQwMDU0MDAyODAwNDYwMDgxODNGRTZDMDA0MTIyMDBEQjAwOTIwMDA0MDdGRkMwMDAwQUMKKzoyMEM0NDAwMDA0NDAwNDQwRkZGRTA0NDAwNDM4M0ZEMDEyMTgwOTIwMUZGMDAwNDAwMDgwRkZGRTAxMDAwMTAwMDUwMDAyMDBBMAorOjIwQzQ2MDAwMDQyMEZGRkUwNDIwMDQyMDAwRjgzRjEwMTIxODA5MTAwQTIwRkZGRTA0MjAwNDIwMDI0MDAxODAwNjYwMzgxQ0RECis6MjBDNDgwMDAwNDQwRkZGRTA0NDAwNDQwNDQ5MDI4ODgxN0ZFMjhBMEM4QTAxOEEwMjhBMDQ4QTA4OTIyMDkyMjJBMUUxNDAwNzAKKzoyMEM0QTAwMDA0NDAwNDQwRkZGRTA0NDA0NDAwMjg0MDEwNDgyOTRDQzk1MDE1NjAyNjQwNDRBMDg0OTAwNTE4MkEwRTE0MDRFMQorOjIwQzRDMDAwMDQ0MDA0NDBGRkZFMDQ0MDA1NDAzRkY4MDgyMDA2MzAwNDQwRkZGRTAxMDAwMTAwN0ZGQzAxMDAwMTAwMDEwMEY4Cis6MjBDNEUwMDAwNDQwMDQ0NEZGRkUwNDQwMDEwNDNGRkUyMDA0NDAwODBGRTAwMDAwN0ZGQzA0ODAwNDgwMDg4MjEwODI2MDdFNTUKKzoyMEM1MDAwMDA0NDAwNDQwRkZGRTA0NDAwNTQwMUZGMDEwMTAxRkYwMTAxMDFGRjAxMTA4MTA5ODEwNjAxNDMwMzgxQzEwMDhCRgorOjIwQzUyMDAwMDQ0MDA0NDA3RkZFMDQ0MDdGRkU0MjA0OEZGMDBBMTAwOTUwMDgyMDBGRkMwMDA0N0ZGQzAwMDQwMDE0MDAwODJCCis6MjBDNTQwMDAwNDQwMDQ0MEZGRkUwNDQwMTA0MDE4NDAyN0ZDN0M0MDA5NDgxMTQ4MkQ0ODcxRjgwMDQyMUM0MkUwM0UwMDAwNDUKKzoyMEM1NjAwMDA0NDBGRkZFMDU0MDNGRjgwMTAwMUZGMDAxMDBGRkZFMDAwMDFGRjAxMDEwMUZGMDEwMTAxRkYwMTAxMDEwMzAyMworOjIwQzU4MDAwMDQ0MDA0NDBGRkZFMDQ0MDA4MjA3RkZDMDgyMDBGRTAwODIwMEZFMDA4MjBGRkZFMDgyMDBDMTAxMDE4MjAxMDQwCis6MjBDNUEwMDAwNDQwMDQ0MEZGRkUwNDQwMTQ0MDEwRkMxMDgwRkU4MDEwRkUzODkwMzQ5MDU0OTA1MTEwOTExMDEyMTAxNDEwN0UKKzoyMEM1QzAwMDA0NDAwNDQwRkZGRTE0NDAxMDkwN0VEMDEwODgzOTA4MzU0NjM2NjQ1NDQwNTA5MDkxMDgxM0ZDMTEwODEwMDA2MQorOjIwQzVFMDAwMDgyMDA4MjA3RkZFMDgyMDBGRTAwMTAwMUZGMDExMTAxRkYwMDEwMDNGRjgwMTAwMUZGMDAxMDA3RkZFMDAwMDUxCis6MjBDNjAwMDAwODQwMDg0MEZGRkUwOTQwMDk0MDdGRkMwMjQwMEMzMDM3RUVDMDA0N0ZGODAxMDAyMTIwMzExODQ1MDg4MjAwNDgKKzoyMEM2MjAwMDA4MjBGRkZFMDkyMDdGRkMwMTAwM0ZGMDAxMTBGRkZFMDExMDNGRjAwNDAwRkZGRTA4MjAwRTQwMDFFMDNFMUMwMQorOjIwQzY0MDAwMDQ0MDA0NDA3RkZFMTQ0MDEwOTAxMDg4RkZGRTEwODAxNEY4MTk4OEYxNTA1MjUwMTQyMDE4NTA1MThFMjYwNDg3Cis6MjBDNjYwMDAwNDQwMDQ0MEZGRkUwNDQwMTAwMDExRkMxRTg4MTA4OEZGODgwODUwNEE1MDY5MjA0OTUwODg4RTI5MDQxMjAwQTYKKzoyMEM2ODAwMDA0NDAwNDQwRkZGRTA0NDAxRkYwMTAxMDFGRjAxMDEwMUZGMDAwMDAzRkZDMjAwNDNGRkMyMDA0M0ZGQzIwMDQ0NworOjIwQzZBMDAwMDQ0MDA0NDBGRkZFMDQ0MDA4MjAwODIwN0UzRTRBMjA0QTIwNEFGQzRBODQ0QTg0NEE4NDRFRkMwODg0MDgwMDQzCis6MjBDNkMwMDAwNDQwMDQ0MEZGRkUwNDQwMEQzODMxMDgyMTA4M0Q3ODIxMDgyMTA4M0ZGODAyODAwNDQwMDgzMDMwMEVDMDA0QUMKKzoyMEM2RTAwMDA0MjAwNDIwRkZGRTA0MjAxNTIwMTA4MDFGRkMzMDgwNUZGQzkwODAxMDgwMUZGQzEwODAxMDgwMUZGRTEwMDBERQorOjIwQzcwMDAwMDgyMDdGRkUwOEEwMDkyMDFGRjAxMTEwMUZGMDExMTAxMjEwMUZGMDA1MDAwOTAwRkZGRTAxMDAwMTAwMDEwMDA0Cis6MjBDNzIwMDAwNDQwMDQ0MEZGRkUwNDQwM0VGQzIyODQyMjk0M0U4ODIyRkMyMkM0M0VBODIyOTAyMkE4NDJDNjRBODQ4NDgwOTQKKzoyMEM3NDAwMDA0MjAwNDIwRkZGRTA0MjAwN0YwMDgyMDEwNDAzRkY4NTEwODExMDgxRkY4MDJBMDAyOUEwNDkyMTg3RTYwMDA3NworOjIwQzc2MDAwMDQyMDA0MjBGRkZFMDQyMDA0MjAwN0YwMDgyMDEwNDAwNjgwMTg3ODEwMDgxRTc4MTAwODEwMDgxRkY4MTAwODlBCis6MjBDNzgwMDAwNDIwMDQyMEZGRkUwNTIwMDRBMDNGRkMwODIwMDgyMDA4NTAxNDg4MjMwNDAxMDBGRkZFMDEwMDAxMDAwMTAwRTQKKzoyMEM3QTAwMDA0NDAwNDQwRkZGRTA0NDAxMDIwMDgyMDdGNTAxMDQ4MUVBNjEzMTAxMjEwMTI0MDIyMjAyMjE4NEExMDg0MDA3QworOjIwQzdDMDAwMDQ0MDA0NDBGRkZFMDQ0MDIzRjgxQTA4OTIwODQzRjg2QTA4NEEwODEzRjg2MjA4MjIwODIyMDgyRkZFMjAwMEE0Cis6MjBDN0UwMDAwNDIwMDQyMDdGRkUwNTIwMDA4MDdGRkU0MDA0OUZGODAyMDAwNDAwMEZGMDE4MTAyODEwNDgxMDBGRjAwODEwQTMKKzoyMEM4MDAwMDA4MjA3RkZFMEEyMDA5MjA3RkZFNDAwNDlGRjgxMDEwMTAxMDFGRjAxMDAwMUZGMDEwMTAxMDEwMUZGMDEwMTBFQgorOjIwQzgyMDAwMDQ0MEZGRkUwNDQwMDU0MDdGRkU0MDA0OTAwODFFRjAyMjkwNDI5MEE0OTAxNEIwMDg4NDEwODQyMDdDQzAwMENGCis6MjBDODQwMDAwNDQwMDQ0MEZGRkUwNDQwN0ZGRTQyMDQ4NDIwMDg0MDFGODgwMjdDM0Y4NDExMjAxOTEwMjExODQ1MTAwMjAwOEUKKzoyMEM4NjAwMDA0NDAwNDQwRkZGRTA0NDAwNDQwN0ZGQzA1NTAwOTUwMTE1MDE1NTAzOTQ4RDI0ODEyNjgxMjU0NTRGNjI4NDQ4QgorOjIwQzg4MDAwMDQyMDA0MjA3RkZFMDQyMDFGRTAwMDQwMDA4MDQ5MjQ0NTQ0NDM4NDQ1NDQ1OTM0NDUyNDQyMDQ3RkZDNDAwNEFGCis6MjBDOEEwMDAwNDIwRkZGRTA0MjAwODAwN0VGQzA4MjQzRTQ0MDg0NDdFOUMwOTA4RkZGRTAxMDAwMkMwMEMzMDMwMEVDMDA0OEUKKzoyMEM4QzAwMDA0NDAwNDQwRkZGRTA0NDAwNDQ4MDgwODdFMDgwOEZFRkYwODA4ODgwODQ4N0Y2ODA4NDgwRjA4RjgyODQwMTAwMgorOjIwQzhFMDAwMDQ0MDA0NDBGRkZFMDQ0MDA4MjA3RkZDMDgyMDBGRTAwODIwMEZFMDA4MjBGRkZFMTIyMDEzMTgxNDEwMUZGQ0RECis6MjBDOTAwMDAwNDIwMDQyMEZGRkUwNDIwMDQyMDA4MDAwOEZDN0U4NDE4RkMxQzg0MkE4NDRBRkM4ODg0MDg4NDA4RkMwODg0QUMKKzoyMEM5MjAwMDA0NDA3RkZFMDQ0ODA0NDQzRkZFMjA0MDNGQzAyNDQ4MjQ0QzNGNDgyOTI4MjkzMDI2MjA0OTUyNTE0QUEwODQ1OQorOjIwQzk0MDAwMDQyMDdGRkUwNDI4MDQyNDNGRkUyMDIwMkZBMDJBQTQyQUE0MkFBODJBOTAyMjEwMjUxMDQ5QUE1MENBQTA4NEQ2Cis6MjBDOTYwMDAwNDIwMDQyMDdGRkUwNDIwMTA4MDFFOTAxMEU0MTQ4NDNBN0MxNDAwMUZGMDEwMTAxRkYwMTAxMDFGRjAxMDEwQUQKKzoyMEM5ODAwMDA0NDBGRkZFMDQ0MDFGRjAxMDEwMUZGMDAwMDA3RkZFMTAxMDFGRjAxMDEwMUZGMDEwMTBGRkZFMDAxMDAwMTBCQworOjIwQzlBMDAwMDQ0MEZGRkUwNTQwMUZGMDExMTAxRkYwMDEwMEZGRkUwMDAwMUZGMDExMTAxMTEwMTI5MDEyNDAwNDMwMTgyMDAzCis6MjBDOUMwMDAwNDQwMDQ0MEZGRkUwNDQwMDQ0MDFGRjAxMTEwMUZGMDExMTAxRkYwMDEwMDI4QTgyODI0MjgzNjQ3RTQwMDAwMzUKKzoyMEM5RTAwMDA0NDAwNDQwRkZGRTA0NDAzRUY4MjI4ODNFRjgwMDAwM0ZGQzAwMDBGRkZFMDQwMDBGRjAwNDEwMDA5MDAwNjAxOQorOjIwQ0EwMDAwMDQ0MDA0NDBGRkZFMDQ0MDEzRjgxQTA4MzIwODUzRjg5MDQwMUZGRTEwRTAxMTUwMTI0RTE0NDQxODQwMTA0MEZECis6MjBDQTIwMDAwNDIwMDQyMEZGRkUxNDIwMjFGQzdEMjQ0NTI0NDUyNDQ1RkM3RDA0NDUwMDQ1MDA0NTAyN0QwMjQwRkUwMDAwOUQKKzoyMENBNDAwMDA0NDBGRkZFMDU0MDdGRkMwMDAwMUZGMDEwMTAxRkYwMDAwMDdGRkU0MDA0QkZGODAxMDAwMTAwMDUwMDAyMDAxNgorOjIwQ0E2MDAwMDQ0MDA0NDRGRkZFMDQ0MDExMTAwOTIwN0ZGQzA1NDAzOTM4MDIwMEZGRkUwNDQwMEM0MDAzODAwNjcwMzgwOEE2Cis6MjBDQTgwMDAwNDQwMDQ0MEZGRkUwNDQwMjQzQzEzQzA0MjFDMjJFMDJBQTQwQUFDMTI5MEYyOTAyMjg4MjRBNjI1QzQyODgwOEQKKzoyMENBQTAwMDA0MjAwNDIwN0ZGRTA1MjAzRkZFMjAwNDVGRjgwMDAwMEZGMDA4MTAwRkYwMDgxMDBGRjAwMDAwN0ZGRTAwMDAyQQorOjIwQ0FDMDAwMDQ0MDA0NDBGRkZFMDQ0MDAwMDAzRUY4MjIwODNFRjgyMDA4M0UwMDIwRkMyMDg4M0U1MDIwMjAyMEQ4MjMwNkRFCis6MjBDQUUwMDAwNDQwRkZGRTA1NDAzRkZDMDEwMDFGRjgwMjAwN0ZGRTA4MjAxN0QwMjEwRTVGRjQwNTQwMDkzMDExMjAwMTAwOUQKKzoyMENCMDAwMDA0MjA3RkZFMDUyODFGRkMwMTQwN0ZGRTAyNjAwRjg4NzQwODAzRjgwMDAwMEZGODA4MDgwRkY4MDgwODBGRjhDOQorOjIwQ0IyMDAwMDQ0MDdGRkUwNDQwM0ZGQzIwMDAyRkY4MjAwMDNGRkUyNDQ4MjUzMDJFMEUyNDI0M0ZGQzQyMjA0MkEwODA0MDhECis6MjBDQjQwMDAwNDQwRkZGRTA0NDAxRkYwMTIxMDExMTAxRkYwMDQwMEZGRkUwODMwMzdDRUM0NDQwN0Y4MDAwODNGQzgwMDE4ODMKKzoyMENCNjAwMDA0NDBGRkZFMDQ0MDAwMDAxRkYwMTExMDFGRjAxMjkwMTQ1MDFGRjAwMjAwMDk4ODI5MjQyODM2NDdFNDAwMDA3MworOjIwQ0I4MDAwMDQ0MDA0NDBGRkZFMDQ0MDEwNDAxRkZDMzIxMDYxMjBBRkZFMjAwMDIzRjgyMjA4MjIwODIzRjgyMjA4MDAwMDFECis6MjBDQkEwMDAwNDQwRkZGRTA0NDAwODQwMEQyMDEyMTgyNDRFNEZFNDAwMjAzRTdDMTIyNDBBMTQxMjI0MjI0NDBBMTQwNDA4QjgKKzoyMENCQzAwMDA0NDBGRkZFMDQ0MDA1NDA3RkZDMDAwMDBGRjAwODEwMEZGMDAwMDAzRkZDMjAwNDI3RTQyNDI0MjdGNDIwMDgwNQorOjIwQ0JFMDAwMDQyMDdGRkUwNTIwMDRBMDFGRkU5MDAwNzQwMDU3RjgxNDgwMzg4MERGRkUxMTQwMjEyMDIyMTg0NDBFODgwNDg4Cis6MjBDQzAwMDAwNDQwRkZGRTA0NDAwNTQwN0ZGRTAyNDAxMTkwMTI1MDFGRjAwMTAwM0ZGODIyODgyNDQ4MkZFODIwNDgyMDE4NzQKKzoyMENDMjAwMDA0MjA3RkZFMDUyMDAwODAzRkZDMDQyMDdGRkU0MjA0ODEwMDNGRkMwNDAwMDdGMDA4MTAwODEwMTA1MDIwMjAwNQorOjIwQ0M0MDAwMDQyMEZGRkUwNDIwMDg0MDNGRkMwNDgwM0ZGODA0ODhGRkZFMDQ4ODNGRjgwQ0MwMTRBMDI0OUM0NDg4MDQ4MDc1Cis6MjBDQzYwMDAwNDIwMDQyMEZGRkUwNDIwMjIwMDE0N0M3RjQ0MDg0NDJBN0MyQTQ0M0U3QzJBNDQwODg0MTA4NDIxMTQ0MjA4QUYKKzoyMENDODAwMDA0NDAwNDQwRkZGRTA1NDA0MDgwMzdGOEE0MDg1N0Y4NTQwODE3RjgxNDg4RTQ1MDI0MjAyNTE4MkUwNjI0MDRDOAorOjIwQ0NBMDAwMDQ0MDA0NDA3RkZFMDQ0MDdGRkU0MTA0ODJDODBDMzAzRkVFQzEwNDFGRjgxMTIwMDkzMDA5NDA3RkZDMDAwMEFDCis6MjBDQ0MwMDAwNDQwMDQ0MDdGRkUwNDQwRkZGRTA0MTAyODIwMTBGQ0ZFODQxNEE0MThBNDEwQTQxMEE0MTA1MDUwOEUyMzA0RTMKKzoyMENDRTAwMDA0NDBGRkZFMDQ0MDA4MDA3RjIwMDgzRTNFNDIyQUE0MkEyMDNFMjAxQzUwMkE1MDRBODg4ODg2MDkwNDBBMDBFRgorOjIwQ0QwMDAwMDQ0MEZGRkUwNDQwMUZGODEyNDgxRkY4MDAwMDdGRkU0MDAyQkZGODA4MDAwRkMwMTI0MDExNDQxNjQ0MTgzQzY0Cis6MjBDRDIwMDAwODQwRkZGRTA4NDAwOTAwMzdEQzI0NDQyN0M0MjQ0NDJDNDQ3N0RDMjAwMDA4NDAwODQwMDg0NDEwM0MyMDAwNjQKKzoyMENENDAwMDA0NDAwNDQwRkZGRTE0NDAxODIwMzAzQzQ5MjA4OTIwMTdGRTMwMjBEMjNDMTIyMDEyMjAxNTIwMTRGRTE4MDAwRQorOjIwQ0Q2MDAwMDQyMDA0MjBGRkZFMDQyMDA4NDAxNDQwMjI3RTVENDg4MDg4MTI0ODRCMjgyQTEwMjQyODBGNDY3ODg0MDEwMEJDCis6MjBDRDgwMDAwNDIwMDQyMEZGRkUyNDIwMTQ4MDAwRkVGRDAwMjI4MDNDRkMyNTIwMjdGRTI0MjAyNDUwNDQ4ODU1MDY4QTA0Q0EKKzoyMENEQTAwMDA0NDBGRkZFMDQ0MDE0MDAwOUZDMjUwNDI0ODQyRkU0MzQ4NDI3RTQyNDg0MjdFNDI0ODQyN0Y0MjQxNDIwMDg1OAorOjIwQ0RDMDAwMDQyMEZGRkUyNDIwMTNGQzRBMDAyQkY4MTIwODEzRjg2MjAwMjNGRTIxMDA3RkZDMDU0MDA5MzAzMTBFQzEwNEFDCis6MjBDREUwMDAwNDQwRkZGRTA0NDAwNTQwN0ZGRTQwMjJCRTNDMDAyMDAwRkM3RjQ4MTQ0ODE0MzAxNDRBMjQ4NjIzRkU0MDAwQTQKKzoyMENFMDAwMDA0MjAwNDIwN0ZGRTA1MjAwNEEwN0ZGRTQwMDQ5M0Y4MTg0MDMwODA1M0Y4OTIwODEzRjgxMjA4MTNGODEyMDgwMQorOjIwQ0UyMDAwMDQ0MEZGRkUwNDQwM0U3ODEyNDgwQTM4MTM0ODYyODgwQzQwMzFCMEM2MEUzOEUwMDcxODM4RTAwNzAwNzgwMDA3Cis6MjBDRTQwMDAwNDIwRkZGRTA1MjAzRkY4MDEwMDFGRjAxMTEwMUZGMDExMTAxRkYwMDEwODNGRkMwMjA4MjlBNDI5MzY0N0U0NDAKKzoyMENFNjAwMDA0NDBGRkZFMDQ0MDdGRkMwNDQwM0ZGODI0NDgzRkY4MTAxMDFGRjAxMDEwMUZGMDAxMDA3RkZDMDEwMDAxMDBCOAorOjIwQ0U4MDAwMDQyMDA0MjBGRkZFMDQyMDdGRkM1MTIwNEEyMDdGN0U0NDk0NTUxMDU1MTA1RjI4NDQyODQ0NDQ4ODQ2OTA4NEQ3Cis6MjBDRUEwMDAwNDIwRkZGRTA0MjAwNDEwN0Y1MDEwN0UzMjUwQ0M5MDFBN0MyQTEwQ0QxMDM1RkVDNDgwMDQ3MDI4MEUxMDAwMDAKKzoyMENFQzAwMDA0MjBGRkZFMDQyMDFGRjAxMDEwMUZGMDEwMTAxRkYwMDAwMEZGRkMyMjg4M0U1MDIyMjA3RjUwMDI4RTAzMDRDNQorOjIwQ0VFMDAwMDQ0MEZGRkUwNDQwM0UwMDIyNTAzRTQ4MDA0MDdGRkMyMjQwM0UyNDIyMjgzRTEwMjNCMkZFNEEwMjg0MDIwMEJCCis6MjBDRjAwMDAwNDQwRkZGRTA0NDAxRkY4MTI0ODFGRjgwMDAwN0ZGRTQwMDI4RkY0MDgxMDBGRjAwODEwMEZGMDA4MTAwRkYwN0QKKzoyMENGMjAwMDA0NDAwNDQwRkZGRTA0NDAwMEY4M0YxMDA1MjBGRkZFMDU0MDE5MzA3RkZFMTExNDFGRjAxMTEwMUZGMDEwMTAzMAorOjIwQ0Y0MDAwMDQyMDA0MjBGRkZFMDQyMDIyMEUxNDcwN0Y0MDQ5NDA3RjdFNDk0ODdGNDgwODQ4RkY0ODA4ODgwODg4MDkwODRGCis6MjBDRjYwMDAwNDIwN0ZGRTA0MjAwNDIwM0U0ODIwNDgzRkZFMjA0ODNFNDgyMDQ4RkZGRTEwMDAxMjQ4MkY0NDdBODQyMTAwNEUKKzoyMENGODAwMDA0NDAwNDQwRkZGRTA0NDA3RTkwMjA5MDIzOUUzQzkwNDc5RTQ0OTBBODkwMUI5RTEwOTAyMDkwNDdGRTgwMDBCRQorOjIwQ0ZBMDAwMDQ0MEZGRkUwNDQwM0ZGODI0NDgzRkY4MDAwMDdGRkU0MDA0QkZGODEwNDAzRTQ4NDQ3MEE4NDIxMDNFNjAwMDc4Cis6MjBDRkMwMDAwNDIwN0ZGRTA0MjAxNDIwMzExMDQ1NTA5N0RFMTAyNDI3RTQ2MDI0QTdBNDI0OTgyNDk4MjhBNDI4QzYzMDg0MTkKKzoyMENGRTAwMDA0NDBGRkZFMDU0MDNGRjgwODIwRkZGRTAwMDAxRkYwMTAxMDFGRjAxMDEwMUZGMDAwMDgyOTA2Mjg5MjQ3RjBCQQorOjIwRDAwMDAwMDQ0MEZGRkUwNDQwMDU0MEZGRkUwOEEwMTA5MDI0RkM3OTkwMTZGQzI0OTA3OEZDMDg5MDEwOTAyMEZDNDA4MDhBCis6MjBEMDIwMDAwNDQwMDQ0MEZGRkUxNDQwOTI0MDU0NDRGRjdFMzg4ODU2ODg5MzQ4MjAyOEZFMTAyODI4NDgyNDMwNDZDRTg0REQKKzoyMEQwNDAwMDA0MjAwNDIwN0ZGRTA0MjAwMDQwM0UyMDIzRkUyMjg0M0U0ODIxRkUzRTIwNTIyMDUyRkU1RTIwOTIyMDAwMjA2RAorOjIwRDA2MDAwMDQ0MEZGRkUwNDQwMjNGQzIyMDBGQUY4MkEwMDJCRkU0QTk0NEFDODRBOTQzM0ZFMkExMDQ0OTA4NDkwMDgzMDRDCis6MjBEMDgwMDAwNDQwN0ZGRTA1NDAzRkY4MDEwMDBGRjAwMDAwN0ZGRTQwMDQ5RkYwMDgyMDFGRjAwMTEwM0ZGODAxMDA3RkZFMDYKKzoyMEQwQTAwMDA0NDBGRkZFMDQ0MDNGRjgwMTAwN0ZGRTQxMDQ5RDcwMDAwMEZGRkUwODAwM0ZGODI0NDgyNDQ4MjQ0ODIwMTAzNAorOjIwRDBDMDAwMDQ0MDdGRkUwNDQwM0ZGMDAxMDBGRkZFMTkzMDE1NTAxRkYwMDEwMDNGRjgwMTAwN0ZGRTI0NDgyMjI2NDIyNDkxCis6MjBEMEUwMDAwNDQwMDQ0MEZGRkUwNDQwMjA4ODNFNTAyNUZFN0UyMEFBRkMzRTIwMkEyMDNGRkUwMDIwMEUyMDcwMjAwMDIwRTcKKzoyMEQxMDAwMDA0MjA3RkZFMDUyMDNGRkMwNDIwMDdFMDAwMDAzRkY4MjQ0ODI3QzgyMTA4N0ZGRTAzNDAwNTMwMTkxQzYxMDhCNQorOjIwRDEyMDAwMDQ0MEZGRkUwNDQwM0U4MDA4RkM3RUE0MUQyNDJBNTQ0OTg4MDY0MDE5MzBFNTQ2MDM4MDBENjAzMTE4MDMwMDAwCis6MjBEMTQwMDAwNDQwN0ZGRTA0NDAzRkZDMDEwMDdGRkU1MTQ0ODkyMDEwODAzRkY4NTA4MDlGRjAxMDgwMUZGMDEwODAxRkZDNjMKKzoyMEQxNjAwMDA0MjA3RkZFMDRBMDQwRjAyMDgwMEZGRUU4ODQyQkUwMjg4ODJGRjAyOTA4MkFEMDJDRTAyMTUwNTY0ODhGRkU3NAorOjIwRDE4MDAwMDQ0MEZGRkUyNDQwMzdDMDI0OUU1N0MwMUQ0MDM3RkU2NTQ4QTdDODIxMDgyRkU4MjEwODIyODgyNDQ4Mjg1ODZECis6MjBEMUEwMDAwNDQwRkZGRTI0NTAzRjIwNkE3Q0JGQTgyQTEwM0Y1RTAyNjQwRjgwMDQxMDFGRjgwOTQ4MEQyMDMxMTAwMjAwNTYKKzoyMEQxQzAwMDA0NDBGRkZFMTQ0MDdERkM0NDkwN0RGQzQwMjA3REZDNDQyMDdEMjAwMTIwRkZGRTAzQzAwRDMwMzEwRUMxMDRGOAorOjIwRDFFMDAwMDQyMEZGRkUwNTIwM0ZGQzI0MjAzRUZDMkU3MDM1QTgyMjQ0M0U3QzIyNDAyRTc4MjI0MDVFN0M0MjQwODI0MDBECis6MjBEMjAwMDAwNDIwMDQyMDA0MjAwNDIwMDQyMDA0MjA3RkZFMDQyMDA0MjAwNDIwMDgyMDA4MjAxMDIwMTAyMDIwMjA0MDAwMUQKKzoyMEQyMjAwMDAxMDAwMDgwN0ZGRTA0NDAxNDUwMTQ0QzI0NDQwOTQwMTRBMDA0MjBGRkZFMDQyMDA4MjAwODIwMTAyMDIwMjA3RQorOjIwRDI0MDAwMDEwMDAxMDA3RkZFMDI0MDA0MzAxODFFRTAwNDUxMTAxMTEwMTExMDExMTAxMTEwMjExMDIxMTA0MTEwODAxMDk3Cis6MjBEMjYwMDAwMjAwMDIwMEZGRkUwNDQwMDgyMDFGRjgzMDBFNTQ0NDEyNjAxMDgwMTE0MDEyMzAxQzIwMTAwMDNGRkMxMDAwMjgKKzoyMEQyODAwMDAyMDAwMjAwN0ZGRTA0MjAwODE4M0ZGRUM4MjQwRkUwMDgyMDBGRTAwODIwMDgzRUZGRTAwMDIwMDAyMDAwMjBFRAorOjIwRDJBMDAwMDIwMDAxMDA3RkZFMDQ0MDE0NTAyNDRDQzk0ODEwODAyMTAwMDEwMDdGRkUwMjgwMDQ0MDA4MzAxMDFDNjAwODA0Cis6MjBEMkMwMDAwMEY4M0YyMDEyMzAwOTYwMDU0MDA4RTAxRjgwMDYxMDA4RjgxRjkwMDEwMDdGRkMwMjgwMEM2MDMwMUVDMDA0M0YKKzoyMEQyRTAwMDAyMjAyMjIwMjIyMDNGRkUwMjIwN0UyMDIyMjAyMkZDNDIwMDAxMDA3RkZFMDI4MDA0NDAwODMwMzAwRUMwMDQ2QgorOjIwRDMwMDAwMTA0MDEwNjA3RTgwMTBGQzI5MDQ0NUY0QkU5NDAwOTRGRTk0MjBGNDdDOTQyNDg4MDQ4MjA0ODIxNDdFMDgwMEVGCis6MjBEMzIwMDAwMjAwMDIwMDAyMDAwMjAwN0ZGRTAyODAwMjgwMDI4MDA0ODAwNDgwMDg4MDA4ODIxMDgyMjA4MjQwN0U4MDAwNTYKKzoyMEQzNDAwMDEwNDAxMDYwMTA0MDEwNDBGRjdDMTQ4NDE1MDQxNDQ0MTQyNDE0MzQyNDI0MjQwNDQ0MTQ0NDBBODdGRTAwMDBDRQorOjIwRDM2MDAwMjA0MDIwNDAyMEEwMjA5MEZEMDgyOTE2MkE5NDJDOTAyODkwMjg5MDI5MTA0OTEwNEExMjg4MDI4N0ZFMDAwMDUyCis6MjBEMzgwMDAyMDkwMjA5MDIyOUVGRTkwMkFBODJBQzQyODgwMjlGQzI5NTQyOTU0Mjk1NDRCRkU0ODAwODgwMjg3RkUwMDAwM0IKKzoyMEQzQTAwMDAyMDAwMjAwMDIwMDdGRTAwMjAwMDIwMDAyQzAwMzAwMEUwMDcyMDAyMjAwMDIwMDAyMDAwMjAwMEEwMDA0MDA4OQorOjIwRDNDMDAwMTAwMDEyMDAxMEZFMTIwMkZFMDIxMjAyMTYwMjFBMDIzMjAyRDIwMjEyMDIxMjAyMTIwMjEyMDI1MjBBMjIwNEU3Cis6MjBEM0UwMDAxMDIwMTAyMDEwMjBGREZFMTA0MDE0NDAxQkZFMzA4MEQwODAxMUZDMTAwODEwMTAxMEEwMTA2MDUwMzAyMDIwQzAKKzoyMEQ0MDAwMDEwMjAxMDIwMTAyMEZERkUxMTIyMTUyMjE5RkUzMTIyRDEyMjExRkUxMDIwMTAyMDEwMjAxMDIwNTAyMDIwMjAzQgorOjIwRDQyMDAwMTA4ODEwQzgxMDg4MTEwOEZEMDgxM0ZFMUIwODE1ODgzMTQ4RDE2ODExMjgxMTA4MTEwODExMDg1MTI4MjExMDE1Cis6MjBENDQwMDAxMDQwMTA0MDEwODhGRDA0MTNGRTEwMDIxNDg4MTg4ODM3RkVEMDg4MTA4ODExMDgxMTA4MTIwODU0MDgyMDA4M0YKKzoyMEQ0NjAwMDExMTAxMTEwMTExMEZBN0UxMjkyMTc5MjE1MTIxOTEyMzIxMkQ0OTIxRkEyMTBBMjEwNDI1MDhBMjMwNDAwMDBDMgorOjIwRDQ4MDAwMTAyMDEwMjAxMDIwMTNGRUZDMjAxMDIwMUJGRTEwMDAzMDAwRDFGQzExMDQxMTA0MTEwNDExMDQ1MUZDMjEwNEIzCis6MjBENEEwMDAxMDNDMTNDMDEwNDBGQzQwMTdGRTEwQTAxNDkwMTkwODMyOTZEQzkwMTA5MDEwOTAxMTEwMTExMDUyMTAyNDEwRUIKKzoyMEQ0QzAwMDEwMDAxMDkyMTEyNEZBNDgxMTI0MTA5MjE0MDAxODgwMzBGQ0QxMDQxMjg4MTA1MDEwNjAxMDQwNTE4MDI2MDBFRQorOjIwRDRFMDAwMTAwMDExRjgxMTA4RkQwODExRjgxNDAwMUJGQzEyMjQzMjI0RDNGQzEyMDAxMjAwMTIwMjEyMDI1MUZFMjAwMEFCCis6MjBENTAwMDAxMDAwMTAxRTEzRTBGQzQ0MTEyODE0OTAxODA4MzAwOEQzRkUxMDA4MTA4ODEwNDgxMDQ4MTAwODUwMjgyMDEwNzQKKzoyMEQ1MjAwMDEwMDAxM0Y4MTA4OEZCRkUxMDg4MTA4ODE3RjgxODgwMzEwMEQxRkMxMzA0MTUwNDE5MDQxMUZDNTEwNDIwMDA5QgorOjIwRDU0MDAwMTAwMDExRjgxMDQwMTA0MEZCRkUxMEEwMTUxMDE5MDgzMjRFREM0NDEyNjgxMjU0MTY1NDEwNDA1MTQwMjA4MEI4Cis6MjBENTYwMDAyMDAwMkZGRTI0QTRGQ0E0MjdBODI0QTgyQ0IwMzRBODY3QTRBNEEyMjRBMjI3QjIyQ0FDMjBBMEEwQTA0MEEwRkIKKzoyMEQ1ODAwMDIwMDAyM0ZFMjIwMDIyMjBGQTIwMjNGQzIyMjAyQTIwMzNGRUUyMjAyMjIwMjNGQzI0MjAyNDIwQUZGRTUwMDAwOAorOjIwRDVBMDAwMTA0MDEwNDAxN0ZFRkM0MDEwQTAxNTEwMUEwRTM1RjREMDAwMTdGRTEwNDAxMjQ4MTI0NDE0NDY1MTQ0MjA4MEUwCis6MjBENUMwMDAxMDQwMTA0MDEzRkNGQzYwMTA5MDEzMEMxN0ZFMTgwODMzQzhEMjQ4MTI0ODEzQzgxMDA4MTAwODUwMjgyMDEwMkEKKzoyMEQ1RTAwMDEwMDAxM0ZFMTIwMkZFRkUxMjIyMTYyMjFBRkExMjIyMzIyQUQyMjYxM0ZFMTIwMjEyMDIxM0ZFNTIwMjIwMDAzNAorOjIwRDYwMDAwMTAyMDEwNDAxM0ZDMTIyNEZFMjQxM0ZDMTIyNDFBNDQzM0ZDRDBBMDExMjAxRkZFMTAyMDEwMjA1MDIwMjAyMDgzCis6MjBENjIwMDAxMDAwMTEwMDExMDAxMUZFRkU0MjEyNTIxNTYyMTg0MjM3RkFEMEUyMTE1MjEyNUExNDQyMTA0MjUwNEEyMDA0MUMKKzoyMEQ2NDAwMDEwNDAxMDIwMTNGQ0ZDMDAxMTA4MTA5MDE0QTAxRkZFMzAwMEQxRjgxMTA4MTEwODExMDgxMTA4NTFGODIxMDhFNgorOjIwRDY2MDAwMTA0MDEwMjAxM0ZDRkEwNDEyMDQxM0ZDMUEzMDMyMjhEM0ZFMTIyMDEyMjAxNDUwMTQ1MDE4ODg1MTBFMjYwNDJFCis6MjBENjgwMDAxMDQwMTAyMDEzRkVGRTAyMTNGRTEyMDAxNkZFMUE4MjMyRkVEMjgyMTJGRTEyODIxNDgyMTQ4MjU4OEEyMDg0NEMKKzoyMEQ2QTAwMDEwMDAxM0Y4MTI0ODE3RkVGQTQ4MTNGODE4MDAzM0Y4RDI0ODEyNDgxMjQ4MTJDODEwQTAxMTE4NTYwQzIwMDg0NQorOjIwRDZDMDAwMjI5MDIyOTAyN0ZFRkE5MDIyRjAyMjAwMkJGQzMwNDA2MDQwQTdGRTIwRTAyMTUwMjI0ODJDNDZBMDQwNDA0MDdBCis6MjBENkUwMDAxMDQwMTA0MDE3RkUxMEUwRkREMDExNDgxQTQ2MTQwNDMzRjhEMjA4MTNGODEyMDgxM0Y4MTAwMDU3RkUyMDAwMkQKKzoyMEQ3MDAwMDEwMDAxM0ZFMTIwMDEyRjhGRTg4MTJGODE2ODgxQUY4MzI0MEQzRkUxMjkwMTI2MDEyNUMxMzg4NTNGRTIwMDBCQgorOjIwRDcyMDAwMjIxMDIyMTgyMjEwRkJCRTI0MjIyODQ0Mjc5MDMyMTA2RkQwQTIxMDIyMTAyMkE4MjMyOEEyNDY0MDg0MDAwMDAzCis6MjBENzQwMDAxMDQwMTA0MDEwQTBGRDE4MTNGRTE0MDQxQkM0MTI1NDMzRDREMjU0MTNENDEyNTQxMjU0MTI0NDUyQ0MyMjQ0M0MKKzoyMEQ3NjAwMDEwNDAxMDIwMTNGQ0ZEMDgxMDg4MTQ5MDFCRkUxMDAwMzFGOEQxMDgxMTA4MTFGODExMDgxMTA4NTFGODIxMDhFOAorOjIwRDc4MDAwMTA0MDEwMjAxM0ZFMTIwNEZDMDAxMUY4MTQwMDE5RjgzMTA4RDFGODExMDgxMUY4MTAwMDEwMDA1N0ZFMjAwMEZGCis6MjBEN0EwMDAyN0ZDMjQwNDI0MDRGRkZDMjQwODI0ODgyQzUwMzVGRTY0ODhBNDg4MjdGRTI0ODgyOTA4MjkwOEIyMDg0NDA4MjMKKzoyMEQ3QzAwMDEwMDAxM0RFMTQ4NEZBQTgxMTEwMTIwODFCRjYzNDQwRDA0MDE3RkUxMDQwMTA2MDEwOTAxMDg4NTEwQzIyMDRBRQorOjIwRDdFMDAwMTA4MDEwRjgxMTA4MTFGMEZDMTAxM0ZFMTQ4MDE5NEMzRTcwRDFCMDE2NjgxMEE4MTMyNjFDMjQ1MEEwMjA0MDMzCis6MjBEODAwMDAxMDQwMTA3QzEwNDAxM0ZFRkU0NDEyNDAxN0Y4MUE0NDMyM0NEMjAwMTI0MDE1MjQxNUEyMUE4QTUwODgyMDc4MzQKKzoyMEQ4MjAwMDEwMDAxM0ZDMTI0NDEyNDRGQkZDMTI0NDFBQjQxMzE0MzNGQ0QwMDAxMDQwMTUyNDE1MjIxRDBBNTBGODIwMDA4RAorOjIwRDg0MDAwMjAxRTI3RTAyNDIwRkMzQzI0MjAyNUZFMkQyNDM1Rjg2NTIyQTUxRTI1MDAyOTc4MkE0ODMyNEFBNDhBNDEwNkFGCis6MjBEODYwMDAxMjE4MTExMDEwQTBGRkZFMTEyMDE3RjgxMTI4MUZGRTMxMjhEN0Y4MTMzMDE1MjgxNTI4MTkyNjUxMjQyMTIwNDAKKzoyMEQ4ODAwMDIwMDAyNDVFMjI5MkY3RDIyMTFFMjkxMjM1NTI2NTUyQTdERTIxMTIyMTEyMjIyMjIyMjIyNDQyQTg0QTQwODQyMgorOjIwRDhBMDAwMTAwMDEzRkMxMjA0RkJGQzEyOTAxMjkwMUJGQzEyOTAzM0ZFRDJDNDEyQTgxNDkwMTQ4ODE4QUU1MEM0MjA4MDA0Cis6MjBEOEMwMDAxMDAwMTdCQzEwODRGQzg0MTNCQzEyMjAxQTIwMzNCRUQwODIxNDkyMTM4QTEyOTIxNEEyMTA4MjUyOEEyMTA0QTMKKzoyMEQ4RTAwMDExRjAxMDkwMTA2MEZDQjAxMTA4MTdCRTFDOTQxMzQ4MzRENEQ3RkUxMDQwMTBFMDExNTgxNjRFNTA0NDIwNDA5NAorOjIwRDkwMDAwMTAwMDExRkMxMTI0RkRGQzExMjQxMUZDMTQ0MDE4ODgzMUYwRDA0NDExRkUxMDIyMTEyODExMjY1MkEyMjA0MDRDCis6MjBEOTIwMDAyMDAwMjdCRTI0QTIyNEEyRjZBQTI2QUEyMzA4MzQ5NDY4MjJBMDQwMkZGRTIwOTAyMUEwMjA3MEExOEU0NjA0RTIKKzoyMEQ5NDAwMDIwNDAyMDIwMjdGRUZDOTAyNDkwMjQ5MDI3RkUzNDkwNjQ5MEE0RjAyNDAwMjQwMDJBQTRBQTUyNTY1MjAwMDBFMworOjIwRDk2MDAwMjAxMDI3OTgyMTEwMjExMEZGRkUyNEEyMjdBMjM0RTQ2NEE0QTc5NDI0OTgyNEM4Mjc4ODJDOTRBMEE2NDBDNDBFCis6MjBEOTgwMDAxMDAwMTNERTEwNDIxMTRBRkNDNjExNEExQTIyMTA0MDMxRkNEMTA0MTEwNDExRkMxMTA0MTEwNDUxRkMyMTA0NzAKKzoyMEQ5QTAwMDIxMDAyMTNFMjdDOEY5MTAyMTNFMjdBMjMwMkEyMDJBNjdBQUE0QUEyNEFBMjRBQTI3ODgyNDk0QTAyMjQwNDI3RAorOjIwRDlDMDAwMTA4MDEwRjgxMTEwRkJGQzEyNDQxM0ZDMTI0NDFCRkMzMDAwRDdGRTEwMDAxMUY4MTEwODExRjg1MTA4MjFGODEzCis6MjBEOUUwMDAxMTEwMTdGRTEwQTBGQkZDMTJBNDEyQkMxQjA0MTNGQzMyMDREM0ZDMTAxMDE3RkUxMDkwMTA1MDUwMTAyMDMwQUUKKzoyMERBMDAwMDIwODAyMDQwMjdGRTI0OTRGOTQ4MjdGQzIyNDgzM0Y4NjA0MEE3RkMyNDQ0MjQ0NDI3RkMyMDQwQTA0MDQwNDAzQQorOjIwREEyMDAwMjIyMDIyMTAyRkQ4RkEyODI3QzQyNEJBMkY5MDM0OTA2NzkwQTI3QzJGOTAyMjEwMjIxMDIyMTBBMjEwNDIxMDhGCis6MjBEQTQwMDAyM0ZDMjI5NDIyOTRGQkZDMjAwMDI3RkUyODAwMzFGODYxMDhBMUY4MjE4MDIzNDQyNTI4Mjk1OEExOEU0MTA0NjIKKzoyMERBNjAwMDIwMTAyNzg4MjRGRUZDQTIyNDk0Mjc4ODJDM0UzNDA4NjQwOEE3ODgyQUJFMkE4ODMyODgyMjg4QTM4ODQwMDhFRQorOjIwREE4MDAwMjA4MDIzRjgyMjQ4RkIyODIyOTgyQkY4MzAwMDI3RkM2NDQ0QTdGQzI0NDQyN0ZDMjAwMDJGRkVBMTEwNDYxMEU0Cis6MjBEQUEwMDAyMDAwMjNERTIxNEEyMEM2Rjk0QTIyNTIyODQyMzEyMDYzRkVBNjIwMkJGQzIyMjAyM0ZDMjIyMEEzRkU0MjAwQUUKKzoyMERBQzAwMDIzRkMyMDQwMjdGRUY0NDIyMzRDMjA0MDJCNEMzMjIwNjNGRUE2MjAyQkZDMjIyMDIzRkMyMjIwQTNGRTQyMDAwMAorOjIwREFFMDAwMjIxMDIzREUyNTI4RkJGQzIzNDgyQUE4MzNGODYwODBBRkZFMjI5MDI1MkUzQkM0MjA5MDIzRjhBMTUwNDJDOEYwCis6MjBEQjAwMDAyMDQwMjdGQzIwNDBGQkY4MjI0ODJGRkUyQUFBMzNCODYxMTBBM0Y4MjExMDI3RkMyMTI4MjMxMEE1OEU0MTA0ODUKKzoyMERCMjAwMDAyMDAwMjQwMDIzMDAyMjAwMjAwMDJGQ0ZGMDAwMjAwMDEwMDAxMDAwMDgwMDA4MDAwNDQwMDQ0MDAyNDAwMTg4NgorOjIwREI0MDAwMDBBMDAwOTAwMDkwMDA4MEZGRkUwMDgwMDg4MDA0NDAwNjQwMTU0MDUwQTA1MkEwNTIxMjkzMEExRTA0MDAwMDlDCis6MjBEQjYwMDAwMDUwMDA0ODAwNDhGRkZFMjI0MDIyNDAyMjQwN0Y0MDIyNDAyMjIwM0UyMDIyMjAyMjEyM0UxMjIyMEEwMDA2RTkKKzoyMERCODAwMDAwMjAwODI4OEMyNjQ4MjQzN0ZFNDgyMDg0MjAxMDIwRkZEMDExMTA1OTEwNTUxMjkxRUExNzBBNTAwNDIwMDBENgorOjIwREJBMDAwMDA0MDAwNDA3QzQwNDQ0MDQ0NjA0NDUwNDQ0ODQ0NEM0NDQ2N0M0NDQ0NDA0MDQwMDA0MDAwNDAwMDQwMDA0MDAzCis6MjBEQkMwMDAwMDgwMDA4MDAwODQ3QzhFNDQ5ODQ0QjA0NEMwNDU4MDQ2ODA0NDgwN0M4MDQ0ODAwMDgyMDA4MjAwN0UwMDAwNTIKKzoyMERCRTAwMDAwMDA3OUUwNDkyMDQ5MjA0OTIwNDkyMDQ5MjA0OTIwNzkyMDQ5MjA0MjIwMDIyMjA0MjIwODFFMTAwMDAwMDA3MgorOjIwREMwMDAwMDAwMDdDRkM0NDg0NDQ4NDQ0ODQ0NDg0NDQ4NDQ0ODQ3Qzg0NDQ4NDQ0OUM0MDg4MDA4MDAwODAwMDgwMDAwMEVDCis6MjBEQzIwMDAwMDAwMDAwMDdERkM0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0ODQ3Qzg0NDUwNDQxMDQwMjA0MDQzQzA4MDgwMDAwMTcKKzoyMERDNDAwMDAwNDAwMDQwN0M0MDQ0NDA0N0ZDNDQ0NDQ0NDQ0NDQ0NDQ4NDdDODQ0NDg0NDUwNDAxMDQwMjI4MDQxMDAwMDAwRAorOjIwREM2MDAwMDAwMDAwM0NGQkMwODg0MDg4NDA4ODQwODg3QzhGQzA4ODQwRjg0MDg4NDA4MDQ0MDA0NDAwNDYwMDNDMDAwMEIwCis6MjBEQzgwMDAwMjA0N0QwNjQ0ODg0NDUwNDQyMDQ0MjA0NDIwNDQyMDQ0MjA3QzIwNDQyMDQwMjAwMDIwMDAyMDAwMjAwMDAwRTcKKzoyMERDQTAwMDAwNDAwMDYwNzg0MDQ4ODA0ODg4NDkwQzRBMDg0RkYwNDgyMDc4NDA0ODg4NDEwNDAzRkUwMTA0MDAwMDAwMDA1MworOjIwRENDMDAwMDA0MDAwNDBGODQwOEJGQzg4NDA4ODQwODg0MDhGRkVGOEEwODhBMDgxMjAwMTEwMDIxODA0MEMwODBFMTAwNDVBCis6MjBEQ0UwMDAwMDAwMDdGQ0Y4NDA4ODQwODg0MDg4NDA4RkZFODhBMEY4QTA4OTIwODEyMDAyMjAwMjIyMDQyMjA4MUUxMDAwNTgKKzoyMEREMDAwMDAxMTAwMTEwRkZGRTg5MTA4OTEwODgwMDhCRjg4ODEwODgyMEY4NDA4ODgwODEwNDAyMDQwNDA2MDNGQzAwMDA5MworOjIwREQyMDAwMDA0MDAwNDBGODQwODg0MDhGRkU4ODQwODg0MDg4QTA4OEEwRjhBMDg5MTA4MTkwMDI0ODA0NEMwODA2MTAwNEY4Cis6MjBERDQwMDAwMDAwMDNGRUZBNDA4QTQwOEE0MDhCRkM4QTQ0OEE0NEZBNDQ4QTQ0ODI4NDA0ODQwNTA0MDkxNDEyMDgwMDAwRjcKKzoyMERENjAwMDAwMDRGQkZFOEEwMDhBMDA4QUY4OEE4ODhBODg4QTg4RkE4ODhBQTg4NDkwMDQ4MDA0ODIwODgyMDg3RTEwMDBFOAorOjIwREQ4MDAwMDIyMDAyMjAwMjIwN0EyMDRBMjA0QTI2NEJCODRBMjA0QTIwNEEyMDdBMjAwMjIyMDJBMjA3MjIwMjFFMDAwMEJECis6MjBEREEwMDAwMDAwMDNGOEZBMDg4QTQ4OEE0ODhBNDg4QTQ4OEE0OEZBNDg4QTQ4ODI0MDAwQTAwMDkwMDEwODAyMDYwNDA0MkQKKzoyMEREQzAwMDFGRjgxMDA4MTAwODEwMDgxRkY4MDEwMDAxMDAzRkZDMjEwNDIxMDQyMjg0MjQ2NDI4MzQzMDI0MjAxNDIwMDgwQworOjIwRERFMDAwMDA4MDAwNjBGMDMwOTAyMDkwODA5MDgwOTQ4ODk0ODQ5NDg2OTQ4NEY0ODA5MDgwODA4ODAwODgwMDc4MDAwMDYxCis6MjBERTAwMDAwMDAwMDdDNDc4NDQ0ODQ0NEJDNDRBNDQ0QTA0NEEwNDdCQzQ0ODQ0NDA0NDAwNDQwMDQ0MDI4NDAxMDQwMDAwNTQKKzoyMERFMjAwMDAwMDAwN0ZFRjQyMDk0MjA5NUZDOTUyNDk1MjQ5NTI0OTUyNEY1MjQ5NTNDODUyODA0MjAwNDIwMDdGRTAwMDBCQworOjIwREU0MDAwMDA4MDAwODBGOEZDODg4MDg4ODA4ODg0OEZGRTg4ODBGODgwODhFMDg4OTgwMDhDMDA4ODAwODAwMDgwMDA4MDg5Cis6MjBERTYwMDAwMDAwRkJGRThBMjI4QTIyOEJGRThBMjI4QTIyOEEyMjhCRkVGQTIyODgyMDAwMjAwMDIwMDAyMDAwMjAwMDIwRDcKKzoyMERFODAwMDAwMUMwM0UwN0FBMDRBQTA0QUEwNEE5MDRBOTA0QTkwN0E5MDRBODg0Mjg4MDRBODA0QjQwOUQ2MzA4NDAwMDA2QQorOjIwREVBMDAwMDA0MDAwNDBGOEEwODg5MDg5NDg4QTJFOEMyNDg4MDA4QkY4RjgwODg4MTAwMTIwMDBDMDAwNDAwMDYwMDA0MDk1Cis6MjBERUMwMDAwMEMwMDA4MEY5Rjg4OTEwOEFBMDhDNDA4OEEwODkxODhFOEVGODQ0ODgyMDgwODAwMDQwMDA2MDAwMjAwMDAwRjkKKzoyMERFRTAwMDAwNDAwMDIwMDNGRUZBMDI4QTA0OEMwMDhCRkU4ODIwODgyMEY4MjA4ODIwODAyMDAwMjAwMDIwMDBBMDAwNDA1MgorOjIwREYwMDAwMDA0MDAwNDBGODQwOEE0NDhBNDQ4QTQ0OEJGQzhBNDQ4ODQwRkE0NDhBNDQ4MjQ0MDI0NDAzRkMwMDA0MDAwMEE3Cis6MjBERjIwMDAwMjAwMDIwMEYyN0M5MjQ0OUZDNDk0QTg5NEE4OTRBODk5MjhGNTEwOTIxMDA1MTAwOUE4MTE0NjIwODQwMTAwNTgKKzoyMERGNDAwMDAwMTAwMjEwRjMxMDkyMTA5NDdFOTg5MjlGMTI5MTEyOTIxMkY1MjI4QkEyMUQ0MjA4NDIwMDhFMDA4NDAxMDBDNgorOjIwREY2MDAwMDEwODAxOEMwMTA4RjIxMDkyMTA5NEE0OUZCODk1MDg5MTEwRjIyMDk1RkM4RTIwMDAwMDAwMDAwRkZFMDAwMDMzCis6MjBERjgwMDAwMDAwMDNGRUZBMDA4QkZDOEEyMDhBMjA4QTIwOEJGQzhBMjBGQTIwOEEyMDAzRkMwMjAwMDIwMDAzRkUwMDAwMDgKKzoyMERGQTAwMDAwNDAwMDQwRkZGRTg4NDA4ODQwODg0MDhCRkM4ODAwODgwMEZCRjg4QTA4ODIwODAyMDgwM0Y4MDIwODAwMDBENworOjIwREZDMDAwMDAwNDA3RkVGMEEwOTBBMDkwQTA5N0ZDOTRBNDk0QTQ5NEE0RjUyNDk1M0MwNjA0MDQwNDA3RkMwNDA0MDQwNEZFCis6MjBERkUwMDAwMDgwMDA4MEY4ODQ4RkZFODg4MDg5MjA4OTI0OEFBNkZBQTQ4RDI4MDQyMDA4NTAxMDg4MjEwNjAyMDQwNDAwRjIKKzoyMEUwMDAwMDAwMjAwODIwMDYyMEY0MjQ5MUZFOTAyMDlFMjA5MjIwOTIzMEYyNDg5MjQ0ODI4NDAzMDAwNTAwMDhGRTAwMDBFNQorOjIwRTAyMDAwMDAwMjA3RTJGMTAyOTExMjkxRDI5MjUyOTI1Mjk0NTI5QTUyRjE5MjkwOTI4MTEyMDIwMjBDMDIzMDBBMDAwNERBCis6MjBFMDQwMDAwMDQwMDA0MEY3RkM5MDQwOTNGODkwNDg5M0Y4OTI0MDkzRkNGMjQ0OTA1NDAwQTgwMTEwMDIxODA0MEMwODA4MjEKKzoyMEUwNjAwMDAwODAwMDgwRjBCQzk3QzA5MDg4OTA1MDkwRTQ5NzFDOTAwMEY3RkU5MTIwMDEyMDAxMjIwMjIyMDQxRTA4MDBCNgorOjIwRTA4MDAwMDIyMDAyMjA3QTI2NEJCODRBMjA0QTIyNEFBMjRGMUU0QTQwNDg0MDc4NDAwN0ZFMDA0MDAwNDAwMDQwMDA0MDlCCis6MjBFMEEwMDAwMDEwMDA5MEYwOTA5MDkwOTQ5NDk0OTY5NEY4OTQ5MDk0OTBGNDkwOTQ5MDk0OTAwNUYyMEUxMjAwMEUwMDAwMDkKKzoyMEUwQzAwMDAwNDAwMDQwRjg0ODhBNEM4OTQ4ODk1MDhGRkU4OTEwODkxMEY5MTA4OTEwMDExMDAyMTIwMjEyMDQwRTA4MDA0QworOjIwRTBFMDAwMDAyMDAyMjQ3QTI0NEEyNDRCRkM0QTQ0NDg0MDQ4RkU0OTA0N0E4NDQ0NDgwMDUwMDAyMDAwNDAwMTgwMDYwMDFECis6MjBFMTAwMDAwMTIwMDFBMEYxMjA5MjIwOTNGRTkyMzA5NjcwOUE3MEYyQTg5MkE4OTJBNDAzMjYwMjI0MDIyMDAyMjAwMDAwN0EKKzoyMEUxMjAwMDAyMDBGM0ZDOTI0ODkyNDg5NUZFOTQ0ODlDNDg5NUY4RjQ0ODk0NDA4NDQwMDQ4MDA0ODAwNTAwMDYwMDAwMDA3MworOjIwRTE0MDAwMDAxQ0YzRTA5MjAwOTIxQzkyRTA5MkE0OTJBRTkyQjBGMkEwOTI5MDgyOTAwNDg4MDRBQzA4QzYzMDg0MDAwMEUyCis6MjBFMTYwMDAwMDQwMDA0MEY4QTA4ODkwODkwODhBMDY4RkY0ODgwMDg4MDBGRkZDODg4MDgxMTAwMjA4MDdGQzAyMDgwMDAwMTAKKzoyMEUxODAwMDAwMDBGOUYwODkxMDg5MTA4OTEwOEE0RThDNDA4ODQ4RkZGQzg5NjA4MTUwMDI0ODA0NEUwODQ0MTA0MDAwNDAyQQorOjIwRTFBMDAwMDA4MDAwNDBGN0ZDOTIxMDkxMTA5MEEwOTA0MDkxQjA5NjBFRjkxNDkxMTA4MTEwMDIxMDAyMTAwNDEwMDgxMEY1Cis6MjBFMUMwMDAwMjEwMDE5OEY4QTA4RkZDODg0MDg4NDA4QkZDODg0MDg4NDBGRkZFODg0MDAwNDAwMDQwMDA0MDAwNDAwMDQwQzUKKzoyMEUxRTAwMDAwODAwMDg4RjQ4QzkyOTA5MkEwOTA4NDlGRkU5MUMwOTJBMEYyQjA5NDk4ODg4RTEwODQyMDgwMDA4MDAwMDA3NworOjIwRTIwMDAwMDA4MDAwNDAwN0ZDRjQwNDk4MDg5MEYwOTM0MDkwNDA5MDVFRjdFMDkwNDA4MDQwMDA0NDAwNDQwMDNDMDAwMDY3Cis6MjBFMjIwMDAwMDQwMDA0NEYzRkU5NDQ0OTQ4ODkwOTA5MTQ4OTE0QzkzNTBGMzIwOTUyMDA5MTAxMTQ4MDM4RTAxMDQwMDAwRUMKKzoyMEUyNDAwMDAzRjgwMjA4RkEwODhCRjg4QTA4OEEwODhCRjg4QTQwOEE0OEZBNTg4QTIwODIxMDAyNTgwMjhFMDcwNDAyMDA2QworOjIwRTI2MDAwMDEwMDAxOTBGMTA4OTI3Qzk3Qzg5MjQwOTI0MDkzRkM5NDQwRjg0MDkwNDA5N0ZFMDA0MDAwNDAwMDQwMDA0MDAyCis6MjBFMjgwMDAwMDQwMDA0MDdCRkM0ODQwNEJGQzQ4NDA0RkZFNDkwMDQ5Rjg3OTA4NEE5MDA0NTAwMDIwMDA1MDAwOEUwMzA0QTUKKzoyMEUyQTAwMDAwNDAwMDQ4RkJGQzg4NDA4ODQwOEZGRTg4OTA4QTkwOEI5OEZBOTQ4NDk2MDkxNDAxMTAwMjEwMDQ1MDA4MjAwOQorOjIwRTJDMDAwMDA5MDAwOTBGN0ZFOTA5MDkwOTA5N0ZFOTQwNDk4ODhGMDgwOTdGODgwODgwMDg4MDEwODAxMDgwMjI4MDQxMEJECis6MjBFMkUwMDAwMDAwMDdGQzc4NDA0ODQwNEJGODRBNDg0QkY4NEE0ODRBNDg3QkY4NDg0MDAyNDAwMTgwMDE0MDA2M0MxODA4M0UKKzoyMEUzMDAwMDAwMDBGN0ZDOTA4MDkwODA5M0YwOTExMDkxMTA5RkZFRjAwMDkzRjg4MjA4MDIwODAyMDgwM0Y4MDIwODAwMDA2QQorOjIwRTMyMDAwMDIwMDAyMEVGMjc4OTI0MDlGNDA5MjdFOTI0ODkzNDg5NjQ4RkE0ODkyNDg4MjQ4MDI4ODBBODgwNTA4MDAwMEZFCis6MjBFMzQwMDAwMDQwMDI0ODc5NTA0ODQwNEJGODRBMDg0QTQ4NEE0ODRBNDg3QTQ4NEE0ODQyQTgwMDkwMDEwODAyMEMwNDA0QUEKKzoyMEUzNjAwMDAwNDAwMDgwN0JGODRBMDg0QTA4NEJGODRBMDg0QTA4NEJGODc4NDA0ODQwMDA3QzA3QzAwMDQyMDA0MjAwM0U1NworOjIwRTM4MDAwMDAxMDAxMThGMEEwOTA0MDkxQjA5Mjg4OTdGRTkxNDBGM0ZDOTY0NDBBNDQxMjQ0MDI1NDAyNDgwMDQwMDA0MEE2Cis6MjBFM0EwMDAwMDQwMDA0MEYyNDg5MjQ4OTI0ODkyNDg5NTU0OTU2Njk4NDRGMDQwOTdGQzAwNDAwMDQwMDA0MDBGRkUwMDAwQzUKKzoyMEUzQzAwMDAwMDBGN0JFOTRBMjk0QTI5N0EyOTRBMjk0QTI5N0EyRjRBMjk1MjI4NEFFMDVBNDBFQTAwNDIwMDAyMDAwMjAwNAorOjIwRTNFMDAwMDA0MDAwNDBGRkZDOTA0MDkzRjg5MDgwOTdGRTkxMTA5MjQ4RjdGNjk4NDAwMDQwMDdGQzAwNDAwMDQwMDA0MDVGCis6MjBFNDAwMDAwMDQwMDdGQzc4NDA0QkY4NDg0MDRGRkU0ODAwNEJGODRBMDg3QTQ4NEE0ODAyNDgwMEEwMDExMDAyMEMwNDA4QTMKKzoyMEU0MjAwMDAxMTAwMTEwRjdGQzkxMTA5MTUwOTA0NDk3RkU5MDgwOTA4MEYxRjg5MzA4MDUwODA5MDgwMUY4MDEwODAwMDAxOAorOjIwRTQ0MDAwMDExMDAxMTBGN0ZFOTExMDkxMTA5MTEwOTdGQzk0NDQ5NDQ0RjdGQzk0NDQ4NDQ0MDQ0NDA3RkMwNDA0MDAwMDk5Cis6MjBFNDYwMDAwMjEwMDIxMEYyMTA5MjEwOUZCRTkyMTA5NzM4OTZCOEZBRDg5QTU0OEE5NDEzMTIwMjEwMDIxMDAyMTAwMjEwNkQKKzoyMEU0ODAwMDAyMTAwMjEwRjc5MDkyN0U5MjEwOTUxMDk1N0U5NzkwOTEyMEYxQkU5MzA0MDUyODAxMTAwMTA4MDEwNDAxMDBGQworOjIwRTRBMDAwMDAwMDA3RkNGNDQ0OTQ0NDk1RjQ5NDQ0OTQ0NDk3RkM5NDA0RjVGNDk1MTQ4NTE0MDVGNDA4MDQwODE0MTAwODgxCis6MjBFNEMwMDAwMTAwMDEwMDdCRkU0RDAyNDkwMjQ5RjI0QTQyNEJGQTRDNDI0QTRBN0E0QTRCRkEwMDAyMDAwNDAwMTQwMDA4Q0UKKzoyMEU0RTAwMDAxMDAwMTAwNzlGQzRBNTQ0QTk0NENBNDQ5MjQ0RTQ0NDlBODdFMTA0OTQwMDUzNDA1MkEwOTBBMDFGODAwMDBCRQorOjIwRTUwMDAwMDA4MDAwNDBGN0ZDOTEyMDkxMjA5MTIwOTJEMDk0OEM5ODQ4RjA0MDk3RkMwMDQwMDA0MDAwNDAwMDQwMDA0MEQwCis6MjBFNTIwMDAwMDgwMDA0MEZGRkM5MjEwOTEyMDk3RkU5MDgwOTA4MDk3RkNGMTEwOTIxMDAxMjAwMEMwMDEyMDAyMTgwNDEwQjIKKzoyMEU1NDAwMDAwNDAwMDIwN0ZGRTQ4OTA0OTA4NEJGQzQ5MDg0ODAwNDlGODc5MDg0OUY4MDEwODAxRjgwMTA4MDEyODAxMTA4RAorOjIwRTU2MDAwMDA0MDAwNDBGMjUwOTI5ODk0QTA5MTEwOTI0Qzk0NDhGMjQ2OTI1ODg0QTAwMEEwMDExODAyMEUwNDA0MDgwMDAxCis6MjBFNTgwMDAwMDEwMDQxMEYyRkU5MjkyOTg5NDk2OTA5NEJDOTJDNDkyQzRGMkE4OTRBODBDOTAwNTMwMDU0RTA1ODQwMDAwNzIKKzoyMEU1QTAwMDAwNDAwMDIwN0JGRTRBMDQ0QzA4NEJGQzQ4NDA0ODQwNEE0MDdBNzg0QTQwNDI0MDA1NDAwNEMwMDg3RTEwMDA2MgorOjIwRTVDMDAwMDIwMDAxM0NGN0E0OTRBNDk3QTg5NEE4OTRCMDk3QThGNEE0OTQyMjg1MjIwNEI0MDVBODBFQTAwNDIwMDAwMEZGCis6MjBFNUUwMDAwMDQwMDAyNDdCRkU0QTA0NEEwNDRCRkM0QTIwNEEyODRBMjQ0QkZFN0EyMDRBNTAwNDUwMDQ4ODA5MEUwMjA0OTcKKzoyMEU2MDAwMDA3RTJGNDIyOTQyMjk0MkE5N0VBOTQ4QTk0OEE5N0VBRjZBQThBQUEwQUFBMEFBQTEyQTIxMDgyMjA4QTAwODQ5OQorOjIwRTYyMDAwMDdCOEYwODg5NTI4OTMxMDkzMTg5NEE0OTg0MDk3MzhGMDg4OTc0ODgxMzAwMkIwMDQ0ODA4ODYxMzA0MDAwMDBFCis6MjBFNjQwMDAwMjAwMDI5MEYyOTA5N0ZDOTI5MDkyRjA5MjAwOTNGQzkwNDBGN0ZFOTBFMDAxNTAwMTU4MDI0RTA0NDQwMDQwOTUKKzoyMEU2NjAwMDAxMTAwMTEwRjdGRTkxNTA5MDQwOTBBMDkxMTg5N0Y2OTgwMEYwMDA5M0Y4MDIwODAyMDgwM0Y4MDIwODAwMDA0MAorOjIwRTY4MDAwMDA0MDAwNDBGN0ZDOTA0MDk3RkM5NDA0OTUxNDk0QTQ5NUY0RjQ0NDg3RkMwNDQ0MDQ0NDA0NTQwNDQ4MDAwMEIzCis6MjBFNkEwMDAwMDAwMDdGRTA0MDBGNUZDOTUyNDk1MjQ5NUZDOTUyNDk1MjQ5NUZDRjQyMDk1RkMwNDIwMDgyMDA4MjAxM0ZFMzAKKzoyMEU2QzAwMDAwODAwMDgwRjdGQzkwQTA5MTUwOTI0RTlGRkM5MDQwOTdGQ0YwNDA4MDQwMDNGODAwNDAwMDQwMEZGRTAwMDBFMAorOjIwRTZFMDAwMDIyMDAyMjRGMjJFOTNCMDkyMjI5MkEyOTM1RTkwODBGM0Y4OTIwODgyMDgwM0Y4MDIwODAyMDgwM0Y4MDIwODYzCis6MjBFNzAwMDAwMDAwRjdGQzk0NDQ5N0ZDOTQ0NDk0NDQ5N0ZDOTA0MEY3RkU5NDQyODQ1MjA0N0EwNzkyMDQwMjA0MEEwNDA0QjQKKzoyMEU3MjAwMDAzRkVGQTIyOEJGRThBMjI4QTIyOEJGRTg4MDA4QkZFRkEwMjhCRkU4MjAyMDNGRTAyMDIwMjAyMDIwQTAyMDQxRAorOjIwRTc0MDAwMDAxMDAxOTA3RTEwNTIxMDUyNTQ1RkQ2NTI1ODU3MTA1NjkwN0E5MDRBMjgxMjI4MjIyNDAyNDYwMjQ0MDI4MDRBCis6MjBFNzYwMDAwMDQwMDE0MEY2NUM5NDQ0OTc1Qzk0NDQ5NDQ0OTdGQzkwMDBGM0ZDOTEwODAwOTAwMDYwMDA5ODAzMEUwQzA0RjcKKzoyMEU3ODAwMDAwODAwMDQwN0ZGQzRBMTA0OTk4NDkyMDRGRkU0ODAwNEJGODdBMDg0QTA4MDNGODAyMDgwMjA4MDNGODAyMDhEQQorOjIwRTdBMDAwMDIwMDAxMDA3RkZDMDgyMDA0NDAzRkZFNDEwNDVGRjAxMTEwMTE1MDAxMjAxRkYwMTAxMDEwMTAxRkYwMTAxMDdECis6MjBFN0MwMDAwMjEwMDE5ODc5MjA0RkZFNDg4MDRCRkM0ODgwNDg4MDRGRkU3OTAwNEJGQzQyMjAwNDIwMDgyMDE3RkUwMDAwMzkKKzoyMEU3RTAwMDAwNDgwMjRDRjE1MDk3RkU5MEUwOTE1MDkyNEU5RDQ0OTEwMEY3RkM5MjEwODMyMDAwRTAwMTE4MDIwQzA0MDhCRgorOjIwRTgwMDAwMTIxMDBEOTgwOTIwM0ZGRTI5MDQ0OTA4MEZGMDExMDAwMTAwN0ZGQzAwMDAwRkYwMDgxMDA4MTAwRkYwMDgxMDdCCis6MjBFODIwMDAwMDAwRjdGQzk0MDQ5N0ZDOTQwMDk1RkM5NDQwOTQ4OEY1RkM5NEE0ODQyMDA5RkMwODIwMTAyMDIzRkUwMDAwNUEKKzoyMEU4NDAwMDAxMDAwMUY4RjExMDkzRjA5MDEwOTdGRTkwODA5MTg4RkU1MDkxQTA4MjcwMENBODAzMjYwQzI0MDBBMDAwNDA3RQorOjIwRTg2MDAwMDA4MDAwODBGRkY4OTA4MDk3Rjg5MTAwOUZGQzkyMzA5NUM4Rjg0Njk3RjgyMTYwMDI1ODA0NEMwODQ4MDA0MDJGCis6MjBFODgwMDAwMjEwMDIxOEZGQTA5MjIwOUZCRTkyNDQ5MjQ0OUZBOEY0Mjg5NzI4ODUxMDA1MTAwOTI4MDkyQzE1NDYyMjg0QkYKKzoyMEU4QTAwMDAwNDAwN0ZDRjA0MDk3RkM5MDQwOUZGRTkwODA5MTEwOTNFMEYwODg5M0ZDODA0NDAyNTAwNDQ4MDk0ODAwODA4NworOjIwRThDMDAwMDIwMDAyMUVGRkQyOTI1NDkyOTQ5RkY4OTExODkzRDRGNjU0OEE1MjkzRDIyMjVFMDI1NDAzRDAwMjUwMDAxMEZDCis6MjBFOEUwMDAwMDQwMDA0MEYzRkM5MDQwOTdGRTkwODA5MTA4OTdGQzkyMDRGM0Y4OTJBODAyQTgwMkE4MDJBODBGRkUwMDAwNDIKKzoyMEU5MDAwMDA3RkMwMTEwRjFGMDkxMTA5MUYwOTExMDk3RkU5MDEwRjdCQzk0QTQ4NEE0MDMxODA1MjQwNEE0MDhDMjEwODJBRgorOjIwRTkyMDAwMDExMDAxMTRGN0ZFOTExMDkyMTA5MkZFOTIwODk2RThGNkE4OEFBODkyRTg4MkE4MDI4ODAyMDgwMjI4MDIxMDhECis6MjBFOTQwMDAwMDQwMDdGRUY4NDA4OUY4ODkwODg5Rjg4OTA4ODlGODg5MDhGOUY4ODEwODBGRkUwMTEwMDIwODA0MDYwODA0NEMKKzoyMEU5NjAwMDAwNDAwMDQwRjdGQzkwNDA5N0ZDOTQ4NDkxMTA5M0YwRjBDODkzRkM4MDQ4MDI1MDAzNDgwNDRDMDk0ODAwODBCOAorOjIwRTk4MDAwMDAwMDA3RkVGMDAwOTNGODkyMDg5M0Y4OTAwMDk3RkNGNTE0OTRBNDg1RjQwNDQ0MDQ0NDA0NTQwNDQ4MDAwMEMxCis6MjBFOUEwMDAwN0ZDMDA4MEYzRjg5MjA4OTNGODkyMDg5M0Y4OTIwOEYzRjg5MTAwODNGODA1MTAwOEUwMTFCMDA2MEUxODA0MjAKKzoyMEU5QzAwMDAwMDAwN0ZDRjQ0NDk0NDQ5N0ZDOTQ0NDk0QTQ5NTE0OTdGQ0YwMDA5MDg4OEE2NDBBNEEwQTBBMTFGODAwMDBERQorOjIwRTlFMDAwMDA0MDAwODBGM0Y4OTIwODkzRjg5MjA4OTNGODkwNDA5N0ZFRjBBMDkxMTg4NjRFMUJGQzAwNDAwMDQwMDA0MEQ5Cis6MjBFQTAwMDAwMTEwMDMwQ0Y0QTQ5ODQwOTEzMDk2OEU5MUY0OUYyMDkwQzBGNzgwOTBGQzAxMDgwNjkwMDA2MDAxODAwRTAwNUMKKzoyMEVBMjAwMDAwMUNGN0UwOUE4QzkxNTA5N0ZFOTQ4NDk4ODg5N0ZFRjEwMDkxRjg5Mjg4MDI1MDA0MjAwODU4MTE4RTA2MDQ2NworOjIwRUE0MDAwMDIwODAxOENGMTEwOUZGRTkxMDA5MTkwOTEwODkyMEM5NDA4RjdGQzk0QTQwNEE0MDRBNDA0QTQwRkZFMDAwMENDCis6MjBFQTYwMDAwMDQwMDQ1RUYyOTI5RkQyOTExRTk1NTI5NTUyOTU1Mjk3REVGNTUyOTExMjAyMjIwNDIyMDg0QTMwODQwMDAwRUMKKzoyMEVBODAwMDA4ODAwNjgwRjRGRTk5MDA5NEZDOTQ4NDkyQTQ5Mjk0RjNGRTk0QTQ4NDk0MUM5NDA0RkUwNDA0MDQxNDA0MDhCQQorOjIwRUFBMDAwMDAwMDA5RkNGNDA4OTQxMDkxRkM5MTI0OURGQzk1MjQ5NTI0RjVGQzk1MjQwNTI0MDUyQzBBMDAxMUZFMjAwMDI3Cis6MjBFQUMwMDAwMDQwMDI0OEYyNDg5M0Y4OTA0MDk3RkM5MDQwOTA0MEYzRjg5MjQ4ODI0ODAzRjgwMDQ0MDA3RTA3ODQwMDAwMEQKKzoyMEVBRTAwMDIxMDgzMTBDMjdEMDRBMjJGNTNDMjc4ODcxMUUwNzgwMzEwRUMxMzAxRkYwMTAxMDEwMTAxRkYwMTAxMDAwMDBBOQorOjIwRUIwMDAwMDQ5MDA0OTBGRkQwOTQ5MDk3QkU5MTEyOTdEMjk1NTI5NTUyRjdEMjkxMTI4RkYyMDExMjAxMjIwMTJBMDE0NDE4Cis6MjBFQjIwMDAwMDkwMDdGRTc4OTA0QkZDNEE5NDRCRkM0QTk0NEE5NDRCRkM3ODAwNDlGODAxMDgwMUY4MDEwODAxMDgwMUY4MDMKKzoyMEVCNDAwMDAwMDAwN0ZFRjA5MDkzRkM5Mjk0OTI5NDkzRkM5MDAwOTNGQ0YwMDA5N0ZFODIyODAzMjQwMjI2MDRBNDA4NDAzOQorOjIwRUI2MDAwMDAxMDAwMTgwMDE0RjdGRTk0OTA5NEQwOTQ5Mjk3RjI5NDE0RjQ5NDk0QzgwQUFBMEE5QTE0QTYxMkM2MjEwMjk0Cis6MjBFQjgwMDAwMDAwMEZCRUU4QTJBOEEyQUFBQUFBQUFBMjA4QTUxNEU4QTJBRkZFMDExMDAzOTAwMDYwMDA5ODAzMEMwQzA0RDcKKzoyMEVCQTAwMDA0NDQwNDQ0RjdGQzkwMDA5N0JDOTRBNDk0QTQ5N0JDOTRBNEY3QkM5NEE0MDRBNDA4QTQwQUE0MTE1NDAwMDg5QQorOjIwRUJDMDAwMDgyMDA2MzBGNDIwOUY3RTk0NDA5NEEwOTczQzk1NTBGNTkwOTU3RTg1MTAwOTI4MDkyODE1NDQyMjQyMDA4MDFBCis6MjBFQkUwMDAwMDgwMDA0MEZGRkU5MjA4OTExMDk3RkM5NDQ0OTVGNEY0NDQ5NUY0ODUxNDA1MTQwNUY0MDUwNDA0MTQwNDA4OTAKKzoyMEVDMDAwMDAwODAwMDQwRjdGRTk0ODI5MjQ4OTU1ODk1MjI5MTRBRjFGODk2NDA4MDQwMDQ0NDA0NDQwNDQ0MDdGQzAwMDA3NgorOjIwRUMyMDAwMDEwMDAxMDRGRkU2OTEwODk3RDA5MDI0OTdDNjk0NDg5NDU0RjdFNjkwOEMwNEM4MDUxMDAxRTAwRTQwMDAwMDBCCis6MjBFQzQwMDAwMDAwMEZGRUU4MTBBQzUwQUE5RUFGRDJBOTI4QUQ0OEFENDhFRkM4QTkwODEyOTQxMkE0MjQ0MjQ4ODIwMDAwM0IKKzoyMEVDNjAwMDAwNDAwMDQwRjdGRTkwQTQ5NTE4OTNGRTk2MEM5QkY4OTIwOEYzRjg5MDQwMDI1MDAzNDgwNDRDMDk0ODAwODA2NQorOjIwRUM4MDAwMDBBMDA0QTRGMkE4OTJCMDlGRkU5MjA4OTExMDk3RkM5MDQwRjNGODkwNDAwRkZFMDBBMDAxMTgwNjBFMTgwNDY0Cis6MjBFQ0EwMDAwM0Y4MDIwOEYzRjg5MjA4OTNGODkwMDA5RkZFOTQ4MDk3RkNGNEM4OTdBODA0OTAwNzkwMENBQzAwQzYwMDg0NDMKKzoyMEVDQzAwMDAyNDAwMzIwRjIyMDkzRkM5NjIwOUJGQzkyMjA5M0ZDOTIyMEYyMjA5M0ZFMDIwMDA1NDgwNTI0MDhCNjEwQTQ2MQorOjIwRUNFMDAwMDA4MDAxMDBGN0ZDOTY0Qzk1NTQ5N0ZDOTRFNDk1NTQ5NjU0RjQ0NDlGRkUwMEEwMDExMDAyMDgwNDA2MDgwNDUxCis6MjBFRDAwMDAwMDQwMDBBMEYxOTg5NjQ2OUJGQzkwOTA5MjY0OTI5NDkzRkNGMDgwOTdGQzA0QTQwNTc0MDc5NDA0MDQwNDBDNzUKKzoyMEVEMjAwMDAxMDAwM0Y4RjQxMDlGRkM5NDQ0OTdGQzk0NDQ5N0ZDOTAwMEY3RkM5MDAwODNGODAyMDgwM0Y4MDIwODAzRjhDQQorOjIwRUQ0MDAwMDIxMDAxMThGMTIwOTdGQzk2NTQ5NURDOTU2NDk3RkM5NDAwRjNGODkyMDgwM0Y4MDIwODAyMDgwM0Y4MDIwOEQwCis6MjBFRDYwMDAwMDAwMDdBOEYwQjA5NEE0OTMxODkxMDg5M0Y2OUMwMDkzRjhGMjA4OTNGODAyMTAwMTEwMDEyMDBGRkUwMDAwNDIKKzoyMEVEODAwMDAxMTAwN0ZFRjExMDkxNTA5N0ZFOTAwMDkxRjg5MTA4OTFGOEYwMDA5N0ZFMDQwMjA1RkEwNTBBMDVGQTA0MDYwOQorOjIwRURBMDAwMDExMDAxMTBGRkZFOTMzODk1RDQ5NTUyOTk5MDkzRkM5MDAwRjdGRTkwNDAwMjQ4MDM0NDA0NDYwOTQ0MDA4MDY0Cis6MjBFREMwMDAwMDgwMDBGOEYwODA5N0ZDOTQ4NDk1RTg5NDgwOTQ3ODk3RkNGNDQ4ODRBQzBCNzAwOEE4MTEyRTI2QTQwMDQwOTAKKzoyMEVERTAwMDAwODAwMDQwN0JGQzQ4OTA0RkZFNDgwMDRCRjg0QTA4N0JGODRBMDg0M0Y4MDAwNDBBNDIwQTJBMTFGODAwMDA0RAorOjIwRUUwMDAwMDA4MDAwNDBGN0ZFOTkyNDk3Rjg5MTIwOTdGODkxMjA5RkZDRjI5MDk0OEUwQkY0MTA4MDAwODAwRkZDMDAwMEE3Cis6MjBFRTIwMDAwMDEwMDc5MEY0RkU5NEM0OTRBNDk3QTg5NDdFOTQxMEY3OTA5Q0ZFOEM5MDE0OTAxNzkwMjQ5MDA0MTAwMDAwNjQKKzoyMEVFNDAwMDA3RkMwMDQwRjdGRTk0NDI5QjU4OTA0MDkzNTg5MDAwRjdGRTkxMDA4N0ZDMDRBNDA0QTQwNEE0MDRBNDA0MENBRAorOjIwRUU2MDAwMDA4MDAwNDBGN0ZFOUEwNDkzRkM5NEE4OUE5MDkxMDg5M0Y2RjQwMDlCRkMwMjUwMDM0ODA0NEMwOTQ4MDA4MERGCis6MjBFRTgwMDAwMDAwMDNGQzAwNDBGN0ZFOTQ0MjlBNTA5MTQ4OTIyMDkzRkM5NjIwRkJGQzkyMjA4M0ZDMDIyMDAzRkUwMjAwNjEKKzoyMEVFQTAwMDAwNDAwRkZFRTQ0NEE3RkNBMDQwQTdGRUFBQUFBM0I4QTExMEFGRkVFMTEwMEZGRTAxMjQwNzI4MTk5MDAxMEU5RQorOjIwRUVDMDAwMDAwMDdGRkM0MDA0NDAwNDQwMDQ0MDA0NDAwNDQwMDQ0MDA0NDAwNDQwMDQ0MDA0NDAwNDdGRkM0MDA0MDAwMDBDCis6MjBFRUUwMDAwMDAwN0ZGQzQwMDQ0RkU0NDA0NDQwODQ0MTA0NUZGNDQxMDQ0MTA0NDEwNDQxMDQ0NTA0NDIwNDdGRkM0MDA0REUKKzoyMEVGMDAwMDAwMDA3RkZDNDIwNDQyMDQ3RkZDNDQ0NDQ0NDQ0ODQ0NDQ4NDQzMDQ0NEM0NDgzNDUwMTQ0MDA0N0ZGQzQwMDREOQorOjIwRUYyMDAwMDAwMDdGRkM0MTA0NDI4NDQ0NDQ0ODI0NzQxQzQ0ODQ0NUM0NDYwNDQ0MjQ0NDI0NDNFNDQwMDQ3RkZDNDAwNEIyCis6MjBFRjQwMDAwMDAwN0ZGQzQ0MDQ0NDA0NEZGNDRBNTQ1MjU0NjQ5NDQ0OTQ0OTE0NTIxNDQ0NTQ0ODI0NDAwNDdGRkM0MDA0ODUKKzoyMEVGNjAwMDAwMDA3RkZDNDEwNDQyODQ0NDQ0NEEzNDUxMUM2RkU0NDA0NDQ0ODQ0MzA0NDEwNDQwODQ0MDA0N0ZGQzQwMDRBNgorOjIwRUY4MDAwN0ZGQzQyMDQ0MjA0NUZGNDQ0MDQ0N0U0NEMyNDU3RTQ2NDI0NDdFNDQ0MjQ0NEE0NDQ0NDQwMDQ3RkZDNDAwNDZCCis6MjBFRkEwMDA3RkZDNDAwNDVGRjQ0MjA0NEZFNDQyMjQ0MjI0N0ZGQzQwMDQ0RkU0NDgyNDQ4MjQ0RkU0NDAwNDdGRkM0MDA0RkEKKzoyMEVGQzAwMDdGRkM0MTA0NUZGNDQxMDQ1RkY0NDEwNDdGRkM0MDA0NEZFNDQ4MjQ0RkU0NDgyNDRGRTQ0ODI0NDgyNDdGRkNCRQorOjIwRUZFMDAwN0ZGQzQxMDQ0MTA0NEZFNDQxMDQ1RkY0NDgyNDQ0NDQ1RkY0NDEwNDdGRkM0MTA0NDEwNDQxMDQ3RkZDNDAwNEFDCis6MjBGMDAwMDA3RkZDNDAwNDVGRjQ1Mjk0NUZGNDQwMDQ3RkZDNDAwNDRGRTQ0ODI0NEZFNDQ1MjQ0Q0M0NTY3NDRDMjQ3RkZDQTIKKzoyMEYwMjAwMDEwNDAxMDQwMTA0MDdGRkU1NDQwNTVGQzU0NDA1NDQwNTdGQzU0NDQ1NDQ0NUM0NDEwNTQxMDQ4MTA0MDEwNDBENworOjIwRjA0MDAwMTAyMDExMjAxMUEwN0QyMDU1RkM1NjIwNTQyMDU3RkU1NDIwNTQ1MDVDNTAxMDg4MTA4QzExMDYxMjA0MTQwMDM4Cis6MjBGMDYwMDAyMDQwMjA0MDIzRkNGQTQ4QUE1MEFBNDBBQkY4QUIwOEFBODhBQTkwQUE1MDI0MjAyNDUwMjk4RTM2MDQwMDAwMjYKKzoyMEYwODAwMDEwMDAxMUZDRkU4NDIyODg2NDQ4MTgzMDI0NDg0Mjg2ODEwNDNGRjgyMTA4MjEwODIxMDgyMTM4MjExMDAxMDAzRAorOjIwRjBBMDAwMjA0MDIwNDAyN0ZFRjg0MEFCRkNBODQwQUZGRUE4ODhBODg4QTk3RUI5MDgyMjQ4MjI0ODI0MDgyODI4MjAxMDJGCis6MjBGMEMwMDAxMDIwMTAyMDEzRkU3QzIwNTVGQzU0MjA1N0ZFNTQwMDU1RkM1NTI0NUQyNDExMjQxMTU0MTA0ODEwOEMxMTA4QzMKKzoyMEYwRTAwMDIwMDAyM0ZFMjIwMkZCRkVBQTIyQUEyMkFBRkFBQTIyQUEyMkFBMzJCQTJBMjNGRTIyMDIyMjAyMjNGRTIyMDI3MAorOjIwRjEwMDAwMjA4MDIwQTAyMTEwRjlGRUFCMjBBRDIwQTlGQ0E5MjBBOTIwQTlGQ0I5MjAyMTIwMjEyMDIxRkUyMTAwMDAwMDU4Cis6MjBGMTIwMDAyMDAwMjNGQzIyMDRGQTA0QUJGQ0FBMDBBQUZDQUE0OEFBRkNBQTQ0QUEyMEJBRkMyMjIwMjQyMDI1RkUyODAwOUUKKzoyMEYxNDAwMDIxRjgyMTA4MjFGOEY5MDhBOUY4QTgwMEFCRkNBQTk0QUJGQ0E4MDBBQkZDQjkwODIwOTAyMDYwMjE5ODI2MDY1OQorOjIwRjE2MDAwMjA0MDIzRkMyMTA4Rjg5MEFGRkVBODAwQUJGOEFBMDhBQkY4QUEwOEJCRjgyMDQwMjdGQzIwNDAyMDQwMjA0MDBBCis6MjBGMTgwMDAyMDkwMjI5NDIxOThGODkwQUZGRUE4OTBBQkZDQTg0MEE5RjhBODQwQkJGRTIwNDAyMEEwMjExODIyMEUyNDA0NjEKKzoyMEYxQTAwMDIwMUMyM0UwMjI0OEY5NTBBRkZFQThFMEE5NTBBQTRFQUZGQ0FBNDhBQTQ4QkJGODIyNDgyMjQ4MjNGODIyMDhEQworOjIwRjFDMDAwMDEwMDIxMDgyMTA4M0ZGODAwMDAzRkYwMDgyMDA4MjAwODc4MEMwODEyMTAxMTIwMjBDMDQxMzA4NjBFMTgwNDNFCis6MjBGMUUwMDAxMDAwMTFGQzEwMDQ1NDA0NTQwNDU0MDQ1NUZDNTUwNDU1MDA1NTAwNUQwMEYxMDA0MTAyMDEwMjAwRkUwMDAwRjAKKzoyMEYyMDAwMDEwMDAxM0ZFMTA5MDU0OTA1NDkwNTQ5MDU3RkU1NDkwNTQ5MDVDOTBGNDkwNDExMDAxMTAwMjEwMDQxMDAwMDA2QworOjIwRjIyMDAwMDA0MDIwNDAyMDQwMjNGQ0E4NDBBODQwQUJGOEE5MDhBOTA4QTg5MEI4OTBFODYwODA5MDAxMEUwRTA0MDQwMERECis6MjBGMjQwMDAxMDAwMTFGRTExMDQ1NTA2NTU4NDU1NDg1NTI4NTUxMDU1MTA1NTI4NUQyNEU1NDY0MTg0MDFGRTAwMDAwMDAwNzUKKzoyMEYyNjAwMDAwMDAyMUZFMjAxMDIxMTBBOTkwQTkxMEFCRkVBODMwQTg1MEE4NTBCODkwRTkxMDAyMTAwNDEwMDg1MDAwMjBDQworOjIwRjI4MDAwMTAwMDExRjgxMTA4MTE0ODU1NDg1NTQ4NTU0ODU1NDg1NTQ4NTU0ODVDQTBFMEEwNDEyMjAyMjIwNDFFMDgwMDA4Cis6MjBGMkEwMDAwMDAwMDFGODNFMDAwMjAwN0ZGRTA0ODAwNDQwMDkzMDMxMEVDMTA0MTExMDExMTAxMTEwMUZGMDEwMTAwMDAwMDEKKzoyMEYyQzAwMDAxMDAyMTA4MjEwODNGRjgwMTAwMDI4MDA0NDAwQTMwMzE4RUMxMDQxRkYwMDAyMDAwMjAwMDQwMDA4MDAxMDAwRgorOjIwRjJFMDAwMDEwMDIxMDQyMTA0M0ZGQzAwMDAxRkY4MTAwODE4NDgxNDY4MTI4ODExMDgyMjhBMjQ2QTU4MjY4MDAyMDAwMDkwCis6MjBGMzAwMDAwMTAwMjEwODIxMDgzRkY4MjAwODAwMDAzRkY4MjEwODIxMDgzRkY4MjAwMDIwMDQyMDA0MjAwNjFGRkMwMDAwRDIKKzoyMEYzMjAwMDEwMjAxMDIwMTAyMDEzRkU1NDIwNTQyMDU0MjA1NDIwNTVGQzU1MDQ1RDA0RTEwNDQxMDQwMUZDMDEwNDAwMDAyNQorOjIwRjM0MDAwMDEwMDIxMDgyMTA4M0ZGODAwMDBGRkZFMDAxMDAwMTAxRjkwMTA5MDEwOTAxRjkwMTA5MDAwMTAwMDUwMDAyMDQ4Cis6MjBGMzYwMDAwMDgwMTA4ODEwODgxRkY4MDIwMDAyMDA3RkZDMDQ4MDA4ODAxRkY4MDA4MDA4QTAwQzkwMTA4QzIyODg0MTAwRDkKKzoyMEYzODAwMDEwMDAxMUZDMTEyNDU1MjQ1NUZDNTUyNDU1MjQ1NTI0NTVGQzU1MjQ1QzIwRTAyMDQwMjAwMDIwMDAyMDAwMjBFMAorOjIwRjNBMDAwMTAyMDEwMjAxMDIwNTQyMDU1RkM1NTI0NTUyNDU1MjQ1NUZDNTUyNDU1MjQ1RDI0RTEyNDQxRkMwMTA0MDAwMDgyCis6MjBGM0MwMDAxMTIwMTkxMDExMTQzMTdFNUY4MDkwODAxMDQ0MTAyNDExMTgwMTAwMjEwODIxMDgyMTA4N0ZGODIwMDgwMDAwNDQKKzoyMEYzRTAwMDEwODAxMEMwMTA4MDU0RkM1NTA0NTYwNDU0RjQ1NDk0NTQ5NDU0OTQ1Q0Y0RjQ5NDQ0MDQwMDA0MDAyODAwMTBCRQorOjIwRjQwMDAwMDA4MDIwODQyMDg0M0ZGQzA0MDAzODdDMjA0NDIyNDQyMjQ0MjI0NDJFNTQ3MjQ4MjQ0MDA0NDAwODQwMzA0MEZGCis6MjBGNDIwMDAxMDAwMTFGQzExMDQ1NTA0NTVGQzU1MjA1NTIwNTUyMDU1RkU1NTIwNUQyMEYxMjA0MTEwMDE1MjAzOEEwMTA0MDUKKzoyMEY0NDAwMDIzRkMyMTA4MjEwOEE4OTBBODYwQTg5OEFCNDZBQzQwQUJGQ0E4NDBCODQwRUZGRTg4NDAwMDQwMDA0MDAwNDBFMgorOjIwRjQ2MDAwMTAwMDExRkMxMTA0NTUwNDU1RkM1NTA0NTU3NDU1NTQ1NTU0NTU1NDVENzRFMTA0NDEwNDAxMTQwMTA4MDAwMDdBCis6MjBGNDgwMDAxMDM4MTNDMDEwNDA1NDQwNTdGRTU0QTA1NTE4NTYwRTU0OTQ1NDkwNUM5MEUwOTA0MTEwMDExMDAyMTAwNDAwQjMKKzoyMEY0QTAwMDEwODAxMDgwMTBGQzU1MDQ1NjA0NTVGNDU1MTQ1NTE0NTVGNDU1MTQ1RDE0RjFGNDQxMTQwMDA0MDAxNDAwMDhENQorOjIwRjRDMDAwMTA0MDEwNDAxMEZDNTQ4ODU1MTA1N0ZDNTQyNDU3RkU1NDI0NTQyNDU1RkM1QzIwRjAyMDQwMjAwMEEwMDA0MDEyCis6MjBGNEUwMDAyMTEwMjExMDI3RkUyMTEwQTkxMEFCRkVBQTA0QUM4OEE4ODBBQkY4Qjg4OEMwODgwMTA4MDEwODAyMjgwNDEwNkQKKzoyMEY1MDAwMDEwMjAxMDIwMTAyMDU1RkM1NDI4NTUyQzU0QjA1N0ZFNTQ2MDU0NzA1Q0E4RTBBQzQxMjYwMjI0MDQyMDAwMjBEQgorOjIwRjUyMDAwMDEwMDIxMDgyMTA4M0ZGODEwMDAxMTIwN0RBMDExMTAzQTE4M0E4RTU0QzQ1MDkwOTEwODEyN0MxN0M4MTIwMDk4Cis6MjBGNTQwMDAyMDQwMjA0MDI3RkVBOEEwQTkxMEFBNEVBRkZDQUE0OEFCRjhBQTQ4QkE0OEVCRjgwMDQwMDA0MjAwM0UwMDAwRjYKKzoyMEY1NjAwMDAxMDAyMTA0MjEwNDNGRkMwMDAwM0ZGQzIxMDQyRkY0MjEwNDI3RTQyNDI0MjdFNDI0MjQyMDA0M0ZGQzIwMDQzNAorOjIwRjU4MDAwMjEwODIwOTAyMDYwQTg5MEE5NDhBQkZFQTg4MEE5RjhBQjA4QURGOEI5MDhDMUY4MDEwODAxMDgwMTI4MDExMDU5Cis6MjBGNUEwMDAyMDQwMjAyMDI3RkUyMDAwQTlGOEE5MDhBOUY4QTgwMEFCRkNBODA4QjgxMENCRkUwMDIwMDAyMDAwQTAwMDQwQzMKKzoyMEY1QzAwMDIwNDAyMDIwMjNGRTIyMDRBQzA4QTkxMEE5ODhBQTA0QUMwMEFCRjhCODQwRTg0MDAwNDAwMDQwMDdGQzAwMDAwNgorOjIwRjVFMDAwMTFGQzExMDQxMTA0NTVGQzU1MTA1NTU0NTU1NDU1NTQ1NTdDNTUxMDVFOTRGMjk0NDQ5NDA0RkMwODA0MDAwMDkxCis6MjBGNjAwMDAyMDkwMjA5MDI3RkUyMDkwQTg5MEFCRkVBQTI0QUMyMEFCRkNBODYwQTg3MEI4QThFMTI2MDIyNDA0MjAwMDIwQTIKKzoyMEY2MjAwMDIwMDAyM0ZDMjBBMEE4QTBBQkY4QUFBOEFBQThBQkY4QTg4MEJGRkVFOTEwMDEyMDAwQzAwMTIwMDIxODA0MDg5MworOjIwRjY0MDAwMDEwMDIxMDQzRkZDMDA1MDAwNDgzRkZFMjA0MDNGQzgyNDRDM0ZBODI5MzAyNTEwNDIyQTQ1NEE5ODg0MDAwMDExCis6MjBGNjYwMDAwMTAwMjEwODIxMDgzRkY4MDAwMDFGRjAxMTEwMUZGMDExMTAxRkYwMDEwMDA4QzgyODk0MjgxNjQ3RjQwMDAwOEIKKzoyMEY2ODAwMDAxMDAyMTA4M0ZGODIyMDgwNDAwM0ZGODIxMDgzRkY4MjEwODNGRjgyMjkwMDJBODA0RkMwODhBMTA3RTIwMDA0OAorOjIwRjZBMDAwMDEwMDIxMDgzRkY4MDEwMDAyQzAwQzMwM0ZFRUMwMDQzRTA4MjI0ODNFNDgyMjQ4M0U0ODIyMDgyMjI4MjYxMDI5Cis6MjBGNkMwMDAxMDA4MTEwQzEwOTA1N0ZFNTQ0MDU3RkM1NDQwNTdGRTU0ODA1NDgwNTVGQzVEMjBFMjIwMDIyMDA1RkUwODAwOEIKKzoyMEY2RTAwMDIwNDgyMjRDMjE0ODI3RkVBOEUwQTk1MEFBNEVBQzQ0QTkwMEFGRkVCOTEwQzFBMDAwNDAwMEIwMDEwRTA2MDRCNAorOjIwRjcwMDAwMTAwODExMEMxMDg4NTQ1MDU3RkU1NDg4NTQ4ODU1NTQ1N0VFNTZCNDU0ODg1RDA4RjE1NDQzRkUwMjUyMDAwMDU4Cis6MjBGNzIwMDAyMDAwMjNGRTIyMjJBQTIyQUJGRUFBMDBBQUZDQUE4NEFBRkNBQTg0QkFGQ0VBODQwMjg0MDRGQzA0ODQwODAwNDMKKzoyMEY3NDAwMDIwM0MyM0MwMjA0MEFCRkVBOTUwQTk1NEFGNThBOTUyQTk1MkFGNEVCOEUwRTk1MDAyNEMwNDQ2MDg0NDAwNDA3QworOjIwRjc2MDAwMDEwMDIxMDgzRkY4MDEwMDdGRkUwMDAwMEZGMDA4MTAwRkYwMDAwMDNGRkMyMDA0MkZFNDI4MjQyRkU0MjAwQzk3Cis6MjBGNzgwMDAyMDQwMjI0ODIxNTAyMTQ4QUFBNEE5MThBQTA2QURGOEE5MDhBOUY4QTkwOEI5RjhFMTA4MDEwODAxMjgwMTEwODEKKzoyMEY3QTAwMDIwODAyMDQwMjNGQ0E4OTBBRkZFQTgwMEFCRjhBQTA4QUJGOEFBMDhCQkY4RTg0MDg3RkUwMDQwMDA0MDAwNDBEMworOjIwRjdDMDAwMjI0ODIxNTAyMEUwQUJGRUE4RDBBOTRFQUU0NEFBMTBBQkJDQUM5MEFFRDBCOTdFRTIxMDA0MTAwODEwMDAxMDA0Cis6MjBGN0UwMDAyN0EwMjJBQzIxQjAyNDk2QUE5OEE5MENBQUZCQUMwMEE5RkNBOTA0QTlGQ0Y5MDg4OENDMDA5MDA3RkUwMDAwQzAKKzoyMEY4MDAwMDAxMDAwMTAwNDEwMjdGRkE0OTIyNTU2MjY3QTY0RDNBNTc1MjZENUE1NTk2NjU1MjQ5MjI3RkZFNDAwMjAwMDAzOAorOjIwRjgyMDAwMDEwMDIxMDgzRkY4MDAwMDI0RkMzODA4MjI1MDFFMjA0MUZFN0UyNDg4MjA3RUJDMDhBMDE0QTAyNkEwNDU3RUFGCis6MjBGODQwMDAwMTAwNDEwNDdGRkMxMDAwRkVGRTIwMjA3RTdDNDI0NDdFNTQ0MjU0N0U1NDQyNTRGRjEwMjQyODQyNDY4Mjg0NjIKKzoyMEY4NjAwMDAxMDAwMTgwMDMwMDA2ODAwOEMwMTE4MDAxMDAwMzAwMDUwMDA5MDAxMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDBGQworOjIwRjg4MDAwMTA0MDE4MjAyMDIwNDNGRTkwODAxODgwMzA4MDUwRkM5MDg0MTA4NDExMDQxMTA0MTEwNDEyMDQxMjE0MTQwODdDCis6MjBGOEEwMDAxMDAwMUJGODIyMDg0QTA4OEUwODFCRjgzMjA4NjIwOEEyMDgyM0Y4MjIwODIyMDgyMjA4MjIwODJGRkUyMDAwQTIKKzoyMEY4QzAwMDExMDAxOTAwMjFGQzRBMDQ4QzA0MEJFNDEyMjQzMjI0NTNFNDkyMjQxMjI0MTNFNDEyMjQxMDA0MTAxNDEwMDhFOAorOjIwRjhFMDAwMTIxMDE5MTgyMEEwNTdGQzk4NDAzMDQwMjdGQzYwNDBBMDQwMjA0MDJGRkUyMDQwMjA0MDIwNDAyMDQwMjA0MDRBCis6MjBGOTAwMDAwODQwMEM2MDEwODgyMUYwNDg0MDBDODgxOUZDMzAwODUxMDA5MUY4MTMxMDE0OTAxODYwMTA5MDExMEUxNjA0MkYKKzoyMEY5MjAwMDEwNDAxODQwMjdGQzUwNDA5QTQ4MTE0ODIxNTA2RkZFQTBFMDIxNjAyMTUwMjI0ODI0NEUyODQ0MzA0MDIwNDBDOQorOjIwRjk0MDAwMTA0MDE4NDAyMjdDNTI0MDlBNDAxN0ZFMjAwMDYwNDBBMjQwMjI3QzIyNDAyMjQwMjI0MDI1NDAyNEZFMjgwMENCCis6MjBGOTYwMDAxMDQwMTg0ODI0NEM1MzQ4OUE1MDE3RkMyNDA0NjQwNEE1RjQyNTE0MjUxNDI1RjQyNTE0MjQwNDI0MTQyNDA4NTYKKzoyMEY5ODAwMDEwNDAxODgwMjNGQzRBMDQ4RkZDMUEwNDMzRkM1MDAwOTdGRTEwNDAxMDQwMTNGQzEwNDAxMDQwMTdGRTEwMDBFMQorOjIwRjlBMDAwMTAzQzFCRTQzMDg2NkE2NDhENDgxOTEwMTFGQzMyNDA1NDQwOTdGRTEwNDAxMjQ0MTI0NDEyNDQxM0ZDMTAwMDYxCis6MjBGOUMwMDAyMjEwMkE5ODRBOTA4RjkwMjAzRTNGQTQ2MDY0QUZBNDIyMjQyRkE0MjIyODIyMTAzRjkwMjAyODIwNDYyMDg0MkMKKzoyMEY5RTAwMDIxMTAzMjE4Mjc5MDQ0QTBBN0JFMzRFNDI3QTQ2MjI0QUZFNDIyMTQyMzg4MjQ4ODI0OTQyODk0MzJBMjIxNDI1OAorOjIwRkEwMDAwMkVFMDNBQkU0RUUwOEFBMDJFRTAzQUJFMkVFNDY1MDRBNDg0MkZFNDM0ODQyN0U0MjQ4NDI3RTQyNDk0MjdFODhGCis6MjBGQTIwMDAwMDAwMDA2MDAwQzAwMTAwMDYyMDE4MzA2MDQwMDE4MDAzMDgwQzFDMzAzMDAwNjAwMTgwMDYwMDM4MDAwMDAwNjQKKzoyMEZBNDAwMDEwODAwODgwMDUwMDAyMDAwNTAwMDkwMDExODAyMjgwMDI4MDA0ODAwODgwMTA4MDIwODAwMDgwMDUwMDAyMDAwMQorOjIwRkE2MDAwMDA4MDQ0ODAyODgwMTA4MDMzRjA0ODkwODg5MDE4OTAyODkwNDkxMDg5MTAwOTEyMEExMjUyMTIyNDBFMDgwMEQwCis6MjBGQTgwMDAwNDAwNDVGQzI4MjAxMDIwMzAyMDQ4MjA4ODIwMUJGRTI4MjA0ODIwODgyMDA4MjAwODIwMTAyMDUwMjAyMDIwQTgKKzoyMEZBQTAwMDA4NDA4ODIwNTFGRTIxMDA1MTAwODkwMDA5MDAxOTAwMjkwMDQ5MDA4QTAwMEEwMDBBMDAxNDAwNTQwMDI4MDA0QQorOjIwRkFDMDAwNDQwMDJGRjgxMDA4MzEwODQ5MDg4OTEwMDUxMDBERkMxNTA0MjQwNDQ3RjQ4NDA0MDQwNDA4MDQyODI4MTAxMERBCis6MjBGQUUwMDAwNDAwNDVGQzI4NDgxMDQ4Mjg0ODQ4NDgwODQ4MUJGODI4ODg0ODg4ODg4ODA4ODgwODg4MDg4ODU3RkUyMDAwRTEKKzoyMEZCMDAwMDAwNDA0NDYwMjhDMDEwOTAyOTA4NEJGQzg4OTQxODkwMjg5MDQ4OTA4ODkwMDkxMDA5MTIwQTEyMkMwRTEwMDBGQgorOjIwRkIyMDAwMDQwMDQ1RkUyOTIyMTEyMjI5MjI0OUZFMEQyMjE1MjIyNTIyNDVGRTg1MjIwNDIwMDQyMDA4MjAyODIwMTAyMEVGCis6MjBGQjQwMDAwNDgwNDQ4MDI5MDAxMUZDMkEwNDQ5RjQ4NTE0MEQxNDE1MTQyNUY0QzUwODA1MjgwNTEyMDkwMjI4RkUxMDAwNkUKKzoyMEZCNjAwMDA0OTA0NDkwMkJGQzEwOTQyODk0NEJGQzhBOTQxQTkwMkJGRTRBOTI4ODkyMDg5MjA5MUExMTE0NTIxMDI0MTBGMAorOjIwRkI4MDAwODgyMDQ4MjgzMDI0MjdGRTUwMjA5MTI0MDkyNDE5MjQyRkU4NDkyODg5MTAwQTMwMEE1MDE0OEE1OTA2MjAwMjcxCis6MjBGQkEwMDAwODQwODg0MDUwQTAyMDkwNTExODkyMEUwREY0MTgwMDI4MDA0RkZDODg4MDA5MTAxMjA4NTdGQzIyMDQwMDA0NDgKKzoyMEZCQzAwMDAwODA4ODQwNTNGRTIyMDI1NDE0OTAxMDA4MTAxQkZFMjgxMDQ5MTA4ODkwMDg5MDA4MTAxMDEwNTA1MDIwMjBENgorOjIwRkJFMDAwMDAxMDhGRDA1MDkwMjExMDUxMTA5MTU4MDk5NDE5NTYyQjUyNEQ1Mjg5OTAwOTEwMDkxMDExMTA1NTUwMjIyMEMwCis6MjBGQzAwMDAwMjIwODIyMDRBMjQzM0I4MzIyMDUyMjI4QUEyMUIxRTI4NDA0ODQwOEJGQzA4NDAwODQwMTA0MDU3RkUyMDAwRDAKKzoyMEZDMjAwMDA0MDA0NEY4Mjg4ODEwODgyOEY4NDgwMDA5RkMxOTA0MjlGQzQ5MDQ4OUZDMDkwNDA5MDQxMTA0NTExNDIxMDhGRQorOjIwRkM0MDAwMDAwMjkwQzI1NzAyMjExMjUxMTI5RkQyMTExMjMzOTI1MzUyOTU1MjE1MTIxOTAyMTEwMjUxMDIyMTBBMDEwNEE0Cis6MjBGQzYwMDA4ODQwNDg0MDMwQTAzMDk4NDkwRThCRjQxQzQwMjg0MDJCRkM0ODQwODk1MDA5NDgwQTQ0MTQ0NDU5NDAyMDgwNEEKKzoyMEZDODAwMDg4NDA0OEEwMzA5MDIxMDg1MjA2OTVGNDE4MDAyODA4NDg4QzhBNDgwOTQ4MDk1MDA4MTAwODAwNTdGRTIwMDBCRAorOjIwRkNBMDAwMDg0MDg4MjA1MDI0MjNGRTUwMDA5MUZDMDgwMDE5RkMyODAwNDgwNDg5RkMwOTA0MDkwNDExMDQ1MUZDMjEwNDJCCis6MjBGQ0MwMDA0NDgwMjQ5MDE5MDgxM0ZDMjgxNDQ5ODgwQTg0MUM4NDI5RkM0OTA4OEE5MDBDNjAwODYwMTA5ODUzMEUyQzA0QTQKKzoyMEZDRTAwMDA0NDA0NDQwMkJGQzEwQTAzMTEwNTIwODk3RkUxODA4MkJDODRBNDg4QTQ4MEJDODBBNDgxMDA4NTAyODIwMTBEOQorOjIwRkQwMDAwMDgwMDhCRjg1MjQ4MjI0ODUzRjg5MjQ4MTI0ODEzRjgzMDQwNTdGRTkwRTAxMTU4MTI0RTFDNDQ1MDQwMjA0MDdDCis6MjBGRDIwMDAwMDAwNEJGRTJBNTIxMjUyMzNGRTRBNDI4ODgwMThGQzI5MDQ0QjA4OEM5MDA4NjAwODQwMTE4MDU2MDAyQzAwNjIKKzoyMEZENDAwMDAwODA0QjM4MkEwODEyMDgzMjA4NEJCODBBMDgxQTA4MkJGODQ5MjA4OTIwMDkyMDBBMjIxMjIyNTQxRTI4MDA4QgorOjIwRkQ2MDAwMDg0MDg4NDA1MEEwMjExODUyMEU4REY0MTg0MDI4NDA0QkY4ODg0MDA4NDAwQkY4MEEwODBBMDg1M0Y4MjIwOEJBCis6MjBGRDgwMDA4ODQwNDgyMDM3RkUyMDAwNTExMDkxMTAxQUE4MkM0NDI4NDA0ODQwOEZGRTA4NDAwODQwMTA0MDUwNDAyMDQwNUQKKzoyMEZEQTAwMDg4MjA0QkEwMzEyMDIxM0U1NzQyOTQ1NDBDOTAxQzEwMkY1ODQ5NTQ4OTU2MDk1MjA5OTIxMTEwNTU1MDIyMjBCNgorOjIwRkRDMDAwMDkwMDQ5M0MzMTI0MzdFNDQ5MjQ4OTNDMUQyNDE3QTQyNEE0NDRCQzg0QTQwN0E0MDQ0NDA4NDQyODk0MTEwOEYzCis6MjBGREUwMDAwODQwODg0MDU3RkMyMEUwNTE1MDkyNEUwQzQ0MUJGODJBMDg0QkY4OEEwODBCRjgwQTA4MDgwMDU3RkUyMDAwMjMKKzoyMEZFMDAwMDg4MDA0QkY4MzI0ODIzRjg1MjQ4OEJGODE4MDAyRkZFNEE4MDhBODYwQTU4MEE2MDBBMzAwQTk4NTMwRTIyMDQxNworOjIwRkUyMDAwMEJGQzhBNDQ1MjQ0MjNGQzUyNDQ4QTQ0MUJGQzI4MDA0OUY4ODkwODA5RjgwOTA4MDlGODExMDg1MTI4MjExMEVECis6MjBGRTQwMDA4ODAwNEJGRTMyMjIyMjIyNTNGRTkyMDAwQUZDMUE4NDJBRkM0QTg0OEE4NDBBRkMwQTg0MTQ4NDU0RkMyODg0ODgKKzoyMEZFNjAwMDA5Rjg4ODUwNTAyMDI3RkU1MEEyOTEyNDBBQTAxQzQwMjgyMDRCRkU4ODcwMDhBODExMjgxMjI2NTQyNDIwMjAwNQorOjIwRkU4MDAwODg4MDUwNDAyN0ZDNTExMDk3RkUwODAwMUJGODJBMDg0QkY4OEEwODBCRjgwODQwMEZGRTEwNDA1MDQwMjA0MEY3Cis6MjBGRUEwMDAwODgwODg0MDU3RkMyMTEwNUZGRTkwMDAxM0Y4MkEwODJCRjg0QTA4OEJGODA5MjAwOTIwNTIyMjI0MjIwODFFMUEKKzoyMEZFQzAwMDEwMDQ5N0ZFNjY1MDY1OTBBN0ZFMTUyMjE1MTQzNTUwNTU1MDk3RDAwOTI4MDkyODA5NDQ1MjQ2MjQ4NDAwMDA0OQorOjIwRkVFMDAwOTA0MDUwNDAyN0ZFNjBBMDkxMTAxNjA4MUJGRTMyMEE1M0Y4OTIwODEzRjgxMTUwMTI0OEE0NDQ0OTQwMDA4MENECis6MjBGRjAwMDAwMjAwOUEzRTUzRDIyNDkyNTdEQTk1NjQxNTU0MzdERTU1NTQ5NTQ0MTdGRTE1NDQxNTQ0MTU0NEE5NDQ1MDg0MjEKKzoyMEZGMjAwMDRCRjgyODQwMTdGRTMwNDA1N0ZDOTU1NDE1NTQxN0ZDMzA0MDU3RkM5MDQwMUZGRTEwMDAxNTI0NTQ5MjI4OTI0MAorOjIwRkY0MDAwMDg5MDhCRkU1MDkwMjNERTUyNTI5M0RFMDkyMDE5RkUyQjIwNERGQzg5MjAwOUZDMDkyMDE5MjA1MUZFMjEwMDM2Cis6MjBGRjYwMDAxMDEwMTgxMDEwMTAxRUZFMjIxMDIyOTA2MjkwOTQ5MDE0OTAwOUZFMDgxMDEwMTAyMDEwNDAxMDgwMTAwMDAwMTAKKzoyMEZGODAwMDAwMjA3RjIwNDkzRTdGNDQ0OUE4NDkzMDdGNDAwOEEwRkYzRTFDNDIxQUE0MjkxODQ4MTA4ODIwMDhDMDBCMDAxQQorOjIwRkZBMDAwMTA0MDEwNDAyMEEwM0NEODI1MjY0N0Y4NDUwOEE5RjgxOTA4MDlGODExNDgxMTMwMjE1MDQxOEM4MTA0MDAwMEQ2Cis6MjBGRkMwMDAwNDAwMEZGMDM0MjAwMkMwMEYwMDdGRkU0MDAyOUZGNDAxMDAxRkYwMTExMDFGRjAxMTEwMUZGMDBDNjA3MDFDM0YKKzoyMEZGRTAwMDA0MDAwNjAwMDQwMDBGRjgwODEwMDgxMDE0MjAyNDIwNDI0MDAyODAwMTgwMDI4MDA0NDAwODMwMzAwRUMwMDRCRgorOjAyMDAwMDA0MDAwM0Y3Cis6MjAwMDAwMDAxMDAwMTAwMDEwMDAzRjgwMjEwMDQyMDA1MDAwOTAwMDEwMDAxMDAwMTAwMDEyMDAxNDAwMTgwMDEwMDAwMDAwMzAKKzoyMDAwMjAwMDIwMDAyM0Y4MjAxMDNFMjA0NDQwNDg4MDkzRkMxMDU0MTA5NDEwOTQxMTI0MTYyNDE4NDQxMTk0MDYwODAwMDBGMgorOjIwMDA0MDAwMjAyMDIwMjAyMDIwMjFGQzNFMjA0NDIwNDkyNDgxMjQxMTI0MTFGQzEwMjAxMDIwMTQyMjE4MjIxMDFFMDAwMEFGCis6MjAwMDYwMDAyMDQwMjA0MDIwRkUzRTgwNDUwMDQ5Nzg5MjAwMTFGODEwMDgxMDA4MTAwODEyMEExNDBBMTgwNjEwMDIwMDAwOTEKKzoyMDAwODAwMDIwMDAyMDFDMjFFMDNFMjA0NDIwNDgyMDgwMjAxM0ZFMTAyMDEwMjAxMjIwMTQyMDE4MjAxMUZDMDAwMDAwMDAxRAorOjIwMDBBMDAwMjAwMDIwM0MyMUMwM0U0MDQ0NDA0ODQwODNGRTEwNDAxMDQwMTBBMDEwOTAxMTEwMTUwODFBMDYxNDA0MDAwMDcyCis6MjAwMEMwMDAyMDQwMjA0MDIwNDAzRUZFNDQ4MDQ5NDA5MjQwMTFGQzEwNDQxMDQ0MTA0NDEwODQxNDg0MTkxNDEyMDgwMDAwMjkKKzoyMDAwRTAwMDEwMjAxMDIwMjA0MDNFNDg0NDg0NDlGRTgwMDIxMDAwMTFGQzExMDQxMTA0MTEwNDE1MDQxOUZDMTEwNDAwMDA4QQorOjIwMDEwMDAwMjAyMDIwMjAyMDQwM0RGRTQ5MDI1MTAyQTE3QTIxNEEyMTRBMjE0QTIxN0EyNTAyMjkwMjMxMEEyMTA0MDAwMDdECis6MjAwMTIwMDAyMDIwMjAyMDIxRkMzQzIwNDQyMDRCRkU4MjA0MjBGODIwMTAyMDIwMjNGRTIwMjAyODIwMzBBMDIwNDAwMDAwMzIKKzoyMDAxNDAwMDIwNDAyMDQwMjBBMDNFOTA0NTBFNEJGNEE0NDAyMDQwMjdGQzIwNDAyMTUwMjU0ODJBNDQzNDQ0MjE0MDAwODA1MworOjIwMDE2MDAwMjAwMDIxRjgyMTA4M0ZGODQ1MDg0OUY4ODAwMDIxMTAyMTE2MjFEODIxMTAyNTEwMjk1MjMxOTIyMTBFMDAwMEE0Cis6MjAwMTgwMDAyMDQwMjA0MDIzRkMzQzQwNDRFMDQ5NThBNjQ2MjFGODIxMDgyMUY4MjEwODIxMDgyOUY4MzAwMDI3RkUwMDAwMzAKKzoyMDAxQTAwMDIwNjAyM0JDMjIyNDNFMjQ0N0JDNEEyNEEzRkMyMDIwMjAyMDIzRkMyMTA4MjQ5MDI4NjAzMTk4MkUwNjAwMDAyNworOjIwMDFDMDAwMjA5MDIzRkUyMDkwM0UwMDQ1Rjg0OTA4QTFGODIxMDgyMUY4MjA0MDIzRkUyMDYwMjg5MDMxMDgyNjA2MDAwMEQ5Cis6MjAwMUUwMDAyMTA4MjA5MDIzRkMzQzQwNDVGODQ4NDBBN0ZFMjA4MDIwRjgyMTI4MjEyODIyRjgyQTQ4MzQ0ODJCRkUwMDAwQTYKKzoyMDAyMDAwMDIxMTAyMTEwMjdGRTNEMTA0NUYwNDg0MDgzRjgyMjQ4MjNGODIwNDAyM0Y4MjA0MDJCRjgzMDQwMjdGRTAwMDBCQQorOjIwMDIyMDAwMjI5MDIyOTA0N0QwN0E5RTRGRDQ5MDI0MjdFNDI0QTQyNzk0MjQ5NDI3ODgyNDg4MkM5NDM1QTYyNEM0MDAwMDMwCis6MjAwMjQwMDAyMDAwMjNCQzQyQTQ3QkJDNEEyMDkyQTIwM0JFMjExMDIzRkMyMTEwMjdGRTIwMDAyOTEwMzIwQzI0MDQwMDAwQkUKKzoyMDAyNjAwMDIwNDAyN0ZFMjI0ODNCRjg0ODQwNUZGRThBQUEyM0I4MjA5MDIzRkMyMDkwMjNGRTI5OTQzMjg4MkNDNDAwODRERAorOjIwMDI4MDAwMDEwMDAwODAzRkZFMjAwMDIyMDAyMjAwMjIyMDIyNzAyMzgwMjIwMDIyMDAyMjA0NDIwNDQyMDY4MUZDMDAwMDUwCis6MjAwMkEwMDAwMTAwMDA4MDNGRkMyMDAwMkZGODIxMDAyMTAwMjEwMDNGRkMyMTQwMjI0MDIyNDA0NDQ0NDg0NDkwM0MyMDAwNzgKKzoyMDAyQzAwMDAxMDAwMDgwM0ZGRTIwODAyMDgwM0ZGQzIwODAyN0Y4MjQxMDIyMTAyMTIwMjBDMDIxMjA0NjFDNTgwODgwMDAxQworOjIwMDJFMDAwMDEwMDAwODAzRkZFMjIwMDIyMDAyN0ZDMjQwNDJGRTQzNDI0MjQyNDI3RTQyNDE0NDQwQTQ0MDI4M0ZFMDAwMEE2Cis6MjAwMzAwMDAwMjAwMDEwMDNGRkUyNDIwMjYyMDI0MjAyQkZFMzg3MDI4NzAyOEE4MjhBODI5MjQyOTI2NEEyNDQ4MjA4ODIwQUMKKzoyMDAzMjAwMDAxMDAwMDgwM0ZGRTI0MTAyMjIwMkZGQzIwODAyMDgwMkZGODIwODAyMDgwM0ZGRTIwODA0MDgwNDA4MDgwODA1QQorOjIwMDM0MDAwMDEwMDAwODAzRkZFMjIyMDNGRkUyMjIwMjNFMDIwMDAyN0Y4MjQwODI3RjgyNDQwMjQyMDQ4MTg0ODBFOTAwNDlGCis6MjAwMzYwMDAwMTAwMDA4MDNGRkUyMTAwM0ZGQzIxNDAyMkIwMjQ4RTJGRjQzNDkwMjdGMDI0OTA0N0Y0NDA4NjgwRkMwMDAwNEYKKzoyMDAzODAwMDAxMDAwMDgwM0ZGRTIwMDAyMDgwMkVCODI4ODgyRUI4Mjg4ODI4ODgyRkY4Mjk0ODIxMjA0MjEwNDQwQzg4MDhGOAorOjIwMDNBMDAwMDEwMDAwODAzRkZDMjIwMDJGRjAyODkwMkZGMDI4OTAyRkYwMjE4MDI2ODAzRkZDMjA4MDQwODA0MDgwODA4MEYwCis6MjAwM0MwMDAwMTAwM0ZGRTIwODAyRkY4MjA4ODNGRkUyMTA4MkZGODI0MTgzRkY2MjQ5MDI0OTAyNDkwNDE0MDQ2MzA5ODEwQjcKKzoyMDAzRTAwMDAwODAzRkZFMjQyMDI0MzAzRkEwMjQzRTNGNDQyNDI0M0ZBNDI0MjQyNzI4MjkxMDI5MTA1MTI4NjU0NjgyODQ4NgorOjIwMDQwMDAwMDA4MDNGRkUyMjIwM0ZGQzIyMjAyM0UwMjA4MDJGRjgyODg4MkZGODIwODAyRkZDMjA4MDQ3Rjg0MDgwOUZGRUI4Cis6MjAwNDIwMDAwMDgwM0ZGRTIwMDAyRkY4Mjg4ODJGRjgyODg4MkZGODIwODAyRkY4MjA4MDNGRkUyODg4NTNFNDQwODBCRkZFMDIKKzoyMDA0NDAwMDAxMDAwMDgwM0ZGRTI4MDAyRjdDMjkxNDNGOTQyQUFDMkZDMDJBQTgyQUJFMkZDODJBQkU1Mjg4NTI4OEExODhDMAorOjIwMDQ2MDAwMDEwMDNGRkUyMDgwM0ZGQzIwMDAyRkY4MkE0ODJCQzgyRkY4MjAwMDJGRjgyMDAwM0ZGRTI0OTA0QzhDOTE4ODQ3Cis6MjAwNDgwMDAwMDgwM0ZGRTI1MjAyQkZDM0QyMDI5RkMyOTIwMjlGQzI4MDAyN0ZDMjQwNDI3RkMyNDA0NDdGQzQ0MDQ4NDBDNkEKKzoyMDA0QTAwMDA4MDAwODAwMDgwMDBBMDA0OTAwNDg4MDQ4ODA4ODAwMDgwMDA4MDAwODAwMDgwMDA4MDAwODAwMDgwMDA4MDA3OQorOjIwMDRDMDAwMTAwMDEwMDAxMUZDMTg0NDU0NDQ1NDQ0OTA0NDEwNDQxMDQ0MTA0NDEwODQxMDg0MTEwNDExMDQxMjFDMTQwOEY3Cis6MjAwNEUwMDAxMDA4MTAwODEwMDgxNDA4NTVGRTU0MDg1NDA4OTEwODEwODgxMEM4MTA4ODEwMDgxMDA4MTAwODEwNzgxMDEwRkMKKzoyMDA1MDAwMDIwMDAyMDdDMjdDMDIwNDAzMDQwQTg0MEE3RkVBMDQwMjA0MDIwNDAyMDQwMjA0MDIwNDAyMDQwMjA0MDIwNDBGQgorOjIwMDUyMDAwMjAwMDIzRkMyMDQwMzA0MEE4NDBBODQwQTdGRTIwNjAyMEEwMjBBMDIxMjAyMTIyMjIyMjI0MjIyODFFMDAwMEUzCis6MjAwNTQwMDAyMDQwMjA0MDIwNDAzN0ZDQUM0MEE4NDBBM0Y4MjIwODIxMDgyMTEwMjA5MDIwNjAyMDkwMjEwODIyMEUyNDA0RjQKKzoyMDA1NjAwMDIwMDAyN0ZFMjQwMDM0MDhBRDA4QTQ5MEE0NTAyNDIwMjQzMDI0NDgyNDhDMjUwNDI0MDAyNDAwMjdGRTIwMDA4RgorOjIwMDU4MDAwMTAyMDEwMjAxMDIwMTNGRTVBMjI1NjIyOTIyMjEyMjIxM0ZFMTAyMDEwMjAxMDIwMTAyMDEwMjAxMDIwMTAyMDdECis6MjAwNUEwMDAyMTAwMjE4MDIxMDAzMUZDQUEyMEFBMjBBNDIwQTAyMDI3RkUyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMkUKKzoyMDA1QzAwMDIxMDAyMTAwMjFGRTMyMDBBQkZDQTQwMEEzRjgyMDA4MjAwODIwMDgyMDA4MjAwODIwMDgyMDBBMjAwQTIwMDQzQQorOjIwMDVFMDAwMjEwMDIxMDgyMTA4MzExMEE5MjBBOUMwQTEwMDJGRkUyMTQwMjEyMDIxMjAyMTEwMjE0ODIxOEUyMTA0MDAwMEY2Cis6MjAwNjAwMDAyMDQwMjA0MDIwQzAzMEEwQTkxOEEyMEVBNUY0MjExMDIxMTAyMTEwMjE1MDIxMjAyMTA0MjEwNDIwRkMwMDAwQjUKKzoyMDA2MjAwMDIwMjAyMTIwMjFBMDMxMjBBOTEwQUExMEEyODgyNEM2Mjg4NDIwODAyMTEwMjEwODIyN0MyN0M2MjIwNDIwMDAyOQorOjIwMDY0MDAwMjA4MDIwNDAyMDQwMzAwMEFGRkVBODQwQTA0MEEwNjAyMDU4MjA0QzIwNDQyMDQwMjA0MDIwNDAyMDQwMjA0MDZECis6MjAwNjYwMDAyMDAwMjdGODIwODgzMDg4QTg4OEFDODhBODg4QTdGODIwODgyMDg4MjEwODIxMDgyMTA4MkZGRTIwMDAyMDAwNzAKKzoyMDA2ODAwMDIwNDAyMDQwMjA0MDI3RkVCMDQwQTg0MEEwNDAyMDQwMjNGODIyMDgyMjA4MjIwODIyMDgyMjA4MjNGODIwMDBENQorOjIwMDZBMDAwMjA0MDIwNTAyMDRDMzA0OEFCRkVBODQwQTBDMDIwRTAyMTUwMjE1MDIyNDgyNDRFMjg0NDIwNDAyMDQwMDAwMEFCCis6MjAwNkMwMDAyMDAwMjdGQzIwNDAzNDQ4QUE0OEFBNTBBMTUwMjE2MDJGRkUyMDQwMjA0MDIwNDAyMDQwMjA0MDIwNDAyMDQwRDAKKzoyMDA2RTAwMDEwMDAxMUZDMTEwNDE5MDQ1NTA0NTVGQ0QxMDQxMTA0MTEwNDExRkMxMDAwMTAwMDEwMDAxM0ZFMTAwMDAwMDBBNAorOjIwMDcwMDAwMjA0MDIwNDAyMDQwMzNGOEFBNDhBQTQ4QTI0ODIyNDgyRkZFMjA0MDIwQTAyMEEwMjExMDIyMDgyQzA2MDAwMEJDCis6MjAwNzIwMDAxMDgwMTA4MDEwODAxMUZFNTk0MDU2NDA5NDdDMTA0MDEwNDAxMDdFMTA0MDEwNDAxMDQwMTA0MDEwNDAwMDAwRkQKKzoyMDA3NDAwMDIwMDAyM0ZDMjIwNDMyMDRBQkZDQTIwMEEyODAyMjhDMjJCMDIyQzAyMjgwMjQ4MDI0ODIyODgyMzA3RTAwMDBFRAorOjIwMDc2MDAwMjA5MDIwOTAyM0ZDMzA5NDI4OTRBQkZDQTI5MEEyOTAyM0ZFMjA5MjIwOTIyMTFBMjExNDIyMTAyQzEwMjAxMERDCis6MjAwNzgwMDAyMDAwMjdGQzIwODQzMDg0MjkwNEE5MDRBMjE0QTQwODIxRkMyMTA0MjEwNDIxMDQyMTA0MjEwNDIxRkMwMDAwOEYKKzoyMDA3QTAwMDIzRkMyMTA4MjA5MDMwNjBBODYwQTE5MEE2NEUyMDQwMjNGQzIwNDAyMDQwMkZGRTIwNDAyMDQwMjA0MDIwNDA5OAorOjIwMDdDMDAwMTA0MDEwNDAxMDgwMTg4ODU1MDQ1MjNFOTdDMjEwMDAxM0ZDMTIwNDEyMDQxMjA0MTIwNDEzRkMxMjA0MDAwMDZCCis6MjAwN0UwMDAyMDEwMjAxMDI3OTAzMDEwQTg3RUEwMTJBRkQyMjIxMjIyMTIyNDEyMjUyMjJGQTIyMDQyMjA4QTIxMDQwMDAwNjIKKzoyMDA4MDAwMDEwMDAxM0ZFMTIyMDEyMjg1QTI0NTYyMDkzRkUxMjIwMTIyMDEyMjAxMjUwMTQ1MDE0ODgxOTBFMTYwNDEwMDA3RAorOjIwMDgyMDAwMjAwMjI3QzIyNDQyMzQ1MkFENTJBNTUyQTU1MjI1NTIyNTUyMjU1MjI1NTIyMTAyMjI4MjI0NEEyODQ0MDAwMDU3Cis6MjAwODQwMDAyMDQwMjI0NDIyNDQzMjQ0QUJGQ0EwMDBBM0ZDMjAwNDIwMDQyM0ZDMjIwMDIyMDAyMjAyMjIwMjIxRkUyMDAwREUKKzoyMDA4NjAwMDEwODAxMDgwMTEwMDExRkM1QTA0NTQwNDkxRTQxMTI0MTFFNDExMjQxMUU0MTAwNDEwMDQxMDE0MTAwODAwMDA1NworOjIwMDg4MDAwMTA4MDEwODAxMUZDMTkwODU2OTA1NDYwOTA2MDEwOTgxMzA2MURGODExMDgxMTA4MTEwODExMDgxMUY4MDAwMDNECis6MjAwOEEwMDAyMDAwMjdGRTI0ODQzMDgwQUJGQ0E5MDBBMTQwMjI0MDIzRkMyMDQwMjA0MDI3RkUyMDQwMjA0MDIwNDAyMDQwODQKKzoyMDA4QzAwMDIwNDAyMDQwMjNGQzMwNDBBRkZFQTQwNEEwMDAyM0Y4MjAyMDIwNDAyRkZFMjA0MDIwNDAyMTQwMjA4MDAwMDAyQgorOjIwMDhFMDAwMjA0MDIwNDAyN0ZFMzA0MEFCRkNBQTQ0QTI0NDIzRkMyMDQwMjBFMDIxNTAyMjQ4MkM0RTIwNDQyMDQwMDAwMDkwCis6MjAwOTAwMDAyMDgwMjJGRTIyQTIzMjk0QUE4OEEyOTRBMkEyMjA4MDIwNDAyMDQwMjNGQzIwNDAyMDQwMkZGRTIwMDAwMDAwNTUKKzoyMDA5MjAwMDIwMDAyM0ZDMjI0NDIyNDQzMjQ0QUJGQ0FBNDRBMjQ0MjNGQzIwNDAyMDQwMjdGQzIwNDAyMDQwMkZGRTIwMDBBQworOjIwMDk0MDAwMjAwMDIzRkUyMjIyMzIyMkFCRkVBQTYyQTI3MjIyQUEyMkFFMjMyQTIyMjIyMjIyMjIyMjIzRkUyMDAwMDAwMEZGCis6MjAwOTYwMDAyMDAwMjNGODIyMDgzMjA4QUJGOEE4MDBBN0ZDMjQ0NDI0NDQyN0ZDMjQwMDI0MDAyNDAyMjQwMjIzRkUyMDAwMjIKKzoyMDA5ODAwMDIxMDgyMDkwMjNGQzMwNDRBODQ0QUJGQ0EyNDAyMjQwMjNGRTIwQzIyMTQyMjE0QTIyNDQyQzQwMjA0MDAwMDAxMQorOjIwMDlBMDAwMjA0MDIwNDAyMDg4MzFGQ0E4MDRBOTA4QTEwNDIyODIyNEZBMjEwODIyOTAyMDYwMjA2MDIxOTAyNjBFMjAwNEZBCis6MjAwOUMwMDAyMDAwMjdGRTI0MjAzNDIwQURGQ0E0QThBNDcwMjdGRTI0MjAyNDUwMjQ0ODI0ODQyNTA0MjdGRTIwMDAwMDAwRDIKKzoyMDA5RTAwMDIwNDAyMDQwMjNGQzMwNDBBODQwQTdGRUExMDgyMDkwMjNGQzIwNDAyMDQwMjdGRTIwNDAyMDQwMjA0MDIwNDAzRQorOjIwMEEwMDAwMjA5MDIwOTAyMDkwMzc5RUE4OTBBMDkwQTc5RTIwOTAyMDkwMjA5MDJGOUUyMDkwMjA5MDIwOTAyMDkwMjA5MEY3Cis6MjAwQTIwMDAyMDQwMjA0MDMyNDgyOTQ4QTk1MEE3RkNBNDA0MjRGNDI0OTQyNDk0MjQ5NDI0RjQyNDA0MjQxNDI0MDgwMDAwRTMKKzoyMDBBNDAwMDIwMDAyN0ZDMjQwNDI1MTQzNEE0QUZGQ0E0ODRBNDQ0MjdGQzI0ODQyNDg0MjQ4NDI0RjQyNDA0MjQxNDI0MDhBMAorOjIwMEE2MDAwMTAwMDEzRkUxMjIyMTIyMjVBRkE1NjIyRDNGRTEyMDIxMkYyMTI5MjEyOTIxMkYyMTQwMjE0MDIxODBBMTAwNDhBCis6MjAwQTgwMDAyMTAwMjEwMDIxRkMzMjU0QUM1NEEwOTRBMzI0MjBENDIzMDgyMDQwMjEyMDI1MjQyNTBBMkQwQTIwRjgwMDAwRUYKKzoyMDBBQTAwMDEwNDAxMDIwMTdGRTExMTA1OTEwNTU5ODkyQTQxNDQ0MTA0MDEwNDAxN0ZFMTA0MDEwNDAxMDQwMTA0MDAwMDBBNworOjIwMEFDMDAwMjAwMDIzRjgyMjA4MzNGOEFBMDhBQTA4QTNGODIwMDAyMDAwMjdGQzI0QTQyNEE0MjRBNDI0QTQyRkZFMjAwMEI3Cis6MjAwQUUwMDAyMDQwMjA0MDIzRjgyMjQ4MzNGOEE4NDBBN0ZFQTAwMDIzRjgyMjA4MjI0ODIyNDgyMjY4MjA5MDIzMEMyQzA0QTcKKzoyMDBCMDAwMDAwMDAyN0JDMjRBNDI0QTQzN0JDQTgwMEEzRjhBMDAwMkZGRTIwODAyMTAwMjFGODIwMDgyMDA4MjA1MDIwMjA4NQorOjIwMEIyMDAwMjAwMDI3RkMyNEE0MjRBNEI3RkNBODgwQTA0MDJGRkUyMDgwMjBGODIwODgyMTA4MjEwODIyMjgyNDEwMDAwMENBCis6MjAwQjQwMDAyMDQwMjI0NDIyNDQyMjQ0MzNGQ0E4MDBBN0ZFQTA0MDIwODAyN0ZFMjRBMjI0QTIyNEEyMjRBMjI0QUEyNEE0MzQKKzoyMDBCNjAwMDIwRDAyNzEwMjExMDMxMTBBRkQyQTE1NkEzQjgyMzUwMjUxMDI1MTAyOTI4MjEyODIxMjQyMTQ2MjE4NDAwMDA0MQorOjIwMEI4MDAwMjEwMDIxRkUyMjAwMzNGOEFEMDhBMUY4QTEwODIxRjgyMDgwMjFGQzIzMDgyQzkwMjA2MDIxQjAyRTBFMDAwMDg3Cis6MjAwQkEwMDAyMDQwMjdGQzIwNDAzM0Y4QTg0MEFGRkVBMDgwMjEyMDI3QzAyMTA4MjdGQzIwNDAyNDQ4MjQ0NDI5NDQyMDgwQkQKKzoyMDBCQzAwMDIyMTAyMTEwMjEyMDI3RkMzMTIwQUZGOEExMjhBRkZFMjEyODI3RjgyMTIwMjMzMDIzMjgyNTI2MjkyNDIxMjBDMAorOjIwMEJFMDAwMjAyMDI3RkUyNDIwMjVGQzM0MjRBRkZFQTQyNEE1RkMyNDIwMjVGQzI1MjQyNUZDMjkyNDI5RkMzMTI0MjEyQ0RBCis6MjAwQzAwMDAyM0Y4MjIwODIzRjgzMjA4QUJGOEEwNDBBRkZFMjAwMDIzRjgyMjA4MjNGODIwNDAyNDQ4MjQ0NDI5NDQyMDgwNDkKKzoyMDBDMjAwMDIxNDAyMTIwMjFGRTMyMjBBRTIwQUJGQ0EyMjAyM0ZDMjIyMDIyMjAyM0ZFMjAwMDI1MjQyNDkyMjg5MjAwMDBDRAorOjIwMEM0MDAwMjA4MDIwNDAyN0ZDMjExMEI3RkVBODAwQTNGODIyNDgyM0Y4MjI0ODIzRjgyMDQwMjdGQzIwNDAyRkZFMjAwMDBFCis6MjAwQzYwMDAyMTEwMjExMDI3QkMzMTEwQUJCOEE1NTRBMTEwMjAwMDI3RkMyMDQ4MjI0MDIyN0MyMzQwMjRDMDI4M0UyMDAwNjkKKzoyMDBDODAwMDIwNDAyN0ZFMjAwMDMzRkNBQTk0QUFGNEEyMDQyM0ZDMjAwMDIzRjgyMDAwMkZGRTIwNDAyMjQ4MjRDNDIwNDA0NQorOjIwMENBMDAwMjExMDI3RkUyMTEwMzNGQ0FBQTRBM0ZDQTAwMDI3RkUyNDA0MjFGODIxMDgyMUY4MjEwODIxRjgyMTA4MjFGOEM1Cis6MjAwQ0MwMDAwMDAwM0ZGODAxMDAwMTAwN0ZGQzAyODAwNDQwMDkzMDExMEUyMTA0NTE1MDExMjgyMTJDMjEyODQ1MDAwMjAwNjYKKzoyMDBDRTAwMDAwNDAzREZFMjQ4MDI5RkMyQTg0MjRGQzM0ODQyOUZDMjI4NDI0NEMxOTMwRTEwRTA5NTAxMTI4MDUwMDAyMDAxRQorOjIwMEQwMDAwMjAwMDFCRkMwODA0MjAwNDIwMDQyMDA0MjAwNDJGRjQyMDA0MjAwNDIwMDQyMDA0MjAwNDIwMDQyMDE0MjAwOEE5Cis6MjAwRDIwMDAyMDAwMUJGQzA4MDQwMDA0MjdFNDIwMDQyMDA0MjdFNDIwMDQyMDA0MkZGNDIwMDQyMDA0MjAwNDIwMTQyMDA4REIKKzoyMDBENDAwMDIwMDAxQkZDNDkwNDQxMDQ1RkY0NDEwNDRGRTQ0MTA0NUZGNDQxMTQ0MTE0NDE1NDQxMjQ0MTA0NDAxNDQwMDhFMgorOjIwMEQ2MDAwMTAwMDBCRkMwOTA0MjEwNDJGRjQyMTA0MjIwNDIyODQyNDg0MjUwNDJBMjQzN0Y0MjAxNDIwMDQyMDE0MjAwODE4Cis6MjAwRDgwMDAxMDAwMEJGQzA4MDQyMTA0MjA4NDJGRjQyMDQ0MjI0NDIxODQyMDg0MjE0NDI2MjQzODI0MjAwNDIwMTQyMDA4QTYKKzoyMDBEQTAwMDEwMDAwQkZDMDkwNDIwODQyRkY0MjAwNDIwMDQyM0M0MjI0NDIyNDQyMjU0MjQ1NDI0MzQyODA0MjAxNDIwMDg3RgorOjIwMERDMDAwMTAwMDBCRkM0ODA0NDA4NDUwODQ0ODg0NDNGNDVDODQ0NEM0NDUyNDQ2MTQ0NDA0NEJGNDUwMDQ0MDE0NDAwOEYzCis6MjAwREUwMDAxMDAwMDlGQzA4MDQyMDA0MjdFNDI0MjQyN0U0MjAwNDJGRjQyODE0MjgxNDJGRjQyMDA0MjAwNDIwMTQyMDA4Q0EKKzoyMDBFMDAwMDIwMDAxM0ZDNDAwNDRGRTQ0OTI0NDkyNDRGRTQ0OUE0NEI2NDREMjQ0OTI0NEZFNDQ4MjQ0MDA0NDAxNDQwMDgyNgorOjIwMEUyMDAwMjAwMDE3RkM1MjA0NDNFNDQ0NDQ1RkU0NDkyNDRGRTQ0OTI0NEZFNDQxMTQ0MTE0NDBGNDQwMDQ0MDE0NDAwODM5Cis6MjAwRTQwMDAyMDAwMTdGQzUyMDQ0MTA0NDdDNDQ0NDQ0N0M0NDQ0NDQ3QzQ0NTI0NDRDNDQ2NDQ0NDI0NDAwNDQwMTQ0MDA4NTAKKzoyMDBFNjAwMDIwMDAxM0ZDMDBDNDQwQTQ1RkY0NDA4NDVFODQ1MkE0NUVBNDQwNDQ0NjU0NThCNDQzMTQ0MDA0NDAxNDQwMDg0OQorOjIwMEU4MDAwMTAwMDBCRkM0ODA0NDdFNDQ0MjQ0N0U0NDQyNDRGRjQ0ODE0NEZGNDQ4MTQ0RkY0NDAwNDQwMDQ0MDE0NDAwODI0Cis6MjAwRUEwMDAxMDAwMEJGQzQ4MDQ0MjA0NENFNDQ4MjQ0RUU0NDgyNDRGRTQ0Mjg0NDI5NDQ0OTQ0NDc0NDgwNDQwMTQ0MDA4MDgKKzoyMDBFQzAwMDEwMDAwQkZDMDgwNDIwRjQyRjI0MjU0NDJGRjQyODE0MjdFNDIyNDQyMTg0MjE0NDI2MjQyMDA0MjAxNDIwMDg3QgorOjIwMEVFMDAwMjAwMDEzRkM1MDA0NEZFNDQ5MDQ0RkY0NDg4NDRBNTQ0QzM0NDdDNDQ0NDQ0N0M0NDQ0NDQ3QzQ0MDE0NDAwOEY1Cis6MjAwRjAwMDAyMDAwMTNGQzUwMDQ0ODQ0NDQ0NDVGNjQ0NDk0NDQ4QzQ3NDQ0OTI0NDk0NDQ5MjQ1NTI0NjIwNDQwMTQ0MDA4NjIKKzoyMDBGMjAwMDIwMDAxM0ZDMDAwNDRGRTQ0OTI0NENBNDRBNjQ0OTI0NEZFNDQxNDQ1RkY0NDI4NDQ0NDQ1ODM0NDAwNDQwMEM1RQorOjIwMEY0MDAwMjAwMDFCRkM0ODA0NDEyNDRFQzQ0QTk0NDQ2NDRGQTQ1MTFDNEZFNDQxMDQ0Mjg0NDQ0NDU4NDQ0MDE0MDAwOEYzCis6MjAwRjYwMDAyMDAwMTNGQzExMDQ0N0M0NDEwNDRGRjQ0MjQ0NDdFNDQwMDQ0RkU0NEFBNDRBQTQ1RkY0NDAwNDQwMTQ0MDA4NjMKKzoyMDBGODAwMDIwMDAxN0ZDNTEwNDRGRjQ0MTA0NDdFNDQ0MjQ0N0U0NDQyNDQ3RTQ0NDI0NEZGNDQyNDQ0QzI0NDAwNDQwMENCRgorOjIwMEZBMDAwMjAwMDEzRkM0MDA0NTE0NDRBNDQ1RjdDNDQ5NDU1MjQ1NTI0NUYyNDQ0NjQ0ODU0NDg4QzUxMEM0MDA0NDAwQzZFCis6MjAwRkMwMDAyMDAwMTNGQzQwMjQ0RTI0NDI0NDVGN0M0QTk0NEY5NDRBNjQ0RTI0NEI1NDVFNEM0Mjg0NDAwNDQwMTQ0MDA4REIKKzoyMDBGRTAwMDAwNDAwMDQwMDg0MDA2NDAwMzQwMDI0MDAwNDAwMEMwMDM0MDA2NDAxQzQwMDg0MDAwNDAwMDQwMDA0MDAwMDA3MQorOjIwMTAwMDAwMDAwODA0MDgwNDA4MDQwODA3RjgwNDA4MDAwODAwMDgzRkY4MDIwODAyMDgwNDA4MDQwODA4MDgxMDA4NjAwODk2Cis6MjAxMDIwMDAwNDQwMDQ1MDI0NDgyNDQwMjdGRTdDNDAwNDQ4MDQ0Q0ZDNDgyNDMwMjQyMDI0NTA0NDkyNDUwQTg0MDYwNDAyQzYKKzoyMDEwNDAwMDA4MDAwNDAwMDQwMDAxMDAyMjAwMTIwMDE0MDAwNDAwMDQwMDA4MDAzODAwMDgwMDA4MDAxODAwMDgwMDAwMDBCRgorOjIwMTA2MDAwMjEwMDExMDAxMTAwMDNGRTgyMDA1NDAwNTNGMDEwMjAyMDQwMjA4MEUxMDAyMjAwMjQwMjI0MDIyM0ZFMDAwMDczCis6MjAxMDgwMDAyMDAwMTNGQzEyMDQwMjA0OEEwNDRBMDQ1M0ZDMTIwMDIyMDAyMjAwRTIwMDIyMDIyMjAyMjIwMjIxRkUwMDAwMTcKKzoyMDEwQTAwMDIwMDAxN0Y4MDUwODA0ODg4MjUwNTI1MDExMTAxMTIwMjBBMDIwQzBFMDQwMjBBMDIxMTgyMjBFMkMwNDAwMDA4OQorOjIwMTBDMDAwMjA0MDEwNDAxM0ZDODA0MDQ4NDA0ODQwMTNGQzEwNDAxMDQwMjA0MEU3RkUyMDQwMjA0MDIwNDAyMDQwMjA0MEFECis6MjAxMEUwMDA0MDAwMjNGQzIwMDAwMDAwODAwMDU3RkU1MTIwMTEyMDIxMjAyMTIwRTEyMDQyMjI0MjIyNDQyMjU4MUUwMDAwRDMKKzoyMDExMDAwMDQwNDAyMDQwMjA0MDA4NDA4QkZFNTA0MDUwQzAxMEUwMjE1MDIxNTBFMjQ4MjQ0RTI4NDQyMDQwMjA0MDIwNDAyNAorOjIwMTEyMDAwMjAwMDE3RkUxMDQwMDA0MDhBN0M0QTQ0NTI0NDEyNDQxM0ZDMjAwNEUwMDQyMDA0MjAwNDIwMDQyMDE0MjAwODhCCis6MjAxMTQwMDA0MDQwMjA0MDIwNDAwN0ZDODA0MDU0NDQ1NDQ0MjQ0NDI0NDQyN0ZDRTQ0NDIwNDAyMDQyMjA0MjIwM0UwMDAwQkYKKzoyMDExNjAwMDIwMDAxM0ZDMTIwNDAyMDQ4MjA0NEEwNDRBMDQxM0ZDMTIwNDEyMDRFMjA0MjIwNDIyMDQyM0ZDMjIwNDAwMDA1MAorOjIwMTE4MDAwMjAwMDEwMDAxN0ZDODQwNDRDMDQ0QzA0MTQwNDE3RkMyNDA0RTQwNDI0MDQyNDA0MjdGQzI0MDQyMDAwMDAwMEVFCis6MjAxMUEwMDAyMDgwMTA0MDEwNDAwMDAwNDNGRTI0NDAyNDQwMDg2MDA4NTgxMDQ4NzA0MDEwNDAxMDQwMTA0MDEwNDAwMDAwRDYKKzoyMDExQzAwMDQwODAyMDQwMjA0MDBGRkU5MjEwNTIxMDUyMTAxMTEwMjEyMDIwQTBFMDQwMjBBMDIxMTgyNjBFMzgwNDIwMDA1MQorOjIwMTFFMDAwNDEwMDIwODAyRkZDMDAwMDkwMDA1M0UwMTIyMDIyMjAyMjIwMjIyMEMyMjA0NDIyNDQyMjQ4MjI1MDFFMDAwMEEyCis6MjAxMjAwMDA0MDQwMjQ0MDIyNDAwMDQwODdGQzUwNDQ1MDQ0MTA4NDIwQTQyMDk0RTExNDIxMDQyMjA0MjQwNDI4MTQyMDA4QzUKKzoyMDEyMjAwMDQwMTAyNzkwMjQ5MDBEN0U4RTEyNTUxMjU1MTIxNDkyMjQ5MjI2QTJFNTIyMjQyMjI0NDIyNDQyMjQ4QTI1MDRFNgorOjIwMTI0MDAwNDIxMDIyMTAyMjEwMDIxMDhGRkU0QTEwMEExMDEyMTAxM0YwMjIxMEUyMTAyMjEwMjIxMDIyMTAyM0YwMjIxMEExCis6MjAxMjYwMDA0MDQwMjA1MDIwNDgwMDQwOTdGRTUwQzA1MEUwMjE2MDIxNTBFMjUwMjI0ODI0NDgyODQ2MjA0NDIwNDAyMDQwNzUKKzoyMDEyODAwMDIwODAxMEEwMTA5MDAwOTA4QkZDNDhBMDUwQTAxMEE0MTBBODIxMzBFMTIwMjE2MjIyQTIyMjIyMjQxRTIwMDBDNAorOjIwMTJBMDAwMjA0MDEwNDAxMDdFMDA0MDg4NDA0QkZDNTIwNDEyMDQxM0ZDMjIwMEUyMDAyMjAwMjIwMDI0MDAyNDAwMjgwMDZFCis6MjAxMkMwMDA0MDQwMjA0MDIwNDAwQkY4OEE0ODRBNDg1MjQ4MTI0ODE3RkUyMDQwRTBBMDIwOTAyMTEwMjIwODJDMEUyMDA0MTUKKzoyMDEyRTAwMDQwMDAyMDAwMjdGRTA0OTI4QzkyNEM5MjU0OTIxNDkyMTQ5MjI1MTIyNTBFRTYwMjI0MDIyN0ZFMjQwMjIwMDBDMgorOjIwMTMwMDAwNDEwMDIxMDAyMUZFMDIwMDhBMjA0QzI0NTEzQzExRTQyNzI0MjEyNEUxMjQyMTJDMjEyMjIxMDIyMEZFMDAwMDQ4Cis6MjAxMzIwMDA0MDgwMjA4MDIxNDAwOTIwOEExODUyOEU1NDQ0MTg0MDI3RjgyMDEwRTAyMDIxNDAyMDgwMjBDMDIwNDAyMDQwNjEKKzoyMDEzNDAwMDQwQzAyNzFFMjQxMjA0OTI4QzkyNEM5MjU0OTIxNDkyMjQ5MjI1OUFFNjk0MjA5MDIxMTAyMTEwMjIxMDI0MTA4RAorOjIwMTM2MDAwNDAwMDIwM0MyM0MwMDIyMDhBMjA0QTIwNTIyMDEzRkUxMDIwMjEyOEUxMjQyMjI0MjIyMjI0MjIyMEEwMjA0MEM3Cis6MjAxMzgwMDA0MDgwMjA0MDIwNDAwN0ZFODA0MDQ4ODA0ODg4MTExMDEzRTAyMDIwRTA0MDIwODAyMTA4MjIwNDI3RkMyMDA0QzYKKzoyMDEzQTAwMDQwNDAyNDQ0MjI0NDA5NDg4OTUwNTdGRTUwNDAxMDQwMkZGRTIwNDBFMDQwMjA0MDIwNDAyMDQwMjA0MDIwNDBGMworOjIwMTNDMDAwNDA4MDIwNDAyN0ZFMDQwNDgwMDA0OTAwNDkwMDExMzgxMUMwMjEwMEUxMDAyMTAwMjEwMjIxMDIyMEZFMDAwMDBECis6MjAxM0UwMDA0MDEwMjc5MDIwOTAwODkwOEY5MDU0MTA1NDEwMTQxMDI3QTAyMEEwRTBBMDIwQTQyMEM0MjBGRTIyODIyMTAwMDEKKzoyMDE0MDAwMDIwMDAxM0ZDMTIwNDgyMDQ0QkZDNEE0MDBBNDAxM0ZFMTIyMDIyMjBFMjIwMjIxMDIyMTIyMjhBMjMwNjIyMDIwMAorOjIwMTQyMDAwMjAwMDEzRjgxMDEwODAyMDQ4NjA0ODkwMTEwQzE2MDQyMDAwMjNGOEUwNDAyMDQwMjA0MDIwNDAyRkZFMjAwMDQyCis6MjAxNDQwMDAyMDAwMTdGRTEwMDAwMDAwODdGQzQ0MDQ1NDA0MTdGQzI0MDQyNDA0QzdGQzQwMDA0MDAwNDAwMDRGRkU0MDAwQjEKKzoyMDE0NjAwMDIwNDAxMDQwMTdGRTgwODA0OTAwNTNGODE2MDgyQTA4MjNGOEUyMDgyMjA4MjNGODIyMDgyMjA4MjIyODIyMTBBOQorOjIwMTQ4MDAwNDAwMjI3RTIyMTAyMDExMjkzRDI1NzUyNTQ1MjE2NTIyNTkyMjg5MkUxMTIyMTEyMjIwMjI0MDIyODBBMjAwNDc4Cis6MjAxNEEwMDA0MDQwMjA0MDIwNDAwN0ZDODA0MDUyNDgxMTUwMTA2MDI3RkUyMDQwQzBBMDQwQTA0MTEwNDIwRTRDMDQwMDAwMDgKKzoyMDE0QzAwMDIwNDAxMDQwMTA3RTAwNDA4ODQwNEJGODUyMDgxMjQ4MTI0ODIyNDhFMjQ4MjI4ODIwQTAyMTEwMjIwQzJDMDRFOAorOjIwMTRFMDAwMjAwMDEzRkMxMjQ0MDI0NDhBNDQ0QkZDNTI0NDEyNDQxMjY0MjI5NEUyOEMyMzA0MjIwNDIyMDQyM0ZDMjIwNENFCis6MjAxNTAwMDAyMDAwMTdGQzE0MDQ4NDA0NERGNDREMTQxNTE0MTUxNDI1MTQyNUY0RTUxNDI0MDQyNDA0MjQwNDI3RkMyNDA0RjYKKzoyMDE1MjAwMDIwNDAxMjQwMTI0MDAzRkM4QzQwNDg0MDUwNDAxN0ZFMjA0MDIwRTBFMTUwMjI0ODJDNEUyMDQ0MjA0MDIwNDAxNgorOjIwMTU0MDAwMjA0MDEwNDAxMDgwMDNGQzhBMDQ0QTA0NEJGQzEyMDQxMjA0MjIwNEUzRkMyMjA0MjIwNDIyMDQyM0ZDMjIwNDQxCis6MjAxNTYwMDAyMDQwMTA0MDEwODA4M0ZDNEFBNDRBQTQxMkE0MTJBNDEyQTQyMkE0RTJBNDIyQTQyMkE0MjJBNDJGRkUyMDAwQzMKKzoyMDE1ODAwMDAwNDAyMDQwMTBDMDExMjA4MTE4NEEwNjRERjAxMDAwMTAwMDI3RkNFMDgwMjEwMDIxMDgyMjA0MjdGQzIwMDQyQQorOjIwMTVBMDAwNDBBMDIwQTAyMEEwMDBBMDk0QUM1MkIwMTBBMDIxQjAyMkE4MkNBNEMxMjA0MTIyNDIyMjQ0MjI1ODFFNDAwMDBBCis6MjAxNUMwMDAyMTAwMTEwMDExRkMwMjA0ODIwNDRGRTQ0QTI0MTIyNDEzRTQyMjI0RTIyNDIzRTQyMDA0MjAwNDIwMTQyMDA4N0IKKzoyMDE1RTAwMDQxMDAyMTAwMjFGODAzMTA4Q0UwNDlCMDU2NEUxMDQwMjNGODIyNDBFMjQwMjI0MDJGRkMyMDQwMjA0MDIwNDBCOAorOjIwMTYwMDAwNDQwNDIyMDQyMjA0MEZENDgwOTQ0NDk0NTI5NDEzMTQyMTE0MjMxNEMyOTQ0NDk0NDQ4NDQ4MDQ1MDE0NDAwODAwCis6MjAxNjIwMDA0MDQwMjQ0MDIyNDAwMkZFODA5MDUxMTA1RTEwMTJGRTEyMTAyMjEwRTIxMDIyOTAyMzEwMjIxMDIwMTAyMDEwQjgKKzoyMDE2NDAwMDQwMDAyN0Y4MjAwODBCRjg4ODA4NTdGODUwMTAxMDEwMkZGRTIyMTBFMTEwMjExMDIwMTAyMDEwMjA1MDIwMjAxMAorOjIwMTY2MDAwMjIwMDEyMDAxMjAwMDIzRThGRTI1MkEyNTJBMjI0QTIyNEEyMkQyMkMzMjI0MTIyNDJCRTQ0QTI1ODAwNDAwMEVBCis6MjAxNjgwMDA0MDgwMjA4MDJGRkUwMDgwOTdGODU0ODg1NDg4MjdGODIwODAyMUMwQzJBMDQ0OTg1ODhFNDA4NDQwODA0MDgwRUUKKzoyMDE2QTAwMDQwMDAyN0ZDMjA4MDA4ODA4QkY4NTA4ODUxMDgxMTA4MkZGRTIwMDBFM0Y4MjIwODIyMDgyMjA4MjNGODIyMDhFNworOjIwMTZDMDAwNDA0MDIwNDAyN0ZDMDA0MDkyNDg1MTUwNTE2MDJGRkUyMEMwMjE2MEMxNTA0MjQ4NEM0RTQwNDQ0MDQwMDA0MDk0Cis6MjAxNkUwMDA0MDAwMjdGRTI0NDIwNDQyODdGQTU0NDI1NUYyMTQ0MjI3RkEyNDRBRTQ2QTI0NTIyNDQyMjdGRTI0MDIwMDAwMjEKKzoyMDE3MDAwMDIwMDAxM0Y4MTIwODAyMDg4QTA4NEJGODUwNDAxMDQwMTI0MDIyN0NFMjQwMjI0MDI1NDAyNEMwMjgzRTIwMDA4MgorOjIwMTcyMDAwMjAwMDEzRjgxMjA4ODIwODRCRjg0ODAwMTdGQzE0MDQyN0ZDMjQwNEU3RkMyNDA0MjQwNDI0MDQyNDE0MjQwODFBCis6MjAxNzQwMDA0MDQwMjQ0NDI0NDQwN0ZDODA4MDUwQzA1MTIwMTIxMDI0OEUzODQwRTdGODIwMTAyMDIwMjAyMDIwNDAyMDQwMUEKKzoyMDE3NjAwMDAwMDA0MDc4Mjc4MDI0MDAwNDAwOTQwMDU3RkMyNDQwMjQ0MDI0NDA1RkZFQzAwMDQyMjA0MjEwNDQxODU4MDg0MgorOjIwMTc4MDAwMjIxMDExQTAxMEMwODMzMDQ4ODg0RkZFMTEwMDEyNDAyM0ZDMjY0NEVBNDQyMjQ0MjI1NDIyNDgyMDQwMjA0MEE2Cis6MjAxN0EwMDA0MTAwMjFGMDIyMTAwMjIwODdGODUyNDg1MjQ4MTI0ODIzRjgyMDYwMjBBMEUwQTIyMTIyMjIyMjJDMUUyMDAwQTgKKzoyMDE3QzAwMDIwODAxMDQwMTdGRTA0MDQ4MDAwNTNGODUwMDAxN0ZFMjEyMDIxMjBFMTIwMjEyMjIyMjIyMjIyMjQxRTI4MDAxNAorOjIwMTdFMDAwMjA0MDEwNDQxM0Y0MDA0ODgwNTA0N0ZFNTA0MDEwODAyM0Y4MkUwOEMyMDg0M0Y4NDIwODQyMDg0M0Y4NDIwODQyCis6MjAxODAwMDA0MjEwMjIxMDJGRkMwMjEwOTIxMDUzRjA1MjEwMTIxMDIzRjAyMjEwRTIxMDJGRkUyMTEwMjIwODJDMEMyMDA0ODMKKzoyMDE4MjAwMDQyMDAyMjA2MjIzODAyMjA4RkEwNTIzRTUyMjgyNzI4MjZBODRBMjhDQTQ4NTI0ODQyODg0Mjg4NDMwODQyMDgyNQorOjIwMTg0MDAwNDQxMDI0NDgyNDQ4MDQ0ODlGNDQ0NDQ0NTQ4NjFFQTAyRDIwMzQyMEQ0MjA2NDQwNDQ0MDQ0ODQ0NUZFNDQwMkZGCis6MjAxODYwMDAyMDQwMTA0MDE3RkMwMDQwOEZGRTQwMDQ1MjQ4MTE0MDI0NDAyMjQwQ0ZGRTQwNDA0MEEwNDExMDQyMTg0QzA4QjcKKzoyMDE4ODAwMDQwMDAyN0ZDMjA4MDAwODA4MTBDNTY5MDUwRTAxNTUwMjY1MDNBQThDMTI2NDYyMDU4MjA0MDIwNDE0MDQwODBGRgorOjIwMThBMDAwNDAwMDIzRkMyMjQ0MDNGQzhBNDQ0QTQ0NTNGQzEwMDAxN0ZFMjEwOEUxMDgyMTA4MjIwODIyMDgyNDA4MjgwOEE5Cis6MjAxOEMwMDA0MDAwMjNGODIyMDgwMjA4ODNGODUwNDA1N0ZDMTQ0NDI3RkMyNDQ0QzQ0NDQ3RkM0MDQwNDA0MjQwNDI0MDNFRUIKKzoyMDE4RTAwMDQwNDAyMDQwMjBBMDAxMTA4QTA4NERGNjUwNDAxMDQwMjNGODIwNDBFMDQwMjI0ODIxNTAyMTYwMkZGRTIwMDAzRQorOjIwMTkwMDAwNDAwMDJGN0MyOTU0ODk1NDRGNTQ1OTU0MTk1NDI5N0MyRjQwMjk0MEM5NDA0OTQyNDk0MjUxNDI2NTNFNDIwMEIxCis6MjAxOTIwMDA0MDgwMjA0MDI3RkUwNDA0ODAwMDUzRjg1MDAwMTAwMDI3RkUyMDQwRTI1MDQyNDg0NDQ0NDg0NjUxNDI0MDgwODUKKzoyMDE5NDAwMDIwODAxMDQwMTdGRTg0NDQ0MDQwNDNGODEyNDgxMjQ4MjNGODIyNDhDMjQ4NDNGODQwNDA0MDQwNDA0MDQwNDA4MQorOjIwMTk2MDAwNDA4MDIwNDAyN0ZFMDQwNDgwMDA1M0YwNTIxMDEyMTAyM0YwMjIwMEUzRjgyMjA4MjIwODIyMDgyM0Y4MjIwODAwCis6MjAxOTgwMDA0MDAwMjdGMDIwMTAwN0YwOTAxMDVGRkU1MDQwMjQ0ODIyNTAyMDYwQzE1MDQyNDg0QzQ2NDA0MDQxNDA0MDgwRjAKKzoyMDE5QTAwMDQwMDIyN0UyMjQyMjA0MkE4N0VBNTQ4QTU0OEEyN0VBMjZBQTJBQUFDQUFBNTJBMjUyQTI2MkUyNDA4QTQwODQ1OAorOjIwMTlDMDAwNDAwMDIyOTAyMjkwMEZGRTgyOTA0MkYwNTIwMDEzRkMyMDQwMjdGRTQwRTBDMTUwNDI0ODRDNDY0MDQwNDA0MERGCis6MjAxOUUwMDAyMDAwMTdGRTEwOTAwMDkwODdGQzU0OTQ1NDk0MTdGQzIwNDAyMDQwMjdGQ0MwNDA0MDQwNDA0MDRGRkUwMDAwRUMKKzoyMDFBMDAwMDQwMDAyRkZFMjA0MDAwODA5N0ZDNTRBNDU0RTQyNEE0MjRBNDI0RTRDNEE0NDRBNDQ0QTQ0N0ZDNDQwNDAwMDA1QgorOjIwMUEyMDAwMDAxMDQxOTAyRTEwMjIxMDAyMTI4MjUyNUZCNDEyMTgyNzEwMjY5MDJBOTBDQTI4NTIyODYyNDQ0Mjg2NDMwNDY4Cis6MjAxQTQwMDA0MDQwMjc1QzI0NDQwNDQ0OTc1QzU0NDQ1NDQ0MjdGQzIwNDAyN0Y4QzIxMDQxMjA0MEMwNDBCMDQzMEU1QzA0M0EKKzoyMDFBNjAwMDQwNDAyMDgwMjdGODA0MDg5N0Y4NTQwODE3RjgyMDAwMkZGQzIwNDBDMDQwNDdGODQwNDA0MDQwNEZGRTQwMDBBQQorOjIwMUE4MDAwNDIwMDIyMDAyNTdDMDRBNDg4MjQ0N0E0NTIyODEyMjgyRkE4MjMxMENBOTA0QUE4NTIyODYyNDY0QTg0MDQwMDA0Cis6MjAxQUEwMDAyMDAwMTEyMDExMTAwMjA4ODVGNjUwOTA1MDkwMTE1MDIyMjAyMDAwQzdGODQ1Mjg0NTI4NDUyODVGRkUwMDAwNDkKKzoyMDFBQzAwMDIyMTAxMTEwMTEyMDBGRkU4MDAwNTc4NDE0QTQxN0E0MjRBNDI0QTRFN0E0MjRBNDI0ODQyNDg0MjQ5NDI1ODgwRgorOjIwMUFFMDAwNDA4MDIwNDAyN0ZFMDQwNDgwMDA1M0Y4NTAwMDEzRjgyMjA4MjNGODQyMDhDM0Y4NDAwMDQwMDA0RkZFNDAwMDFDCis6MjAxQjAwMDA0MDAwMjdGQzI0MDQwN0ZDOTQwMDU3RkM1NDQwMjQ5MDI1RjgyNDQ4Qzg0MDRCRkM0ODQwNTA0MDY3RkU0MDAwNzMKKzoyMDFCMjAwMDQwMDAyN0ZDMjQ0NDA0NDQ4N0ZDNTQwMDU1RkMxNTA0MjVGQzI1MDRFNTA0NDVGQzQ5MDQ0OTA0NTFGQzQxMDRCMQorOjIwMUI0MDAwNDQyMDI0MjAyNDdDMEY0ODg0OTA0NDdDNEY1NDE0NTQxNDU0MkY3QzI0NDBDNDQwNDQ0MjQ0NDI0NDNFMDAwMEZFCis6MjAxQjYwMDAyMDgwMTA4MDE3RkMwMDgwODdGODUxMDAxRkZFMjIyMDI1RjAyODhFRDdGNDQxQzA0MkEwNEM5QzQwODg0MDgwOEEKKzoyMDFCODAwMDIwODAxMDgwMTNGODAwODA5MDgwNTdGQzExMDAyMjEwMjdGODIwMDhDN0Y4NDUyODQ1Mjg0NTI4NUZGRTQwMDBGQQorOjIwMUJBMDAwNDdGODIyMTAyM0YwMDIxMDgzRjA1MjEwMTdGQzIwMTAyRjdDMjk0NEM1Mjg0MjI4NDUxMDQ4Njg1MTg2MDAwMDJDCis6MjAxQkMwMDA0MTEwMjdGRTIxMTAwMEEwOTA5MDU3RkUxMTIwMjIxODJEMTY0MTEwQ0ZGRTQxMTA0MjEwNDIxMDQ0MTA0ODEwREMKKzoyMDFCRTAwMDQxMTAyMTEwMjdGRTAxMTA4MDAwNTdGRTU0MDQxM0Y4MjA0MDIwNDBFM0Y4MjA0MDIwNTAyMDQ4MjdGQzAwMDBGRgorOjIwMUMwMDAwNDA1MDIwNDgyRkZFMDA0MDg3Rjg1NDQ4MTdGODI0NDgyN0Y4MjQ0OEMwMTA0RkZFNDIxMDQxMTA0MDUwNDAyMDhFCis6MjAxQzIwMDA0N0ZFMjBBMDIwQTAwN0ZDODRBNDU0QTQxN0ZDMjA0MDIwNDAyRkZFQzBDMDQxNjA0MjUwNEM0RTQwNDQ0MDQwNkIKKzoyMDFDNDAwMDAwMDA0N0ZDMjQwMDI1RjgwNDAwODdGRTU1NDgxNTMwMjU5MDI1MEMyNDEwQzdGRTQ4OTA0ODUwNTAxMDQwMzA3NgorOjIwMUM2MDAwMjAwMDEzRjgxMjA4ODNGODRBMDg0QkY4MTAwMDE3QkMxNEE0MjI5NEUwOEMyMjk0MkNBNDIwODQyMjk0MjEwODQ5Cis6MjAxQzgwMDA0MDAwMjdGRTI0MDIwNUZBOEM0MjREOTIxNEUyMTU2MjE2QjIyNTJFRTYyMjI0QTIyNDQyMjQwMjI3RkUyNDAyRTAKKzoyMDFDQTAwMDAyMjA0MjIwMjdCRTI2MzA4OTQ4NDA4MDUwNzgxNzgwMjA4MDI3RjhDMDgwNEZGQzQwODA0MDgyNDA4MjQwN0UyOQorOjIwMUNDMDAwNDA4MDI3RjgyNDA4MDdGODg0MDg1N0Y4MTQwODI3RjgyMEEwMjA5MENGRkU0MTQwNDEyMDQyMTA0NDBFNTgwNEM1Cis6MjAxQ0UwMDA0MTIwMjExMDIyMTgwNTI4ODBDMDUwQTAxMzEwMkMwQzIzRjAyMDQwQzNGMDQwNDA0MjQ4NDE1MDRGRkUwMDAwNTIKKzoyMDFEMDAwMDQwODAyMDQwMjdGQzA0NDA5NUY4NTQ0ODE3RkUyNDQ4MjVGODI0NDBDNUY4NDkwODQ5MDg0OTA4NTFGODQxMDhDRgorOjIwMUQyMDAwMjA0MDEwMjAxN0ZFMDEwODgwOTA0N0ZFMTQ4NDEwNDAyN0ZFMjA4MDIwRjhDMTA4NDEwODQyMDg0NDI4NDAxMEMzCis6MjAxRDQwMDA0MDAwMjdGRTI0MDQwM0Y4ODIwODQzRjgxMjA4MTNGODEwODAyMDQwMkZGRUUwMDAyMTEwMjEwODIyMDQyQzA0NjQKKzoyMDFENjAwMDQxMTAyMTEwMjNGQzAxMTA4MTEwNTdGRTEwNDAyM0ZDMjI0NDIzRkNDMjQ0NDNGQzQwMDA0MTEwNDEwODQyMDg2RQorOjIwMUQ4MDAwNDExMDIxMTAyN0ZFMDExMDg3RkU1NDg0MTEyMDIzQzAyMDgwMjExMEMzRjg0MDQwNDQ0ODQ0NDQ0OTQ0NDA4MEFECis6MjAxREEwMDA0MTEwMjdGRTIxMTAwMDQwODNGODQ4NDgwRkZFMTA0ODEzRjgxMDQ0MjJFNEUzNTQyMjU0MjQ0NDI0NDQyODQ0N0UKKzoyMDFEQzAwMDIxMDgxMTA4MTdCRTAxOTg4MzVDNTUyQTExNDgxMTA4MjA4MDJGRkVFMTEwMjMyMDIwQzAyMEEwMjMxODJDMDg3MworOjIwMURFMDAwNDBBMDJGRkUyMEEwMDdGQzg0QTQ1N0ZDMTRBNDI3RkMyMDAwMjNGOEMyMDg0M0Y4NDIwODQzRjg0MjA4MDAwMEFFCis6MjAxRTAwMDA0MDQwMjA3ODIwNDAwN0ZFODQ4NDU3Rjg1NDgwMTRGODI0MDAyNUZDMjRBOEM4NzA0QkZFNDgyMDUwQTA0MDQwQTQKKzoyMDFFMjAwMDIwMDAxN0ZDMTQ0NDg3RkM0NDQ0MTdGQzEwODAyMTIwMjNDMDIxMDhDN0ZDNDA0NDQyNDg0NDQ0NDk0NDQwODA3NgorOjIwMUU0MDAwNDA0MDIwNDAyN0ZDMDQ0NDg3RkM1MDQwMTdGQzI0NDQyN0ZDMjA0MEMyNDA0Mjg0NEE0MjRBMEE1MUY4MDAwMDM1Cis6MjAxRTYwMDA0MjEwMjIxMDIyMTAwNTIwOTRCRTVGNjQ1MDI0MjRBNDIyQTgyQUE4QzUxMDQxRDg1RTI4NDBDNDQzMDY0MDA0OTUKKzoyMDFFODAwMDAwMjA0OEEwMjU3QzIyMjQ4NjI4NUFGRTEyMjAyMjQwMjZGQzJCNDREMjQ0NDI3QzQyNDQ0MjQ0NEE3QzQ0NDRGQQorOjIwMUVBMDAwNDAxMDIxMTAyOTdDMDYxMDg2Mjg0QTQ0MDJGRTIyMDQyNkY0MkE5NDIyOTRDMkY0NDIwNDQyMDQ0QTE0NDQwODBBCis6MjAxRUMwMDA0MDgwMjA0MDI3RkMwNEEwODRBMDU3RkMxNEE0MjdGQzI0MDAyNTIwQzUyNDQ1Qjg0OTIwNDlBMjUxM0UwMDAwOTcKKzoyMDFFRTAwMDQ0NTAzMjIwMDIyMDFCN0U5NDgwNjRFRTY3MTQyNTA4MjU5MDI5NUNDOTUwNDlEMDUyNTA1MkIwNjcwRTAwMDBBRQorOjIwMUYwMDAwNDAxMDI3OTAyMTEwMEZCRTg1MjQ1NTY0MTdBNDI1MTQyNTE0MjcxNEM1MDg0NUM4NUYxODQxMjQ0MTQ2NDEwNDcwCis6MjAxRjIwMDA0MjA0MjIwNDJGQzQwMjA0OEZCRTQwMDQwRjg0MjhBNDI4OTQyRjk0QzAwNDQ4ODQ0NTA0NDNDNDVDMTQ0MDA4MzUKKzoyMDFGNDAwMDQ0ODAyNDg2MkZGODA0QTA5NEEwNTdCRTE0QTQyN0E0MjRBNDJGRTRDMTI0NDRBNDQ0QTQ0ODQ0NTA0NDQwODQwOAorOjIwMUY2MDAwNDIxMDIyMTAyRkJFMDMxODk2QjQ1QTUyMTIxMDI3RjgyNDA4MjdGOEM0MDg0N0Y4NDQwODQ0MDg0NDI4NDQxMEYwCis6MjAxRjgwMDA0MDAwMjE5MDJFMTIwMjU0OTIzODVGN0M1NjQ0Mjc3QzJBQzQyQTQ0Q0E3QzUyNDQ0MjQ0NDI0NDQyNTQ0MjQ4NzQKKzoyMDFGQTAwMDQwODAyMDQwMjdGQzAxMTA4RkZFNTAwMDEzRjgyMjQ4MjNGODIyNDhDM0Y4NDA0MDQ3RkM0MDQwNEZGRTAwMDBBQgorOjIwMUZDMDAwNEZGQzI4MDQyRkZDMDgwMDhCRjA1ODIwMUZGQzI4NDAyRkJDMjg4OEM5MTA0OUZFNTcxMDUxMTA2NTUwNDIyMDQ3Cis6MjAxRkUwMDA0MjIwMjIyMDJGQkUwMjQ0OEY4ODRBQkUxQUEyMUZBQTIyMkEyNjJBMjcyQUNBODg0QTE0NTIyMjQyNDIwMDAwRDEKKzoyMDIwMDAwMDQwNTAyRTQ4MkE0MDBBRkU4QUQwNUY1MDFBN0MyQTUwMkU1MDJBN0NDQTUwNEE1MDRFNTA0QTUwNDA3RTQwNDBFMQorOjIwMjAyMDAwNDEyMDI3RjgyNTI4MDdGODA1Mjg5N0Y4NTAwMDE3RkMyMDAwMjNGODIyMDhDM0Y4NDExMDQwQTA0RkZFNDAwMEQ3Cis6MjAyMDQwMDA0MTAwMjFGMDIyMjAwN0ZFOEM5MDU1NDgxN0ZFMjQwMDI1RjgyNDAwQzVGODQ4MDA0OUY4NTEwODYxRjgwMDAwQkMKKzoyMDIwNjAwMDQwODAyMDQwMkZGRTAwMDA4N0ZDNTUxNDE1RjQyNDA0MjdGQzIwMDBDM0Y4NDIwODQzRjg0MjA4NEZGRTAwMDBEQworOjIwMjA4MDAwNDA4MDIwNDAyRkZDMDkyMDhGRkM1OTIwMUZGODI5MjgyRkZFMjkyOENGRjg1MTIwNTMzMDY1MkU1OTI0NDEyMEI2Cis6MjAyMEEwMDA0N0ZDMjA0MDJGRkU4ODQ0NDc3ODEwNDAxNzc4MjAwMDI3RkMyMTAwQzdGQzQ1MjQ0NTI0NDUyNDQ1MjQ0NDBDQ0IKKzoyMDIwQzAwMDIyNTAxMjU0MTU1ODA0RDA4RkZFNTQ4ODE0NTAyNUZDMjQyMDI1RjhDNDIwNDVGQzQ0MjA0NDUwNDQ4ODQ1MDY2NAorOjIwMjBFMDAwMjA4MDEzRjgxMjA4MDNGODgyMDg0QkY4MEEwODE3RkMxNDQ0MTdGQzI0NDRFRkZFMjExMDIxMTAyMjEwMjQxMEE2Cis6MjAyMTAwMDAyMDgwMTA0MDE3RkUwMTEwODFGMDUwMDAxN0ZFMjQwNDIzRjgyMTkwQzZFMDQzNTA0Q0E4NDMyNjRDQTA0MDQwREQKKzoyMDIxMjAwMDAwMDA0N0JDMjI5NDIxOEMwMjk0ODRBNDUxNDAxMTIwMjNGRTIyMjAyN0ZDQ0EyMDQzRkM0MjIwNDNGRTQyMDAyNQorOjIwMjE0MDAwNDQxMDI0MTAzRkE4MDQ0NDlGODI3MTAwM0Y2RTMxQTI1RjZBNDQyNkRGNkE0NEIyNDUyMjQ0QUU0NDQ0MDAwMDYzCis6MjAyMTYwMDA0MjAwMjNGRTBBMjIwRkQ0ODg4QzU1MTgxNjI0MkQ2MjI3M0M0MTIwQzczQzQxMjA0NzNDNDEyMDVGRkUwMDAwM0EKKzoyMDIxODAwMDgwODA1RkZFNDgwMDBGRkMyNDA4QTdGODYwMDAyRUI4NEFBODRGRjhDQjY4NEY2ODUyQUE1MzRBNjY4RTAwMDBDRQorOjIwMjFBMDAwNDA4MDIxNDAyMjIwMDdGODk4MDY0RERDNDk1NDJEREMyMDAwMkZGQ0E5MjQ0RkZDNDkyNDQ5MzQ0ODA4MDAwMEIzCis6MjAyMUMwMDA0ODg4MjQ5MDJGRkUwMkIwODQ4RTVGRjg1NDg4MTdGODI0ODgyRkZDRTIyMDVGRkU0MjEwNDQwODQ4MDQwMDAwMjgKKzoyMDIxRTAwMDAwMDA0RkJFMjg4ODJGODgwOEJFOUZBMjUyMjIyRkFBMjUyQTI1MkE0NzJBQzIyQTRCMDg1Mjk0MkEyMjA0NDI1MQorOjIwMjIwMDAwNDdGQzIwNDAyRkZFMDg0Mjg3NUM1MDAwMjcxQzI1MDAzRkJDMjUyNDRGQkNDQUE0NEZCQzQyMjQ1RjRDMDI4NEFBCis6MjAyMjIwMDAwMjAwMDE4MDAxMDQzRkZFMjAwNDQwMDgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNkQKKzoyMDIyNDAwMDAyMDAwMTAwM0ZGRTQwMDQ0MjA4MDIwMDAyMDAzRkMwMDI0MDAyNDAwNDQwMDQ0MDA4NDQwODQ0MTAzQzIwMDA5RAorOjIwMjI2MDAwMDIwMDAxMDAzRkZFNDAwNDAwMDA3RkZFMDIwMDA0MDAwRkY4MTgwODI4MDg0ODA4ODgwODBGRjgwODA4MDAwMDA5Cis6MjAyMjgwMDAwMTAwMDA4MDdGRkU0MDA0ODQyODAyMzAwMTIwMDQ0MDQ0NDg0NDg0NDUwNjg2MDQwNDEwMUMxMEUzRjAwMDAwN0QKKzoyMDIyQTAwMDAyMDAwMTAwN0ZGRTQ0MDQ4NDA4N0ZGRTA4MDAxRkYwMjgxMDRGRjA4ODEwMEZGMDA4MTAwODEwMDg1MDA4MjA3OAorOjIwMjJDMDAwMDIwMDAxMDA3RkZFNDAwNDlGRjgxMDAwMUZGMDEwMDAxRkZDMTUwMDE0OTAyNDYwMjUyMDRFMUM4NDA4MDAwMEUxCis6MjAyMkUwMDAwMTAwMDA4MDNGRkUyNTA0NTQ5ODE0MjQyM0UwMDAwMDFGRjgxMTA4MUZGODExMDgxRkY4MTEwODExMjgxMDEwRTcKKzoyMDIzMDAwMDAxMDAzRkZDMjQ0ODFGRjgwNDQwMUZGODA0NDA3RkZDMDgyMDNGRDhDODQ2MEZGODAwMDgzRkU4MDAwODAwMTg0MQorOjIwMjMyMDAwMDEwMDdGRkU0NDQ0MUZGODA0NDAxRkY4MDQ0MDdGRkUwODIwMzdERUMxMDAxRkYwMDEwMDNGRkMwMTAwMDMwMDE3Cis6MjAyMzQwMDAwMjAwMDEwMDdGRkU0NDA0ODVGODI0NDAzREY4MjQ4ODA3RkU3QzAwMjRGODI0ODgyNDg4NDRGODg0ODgwNDAwQjIKKzoyMDIzNjAwMDAyMDAwMTAwN0ZGRTgyMDQwNDAwN0ZGRTI4MTQxRkY4MjgxNjRGRjQwODEwMEZGMDExMjAxMTE4MjUxMDAyMDA1QQorOjIwMjM4MDAwMDEwMDdGRkU0NDQ0QkZGODA0NDAzRkZDMDQ0MEZGRkUwOTEwM0ZFRUMzMDQwQzkwMzQ2MEM1MjAwNjFDMDQwODcwCis6MjAyM0EwMDAwMjAwN0ZGRTQwMDQ5RkYwMTI5MDFGRjAwMDAwRkZGRTAwMDAxRkYwMTAxMDFGRjAwODkwMzg2MENFMzgwODEwOTEKKzoyMDIzQzAwMDAxMDA3RkZFNDQ0NDFGRjAwNDQwMUZGODA0NDA3RkZDMTAxMDJGRTg0ODI2OEZFMDAxMDAwOUY4MDkwMDM3RkU3QQorOjIwMjNFMDAwMDEwMDdGRkU0NDQ0OUZGODA0NDAzRkZDMDQ0MDdGRkMwOTA4M0ZGNkMwMDQwRkYwMDAwMDBGRjAwODEwMEZGMEUzCis6MjAyNDAwMDA0MDAwMjAwMDE4MDAxMDAwMDAwMDcwMDAxMDAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDAwMkMwMDQzRkUwMDAwRTcKKzoyMDI0MjAwMDQwMDAyN0ZDMzAyMDIyMjAwMjIwMDdGQ0YwNjAxMDYwMTBBMDExMjAxMjIwMTRFMDEwNDAyQzAwNDNGRTAwMDBGRQorOjIwMjQ0MDAwNDIwMDIyMDAzM0Y4MjI0MDA0NDAwMDQwRTA0MDI3RkMyMDQwMjA0MDIwNDAyMDQwMjA0MDUwNDA4RkZFMDAwMEM3Cis6MjAyNDYwMDA0MDAwMjAwMDM3RjgyNDA4MDVFODA1MjhFNTI4MjUyODI1RTgyNTI4MjUwODI0MjgyNDEwNTAwMDhGRkUwMDAwNDkKKzoyMDI0ODAwMDAxMDA0MTAwMzFGRTExNDAwMjQwMDI0MEY0N0MxMDQwMTA0MDEwN0MxMDQwMTA0MDEwNDAyODQwNDYwMDgxRkMzRgorOjIwMjRBMDAwMDIwMDQyMDAzM0ZDMTQwMDA4NDAwMjU4MDJFOEVGNDgyMjQ4MjI2ODIyNTQyMjA0MjFGQzUwMDA4RkZFMDAwMDQ4Cis6MjAyNEMwMDA0MTAwMjEwMDMxRkUyMjA0MDIwODA0NDBGMDQwMTI1MDEzNDgxMjQ4MTQ0NDEwNDQxMTQwMjg4MDQ3RkU4MDAwNDYKKzoyMDI0RTAwMDA0MDA0NDAwMjQwMDJGQkMwNEE0MDRBNEU0QTQyNEE0MjRBNDI0QTQyNEJDMkFBNDIxMjA1MDAwOEZGRTAwMDA4OQorOjIwMjUwMDAwNDAwMDI3RjgzMDEwMjAyMDAwRDgwMzA2RUMwNDIzRjgyMDQwMjA0MDIwNDAyMDQwMjdGQzUwMDA4RkZFMDAwMDcwCis6MjAyNTIwMDA0MDgwMjBDMDMwOTAyMTA4MDI3QzA3QzhFMDAwMjNGODIyMDgyMjA4MjIwODIzRjgyMjA4NTAwMDhGRkUwMDAwMkEKKzoyMDI1NDAwMDAwM0M0N0MwMjQwMDI0MDAwN0ZFMDQwMEU0MDAyNUY4MjUwODI5MDgyOTA4MzFGODIwMDA1MDAwOEZGRTAwMDAzMQorOjIwMjU2MDAwNDEwMDIxRjgyMTEwMDJBMDA0NjAwMTkwRUU0RTIzRjgyMDQwMjI0MDIzRkMyMDQwMjA0MDUwNDA4RkZFMDAwMDI0Cis6MjAyNTgwMDAwMDUwNDA0ODJGRkUyMDQwMDdGQzA0NDRFN0ZDMjQ0NDI0NDQyN0ZDMjQ0NDI0NTQyNDQ4NTAwMDhGRkUwMDAwOEMKKzoyMDI1QTAwMDAwMDA0RkZDMjAwMDJGNzgwOTQ4MDk0OEVENjgyQjU4Mjk0ODI5NDgyOTQ4MkI1ODIwMDA1MDAwOEZGRTAwMDBCQworOjIwMjVDMDAwMDA0MDQwNTAyMDQ4MkZGRTAwNDAwNDQ4RTI1MDIwRTAyMTUwMjI0QzJDNDQyMTQwMjA4MDUwMDA4RkZFMDAwMEFCCis6MjAyNUUwMDAwMDQwNDQ0ODIyNTAyMTYwMDNGODAyMDhGM0Y4MTIwODEzRjgxMjA4MTIwODEyMjgxMjEwMjgwMDQ3RkUwMDAwMEEKKzoyMDI2MDAwMDAwMjA0OTIwMjUyMDI2MjQxQUE0MDE2OEUzMzAyNTIwMzkyMDIxNTAyMTUwMjU4QzIyMDg1MDAwOEZGRTAwMDAzMAorOjIwMjYyMDAwMDA4MDQwODAyMTEwMjNGODAxMjAwMjE4RTUwODIxRjAyMzIwMjRDMDIwQzAyMTMwMjYxMDUwMDA4RkZFMDAwMDZBCis6MjAyNjQwMDAwMDgwNDA4MDI3RjgyMDgwMEZGQzAyMjBFMjkwMjQ4QzJCRjAyMDgwMjA4MDJGRkMyMDAwNTAwMDhGRkUwMDAwQTkKKzoyMDI2NjAwMDAwMzg0M0MwMjA0MDI3RkMwMTUwMDY0Q0UwNDAyMDgwMkZGRTIxMTAyMzIwMjBFMDI3MTg1MDAwOEZGRTAwMDA3QworOjIwMjY4MDAwNDA4MDIwNDAyN0ZDMDQwODAwMDAwM0YwRTIxMDIzRjAyMjAwMjNGODIyMDgyM0Y4MjIwODUwMDA4RkZFMDAwMDZBCis6MjAyNkEwMDAwMDAwNDdGMDIwMTAyN0YwMDAxMDBGRkVFMDgwMjQ5ODIyRTAyMEEwMjI5ODJDODgyMjgwNTEwMDhGRkUwMDAwQjMKKzoyMDI2QzAwMDAwNDA0NDQ0MjQ0NDI3RkMwMDAwMDdGQ0UwODAyN0ZDMjUyNDI1MjQyNTI0MjUzNDI0MDg1MDAwOEZGRTAwMDBFNAorOjIwMjZFMDAwMDA4MDQxMDAyN0Y4MjQwODA3RjgwNDA4RTdGODIwMDAyN0Y4MjA4MDI3RjgyMDgwMkZGQzUwMDA4RkZFMDAwMDNFCis6MjAyNzAwMDA0MjIwMjEyMDIxNDAwRkZDMDE0MDA3RjhFNTQ4MjU0ODI2MzgyNDA4MjdGODI0MDgyN0Y4NTAwMDhGRkUwMDAwRkYKKzoyMDI3MjAwMDQwMDAyN0JDMjQ4NDA0ODQwN0JDMDQwMEU3QkUyNDI0MjQxNDI3ODgyNDE0MjQyNjI0NDI1MDAwOEZGRTAwMDBFNgorOjIwMjc0MDAwODIxMDQyMTA0RjkwMDIzRTBGQTQwMjY0RUY5NDI0MDgyNzg4MjQ5NDI4QTYyQUMyMzEwMDUwMDA4RkZFMDAwMDdGCis6MjAyNzYwMDAwMTIwNDdGQzIxMjAyN0ZDMDEyMDBGRkUwMDQwRTNGODIyNDgyM0Y4MjI0ODJGRkUyMjA4NTIwODhGRkUwMDAwMUIKKzoyMDI3ODAwMDQzRjgyMjA4MjNGODAyMDgwM0Y4MDAwMEVGQkMyNEE0MjI5NDIyOTQyNEE0Mjg4NDIxOEM1MDAwOEZGRTAwMDBENworOjIwMjdBMDAwMDE4MDQ2M0MyNDE0MjUxNDA2QTQwNDU0RTAwODIzRjgyMjQ4MjNGODIyNDgyMjQ4MjNGODUwMDA4RkZFMDAwMDRGCis6MjAyN0MwMDAwN0Y4NDQwODI3RjgyNDA4MDdGODAyNDBFM0ZDMjQ0MDJGRjgzNDQwMjdGODI0NDAyN0ZDNTQwMDhGRkUwMDAwQkQKKzoyMDI3RTAwMDAwODA0MjkwMjFBMDJGRkMwMkEwMEM5OEU0MTAyNzdDMjkxMDM1NTAyMkZFMkMxMDIwMTA1MDAwOEZGRTAwMDA5NworOjIwMjgwMDAwMDA4MDQwRjgyMDgwMjdGRTA0ODQwN0YwMDQ4OEU3RkMyNDgwMjc0ODI5QjAyRTcwMzFBODI2QTY1MDQwOEZGRTAxCis6MjAyODIwMDAwNDAwNDQ3QzI3QTQyOTI0MUZDQzBBOTBFRkQwMkFGQzJGOTAyQUZFMkE5MDJBOTAzMTkwNTAxMDhGRkUwMDAwNDkKKzoyMDI4NDAwMDAzMjA5QzQwNTVGODRBODgwNEY4MUE4OEU2ODgyQUY4MzY1MDJBNTAzMjU0MkE1NDI0OEM1MDAwOEZGRTAwMDA5QgorOjIwMjg2MDAwMDA4MDQwNDAyRkZFMjkyNDA2MTgwMTIwRUZGODIxMDAyNzkwMjFFMDJFRDAyMTQ4MjY0MDUwODA4RkZFMDAwMEI1Cis6MjAyODgwMDAwMjQ4NDQ5MDIyNDgyN0Y4MDU0ODA0ODhFN0Y4MjZDODI1QTgyNkM4MjVBQTI0ODYyNkMyNTAwMDhGRkUwMDAwRjIKKzoyMDI4QTAwMDAwMDAwMDAwMDAwMDdGRjgwMDA4MDAwODAwMDgzRkY4MDAwODAwMDgwMDA4N0ZGODAwMDgwMDAwMDAwMDAwMDBCQgorOjIwMjhDMDAwMDgyMDA4MjA3RUZFMDgyMDdFRkMwODIwN0VGRTA4MjAzRkY4MDAwODAwMDgxRkY4MDAwODAwMDgzRkY4MDAwMDE5Cis6MjAyOEUwMDAwNDAwMDdGMDA0MTAwRkUwMDAyMEZGRkUwNjEwMTkyMDYzNDAwQ0EwMzE1MEMyNTgwQzRFNzA0NDAxNDAwMDgwQjUKKzoyMDI5MDAwMDA4MDAwRkYwMDgyMDBGRTAwMDIwRkZGRTQ0MTA0N0QwNDUxMDc5MTY0RkQ4NDExMDQyOTA1NDUyRTg1MjUwMEVBNQorOjIwMjkyMDAwM0ZGODIwMDgyMDA4M0ZGODIxMDgyMTAwMjEwMDJGRTAyMTIwMjIyMDQyMjA0NDIwNDQyMjg4MjI5MDFFMjAwMDM4Cis6MjAyOTQwMDAwMDAwM0VGQzIyODQyMjg0MjI4NDIyRkMzRTg0MjgwMDI4NDgyNDY0NDQ4NjQyMDQ0MTgwODA2MDgwMUUwMDAwRkMKKzoyMDI5NjAwMDNGRkMyMDA0MjAwNDNGRkMyNDIwMjQyMDJCRkUzMjIwMjQyMDJERkMzNDg4MjQ1MDQ0MjA0NDUwODQ4RTA1MDRFNgorOjIwMjk4MDAwM0ZGQzIwMDQyMDA0M0ZGQzIwMDAyRjdFMjkwNDJBNzQyQzU0MkE1NDI5NzQyRjU0NEEwNDQ4MTQ4ODA4MDAwMDg5Cis6MjAyOUEwMDAzRkZDMjAwNDNGRkMyMDAwMkZFMDIwNDAzRkZFMjA4MDNGRkMyMjA4MjQxMDQ2RkU1QzEwNDQxMDk0NTAwODIwNjgKKzoyMDI5QzAwMDNGRkMyMDA0MjAwNDNGRkMyNDIwMjkyMDMxM0MyNTIwMkJGRTM4MjAyOTIwMjkzQzI5MjA0QUEwNEM3RTg4MDA0NgorOjIwMjlFMDAwM0ZGQzIwMDQzRkZDMjEyNDI0QTgyOUZDMzI3MDI0QTgyQjI2Mzg4MDJGRkUyODg4NDk4ODQ4NzA4ODhDMEIwMjA5Cis6MjAyQTAwMDAzRkZDMjAwNDNGRkMyMjIwMkZGQzIwODAyN0YwMjA4MDNGRkMyQUE4M0Y3RTI0MTA1RjdFNDQxMEJGN0UwNDEwRDgKKzoyMDJBMjAwMDAwMDBGOUZDMDgwODA4MTA3ODIwNDA1MDQwOEM0MTA2N0EwMjA5RkMwODIwMDgyMDA4MjAwODIwMkJGRTEwMDBFNAorOjIwMkE0MDAwMTAwMDExRkNGRTg4MjQ1MDY0MjAxODUwNjQ4RTNGRjQwMDEwMUZGMDEwMDAzRkY4MTAwODAwMDgwMDI4MDAxMDkwCis6MjAyQTYwMDAwMDAwRkJGRTA5MDgwOTA4MDlGODc5MDg0MTA4NDFGODQxMDhGOTA4NDkwRTBCRjgwODA4MDgwODM4MDgxMDA4MUIKKzoyMDJBODAwMDI4NDAyODQwRkU3RTJBODQyQjA4RkVGRUE4OTJBODkyRkU5MjJBRkUyQTgwMkE4MDRFODI0ODgyNDg3RTg4MDBBNQorOjIwMkFBMDAwMDAwMDdCQkMwOTA0MDkwNDdCQkM0MkEwNDJBMDQyQTA3QkJDMEE4NDBBODQwQjg0MEE4NDUwMTQyMDA4MDAwMEVDCis6MjAyQUMwMDA3OTNDMEQ0NDNCOUMyN0QwM0I5QzBENDQxOTFDN0ZGRTA4MTAwRkYwMDAwMDNGRkMyNDQ0MkZGNDIxMDQyMTBDMTkKKzoyMDJBRTAwMDAxMDAwMTAwMDEwMDIxMDgyMTA4MjEwODIxMDgyMTA4MjEwODNGRjgyMTA4MDEwMDAxMDAwMTAwMDEwMDAxMDA3OAorOjIwMkIwMDAwMTA4MDEwQzAxMDgwMjBGQ0ZEMDQyNTA0MjY4NDQ0NDQ0ODY0NDgzNDMwMjQxMDA0MjgwNDQ2MjQ4NDE0MDAwODg3Cis6MjAyQjIwMDAyMDAwMzAwMDIxRkMyMDA0RkMwNDI0MDQyNUZDNDUwNDQ1MDA0OTAwMjkwMDExMDAyOTAyNDUwMjg0RkUwMDAwQjYKKzoyMDJCNDAwMDEwMDAxM0ZFMTA4ODEwODhGQzg4MjQ4ODI3RkU0ODg4NDg4ODI4ODgxMDg4MkQwODI5MDg0MjA4ODIwODA0MDhBMQorOjIwMkI2MDAwMjAwMDMzRkMyMDQwMjA0MEZDNDAyN0ZFMjRBMDQ4QTA0OEEwMjhBMDEwQTAyOTIwNEQyMjhBMjIwNDFFMDgwMDRCCis6MjAyQjgwMDAxMDAwMTFGRTExMDAyMTA4RkQ4QzI1NDgyNTI4NDUxMDQ5MTAyOTI4MTEyODE5NDQyNTg0NDUwMDgxRkUwMDAwOTcKKzoyMDJCQTAwMDEwMTAxMTEwMTExMEZEMTAxNTEwMjUxMjI1REMyOTEwNDkxMDI5MTAxMTEwMjkxMDI1NTI0MzkyODEwRTAwMDA0OQorOjIwMkJDMDAwMTA0MDEwNDAxMEEwMTA5MEZEMDgyNTQ2MjYyNDQ0MjA0ODAwMjlGQzEwMDgyODEwMjQxMDQ0MjA4MDIwMDAwMEYyCis6MjAyQkUwMDAxMDIwMTAyMDEwM0UxMUUwRkQyMDI1MjAyNTIwMkJGRTQ5NjIyODYyMTBBMjE4QTIyNTJBNDUyNDgyMjAwMDIwNEIKKzoyMDJDMDAwMDIwMjAzMDIwMjEyMDIwQTBGRTIwMjVGRTI0MjIyNDIyNDQzMjQ0MkEyNDJBMTg0MjI0NDI0NjgyODQ4QTAxMDQ4OQorOjIwMkMyMDAwMTAwMDEzRjgxMDQ4MTA0OEZDNDgyNDQ4MjQ0ODI1Rjg0ODg4Mjg4ODEwODgxMDg4Mjg4ODQ3RkU4NDAwMDAwMDY3Cis6MjAyQzQwMDAxMDAwMTNGQzEwMDgxMDkwRkM2MDI0MjAyN0ZFMjQyNDQ4Mjg0ODIwMzAyMDEwMjAyODIwNDQyMDg0QTAwMDQwMjgKKzoyMDJDNjAwMDEwMDQxMDQ0MTAyNDExMjRGRDA0MjUwNDI1MDQyNTA0NDkwODY5MjgxMTQ4MTk5NDI1MjI0NDQyODA4MDAxMDA1MQorOjIwMkM4MDAwMTAwMDExRkMxMTA0MTEwNEZEMDQyNUZDMjUwNDI1MDQ0NTA0MjUwNDE5RkMwOTA0MTQwMDIwMDA0M0ZFMDAwMDcwCis6MjAyQ0EwMDAyMDIwMzAyMDIwMjAyMDIwRkRGQzQ1MjQ0NTI0NDUyNDQ1RkMyOTI0MTEyNDE5MjQyNTI0NDVGQzgxMDQwMDAwQzEKKzoyMDJDQzAwMDIwMDAzM0JDMjJBNDIyQTRGQUE0NEFBNDRBQTQ0RkZFNEFBNDRBQTQzMkE0MkFBNDRBQTQ0NEE0ODVBNDA4NENCRgorOjIwMkNFMDAwMDEwMDAwODAzRkZDMDgyMDA0MzAwMjQwRkZGRTA0MDAwNDAwN0ZGRTA4MjAwRTQwMDFDMDA2MzAxODE4NjAwOEYzCis6MjAyRDAwMDAyMDAwMzNGRTIwOTAyMDkwRjg5MDI4OTQ0QTk2NEE5NDQ5OTg0ODkwMzA5MDI4OTA0NDkwNDQ5MDgzRkUwMDAwQTYKKzoyMDJEMjAwMDIwODAyMDgwMjA3QzIzQzBGODQ4MjgzMDI4RTI0QjEyNDgwQzRGRkMzMEEwMzBBMDI5MjI0QTIyODQxRTA4MDAzNQorOjIwMkQ0MDAwMTAyMDExMjAxMTIwMjFGQ0ZEMjAyNjIwMjQyMDI3RkU0ODYwNjhCMDEwQTgxMTJDMkEyNjRDMjQ4ODIwMDAyMEJCCis6MjAyRDYwMDAwMTAwMDA4MDdGRkUwMjQwMTI1MDFBNEMyMjQ0NDI0MDAxMDBGRkZFMDQyMDBFNDAwMTgwMDY2MDE4MTg2MDA4NzQKKzoyMDJEODAwMDEwNDAxMDIwMTAyMEZERkUyNDkwMjRDODI1MDQyNjhBNDg4ODQ4NTAzMDUwMTAyMDI4MjA0NDU4ODQ4RTAxMDRGQworOjIwMkRBMDAwMTEwODE4Q0MxMDkwMTNGRUZDODgyNDg4MjQ4ODI0ODg0QkZFNjg4ODEwODgxODg4MkQwODQ5MDg4MjA4MDQwODUwCis6MjAyREMwMDAyMDQwMzAyMDIxRkUyMTA0RkEwMDI4MUMyOUUwMjg0MDQ4NEU0QkYwMzA0MDEwNDAyODQyNDY0Mjg0M0UwMDAwMEIKKzoyMDJERTAwMDIwMDAyM0Y4MjI0ODIyNDhGQkY4MkE0ODJBNDgyQkY4NEE0ODY4NDAxM0ZDMTg0MDI0NDAyMDQwNDdGRTgwMDBBMAorOjIwMkUwMDAwMjAyMDMwMjAyMUZDMjEyNEZERkMyNTI0MjVGQzQ0MDA0QkZFNDg4MDMxRjgxODg4MjQwODI2MDg0NDI4MDAxMDY5Cis6MjAyRTIwMDAyMDAwMzFGQzIxMDQyMTA0RkRGQzQ1MjQ0NDIwNEJGRTRBMjI0QTUyMzI0QTEyOEUyQjBBNEEwMjgyMEEwMjA0QjUKKzoyMDJFNDAwMDIxMDAzMEJFMjIwMjIyMjJGQTIyNEEyMjRCRkU0QTYyNEE3MjJBQUExMkFFMkIyQTJBMjI0MjIyODIwQTAyMDQ5NworOjIwMkU2MDAwMjAyMDE0Mjg0NTI0MjlBNjJBMjgxNDMwNzA2MDEzODAxNDAwRkZGRTA0MjAwODIwMDQ0MDAzODAwQzYwNzAxQzg5Cis6MjAyRTgwMDAyMTA4MjA5MDIzRkMyMDI0RjgyNDQ5RkM0OTIwNDkyMDQ5RkU0ODYyMjg2MjEwQUEyOTI0NEEyMDg0MjAwMDIwMTMKKzoyMDJFQTAwMDIwMDAzM0ZDMjIwNDIzRkNGQTAwMkExQzJBRTA0QTIwNEFGQzJBMjAxM0ZDMkEyMDIyMjI0NDIyODQxRTA4MDA4RAorOjIwMkVDMDAwMjM4MDIyQkUyMjg0MjI4NEZCNzQyQjU0MkI1NDRBRDQ0QUQ0NEFGNDMzNTQxMjA0MkUwNDRBMDQ4MjE0MDIwODdGCis6MjAyRUUwMDAyMDQwMzA0MDIzRjgyMDQwRkJGQzQ4NDA0RkZFNDgwMDQ5Rjg0OTA4MzFGODMxMDg0REY4ODkwODAxMjgwMTEwNkYKKzoyMDJGMDAwMDIwNDAzMDQwMjNGQzIwNDBGQkZDMjg0MDI4NDA0RkZFNDg4MDQ5MjQzMzI4MTUxMDI5MDg0OTRFODM4NDAxMDBDOQorOjIwMkYyMDAwMjA0MDI3RkUyMDQwMjNGOEY4NDgyRkZFMjg0ODRCRjg0ODQwMzI0MDEyN0MyQTQwMkI0MDQ0QzA4ODdFMTAwMEZBCis6MjAyRjQwMDAyMDAwMjFGQzIxMDRGOUZDNDkwNDQ5MDQ0OUZDNDgwMDRCRkUyQTAyMTIwMjJCRkUyQTAyNDIwMjgzRkUwMjAyNEMKKzoyMDJGNjAwMDIwNjAyMDQwMjNGQ0ZBMjQyQkZDMkEyNDRBMjQ0QkZDNEE0NDQ4QTAzMTIwMkJGRTRDMjA0ODIwODAyMDAwMjA4NgorOjIwMkY4MDAwMjEwODMwOEMyMDUwMjFGQ0Y5MjQyOUZDMjkyNDQ5MjQ0OUZDMzAyMDEwMjAyQkZFNEMyMDg4MjAwMDIwMDAyMDgxCis6MjAyRkEwMDAxMDAwMTBGQ0ZFODgyMjUwMTQyMDA4NTAxNDhFNjEwNDNGRjgyMjg4MjU2ODI5MDgyMkM4MjQ0ODI4MjgyMDEwRjUKKzoyMDJGQzAwMDIwMDAzMUY4MjEwODIxMDhGOUY4NDkwODQ5MDg0OUY4NDgwMDRCRkMyQTk0MTI5NDJBOTQ0Mjk0ODdGRTAwMDA3NgorOjIwMkZFMDAwMjAzQzMzRTAyMjQ0MjEyOEZCRkUyODQwMjg0MDRCRkU0ODgwNDhGQzMxODgxMTUwMkEyMDQ0NTg4OThFMDYwNDc0Cis6MjAzMDAwMDAyMDgwMzA0MDI3RkUyMDAwRjlGODI5MDgyOUY4NDgwMDRCRkU3NDA0MTFGODI4MjAyNDIwNDQyMDgwRTAwMDQwNzYKKzoyMDMwMjAwMDdFNDAxNDQwMDg3RTdFODgxQjQ4MkMzMDQ4MzBBODRFMTQ4NEZGRkUwNDQwMDg0MDBFODAwMzYwMEMxQzMwMDg1MworOjIwMzA0MDAwMjA5MDIzRkUyMDkwMjNGQ0Y4OTAyRkZFMjg0MDJCRjg0QTQ4NEJGODMyNDgxN0ZFMkEwODQyMDg4MjI4MDIxMEY0Cis6MjAzMDYwMDAyMTEwMzExMDI3RkUyMTEwRkJGODJBMDg0QkY4NEEwODRCRjg0ODQwMzdGRTEwNDAyOEEwNDkxODgyMEUwNDA0QkQKKzoyMDMwODAwMDIwNDAyMDgwMjNGQzIyOTRGQTY0NEE5NDRCRkM0ODAwNEExMDMyMTIxM0RDMkExMDJBMTA0MjkyODcwRTAyMDAyNAorOjIwMzBBMDAwMjAzQzMzRTQyMTQ2MjBBOEZCRkUyQTQ0Mjg0MDRCRkM0ODgwMzBGMDEwOTAyRDUwMkEyMDQ0NTA4MThFMDYwNDVDCis6MjAzMEMwMDAyMDQwMzAyMDIzRkUyMjAyRkMzNDQ5QzA0OTAwNDlGQzQ5MTAzMTEwMTdGRTI4MDAyRDEwNDk4QzgyMDgwNDAwQkQKKzoyMDMwRTAwMDIwMDAyMTI0MjEyNDIxMjRGOUZDNDgyMDRCRkU0ODIwNDlGQzI5MjQxMUZDMTkyMDI0MjQ0NDNFODNDNDAxMDBFOQorOjIwMzEwMDAwMDg0MDNFN0UwODQ4N0VBODFDMTAyQTI4Qzg0NDNGRkUyMTAwM0ZGQzIyMTAyNDIwMjM0MDIwODA0MzYwOEMxODUyCis6MjAzMTIwMDAyMDAwMzNGQzIwNDAyMTc4Rjk0MDRGRkU0OTAwNDlGQzQ5MDAyOUZDMTAwNDI5NDQyQUE0NDJBNDg0MTQwMDA4RjAKKzoyMDMxNDAwMDIwNDAzMDQwMjNGQzIwNDBGQTQ4NDk1MDRGRkU0ODAwNEJGQzRBMDQzMkY0MzI5NDRBRjQ0RTA0OEJGQzAwMDAxOAorOjIwMzE2MDAwMjAwMDM3RkUyMDkwMjNGQ0ZBOTQyQTk0MkJGQzI4MDA0OUZDMzAwMDEzRkUyODIwMjUyODQyMjY4NEE0MDA0MEE1Cis6MjAzMTgwMDAyMDIwMzEyNDIwQTgyM0ZFRkEwNDRERjg0OTA4NDlGODQ4NDA0QkZDMzI0NDMyNDQ0QTU0NEE0ODgwNDAwMDQwRjEKKzoyMDMxQTAwMDIwMDAzMUZDMjEyNDIxRkNGOTI0MjlGQzI4NDAyODkwNDlGODY4NDQxMUZFMDgyNDI0QTg0MTI2ODJBNDAwNDAzRAorOjIwMzFDMDAwMjAyMDMzRkUyMDg4MjA1MEZCRkUyODAwMjlGQzQ5MDQ0OUZDMzEwNDExRkMyODIwMkZGRTQ4MjA4MDIwMDAyMEFGCis6MjAzMUUwMDAyMDIwMzNGRTIwMjAyMUZDRkMwMDI1RjgyNTA4NDlGODQ5MDg0ODkwMzNGRTEwMDAyOUY4NDUwODgxRjgwMTA4MjAKKzoyMDMyMDAwMDIwODAzMDQwMjdGRTIwMDBGQkZDNEE5NDRBRjQ0QTA0NEJGQzQ4MDAzMUY4MTE0ODI5Mjg0MUY4ODAwMDBGRkVEMAorOjIwMzIyMDAwMDAyMDNERkMyNDg4M0M1MDIxRkUzRTIwNjJGQ0JFMjAyMjIwMDQyMEZGRkUwODQwMEM4MDAzMDAwQ0UwNzAxQzkyCis6MjAzMjQwMDAwMTAwN0RCRTU1MkE3RDNFNTdFQTU1MkE3RUJFMTI4ODEyQkU3RDEyMTU5MjI1NTIyNjUyNDY1MjU0MkE4ODQ0OEIKKzoyMDMyNjAwMDIwODAyMDQwMjdGRTI0ODhGN0ZFNTQ5ODU1Q0M1NkFBOTQ4ODU0NDAyNDkwMjUyMDU2NDQ0NUZFODg4NDEwMDBEOQorOjIwMzI4MDAwMjAwMDMzRkMyMDQwMjdGRUZDNDI0QTUwNDk0ODQ5MDA0OTNDNEZFNDI5M0MxM0E0MkI3QzI1MjQ0OTNDODEyNEJBCis6MjAzMkEwMDAzRkUwMDQyMDA0MjAwNDdDMDgyNDA4MDQxMDg0MjA5NDQ4ODgwQ0EwMDg5MDEwODgyMDhDNDA4ODAyODAwMTAwMDQKKzoyMDMyQzAwMDAxMDAwOTIwMTkxMDIxMDg0NTA0MDIwMEZGRkUwNDQwMDkyMDExMTgyOTRFQ0QyNDExMTAyMTEwMDUwMDAyMDBEMworOjIwMzJFMDAwMDAzODNGQzAwNDA4MjIxMDExMjAwMDAwM0ZFMDAwNDAwMDgwRkZGRTAxMDAwMTAwMDEwMDAxMDAwNTAwMDIwMDQxCis6MjAzMzAwMDAxMDAwMTFGQ0ZFODgyMjg4MTQ1MDA4MjAxNDVDMjI4ODRGRTAwMDQwMDA4MDdGRkUwMDgwMDA4MDAyODAwMTAwQ0IKKzoyMDMzMjAwMDA4MjAwNDQwRkZGRTA4MjAxMjQ4M0VGODA4MjQzRUZDMDIwNDFGRTAwMDQwMDA4MDdGRkUwMDgwMDI4MDAxMDBDMQorOjIwMzM0MDAwMDAwMDFGRkMwMDE4MDA2MDAwODAwMDg2MDBCODAxQzAwRTgwNzA4MDAwODAwMDgwMDA4MDAwODAwMjgwMDEwMDVBCis6MjAzMzYwMDAxRkY4MDAzMDAwNDAwMDgwMjEwMDExMDAwOTAwMDUwMDAzMDAwMTgwMDE2MDAxMUUwMTA4MDEwMDA1MDAwMjAwRjEKKzoyMDMzODAwMDAxMDA3RDgwMDUwMDBCRkMxMjA0MTQwNDE5RjQzMTE0NTExNDkxRjQxMTA0MTExNDExMDg1MTAyMjBGRTAwMDBGNQorOjIwMzNBMDAwMDAwMEY4RjgwODg4NDg4ODQ4ODg0OEY4NDg4ODdFODgwMjg4MDJGODMyODhDMjg4MDI4ODE0ODgwQkZFMDAwMDIwCis6MjAzM0MwMDAwMDAwRjlGRTA5NTI0OTUyNDk1MjQ5NTI0MTUyN0Q1MjA1NTIzNTlFQzUwMjA1MDIwNTAyMjlGRTExMDIwMDAwMkYKKzoyMDMzRTAwMDAwODhGODg4MDg4ODQ5MDg0OTA4NEI3RTQ5MDg3RDQ4MDUyODM1MjhDNTA4MDUwODA1MDgyOTI4MTExMDAwMDBEMQorOjIwMzQwMDAwMDA0MEY4NDAwOEZDNDg4ODQ5MTA0QTAwNDhGQzdFMDQwMjA0MzJGQ0MyMDQwMjA0MDIwNDE0RkMwODA0MDAwMEQ1Cis6MjAzNDIwMDAwMDAwRjlGQzA4ODg0ODUwNDgyMDQ4RDg0QjI2N0MyMDA1RkMzNDIwQzQyMDA3RkUwNDIwMTQyMDA4MjAwMDIwRkMKKzoyMDM0NDAwMDA4MDBGRUY4MTI4ODI0NTAxODIwMTQ1QzYxODgwRkUwMDgyMDA4MjAwRkZDMDAwNDdGRTQwMDA0MDAyODAwMTBFMgorOjIwMzQ2MDAwMDAyMDdDMjAwNDQwMjQ0ODI0ODQyNUZFMjQwMjNFMDAwMkZDMzI4NEMyODQwMjg0MDI4NDBBRkMwNDg0MDAwMDFECis6MjAzNDgwMDAwMDgwRjg4MDA4RkM0Qjg4NDg1MDQ4NjQ0Qjk0N0MwQzA3RkMzNDkwQzQ5MDA0OTAwNTEyMjkxMjEyMEUwMDAwOTEKKzoyMDM0QTAwMDAwOTA3ODkwMDg5NDQ5OTg0QTkwNDhCMDQ4OTI3QzhFMDQyMDA1RkUzNDIwQzQyMDA0MjAxNDIwMDgyMDAwMDA2MgorOjIwMzRDMDAwMDEwOEY4ODgwODkwNEJGRTQ4ODg0ODg4NDg4ODdDODgwN0ZFMDQ4ODM0ODhDNDg4MDUwODA1MDgxNjA4MDgwODJECis6MjAzNEUwMDAwMDAwRjNGRTEwMDA1M0RFNTI1MjUyNTI1MjUyN0I1QTBBRDYzQTUyQ0E1MjBBNTIwQTUyMkE1MjEyRDYwMDAwMzUKKzoyMDM1MDAwMEY4ODgwODg4NDg4ODRCRkU0ODg4NDhGODQ4ODg3Q0Y4MDQ4ODE0ODgyN0ZFQzQ5MDA0ODgxNTA0MEEwNDAwMDBEQQorOjIwMzUyMDAwMDAwMEY5RkMwOTI0NDlGQzQ5MjQ0OTI0NDlGQzdDMjAwN0ZFMTQ2MDI0QjBDNEE4MDUyODA2MjYxNDI0MDgyMEY3Cis6MjAzNTQwMDAwMDgwRjhBMDA5MTA0OUZFNEIyMDREMjA0OUZDN0QyMDA1MjAxNUZDMjUyMEM1MjAwNTIwMTVGRTA5MDAwMDAwOTgKKzoyMDM1NjAwMDAwNDBGODkwMDlGODQ4MDg0ODQwNEJGRTQ4QTA3RDE4MDY0NjE0OTAyNzI0QzRDODA3MTAxNDYwMEI4MDAwMDAwNworOjIwMzU4MDAwMDA0MDdBNzg1MjQwNzdGRTQ5NDA2QTUwNTA2MDQxODAxRkYwMDgxMDBGRkMwMDA0N0ZGNDAwMDQwMDE0MDAwODc1Cis6MjAzNUEwMDAwMDIwN0UyMDE0M0VGRjQ0MUFBODI4MThEODY2MDAwMDBGRjAwODEwMEZGQzAwMDQ3RkY0MDAwNDAwMTQwMDA4QkYKKzoyMDM1QzAwMDA4MjA3RTIwMDgzRUZGNDgxMDQ4MUVCMDIyNDhDRkU2MDAyMDA4MjAwRkZDMDAwNDdGRjQwMDA0MDAxNDAwMDg2OQorOjIwMzVFMDAwMDA0MDdCQkUwQTEyNEE5MjRBNTI0QUEyNEI0QTdFMDQwNUZDMTUyNDI1RkNDNTI0MDUyNDE1RkMwOTA0MDAwMDMwCis6MjAzNjAwMDAwMDQwRjAyMDEzRkMxMjA0OTNGQzkyMDA5MjAwRkFFRTBBMjIyQUFBNEE2NjhBNjYwQUFBMkIyMjE0NjYwMDAwN0YKKzoyMDM2MjAwMDAwMDBGQkZFMDg1MDQ5RkM0OTU0NDlGQzQ4MDA3REZDMDQwMDE3RkUyNDIwQzUyODA1MjQyQTI0MTBBMDAwNDBBMAorOjIwMzY0MDAwMDAyMEY4NDAwOUZDNDk0NDQ5N0M0OTk0NDk2NDQxNTQ3REZDMDQ0MDI0MjBDNEE0MDY4MjJBOEExMDc4MDAwMDZGCis6MjAzNjYwMDAwM0ZDRjIwNDEzRkM1MjAwNTJGODUyMTA1M0ZFN0EyMDBCRkUwQTQ0MkE4OENCRkUwQzg4NTVBODI4OTAwMDAwNDIKKzoyMDM2ODAwMDAwOTBGQjlDMDg5MjRCOTI0OUZDNDkyNDQ5RkM3RDI0MDVGQzE0OTAyNUZDQzQ5MDA3RkUxNDg4MDkwNDAwMDAyQworOjIwMzZBMDAwMDAyMEZCRkUwOTU0NDlEQzQ4OTA0OUZDNDg5MDdERkMwNDkwMTdGRTI0QTRDNTk4MDY4ODE0Q0UwODg0MDAwMDM3Cis6MjAzNkMwMDAwODAwMDgwMDEwMDAxMDAwMjEwMDdFMDAyNDAwMDgwMDEwMDAyNzAwNzgwMDAwMDAwNzAwRjgwMDQwMDAwMDAwMDEKKzoyMDM2RTAwMDEwMDgxMUZDMjAyMDI0MjA0NDIwRjgyMDE3RkUyMDIwNEMyMEYwMjAwMDIwMEUyMEYwMjA0MDIwMDBBMDAwNDAzNgorOjIwMzcwMDAwMTAxMDEwMTAyMDEwMjgxMDRCRkVGMDEwMTAxMDIxMTA0QzkwRjBEMDQwNTAwQzEwRjAxMDQwMTAwMDUwMDAyMDVGCis6MjAzNzIwMDAxMDgwMTBDMDIwODAyNUZDNDUwMEZBMDA0REY4MTAxMDIwMjA3QzQwMDA4MDAwODAxRDAyRTEwMjQwRkUwMDAwODgKKzoyMDM3NDAwMDEwNDAxMDQwMjA0MDI0NDA0NUY4Rjg0ODEwNDgyMTQ4NENDOEYwNDg0MEE4MENBOEYxMEE0MjBBMDQwNjA4MDA4NgorOjIwMzc2MDAwMTA0MDEwMjAyMDIwMjVGRTQ1MDBGOTAwMTEwMDIxMDA0MTAwRjkwMDAxMDAwMTAwM0EwMEMyMDAwNDAwMDgwMEIyCis6MjAzNzgwMDAxMDAwMTAwODExRkMyNDAwMjQwMDQ4MDRGQkZFMTA0MDIwNDA3QzgwMjA5MDBDODhGMTA0NDNGQzAxMDQwMDAwM0UKKzoyMDM3QTAwMDEyMjAxMjIwMjIyMDIyMjA0QTIwRkJBNjEyMzgyMjIwNDIyMEZBMjAwMjIwMDIyMjFBQTJFMzIyNDIxRTAwMDBBNworOjIwMzdDMDAwMTAwMDE5RkMxMDA0MjA4ODQ0NTBGODIwMTNGRTIwMjQ3QzI4MDAyMDAwMjAxQzIwRTAyMDQwMjAwMEEwMDA0MEE3Cis6MjAzN0UwMDAyMTA4MzEwODIxMDg0MTA4NEZGRUYxMDgxMTA4MjEwODQxRjhGOTA4MDEwODAxMDgxOTA4RTFGODAxMDgwMDAwMUUKKzoyMDM4MDAwMDIwMDAyMTQ4NDE0ODQxNDg4OTQ4RkZGRTExNDgyMTQ4NDE0OEY5NDgwMTc4MDEwMDFEMDBFMTAwMDFGRTAwMDAzQworOjIwMzgyMDAwMjA4MDMwOTAyMDg4NDA4ODRCRkVGMDgwMTA4MDIwRkM0MEM0Rjk0ODAxNDgxQTMwRTIzMDA0NDgwODhFMDEwNDgyCis6MjAzODQwMDAxMDgwMTBDMDEwODAyMUZDMjkwODRBMTBGNUZDMTAwNDIwMDQ0MDA0RjhGQzAwMDQwMDA0MTgwNEUxRkMwMDAwNkUKKzoyMDM4NjAwMDEwOTAxMDkwMjNGQzIwOTQ0ODk0RjNGQzEyOTAyMjkwNDNGRUY4OTIwMDkyMDExQTE5MTRFMjEwMDQxMDAwMTA1QgorOjIwMzg4MDAwMDAyMDEwMjAxMDIwMjEyNDIxMjQ0OTI0RjEyNDIxRkM0MDIwRkEyMjAyMjIwMjIyMUEyMkUzRkUwMjAyMDAwMDlBCis6MjAzOEEwMDAxMDQwMTA2MDIwNDAyODgwNDg4OEYxMDQxM0ZFMjAwNDQwMDBGOUZDMDEwNDAxMDQxOTA0RTEwNDAxRkMwMDAwMDgKKzoyMDM4QzAwMDEwNDAxMDQwMjNGQzIwQTA0OTEwRjYwRTExRjQyMDAwNDNGQ0Y4ODAwMEY4MDAwODE4MDhFMDA4MDAyODAwMTBGMAorOjIwMzhFMDAwMTAwMDExN0MyMTAwMkEwMDRBODBGNEZFMTEwODIzMDgyNTA4NDEwOEY5MDgwMTA4MDEwODE5MDhFMTI4MDExMDFDCis6MjAzOTAwMDAxMDgwMTA4MDIxRjgyQTkwNDg2MEYwOTAxMTRFMjY0NDQzRjhGMjQwMDI0MDAzRkMxODQwRTA0MDAwNDAwMDQwMUQKKzoyMDM5MjAwMDIwMDAyM0ZFMjAyMDQxRkM0OTI0RjEyNDExRkMyMTI0NDEyNEY5RkMwMjIwMDE0MDE4ODBFMTQwMDYzMDE4MEUyMworOjIwMzk0MDAwMTAyMDFBMjQxMTI2MjBBODQ0MjBGOUZDMDkwNDExMDQyMUZDN0QwNDAxMDQwMUZDMUQwNEUxMDQwMTE0MDEwOEJCCis6MjAzOTYwMDAwMjA4MjExMDMzRkMyMDQ0NDg0NEZCRkMxMjQwMjI0MDQzRkNGOEM0MDE0NDAxNDQzQTU0QzQ0ODA4NDAwMDQwOUIKKzoyMDM5ODAwMDEwNDAxODQwMTNGQzIwNDA0ODQwRkZGRTExMTAyMjg4NDRGRUYxMTQwMjkwMDBBMDE4NjBFMDkwMDMwQzBDMDQ0MAorOjIwMzlBMDAwMTAyMDE4MjAxM0ZFMjAyMDQ0NTBGQzg4MDkwNDEzRkUyMDA0N0RFNDAxMjQwMTI0MURFNEUwMDQwMDE0MDAwODQ4Cis6MjAzOUMwMDAyMDkwMzA5MDIwOTAyMzlFNDg5MEY4OTAxMzlDMjA5MDQwOTBGODkwMDc5RTAwOTAzMDkwQzA5MDAwOTAwMDkwOEEKKzoyMDM5RTAwMDEwMjAxQTI0MTFBNjI5Mjg0QzIwRkJGQzEyMDQyMkY0NDI5NEZBOTQwMkY0MUE5NEUyMDQwMjE0MDIwODAwMDBCNAorOjIwM0EwMDAwMjAwMDMzRjgyMjA4NDNGODhBMDhGQkY4MTAyMDIyMjA0MjI0RkJBODAyMzAxQTIwRTJBNDQ3MjYwMjFDMDAwMDc5Cis6MjAzQTIwMDAwMDAwMjAzQzMzQzAyMDQwNEZGRUZBNDgxMjQ4MjdGRTQyNDhGMjQ4MDdGRTAwNDAxODQwRTA0MDAzRkMwMDAwNDkKKzoyMDNBNDAwMDIwMUMzM0UwMjI0NDQxMjQ0OTI4RkJGRTEyMDQyMDAwNDNGOEY5MTAwMTEwMUNBMEUwNDAwMEIwMDMwRTBDMDRBQQorOjIwM0E2MDAwMjIxMDMyMTAyM0Q4NEE1NEZENTQxMDkwMjA5MDQxNjBGQTFFMDdGODAyMDgxQTA4RTIwODAzRjgwMjA4MDAwMEM1Cis6MjAzQTgwMDAwMDQwMTQ0ODEyNTAyMDQwNEZGQ0Y4ODAxN0ZFMjEyMDQyMTBGNUVFMDkyNDAxMjAxOTYwRTEwODAxMDgwMEY4QzkKKzoyMDNBQTAwMDEwNDAxODIwMTNGRTIyMDI0NDA0RjlGODA5MDgxMTA4MjFGODc5MDAwMUZDMDEwNDE5MDRFMUZDMDEwNDAwMDA1MworOjIwM0FDMDAwMjEyNDMxQjYyMTI4NDI1MDRBNDhGOTI2MTA5NDIzRkU0MjIyRkEyMjAzRkUwMjIyMUEyMkUyMjIwM0ZFMDAwMDgzCis6MjAzQUUwMDAxMTEwMTkxMDI3RkUyMTEwNDlGMEY4NDAxM0Y4MTI0ODIyNDg3QkY4MDA0MDA3RkMxODQwRTA0MDAwNDAwMDQwMzgKKzoyMDNCMDAwMDIxMDAzMTAwMjEzQzIxMjQ0RkU0RjkzQzEzQTQyMzY0NDU2NEY1M0MwOTI0MDEyNDE5MjRFMTNDMDEyNDAxMDA1RgorOjIwM0IyMDAwMTAwMDE5RkMxMTA0MjFGQzQ5MDRGOUZDMTAwMDI3RkU0MDIwRjkyMDAxM0MwMTIwMTkyMEUyQTAwNDYwMDgxRTlCCis6MjAzQjQwMDAyMDEwMzc5MDI0OTA0NDkwOTc5NEU0RDIyNEQyNDdENEY0OTYwNDk0MDQ4ODM3OTBDMDIwMDBDMDAzMDAwMDAwREMKKzoyMDNCNjAwMDIwNDAzM0Y4MjI0ODQzRjg0ODQwRjdGRTEwMDAyM0Y4NDIwOEZBNDgwMjQ4MDI0ODFBQThFMDkwMDExODAyMDhGOAorOjIwM0I4MDAwMDAwMDIzRjgzMjQ4MjI0ODRCRjhGQTQ4MTI0ODIzRjg0MDAwRjkyMDA1MTQwNTEyMzUwMkM5MDgwMEY4MDAwMEEzCis6MjAzQkEwMDAyMjAwMzM3RTIyMTA0NkZFNEE5MkYyRkUxMjkyMjI5MjQyRkVGMjEwMDI5MDAyNjAxQTIwRTI1MDAyOEUwMzA0NUYKKzoyMDNCQzAwMDAwMDAyMjc4MzMwODIyMDg0QUZFNEE0MEYyN0MxMjUwMjI5MDdBRkUwMjEwMDIxMDFBMjhFMjI0MDI0NjAyODJFMgorOjIwM0JFMDAwMDAyMDI0NDAzMkY4MjI4ODQ4ODg0OEY4RjY4MDEyODAyMkY4N0E4ODAyODgwMjg4MUFGOEU1MDAwOEZFMDAwMDI4Cis6MjAzQzAwMDAwMDAwMjNGODMyMDgyM0Y4NDIyMDRCRkNGQTIwMTI5NDIzMTQ3QTBDMDFGODAxMDgxREY4RTEwODAxMDgwMUY4MEMKKzoyMDNDMjAwMDIwMDAzM0ZDMjA5MDQyOTQ0OTk4RjA5MDE3RkUyMDAwNDFGOEY5MDgwMTA4MDFGODE5MDhFMTA4MDFGODAwMDBEQQorOjIwM0M0MDAwMjA0MDM3RkMyMDQwNDNGODRBMDhGM0Y4MTIwODIzRjg0MjA4RkJGODAyMDgwN0ZDMTkxMEUxMDgwMjBDMDQwNDUyCis6MjAzQzYwMDAyMDAwMzNGQzIyMDA0QkZDNEEwMEYzRkUxMkE4MjI5MDdBQ0UwMjkwMDNGRTM0OTBDNDUwMDgxMDEwNTAwMDIwOUEKKzoyMDNDODAwMDAwODAyMDQwMzdGRTIwMDA0OUY4RjkwODExRjgyMDAwNDNGRUZBMDIwMkYyMDI5MjFBRjJFMjAyMDIwQTAyMDRCRAorOjIwM0NBMDAwMjA4MDIwNDAyN0ZDNDAwMDRBQThGQTQ4MTJBODIzRjg0MDQwRjdGQzA0QTQwNTE0MzdGQ0M0MTQwNDA0MDQwQzQxCis6MjAzQ0MwMDAwMDA4MjIwQzMxODgyMDkwNEJGQ0Y5MTAxMTg4MjIwNjQ3RkNGMkE4MDJBODAyQTgxQUE4RTJBODBGRkUwMDAwQUEKKzoyMDNDRTAwMDIxMDgzMDkwMjdGRTQwQTA0QkZDRjhBNDE3RkUyMEE0NDNGQ0Y4QTAwMUIwMUFBOEU0QUUwOEE0MDBBMDAwQTA1MgorOjIwM0QwMDAwMDA0MDIwMjAzM0ZFMjIwNDQ4MzhGOUMwMTEwMDIxRkM0MTEwRjkxMDAzRkUwMDAwMTkxMEUxMDgwMjA0MDQwNEVBCis6MjAzRDIwMDAyMDAwMzdGRTIwOTAyM0ZDNEE5NEYyOTQyM0ZDNDAwMEZCRjgwMDAwMDdGRTE4NDBFMjQ4MDQ0NDA5NDQwMDgwMEQKKzoyMDNENDAwMDIzRjgzMjA4MjNGODQyMDg0QkY4RjgwMDE3RkMyNEE0NDdGQ0YwMDAwM0ZDMDEwODE4OTBFMDYwMDE5ODBFMDZDMworOjIwM0Q2MDAwMTAwMDE5RkMyMTI0MjVGQzQ1MjRGOUZDMDg0ODExRjAyMDI4N0NDNDAxRkUwMDI0MUQyOEUyMjYwNEE0MDA0MDI5Cis6MjAzRDgwMDAyMDAwMzNCQzIwQTQ0QTk0NDk5NEYyQTQxMDQ0MjBBMDczNTgwQzg2MDMyMDE4QzhFMzEwMDA2MDAxODAwNjAwQjEKKzoyMDNEQTAwMDAyNDgyMjQ4MzQ5MDIyNDg0QkY4RkE0ODEzRjgyMjQ4NDNGOEY4NDAwN0ZFMThFMEUxNTgwMjRFMDQ0NDAwNDBBNgorOjIwM0RDMDAwMjIwMDIyN0UyMjEwNEZBMDUyN0NGMjQ0MkY1NDIwNTQ0NzU0RjU1NDA1NTQzNzEwQzUyODAwNDYwMDgyMDAwMENDCis6MjAzREUwMDAyMDQwMzA0MDIzRkU0QTUyNDk4Q0YxRkMxNzBBMTFGODIxMDg3OUY4MDAyMDE5MjhFMTI2MDIyNDA0QTAwMDQwM0UKKzoyMDNFMDAwMDIxMDQzMDg0MjA4ODQzRkU0QTIyRjJBQTEyNzIyM0ZFNDAwMEY5RkMwMTA0MDFGQzE5MDRFMTA0MDFGQzAxMDRGOAorOjIwM0UyMDAwMjdGRTMwMDAyM0Y4NDI0ODRCRjhGQTQ4MTNGODIwMDA0N0ZDRjAwMDAzRjgwMjQ4MUJGOEUyNDgwRkZFMDAwMDE2Cis6MjAzRTQwMDAwMDIwMjBGQzM0QTQyMkZDNDgyMDQ5RkVGMDAwMTZGQzIyODQ0MkZDRjI4MDAyRkMxQTg0RTJGQzA1MDAwOEZFQTQKKzoyMDNFNjAwMDIwMDAzMUYwMjExMDQ5RjA0ODAwRjdCQzE0QTQyN0JDNDA0MEY3RkUwMEUwMDE1MDE5NDhFMjRFMDQ0NDAwNDA0MgorOjIwM0U4MDAwMTNGQzFBOTQxM0ZDMjAwMDRCRkVGODAwMTFGODIxMDg3OUY4MDA0NDAwQTgxRDkwRTI4ODA0QUUwMEM0MDA4MDU5Cis6MjAzRUEwMDAyNTI4MzUyODI3QkU0OTQ4NTdCRUYyOTQxMkQ0MjRBMjQzRjhGMjA4MDI0ODAyNDgzMjQ4QzBBMDAxMTgwNjA4RDEKKzoyMDNFQzAwMDAxMDAwMTgwMDEwMDAyMDAwNDEwMDgxODEwMjA3RkMwMjA4MDAxMDAwMjEwMDQwODA4RkMzRjBDMTAwODAwMDA5NAorOjIwM0VFMDAwMTEyMDExMjgyNTQ4NzlGMDE1MjgzRDdDMDUwNEZGRkUwMDg4N0U4ODUyOTA3RTYwNTI0MjdFQTI0MzFBMDAwNjIxCis6MjAzRjAwMDAwMDAwMDg4ODBDQ0MwODg4MTExMDIxMTAyMjIwNDQ0MDQyMjAyMTEwMTEwODEwODgwODg0MDg4NDAwMDAwMDAwMzUKKzoyMDNGMjAwMDA4ODQxMTA4MjIxMDQ0MjAyMjEwMTEwODExMDgzRkY4MjEwODIxMDgzRkY4MjEwODIxMDgzRkY4MjAwODAwMDA3MQorOjIwM0Y0MDAwMDg4ODExMTAyMjIwMTExMDAwMDAxRkYwMTAxMDFGRjAwMDAwM0ZGODIxMDgzRkY4MjAwMjIwMDIxRkZFMDAwMDE3Cis6MjAzRjYwMDAwMDAwN0RGRTEwMjAxMDIwMTAyMDEwMjA3QzIwMTAyMDEwMjAxMDIwMUUyMEYwMjA0MDIwMDBBMDAwNDAwMDAwNEMKKzoyMDNGODAwMDAwMDBGREYwMjExMDIxMTAyMTEwMjExMEY5MTAyMTEwMjExMDIxMTAzQTEwRTIxMDQ0MTIwODEyMTAxMjIwMEVEOAorOjIwM0ZBMDAwMDA0MDdDNDAxM0ZFMTA0MDEwNDAxMUZDN0M0MDEwNDAxM0ZDMTA0NDEwNDQxQzQ0NjA1NDAwNDgwMDQwMDA0MEE4Cis6MjAzRkMwMDAwMDEwN0M5MDEwRDAxMDg4MTEwODExMDQ3QTA2MTVGODEwNDgxMDQ4MUM4OEUwODgwMTA4MDIxMDA0NTAwODIwM0YKKzoyMDNGRTAwMDAwNDAwMDIwRkMyMDI3RkUyMTA4MjEwOEY5MDgyMTEwMjA5MDIwQTAyMDQwMzhBMEMxMTAwMjE4MDQwRTE4MDREQgorOjIwNDAwMDAwMDAwMDAzRkNGQzQwMjA0MDIwNDAyMDQwRjg0MDIzRkMyMDYwMjA1MDIwNDgzODQ4QzA0MDA3RkUwMDAwMDAwMDExCis6MjA0MDIwMDAwMDAwN0RGRTEwMDQxMDA0MTAwNDExRTQ3RDI0MTEyNDExMjQxMUU0MTEyNDFDMDQ2MDA0MDAwNDAwMjgwMDEwREYKKzoyMDQwNDAwMDAwNDAwMDUwRkU0ODEwNDgxN0ZFMTBBMDdDQTAxMEE0MTBBNDEwQTgxMTMwMUQyMkUxNjIwMkEyMDQxRTA4MDBBMAorOjIwNDA2MDAwMDAyMDAwMjA3QzIwMTAzRTEwMjAxMDIwN0MyMDEwMjAxMUZDMTEwNDExMDQxRDA0NjEwNDAxRkMwMTA0MDAwMDJCCis6MjA0MDgwMDAwMEEwMDBBOEZDQTQyMTI0MjEyMDIzM0VGREUwMjEyMDIxMTAyMTEwMjExMDM5MTBDMTBBMDEwQTAxMDYwMTAyNzcKKzoyMDQwQTAwMDAwNDAwMDYwN0M0MDExRkMxMTA0MTEwNDdEMDQxMTA0MTFGQzExMDQxMTA0MUQwNDYxMDQwMUZDMDEwNDAwMDAxOAorOjIwNDBDMDAwMDAwMEZCRkMyMjA0MjIwNDIzRkMyMjIwRkEyMDIyMjAyM0ZFMjIyMDIyMjAzQTIwQzIxNDAyOTQwMzBDMDIwNDYwCis6MjA0MEUwMDAwMjAwRkEwMDIyMDAyN0RFMjI1MjIyNTJGQTUyMjI1MjIyNTIyMjUyMjI1MjM0NTJDNDVFMDk1MjEwODAyMDAwRTYKKzoyMDQxMDAwMDAwMDBGQkZFMjA4ODIwODgyMEY4Rjg4ODIwODgyMEY4MjA4ODIwODgzODlFRTdFODAwMDgwMDA4MDAwODAwMDhFOQorOjIwNDEyMDAwMDExMDAxMTBGRDEwMjExNDI3RkUyMTEwRkQxMDIxMTAyMTE0MkZGRTIwMDAzQzkwRTEwODAyMEMwNDA0MDgwNDJFCis6MjA0MTQwMDAwMDAwRkRGRTEwMjAxMDQwMTFGQ0ZEMDQxMTI0MTEyNDExMjQxMTI0MTEyNDFDNTBFMDQ4MDA4NjAzMDIwMDAwQUUKKzoyMDQxNjAwMDAwMDBGN0RFMjA5MjI0OTQyNDk0NzdGODIxOTQyMTkyMjI5MjIyOTIzNDkyQzQ5QTA4OTQxMDkwMDI5MDAxMTAwNgorOjIwNDE4MDAwMDEwMDAxMDRGQTdFMjQwMDI4MDAyMTAwRjk3RTIyMDgyNjA4MkEwODIyMDgzQTA4QzIwODAyMDgwMjI4MDIxMEI3Cis6MjA0MUEwMDAwMDkwRjg5MDIwOTAyNDk0MjI5NDIyOThGODkwMjE5MDIyOTgyNDk0MjA5MDM5MTBDMTEyMDIxMjA0MEUwODAwNkEKKzoyMDQxQzAwMDAwODAwMDgwRkRGODIxMDgyMjkwMjQ2MEY4NjAyMDkwMjEwRTIzRkMyNTA4MzkwOEMxMDgwMUY4MDEwODAwMDBGQworOjIwNDFFMDAwMDgwMDA4MDAxRkY4MjEwODQ5MjAxMTEwMjUwODAyMDAzRkY4MDEwMDAxMDAxRkYwMDE0MDAxMjA3RkZDMDAwMDkxCis6MjA0MjAwMDAwMDAwRkJGRTIyNDIyMDQwMjNGQzIwODBGOEEwMjEyMDIzRkMyMTIwMjAyMDNCRkVDMDIwMDAyMDAwMjAwMDIwMzAKKzoyMDQyMjAwMDAwMjAwNDIwRkFGQzIyNDAyMDUwMjA5MEYwRkMyRTEwMjIxMDIyRkUyMjEwM0ExMEMyMTAwNTgwMDg3RTAwMDRFOQorOjIwNDI0MDAwMDEwODdEMDgxM0ZFMTEwODExMDgxMUY4N0QwODExMDgxMUY4MTEwODExMDgxQkZFRTA5MDAxMDgwMjA0MDQwMjBECis6MjA0MjYwMDAwMTEwMDExMEZGRkUyMTEwMjExMDIzRkNGQTQ4MjI0ODIyNDgyRkZFMjhDMDMxMjBDMjEwMDQxODA4MEUzMDA0RUEKKzoyMDQyODAwMDAwNDAwMDQwRkJGQzIwQTAyMTEwMjIwOEY3RkUyMDA4MjNDODIyNDgyMjQ4M0JDOEMyNDgwMjA4MDAyODAwMTA2MQorOjIwNDJBMDAwMDA0MDAwNzhGODQwMjNGRTIyNDQyMjcwRkJDNDIyN0MyMjAwMjJGMDIyOTAzQzkwQzQ5MjA5MTIxMjBFMjQwMDMxCis6MjA0MkMwMDAwMDAwMDNGQ0ZBMDQyMjA0MjNGQzIyMDQyMjA0RkJGQzIwMDAyMjIwMjNBNjIyMzgzQTIyQzJBMjAzMjIwMjFFQ0YKKzoyMDQyRTAwMDAwNDBGODQwMjE0QzIxNTAyMjYwMjA5MEY5MDgyMjQ0MjU0MjIxNEMyMjcwMzhBMEMwOTAwMTA4MDIwRTBDMDQxOAorOjIwNDMwMDAwMDA0MDAwMjBGQkZFMjIwMjI0MDQyMUY4RjgwMDIwMDAyM0ZFMjAyMDIxMjgzOTI0QzIyNjA0MjIwOEEwMDA0MENBCis6MjA0MzIwMDAwMDQwMDAyMEZCRkUyMjAyMjUwNDIxMDA3OUZDMjI2NDI2NjQyOUE0MjBCNDM5MjhDMjIwMDQyMjA4MjIxMDFFQ0YKKzoyMDQzNDAwMDAwMDBGQkZFMjIwMjI0OTQyMTA4NzI0NDIwNDAyN0ZDMjBDMDIxNjAzOTUwQzI0ODA0NDYwODQ0MTA0MDAwNDAwQworOjIwNDM2MDAwMDNGQ0ZBMDQyMjA0MjNGQzIyMjAyMjIwRkJGRTIyMjAyMjIwMjVGQzI1MDQzRDA0QzkwNDA5RkMxMTA0MjAwMDY4Cis6MjA0MzgwMDAwMDAwRkJGRTIyMDIyMkZBMjIwMjIyRkFGQTAyMjFGQzIxMDQyMUZDMjEwNDM5RkNDMTA0MDFGQzAxMDQwMDAwMjgKKzoyMDQzQTAwMDAwNDBGOEEwMjExMDIyMDgyNUY2MjgwMEZCQzQyMjU0MjI1NDIzRDQyQTU0MzI1NEMzRDQwMjU0MDI0NDAyODgyNAorOjIwNDNDMDAwMDAzQzdCQzAyNDg0MjI0ODIyNTAyN0ZDNzg4MDI3RkUyMDgwMjFGODJBOTAzMjUwQzQyMDA4NTAxMThFMjYwNEE4Cis6MjA0M0UwMDAwMDAwNzdCQzI0ODQyNDg0MjdCQzI0ODQ3NDAwMjdGRTI0MjQyNDI0MkZBODM0MzhDNDEwMDQyODA0QzYwNTA0NzAKKzoyMDQ0MDAwMDAxMjQwMTI0RkE0ODI0OTAyMjQ4MjEyNDc5NDQyM0ZDMjIwNDIyOTQyQTY0MzI2NEMyOTQwMjA0MDNGQzAyMDQ3MAorOjIwNDQyMDAwMDAzQ0ZCQzAyMTI0MjBBODIzRkUyMjQyRjQ0ODIzRkUyMDgwMjhGQzMxNDhDMTUwMDIyMDA0NTAwODhFMDMwNDM1Cis6MjA0NDQwMDAwMDQwMDAyMEZCRkUyMjIwMjNGQzIyMjRGQkZFMjIyNDIzRkMyMjIwMjVGQzM1MDRDOTA0MDlGQzExMDQwMDAwN0IKKzoyMDQ0NjAwMDAxMTAwMTEwRjdGRTIxMTAyMUYwMjA0MEZCRkMyMjQ0MjNGQzIwNDAyN0ZDMzA0MEMzRjgwMDQwMEZGRTAwMDAwQworOjIwNDQ4MDAwMDExMDAzRkNGOTEwMjExMDI3RkUyMDAwRkJGODIyNDgyMjQ4MjNGODJBNDgzMjQ4QzNGODAxMTAwMjA4MDQwNEUxCis6MjA0NEEwMDAwN0ZFRjUyQTI1MkEyNTJBMjUyQTI1QUVGQTU0MjRBMjI4ODAyN0ZFMjg5MDMxOTBDMDYwMDBEODAzMEMwQzA0QTcKKzoyMDQ0QzAwMDAwNDBGQTQ0MjI0NDIzRkMyMTQ0MjEyMEZCRkUyNjIwMkJGQzIyMjAyQTIwMzNGQ0MyMjAwMjIwMDNGRTAyMDAwQgorOjIwNDRFMDAwMDA0MEY4ODAyM0ZDMjI0NDIyRjQyMzk0N0E2NDIyOTQyM0ZDMjA0MDI5NjAzNTI0QzUwQTA5MEEwMEY4MDAwMEUzCis6MjA0NTAwMDAwNDIwRkEyMDIyM0UyRjQwMjQ4MDI0N0VGNzEwMjUxMDI1NUUyNTUwMzU1MDI5NTBDOTUwMEE3MDEyOUUyNTA0QUEKKzoyMDQ1MjAwMDAwNDAwM0ZDRjkwODIwOTAyN0ZFMjAwMEY5RjgyMTA4MjFGODIxMDgyOUY4MzA0MEM3RkUwMDQwMDA0MDAwNDBENAorOjIwNDU0MDAwMDBBMDA0QTRGQUE4MjBCMDI3RkUyMTEwRkJGQzIwNDAyM0ZDMjA0MDJGRkUzMEEwQzA5MDAxMTgwNjBFMTgwNERGCis6MjA0NTYwMDAwMTAwRjlGQzI1MjQyN0E4MjQ5MDJCMjhGQTQ0MjQ4MDJBNDgyMTUwMjdGRTMwRTBDMTU4MDY0RTE4NDQwMDQwMjMKKzoyMDQ1ODAwMDAwNDBGODc4MjA0MDI3RkUyNDdBMjdDNEY0N0MyNDAwMjdGQzI0QzAzRjY0QzRBODBCNTgwODk2MTM1NDIwMjAwQgorOjIwNDVBMDAwMDAyMEY3QTAyNEJDMjRFNDI0QTgyNzk4RkExMDIyMjgyMzQ2MkFCQzJBMjQzQUE0Q0IyNDFDM0MwMDI0MDAwMDk3Cis6MjA0NUMwMDAwMDIwM0VGQzIyNDgzRTUwMjFGRTVFMjA1MkZDOUUyMDAwMjA3RkZDMDEwMDNGRjgwMTIwMDExMEZGRkUwMDAwREUKKzoyMDQ1RTAwMDA1MjhGN0JFMjUyODJGRkUyMzE4RkRBQTI1NDYyQkZDMjIwODJBNDgzMjQ4QzI0ODAyQTgwMTEwMDYwODE4MDRFNgorOjIwNDYwMDAwMDgwMDMzRUMyMjI0M0JFQzIyQTQzQkFDMjIyNDdGRkU0MDAyQkZGODAxMDAzRkY4MDEyMDAxMTBGRkZFMDAwMDM2Cis6MjA0NjIwMDAwMDIwM0UyMDIyRkMzRTIwMjIyMDNFRjgwMDIwRkVGQzA4MjQyODI0MkYzNDI4Mjg1ODIwNEMwMDgzRkUwMDAwN0UKKzoyMDQ2NDAwMDIwMDAyMEY4RkM4ODIwRjgyMDg4Rjg4ODIwRjgyMDAwRkRGQzI1NTQyNTU0MzU1NDI5NTQyMTU0MjdGRTIwMDA3QgorOjIwNDY2MDAwMTAwMDEwMzg3REMwMTA0NDExMjQ3Qzg4MTA0MDExOUNGRDA0MTUwNDE1REMxNTA0MUQwNDExMDQxMUZDMTEwNDlGCis6MjA0NjgwMDAxMDAwMTAwMDE3RkVGRDEwMTExMDMxMTAzOTEwNTUxMDU1MTA1MTEwOTExMDExMTAxMjEyMTIxMjE0MEUxMDAwQzYKKzoyMDQ2QTAwMDEwODAxMEMwMTA4MEZERkMxMTA0MzIwNDM4MDQzNDg0NTQ0NDUwNDQ5MDA0MTAwNDEwMDQxMDE0MTAwODAwMDBBRQorOjIwNDZDMDAwMTAwMDExRjgxMDA4RkUwODEwMDgxMDA4MzlGODM1MDA1NTAwNTEwMDkxMDAxMTAwMTEwMjExMDIxMEZFMTAwMDgxCis6MjA0NkUwMDAxMDAwMTAwMDEzRkNGRDA0MTE0NDMxMjgzOEE4MzQ5MDU0NTA1MDIwOTAyMDEwNTAxMDg4MTEwRTE2MDQxMDAwMzMKKzoyMDQ3MDAwMDEwMDAxM0Y4MTAwOEZEMDgxMTA4MzEwODM5MDgzNUZFNTQwMjUwMDI5M0ZBMTAwMjEwMDIxMDAyMTAwQTEwMDQwMgorOjIwNDcyMDAwMTAwMDExRkUxMTIwMTEyMEZEMjAxMTIwMzlGQzM1MjQ1NTI0NTEyNDkxMjQxMjQ0MTI0NDE0OTQxMTA4MDAwMDBDCis6MjA0NzQwMDAxMDAwMTIyMDEyMjAxMjIwRkUyMDEyMjAzQkJFMzYyMDUyMjA1MjIwOTIyMDEyMjIxMkEyMTMyMjEyMUUxMDAwMjEKKzoyMDQ3NjAwMDEwMjAxMDIwMTAyMDEwMjBGRDI4MTEyNDNBMjIzNDIwNTAyNDUwMjQ5MDA4MTAxMDEwMjAxMEMwMTcwMDAwMDBCOAorOjIwNDc4MDAwMDEwMDAxMDA3RkZDMDM4MDA1NDAxOTMwNjExQzAxMDgxRkYwMTAxMDEwMTAxRkYwMTAxMDEwMTAxRkYwMTAxMDM4Cis6MjA0N0EwMDAxMDIwMTAyMDEwMjAxMDIwRkRGQzExMjQzOTI0MzU1NDU1NEM1MTg0OTEwNDExMDQxMTA0MTEwNDExMTQxMTA4OUQKKzoyMDQ3QzAwMDEwMDAxMUZDMTEwNEZENDQxMTQ0MzE0NDM5NDQ1NTQ0NTU2NDkxNjQxMDYwMTBBMDEwQTIxMTIyMTYxRTEwMDA4RgorOjIwNDdFMDAwMTA4MDEwODAxMDgwRkRGRTExMjAxMjIwMzgyMDM0MjA1M0ZFNTAyMDkwMjAxMDIwMTAyMDEwMjAxMDIwMTAyMDlFCis6MjA0ODAwMDAxMTAwMTEwODExMENGRDE4MTEyMDMxNDAzQkZFNTUwMDUxNDA5MTIwMTEyMDExMTAxMTE4MTE0RTExODQxMTAwNEEKKzoyMDQ4MjAwMDEwMDAxMTEwMTExMEZEMTAxMTEwMTExMDM5MTAzNTEwNTExMDUxQTg5MjY4MTIyODE0NDQxODg2MTMwNDEwMDA5RQorOjIwNDg0MDAwMDEwMDAyMDAxRkYwMTIxMDExMTAxMTMwMTAwMDFGRkMwMTA0N0ZGNDAzODQwNTRDMTkzMDYxMUMwMTA4MDEwMDc3Cis6MjA0ODYwMDAxMDQwMTAyMDEwMjBGREZFMTA0MDEwNDAzODQwMzQ3QzU0NDQ1MDQ0OTA4NDEwODQxMTA0MTIxNDE0MDgxMDAwOEEKKzoyMDQ4ODAwMDEwMDAxMUZDMTEyNEZEMjQxMTI0MzkyNDM1RkM1NTAwNTEwMDkxMDAxMTAwMTEwMDExMDIxMTAyMTBGRTEwMDA0NQorOjIwNDhBMDAwMTAwMDEzRjgxMDEwMTBBMEZDNDAxMDQwMzdGRTM4NDQ1NDQ4NTA0MDkwNDAxMDQwMTA0MDEwNDAxMTQwMTA4MDAzCis6MjA0OEMwMDAwMTAwMDEwMDdGRkMwMzQwMDUzMDE5MUM2MTA4MUZGMDAwMDBGRkZFMDEwMDExMTAzMTBDQzEwNjA1MDQwMjAwMDgKKzoyMDQ4RTAwMDEwOTAxMDkwMTA5MDEzRkU3QzkwMTA5MDNCRkMzNDQ0NTQ0NDUwNDQ5MDQ0MTA1NDEwNDgxMDQwMTA0MDEwNDBDMAorOjIwNDkwMDAwMTAwMDEzRkUxMDQwRkU0MDEwNDAzMDgwMzg4MDU1RkM1NTg0OTI4NDE0ODQxODg0MTA4NDEwRkMxMDg0MTAwMDc4Cis6MjA0OTIwMDAxMDgwMTA5MDEwODhGQzgwMTNGRTMwQTAzOEEwNTRBNDU0QTQ5MTI4MTEzMDEyNjAxMkEyMTQyMjE4MUUxMDAwRUUKKzoyMDQ5NDAwMDEwMDAxM0ZFMTI0MDEyNDBGRTdDMzI4ODNBOTA1NzEwNTIyMDkyMzAxMjQ4MTI4NDEzMDQxMjAwMTNGRTEwMDBCRgorOjIwNDk2MDAwMTAwMDEzRkUxMDIwRkMyNDExMjQzMEE4MzhCMDU0MjA1N0ZFOTAyMDEwMjAxMDIwMTAyMDEwMjAxMDIwMTAyMDM4Cis6MjA0OTgwMDAxMDQwMTA0MDEwN0VGQzQwMTA0MDMxRkMzOTA0NTUwNDU1MDQ5MUZDMTEwMDEyMDAxMjAwMTQwMDE4MDAxMDAwNDMKKzoyMDQ5QTAwMDEwMDAxMUZDMTEyNEZGMjQxMTI0MzlGQzM1MjQ1NTI0NTFGQzkwMjAxMDIwMTAyMDEwMjAxMDIwMTAyMDEwMjAyOQorOjIwNDlDMDAwMTAwMDExRjgxMTA4RkQwODExRjgzMDAwM0JGRTU0ODA1NDgwOTBGODEwMDgxMDA4MTAwODEwMDgxMDI4MTAxMDQ2Cis6MjA0OUUwMDAxMDIwMTAyMDEwMjBGQzIwMTNGRTMyMjIzQTIyNTYyMjUzRkU5MjIyMTIyMjEyMjIxMjIyMTNGRTEyMDIxMDAwRkMKKzoyMDRBMDAwMDEwMDAxMUZDMTEwNEZEMDQxMTA0MzEwNDM5MDQ1NUZDNTQwMDkwMTAxMDg4MTBDNDExMDYxMjAyMTQwMjEwMDBEQQorOjIwNEEyMDAwMTAxQzExRTAxMTAwRkQwMDExMDAzMUZFMzkxMDU1MTA1NTcwOTExODExMTYxMjEyMTIxMDE0MTAxODEwMTAxMDE2Cis6MjA0QTQwMDAxMDFFMTNFMDEyMDBGRTAwMTNGRTNBMDAzNkY4NTI4ODUyODg5Mjg4MTJBODEyOTAxNDgyMTQ4MjE4N0UxMDAwQjAKKzoyMDRBNjAwMDEwNDAxMDQwMTBBMEZDOTAxMTE4MzI0RTM4MjQ1NDIwNTFGQzkwMDgxMDEwMTEyMDEwQzAxMDYwMTAzMDEwMjBGQgorOjIwNEE4MDAwMTA4MDEwQzAxMDgwMTFGQ0ZEMDQzMjA0MzlFNDU1MjQ1NTI0OTEyNDExRTQxMDA0MTAwNDEwMTQxMDA4MDAwMEM1Cis6MjA0QUEwMDAxMDAwMTAzQzExRTBGRDIwMTEyMDMxMjAzOUZFNTUyMDU1MjA5MTEwMTExMDExNEExMThBMTEyNjEwMTIxMDAwQzgKKzoyMDRBQzAwMDEwMUMxMUUwMTEyMEZEMjAxMTIwMzkyMDM1MjA1MUZFNTAyMDkxMjgxMTI0MTIyNjE0MjIxMDIyMTBBMDEwNDAzRgorOjIwNEFFMDAwMTA0MDEwMjAxM0ZFRkUwNDEyMDgxMDgwMzg4MDM0OEM1NEIwNTBDMDkwODAxMDgwMTA4MjEwODIxMDdFMTAwMDhCCis6MjA0QjAwMDAxMDAwMTAwMDEzRkMxMTA4RkM5MDEwNjAzMDYwMzk5ODU2NEU1MDQ0OTA0MDEzRkMxMDQwMTA0MDE3RkUxMDAwMTQKKzoyMDRCMjAwMDEwNDAxMDQwMTA0NEZERkMxMDQ4MTNGRTM4MjAzNDQwNTBGQzUxNDA5NjdDMTAwNDEwMDQxMDA0MTAxNDEwMDhFQworOjIwNEI0MDAwMTA0MDEwNDAxMDQ0RkRGNDEwNDgzMDUwM0JGRTU0NDA1MDgwOTE4QzEyRjAxQzgwMTA4MjEwODIxMDdFMTAwMDdFCis6MjA0QjYwMDAwMDAwMTAwMDEzRkUxMDkwMTA5MEZDOTAxMDkyM0E5NDM1OTg1MDkwNTA5MDkwOTAxMDkwMTA5MDE3RkUxMDAwQzYKKzoyMDRCODAwMDEwNDAxMDQwMTNGRTEwNDBGQzQ0MTAyODM4MzIzNUNBNTAwNjU3RkU5MTIwMTEyMDEyMjIxMjIyMTQxRTEwMDBGQworOjIwNEJBMDAwMTAwMDEzRkUxMDQwRkM0MDEwODgzODg0MzVGRTUwMjQ1MDIwOTFGQzEwMjAxMDIwMTAyMDEwMjAxM0ZFMTAwMDZGCis6MjA0QkMwMDAxMDIwMTAyMDEwM0UxMDIwRkMyMDExRkMzOTA0MzUwNDUxMjQ1MTI0OTEyNDExMjQxMDUwMTE4QzE2MDYxMDAyNTkKKzoyMDRCRTAwMDEwNDAxMDQwMTI0NDExNDhGRDUwMzg0MDM3RkU1NEEwNTBBMDkwQTAxMEEwMTEyMjExMjIxMjIyMTQxRTEwMDBDQworOjIwNEMwMDAwMTAyMDEyMjQxMjI0MTIyNEZCRkMxMDAwMzNGQzM4MDQ1NDA0NTNGQzkyMDAxMjAwMTIwMjEyMDIxMUZFMTAwMEJFCis6MjA0QzIwMDAxMDBDMTc3MDExMTBGRDEwMTIxMDNBRkUzNzkwNTA5MDUwOTA5NTEwMTM3QzExMDAxMjgwMTQ2MDE4MUUxMDAwMzEKKzoyMDRDNDAwMDEwMUMxMUUwMTAyMEZFMjAxMDIwMzNGRTM4MjAzNDIwNTFGQzUxMDQ5MTA0MTEwNDExMDQxMUZDMTEwNDAwMDA1OQorOjIwNEM2MDAwMTAwMDEwNDAxMTlDMTEwNEZEMDQzMTA0MzkwNDU1REM1NTA0OTEwNDExMDQxMTA0MTEwNDExRkMxMTA0MTAwMDBGCis6MjA0QzgwMDAxMEEwMTBBMDExMjQxMTI4RkIzMDExNjAzOTIyMzUxRTU0NDA1MDQwOTdGRTEwNDAxMDQwMTA0MDEwNDAxMDQwQjMKKzoyMDRDQTAwMDIwMDAyMTAwMjE3RUZBMDAyNTAwNzEwMDZBRkU2QTA4QTYwODJBMDgyMjA4MjIwODIyMDgyMjA4MjIyODIyMTBBNgorOjIwNENDMDAwMTA0MDEwNDAxMEEwRkM5MDExMDgzQUY2MzQwMDUwMDA1N0ZFOTA0MDEwODAxMDkwMTEwODEzRkMxMDA0MTAwMDhBCis6MjA0Q0UwMDAxMDIwMTAyMDFFRkMyMjIwMjRBMDU1RkUwODIwMTAyMDIxMjA3RkZFMDM4MDA1NDAwOTMwMzEwRUMxMDQwMTAwQzUKKzoyMDREMDAwMDAyMDAwMTAwRkZGRTA0NDAxNDUwMjQ0QzQ0NDQwNTQwMDEwMDdGRkUwMzQwMDUyMDE5MThFMTBFMDEwNDAxMDBBMgorOjIwNEQyMDAwMDEwMDExMTAwOTMwMDU0MDNGRjgwMjAwN0ZGQzA4NDAzMTMwREZFRTAzODQwNTYwMTkxODYxMEMwMTA0MDEwMDE5Cis6MjA0RDQwMDAxMDQwMTAyMDEzRkUxMjA0RkU0MDM4NjAzNDQwNTNGRTUwODg5MDg4MTE4ODEwNTAxMDMwMTBDODE3MDYxMDAyRTEKKzoyMDRENjAwMDEwMDAxM0ZDMTA0NEZDNDQxMDQ0MzI1NDM5NEM1NDQ0NTA0QzkxNTQxMjY0MTQ0NDEwNDQxMDQ0MTE1NDEwODg5NQorOjIwNEQ4MDAwMDgyMDA4MjBGRkZFMTgzMDFDNjgyQUE2Q0IyMDA4MDAwN0UwMDQyMDA2MjAwNUEwMDRBMjA4MjIzMDFFMDAwMDQzCis6MjA0REEwMDAxMDIwMTEyMDExMjAxMUZDRkQyMDEyMjAzODIwMzdGRTU0MDA1MDAwOTFGQzExMDQxMTA0MTEwNDExRkMxMTA0RTYKKzoyMDREQzAwMDEwM0MxM0MwMTAwMEZDNDQxMTI4Mzg5MDM1RkM1MDA4NTAxMDkwMjAxN0ZFMTAyMDEwMjAxMDIwMTBBMDEwNDAyNQorOjIwNERFMDAwMTA4MDEwRjgxMTEwMTEyMEZCRkMxMTI0MzkyNDM1RkM1MTI0NTEyNDkxRkMxMTI0MTIyNDEyMjQxNDE0MTAwOEI3Cis6MjA0RTAwMDAxMDQwMTAyMDEzRkNGRDA4MTA5MDM4OTAzNDIwNTNGRTUwMjA5MDIwMTNGRTEwMjAxMDIwMTAyMDEwMjAxMDIwRDAKKzoyMDRFMjAwMDIwMTAyMjEwMjExMDIxMTBGODU0MjQ1NDcyOTI2ODEyQTExMEExMTQyMjA0MkUwODIyMDgyMjEwMjI2MDIxODAyQgorOjIwNEU0MDAwMTAwMDEzRjgxMDA4RkRGODEwMDgzQkY4MzQwMDUwNDA1MjQ0OTI1ODE2NjAxMEEwMTA5ODExMEUxNjA0MTAwMDg0Cis6MjA0RTYwMDAxMDQwMTA0MDEzRjRGQzQ0MTA0ODM3RkUzODIwNTQ0MDUxRjg5MzA4MUQwODExRjgxMTA4MTEwODExRjgxMTA4NkMKKzoyMDRFODAwMDA4MTAwODEwN0VGRTFDMzgyQTU0Qzk5MjA4MTAwMjQwMEMyMDMwMThERkVFMDIyNDA0MjAxODIwNjBBMDAwNDBEQworOjIwNEVBMDAwMTA0MDEwNDAxMUZDRkM0MDEzRkUzODA0MzUyMDUwQTA1MjIwOTEyMDE3RkUxMDIwMTAyMDEwNTgxMThFMTYwNEJFCis6MjA0RUMwMDAxMDAwRkVGQzEwODAyODgwN0VGRTA4OTBGRTkwMDkxMDBCMTAwMTAwRkZGQzAzODAwNTYwMTkxRUUxMDgwMTAwQjUKKzoyMDRFRTAwMDEwMjAxMDIwMTAzRTEwMjBGREZDMTEwNDM5RkMzNTA0NTFGQzUwMjA5MDIwMTdGRTEwMjAxMDIwMTAyMDEwMjAxNgorOjIwNEYwMDAwMTAwMDEzRkUxMjUyRkU1MjEyNTIzM0ZFMzg4MDU0ODA1MUZFOTI4NDE0NDgxMDMwMTAyMDEwNDAxMTgwMTYwMDczCis6MjA0RjIwMDAyMDAwMjNGQzIwNDBGODQwMjdGRTcxNDg2OTQ4QTdGRUExNDgyMTQ4MjdGRTIwNDAyMDQwMjA0MDIzRkMyMDAwOTAKKzoyMDRGNDAwMDEwNDAxMDIwMTNGRUZDMDAxMDAwMzFGQzM5MDQ1NTA0NTFGQzkwMjAxMTI4MTEyNDEyMjYxNDIyMTBBMDEwNDAxOAorOjIwNEY2MDAwMTA0MDE3RkUxMDAwRkRGODExMDgzOUY4MzQwMDUxRjg1MDEwOTAyMDEzRkUxMDIwMTAyMDEwMjAxMEEwMTA0MDRGCis6MjA0RjgwMDAyMDEwMjcxMDIxN0MyMjE0RkFGRTI0MTQ3NzdDNjkxMEExN0NBOTEwMjU3RTIyMTAyMzEwMjREMDI4M0UyMDAwRTMKKzoyMDRGQTAwMDEwNDAxMDQwMTFGOEZDNDgxM0ZFMzA0ODM4NDg1NUY4NTA0NDkzNDgxMEYwMTE1MDE2NEMxMDQ0MTE0MDEwODA0NworOjIwNEZDMDAwMTAwMDEzRkMxMjA0RkEwNDEzRkMzQTIwMzYyMDUzRkU1MjIwOTIyMDE1RkMxNTA0MTUwNDE5MDQxMUZDMTAwMEVECis6MjA0RkUwMDAyMDQwMjdGQzIwNDBGQkY4MjA4MDY3RkU3MTEwQUEwOEE1RjYyMDQwMjdGQzIwNDAyMEEwMjMxMDJDMUMyMDA4QzIKKzoyMDUwMDAwMDIxMDgyMTA4MjdGRUY5MDgyMUY4NzEwODY5RjhBMTA4QTEwODJGRkUyMjkwMjI4ODIzMDQyMjAwMjNGRTIwMDBDMAorOjIwNTAyMDAwMTAyMDEwMjAxM0ZFRkM0MDEwODAzQkZFMzY4QTUyNTI1M0ZBOTIyMjEzRkExMjIyMTIyMjEyMjIxMjJBMTIwNDlBCis6MjA1MDQwMDAyMDQwMjA0MDIzRkMyMDYwRjhEODIxNEU3NjQ0NjlGOEExMDhBMUY4MjEwODIxRjgyMTA4MjAwMDI3RkUyMDAwODUKKzoyMDUwNjAwMDEwNDAxMDQwMTdGRTEwNDBGQkZDMTM1NDNBRTQzNjQ0NTNGQzUwQzA5MTYwMTE1ODEyNEUxNDQ0MTA0MDEwNDAyNAorOjIwNTA4MDAwMTA5MDEyOTAxMkJFRkVEMDEyODgzODAwMzdGODUyMDg1MjQ4OTI0ODEyNDgxMjY4MTBBMjEzMjIxQzFFMTAwMDVDCis6MjA1MEEwMDAxMDAwMTFGODExMDhGREY4MTAwMDM3RkUzOTA4NTVGODUxMDg5MUY4MTEwODExM0UxN0M4MTAwODEwMDgxMDA4ODUKKzoyMDUwQzAwMDEwMDAxMEZDMTA4NDEwODRGQzg0MTBGQzM4ODQzNDAwNTNERTUyNTI5MjUyMTI1MjEyNTIxM0RFMTI1MjEwMDAyQQorOjIwNTBFMDAwMjAwMDIwRkU3RTgwNDhGQzg4ODQ3RUZDMDg4MDE0ODA2MkZFMDEwMEZGRkUwMzgwMDU2MDE5MUVFMTA0MDEwMDJCCis6MjA1MTAwMDAyMDEwMjExMDI2MTAyMjEwRkExMjJGOTI2MjU0NzIzOEE3MTBBNjkwMkExMDJBMjgzMjI4MjI0NDIyODYyMzA0OTEKKzoyMDUxMjAwMDIwODAyMzNDMjIyNDIyMjRGQkE0MjI0NjcyMDA2QkJDQTIyNEEyMjQyMzk0MkUwODIyMTgyMjI0MjJDNjIyMDA0MQorOjIwNTE0MDAwMjAyMDI0MjAyMjQwMjJGOEY4ODgyMDg4NzBGODZFODBBMkZDQTI4NDIyODQyMkZDMjIwMDI1MDAyOEZFMjAwMEJDCis6MjA1MTYwMDAxMDQwMTAyMDEzRkMxMTA4RkM5MDEwQTAzQkZFMzQyMDUwMjA1MUZDOTAyMDExMjgxMTI0MTIyNDEwQTAxMDQwQUQKKzoyMDUxODAwMDEyMDAxMTNFMTAwMjEyMDJGQUZBMTI4QTNBRkEzNjAyNTIwMjUyRkE5MjhBMTI4QTEyRkExMjAyMTIwQTEyMDRFMgorOjIwNTFBMDAwMTEwODEwOTAxMDYwRkJGQzEwNDAzQkZDMzQ4MDU3RkU1MDgwOTEwMDExRkMxMjIwMTQyMDEwMjAxM0ZFMTAwMDFBCis6MjA1MUMwMDAyMDg4MjQ4QzIyNDhGOTUwMjdGRTcxMjA2OTEwQTI0OEFERjYyMDQwMjA0MDI3RkMyMDQwMjA0MDIwNDAyMDQwQTUKKzoyMDUxRTAwMDEwNDAxMDIwMTNGRTEyMDRGODAwMTNGQzM4MDAzNUY4NTEwODUxRjg5MTA4MTFGODEwMDAxN0ZFMTAwMDEwMDAxMworOjIwNTIwMDAwMTAwMDExRkUxMTIyRkQyMjExRkUzMTAwMzlGRTU1ODI1MUZFOTI4MjEyRkUxMjgyMTQ4MjE0RkUxODgyMTAwMDc2Cis6MjA1MjIwMDAyMDAwMjdGQzIxMDgyMTEwRjkzQzIxMDQ3MkY0NkE5NEEyNjRBNDk0MjkwODIzRkMyMkE0MjJBNDIyQTQyRkZFMDYKKzoyMDUyNDAwMDIwNDAyMDQwMjNGQzIwNDBGQkY4MjA4MDc3RkU2OTEwQTJFOEFDNDYyM0Y4MjBEMDIzNEMyQzQ0MjA0MDIwNDA2OAorOjIwNTI2MDAwMjAwMDI3RkUyNDUwRkM1MDI3REU3NDUwNkM1MEE3REVBNDUwMjQ1MDI3REUyNDUwMjQ1MDI0NTAyN0ZFMjAwMDExCis6MjA1MjgwMDAxMDAwMTFGQzExMDRGREZDMTEwNDM5RkMzNDAwNTNERTUwNDI5MTRBMTBDNjExNEExMjUyMTA0MjExNEExMDg0RjEKKzoyMDUyQTAwMDExNDAxMTIwMTNGQ0ZBMjAxN0Y4M0EyMDM3Rjg1MjIwNTNGQzkyNDAxMDQwMTdGRTEwNDAxMDQwMTA0MDEwNDA3MworOjIwNTJDMDAwMjEwNDIyMDQyN0M0MjQ0NEY0NUUyN0M0NzQ0NDZGRDRBNDRDQUZDNDIwQzQyMTQ0MjY0NDM4NDQyMTU0MjA4ODQ5Cis6MjA1MkUwMDAxMDQwMTNGODEyMDhGQkY4MTIwODNCRjgzNDQwNTdGRTUwQTA5MTE4MTY0NjEzRjgxMDQwMTA0MDEwNDAxMDQwRjAKKzoyMDUzMDAwMDIwNDAyN0ZFMjAwMEY5RjgyMTA4NzdGRTY5MDhBMUY4QTBDMDIwQTQyMTI4MjMxMDJEMDgyMTRFMjE4NDIxMDA0NQorOjIwNTMyMDAwMTA0MDEwMjAxM0ZFMTAwMEZDRjgxMDg4MzhGODM0MDA1M0ZFNTIwMjkyRjIxMjkyMTJGMjEyMDIxMjBBMTIwNEM1Cis6MjA1MzQwMDAxMTAwMEEzQzNGQTQwNDNDMTUyNDFGM0MwNDI0MDg1NDExMDgwMTAwN0ZGRTAzODAwNTQwMTkzMDYxMUMwMTA4OEQKKzoyMDUzNjAwMDEwNDAxMDIwMTNGRTEyMDRGODMwMTFDMDM5MDAzNUZDNTExMDUxMTA5N0ZFMTAwMDExMTAxMjBDMUMwNDEwMDA0RAorOjIwNTM4MDAwMjA0MDIwMjAyM0ZFRkEwNDIwOTA3MTA4NkE0NEEwNDBBMEEwMjMxODJERjYyMTEwMjExMDIxMTAyMUYwMjExMDI0Cis6MjA1M0EwMDAxMDIwMTQyMDEyRkUxMDI0RkMyODExRkUzRTEwMzYyMDUyN0M1MkM0OTM0NDEyN0MxMjQ0MTM0NDEyN0MxMDQ0OTYKKzoyMDUzQzAwMDEwMDAxM0ZDMTIwNEZGRkMxMjIwM0FBNDM2Njg1MkZDNTI4NDkyRkMxMjg0MTRGQzE0ODQxODg0MTA5NDEwODgyNworOjIwNTNFMDAwMTExMDExMTAxN0ZFMTExMEZERjAxMDQwM0JGQzM2NDQ1M0ZDNTA0MDkzRkMxMDQwMTNGQzEwNDAxN0ZFMTAwMDA1Cis6MjA1NDAwMDAxMDIwMTAyMDExRkMxMDIwRkNBODEwNzAzQkZFMzQwMDUxRkM1MTA0OTE3NDExNTQxMTc0MTEwNDExRkMxMTA0OTYKKzoyMDU0MjAwMDIwMTAyMDE4MjAxNEY3RkUyNDkwNzQ5MDZDRjRBNDk2QTdGNDI0OTQyNUM4MjZBODI4OUEyOEE2MzI4NjIxMDIxMAorOjIwNTQ0MDAwMTFGQzEwMjAxM0ZFRkEyMjExQUMzODIwMzVBQzUwMDA1MUZDOTAwMDEzRkUxMDQwMTA3QzEwMDQxMDE0MTAwODgyCis6MjA1NDYwMDAxMDIwMTEyNDEwQTgxM0ZFRkEwNDEwMDAzOEY4MzQ4ODUwODg1MEY4OTAyMDExRkMxMDIwMTAyMDE3RkUxMDAwQTIKKzoyMDU0ODAwMDA0NDQyOUZDMTA0ODZCRkUwQzQwMTRGODY1ODgwNkY4Mjg4ODExRjgwMTAwN0ZGRTA1NjAxOTE4RTEwRTAxMDREQQorOjIwNTRBMDAwMjIwNDIyMDQyM0M0RjQ5NDI3Q0M3NTQ0NkQ2NEE3RDRBNTQ0MjU3RTI3QzQyNTQ0MjU0NDI5NDQyOTQ0MzBDNDIyCis6MjA1NEMwMDAyMDEwMjc5MDIxMTAyMTEwRjdERTIyQTQ3M0E0NkFENEEzOTRBMjk0MjJDODIzODgyQzhDMjA5NDIwQTYyMEM0N0IKKzoyMDU0RTAwMDIyMTAyMjE4MjIxNEY3OTAyMjdFNkZEMDcyNTJBQTRDQTNDODJBNUEyQTQ2MkE2NjJBNDIyRTAwMzFGRTIwMDAxMgorOjIwNTUwMDAwMTIyMDdGMjAxMjdFNDA0ODdGQTg0MTEwQkQxODI1MjQzRDQ0MDMwMDAwODA3RkZFMDFDMDAyQjAwQzhFMzA4NENBCis6MjA1NTIwMDAwMTAwN0ZGQzAxMDAxRkYwMTExMDdGRkU0MDA0MUZGMDA4MDAxRkYwNjgxMDBGRjAwMTAwN0ZGQzAzQzAxRDM4Q0MKKzoyMDU1NDAwMDIwMDAyN0ZFMjQwMDI2NDhGRDQ4MjQ4ODc3RkU2QzkyQTZBQ0E2QTgyN0U4MjQ4ODI1MDgyOTE0MkEyMjM0QzIwOQorOjIwNTU2MDAwMTBBMDEwOTAxMTEwMTFGRUZCMjAxMUZDMzkyMDM1RkM1MTIwNTEyMDkxRkUxMDAwMTJBNDEyNTIxNDUyMTAwMEU4Cis6MjA1NTgwMDAyMDQwMjA2MDIxOTgyNjQ2RjFGMDIwQTA3MjQ4NkFBOEEzRjhBMDQwMjdGQzI0QTQyNUY0MjQxNDI0MDQyNDBDOEEKKzoyMDU1QTAwMDEwODAxMEY4MTExMEZCRkMxMTI0MzlGQzM1MjQ1MUZDNTAwMDkzRkUxMDAwMTFGQzExMDQxMUZDMTEwNDExRkNFOQorOjIwNTVDMDAwMTExMDEwQTAxN0ZFRkNBMDEzRkMzQUE0MzcxQzUzRkM1MjA0OTNGQzEwMTAxN0ZFMTExMDExMTAxMDUwMTAyMENFCis6MjA1NUUwMDAxMDAwMTNGQzEyMDRGQkZDMTJBODNBNzAzNkFDNTIwMDUyQTA5MkZDMTMyMDE1RkUxNDIwMTgyMDEwMjAxMDIwNTUKKzoyMDU2MDAwMDExRkMxMDA4MTAzMDEzRkVGQzU0MTE5MDM4MzAzN0ZFNTI5MjUyOEU5MzcyMTI1MjEyNzIxMjAyMTIwQTEyMDQ4RgorOjIwNTYyMDAwMjAyMDIyM0MyMjI0RkE3ODI1MDg3N0ZFNkEyMEE0NjJBRUI0MjA0ODIyOTgyNDJDMjg0QTIxODgyMDI4MjAxMDdCCis6MjA1NjQwMDAxMDAwMTFGQzEwMjAxM0ZFRkEyNDExQUMzODIwMzVBQzUwMDA1MUZDOTEyNDExRkMxMTI0MTEyNDExRkMxMTA0RUQKKzoyMDU2NjAwMDEwODAxMEY4MTExMEZCRkUxMjg4MUIyNjM2MTAzM0ZFNTIwMDUyRkM5MjAwMTJGQzE0MDAxNEZDMTg4NDEwRkMxQQorOjIwNTY4MDAwMTA0MDE3RkUxMDAwRkJGQzEyMDQzQUY0MzY5NDUzRkM1MDAwOTNGODEwMDAxN0ZFMTA0MDEyNDgxMjQ2MTRDMjY5Cis6MjA1NkEwMDAwMDIwM0UxMDIyRkUzRTI4MjBGRTNFMTA1MjdDNUUxMDgxMTAwMTAwN0ZGRTAzNDAwNTMwMTkwRTYxMDQwMTAwM0EKKzoyMDU2QzAwMDEwMjAxM0ZFMTIwNEZEMDAxMUQwM0E2NDM1OTg1MzA4NTJGNjk0MDAxM0ZDMTAyMDExMjgxMTI0MTJBNDEwNDA0MAorOjIwNTZFMDAwNDIyMDIyMjgyNDI0RkYyNDI4MjBGRUZFQUEyMEFBMjBBQTUwQ0U1MDgyNTBCQTg4ODI4OEZGMEM4MjA2MDQwNEVBCis6MjA1NzAwMDAwODQwN0Y0MDA4N0U3Rjg4MDk0OEZGMzAxMDI4M0U0NDRBQTA4NTEwRkZGRTAyNDAwNDIwMDgxODMwMEVDMDA0QjcKKzoyMDU3MjAwMDAwMDBGRUYwMTA5MDEwOTIzQzkyMjUwRTY2MDA1NUZDODg4ODA4OTAxMDUwMTAyMDIwNTg0MThFOEUwNDAwMDA3MAorOjIwNTc0MDAwMDAwMEZFRjgxMDg4MTA4ODIwODgzRUY4NDQ4ODY0ODg5ODg4MDhGODEwODgxMDg4MjA4ODQwODg4N0ZFMDAwMDQ4Cis6MjA1NzYwMDAwMDgwMDA4MDdFRkUxMTAwMTJGODNFMTAyMjIwNDRGQzY0NTQ5ODU0MDg5NDExMjQyNjQ0NDE4NDg2MTQwMDA4N0MKKzoyMDU3ODAwMDAwMjBGRTIwMTAyMDEwNTAzRTg4MjMyRTQ0NDQ2NDgwOUIxMDA4MjAxMEM0MTcwODIwMzA0MEMwOEYwMDAwMDAxMworOjIwNTdBMDAwMDAwMEZERkMxMTA0MTFGQzIwMDAzREZDNDUwNDQ1MDRBOTI0MTkyNDExMjQyMTU0NDA0ODgxODQwNjA0MDAwMDk4Cis6MjA1N0MwMDAwMDIwRkUyMDEwNjAxMDUwM0M4ODI1MEM0NkY2NjQwMDk4NDQwOTQ0MTEyODEwQTgyMDkwNDdGRTgwMDAwMDAwOTcKKzoyMDU3RTAwMDAwMUM3REUwMTA0NDExMjgzRTkwMjNGQzQyMDg2NDEwOTQyMDBCRkUwODIwMTAyMDIwMjA0MDIwODBBMDAwNDBFMworOjIwNTgwMDAwMDA4OEZFNDgxMDUwMTFGQzFEMjQyNUZDMjUyNDU1MjQ4OUZDMDgyMDEwMjAxN0ZFMjAyMDQwMjA4MDIwMDAyMEQ3Cis6MjA1ODIwMDAwMDAwRkRGQzIwMDgyMDEwMzgyMDRCQkU0QUEyNEFCNEFBQTgxMkFDMTNCMjIwMjAyMDYwNDAwMDhGRkUwMDAwNkEKKzoyMDU4NDAwMDAwNDAwMDIwRkJGRTIyMDQyMDE4M0RFMDQ1MDA0OUZDQTkxMDExMTAxN0ZFMjAwMDIwOTA0MTA4ODYwQzAwMDA1MAorOjIwNTg2MDAwMDAwMDAwMjBGREZFMjAyMDIwRkMyMDAwM0RGRTQ1MDQ2NEZDNTgwMDg4RkMxMDg0MTBGQzIwNDg0MDUwODNGRUI4Cis6MjA1ODgwMDAxMDAwMTAwMDdGRkMxMDI0MjgyNDI4QTQ0OEE0RkVBNDQ4QTQwOTI0MUU0NEU4NDQwODg0MDg4NDA5MTQwQTA4QTUKKzoyMDU4QTAwMDEwMDAxMDAwRkRGRTIxMDAyMTdDNTE0NDkxNDRGRDQ0MTE0NDExNTQxRDQ4RjE0MDUyNDIxMjQyMTQzRTEwMDBDQQorOjIwNThDMDAwMTAyMDEwMjBGRTIwMjAyMDJCRkU0ODIwNDgyMEZFMjAwOUZDMDkwNDFEMDRFOTA0MDkwNDA5RkMwOTA0MDgwMEFDCis6MjA1OEUwMDAyMDAwMzAwMDIxRkVGRTA4MjAwODUxRTg1MTI4RkQyODExMjgxMUU4MUQyOEYwMDgxMDA4MTAwODEwMjgxMDEwM0QKKzoyMDU5MDAwMDEwMjAxMDIwRkUzRTIwMjAyOEZDMjg4NDQ4ODRGRTg0MDhGQzBFODAzODgwQzg4MDA4ODAwOTAwMDkwMDBBMDA1NworOjIwNTkyMDAwMTAwMDEwMDBGRUZDMjA4NDUwODQ1MDg0OTA4NEZFODQxMEZDMUUwMEYwNDgxMDQ0MTA4NDEwODIxMTAyMTIwMDZBCis6MjA1OTQwMDAxMDIwMTAyMEZEMjAyMTIwNTFGQzUyMjA5MDIwRkRGRTEwMjAxMDIwMUU1MEYwNTAxMDg4MTEwQzEyMDYxNDA0MkMKKzoyMDU5NjAwMDIwMjAzMDIwMjA1MEZFODgyMTI2MjIzNDQ4NDBGRTkwNDkxODA4MjQwRUM2RjkwODA4MzAwOEMwMEIwMDA4MDA3OQorOjIwNTk4MDAwMTAwMDEwMUVGRkUwMTAyNDIxMjYyOEE0NDhBOEZFMjA0OUZFMDgyMDFFMjBFODIwMDgyMDA4MjAwOEEwMDg0MEEwCis6MjA1OUEwMDAyMDAwMjAzQ0ZEQzAyMTAwMjEyMDUxMjA1MTIwRkRGRTEwMjAxMDI4MUQyNEYxQTIxMjIyMTQyMDEwQTAxMDQwQ0IKKzoyMDU5QzAwMDEwMDAxMUZDRkU0NDEwNDQyMDQ0Mjg4NDQ4OTRGRDA4MEFGQzA4ODQxRTg0RTg4NDA4ODQwOEZDMDg4NDA4MDA1RgorOjIwNTlFMDAwMjAyMDIwMjgyMDI0RjgyMDI3RkU1MDIwNTAyMEZCRDAxMDkwMTA5MDFDOTBGMDhBMTBFQTE3MDYxMjAyMTAwMDUyCis6MjA1QTAwMDAxMDAwMTNGQ0ZDNDAyMDUwMjA4ODUwOUM1MUU2RkMyNDEwMjAxMUZDMUMyMEYwMjA1MDIwMTAyMDEzRkUxMDAwODYKKzoyMDVBMjAwMDEwMjAxMDIwRkU1MDIwODgyMTA0NTIwMjkxRjhGQzIwMTAyMDExRjgxQzIwRjAyMDEwMjAxMDIwMTNGRTEwMDBFQworOjIwNUE0MDAwMjA4MDIwODBGQ0ZDMjA4ODQxODg1MjUwOTAyMEZDRDAxMzBFMTFGQzFEMDhGMTA4MTEwODExRjgxMTA4MTAwMEU4Cis6MjA1QTYwMDAyMDAwMzNGRTIxNDhGRDQ4MjFDODUxNDg5MTQ4RkQ0ODExQzgxMTQ4M0Q0OEQxN0ExN0NBMTA0QTEwNDYxMDQwQTQKKzoyMDVBODAwMDA4MjAzRUZDMDgyMDdFRkUxNDIwMjI1MDQyODgzRkY4MDQwMDA5MDAxRkY4MDEwMEZGRkUwMTAwMDEwMDAxMDAzNAorOjIwNUFBMDAwMjAwMDIxRkVGRDAyMjE4NjIxNEE1MUZFRkQ0MjExMjIxMUZFMUQ0MkYxNDIxMTdBMTEwMjExMDIxMTBBMTEwNDUzCis6MjA1QUMwMDAyMDAwMjNGQ0ZDODQyMkE4NDExMDUyQTg5MDQ0RkZCQzE0QTQxMkE0M0QyOEQyOTAxMkE4MTRBNjE4NDQxMDAwNEUKKzoyMDVBRTAwMDIwQTQyMEI2RkQyNDIxNDgyMjQ0NTEzMjUxMjJGREZDMTEyNDExMjQxREZDRjEyNDExMjQxMTI0MTFGQzExMDQwOQorOjIwNUIwMDAwMjA0MDIwNDBGQkZDNDA0MDUzRjg1MDgwOTNGRUZEMDgxMkY0MTQ0MkZCRkMxMDQwMTBBMDExMTAxMjBDMTQwOEVGCis6MjA1QjIwMDAyMDQwMjAyMDIzRkNGQTkwMjI5MDUzRkM5Mjk0RkZGQzEyOTAxRTk0RjI5NjUyRDgxMjkwMTREMjE0OEUxODAwQjIKKzoyMDVCNDAwMDEwMjAxMTI0RkNBODIzRkUyMDcwNTBBODkxMjZGRDA4MTFGRTFBNDgzNjY4RDlCRTExQTgxMTA4MTIwODE0MDgyOQorOjIwNUI2MDAwMDEwMDdGRkMwMTAwMUZGMDExMTAxRkYwMTExMDFGRjAwMTAwRkZGRTAxMDAxRkYwMTAxMDEwMTAxRkYwMTAxMEJDCis6MjA1QjgwMDAwMjAwMDI0MDAyMjAwM0Y4N0UwMDAyMDAwM0ZDN0UwMDAxMTAwMTM4MDBDMDAwQzAwMzY0MEMxNDcwMEMwMDA0RDYKKzoyMDVCQTAwMDA4NDAwODUwMTQ0ODEyNDAyMTdFNDFDMEJFNDAyMjQ4MjIyQzJBMjgyNDEwMjAxMjIyMkExRTQ2MDE4MjAwMDA1NgorOjIwNUJDMDAwN0ZGQzAxMDAxRkYwMTAxMDFGRjAxMDEwMUZGMDEwMTAxRkYwMDIyMDAzRkVGRTEwMDEyMDAxQzIwRTcyNzAwRTlBCis6MjA1QkUwMDAxMDQwMTA1MEZFNDgxMDQwN0M3RTQ1QzA3QzQwNDQ0NDdDMjQxMDI4MTAxMEZFMzAxMENBMTMwQTEwMDYxMDAyRDcKKzoyMDVDMDAwMDAwMDAzRTIwMjIyODNFMjQwMDIwRkZGRTIyMjAzRTIwMjIyNDNFMTQyMzE4MkUxMEYyNkEwMzhBMDIwNjAyMDJCNworOjIwNUMyMDAwMjIyMDIyMjAyMjI4RkZBNDIyMjAzRTNFMjJFMDNFMjQyMjE2RkY5NDQwMEM1MjA4NTExQTYwMjY3RjQ2MDE4MjI3Cis6MjA1QzQwMDAwMDIwM0YyMDIxMjgzRjI0MjEyMDNGRkU0ODIwNDgyODdGMkM0ODE4QkYxMDA4MzAwRjRBNzg4QTIxMDYwMDAyMkQKKzoyMDVDNjAwMDAwMjA3RTIwMjQyODJGMjQzRDNFMzVFMDQ5MjQ1NTE2QTYxNDdGMTg1NTA4NTUxODU3QUFGODQ2MDE4MjAwMDA4MgorOjIwNUM4MDAwMDAyMDdGMjAxNDI4NTUyNDM2MjQxNDdFRkZBMDAwMjIzRTIyMjIxNDNFMTgyMjEyMjIyQTNFNDYyMjAyMDAwMENGCis6MjA1Q0EwMDAwMDI4MDAyNDFGRkU1MDIwNTdBMDU1MjQ3NTI2MTdBNEY0QTg1NzkwNTUxMDU1MzI5N0NBMjA4NjIxMDI0MDAwNkMKKzoyMDVDQzAwMDAwMDA3RUZFNDA0MDQ0NDA2NDQwNTQ3ODQ4NDg0ODQ4NTRBODUyQTg2Mjg4NDA4QTQwQUE3RUNBMDA4NjAwMDA1MgorOjIwNUNFMDAwMTAwMDExRkUxODQwMjQ0MDQyNzg5MTQ4MDg0ODA4NDg3RUE4MDRBODI4ODgxMDg4MThBQTA4Q0EwMDg2MDAwMDYyCis6MjA1RDAwMDAxMDAwMDlGRTdGNDAwMDQwMjI3ODE0NDg3RjQ4MDA2ODNFNTgyMjg4MjI4ODIyODgyMkFBM0VDQTIyODYwMDAwMzgKKzoyMDVEMjAwMDA4MEM3RjcwMDk4NjNFMTgyMjYwM0Y4NjE0MTg3RUUwMDAwMEZGRkUwODAwMEZFMDEyMjAxMUEyMTZBMjE4MUVFMworOjIwNUQ0MDAwMDQwMDQ1RkUyODQwRkY0MDkxNzhENTQ4Qjk0OEZGNDgwMDY4N0U5ODQyODg3RTg4NDI4QTQyQUE3RUNBNDI4NkQxCis6MjA1RDYwMDAzRTIwMjNGQzNFODgyMDUwN0ZGRUE0MjAzREZDMjQyMEZGRkUwODAwMEZFMDA5MjAwOEEwMDhBMjBBMjIwQzFFRUQKKzoyMDVEODAwMDAxMDAwMTAwMDEwMDAxRkMwMTAwMDEwMDNGRjgxMDEwMDgyMDA4MjAwNDQwMDI4MDAxODAwRTYwRjAxRTAwMDg4RgorOjIwNURBMDAwMDIwMDAyMDA3RkYwMDIxMDA0MTAwNDEyMDgxMjMwMEVDRkUwMDgyMDA4MjAwRkUwMDgyMDA4MjAwRkUwMDgyMDg3Cis6MjA1REMwMDAwMDAwMUZGODEwMDgxRkY4MTAwODEwMDgxRkY4MDIwMDAyMDA3RkYwMDQxMDA0MTAwODEyMTAxMjYwMEUwMDAwRjEKKzoyMDVERTAwMDAwMDA3REZDNDQyMDQ0MjA0NDIwN0MyMDQ0MjA0N0ZFNDQyMDQ0MjA3QzIwNDQyMDAwMjAwMDIwMDAyMDAwMjA3MQorOjIwNUUwMDAwMDAwMDFGRjgxMDA4MUZGODEwMDgxRkY4MDAwMDNGRkMwMTAwMDEwMEZGRkUwMjgwMDQ0MDE4MzBFMDBFMDAwNEQzCis6MjA1RTIwMDAxRkYwMTAxMDFGRjAxMDEwMUZGMDAwMDAwMDAwM0ZGODAwMDBGRkZFMDIwMDA0MjAwODEwM0ZGODEwMDgwMDAwMzQKKzoyMDVFNDAwMDFGRjgxMDA4MUZGODEwMDgxRkY4MDEwMDAxMDA3RkZFMDE4MDAzNDAwNTIwMDkxODMxMEVDMTA0MDEwMDAxMDAzRQorOjIwNUU2MDAwMUZGODEwMDgxRkY4MTAwODFGRjgwMDAwM0ZGRTIwODAyMDgwMjA4MDIxNDAyMTIwNDIxODRDMEVCMDA0MDAwMDg2Cis6MjA1RTgwMDAwMDM4NzlDMDQ5MDA0OTAwNDkwMDc5RkU0OTEwNDkxMDQ5MTA0OTEwNzkxMDAyMTAwMjEwMDQxMDA4MTAwMDEwRjIKKzoyMDVFQTAwMDAwODA3Q0MwNDQ4MDQ0RkM0NTA0NDUwNDdFNDQ0NDI0NDQxNDQ0MjQ0NDQ0N0Q4NDAwMDQwMDE0MDAwODAwMDBGRAorOjIwNUVDMDAwMDAxMDFGRjgxMDEwMUZGMDEwMTAxRkYwMDEwMDAxMDAwOTA4MEE5MDEyQTAyNDQwMDQyMDA4MTAxMDBFNjAwNEJDCis6MjA1RUUwMDAxRkYwMTAxMDFGRjAxMDEwMTAxMDFGRjAwODAwMUZGQzEwODQzMDg0NTE0NDE2MjQxRkY0MDAwNDAwMTQwMDA4QTgKKzoyMDVGMDAwMDEwMjAxMDIwM0YzMDIxMkM1MjI0OEMyMDBFMjAzMUEwQzA3RTFGRjAxMDEwMUZGMDEwMTAxMDEwMUZGMDEwMTA1OQorOjIwNUYyMDAwMUZGODEwMDgxRkY4MTAwODFGRjgwMDAwMEMwMDMwRkMyMjQ0MjI0NDJFNDQzMjU0MDQ0ODE4NDA2MDQwMDA0MDZDCis6MjA1RjQwMDAwMDAwMUZGMDEwMTAxRkYwMTAxMDEwMTAxRkYwMDEwMDAwODA3RkZDMDgyMDA4MjAwNDQwMDQ4MEZGRkUwMDAwQTMKKzoyMDVGNjAwMDEwMDAwODdDMDA0NDc4NDQwODQ0MDhGQzBENDRFQTQ0MkE0NDI5N0M0OTAwNDg4MDg4NjAyODNDMTAxMDAwMDAyRQorOjIwNUY4MDAwMDNGQzdBMDQ0QTA0NEEwNDRCRkM3QTgwNEE4MDRBODA0QThDNEFGMDdBODAwNDgwMDQ4MjA4ODIzMDdFMDAwMEM3Cis6MjA1RkEwMDAwMTAwMUZFODAxMTA3RkZFMDBDMDAzMDAxRkU4RTQwODA3RjgwMDAwMEZGODA4MDgwRkY4MDgwODBGRjgwODA4NTEKKzoyMDVGQzAwMDFGRjgxMDA4MUZGODEwMDgxRkY4MDA1MDAwNDgzRkZFMjA0MDNGNDgyMTQ4MjUzMDQyMzI0MDRBODA4NjAwMDBDRQorOjIwNUZFMDAwMDBBMDc4QTA0OTI0NDkyQzRCMzA0RDYyNzkyMjQ5MUU0OTQwNDg0MDRGRkU3ODQwNDg0MDAwNDAwMDQwMDA0MDdECis6MjA2MDAwMDAwMDAwM0ZGODIwMDgzRkY4MjAwODNGRjgwMjgwMjI4ODFBOTAwNkUwMEFBMDEyOTg2NDhBMDQ4MjA4ODIzMDdFQ0YKKzoyMDYwMjAwMDFGRjgxMDA4MUZGODEwMDgxRkY4MDEwMDdGRkU0MjA0MDQwMDdGRkUwODIwMDY0MDAxODAwNzYwNzgxODAwMDhCOAorOjIwNjA0MDAwMDNGRTdBMDQ0ODQwNDg0MDRCRkM3ODgwNDhBMDQ5MjA0OUZDNDgyMDc4MjAwN0ZFMDAyMDAwMjAwMDIwMDAyMDU3Cis6MjA2MDYwMDAwMDUwNzg0ODRCRkU0ODQwNEJGQzRBNDQ3QTQ0NEJGQzRBNDQ0QTQ0NEJGQzdBNDQwMjQ0MDI0NDAyNTQwMjA4NTgKKzoyMDYwODAwMDAwNDAwMDQwNzhBMDQ5MTg0QThFNEM0NDdCRjg0ODEwNDgyMDQ4NDA0QkY4N0EwODAyMDgwMjA4MDNGODAwMDAxMAorOjIwNjBBMDAwMUZGMDEwMTAxRkYwMTAxMDFGRjAxMDQwMUY2MDMyNTA0QzQ4MUI0MEUwRkUxRkYwMTAxMDEwMTAxRkYwMTAxMEQ3Cis6MjA2MEMwMDAwMDQwMDAyMDdCRkU0QTA0NDgwMDRCRkM0ODAwNzlGODQ5MDg0OUY4NDkwODc5MDg0OUY4MDAwMDA3RkUwMDAwQTcKKzoyMDYwRTAwMDA3Qzg3MEQwNTRBNDUzMjg1MTEwNzIwODU1RjY1ODQwNTA0MDU3RkM3MDQwMDBBMDAxMTgwNjBDMTgwNDAwMDBFNgorOjIwNjEwMDAwMDAzQzA3QzBGMjg4OTE1MDk3RkU5NDg0RjA4MDk3RkU5MTAwOTFGOEYzMTA5MkEwMDQ0MDA4QjAwMzBFMUMwNEYzCis6MjA2MTIwMDAwMDAwN0JGRTRBMDQ0OUY4NDkwODQ5Rjg3OTA4NDlGODQ4NDA0RkZFNzgwMDQ5MTAwMTA4MDIwNjA0MDIwMDAwNDYKKzoyMDYxNDAwMDAyMTAwMTE4RjdEMDkwMUU5Nzk0OTRBNEY3QTQ5MDU0OTdENDkwODhGMUM4MEYxNDAxMTQwMTI2MDVDNDAyMDA1NworOjIwNjE2MDAwMDAwMDAzRjhGMDQwOTdGRTkwNDA5N0ZDRjU1NDk3RkM5MDQwOTdGQzkwNDBGN0ZFODAwMDA0QTgwNDU0MDg1NDE4Cis6MjA2MTgwMDAwMDAwMDdCQ0YwODQ5Mjk0OTE4QzkyOTRGNEM0OTIyMDkzRkM5NjIwOUJGQ0YyMjA5M0ZDMDIyMDAzRkUwMjAwNTMKKzoyMDYxQTAwMDAxMjA3N0ZDNTA0MDU3RkM1MDQwNTdGQzcwMjA1N0E4NTEyNDU3RkU3MzkwNTU1NDA3RUEwMjFBMDNBNjAwODI0OAorOjIwNjFDMDAwMUZGMDExMTAxRkYwMDEwMDdGRkUxMjg4MUVGODA0MjAzRkZDMDQyMDNGRkMwNDIwN0ZGRTBDOTAxNTYwNjYxRTVFCis6MjA2MUUwMDAwMTAwMDEwMDdGRkMwOTIwMDkyMEZGRkUwODIwMUZGMDEwMTAxMTEwMTExMDExMTAxMjgwMDQ0MDE4MzA2MDBDOEYKKzoyMDYyMDAwMDEyMjAxMjIwRkZGRTEyMjAxM0UwMTAwMDFGRkMwMDAwMUZGMDExMTAxMTEwMTExMDEyOTAwNDYwMTgzMDYwMTA5RAorOjIwNjIyMDAwMDAwMDdERkM0NTA0NDUwNDU1MDQ1NTA0NTUwNDU1RkM1NDUwNTQ1MDEwNTAyODUwMjQ5MjQ2OTI4NTBFMDIwMEI0Cis6MjA2MjQwMDAwMDQwN0M2MDQ0NDA0NDg4NTQ4NDU1RkU1NDg0NTQwMDU0RkM1NDg0MTA4NDI4ODQyNEZDNDI4NDgyODQwMDAwMjcKKzoyMDYyNjAwMDA4NDAwODQwN0RGMDA4NTAzRDkyMDhDQTI5MjQxRkYwMTAxMDExMTAxMTEwMTExMDEyOTAwNDQwMDgzMDEwMTAwQgorOjIwNjI4MDAwMDg0MDA4NDAyRjRDMjg3MDI4NDIzRjQyRTAzRTAwMDAxRkYwMTExMDExMTAxMTEwMTI5MDA0NjAwODMwMzAyMDUyCis6MjA2MkEwMDAwMDgwN0M0MDQ3RkU1NDQwNTQ4MDU1MTA1N0Y4NTUyMDU0NDg1NDhDMTMxMDI4MzAyQzRDNDk4Njg2MDIwMDAwMDYKKzoyMDYyQzAwMDAwMDA3REZDNDUwNDQ1MDQ1NUZDNTUyNDU1MjA1NTEwNTU4ODU1NDYxMTM0MkExMDI0NDA0NDMwODAxMDAwMDBCMAorOjIwNjJFMDAwMDAwMEY5RkU4OTAwQTlGQ0E5MDBBOTAwQTlGRUE5NTBBOTU0QTk1ODIyNTAyMjQ4NUE0ODU0NjY4ODQ0MDAwMDg1Cis6MjA2MzAwMDAwMTAwM0ZGQzExMTAwOTIwRkZGRTAzNDAwRDMwMzEwRURGRjQxMDEwMTExMDExMTAxMTEwMDJDMDBDMzg3MDEwNUYKKzoyMDYzMjAwMDAwMjg3QzI0NDQyNDU3RkU1NDIwNTYyNDU1QTY1NEE4NTQ3MDU0QjAxMTI4MkEyNDI0MjY0NDI0ODBBMDAwNDA5MgorOjIwNjM0MDAwMDEwMDdGRkMwOTIwMDkyMDE1NTA3RkZDNDAwNDFGRjAxMDEwMTExMDExMTAxMTEwMTI4MDA0NjAwODFDMzAwODY3Cis6MjA2MzYwMDAwMDIwN0NBNDQ0QTQ0NTIwNTQ1MDU0ODg1NTA2NTYyMDU0MjQ1NTI4NTEyMDJBNTAyNDQ4NDY4Qzg1MDYwMjA0OTAKKzoyMDYzODAwMDAwMjg3QzI0NDdGRTU0MjA1NUZDNTUyNDU1RkM1NTI0NTVGQzU1MjQ1NDA4MTNGRTI5MDgyNDg4NDRBODgwMTA1OAorOjIwNjNBMDAwMTAwMDExRkMxMTA0MUYyNDExMjQxMTI0N0QyNDQ1MjQ0NTI0NDQ1MDQ0NTA0NDkwN0M5MjQ1MTIwMjBFMDQwMDE2Cis6MjA2M0MwMDAxMDAwOTJGQzkyODQ5MkE0RkVBNDAwQTQ3Q0E0MDRBNDA0QTQ3QzIwNDA1MDQwNTA0ODkyNTExMjYyMEU0NDAwNzAKKzoyMDYzRTAwMDA3MDBGOEZDMDg4NDRBODQ0QUE0NEFBNDRBQTQ0QUE0QURBNEI4MjBBODUwMDg1MjBFOTJGMTEyMDIwRTA0MDA1RQorOjIwNjQwMDAwMTAwMDEwRkNGRTg0MTBBNEZFQTQ1MkE0MzBBNDkwQTQ1MEE0RkUyMDEwMjAxMDUwMjg1MjQ2OTI4NTBFMDIwMDAxCis6MjA2NDIwMDAwODAwMDg3QzE0NDQyMzQ0N0U1NDgwNTQ3MTU0NTU1NDc1NTQ1NTEwNzUyODU1MkE1MTJBNTU0QTUyNDY1MDgwMzEKKzoyMDY0NDAwMDI0MDBGRjdDMjQ0NDdGNTQyNDU0RkY1NDA4NTQ3RjU0NDk1NDdGMTA0OTI4RkZBODQxMkE0MTRBNDU0RTQyODBEOQorOjIwNjQ2MDAwMjQwMDI0RkNGRjg0MjRBNDNDQTQwOEE0N0VBNDRBQTQ3RUE0MDhBNDdGMjAwODUwN0Y1MjA4NTJGRjhFMDEwMDczCis6MjA2NDgwMDAwODAwMEY3QzA4NDQ3RkM0NDk1NDdFNTQ0ODU0NDc1NDQwNTQ0QTEwNkFBODVCMjg0QTRBNEY0QUIwOEU4MTAwQzUKKzoyMDY0QTAwMDA5MjAwOTEwMTBGQzM3ODA1MDQwOTAyMDExMUExMTA2MUZGODIxMDA0MTAwRkZGRTAxMDAwMTAwMDEwMDAxMDBEQgorOjIwNjRDMDAwN0NGODA0ODg3Q0Y4NDIyMDdERkMwNTI0MDVGQzI4M0MxOUU0MDkwMDFGRjgyMTAwN0ZGRTAxMDAwMTAwMDEwMDIxCis6MjA2NEUwMDAwODQwMDg0MDI4NDAyODQwM0Y0NDQ4NEM0ODUwOEI2MDFDNDBFODQwNDg0MDA4NDAwODQyMDg0MjA4M0UwODAwNkMKKzoyMDY1MDAwMDEwMDAxMDNDNTNDMDUwNDA3QzQwNTA3QzkzQzAxNDQwMTg3RTM3QzBEMDQwMTA0MjEwNDIxMDQyMTAzRTEwMDA1QworOjIwNjUyMDAwMTAyMDEwMjA1MDIwNTAyMDdGRkU1MDIwOTAyMDE2MjAzOUZDRDEwNDExMDQxMTA0MTEwNDExRkMxMTA0MTAwMENECis6MjA2NTQwMDAxMDAwMTNGQzUwNDA1MDQwN0RGQzUwNDQ1MDQ0OUJGRTMwMDBEMUZDMTEwNDExMDQxMTA0MTFGQzExMDQxMDAwNTQKKzoyMDY1NjAwMDEwMjAxMTIwNTEyMDUxRkM3RDIwNTIyMDU0MjA5RkZFMzAwMEQwMDAxMUY4MTEwODExMDgxMTA4MTFGODExMDg2NgorOjIwNjU4MDAwMTA0MDEwNDA1M0ZDNTBBMDdEMTA1MjA4OTdGRTE4MDgzM0U4NTIyODkyMjgxM0U4MTIyODEwMDgxMDI4MTAxMDhDCis6MjA2NUEwMDAxMDAwMTFGODExMDg1MUY4N0QwODUxMDg1MUY4OTUwODE5MDgzMUY4RDEwODExMDgxN0ZFMTA5MDExMDgxMjA0N0MKKzoyMDY1QzAwMDEwMjAxMDIwMTZGQzUyMjQ3QUZFNTIyNDk0RkMxNzIwMTlGQ0Y1MjA1MkZFMTIyMDEzMjAxNEMwMTgzRTEwMDQwMQorOjIwNjVFMDAwMTA0MDEwMjA1MUZFNTEwMjdERkU1MTAwNTEwMDk1RkUxQUFBMzJBQUQyRkUxMkFBMTRBQTE0QUExOEFBMTA4NENCCis6MjA2NjAwMDAxMDQwMTAyMDUzRkU1MDAwN0RGODUxMDg5NUY4MTgwMDMzRkVEMjAyMTJGQTEyOEExMkZBMTIwMjEyMEExMjA0RTcKKzoyMDY2MjAwMDA4MDA3RUZDMDgyNDdFMjQwODI0RkY1NDA4ODgwMDcwMUY4MDAwODAzRkY4MDA4MDdGRkUwMDgwMDI4MDAxMDAzNQorOjIwNjY0MDAwMTA0MDQ4NDgyOTQ0MjI0QTA2NDgzODMwMTNDMDAwRjgzRjAwMDEwMDNGRjgwMTAwN0ZGQzAxMDAwNTAwMDIwMDA1Cis6MjA2NjYwMDAwMTAwRjkzRTIxMDgyMjg4RkFCRTI0NDgyODI4MjdDOEZBQkUyMjg4MjI4ODI0ODg0NDg4NEE4ODkxMjgwMDEwOEQKKzoyMDY2ODAwMDAxMDBGOTNFMjEwODIyODhGQTdFMjdDODI4MDgyMDA4RkJGRTIyNDgyMjQ4MjI0ODIzQzg0MDA4NDAyODgwMTBDRQorOjIwNjZBMDAwM0MyMDI1RkMyNDg4M0M1MDIzRkU3QzIwNjVGQ0JDMjAwMDIwMEZGMDAwODAxRkY4MDA4MDdGRkUwMDgwMDE4MDc3Cis6MjA2NkMwMDAwMjAwMUZEMDAyMjBGRkZFMDI4MDA1MDAxRkM4NjQwODA3Rjg3QTAwMDI3MDNGODAwMjAwRkZGODAyMDIwMUZFMkEKKzoyMDY2RTAwMDAwMjAwQzQwNzA4ODExRkMxMDI0N0NBMDEwRkMxMTIwMTAyMEZERkMxMDIwMTAyMDEwMjIxMDIyMEZGRTAwMDBBMgorOjIwNjcwMDAwMDBGODNGMDAwMUYwMUYwMDAxRjg3RjAyMDFGRTNDMDAxMEY4N0MyMDEwRjhGRTIwMTFGQzE0MjIxODIyMTAxRTA4Cis6MjA2NzIwMDAwMDIwMThGOEUwMjgyRUZDMjIyOEY0RjgyNDIwMkVGODIyMjBGQUY4MjYyMDI1QTAyODdBMjAwMjFGRkUwMDAwMzcKKzoyMDY3NDAwMDEwMDAxMDE4MjRFMDdFMjAwODIwRkYyMDE0RjgyMzIwQzgyMDM1RkVDODIwMzIyMEM0MjIxODIyRTAxRTAwMDA1NgorOjIwNjc2MDAwMDgwMDA4MTgxNEUwMjIyMDdEMjA4MEZDNzEyMDUxMjA3NTIwNTVGRTc1MjA1NTIwNTUyMDUxMjI3MzIyNTExRUMyCis6MjA2NzgwMDAwODIwNDkyMDJBN0U3RjQ4NDFDODVEMzA1NTEwNUQyODQzQzYzRkYwMDEwMDFGRjAwMTAwN0ZGQTAxMDIwMEZFQjYKKzoyMDY3QTAwMDAxRjAwRDIwNzNGODExNDgxMUY4MTE0ODc5RjgxMDAwMTdGRTExMDhGREY4MTEwODExRkExMDAyMEZGRTAwMDBBRQorOjIwNjdDMDAwMDEwODBDOTA3M0ZDMTBBMDEyQThGREIwMTNGRTEwMDAxMUY4RkQwODExRjgxMTA4MTFGQTEwMDIwRkZFMDAwMDEzCis6MjA2N0UwMDBGNzhDOTRCMEY3OTA5NDkwRjc5MDk0QkNGNzkwMjgxMDdGMTBDNDdFN0YxMDQ0MTA3RjEyNDQxMjdGOEU0MDAwQTkKKzoyMDY4MDAwMDEwMDAxMDAwM0ZGQzIwMDA1RkY4ODAwMDNGRjAwMDEwMDIxMDAyMTAwMjEwMDQwODA0MEEwODBBMTAwNjIwMDI0RAorOjIwNjgyMDAwMDgwMDFGRkUxMDAwMkZGQzQwMDBCRkY4MDAwODA4ODgwODg4MDg4ODA4ODgwODhBMTA4QTEwODY2MDg2MDA4MjhGCis6MjA2ODQwMDAxMDAwMTAwMDNGRkMyMDAwNUZGODgwMDA3RkYwMDQxMDA0MTAyNDUwMjQ1MDI0NTIyNDRBM0ZDQTIwNDYwMDAyMTIKKzoyMDY4NjAwMDEwMDAxRkZDMjAwMDJGRjg0MDAwM0ZGMDAwMTAxMjUwMTI1MDEyNTAxMjQ4MTI0ODIyNEEyMjQ2NDA0NjAwMDJGMQorOjIwNjg4MDAwMDgwMDBGRkMxMDAwMkZGODQwMDAzRkYwMDgxMDFGOTAyOTEwNDYxMDE5ODhFNEU4MDIwQTA4MDYwNjA2MDIwMjUyCis6MjA2OEEwMDAwODAwMEZGQzEwMDAyRkY4MDAwMDdGRjAwMDEwN0ZEMDA5MTAwOTEwNDk1MDI5OTAyOTBBMDkwQUZGRTYwMDAyMEYKKzoyMDY4QzAwMDEwMDAxRkZFMjAwMDJGRkM0MDAwQkZGMDAwMTAzRkQwMjQ1MDNGNTAyNDQ4MkE0ODMxNEEzRkM2MjA0NjAwMDI2OQorOjIwNjhFMDAwMTAwMDFGRkUxMDAwMkZGODQwMDAzRkYwMDQxMDdGRDAwNDEwMUY5MDEwOTAxRjg4MEEwQTBBNEExMjQ2NjFDMjc1Cis6MjA2OTAwMDAxMDAwMUZGQzIwMDA1RkYwMDAwMEZGRjAwMDEwM0Y5MDIwOTAzRjkwMjA5MDdGRDA0QTRBNEE0QUZGRjYwMDAyNzIKKzoyMDY5MjAwMDA0MDAwNDAwMDgwMDBGRkMwODIwMTgyMDI0MjA0NDIwMDI0MDAyNDAwMTgwMDE4MDAyNjAwQzFFNzAwODAwMDBBQQorOjIwNjk0MDAwMDg0MDA4NDAwODQ0RkY3RTA4NDg3Rjg4NDk0ODQ5NDg3RjQ4NDk1MDFDNTAyQjIwNDk1MDg4ODgwOTBFMEEwNDgwCis6MjA2OTYwMDAwODIwMTAyMDNFMjAyMjIwM0U3RTIyNDQzRUM0MDk0NEZGMjgxMDI4MUUxMDEyMzAyMjQ4MjI4RTRCMDQwNDAwNzIKKzoyMDY5ODAwMDA4MjA0ODIwNDlGQzQ4MjA3REZFNDAwMjQxMjQ3OEEwNDkyMDQ4QTA0QkZFNDg1MDQ4NTA0ODg4ODkwRTA2MDQ0NQorOjIwNjlBMDAwMDg0ODQ5NDg0RkZFNDk0ODdENDg0MTc4NDEwMDc5RkU0ODIwNEJGRTQ4NjA0OEIwNEIyODRDMjY4ODIwMDAyMEU0Cis6MjA2OUMwMDAxMDQwNTAyMDUzRkM1MjA0NTNGQzdFMjg0M0ZFNDIyMDdCRkM1MzI0NTVGQzU1MjQ1NUZDNTUyNDU1MzQ4OTI4RkUKKzoyMDY5RTAwMDAwNzgzRkQwMjIxODExMjAzRkZDMDIwMDAyMDBGRkZFMDQwMDBGRjgwQzMwMTM2MDYwQzA4MzYwMEMxRTcwMDQwRQorOjIwNkEwMDAwMDAyMDBFM0VGMDIwMDNGRUE1MjQ1NTM4NTFFNDA5M0NGRjAwMDk3ODQ5NDgyOTQ4Mjk0QTBBOEEyQThFMTUwMEQzCis6MjA2QTIwMDAwMDA0M0UwNDIyMjQyMjI0M0UyNDIyMjQyMjI0MjIyNDNFMjQyMjI0MjIyNDIyMDQ0MjA0NEExNDg0MDgwMDAwMEMKKzoyMDZBNDAwMDAwMDAzREZDMjQwMDI0MDAzQzAwMjdGRTI0ODAyNDgwM0RGQzI0ODQyNDA0MjQwNDI0MDQ0NDA0NTQxNDg4MDg3MworOjIwNkE2MDAwMDAwMDNFMDgyMjBDMjIxMDNFMjQyMjQ2MjIwQzIyMTAzRTI0MjI0NjIyMEMyMjA4NDIxMDRFMjA4NDQwMDAwMEEwCis6MjA2QTgwMDAwMTAwMDA4MEZGRkUxMDAwMUZGODAwMDAxRkY4MTAwODFGRjgxMDA4MTAwODFGRjgxMDA4MTAwODEwMjgxMDEwM0MKKzoyMDZBQTAwMDAwOTAzQzkwMjQ5MDI0OTAzRkZFMjQ5MDI0OTAyNDkwM0ZGRTI0OTAyNDkwNDQ5MDQ0OTA1NTEwODkxMDAyMTA1QworOjIwNkFDMDAwMDAwMDNERkMyNDAwMjQwMDNDMDAyN0ZFMjQ5MDNDOTAyNDkwMjQ5MDI0OTA0NDkyNDUxMjk1MTIwQTBFMDAwMDRDCis6MjA2QUUwMDAwMDQwM0M0MDI0NDAyNDQwM0ZGQzI0NDAyNEEwMjRBMDNDQTAyNDkwMjQ5MDI1MDgyNTRDNDUyNjU1MjQ4QTAwOUIKKzoyMDZCMDAwMDAwNDAzQzQwMjQ0MDI3RkUzQzQwMjQ0MDI0OTAyNDkwM0M5MDI1MjAyNTI4MjY0NDQ0QkU1NUU2ODg4NDAwMDBENworOjIwNkIyMDAwMDAyMDdDMjA0NDIwNDdGRTQ0MjA3QzIwNDUyNDQ1MjQ3RDI0NDVGQzQ0MjA0NDIwNDQyMjQ0MjI1NDFFODgwMEFFCis6MjA2QjQwMDAwMDIwNzgyMDQ4MjA0OUZDNDkyNDc5MjQ0OTI0NDk1NDc5NEM0OThDNDkwNDQ5MDQ0OTA0NDkwNEE5MTQxMTA4MTgKKzoyMDZCNjAwMDA4MTAwNjIwMDFDMDA2MzAxOTA4N0ZGRTAyMDAwN0Y4MEMwODE3RjgyNDA4NDdGODA0MDgwNDA4MDQyODA0MTA1QgorOjIwNkI4MDAwMDA4MDNDQzAyNDgwMjRGRTNEMDQyNjI4MjQyMDI0MjAzQzIwMjQyMDI0NTAyNDUwMjQ4ODQ0ODg1NTA2OEEwNEIzCis6MjA2QkEwMDAwMDgwM0NBMDI0OTgyNDkwM0ZGRTI0QTAyNEEwMjRBNDNDQTYyNEE0MjRBODI0QjA0NTYyNTUyMjg5MUUwMjAwNkIKKzoyMDZCQzAwMDAwNDAzQzQwMjdGRTI0NDAzQzgwMjRBMDI1MjAyN0ZFM0QyMDI0MjAyNTI4MjVBNDQ2MjY1NDI0ODhBMDAwNDA4MworOjIwNkJFMDAwMDA0MDNDNDAyNDdDMjQ0MDNDNDAyNDQwMjdGRTI0NDAzQzYwMjQ1MDI0NEMyNDQ0NDQ0MDU0NDA4ODQwMDA0MDY0Cis6MjA2QzAwMDAwMDIwM0MyMDI0M0UyNDIwM0NGRTI0ODIyNDgyMjQ4MjNDRkUyNDgwMjQ4MDI0ODA0NTAwNUQwMDhBMDAwNDAwRDAKKzoyMDZDMjAwMDAwMDAzREZDMjUyNDI1MjQzREZDMjUyNDI1MjQyNTI0M0RGQzI1MjQyNDIwMjQyMDQ0MjA1NDIwODgyMDAwMjBDQgorOjIwNkM0MDAwMDAyMDNDMjAyNDIwMjVGQzNEMjQyNTI0MjVGQzI1MjQzRDI0MjVGQzI1MjQyNDIwMjQyMDQ0MjA1NDIwODgyMDZDCis6MjA2QzYwMDAwMTAwM0ZGODIxMDgzRkY4MjEwODNGRjgwMDAwMUZGMDEwMTAxRkYwMTAxMDFGRjAxMDEwMTAxMDEwNTAxMDIwREYKKzoyMDZDODAwMDAwODAzQzgwMjUwMDI1RkUzRTQwMjQ0MDI0N0MyNDQwM0M0MDI0NDAyNDdDNDQ0MDQ0NDA1NDQwODg0MDAwMDBBNgorOjIwNkNBMDAwMDAwMDc4M0M0OUQwNDk1MDc5NTA0OTUwNDk1MDc5NTA0OTQ4NDk0ODQ5NDg0OTQ0NEE1NDRBRjY0QTU0OTQwMDVBCis6MjA2Q0MwMDAwMDQwM0M0MDI0QTAyNDkwM0QxODI2NEUyNDY0MjQ5MDNEMjAyNDQ4MjQ4QzI1MTg0NDIwNDQ0MDk0ODAwOTAwQzAKKzoyMDZDRTAwMDAwMDAzQzgwMjQ4MDI1RkMzRDA0MjYwNDI0MDQyNUU0M0QyNDI1MjQyNUU0MjQwNDQ0MDQ1NDA0ODgxNDAwMDg1OAorOjIwNkQwMDAwMDAwODc5RkM0OTIwNDkyMDc5MjA0OTIwNDlGRTQ5MjA3OTIwNDkyMDQ5MTA0OTUyNDk4QUFCMkE5MTI2MDAwMDFECis6MjA2RDIwMDAwMDAwN0JGQzQ4MDg0ODEwNDgyMDc4NTg0ODg0NEIwMjc5RkM0ODIwNDgyMDQ4MjA0ODIwQUJGRTkwMDAwMDAwOTUKKzoyMDZENDAwMDAwNDAzQzQwMjQ0ODI2NEMzRDQ4MjQ1MDI3RkUyNEEwM0NBMDI0QTAyNEEwMjRBMDQ0QTI1NTIyODkxRTAyMDA4OQorOjIwNkQ2MDAwMDAwMDNERkMyNTA0MjVGQzNEMDQyNTA0MjU3NDI1NTQzRDU0MjU1NDI1NzQyNTU0NDUwNDU1MTQ4OTA4MDAwMEI1Cis6MjA2RDgwMDAwMDAwNzlGQzQ5MjQ0OTI0NzkyNDQ5RkM0OTI0NDkyNDc5MjQ0OTU0NDk4QzQ5MDQ0OTA0QTlGQzkxMDQwMDAwMDUKKzoyMDZEQTAwMDAwNDA3ODQwNDhBMDQ4OTA3OTA4NEEwNjRERjg0ODAwNzgwMDRCRkM0ODgwNDg4ODQ5MDQ0QkZFQTkwNDkwMDA5MworOjIwNkRDMDAwMDAwODc5MEM0ODkwNDg2MDc4OTA0OTQ4NEE0NDRGRkU3ODQwNDk1MDQ5NDg0QTRDNEM0ODQ4NDBBOTQwOTA4MEE1Cis6MjA2REUwMDAwMDQwM0MyMDI1RkUyNDQwM0M0ODI0OEMyNUY4MjQ5MDNDMjQyNDQ4MjQ5MDI3Mzg0NDQ0NTQ4Njg5MDQwMDAwOUQKKzoyMDZFMDAwMDAxMDg3OENDNDg5MDQ4MDA3QkZFNDg5MDQ4OTA0ODkwN0JGRTQ4OTA0ODkwNDg5MDQ5MTA0OTEwNkExMDk0MTAzMworOjIwNkUyMDAwMDEwODc4ODg0ODUwNEJGRTc4MjA0ODIwNDgyMDRCRkU3ODIwNDgyMDQ4NTA0ODUwNDg4ODY5MEU5NjA0MDAwMEE2Cis6MjA2RTQwMDAwMDQwNzg0NDRBNDY0OTQ0Nzk0ODQ4NDA0RkZFNDhFMDc5NTA0OTUwNEE0ODRBNDY0QzQ0NDg0MEE4NDA5MDQwMDcKKzoyMDZFNjAwMDAwMDA3RkZFNDg0MDQ4ODg3OThDNEU1MDQ4QTA0OTMwN0E3MDRDQTg0OTI4NEEyNjRDMjQ0ODIwQThBMDkwNDA4QQorOjIwNkU4MDAwMDAwMDNDRjgyNDg4MjQ4ODNDRjgyNEE4MjQyMDI1RkMzRDI0MjUyNDI1NTQ0NThDNDUwNDU1MDQ4OTE0MDEwOEM1Cis6MjA2RUEwMDAwMDIwM0MyMDI1MjgyNTI4M0QyODI1MjgyNkI0MjZCMjNDMjAyNUZFMjQyMDI0MjA0NDIwNTdGRTg4MDAwMDAwMTAKKzoyMDZFQzAwMDAwMUM3QkUwNEE0NDQ5QjQ3OTI4NEJGQzQ4MDg0ODUwNDgyMDdCRkU0ODIwNDgyMDQ4MjA0ODIwNDhBMDk4NDA5RgorOjIwNkVFMDAwMDA0MDc4MjA0QkZFNEEwNDdDMDA0OUY4NDgwMDQ4MDA3QkZDNDg5MDQ4OTA0ODkwNDg5MkE5MTI5MTBFMDIwMEExCis6MjA2RjAwMDAwMDAwN0JGQzRBMDQ0QTA0N0JGQzRBMjA0QTI0NEJBODdBQjA0QUIwNEFBODRBQTY0QjI0QkEyMDk0QTAwODQwNTEKKzoyMDZGMjAwMDAwMjAzRkZFMjQyMDI1RkMzQzIwMjdGRTI0MDAyNUZDM0QwNDI1RkMyNTA0MjUwNDQ1RkM1NTA0ODkxNDAxMDhENQorOjIwNkY0MDAwMDA0MDc4NDA0RkZFNDg5MDc4ODg0OTQ2NEZGQzRBNDg3QkY4NEE0ODRBNDg0QkY4NDg0MjQ4NDJBODNFOTAwMDQ0Cis6MjA2RjYwMDAwMDkwNzg5MDQ4OTA0RjlFNzg5MDQ4OTA0QjlFNDg5MDc4OTA0ODkwNEY5RTQ4OTA0ODkwNDg5MEI4OTA5MDkwNTYKKzoyMDZGODAwMDAwMjA3OEEwNEIyRTRBMjI3QTIyNEJBRTRBMjI0QTIyN0JGRTRBMjA0ODIwNDg1MDQ4NDg0ODhDNjkwNjkyMDQxQgorOjIwNkZBMDAwMDA0MDNDMjAyNUZFMjYwMjNDMDAyNEZDMjQwMDI0MDAzRkZFMjQyMDI0QTgyNEE0MjUyNjQ2MjQ1NEEwODg0MEMwCis6MjA2RkMwMDAwMDQwNzgyMDRCRkU0QTA0N0MwMDRCRkM0ODIwNDkyMDc5MjA0OTNDNDkyMDQ5MjA0OTIwNEFBMEFDN0U5MDAwQjEKKzoyMDZGRTAwMDAwMjA3ODIwNEY3QzQ5MjQ3QUZFNEEyNDRCRkM3OTIwNDlGQzREMjA0QUZFNEEyMDRBMjA0RDIwQThGRTkwMDA2QQorOjIwNzAwMDAwNzg0MDQ4NDA0RkZDNDg0MDdCRjg0ODgwNEZGRTc5MDg0QUY2NEM0NDRCRjg0ODQwNDhBMDQ5MThBQTBDOTQwODFFCis6MjA3MDIwMDAwMDQwNzg0MDRGRkU0ODQwNEJGQzdCMTQ0QUE0NEE0NDdCRjQ0QTQ0NEJGQzRBNDQ0QTQ0NEE0NDRBNTQ5QTA4MDMKKzoyMDcwNDAwMDAwMDA3QkZFNDg0MDQ4ODA3QkZDNEE5NDRBOTQ0QUY0N0E5NDRBRjQ0QTk0NEE5NDRBOTQ0QkZDQUEwNDkwMDA4QgorOjIwNzA2MDAwMDAwMDNERjgyNTA4MjVGODNEMDgyNUY4MjUwODI0MDAzREZDMjU1NDI1NTQyNTU0MjU1NDQ3RkU1NDAwODgwMEEwCis6MjA3MDgwMDAwMDAwM0REQzI1NTQyNTU0M0REQzI0MDAyNUZDMjQwMDNGRkUyNDgwMjVGODI0ODgyNDA4NDQwODU0Mjg4ODEwMkQKKzoyMDcwQTAwMDAwNDA3ODQwNDhBMDQ5MTg3QkY2NEMwNDRCRDQ0QTU0N0JENDRBNTQ0QTU0NEJENDRBNTQ0QTQ0NEE1NDlBNDhCQgorOjIwNzBDMDAwMDA0ODdBNEM0OTUwNEJGQzc4NDA0RkZFNDg5MDQ5MDg3QTRFNEM0NDRCRjg0ODQwNDg0MDQ4NDBBRkZFMTAwMEE0Cis6MjA3MEUwMDAwMDQwN0E0ODQ5NTA0QkZDNzg0MDRGRkU0ODkwNDkwODdBNDY0RkZDNDg5MDQ5MTA0OEEwQTg0MDkxQjAwNjBDMjEKKzoyMDcxMDAwMDAwMDA3QkZDNDgwMDQ5Rjg3OTA4NDlGODQ4MDA0QkZDN0EwNDRCMTQ0QUE0NEJGNDRBNDQ0QTQ0NkE0NDkyNEM2QworOjIwNzEyMDAwMTA4MEZDRkUyMTAwM0UzMDI1QzQyNTI4NTVEMDg5MDYxRkYwMTAxMDFGRjAxMDEwMUZGMDEwMTAxMDUwMTAyMDJGCis6MjA3MTQwMDAwMDQwNzgyMDRCRkU0QTAyNDgxODc5RTA0OTAwNDlGQzc5MTA0OTEwNEJGRTQ4MDA0ODkwNDhDOEE5MEM5MjA4RDEKKzoyMDcxNjAwMDAxMjQ3OEE4NDhCMDRCRkU3ODQwNEJGRTQ4OTA0OTI4N0EyNjREMjg0OEIwNDhGMDRCMkM0ODI0QThBMDEwNDA3RgorOjIwNzE4MDAwMDA0MDc4MjA0QkZFNEE5MjdDQzg0OTA0NEJGQzQ4ODg3OUZDNDg0NDQ4NDA0QkZDNDg0MDQ4NDA0RkZFOTgwMDg1Cis6MjA3MUEwMDAwMDQwN0ZGQzQ5MDg0ODkwN0JGRTRDNDQ0QkY4NEE0ODdBNDg0QTU4NDg0MDRCRjg0QTA4NEEwOEFCRjg5MDAwMDcKKzoyMDcxQzAwMDAxMDg3OTA4NEZDODQ5M0U3RkM4NDgwODRCQkM0QUE0N0JBNDQ4MjQ0QzU4NEE5ODQ5RDg0RTI0QTgyNjkwNDRCNQorOjIwNzFFMDAwMDA4ODdCRkU0ODg4NEJGRTRBMDQ3OUY4NDgwMDRCRkU0ODgwN0I0ODQ4RjA0QjI4NDhENjRCMTBBODUwOTAyMENFCis6MjA3MjAwMDAwMUY4NzkwODQ5Rjg0ODAwN0I5QzRBOTQ0QTk0N0I5QzQ4NDA0RkZFNDhFMDQ4RDA0OTU4NEE0RUFDNDQ5MDQwNzMKKzoyMDcyMjAwMDAwNDA3RkZFNDgwMDRCRkM3QTk0NEFGNDRBMDQ0QkZDNzgwMDQ5Rjg0OTA4NDlGODQ5MDg0OUY4QTgwMDkzRkUwQgorOjIwNzI0MDAwMDAyMDdCRkU0QTg4NEE1MDdCRkU0QTUwNEJGQzRBNTQ3QkZFNEE1NDRCRkM0QTUwNEFEOEFBRDY5NTU0MDg1MDU2Cis6MjA3MjYwMDAwMjQ4Nzk1MDRCRkM0OEUwNzk1MDRBNEU0QzQ0NEE0ODdCQkU0Q0E4NEFBODRBRkU0OTA4NDkwODZBMDg5NDA4RjIKKzoyMDcyODAwMDIwNDAyMDQwMjA0MDNFNDAyMEZFMjA4NDNGMjAwMjIwMDIyMDFBMjBFMjUwMDI1MDAyODgwMzBFMEEwNDA0MDA4MAorOjIwNzJBMDAwMjIyMDE0MjAwQzIwMzI3RTA4NDRGRkE0MjhBMDdGMjBBOTIwMjkyMDI5NTAyRDUwMkE4ODA4ODgwOTA2MEEwNEJGCis6MjA3MkMwMDAwODIwMDgyMDdGMjAwODQwMTQ3RTIyODRGRjI4MDIyMDNBMjAyQTIwMkEyMDNBNTAwMjQ4MDI4ODBBODYwNTA0MTEKKzoyMDcyRTAwMDAwMjAwNzIwNzgyMDA4N0VGRjQyMDg4NDI4MjA0QjIwNDkyMDZCNTA0OTUwNDk5MDdGODg0MTA4MDIwNjBDMDRBQgorOjIwNzMwMDAwMTA0MDA4NDA3RTQwMjRGRTI0ODQxOTI4RkYyMDAwMjA3RTIwNDIyMDQyNTA3RTUwNDI5MDQyODg3RjBFNDIwNEZFCis6MjA3MzIwMDAwODIwMEMyMDEzMjAzRjNFQzA0MjNFNTQyMjk0M0UxMDAwMTBGNzEwMTEyODU1MjgzMzQ4NTU0NDkxODYzMzA0ODIKKzoyMDczNDAwMDAwNDAzRTQwMjI3QzIyODQyMzc0MjI1NDM2NTQyQTc0MkE0QzM2NDAyNjQ0MjEzQzQxMDI0MDgyODA3RTAwMDA0MAorOjIwNzM2MDAwNDAwMDIzRjgyMjA4RkUwODAyMTg4QjI4NEFBODUyNDg1MjY4NEVBODMzMUFDNDA2MDQwNjA4MDIxMDAyMDAwMDNDCis6MjA3MzgwMDAwMDAwN0U3QzQyNDQ0MjdDNDI0NDY2N0M1QTQ0NEE3QzRBNDQ1NkZFNTUyODYxNDQ0MDgyNDA2MjgwMUUwMDAwREQKKzoyMDczQTAwMDAwMjA3REFDNDUyNDQ1QUM0NTI0NEQyNDZERkM1NDIwNTVGODU0ODg2QzUwNkMyMDQ0NUE0NDhBNDNGRTgwMDBENQorOjIwNzNDMDAwMTAwODE4RkMxNDg4RkU4ODEwODgyODk4MjZEOEMyQTgyNEE4MzZBOEZGRDgyNEQ4MjQ4QTVBOEE0OTBBOTIwNEE3Cis6MjA3M0UwMDAwMDIwN0VBNDQyNjg0MjMwNDI0ODY2ODQ1QTQ4NEI2QTRBREM1NkFDNjUzMjQxMDA0MDgyODA2MjgwMUMwMDAwMjQKKzoyMDc0MDAwMDBGRTAwODIwMDgyMDA4MjAxMDIwMTAzRTYwMDAwRkYwMDgyMDA0MjAwMjQwMDE4MDAxODAwMjYwMEMxQzcwMDg5NgorOjIwNzQyMDAwMDgwMDdGNzgwODQ4M0U0ODAwNDg3RjRFODE4MDNFN0MwMjg4M0U0ODIwNDgzRTMwMDIzMDAyNDgwQTg2MDUwNEFDCis6MjA3NDQwMDAwODAwMDg3OEZGNDgwODQ4RkY0ODkyNEU3RTgwMTA3QzI4NDQ3RTI4MDgyODBGMTBGODEwMDgyODA4NEUwOTg0RTAKKzoyMDc0NjAwMDA4MDA3Rjc4MDg0ODdFNDgwMDQ4RkY0ODkwODYzRTc4NDQ0OEZGNDg0OTQ4N0YzMDQ5MzA3RjQ4NDk0NjhCODRBQgorOjIwNzQ4MDAwMDQ0MDA0NDA3QzdDMDQ0MDNDNzgwNDQwN0M3RTA1NDAwMDgwN0ZGRTA0MTAwMjIwMDE0MDAxODAwNjYwMzgxQzQyCis6MjA3NEEwMDAwMjAwMDEwMDdGRkMwNDQwMDM4MDA2NjBGODFFMjI4ODJFRTgyMjg4MkVFODIyODgyRUU4NDI4ODVGRTg4MDA4MzIKKzoyMDc0QzAwMDAyMDAyMTdFMTIwMkZFMjIwQkZFNEEyMjRCRkUyQUFBMzNGRTEyNzIyQUFBNEFBNjgzMjIwMjIyMDIwQTAyMDRGMQorOjIwNzRFMDAwMjAyMDEwMjAxMDYwRkU1MDIwODgyMDhDM0Q0NjI2MjAyNDEwMjQxMDI0NDAyNDIwNDQxMDQ0MTg5NDA4MDgwMERECis6MjA3NTAwMDAyMDgwMTA4MDAxRkVGRDIwMjIyMDNERkUyNDIwMjRGQzI0QTQyNEE0MjRBNDQ0QTQ0NEFDOTQyMDA4MjAwMDIwMTIKKzoyMDc1MjAwMDIwODAxMDgwMTFGRUZEMDAyMjM4MjNDMDNDNDAyNDdDMjdDMDI0N0UyN0MwMjQ0MDQ0NDI0NDQyOTQzRTA4MDBGQworOjIwNzU0MDAwMjA4MDEwODAxMUZFRkQwMDIyRkMyMDg0M0NBNDI0OTQyNUZFMjQ4NDI0ODQ0NDg0NDUwNDk1MDQwQTE0MDAwODUyCis6MjA3NTYwMDAyMDgwMTA4MDEwODBGREZFMjEyMDIyMjAzQ0EwMjVGQzI1MjAyNjIwMjVGQzI0MjA0NDIwNDQyMDk3RkUwODAwN0IKKzoyMDc1ODAwMDIwODAxMDgwMTFGRUZEMDAyM0ZDMjEwNDNERkMyNTQwMjU0MDI1NEMyNTcwNDU0MjU1NDI4QTQyMDIzRTA0MDAzNAorOjIwNzVBMDAwMjEwMDExMDBGREZDMjI0MDI1RkMzODQwMjg5MDI5RjgyODA0Mjk1MDI5NTA0OTUwNDk1MkE5NTIxNjRFMDAwMDFCCis6MjA3NUMwMDAyMDgwMTA4MEZERkUyMTIwMjJGQzNDNjAyNDkwMjdGRTI0MDgyNUU4MjUyODI1RTg0NDA4NTQwODg4MjgwMDEwQjEKKzoyMDc1RTAwMDEwMDAxMUZDMTAwODE0MTA1NDIwNTg0MDkwRkUxMTRBMTA0QTE4OTIyNTEyMjIyMjQ0NDQ0MTg0ODYxNDAwMDhDRgorOjIwNzYwMDAwMTA0MDEwNDAxN0ZFMTQ0MDU0NDA1QkZDNTA0MDkwNDAxN0ZFMTA0MjI4NDIyNDQyNDQ1NDQwNDg4MDQwMDA0MEJGCis6MjA3NjIwMDAxMDIwMTAyMDEwMjQxM0ZFMTQyMDU5MjQ1MTI0OTEyNDExMjQxMUZDMjgyMDI0MjA0NDIyNDAyMjgwMUUwMDAwOTYKKzoyMDc2NDAwMDEwNDAxMDQwMTRBMDE0QTAxOTEwNTIwODU1RjY1MTEwOTExMDI5MTAyNTUwMjUyMDQxMDQ0MTA0ODBGQzAwMDA1OQorOjIwNzY2MDAwMTAwMDEzRkUxNDQwMTQ0MDU4NDA1MDgwNTA4MDkxRkMyMjg0MzQ4NDI4ODQyNDg0NDQ4NDQwRkM4MDg0MDAwMEMyCis6MjA3NjgwMDAxMDA4MTAzQzEzRTAxNDI2MTUyNDU4QTg1MEIwOTdGRTEwMjAxMDIwMjgyMDI0MjA0NDIwNDAyMDgwQTAwMDQwN0IKKzoyMDc2QTAwMDEwODAxMDQwMTQ0ODE3RkMxODQwNTA0MDUwNDA5MDQwMTNGQzI4NDAyNDQwMjQ0MDQwNDQ0N0ZFODAwMDAwMDBBQgorOjIwNzZDMDAwMTA0MDEwMjAxM0ZFMTQ0MDE0NDA1ODg4NTA4QzkzRjgxMTEwMTAyMDI4NDAyNDg4NDUwNDQzRkU4MTAyMDAwMkI2Cis6MjA3NkUwMDAwMjAwMDQyMDA4MTAxRkY4MDAwODFGRjgxMDA4MTAwODFGRjgwOTAwMDkxODEyQTAwMjQwMDQyMDE4MUM2MDA4RjEKKzoyMDc3MDAwMDEwQTAxMEIwMTUyMjE1MjYxQjI4NTUzMjUxMjI1MTFFOTE0MDEwNDQzN0ZFMjg0MDQ0NDA0MDQwODA0MDAwNDAxNQorOjIwNzcyMDAwMTAwODEyMDgxMTEwMTdGQzE4NDA1MDQwNTNGQzkwNDAxMDQwMjg0NDI3RkUyNDQwNDA0MDQwNDA4MDQwMDA0MDk3Cis6MjA3NzQwMDAxMDAwMTNGQzEwNDAxNDQwMTVGODU4ODg1MDg4OTdGRTEwMDAzMUY4MjkwODI1MDg0NTA4NDFGODgxMDgwMDAwNjYKKzoyMDc3NjAwMDEwNDAxMDQwMTBBMDE0OTA1NTRDNUEyNjU1Rjg5MDEwMTAxMDIwMjAyOUZDMjUwNDQ1MDQ0MTA0ODFGQzAxMDQ0OQorOjIwNzc4MDAwMjQwMDIyMDQyMTdFMjQwNDJDNDRCNDI0QTQyNEE0ODQyNTk0MjZBQzI0QTQ1NDY0NEMwNDQ0MDQ4NDE0MDQwODU5Cis6MjA3N0EwMDAxMDIwMTAyMDEwM0UxNDIwMTVGQzU5MDQ1MUZDOTEwNDExMDQxMUZDMjgyMDI0MjA0M0ZFNDAyMDgwMjAwMDIwODgKKzoyMDc3QzAwMDAxMDAwMTE4MTEzMDEyQzAyNDMwMTgxRTYwMjQxMDIwMTQyNDU5Mjg1MTYwOTg1MDI0NTAyMjg4NDEwRTg2MDRGNQorOjIwNzdFMDAwMjEwMDIxM0UyMTIyMkZFMjI5MjJCMTNFQTEyMkE3QTIyNEEyMzRCRTJGQTIyNEEyNDQ0MjQwNDI4MDhBMDEwNDA5Cis6MjA3ODAwMDAxMDAwMTFGQzExMDQxNUZDMTUwNDU5RkM1MTQ0OTAyMDEzRkUxMDAwMjkwQzI0ODgyNDkwNDdGRTgwMDAwMDAwRjcKKzoyMDc4MjAwMDExRkMxMTI0MTUyNDE1RkMxOTI0NTEyNDUxRkM1MDAwOTdGRTEyNDAyQTRDMjYzMDIyMjA0Mjk4ODMwRTAyMDQwNworOjIwNzg0MDAwMjE4MDI3NzgyNDQ4MkM0ODM3NDhBNDRFQTQ4MEE0RkMyNzQ4MzQ0ODJENDgyNjMwNEMzMDQ0NTg4NDhFMDUwNEVBCis6MjA3ODYwMDAwQkY4MUEwODEzRjgzMDQwNTdGRTkwQzAxMTcwMTI0QzE0NDIxMTA4MDkxODEyQTAwNDQwMDgzMDMwMEVDMDA0MjQKKzoyMDc4ODAwMDEwNDAxMDIwMTNGRTE0MDQ1ODAwNTFGODUwMDA5MUY4MTEwODIxRjgzMTA4MjlGODQ1MDg0MDAwODdGRTAwMDAyNworOjIwNzhBMDAwMTA0MDEwMjAxM0ZDMTIwNDE2MDQ1QkZDNTIwMDUzRkM5MzU0MTU1NDJERkMyNTU0Mjk1NDQ5NTQ5MTA4MDAwMDZDCis6MjA3OEMwMDAyMDAwMjBGQzI0ODQyMjg0MkFGQ0IwODRBRUZDQTJBMjIyOTQzMjg4MkFBNDRBQzI0MjgwNDUwMDg4RkUwMDAwRkYKKzoyMDc4RTAwMDEwQzAxM0JFMTIxMjE2OTI1QTUyNTJBMjUzNTQ5Mjg4MTFGQzExMjQyOTI0MjVGQzI1MjQ0MTI0ODFGQzAxMDREQQorOjIwNzkwMDAwMTFGODExMDgxMUY4MTUwODE1Rjg1ODAwNTNGQzkyNTQxM0ZDMTAwMDMzRkMyOTA4NDQ5MDQwNjA4MTlFMEUwNDYxCis6MjA3OTIwMDAxMDQwMTAyMDE3RkUxMTA4MTQ5MDVCRkU1MjUyOTI1MjEyOEExMjAyMkFGQTI2OEEyMkZBNDIwMjgyMEEwMjA0OUUKKzoyMDc5NDAwMDNGMDgyMTA4M0YwODIxRkUyRTA4MjA0ODVGMjg1NDA4QTUyODE5MTAxMTE4MjJBMDA0NDAwODMwMzAwRUMwMDQ3MQorOjIwNzk2MDAwMTAwMDEzREMxMDY0MTM1NDE0Q0M1OTU0NTI2NDkwODAxMUZDMTEwNDI5MDQyOUZDNDEwNDQxMDQ4MUZDMDEwNDVBCis6MjA3OTgwMDAyMDgwMjdGQzI0NDQyNjRDMkQ1NEI3RkNBNEM0QTU2NDI2NTQyNDQ0MkZGRTUwNDA0OEEwNDExODg2MEUxODA0MTUKKzoyMDc5QTAwMDEwMTAxMDc4MTNDNDEyNEMxNTUwNUJGRTUwRTA1MTUwOTI0RTE0NDQyM0Y4MzI0ODJCRjg0QTQ4NDNGODgyMDgxNAorOjIwNzlDMDAwMjEwQzI4ODgyNDEwMkRGRTMwMjBBMEM0QUYyOEE0RDAyNzM4MjQ1NDI1OTQ1NjUwNDQyMDhCMDAxMEZFMDAwNDM1Cis6MjA3OUUwMDA3RUZDMTAyMDJBNDQ1Q0E4QTk1MDU0QjhBQTU0NTg5NjA5MjAwMTA4MTFCMDEyNDAyNDIwMDgxMDMwMEVDMDA0RDcKKzoyMDdBMDAwMDIwN0MyN0MwMjI0NDIxMjgyRkZDQjUyNEE3RkNBMDAwMjc4NDI0RkUzNzg0MkNBNDQ3OTQ0NTA0ODU5NDA2MDg0QQorOjIwN0EyMDAwMTdEODI0NDgzN0Q4MkQ2ODI0NDg3RkZFODgyMjdFRkMxQzcwMjlBQ0ZGRkUzNTYwQzkxRTA2QzQzODNFRTAwNDNDCis6MjA3QTQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDI5MTAyNDg4MjI0NDQyNDQwMDAwMDAwMDAwMDAwMDAwNTUKKzoyMDdBNjAwMDAxMDAzRkZDMDEwMDNGRjgwMjAwN0ZGRTA0MTQwRkZFMTIxMDIxMTA0MTUwMDAyMDI0ODgyMjQ0MjI0MjQwMDAzNAorOjIwN0E4MDAwMDA4MDNDODAyNUZDMjYwNDI1RTQzRDI0MjUyNDI1RTQzRDI0MjUwNDAwMjgyODk4MjQ0NDY2NjZDMjIyMDAwMDE5Cis6MjA3QUEwMDAwMTA0N0ZGRTAxMDAzRkZDMTAwODFGRjgwNDIwRkZGRTAwMDAxRkY4MTAwODFGRjgyODg4MjQ0NDY2NjZDMjIyQUEKKzoyMDdBQzAwMDAxMDAwMDgwM0ZGQzIwMDQyMDA0M0ZGQzIwQTAyMDkwMkZGRTIwODAyMTQwMjE0MDQyMjA0NDEwNTgwRTgwMDRDOAorOjIwN0FFMDAwMDEwMDAwODAxRkZDMTAwNDFGRkMxMDIwMTIyMDExQTAxNEEwMjMyMDIxM0UyRkUwNDAyMDQwMjA4MDIwMDAyMEMzCis6MjA3QjAwMDAwMTAwMDA4MDNGRkMyMDA0MjAwNDNGRkMyMDAwMjAwMDJGRkMyODA0MjlFNDI5MjQyOUU0NDgwNDQ4MTQ4ODA4RjAKKzoyMDdCMjAwMDAxMDAwMDgwM0ZGQzIwMDQzRkZDMjAwMDI3RjAyNDEwMjdGMDIwMDAyRkY4Mjg4ODRGRjg0ODAyODdGRTAwMDA5QgorOjIwN0I0MDAwMDEwMDAwODAzRkZDMjAwNDNGRkMyMjIwMjIyMDNFM0UyMjIwMkUzQzIyMjA1RTNFNDIyMDQyMjA4MjIwMDIyMEY4Cis6MjA3QjYwMDAwODAwMDQwMDA0MDAzRjgwMDEwMDAyMDAwNjAwMEQwMDM0ODBDNDgwMDQwMDA0MDAwNDAwMDQwMDA0MDAwNDAwMTAKKzoyMDdCODAwMDIwMDAxMDAwMTFGQ0ZEMDQwNTA0MDkwNDExMDQzOUZDNTUwNDk1MDAxMTAwMTEwMjExMDIxMTAyMTBGRTEwMDBGMQorOjIwN0JBMDAwMjAwMDEwMDgxM0ZDRkM0MDA0NDAwODQwMTdGRTM4QTA1NEEwOTBBMDExMTAxMTEwMTIwODEyMDgxNDA2MTgwNEY5Cis6MjA3QkMwMDAyMDIwMTAyMDEwMjBGQzIwMDUyMDA5MjAxMTNFMzkyMDU1MjA5NTIwMTEyMDExMjAxMTIwMTEyNDE3RkUxMDAwREMKKzoyMDdCRTAwMDIwNDAxMDQwMTA0MEZERkMwNDQwMDg0MDEwNDAzN0ZFNTg0MDk0NDAxMDkwMTEwODEyMEMxN0ZDMTIwODEwMDBGQgorOjIwN0MwMDAwMjAyMDEwMjAxMDIwRkZGRTA0MjAwODIwMTAyMDMwMjA1OUZDOTUwNDExMDQxMTA0MTEwNDExRkMxMTA0MTAwMDlDCis6MjA3QzIwMDAyMEEwMTA5MDEwODhGRkZFMDQ4MDA4ODAxMEZDMzg4ODU1MDg5MTkwMTI1MDEyMjAxNDUwMTg4ODExMEUxNjA0MjgKKzoyMDdDNDAwMDIwODAxMDgwMTA4MEZDRkUwNTQwMDk0MDEyNDAzODdFNTQ0MDk0NDAxMDdFMTA0MDEwNDAxMDQwMTA0MDEwNDA0RQorOjIwN0M2MDAwMjA4MDEwODAxMDgwRkNGRTA1MjIwOTI0MTIyMDM5Mjg1NUE0OTUyNDEyMjIxMjIyMTQyMjE4MjAxMEEwMTA0MERCCis6MjA3QzgwMDAyMDA4MTAxQzEzRTBGQTIwMEEyMDEyMjAxM0ZFM0EyMDU2MjA5MjEwMTIxMDEyMTgxMjQ4MTJBQzEzMjYxMjA0RjEKKzoyMDdDQTAwMDIwMDAxMUZFMTAwMkZDMDIwNUZBMDgwMjExRjIzOTEyNTUxMjk1MTIxMUYyMTExMjEwMDIxMDAyMTAxNDEwMDg5QQorOjIwN0NDMDAwMjAyMDEwMjAxMDNFN0MyMDA1RkMwOTA0MTEyNDM5MjQ1NTI0OTUyNDExMjQxMTI0MTA1MDEwODgxMTA0MTIwNEVCCis6MjA3Q0UwMDAyMEEwMTBBMDEwQTA3Q0E0MDRBODBBQjAxMUEwMzhCMDU1QTg5MkE0MTBBMDExMjAxMTIyMTIyMjE0MUUxMDAwODgKKzoyMDdEMDAwMDIwODgxMDg4MTNGRUZDODgwNDg4MDhGODEwODgzMDg4NThGODk0ODgxMDg4MTNGRTEwMDAxMDg4MTEwNDEyMDJDQworOjIwN0QyMDAwMjEwNDEwODgxMDUwRkRGQzA1MjQwOTI0MTFGQzM5MjQ1NTI0OTFGQzEwMjAxMDIwMTNGRTEwMjAxMDIwMTAyMDY2Cis6MjA3RDQwMDA0MTAwMjEzQzI3RDRGRDE0MEJENDA5MjQxN0I0Mzk0ODU1NDA5N0ZFMTBBMDEwQTAxMTEwMTIxODE0MEUxODA0MEUKKzoyMDdENjAwMDIyMDgxMTA4MTAxMEZCRkMwODQwMTA0MDEzRkMzODQwNTQ0MDk3RkUxMDAwMTAyNDEyOTIxMjUyMTI1MjE0MDA5RAorOjIwN0Q4MDAwNDA0MDI3RkUyMDQwRkJGQzA4MDAxMUY4MTEwODMxRjg1ODkwOTdGRTEwMDAxMUY4MTEwODExMDgxMUY4MTEwOEFBCis6MjA3REEwMDA0MDQwMjdGRTIwMDBGN0JDMTRBNDI3QkMyMTIwNzdGQ0E5MjAyN0ZDMjEyMDJGRkUyMzQ0MkUyODIyOTAyMzBDMDQKKzoyMDdEQzAwMDAwMDA3RkZFMDEwMDAxODAwMTYwMDEzMDAxMjAwMTAwMDAwMDA5MDA0ODg4NDg4NDQ4MTY4ODE0MDdGMDAwMDA1QQorOjIwN0RFMDAwMDEwMDAxMDAwMTAwMDFGODAxMDAwMTAwMDEwMDdGRkUwMDAwMDEwODI4QzQyODg2MjgxNDQ4MTA0N0YwMDAwMDk5Cis6MjA3RTAwMDAwMDEwN0UxMDAyMTAyNUZFMTQxMDA4OTAxNDUwMjIxMDQyNTAwMDIwMDkwMDI4ODQyODkyNDgxMjA3RjAwMDAwQ0IKKzoyMDdFMjAwMDA4MDAwOEZDN0YyNDA4MjQ3RjI0MDg0NDdGNDQwODk0MDkwODAwMDAwOTAwMjg4NDI4OTI2ODEyMDdGMDAwMDAyOAorOjIwN0U0MDAwMDEwMDAxMDAxRkYwMDEwMDdGRkMwMTAwMUZGMDAxMDAwMTAwN0ZGRTAwMDAwOTAwMjg5NDI4MTI2N0YyMDAwMEFFCis6MjA3RTYwMDAwMDAwN0ZGRTAyMDAwNDAwMUZGODEyNDgxMjQ4MTI0ODEyNDgxMDI4MDkxMDI4ODQyODkyNjgxMjA3RjAwMDAwRDgKKzoyMDdFODAwMDA4N0MwQkMwMTA0MDEwNDAzN0ZFNTA0MDkwNDAxMDQwMTNGQzAwMDAwOTAwMjg4NDI4OTI0ODEyMDdGMDAwMDAzRgorOjIwN0VBMDAwMDgyMDA0NDAzRkZDMDEwMDAxMDAxRkY4MDEwMDAxMDA3RkZFMDAwMDA5MDAyODg0Mjg4MjY4MTIwN0YwMDAwMEIzCis6MjA3RUMwMDAwMTAwNDEwMDIxRkMyMjQ4MEE1MDE0NDA2MEEwMjExMDI2MEUwMDA0MDEwMDI4ODQyODgyNjgxMjA3RjAwMDAwRkEKKzoyMDdFRTAwMDAxMDA3RkZDMDEwMDFGRjAwMDAwN0ZGRTQwMDQwN0MwMDQ0MjE4M0UwMTAwMjg4ODI4ODQ2ODE0MDdGMDAwMDAwMgorOjIwN0YwMDAwMTAwMDEyM0MyOTAwQzgwMDEyN0UzMTA4RDA0ODEwODgxMzA4MTEyODAwMTAyOTA0Mjg5MjY4MTIwN0YwMDAwMERECis6MjA3RjIwMDAwMDQwN0U0MDQyN0U3RTg0NDhDNDdGMjg0ODEwNEEyODY2Q0U0MjA0MDAwMDA5MDgyODg0MjgxNDY3RjAwMDAwM0EKKzoyMDdGNDAwMDdGRkU0NDIwNUZGODQ1MjA1RkZDNDIwMDQ3RjA1QzEwNDdGMDQwMDA3RkZFMDEwMDQ4ODQ0ODEyQzdGMjAwMDA3MAorOjIwN0Y2MDAwMEUxMDcwMjAxMEZDRkU4NDEwRkM3Qzg0NDRGQzQ0ODQ3Q0ZDMDAwMDA5MDgyODg0Mjg5NjY4MTIwN0YwMDAwMDRECis6MjA3RjgwMDAwODIwRkYyMDIyM0UzRTQ4MDA0ODNFQTgwNDEwMEYxMEY4MjgyOENFMTAwNDAxMDAyODg0MjgxMjY3RjIwMDAwRTkKKzoyMDdGQTAwMDE3QzgxMDg4MTEwOEZGRkUzMTU4M0IxQzU1MkE5OTJBMTM0ODExMDgwMDAwMjkwODI4ODQ2ODI0MDdFMDAwMDA0RQorOjIwN0ZDMDAwNDEyMDJGRkMwMTIwODdGQzUxMjAxN0ZDMjUyNEU1QjQyNjRDMjQ5NDAwMDgyODgwMjg5NDY4MTIwN0YwMDAwMDA0Cis6MjA3RkUwMDAxMDQwN0VGQzI5NDhGRTMwNDRDRTdGRkM0NDIwN0RGQzEwODhGRUE4MTBBODEwNTAwMDg4MkEwMDI5MTQ0N0YyMzAKKzoyMDgwMDAwMDAxMDAwMTAwMDEwMDNGRjAwMTEwMDExMEZGRkUwMTEwMDExMDNGRjAwMTAwMDEwMDAxMDAwMTAwMDEwMDAxMDBCOAorOjIwODAyMDAwMDEwMDAxMDAxRkY4MDEwODdGRkUwMTA4MDEwODFGRjgwMTAwM0ZGODAxMDAwMTAwN0ZGRTAxMDAwMTAwMDEwMEJFCis6MjA4MDQwMDAwMTAwMDEwQzdEMzAwNUMwMDk0MDA5MzAxNTFFNjIwODFGRjgxMDA4MTAwODFGRjgxMDA4MTAwODFGRjgxMDA4QzQKKzoyMDgwNjAwMDEyMDgwOTA4MDkxMDAwMjA3RkZFNDEwNDAxMDAzRDA4MDU5MDA5NjAwOTIwMTExMDIxMTg0MTBFMDUwNDAyMDBCOQorOjIwODA4MDAwMDEwMDAxMTgzREEwMDU0MDA5MzAzNTBFMDIwNDA4MjBFQkFDMkNCMDJDQTg0QUE4NDkyNjhBMjQyOEEwMTA0MDhDCis6MjA4MEEwMDAwMDAwRkVGMDIwOTAyMDkwMjA5MDIwOTA3ODkwNDg5MEM4OTA0OTEwNDkxMDc5MTI0QTEyNDIxMjA0MEUwODAwRDMKKzoyMDgwQzAwMDAwMDA3RUZDMTAyMDEwMjAyMDIwMjAyMDNERkU2NDIwQTQyMDI0MjAyNDIwM0MyMDI0MjAyMDIwMDAyMDAwMjAxQgorOjIwODBFMDAwMDAwMDdERjgxMDEwMTAyMDEwNDAyMDgwM0RGQzY0NTRBNDU0MjRBNDI1MjQzRTQ0MjQ4NDIxMDQwMjI4MDAxMDQ4Cis6MjA4MTAwMDAwMTAwMDEwMDdGRkMwMTAwM0ZGODAxMDBGRkZFMDEwMDdGRkMwMjAwMDQwMDBGRjgzODA4QzgwODBGRjgwODA4RkMKKzoyMDgxMjAwMDAwNDBGQzQwMjNGQzIwODAyMEEwMjEyMDc5MjA2QkZDQTgyMDI4MjQyRkZFMjgyMDM4MjAyODIwMjAyMDAwMjA3QQorOjIwODE0MDAwMDAyMEZFMjAxMDIwMTNGRTIwMjAyMTI0MzkyNDY5MjQ2OTI0QTlGQzI4MjQyODIwMzgyMjI4MjIyMDFFMDAwMDg5Cis6MjA4MTYwMDAwMDAwRkRGRTEwMDgxMDg4MjA4ODIxMDgzREZFNjQxODY0MjhBNDQ4MjQ4ODI1MDgzRTA4MjQwODAwMjgwMDEwRDEKKzoyMDgxODAwMDAwMDhGRUZDMTA4MDEwODAxMDgwMjBGRTNDOTA2NDkwQTQ5MDI0OTAyNDkwM0QxMDIxMTAwMjEwMEMxMDAwMTBGNworOjIwODFBMDAwMDAwMEY4N0MyNzgwMjA0MDIwNDA0M0ZDN0MwODY0MTBBNDIwMjQ0MDI0ODAzRDAwMjYwMDI1QzAwODNFMDAwNDRGCis6MjA4MUMwMDAwMDAwRkJGODIyMDgyMjI4MjIzODQzMjhGQUE4NEE0ODRBNDg0QUE4NEIyODdBMkE0QzBBNDQwNjA4MDYxMDAyRTQKKzoyMDgxRTAwMDAwMjBGRTIwMTAyMDEwMjQxMUZFMjAyMDNDMjA2NDIwNjdGRUE0NDAyNDQwMjQ5MDNDODgyNUZDMjA4NDAwMDBDNAorOjIwODIwMDAwMDA5MEZDOTAxN0ZFMTA5MDIwOTAyMDAwM0QwODY1MDhBNTEwMjQ5MDI0QTAyNDQwM0NBMDIxMTgyNjBFMTgwNDE1Cis6MjA4MjIwMDAwMDA0RkZGRTEyMDAxMjAwMjJGRTNBMjA2QTIwNkEzQ0FBMjQyQTQ0MkE0NDNDNDQyNDg0MDkwNDEyMjgyNDEwMjIKKzoyMDgyNDAwMDAyNDAwMjIwN0ZGRTAyODAwNDlDMDRFMjBCODIxMDdFMjAwMEZGRkUwNDAwMEZGODM4MDhDODA4MEZGODA4MDhDQgorOjIwODI2MDAwMDA4MDAwODBGRUZFMTE0MDExNDAyMjQwM0M3QzI0NDA2NDQwQTQ3QzI0NDAyNDQwM0M0MDI0NDAyMDQwMDA0MEQ2Cis6MjA4MjgwMDAwMDQwRkU0MDEwQTAxMDkwMjExODIyMEU3QzA0NjgwMEFCRkMyODQwMjg0MDI4NDAzODQwMjg0MDI3RkUwMDAwREIKKzoyMDgyQTAwMDAwMUNGREUwMjEyMDIxMjAyMTIwNDFGRTc5MjA0OTIwQzkyMDQ5MjA0OTEwNDkxMjc5MEE0OTZBNDE5NjAxMTI5QgorOjIwODJDMDAwMDA0MEZFMjAxMDIwMTNGRTEwMDAyMjA4M0QwQzY1MDhBNDg4MjQ5MDI0OTAzQzEwMjQyMDIwMDAwN0ZFMDAwMEM2Cis6MjA4MkUwMDAwMDQwRkMyMDIwMjAyM0ZFMjIwMjI0ODQzODgwNjg4ODY4OUNBOEUwMjg4MDI4ODQzODg0Mjg4NDIwN0MwMDAwNjkKKzoyMDgzMDAwMDAwOTA3QzkwMTNGQzEwOTQyMDk0MjNGQzNBOTA2QTkwQUJGRTJBOTIyODkyMzkxQTI5MTQyMjEwMDQxMDA4MTA2QQorOjIwODMyMDAwMDAwNEY3RTQyMjg0MjI5NDQyOTQ0Mjk0RjdENDUyOTQ1Mjk0NTI5NDUyOTQ1NDk0NzQ4NDQ4ODQ1MDk0MDAwODVCCis6MjA4MzQwMDAwMDg4N0M4ODEzRkUxMDg4MTBDODIwQTgzQzIwNjdGRUE0ODAyNDgwMjQ4MDI0ODAzQzgwMjQ4MDIwRkMwMDAwRkIKKzoyMDgzNjAwMDAwNDBGQzQwMjNGRTIwNDAyMjQ4MjE0ODc5NTA2RkZFQTg0MDI4QTAyOEEwMzkxMDI5MTAyMjA4MDQwRTA4MDRCNQorOjIwODM4MDAwMDA4MEZDODAyMEJFMjdDMDIwNEM0MDcwNzlBMjZFMUVBODAwMkZGQzI5MjAyOTIwMzkyMDJBMjIyNDIyMDgxRUUzCis6MjA4M0EwMDAwNDQwMjQ0MDI3NEMyNDcwMjQ0MjI3NDI3ODNFMDAwMEZGRkUwNDAwMEZGODE4MDg2ODA4ODgwODBGRjgwODA4NEEKKzoyMDgzQzAwMDAwMDA3REZFMTEwMjExMDIyMUZFMjEwMjNEN0E2NTRBNjU0QUE1NEEyNTdBM0Q0QTI1NDIyMTAyMDEwQTAxMDRGNgorOjIwODNFMDAwMDAyMDAwMjBGRTQwMTFGQzExMDQyMTk0M0Q1NDY1NTRBNTI0MjU1NDI1NTQyNTk0M0QwNDI1MDQyMUZDMDEwNERFCis6MjA4NDAwMDAwMTAwRkQwMDExRkMxMzA4MjQ5MDIwNjA3ODUwNDk4RUNFMDQ0OUY4NDkwODQ5MDg3OTA4NDlGODQxMDgwMDAwQTMKKzoyMDg0MjAwMDAwMTBGQ0QwMTcxNDExMTQyMTEwMjdGRTc5MTA0OTU0Qzk5NDRCMDg0RDEwNDkxQTc5MkE0OTRBNDU4NjAyMDIxRgorOjIwODQ0MDAwMDAyMEZGRkUxMDIwMTFGQzIwMjAyM0ZFN0MwMDY1RkNBNTA0MjUyNDI1MjQyNTI0M0M1MDI0ODgwMTA0MDIwNEJECis6MjA4NDYwMDAwMEEwRkM5MDExMTAxMUZFMTMxMDI1MTAzREZDNjUxMDY1MTBBNUZDMjUxMDI1MTAzRDEwMjVGRTIxMDAwMTAwODgKKzoyMDg0ODAwMDAwNDA3QzIwMTNGRTEwMDAxMTA0MjA4ODNDNTA2N0ZFNjQwMEE1RkMyNTA0MjUwNDNEMDQyNUZDMjEwNDAwMDA1MworOjIwODRBMDAwMDA0MEZDMjAxM0ZFMTIwNDI0MDAyM0ZDM0MyMDY1MjBBNTIwMjUzQzI1MjAzRDIwMjZBMDIyNjAwNDFFMDgwNEQ3Cis6MjA4NEMwMDAwODQwRkM5MDExRjgxMDQ4MTA4MDI3RkUzODkwNjkyOEFBNDYyRDk0MjgyMDI4QzgyQjEwMzgyMDIwQzAwMzAwRkEKKzoyMDg0RTAwMDAwMjBGREZFMTAyMDExRkMxMDIwMjNGRTM4MDA2OUY4QTk0ODI5MjgyRkZFMjk0ODM5MjgyOUZFMjAyODAwMTA3QQorOjIwODUwMDAwMDAwMEY5RkMyMTA0MjFGQzIxMDQyMUZDMzg4MDY5RkU2QTIyQUMyMjJBNTIyQThBM0EwMjJCRkEyMDE0MDAwODlDCis6MjA4NTIwMDAwMDQwMDAyMEZCRkMyMTA4MjA5MDIzRkU0MjQyN0M0NEE5RkMyOTQ4Mjk0ODI5NDgyOTY4Mzk1MDIwNDAwMDQwRjQKKzoyMDg1NDAwMDAwNDA3QzIwMTNGRTEyMDIxNDA0MjFGQzM4MDA2OUY4QTkwODI5RjgyOTA4MjlGODM5MDgyODAwMjdGRTAwMDA5QQorOjIwODU2MDAwMDA0MEZDMjAxM0ZFMTIwMjEyMDIyM0ZFM0EwMDZCRkVBQjUyMkI1MjJCRkUyRDUyM0Q1MjI1NTIwOTVBMTEwNDAyCis6MjA4NTgwMDAwMTA4RjkwODIzQkUyNDQ4MkFBODIxM0U3QTA4NkM0OEE4NDgyRkZFMjhFMDI5NTAzQTQ4MkM0RTIwNDQwMDQwREYKKzoyMDg1QTAwMDAwNDBGQzIwMTNGRTEwOTAxMTBDMjI0NDM4OTA2OTA4QUJGQzI4NjQyOEE4MjkxMDNCMTAyRDQ4MjE4RTAxMDQ0MgorOjIwODVDMDAwMDFGOEZFODgyMDMwMjFEODIzQkUyMDY0N0E5ODY5OTZBQTYwMkZGRTI4NjAyOEIwMzkyODJBMjYyNDIwMDAyMEIxCis6MjA4NUUwMDAwODAwN0Y3ODA4NDgzRTQ4MDA4NjdGNzg0OTQ4N0YzMDQwNDg4MDg0N0ZGQzA0MDAxRkYwNjgxMDBGRjAwODEwNDAKKzoyMDg2MDAwMDAyMDBGRDdDMjU0MDIyN0MyMjQ0MjE3Qzc5NDA2RTdDQUEyMDJCRkUyODcwMjhBODI4QTgzOTI2MkEyNDAwMjAzRQorOjIwODYyMDAwMDIxMEY5MTgyN0QwMjAxMDI3OUU0NEE0NzdBNEQwMjQ1N0Q0NTA5NDUxNjg1Rjg4NzUxNDUxMjQ0NTQ2MDI4NDc2Cis6MjA4NjQwMDAwMDIwRkRBNDEwQTgxNDkyMTI5NDIxMDgyMkY2M0MwMDY5Rjg2OTA4QTlGODI4MDAzOTA4Mjg5MDI3RkUwMDAwMUYKKzoyMDg2NjAwMDAwMDAwM0ZFRkQyNDIxRkMyMTI0NDFGQzc4MDBDQkZFNDgwMDQ5RkM0OTI0NDlGQzc5MjQ0OUZDNDAwMDA3RkU5MgorOjIwODY4MDAwMDA5MEZCRkUyMDkwMjEwMDIyOUU0NTY0N0E5ODY5MDhBQUY2MkMwMDJCRkMzODIwMjkyODIyMjQwNEEyMDA0MENDCis6MjA4NkEwMDAwMDkwRkJGRTIwOTAyN0ZFMjQwMjI5Rjg3ODA0NkJGRUE4ODAyRjQ0MjhFODJCMzAzOEU4MjcyNjIwQTAwMDQwQkQKKzoyMDg2QzAwMDAwOTBGQkZFMjA5MDI4MjgyNUZFNDAyMDdDRkM2QUE0QUFGQzI5QTQyQUZDMkFBNDNDRkUyNDQ4MjQyODAwMTA5RgorOjIwODZFMDAwMDEwMDAyQzAwQzMwNzdFRTAwMDAwRkYwMDgxMDBGRjAwMTIwN0ZGRTAyODAwMkEwMDRDMDE5ODI2NjdFMDAwMEZCCis6MjA4NzAwMDAwNDQwMjQ0ODE0NTBGRkZFMTExMDA5MjAzRkY4MjEwODIxMDgyNTg4MjU2ODI5MjgzMTA4MjEwODIxMjgyMDEwMEYKKzoyMDg3MjAwMDI4NDAyODUwQUE0ODZDNDBGRUZFNTQ0MDM4N0NGRTQ0OTI0NEJBQThENkE4OTMxMDkyMjg5MjRFODY4NDAwMDAzOAorOjIwODc0MDAwMjgxMDI4MThBQTE0NkNGRUZGMTA1NEZFMzg5MkZFRkU5MjkyQkE5MkQ2RkU5MjkyOTI5MjkyOTI5QTlBOTQ5NDQ2Cis6MjA4NzYwMDAwMDAwRkJGQzg4MjA4ODIwRjgyMDg4MjA4RkZFRjgyMDg4MjA4ODIwODgyMEY4MjA4ODIwODAyMDAwQTAwMDQwMTUKKzoyMDg3ODAwMDAwMDQ3QkZFNDgyMDQ5MjA3OTIwNDkzQzQ5MjQ0OTI0NzkyNDRCRkM0ODA0NDgwNDc4MDQ0ODA0MDAyODAwMTAxNworOjIwODdBMDAwMDAwMDdCRkU0QTAwNEEwODdCMEM0QTg4NEE0ODRBMzA3QTEwNEEyODRBNEM0QTg0N0IwNDRBMDAwM0ZFMDAwMDE1Cis6MjA4N0MwMDAwMDQwNzg0MDQ4NDA0RkZDNDg0MDdBNDg0QTQ4NEE0ODdBNDg0QkY4NEE0ODQ4NDA3ODQyNDg0MjAwM0UwMDAwQkYKKzoyMDg3RTAwMDAwNDA3ODQwNDg0MDQ4NTA3OTQ4NDk0NDRBNDY0QzQyNzg0MDQ4NEM0ODQ4NDgxMDc4MjA0OEMwMDMwMDFDMDAwMgorOjIwODgwMDAwMDA0MDc4NDA0ODQwNEJGRTRBNDI3QzQ0NDg2MDQ4QTA3OEEwNDhBMDQ5MjA0OTIyN0EyMjQ0MjIwODFFMTAwMEE3Cis6MjA4ODIwMDAxMTAwMTEwMDFGRjgyMTAwNUZGMDAxMDBGRkZFMDAwMDFGRjAxMDEwMUZGMDEwMTAxRkYwMTAxMDFGRjAxMDEwRDUKKzoyMDg4NDAwMDEwMDAxRUY4MjI4ODQyODhBNEE4MTQ5MjA4ODIzMDdFQzAwMDFGRjAxMDEwMUZGMDEwMTAxRkYwMTAxMDFGRjBGOAorOjIwODg2MDAwMDA0MDc4NjA0ODQwNDg5MDQ4ODg3OTA0NEJGRTQ5MDI0ODAwNzlGQzQ5MDQ0OTA0NDkwNDc5MDQ0OUZDMDEwNDM0Cis6MjA4ODgwMDAwMDQwMDA0MDc4NDA0QkZDNDg0MDc4NDQ0RkZFNDgwMDc4NDA0ODQwNEJGQzQ4NDA3ODQwNDg0NDQ3RkUwMDAwRTgKKzoyMDg4QTAwMDAwOTA3ODkwNDg5MDQ4OTA0QTkyN0E5NDRBRDg0QTkwN0E5MDRBOTA0QTkwNEE5MjdBOTI0QkQyNDYwRTAwMDA3MworOjIwODhDMDAwMDA0MDdDN0U0ODg0NDkwODRFMTA3OTIwNDhDMDRGNDA3ODdFNDg4NDQ5NDg0QTUwNzgyMDQ4QzA0MzAwMUMwMEM3Cis6MjA4OEUwMDAwMDgwNzg5MDQ5MDg0QkZDNzgwNDRBNDA0QTQwN0JGQzRDNDA0ODQwNEZGRTc4NDA0ODQwNDA0MDAwNDAwMDQwQjAKKzoyMDg5MDAwMDAwNDA3ODQ4NEJGQzQ4NDA0QTQ0Nzk0ODQ5NTA0RkZFNzhFMDQ4RDA0OTUwNDk0ODdBNEU0QzQ0MDg0MDAwNDBEOQorOjIwODkyMDAwMDA0MDc4NDA0OEEwNDkxMDRBMDg3QzA2NEJGMDQ4MDA3ODg0NEM0NDRBNDg0OTQ4NzkxMDQ4MDQ0RkZFMDAwMEQ2Cis6MjA4OTQwMDAwMTA4Nzg5MDRCRkM0ODI0NzgyNDQ5RkM0OTIwNDkyMDc5RkU0ODYyNDhBMjQ5MkE3QTI0NEMyMDQwMjAwMDIwOTgKKzoyMDg5NjAwMDAwODA3ODgwNDkxMDRBMDg0QkZDNzg5MDQ5MDg0QTg0N0NGQzQ5ODg0QTkwNEM2MDc4NjA1MTkwMDYwRTE4MDRBRQorOjIwODk4MDAwMDAwMDdCRkU0QTIwNEEyMDdBRkM0QTIwNEEyMDRCRkU3QTAwNEEyMDRBMjA0QUZDN0MyMDQ0MjAwQkZFMTAwMDRBCis6MjA4OUEwMDAwMDgwRjMzODkyMDg5MjA4RjNCODkyMDg5MjA4RjNGODkyQTg5MEEwOTBBMEYxMjA5MTIwMDIyMjBDMjIzMDFFMTIKKzoyMDg5QzAwMDAxNDA3OTIwNDkyNDRCRkU0RTIwN0EyMDRCRkM0QTIwN0EyMDRCRkM0QTIwNEEyMDdBMjQ0QkZFNDIwMDAyMDA2RQorOjIwODlFMDAwMDA0MDdCRkM0QTQ0NEE0NDRCRkM3QTQ0NEE0NDRCRkM3ODgwNDkyMDRBMjA0RkZFNzgyMDQ4MjA0MDIwMDAyMDMyCis6MjA4QTAwMDAwMjAwMDNGODAyMDA3RkZFNDAwNDlGRjAwQzYwMzE5OEM2NDYzRkYwRDAxRTFGRjQxMDEwMUZGMDEwMTAxRkYwMzgKKzoyMDhBMjAwMDAwNDA3OTVDNEE0NDRBNDQ0QjVDN0E0NDRBNDQ0QkZDNzg0MDRCRkM0OTA4NDg5MDc4NjA0OEIwNDMwRTBDMDQ3MgorOjIwOEE0MDAwMDAyMDc3QTg1MEIyNTkyNDU1MTA3MjEwNTVFRTU4NDQ3MDQwNTdGQzUwODA1MEEwNzExMDUyMDg0NDA0MDgwNEEwCis6MjA4QTYwMDA3RTQwMDQ0MDA4RkVGRTg4MUI0ODI4MzA0OEM4QUIwNjFGRjAxMDEwMUZGMDEwMTAxRkYwMTAxMDFGRjAxMDEwMzAKKzoyMDhBODAwMDAwNDA3ODQwNEJGQzQ4NDA0ODQwN0ZGRTQ4OTA0OTA4N0JGQzQ4MDQ0QkY4NEFBODdBQTg0QUE4MEZGRTAwMDBDOAorOjIwOEFBMDAwMDAwMDdCRkU0QTAyNERGQzQ5MDg3OUY4NDkwODQ5Rjg3ODQwNDgyMDRGRkU0ODAwNzg5MDQxMDgwMjA0MDQwMjQyCis6MjA4QUMwMDAwMDA0NzdGRTUwQTA1N0ZDNTRBNDc3RkM1MDAwNTNGODcwMDA1N0ZFNTA0MDUyNTA3MjQ4NDQ0NDA5NDQwMDgwQ0UKKzoyMDhBRTAwMDAwNDA3QTQ0NDk0ODQ4NTA0QkZFN0EwMjRERjg0OTA4NzkwODQ5Rjg0ODQwNEJGQzc4NDA0ODQwNDdGRTAwMDBERQorOjIwOEIwMDAwMDAxMEY3OTA5MDkwOTEyMDlGQkVGNEU0OTRBNDk3QTRGNEE4OTRBODk3QTg5NDkwRjRBODk3QTg4Q0E2MDBDNDM5Cis6MjA4QjIwMDAwMDQwNzI0ODUxNTA1N0ZFNTBFMDcxNTA1NjRFNUE1NDczQkU1NDkwNTk1MDU1N0U3MjEwNTQxMDQ4MTAxMDEwMTMKKzoyMDhCNDAwMDA4MjBGRjIwMDhGQzdFMjAyMkY4M0U4ODIyNTAxNzMwRjhDRTVGRjQxMDEwMUZGMDEwMTAxRkYwMTAxMDFGRjBFRAorOjIwOEI2MDAwMDAwMEZGRkU5MjEwOTIxMDkyMTBGRTEwOTIxMDkyMTA5MjEwOTIxMEZFMTA4MjEwODAxMDAwMTAwMDUwMDAyMENDCis6MjA4QjgwMDAzRkY4MjEwODIxMDgzRkY4MjEwODIxMDgzRkY4MDAwMEZGRkUwODIwMDgyMDA4MjAwODIwMTAyMDEwMjAyMDIwNEYKKzoyMDhCQTAwMDAwMjAwMDI4N0MyNDU0MjQ1NDIwNTVGRTdDMjA1NDYwNTQ1MDU0NTA3QzUwNDQ4ODQwODgwMTBDMDIwNjA0MDQ3OQorOjIwOEJDMDAwMDA0MDAwNDA3QzQwNTQ4NDU0RkU1NDg4N0QwODU2ODg1NDUwNTQ1MDU0MjA3QzYwNDQ5MDQxMDgwNjBFMTgwNDBCCis6MjA4QkUwMDAwMDAwMDAxQzdERTA1NTAwNTUwMDU1RkM3RDQ4NTU0ODU1NDg1NTUwN0QzMDQ2MzA0MjQ4MDQ4ODA5MDYxMjA0RkYKKzoyMDhDMDAwMDAwNDAwMDQwN0NBMDU0OTA1NTA4NTYyNjdDNDA1NDg4NTcxMDU0MjA1NEM0N0YwODQ0MTA0MDYwMDM4MDFDMDA1NgorOjIwOEMyMDAwMDEwMDAyODAwQzYwMzdEOEMwMDYzRkY4MDkyMDE1MTAyMjA4NUZGMDExMTAxRkYwMTExMDExMTAxRkYwMTAxMEQxCis6MjA4QzQwMDAwMDQwMDAyMDdERkU1NTAyNTY4NDU1REM3RDU0NTY1NDU1NTQ1NTVDN0M5NDQ0OTI0MTEyMDIxMjA0MEUwODAwOUIKKzoyMDhDNjAwMDAwMjAwMUZDRjg4OEE4NTBBQkZFQTgwMEE5RkNGOTI0QTlGQ0E5MjRBOUZDQTgyMEY5RkM4ODIwMDAyMDAzRkVBRgorOjIwOEM4MDAwMDAwMDNGRkMyMjQ0MjI0NDNGRkMwMDAwN0ZGRTAwODAwMTAwMDM0MDA1MzAxOTE4NjEwODAxMDAwMTAwMDEwMDdGCis6MjA4Q0EwMDAwMDAwM0ZGQzIyNDQyMjQ0M0ZGQzAwMDAwMDAwN0ZGQzAxMDAxMTAwMTFGODExMDAxMTAwMTEwMDdGRkUwMDAwMkMKKzoyMDhDQzAwMDAwMDAzRkY4MjQ0ODI0NDgzRkY4MDEwMDAxMDBGRkZFMDEwMDAxMDAxRkYwMTAxMDEwMTAxMDEwMUZGMDEwMTBBRgorOjIwOENFMDAwM0ZGODI0NDgyNDQ4M0ZGODIyMDgwMTAwRkZGRTAwMDAxRkYwMDAwMDFGRjAwMDAwMUZGMDEwMTAxMDEwMUZGMDhBCis6MjA4RDAwMDAzRkY4MjQ0ODI0NDgzRkY4MDQwMEZGRkUwODMwMzEwRURGRjQxMTEwMUZGMDExMTAxRkYwMDEwMjAxMDIwMEZFNUUKKzoyMDhEMjAwMDNGRjgyNDQ4MjQ0ODNGRjgwMTAwMUZGODAxMDA3RkZDMDI0MDBDMjAxRkYwMDAyMDI4ODgyNjY0NDQ0NDAwMDBGQQorOjIwOEQ0MDAwM0ZGQzIyNDQyMjQ0M0ZGQzAxMDBGRkZFMDEwMDNGRkMyNDQ0MkZGNDIxMDQzRkY0MjEwNDIxMDQyMTE0MjAwODBECis6MjA4RDYwMDAzRkZDMjI0NDIyNDQzRkZDMjE0MDIxMjAzM0ZFQUEyMEE3RkNBQTIwMjIyMDIzRkMyMjIwMjIyMDIzRkUyMjAwN0YKKzoyMDhEODAwMDNGRkMyMjQ0MjI0NDNGRkMyNDAwRkY3ODI0NDgzQzQ4MDg0ODdFN0M0QTA0N0VGNDA4MDRGRjA0MDgxNDA4MDhDMQorOjIwOERBMDAwM0ZGQzIyNDQyMjQ0M0ZGQzA4MjA3RkZDNTExNDQ5MjQ3RkZDMDAwMDFGRjAxMDEwMUZGMDEwMTAxRkYwMTAxMEY0Cis6MjA4REMwMDAwMTAwMDEwMDNGRkMwMTAwMDEwMEZGRkUwNDQwMDgyMDFGRjAwMDEwM0ZGODI0ODgyNDg4MjQ4OEZGRkUwMDAwOTQKKzoyMDhERTAwMDBDODAzMDlDMjA4NDJFQTQyMkM0M0NEQzI0QTQyODk0M0VCQzIxMDQwMDAwMUZGODEyNDgxMjQ4MTI0ODdGRkU2MgorOjIwOEUwMDAwNDJGRTI0QUEyOEFBRkVGRTAwODAyNEZFNDJBMjgxRkE3Q0FBNTRGQTU0MjI1NDNBNURDQUYwMDIwMDE0MDAwOEM4Cis6MjA4RTIwMDAxMDAwMTAwMDEwMDAzRjAwMjAwMDIwMDA1RTAwNDgwMDg4MDA3RjAwMDgwMDA4MDAwODAwMEEwMDBDMDAwODAwQTAKKzoyMDhFNDAwMDEwNDAxMDQwMTA0MDFGNDAyMDQwMjA0MDdGNDA0ODQwODg0MDdGNDAwODQwMDk0MjBBNDIwQzQyMDgzRTAwMDBDMgorOjIwOEU2MDAwMTAwMDEwMDAxMEZDM0UwNDIwMDg3QzEwNTAyMDkwMjBGRTQwMTA4MDEwODAxMTAyMTUwMjE5MDIxMEZFMDAwMEZGCis6MjA4RTgwMDAxMDIwMTAyMDFGMjAxMDIwMjAyMDNFMjA0ODMwODgyQzdGMjYwODIyMDgyMDA4MjAwQTIwMEMyMDA4MjAwMDIwN0MKKzoyMDhFQTAwMDEwMDQxMDA0MUYwNDEwMjQyMDI0M0UyNDQ4MjQ4ODI0N0YyNDA4MjQwODI0MDgyNDA4MDQwQTA0MEMxNDA4MDgwNAorOjIwOEVDMDAwMTAwMDEwRkUxRjA0MTAwODIwMTAzRTEwNDgxMDg4MTA3RjEwMDgxMDA4MTAwODEwMEExMDBDMTAwODUwMDAyMDQ2Cis6MjA4RUUwMDAxMDIwMTAyMDFGMjAxMDIwMjAyMDNFRkM0ODIwODgyMDdGMjAwODIwMDgyMDA4MjAwQTIwMEMyMDBCRkUwMDAwQTMKKzoyMDhGMDAwMDEwMDIxMDgyMjA4MjNFOTI0MDkyN0M5MjkwOTIxMDkyRkU5MjEwOTIxMDkyMTA5MjE1MTIxOTEyMTIwMjAwMDJCOQorOjIwOEYyMDAwMTAwMDEwMDgyMDEwM0UyMDQwQzA3QzAwOTAwODEwMTBGRTYwMTAwMjEwMDQxMjA4MTQxMDE4NjAxMzgwMDAwMDdBCis6MjA4RjQwMDAyMjAwMjEzRTM4ODIyMjAyNDIwMjdBMDJBMjAyMjIwMkZBMDIyMjAyMjIwMjIyMDIyQTAyMzIwMjIyMEEwMjA0MzAKKzoyMDhGNjAwMDEwMDAxMUZDMjEwNDNENDQ0MTI4N0NBODkwODgxMDkwRkU1MDEwNTAxMDIwMTA1MDEwNTAxNDg4MTkwNjEyMDQ3QQorOjIwOEY4MDAwMTAyMDEwMjAyMDIwM0U0MDQxRkU3QzQ4OTA4ODEwODhGRDEwMTA5MDEwNjAxMjMwMTQ0ODE5OEMxNjA0MDAwMDg2Cis6MjA4RkEwMDAxMDAwMTAwMDIxRkUzRTEwNDAxMDdDMjA5MDIwMTA3MEZFNjgxMEE0MTEyMjEwMjIxNDIwMTgyMDEwMjAwMDIwQ0QKKzoyMDhGQzAwMDEwMjAxMDIwMjAyMDNFMjA0MDIwN0RGRTkwMjAxMDIwRkUyMDEwNTAxMDUwMTA4ODE1NDgxQTI2MTQwNDAwMDBBRAorOjIwOEZFMDAwMTAwMDEwRkUyMDgwM0U4MDQwODA3Q0ZDOTA4NDEwODRGRTg0MTBGQzEwODAxMjgwMTQ4MDE4ODAxMEZFMDAwMDJCCis6MjA5MDAwMDAyMDFDMjFFMDNEMDAyMTAwNDEwMDdERkNBMTg0MjE0OEZENDgyMTMwMjExMDIxMjgyQTRDMzI4NjI1MDQwMDAwMDYKKzoyMDkwMjAwMDIwNDAyMDQwM0NBMDIwOTA0MTA4N0E0RUEwMjQyMDIwRkJGODIwMDgyMDEwMjAxMDI4MjAzMDIwMjA0MDAwMDA1QworOjIwOTA0MDAwMTA0MDEwMjAyMDEwM0RGRTQwNDA3QzQwOTA3QzEwNDRGRTQ0MTA4NDEwODQxMDg0MTUwNDFBMTQxNDA4MDAwMDI4Cis6MjA5MDYwMDAxMDgwMTA2MDIwMjAzREZFNDAwMDdDRjA5MDkwMTA5MEZFOTAxMDkwMTA5MDEyOTIxNTEyMTkxMjEyMEUwMDAwMjUKKzoyMDkwODAwMDEwMDgxMDA4MjA4ODNFNDg0MDQ4N0MwODkwODgxMDQ4RkU0ODExRkUxMDA4MTAwODEwMDgxNDA4MTgwODEwMDgwNQorOjIwOTBBMDAwMjAwMDIwMjAzRTIwMjAyMDQwMjQ3RDJDQTEzMDIxMjBGQzIwMjA1MDIwNTAyMDkwMjg4ODMxMEUyNjA0MDAwMENFCis6MjA5MEMwMDAxMDAwMTFGQzIxMjQzRDI0NDEyNDdEMjQ5MTI0MTFGQ0ZEMDAxMTAwMTEwMDExMDIxNTAyMTkwMjEwRkUwMDAwOTMKKzoyMDkwRTAwMDEwMDAxMUZDMjAyMDNFMjA0MDIwN0MyMDkwMjAxMUZDRkUyMDEwMjgxMDI0MTIyNDE0MjAxODIwMTNGRTAwMDBCRgorOjIwOTEwMDAwMTAwMDExRkUyMDIwM0UyMDQwMjA3QzIwOTAyMDExM0VGRDIwMTEyMDExMjAxMTIwMTUyMDE5MjAxN0ZFMDAwMDY0Cis6MjA5MTIwMDAxMDIwMTAyMDIwMjAzQzIwNDFGRTdDMjA5MDIwMTAyMEZERkMxMTA0MTEwNDExMDQxNTA0MTlGQzExMDQwMDAwRkQKKzoyMDkxNDAwMDIwMDAyMDAwM0RGRTIwMDQ0MDA0N0RFNEExMjQyMTI0RkQyNDIxMjQyMUU0MjAwNDI4MDQzMDA0MjAxNDAwMDg5NgorOjIwOTE2MDAwMjAwMDIxRkMyMTAwM0QwMDQxMDA0MTc4N0Q0OEExNDgyMTQ4RkQ0ODIxNzgyMTAwMjkwMDMxMDAyMUZFMDAwMENCCis6MjA5MTgwMDAyMDEwMjAxMDNDMjAyMUZFNDA0MDc4QTBBMEZDMjFBNEZBQTQyMEE0MjBBNDIwQTQyOEFDMzAyMDIwMjAwMDIwOEQKKzoyMDkxQTAwMDIwODAyMDkwM0M4ODIwODg0M0ZFN0M4MEEwRjgyMDg4RkQ4ODIxNTAyMTUwMjIyMDJBNTAzNDg4MkIwNjAwMDA2NgorOjIwOTFDMDAwMjAyMDIwMjgzRTI0MjAyMDQxRkU3RDIwQTEyNDIxMjRGRDI4MjEyODIxNTAyMTkyMjkyQTMwNEEyMTg2MDAwMjc3Cis6MjA5MUUwMDAxMDAwMTBGQzIwODQzRTg0NDA4NDdDRkM5MDg0MTA4NEZFODQxMEZDMTA4NDEyODQxNDg0MThGQzEwODQwMDAwMTEKKzoyMDkyMDAwMDEwMDAxMUZDMjEwNDNEMDQ0MTA0N0RGQzkxMDQxMTA0RkQwNDExRkMxMDAwMTAwMDE0MDAxODAwMTNGRTAwMDBGOAorOjIwOTIyMDAwMTAwMDEwMDAyMUZDM0QyNDQxMjQ3RDI0OTEyNDExRkNGRjI0MTEyNDExMjQxMTI0MTUyNDE5RkMxMTA0MDAwMEEzCis6MjA5MjQwMDAyMDFDMjFFMDNEMDAyMTAwNDEyMDdEMjBBMUZFMjAyMEZDMjAyMTI4MjEyNDIyMjYyQTIyMzQyMjIwQTAwMDQwMDIKKzoyMDkyNjAwMDEwNDAxMDIwMjNGRTNDMjA0MDIwN0RGQzkxMjQxMTI0RkQyNDExMjQxMTI0MTEzNDE1MjgxODIwMTAyMDAwMjA5OQorOjIwOTI4MDAwMTA0MDEwMjAyMDAwM0RGRTQwMjA3QzIwOTA0NDEwODhGREYwMTAxMDEwMjAxMDQwMTA4NDE1MDIxQkZFMTAwMjI4Cis6MjA5MkEwMDAxMDQwMTAyMDIwMjAzREZFNDEwNDdDMDA5MDgwMTA4NEZDOTgxMEUwMTA4MDEwODIxNDgyMTg4MjEwN0UwMDAwRUEKKzoyMDkyQzAwMDEwNDAxMDI0MjAyNDNFQTQ0MDg4N0M4ODkwOTAxMjk0RkVBMjEyQTIxNEMwMTJDNDE0ODQxOTg0MTI3QzAwMDA5MQorOjIwOTJFMDAwMTAwMDExRkMyMTA0M0QwNDQxRkM3RDAwOTE0MDExNDRGRjU4MTE2MDExNDAxMTQyMTY0MjFBNDIxNDNFMDAwMDk5Cis6MjA5MzAwMDAxMDIwMTAyMDIxRkUzRDI0NDEyODdEMjA5MUZDMTE4NEZENDgxMTQ4MTEzMDExMTAxNjMwMUE0RTE1ODQwMDAwRkUKKzoyMDkzMjAwMDIwMDAyMUY4M0M4ODIwNTA0MDIwN0NEMEEzMEUyMDIwRkRGQzIwMjAyMDIwMjNGRTI4MjAzMDIwMjAyMDAwMjA5MQorOjIwOTM0MDAwMjA0MDIwNDQzREY0MjA0ODQwNTA3QkZFQTA0MDIwRkNGOTQwMjY0MDIwN0MyMDA0MjAwNDI4MDQzMDE0MjAwODkwCis6MjA5MzYwMDAyMDQwMjA0MDNDNDAyMUY0NDA0NDdDNDhBM0ZFMjAyMEZDNDAyMDgwMjM5QzIwRTAyODg0MzA4NDIwN0MwMDAwREMKKzoyMDkzODAwMDEwMDAxM0ZFMjA4ODNFODg0MEY4N0M4ODkwODgxMEY4RkU4ODEwODgxMEJFMTNDODEwMDgxNDA4MTgwODEwMDhBRgorOjIwOTNBMDAwMTAyMDEwMjAyMUZFM0M0MDQwNDA3Q0ZDOTE4NDEyODRGRUZDMTA4NDEwRkMxMDg0MTI4NDE0ODQxODk0MTA4ODZGCis6MjA5M0MwMDAyMDEwMjAxODNFMTQyMUZFNDExMDdEMTRBMUQ0MjE1NEZENTgyMTQ4MjE1MDIyREEyQTJBMzQ0NjI4MDIwMDAwQzUKKzoyMDkzRTAwMDIwNDAyMDQwM0M0MDIxRkM0MDQwN0M0OEExNDgyMEQwRkJGRTIwNDAyMEEwMjRBMDI5MTAzMTA4MjIwRTBDMDQ2OAorOjIwOTQwMDAwMjA4MDIwODAzQ0ZDMjM4MDQwNTA3ODI0QTA1NDIxOENGQkZFMjBBMDIwQTAyMEEyMjkyMjMxMjIyMjFFMDAwMDRCCis6MjA5NDIwMDAyMDAwMjdERTNDOTQyMjk0NDI5NDdBOThBN0Q0MjE5MkY5OTIyMTkyMjI5QTIyOTQyQzkwMzI5MDIxMTAwMDEwRkMKKzoyMDk0NDAwMDIwMjAyMDIwMjIyMjNEMjQ0MEE4N0NCMEExRkUyMDAyRkMwMjIxRkUyMDAyMjQwMjI4MDIzMDAyMjFGRTAwMDAzMgorOjIwOTQ2MDAwMTBGQzEwODQyMDg0M0M4NDQwRkM3QzIwOTFGRTExMjJGRDIyMTEyMjExMjIxMTJBMTUyNDE4MjAxMDIwMDAyMENECis6MjA5NDgwMDAxMDAwMTFGQzIxMjQzRDI0NDEyNDdERkM5MTI0MTEyNEZENTQxMTRDMTE4NDExMDQxMTA0MTUwNDE5RkMxMTA0OTEKKzoyMDk0QTAwMDEwMjAxMTI0MjEyNDNEMjQ0MUZDN0MwMDkxRkMxMDA0RkMwNDExRkMxMTAwMTEwMjE1MDIxOTAyMTBGRTAwMDBENgorOjIwOTRDMDAwMjAyMDIwMjAzRDIwMjFGQzQxMjA3QTIwQTAyMDIzRkVGQ0IwMjBBODIxMjgyMTI0MkEyNjM0MjQyMDIwMDAyMEFDCis6MjA5NEUwMDAyMDBDMjc3MDM5MTAyMTEwNDExMDdBMTBBM0ZFMjA5MEZDOTAyMjkwMjE3QzI5MDAzMjgwMjQ2MDE4MUUwMDAwOTMKKzoyMDk1MDAwMDEwMDAxMDFDMjBFMDNFMjA0MDIwN0RGQzkwMjAxMDIwRkRGRTEwMjAxMDQwMTA0MDEwODQxNTAyMUJGRTEwMDI1NworOjIwOTUyMDAwMTA5MDEwOTAyMTE2M0IxODQxMTA3RDcyOTExMjExMEVGQzQwMTA0MDE3RkUxMDQwMTQ0MDE4NDAxMDQwMDA0MDMyCis6MjA5NTQwMDAyMDQwMjA0MDIwQTAzQzkwNDEwODdBMDZBMUY4MjA0MEZDNDAyMUY4MjA0MDIwNDAyODQwMzA0MDI3RkUwMDAwRUIKKzoyMDk1NjAwMDEwMjAxMDIwMjA1MDNDNTA0MDg4N0QwNjkyRkMxMDAwRkMwMDExRkMxMTA0MTEwNDE1MDQxOTA0MTFGQzAwMDAzMAorOjIwOTU4MDAwMjAwMDIwODgzRTUwMjAzMDQwNEM3REE0QTAyMDIzRkVGQzIwMjBBODIwQTQyMTI2MjkyMjMyMjIyMEEwMDA0MDA5Cis6MjA5NUEwMDAxMDUwMTA1MDIwNTAzQzU0NDI1NDdENTg5MEQwMTBEOEZENTQxMjU0MTA1MDEwOTIxNDkyMTkxMjEyMEUwMDAwOEUKKzoyMDk1QzAwMDEwNDAxMDQwMjBGODNDODg0MTEwN0JGQzkwNDQxM0ZFRkM0NDEwNDQxM0ZDMTA0MDE0NDAxODQwMTE0MDAwODBGMgorOjIwOTVFMDAwMTA0MDEwNDAyMEZDM0M4ODQxMTA3REZDOTMyNDExMjRGRDI0MTFGQzExMDAxMTAwMTUwMjE5MDIxMEZFMDAwMEE1Cis6MjA5NjAwMDAyMDQwMjAyMDNDMjAyM0ZFNDA0MDdDNTBBMDg4MjFGQ0ZDOTQyMDkwMjA5MDIwOTIyOTEyMzExMjIyMEUwMDAwNEMKKzoyMDk2MjAwMDIwMDAyMjdDM0QwNDIxMDg0NDEwN0EyMEEyN0UyMTJBRkQyQTIxMkEyNjUyMjI5MjJBMjIzMkNBMjIwNDAwMDA5RAorOjIwOTY0MDAwMjA0MDIwMjAzREZFMjEwNDQwNDg3ODQwQTA0MDIzRkVGODg4MjA5MDIxOTAyMDYwMjg1MDMxOEMyNjA0MDAwMDA5Cis6MjA5NjYwMDAyMTAwMjEwMDNEMDAyMTFFNDdEMjc5NTJBMTUyMjI1MkZBOTIyNjkyMjExMjIxOTIyQTVFMzQ1MjI4MDAwMDAwODEKKzoyMDk2ODAwMDIwOTAyMDkwM0JGRTIwOTA0MDAwN0JGRUEyNDQyMDQwRjlGODIwNDgyMDQ4MjA4ODI4ODgzMTI4MjIxMDAwMDBERQorOjIwOTZBMDAwMjAyMDIwMjAzREZDMjAyMDQxMjg3Q0E4QTBCMDIzRkVGQzYwMjBCMDIwQjAyNTI4MkEyNjM0MjQyMDIwMDAyMDYyCis6MjA5NkMwMDAyMDIwMjAyODNDMjQyM0ZFNDAyMDc5MjBBMEEwMjA5MEZEMTAyMTUwMjUzMDI1MDgyRDRBMzFDNjIwMDIwMDAwMDgKKzoyMDk2RTAwMDIwODAyMDgwM0FCRTIyQTQ0Mjk0N0E4OEEyOTgyMkE2Rjg4MDIwNDAyMUZDMjA0MDI4NDAzMDQwMjdGRTAwMDA0MAorOjIwOTcwMDAwMTAwMDEwRkMzRTg0MjA4NDQwODQ3Q0ZDOTAwMDExRkVGQzIwMTAyMDEwRkMxMDIwMTIyMDE0MjAxOUZFMTAwMEQ3Cis6MjA5NzIwMDAxMDAwMTFGQzNEMjQyMTI0NDFGQzdEMjQ5MTI0MTFGQzEwMjBGRTIwMTFGQzEwMjAxMjIwMTQyMDE4MjAxM0ZFOEMKKzoyMDk3NDAwMDIwMjAyMEEwM0NBMDIwRkM0MTIwN0EyMEEwMjAyM0ZFRkMwMDIxRjgyMTA4MjEwODI1MDgyOTA4MzFGODIxMDgxRQorOjIwOTc2MDAwMjAxMDIwNTgzRDk0NDA5NDQwOTA3QkZFQTA5MDIwOTRGQ0Q0MjE4ODIyODgyMDlBMjBBQTI4ODYzMjg2MjEwMjNGCis6MjA5NzgwMDAyMDIwMjAyMDNFMjgyMTI4NDEyODc5MkM5MkIyMTRCMkZDMjAxMUZDMTAyMDEwMjAxNDIwMTgyMDEzRkUwMDAwN0MKKzoyMDk3QTAwMDIwMDAyMDNDM0JDMDIwNDQ0MjI0N0QyOEExMDAyMDA4RkRGRTIwODgyMDQ4MjA0ODI0MDgyODA4MzAyODIwMTBBMworOjIwOTdDMDAwMTA0MDEwMjAyM0ZFM0MyMDQwNDA3Qzg4OTFGQzEwMDBGRDI4MTEyODExMjgxMTJBMTUyQTE5MkExMjJFMDAwMEQ3Cis6MjA5N0UwMDAyMjAwMjEzRTM4MDI0MjAyNDJGQTdBNTJBMjUyMjI1MkZCRkUyMjUyMjI1MjIyOTIyQTkyMzMxMjIyMEEwMjA0MzIKKzoyMDk4MDAwMDIxMDAyMDgwM0NCRTIyMDI0MjcyN0U1MjkyNTIxMjcyRkU1MjEyNTIxMjUyMTI3MjEyMDIxNjAyMUEwQTEyMDQ3QgorOjIwOTgyMDAwMjA0MDIwMjAzREY4MjEwODQxRjg3RDA4OTEwODExRjhGRDQ0MTEyODExMzAxMTEwMTExMDE1NDgxOTg2MTEwNEJDCis6MjA5ODQwMDAyMUY4MjAwODIxRjgzQzA4NDFGODc4MDBBM0ZFMjIwNEZERjgyMTA4MjA5MDI0NjAyODYwMzE5MDJFMEUwMDA0MTcKKzoyMDk4NjAwMDEwMDAxMUZDMjEwNDNEMDQ0MUZDN0QwMDkxRkUxMTAyRkQ3MjExNTIxMTUyMTI3MjE2MDIxQTAyMTQwQTAwMDRGQQorOjIwOTg4MDAwMjAwMDIzQkUzQTg0NDI4NDQyRjQ3QjU0QTJENDIyRDRGQUQ0MjJGNDIzMDQyMjA0MkEwNDMyMTQyMjA4MDAwMDAzCis6MjA5OEEwMDAxMDIwMTFGQzNDMjAyMUZDNDAyMDdCRkU5MDAwMTFGQ0ZEMDQxMUZDMTEwNDExRkMxNTA0MTkwNDExMTQwMTA4RTgKKzoyMDk4QzAwMDIwOTAyMDkwM0JGRTQwOTA0MDkwRjgyMDIzRkUyMDQwRjg4MDIwRkMyMTg0MjI4NDIwODQyODg0MzBGQzIwODRCNworOjIwOThFMDAwMjA0MDIwNDAzREZFMjA5MDQxNDg3QTQ2QTFGODIwNDBGOTUwMjExMDI3RkUyMTEwMjkxMDMyMTAyMjEwMDQxMEVBCis6MjA5OTAwMDAyMUY4MjEwODNERjgyMTA4NDEwODdERjhBMDAwMjFGQ0ZDMDgyM0ZFMjA4ODI0NDgyODQ4MzAwODIwMjgwMDEwRjMKKzoyMDk5MjAwMDIwMDAyM0Y4MjI0ODNCRjg0MjQ4N0E0OEEzRjgyMDQwRkJGRTIwRTAyMTUwMjU0ODJBNEUzNDQ0MjA0MDAwNDBBMQorOjIwOTk0MDAwMjAwMDIxRjgzRDA4MjFGODQxMDg3RDA4OTFGODEwMDBGRDEyMTFEQzExMTAxMTEwMTU1MjE5OTIxMTBFMDAwMDlBCis6MjA5OTYwMDAyMDAwMjNGRTIyMjIzQTIyNDNGRTdBMjI5MjIyMTJGQUZBOEExMjhBMTI4QTEyRkExNjAyMUEwMjEzRkUwMDAwNUMKKzoyMDk5ODAwMDEwODAxMDgwMjBGQzNENTQ0MjU0N0M5NDkwQTQxMTI0RkM0QzEwMDAxMEE0MTI5MjE2ODIxQTg4MTA3ODAwMDA3OQorOjIwOTlBMDAwMjA0MDIwMjAzREZDMjAwMDQxMDg3Qzg4QTA5MDIzRkVGQzAwMjFGODIxMDgyMTA4MjUwODI5MDgzMUY4MjEwOEY5Cis6MjA5OUMwMDAyMDQwMjI0ODIxNDg3RDUwNDNGQzgwNDBGQkZFMjA5MDIxMDhGQUY2MjQ5MDIwOTAyOEI0MzA4NDIwN0MwMDAwMzYKKzoyMDk5RTAwMDIwMjAyMDIwMjBBNDNDQjg0MTMwN0M0OEExODYyMDIwRkQyMjIxMjQyMjM4MjAyMDI4NTAzMTg4MjYwNjAwMDAzOAorOjIwOUEwMDAwMjA5MjIwOTIyMTI0M0U0ODQxMjQ3QzkyOTAwMDExRkVGRDIyMTEyMjExRkUxMTIyMTUyMjE5RkUxMTAyMDAwMDEwCis6MjA5QTIwMDAyMTAwMjEwMDIzQkMzOTE0NDM5NDc5MTRBN0E0MjE0Q0Y4MjAyM0ZFMjAyMDIwMjAyODUwMzE4RTI2MDQwMDAwODIKKzoyMDlBNDAwMDIxMTAyMTEwM0QxNjIxRDg0MTEwN0Q1MjkxQkUxMDQwRkRGQzExMDQxMTA0MTFGQzExMDQxNTA0MTlGQzExMDQxMQorOjIwOUE2MDAwMjAwMDIxRkMyMTI0M0QyNDQxRkM3RDI0QTEyNDIxRkNGQzAwMjA0MDIwQTQyMkEyMkE4QTM0ODgyMDc4MDAwMDU3Cis6MjA5QTgwMDAyMDAwMjFEQzNENTQyMTU0NDFEQzdDMDBBMUZDMjAwMEZCRkUyMDQwMjA3ODIwMDgyNDA4MjgwODMwMjgyMDEwNTAKKzoyMDlBQTAwMDIwMDAyMDFDMjFFMDNDMjA0MDIwN0RGRUEwMjAyMEFFRkQyMjIxMjIyMUFFMjUyMjI5MjIzMTIyMjFGRTAwMDA0RgorOjIwOUFDMDAwMjBBMDIzMkMzQTI0MjIyNDQzQUM3QTI0QTNGQzIwMjBGQkZDMjEwODIwOTAyMDYwMjg2MDMxOTgyRTBFMDAwNDg2Cis6MjA5QUUwMDAyMDNDMjFDMDNDNDQyMTI4NDA4MDdERjhBMDQwMjNGRUZDODAyMEY4MjE4ODIxNTAyQTIwMzQ1MDI5OEUwMDA0RjMKKzoyMDlCMDAwMDIwNDAyMDIwMjNGRTNDMDA0MUY4N0QwOEExMDgyMUY4RkNBNDIwQTgyMTkwMjE5MDJBODgzMEFFMjBDNDAwODAwQQorOjIwOUIyMDAwMjAyMDIxMjQzQ0E4MjNGRTQwNzA3OEE4QTMyNjIwNDBGQzQwMjNGRTIwODgyMTkwMjA2MDI4NTAzMThDMjYwNDBECis6MjA5QjQwMDAyMTEwMjExMDIxM0U3RDQ0NDUyODgzMTA3OTI4MjFDOEZCRkUyNTQ4MjEyODIxMjgyMTA4MjkwODMxMjgyMTEwMUQKKzoyMDlCNjAwMDIwOTAyM0ZDM0M5NDIzRkM0MjkwN0JGRTkwOTIxMzE2RkRGQzExMDQxMTI0MTEyNDExMjQxNDUwMTg4QzEzMDRDNQorOjIwOUI4MDAwMTAwMDExRkMxMTI0M0QyNDIxRkM0MTAwRkRGQzIxODRGREZDMjE4NDIxODQyMkZDMkE4NDM0ODQyOEZDMDA4NEE3Cis6MjA5QkEwMDAyMDkwMjA5MDIzRkUzQzkwNDFGQzc5MDRBMUZDMjEwNEY5RkMyMDIwMjNGRTIwMjAyODUwMzE4ODI2MDYwMDAwRTkKKzoyMDlCQzAwMDIwMDAyM0ZFM0MwMDIxRkM0MTA0NzlGQ0EwMDAyM0ZFRkE4QTIyNTIyMkZBMjIyMjIyMjIyQTIyMzIyQTIyMDQwNgorOjIwOUJFMDAwMjBBMDIwOTAzREZFMjEyMDQzRkM3RDIwQTFGQzIxMjBGREZFMjEwMDIwRkMyNDg4Mjg5RTMxMDIyMTBBMDIwNEIxCis6MjA5QzAwMDAyMDQwMjBBMDIxMTgzQkY2NDQwMDdERjhBMTA4MjFGOEY4MDAyMUY4MjAyMDIxRkMyODIwMzNGRTIwMjAwMDYwQjgKKzoyMDlDMjAwMDIwMjAyMURFM0QwQTIxMEE0MTRBN0Q3MjkxQTYxMDAwRkRGQzExMjQxMTI0MTFGQzE1MjQxOTI0MTFGQzAwMDBCRgorOjIwOUM0MDAwMjEwNDIwODQzQzg4MjAxMDQzRkU3QzkwOTA4ODExMDQxMjAyRkRGQzExNTQxMTU0MTU1NDE5NTQxM0ZFMDAwMDBGCis6MjA5QzYwMDAyMDQwMjAyMDIzRkU3QTA0NDFGODgwNDA3ODg0MjM0OEY4NzAyMUIwMjY2ODIwQUUyQjI0MzAyMDIwQTAwMDQwMTEKKzoyMDlDODAwMDIwNDAyMDIwM0JGRTIyMDQ0MDM4N0RDMEExMDAyMUZDRkQxMDIxMTAyM0ZFMjAwMDIwOTAyOTA4MzYwNDIwMDQ5NAorOjIwOUNBMDAwMjAwMDIzRkUzQzkwNDNGQzQyOTRGQTk0MjNGQzIwMDBGOUY4MjAwMDIzRkUyMDIwMjkyNDM2MjIyMEEyMDA0MDlDCis6MjA5Q0MwMDAyMDIwMjEyNDIwQTQ3Q0E4NDNGRTdBMDRBMEY4MjA4OEZDODgyMEY4MjAyMDI1RjgyODIwMzAyMDI3RkUwMDAwNjIKKzoyMDlDRTAwMDIxRjgyMTA4MjFGODNEMDg0MUY4NDAwMEZCRkMyMjk0MjNGQ0Y4MDAyMUY4MjA5MDIwNjAyODYwMzA5MDIzMENDNworOjIwOUQwMDAwMjAwMDIxRkMyMTI0M0RGQzQxMjQ3REZDOTA0MDEwOTBGREUwMTA0NDExRkUxMDIwMTUyNDFBMjIxMEEyMDA0MDYzCis6MjA5RDIwMDAyMDQwMjAyMDIzRkUzQTIwNDJGQzdBMjRBM0ZFMjIyNEZBRkMyMkE0MjJGQzIyQTQyQUZDMzRBNDI0QTQwODhDNEIKKzoyMDlENDAwMDI0MTAyMjEwMjAyMDdGQkU0MjYwRkEyMDIzQkMyMkQwRkE5MDIyRkUyNDkwMjRBODNBQTgyOTQ2MTA4NDAwMDA4NAorOjIwOUQ2MDAwMjIxMDIxMTAzODFFNDdBMDQyMDA3QTNFQTM4NDIyODhGQThFMjJBODIyQTgyQ0E4MzZBODI5NTgxMDhFMDAwMDhCCis6MjA5RDgwMDAyMDQwMjAyMDIzRkUzODg4NDA1MDdCRkVBMjIyMjNGRUZBMjIyMjIyMjJGQTIyOEEyMkZBMkEwMjMyMDYyMjAyODgKKzoyMDlEQTAwMDIzRkUyMDUwMzlGQzIxNTQ0MUZDNzgwMEExRkMyMTA0RkRGQzIxMDQyMUZDMjAyMDJCRkUzMDIwMjAyMDAwMjA5RAorOjIwOURDMDAwMjAwMDI3RkU0NDAwNzYyODg1NDgwN0RFRjQ5NDQ2QTg0NkE4RjZBODQ3RTg0NDk0NTUxNDY1MjY0QTQ0MDAwMDFGCis6MjA5REUwMDAyMDkwMjI5NDIxOTgzQkZFNDEwOEY4OTAyM0ZDMjA0MEY5RjgyMDQwMjNGRTIwNDAyOEEwMzExQzI2MDgwMDAwQTYKKzoyMDlFMDAwMDEwODAxMEY4M0QxMDIzRkM0MTI0N0RGQzkxMjQxMUZDRkMwMDEzRkUxMDAwMTFGQzExMDQxNUZDMTkwNDExRkMyNAorOjIwOUUyMDAwMjIxMDIxMTAyN0QwMzgyMDQ3QkU3NEM0QTdBNDIwMjRGN0U0MjA5NDIxMDgyNUM4MkYxNDMxMjYyMzQ0MDAwMEZFCis6MjA5RTQwMDAyMjAwMjE3RTI1MDIzNDQyNDVGQTc0NDJBN0ZBMjU1QUY0RUEyN0ZBMjQ2MjI0RDIyNzRBMzQ0MjI0MDYwMDAwMDMKKzoyMDlFNjAwMDIwODQyMDQ4M0RGRTIwNDg0MTRBNzhDQ0EzRkUyMDAwRjhGQzIwODQyMDg0MjRGQzI4ODQzMDg0MjBGQzAwODQ0NworOjIwOUU4MDAwMjA0MDIwMjAyM0ZFM0E5NDQxMkM0MDIwRjlGQzExMjQxMUZDRjgyMDExRkUxMTIyMTVGRTE4MjAxMDIwMDAyMDNBCis6MjA5RUEwMDAyMDAwMjczQzIxMjQ3OTI0NDczQ0Y0MTAyNDEwMjQ3RUY3NTIyMTUyMjE3RTIxMTAyOTE0MzU3RTIyMDIwMDAwNDAKKzoyMDlFQzAwMDIwMDAyMUU0MjI2ODM5OTI0MDhDNzkwOEExRjYyMjAwRjlGODIxMDgyMUY4MjExMDI4OTAzMEEwMjNGRTAwMDBGNQorOjIwOUVFMDAwMjA5MDIzRkUyMDkwNzhBMDQxRkU3QjIwQTVGQzIxMjBGOUZDMjEyMDIxRkUyMDg4MjQ1MDI4MjAzMDUwMjE4RTI1Cis6MjA5RjAwMDAyMDAwMjNGRTNBNTIyM0ZFNDA4MDc5RkU5MjQyMTA0MkZCRjIxMjUyMTNGMjEwNEExM0ZFMTAwMjE4MEExMDA0RUQKKzoyMDlGMjAwMDIwNDAyMDIwMjFGQzNDODg0MDUwN0RGRTkwMDAxMUY4N0QwODExRjgxMTA4MTFGODE2MjQxQTkyMTQ4QTAwNzg1MAorOjIwOUY0MDAwMjA0MDIwMjAyM0ZFN0IwNDQxREM4MTY0N0I5ODI2OTBGOUY4MjIwNjIxRjgyMDIwMjkyNDMxMjIyMkEyMDA0MEUwCis6MjA5RjYwMDAyMDQwMjAyMDIzRkU3QTkwNDNGQzgyOTRGQkZDMjI5MDIyRDRGQTlBMjJEMjI0OEUyQzAwMzU1NDJBNTIwMDAwQjcKKzoyMDlGODAwMDIwM0MyMUUwMjAyMDdERkU0MDIwODFGQzdEMjQxMUZDMTEyNEZERkMxMDIwMTFGQzE0MjAxODIwMTdGRTAwMDAzMgorOjIwOUZBMDAwMjAwNDIxRTQzQzI0NTAyNDUxRTQ5MTA0N0QwNDExMDQxMUU0MTAyNDI4MjQyNDI0NDQyNDQwNDQ4MTQ0MDA4NDUyCis6MjA5RkMwMDAyMDIwMjAyMDIxMjgzRDI4NTEyODkxMjgxMkFDN0M3MjE0MjIxMDIwMjlGQzI0MjAyNDIwNDAyMDgzRkUwMDAwODEKKzoyMDlGRTAwMDEwQTAxMDkwMjA5MDNERkU1MTEwMTMxMEZERkUxMTEwMTExMDI5RkUyNTEwNDUxMDQxMTA4MUZFMDEwMDAwMDBFMworOjIwQTAwMDAwMEQxMDcxMTAxMTEwMTExMEZEMTAxMURFMzExMDM5MTA1NTEwNTUxMDkxMTAxMTEyMTE1MjExOTIxMTBFMTAwMDE3Cis6MjBBMDIwMDAwQzIwNzAyNDEwM0UxMUUwRkQyMDMxMjAzOTIwNTVGRTUwNjI5MDYyMTBBMjEwQUExMTI0MTIyMDEwMjAxMDIwMzAKKzoyMEEwNDAwMDBDMjA3MDIwMTAyMDEzRkVGQzIwMTAyMDM5RkMzNDIwNTQ3MDUwNjg5MEE4MTBBNjExMjQxMjIwMTAyMDEwMjBGRAorOjIwQTA2MDAwMEM1MDcwNDgxMDQ4MTA0MEZGRkUzMEUwMzBFMDU5NTA1NTUwNTI0ODkyNDgxNDQ2MTA0NDEwNDAxMDQwMTA0MEE3Cis6MjBBMDgwMDAwQzAwNzBGQzEwODQxMDg0RkU4NDEwRkMzODg0MzQwMDU1RkU1MTAyOTEwMjExMDIxMTAyMTEwMjExRkUxMTAyMEUKKzoyMEEwQTAwMDAwNDAwRTUwNzA0ODExRkVGRTUwMTA1MDM4OTIzNDhFMzcyMDU0MjA1MDIwOTIyMjEyMjIxMjIyMTNGRTEyMDI4NQorOjIwQTBDMDAwMEMxRTcxRTAxMDA0MTE0NEZDQTQzMEE4MzlGQzM0MDg1MDEwNTAyMDk3RkUxMDIwMTAyMDEwMjAxMEEwMTA0MEJFCis6MjBBMEUwMDAwQzQwNzAyMDExRkMxMTA0RkQwNDMxRkMzOTA0MzUwNDU1RkM1MTQyNTEyNDkxMjgxMTEwMTE0ODExOEUxMTA0N0UKKzoyMEExMDAwMDBERkM3MTI0MTEyNDExRkNGRDI0MTEyNDM5RkMzNDIwNTNGRTUwNjA5MEIwMTBBODExMkUxMjI0MTQyMDEwMjBBRQorOjIwQTEyMDAwMEM0MEYwNjAxMDkwMTEwOEZFNDYzNDIwM0JGODU0MTA1MEEwOTA0MDExNDgxNTQ0MTUxMjE1MTIxOEYwMTAwMEMzCis6MjBBMTQwMDAwQzIwNzAyMDEzRkUxMDQwRkRGODMxMDgzMUY4NTkwODU1Rjg1NTA4OTFGODExMDgxN0ZFMTA5MDExMDgxMjA0RkEKKzoyMEExNjAwMDBDMDA3MUZDMTEyNDExRkNGRDI0MTFGQzM4ODgzNTA0NTI4MjUwRkM5MTA4MTY5MDEwNjAxMDU4MTE4RTE2MDQwRAorOjIwQTE4MDAwMDAyMDBDMjBGMUZDMTAyMDExMjRGQ0E4MTNGRTMwMDAzOUZDNTUwNDUxNzQ5MTU0MTE3NDExMDQxMUZDMTEwNDQ4Cis6MjBBMUEwMDAzRTIwMDgyMEZGMjAxQzNFMkEyMEM5MjAwODIwMUMyMDJBRkNDQjg0MkM4NDFDODQyQTg0QzlGQzI4ODQxMDAwMTUKKzoyMEExQzAwMDBDODA3MEZFMTEwMEZDRkMzODg0NTRGQzkwODQ3Q0ZDNDQ0MDQ0N0M3Q0M0NDUyODQ0MzA3QzQ4NDU4NjAwMDBGMAorOjIwQTFFMDAwMTg0MEU3RkUyMDAwMjdCQ0ZDQTQyN0JDNzExMDZGRkM2MTEwQTdGQ0ExMTAyRkZFMjMyODJENTAzMThFMjEwNDEyCis6MjBBMjAwMDAxMDA4MjAzQzdCQzA0QTAwNEEwMDRCRjg3QTg4NEE4ODRBOTA0QTUwN0E1MDRBMjA0NDUwMDQ4ODA5MEUxNjA0RUIKKzoyMEEyMjAwMDAwODAxMDQwMjA0NDdCRkU0ODkwNDkwODRBMTQ3RDE0NDkxMDQ4QTA0OEEwNzg0MDQ4QTAwMTE4MDYwRTE4MDQ0NworOjIwQTI0MDAwMjAyMDMxMjA0MTIwRjlGQzhBMjA4QzIwODgyMEZCRkU4ODAwODlGODg5MDg4OTA4RjkwODg5MDg4MUY4MDEwOEUxCis6MjBBMjYwMDAwODFDMDhFMEZFODAxOEZFMkM4ODRBODg4OTA4MEEwODFGRjAxMDEwMTAxMDFGRjAxMDEwMTAxMDFGRjAxMDEwNDgKKzoyMEEyODAwMDEwM0MxN0MwMjI0ODc5NTA0RkZFNDhFMDQ5NTA3QTQ4NEM0NjRCRjg0QTQ4N0JGODRBNDg0MjQ4MDNGODAyMDg5RAorOjIwQTJBMDAwMDAwMDA3MjAzQTIwMkFBMDJBRkMyQjIwMkJGRTJBMzAyQTQ4Mjk4NDI5MDQ0QTgwNEE0MDREMzA0OTBFODAwNDY3Cis6MjBBMkMwMDAxMDFDMTBFOEZFQTgyOEE4NDRBODdFQTgwMEE4RkVBODIwQTgyMEE4M0NBNDA1MjQwNTM0MkEyRTE0MDQwMDAwNDIKKzoyMEEyRTAwMDNGRjgwMDMwMDZDMDAxMDAzRkY4MjEwODIxMDgzRkY4MjEwODIxMDgzRkY4MjEwODIxMDgyMTA4MjEyODIwMTBGMworOjIwQTMwMDAwMTAxMDEwMjAxMEY4MTBDOEZDQTgxNEE4MTQ5ODE0ODAxNEZFMjQwMjI0MDIyNUZBNDYwMjQ0MDI4MDBBMDAwNEQ0Cis6MjBBMzIwMDAwMjQwMDIyMDAxRkM3RjAwMDA4NDA0NjQwRkZDMEExMDA5MzAwODAwMEZGQzAwMDQ3RkY0MDAwNDAwMTQwMDA4NDkKKzoyMEEzNDAwMDAwMjA0MDQwNDZGODc4Qzg0MEE4NDI4ODNFOTgxMDgwMTBGQ0ZFMDQxMDA0MTFGNDEwMDQxMDA0MTAxNDEwMDgzQworOjIwQTM2MDAwMTAyMDEwNDAxMEY4RkVDODkyQTg5NDg4MTBBODI4OTAyOEZFMjgwMjI4MDI0QkZBNEMwMjg4MDIwMDE0MDAwODE2Cis6MjBBMzgwMDAxMDIwMTA0MDEwRjgxMDg4RkVDODEwQTgxMDk4N0M4MDQ0RkM0NDA0NDQwNDQ1RjQ3QzA0NDQxNDAwMDgwMDAwOTIKKzoyMEEzQTAwMDEwMTAxMDIwRkVGQzEwQzQyMEE0MjhBNDQ4OEM3RTgwMDhGRTI4MDIyQzAyNEFGQThBMDIyODBBMTAwNDAwMDBBOQorOjIwQTNDMDAwMTAxMDEwMjAxRUY4MTBDODdFQTg0MkE4NDI4ODdFOTg0MDgwNDBGRTQwMDI0M0ZBNDAwMjQwMDI4MDBBODAwNDQwCis6MjBBM0UwMDAyMDIwMjA0MDNFRkM0MkM0NDJBNEJBQTQyQThDMkE4MDJBRkUzQTAyMDJGQTAyMDIwMjAyMEEwQTA0MDQwMDAwNTUKKzoyMEE0MDAwMDAwMjAwNzQwNzhGODQ4Qzg0OEE4NDg4ODdFQTg0ODkwNDhGQzQ4MDQ0NEY0NTUwNDZCMDQ0OTE0MDAwODAwMDBBMgorOjIwQTQyMDAwMTAyMDI0NDg3OEYwMTAyMDdDRjgwMDAwN0ZGQzA0MDAxRkYwMTIxMDExMzAxMDAwMUZGQzAwMDQ3RkQ0MDAwOEY5Cis6MjBBNDQwMDAwMDIwRkU0MDIwRkMyMEM0NDBBNEZFQTRBQTg0QUE4Q0FBODBBQUZFQUEwMkFBRjJBQTAyODYwQTgyMDQwMDAwRDgKKzoyMEE0NjAwMDEwODAxMDgwRkJGMDEwOTAzOTkwRDU1NDNBMEMxRkYwMTQxMDEyMzAxMDAwMUZGQzAwMDRGRkM0MDAxNDAwMDg3NgorOjIwQTQ4MDAwMDAyMDBFNDBGMEY4MTBDODEwQThGRUE4MTA5ODEwODA3Q0ZFNDQwMjQ0MDI0NUZBNDQwMjdDMEE0NDA0MDAwMDlGCis6MjBBNEEwMDAxNDEwMTQyMDI0N0MyNDY0M0Y1NDY0NDQ2NDU0QUU0ODJEN0UzNDAyMjQwMjI1RkEyNDAyMjQwQTI0MDQwMDAwOTEKKzoyMEE0QzAwMDAyMDAwMTAwN0ZGRTAyNDAxMjUwMTI0QzI2NDQ1RkUwMTQyMDEyNjAxRkZDMDAwNDdGRjQwMDA0MDAxNDAwMDhGOQorOjIwQTRFMDAwMDAyMDEwNDAxMEZDN0VDNDEwQTQxMEE0RkY4QzgyODAzRUZFMDQwMjA4MDIwRUZBRjgwMjA4MDIyODBBMTAwNDBCCis6MjBBNTAwMDAwMDEwRkYyMDAwN0NFRjY0QTk1NEE5NTRBOTRDRUQ0MEVCN0VBOTAyQTkwMkE5RkFBOTAyQUQwQUVBMDQwMDAwNkYKKzoyMEE1MjAwMDA4MjAyODQwMjhGQzNFQzQ0OEE0MDhBNEZGOEMwMDgwMDBGRTdFMDI0MjAyNDNGQTQyMDI3RTAyNDIwQTAwMDRBRgorOjIwQTU0MDAwMDAxMDI0MjAyMkY4NDJDODkwQTgxODg4MjRBODIyOTA0MEZFQkMwMjI0MDIyNUZBMjQwMjI0MDIzQzBBMjQwNDMyCis6MjBBNTYwMDAwMDEwNEUyMDIyN0M4MjY0OTI1NDkyNDRGRTU0OTI0OEJBN0VCNjAyRDIwMjkyRkE5MjAyODIwMjhBMEE4NDA0NkQKKzoyMEE1ODAwMDQ0MTAyODIwRkVGQzEyQTQxMjk0RkU5NDkwOEM5MDgwRkVGRTEyMDIzMjAyNTJGQTU2MDI5MDAyMTAxQTEwMDQ1MworOjIwQTVBMDAwMDQxMDA0MjA3NjdDMDU0NEZGNTQwNDU0MTQ0NDE0NEM1QzQwNTQ3RTU1MDI1NTAyNUI3QUUzMDIwMTBBMDAwNEUwCis6MjBBNUMwMDAyNDEwMjQyMDI0RkNGRjg0MjRDNDI0QTQ3RUE0NTI4QzUyODA3RUZFNTIwMjUzRkE1MjAyN0UwMjQyMEEwMDA0OUQKKzoyMEE1RTAwMDEwMTAxMDIwRkVGQzI4QzQzNEE0NTBBNEZFOEM1MjgwN0VGRTUyMDI3RTAyMTFGQTE0MDIxODBBMTAwNDAwMDA1NgorOjIwQTYwMDAwMDgyMDEwNDA3RUZDNEFDNDdFQTQ0QUE0NEE4QzdFODAxMEZFMjgwMkZGMDIwOEZBMDgwMjA4MDIwODE0MDgwOERCCis6MjBBNjIwMDAxMDIwMDg0MEZFRjgwMEM4M0NBODI0QTgzQzk4MDA4MDdFRkMwNDA0MEUwNDc5RjQwODA0MDgwNDI4MTQxMDA4NzMKKzoyMEE2NDAwMDIwMDgyNzkwMjRCQzI0QTRGN0I0MjRBQzI0QUNGNEEwOTdCRTk0ODI5NDgyOTRGQUY4ODIwQThBMTEwNDAwMDA2MgorOjIwQTY2MDAwMDAyMEVFNDBBQUY4RUVDODAwQTg3Q0E4MDA5OEZFODAyMEZDM0MwNDA1RjQwNDA0MDQwNDE0MTQwODA4MDAwMEI1Cis6MjBBNjgwMDA0NDEwMjQyMDI4N0NGRjY0MjI1NDQyNDQ0NDRDOTU0MEVFN0UyMjAyNDQwMjQ0RkFBOTAyRkYwQTAwMDQwMDAwRUUKKzoyMEE2QTAwMDAwMTA3RTIwNEFGQzRBQzQ3RUE0NDBBNDVFOEM1MjgwNUVGRTUyMDI1MjAyNUVGQTkyMDI5MjBBMUUwNDAwMDAyOAorOjIwQTZDMDAwN0U0MDE0NDAwOEZFRkU4ODJCNTBDODMwMUFDRTA0MDAxRkUwMTIyMDExNjAxRkY4MDAwOEZGODgwMDI4MDAxMEZECis6MjBBNkUwMDAwRTEwRjAyMEEyRkM1MkM0MDRBNDQwQTQ3RThDODg4MDA4RkVGRTAyMDgwMjRBRkE0QTAyNEUwMjcyMEEwMDA0NkEKKzoyMEE3MDAwMDQyMTAyNDIwRkY3QzI4NDRGRTY0MkE1NEZGNEMyQTQwRkU3RTI4MDI2QzAyNkFGQUFBMDIyODAyMjgwQTI4MDQ3QgorOjIwQTcyMDAwMDAxMEZGMjA5MTdDRDU2NEQ1NTRENTU0NjY0NDk5NEMxMDQwRkY3RTI0MDI2NUZBMTgwMjE0MDIyMjBBQzAwNDUxCis6MjBBNzQwMDAxMDEwMDgyMDdFRkM1NEM0NTRBNDdFQTQ1NDhDNTQ4MDU0RkU1QzAyNDAwMjU1N0FBQTgyQTAwMjAwMEEwMDA0QjQKKzoyMEE3NjAwMDAwMTBGNzIwNTU3QzMzNjQ1NTU0OTk0NDA4NEMzNDQwQzM3RTEwMDI2OEZBMzIwMkM0MDIxODFBRTAwNDAwMDAzNworOjIwQTc4MDAwMDgxMDA4MjBGRjdDODk2NDU2NTQyMjQ0RkZENDIyNDgzRTQwMjI3RTNFMDIwOEZBNEEwMjg5MDIyODBBMTAwNDQ3Cis6MjBBN0EwMDAzMDIwMjg0MDdFRjg0OEM4QzhBODdFODg0ODk4N0U4MDQ4RkM0ODA0N0UwNDQwRjRBQTA0QUExNDAwMDgwMDAwNEQKKzoyMEE3QzAwMDA4NTBGRjQ4MjJGQzNFNTAwODk0MkM5NENCMEMxRkYwMTIxMDExNTAxMDIwMUZGQzAwMDRGRkU0MDAxNDAwMDgxQgorOjIwQTdFMDAwN0UxMDA0MjAxODdDRkY2NDFBNTQyODQ0RDg1NDdGNDg1NTdFNjMwMjVEMDI1NTdBNUQwMjQxMDI0NTBBNDIwNDQ2Cis6MjBBODAwMDAxMDg4MjNGRTdDODg2NTIwNTVGQzQ3MjA0REZDNDEyMDdERkMwNTIwMTVGRTI0ODhDNDUwMDQzMDE0NEUwOTg0MDAKKzoyMEE4MjAwMDdDODA0NEY4N0Q5MDEwNjA1RDlDNTBGODVFODhFNEY4MUZFMDE0MjAxMjYwMTAwMDFGRkMwMDA0RkZENDAwMDhCMQorOjIwQTg0MDAwMjQxMEZGMjAyNDdDNzc2NDU1NTQ3NzQ0Mjg0QzNGNDA2ODdFN0UwMkE4MDIzRUZBMjgwMjI4MDIzRjBBMjAwNENBCis6MjBBODYwMDAwMDgwMDA0MDBGRkU4ODAwNDgwMDQ4MDAwODAwMTgwMDI4MDBDODAwMTAwMDEwMDAyMDAwMjAwMDQwMDA4MDAwQzMKKzoyMEE4ODAwMDAxMDAwMDgwMUZGRTEwMDA5MDAwNTdGQzUwNDAzMDQwNTA0MDkwNDAxMDQwMjA0MDIwNDA0MDQwNDE0MDgwODBCNgorOjIwQThBMDAwMDEwMDAwODAxRkZFMTAwMDkwMDA1N0Y4NTA4ODEwODgzMDg4NTA4ODkwODgxMEE4MjA5MDIwODA0MDgwODA4MDJCCis6MjBBOEMwMDAwMTAwMDA4MDFGRkUxMDAwOTAwMDVGRkU1MDgwMTA4MDMwRjg1MTA4OTEwODIyMDgyMjA4NDQxMDQ4NTA5MDIwNzMKKzoyMEE4RTAwMDAxMDAwMDgwMUZGRTEwNDA5MDQwNTA0NDE0NDQzNDQ0NTQ0NDk0NDQxNDQ0MjQ0NDI0NDQyN0ZDNDAwNDgwMDBCNworOjIwQTkwMDAwMDEwMDAwODAxRkZFMTAwMDkzRkU1MjIwMTIyMDMzRkM1MjQ0OTI0NDE0NDQyNDg0MjQ4NDQ5MDQ5MjI4MjQxMEQ2Cis6MjBBOTIwMDAwMTAwMDA4NDFGRkUxMTAwOTEyMDUxMTA1RkZFMTE0MDMxNDA1MTQwOTI0MDIyNDAyNDQyNDQ0MjQ4M0U5MDAwNkMKKzoyMEE5NDAwMDAxMDAwMDgwMUZGRTEyMTA5MjEwNTIxMDVGRkMxMjEwMzIxMDUyMTA5M0YwMjIxMDIyMTAyMjEwNDNGMDgyMTAzNAorOjIwQTk2MDAwMDEwMDAwODQxRkZFMTAwMDkwMDQ1RkZFNTAwODEwMDgzN0M4NTQ0ODk0NDgyN0M4MjAwODIwMDg0MDI4ODAxMDE2Cis6MjBBOTgwMDAwMTAwMDA4MDFGRkUxMDAwOTAwMDUzRjg1MjA4MTIwODMzRjg1MjA4OTIwODEzRjgyMjA4MjAwMDRGRkU4MDAwNzkKKzoyMEE5QTAwMDAwODAwMDQwMUZGRTEyMDA5MjAwNTNGRTU0ODAxNDgwMzhGQzUwODA5MDgwMjBGQzIwODAyMDgwNDA4MDgwODAyRAorOjIwQTlDMDAwMDEwMDAwODAxRkZFMTIwMDkzRkM1NDA0NTdFNDFBMjQzMjI0NTNFNDkyMjgxMjEwMjIwMjIyMDI0MUZFODAwMEY3Cis6MjBBOUUwMDAwMTAwMDA4MDFGRkUxMDgwOTA0MDVGRkM1MDQwMTA0MDMwNDA1N0ZDOTA0MDIwNDAyMDQwMjA0MDVGRkU4MDAwOEUKKzoyMEFBMDAwMDAxMDAwMDg0MUZGRTEwODA5MDQ0NUZGRTUwODAxMTEwMzIyMDU3QzA5MDgwMjExMDIyMDg0RkZDNDQwNDgwMDBGQgorOjIwQUEyMDAwMDEwMDAwODAxRkZFMTIwMDkyMDA1RkJDNTJBNDEyQTQzMkE0NTJBNDk0QTQyNEE0MjRBNDQ5M0M1NTI0QTIwMEQ5Cis6MjBBQTQwMDAwMDgwMDA0MDFGRkUxMDAwOTAwMDU3RkM1MEEwMTBBMDM4QTQ1NEE0OTJBODIyQjAyMEEwNDBBMDRGRkU4MDAwMzkKKzoyMEFBNjAwMDAxMDAxRkZFMTA4ODlGRkM1MDgwNTdGODEwODgzN0Y4NTQ4MDk3RkMyMTQ0MjEyNDIyMjg0NDEwNDgwRTkwMDQwNgorOjIwQUE4MDAwMDEwMDAwODAxRkZFMTA0MDkwNDA1RkZDNTA0MDEwNDAzN0ZDNTAwMDkwODgyQTQ0MkE1MjJBMTI1MUYwODAwMDNCCis6MjBBQUEwMDAwMDgwMDA0MDFGRkUxMTEwOTExMDVGRkU1MTEwMzdGRTU0NDI5ODQwMTdGODIwODgyMDg4NDEwODg2NTAxODIwRTAKKzoyMEFBQzAwMDAwODAwMDQ0MUZGRTkwMDA1N0ZDNTA4MDE3RjgzMTA4NUZGRTkwMDAxN0Y4MjQwODI0MDg0N0Y4ODQwODAwMDA3QgorOjIwQUFFMDAwMDA4MDAwNDAxRkZFMTA0MDkyNDg1MjQ4NTI1NDE1NTQzOEUyNTA0MDk3RkMxMDQwMjA0MDIwNDA0RkZFODAwMDhDCis6MjBBQjAwMDAwMDgwMDA0MDFGRkUxNDAwOTJGQzU0NDQ1NDQ0MTVGNDM0NDQ1NEU0QTU1NDI2NTQyNDQ0NDQ0NDQ0NTQ4NDA4NDYKKzoyMEFCMjAwMDAwODAwMDQwMUZGRTE0MjA5MjIwNTAyODU0QTQzMkEyNTEyMjkyMjAyQzIyMjQwQzQ0MTg0NDYwODE4MDBFMDA1QworOjIwQUI0MDAwMDEwMDAwODAzRkZFMjAwMDJGRkNBMDgwNjMwODJDOTA2NTYwQTI2MDI1RDAyOTU4NDI0RTQ0NDQ4QTgwMDEwMDQ1Cis6MjBBQjYwMDAwMDgwMDA0MDFGRkUxMTIwOTEyMDVGM0U1MTIwMTEyMDM3M0M1MTIwOTEyMDJGM0UyMTIwMjEyMDQxMjA4MTIwNTEKKzoyMEFCODAwMDAxMDAwMDg0MUZGRTkwMDA1N0ZDNTQ0NDE1RjQzNDQ0NTQ0NDk1RjQxNTE0MTVGNDI1MTQyNDA0NDdGQzg0MDQ5OAorOjIwQUJBMDAwMDA4MDFGRkMxMDAwOTNGODUwNDA1RkZDMTE2MDMyNTA1NDRFOTE0NDJGRkUyMTEwMjMyMDQwRTA4MzMwMUMwODcyCis6MjBBQkMwMDAwMTAwMDA4MDFGRkUxMDgwOTczQzU0NDQ1NDQ0MTc1QzM0NDQ1NDQ0QTdGQzI0QzQyMTIwNDIxODhDMEUzMDA0Q0QKKzoyMEFCRTAwMDAxMDAwMDgwM0ZGRTI0MTBBMjEwNkY5MDI0MjgyNzI0NjU0MkE1OTAyNTA4MjkyMDQ5MTA1NTA4QTIwODAwMDA2OQorOjIwQUMwMDAwMDA4MDAwNDAxRkZFOTIxMDUxMjA1N0ZDMTQ0NDM3RkM1NDQ0OTQ0NDE3RkMyMDQwMkZGRTIwNDA0MDQwODA0MEI2Cis6MjBBQzIwMDAwMTAwMDA4MDNGRkMyMjA4QUY4ODYyMjgyRkE4MkFBODZBQThBRkE4MjcyODJBQTg0QTQ4NTIwOEEyMjgwMjEwNzIKKzoyMEFDNDAwMDAxMDAwMDgwM0ZGRTIwODBBRkZDNjQ5MDIyQTAyRkZFNjEyMEE2OTAzODhFMjNGNDQwODA0MDgwOUZGRTAwMDA1NworOjIwQUM2MDAwMDA4MDNGRkUyMjAwMjJGMEE0MTA2N0ZFMkM4MDM0RkM2NEEwQTUyMDI3RkUyNDYwMjQ1MDQ0ODg0NTA2ODYwNDY3Cis6MjBBQzgwMDAwMTAwMDA4MDNGRkUyMjIwQUZGQzYwODAyN0Y4MjA4MDZGRkNBMTAwMjFGODIyNDAyNDQwNDg0MDU3RkU4MDAwMjIKKzoyMEFDQTAwMDAxMDAwMDgwM0ZGRTI0OTBBMkEwNkZGQzIxQzAyNkJFNzkwNEFGRkUyMTIwMjMyMDQwRTA0M0I4OUMwQzAwMDAzRgorOjIwQUNDMDAwMDA4MDNGRkUyMDAwQUZCQzY4ODQyODg0MkZCQzY4MDBBRkJDMjgwNDI4MjQyRkE4MjgxMDQ4Mjg0OEM2OEIwNDQyCis6MjBBQ0UwMDAwMTAwMDA4MDFGRkUxMDAwOTdGODUxNTAxMEEwM0ZGRTU0NDQ5N0Y4MjQ0ODI3RjgyNDQ4NDA3QzhGQzQwMDA0NTgKKzoyMEFEMDAwMDAwODAwMDQwM0ZGRTIyMDAyRkZDQTIyNDZGQTQyMjI0MkZENDYyNDhBMjgwMjA0NDRBNEE0QTBBOTFGODAwMDAyNgorOjIwQUQyMDAwMDA4MDNGRkUyMjEwMkZGQ0EyMTA2N0Y4MjQwODY3RjhBNDA4MjdGODIwODAzRkZFMjE0MDQyMzA0NDBFOTgwNEY0Cis6MjBBRDQwMDAwMTAwMDA4MDNGRkUyNDAwMkY3OEE5NDg2RDQ4MkI0NjI5ODA2RjdDQjk0NDJENDQyQjI4NDkxMDU1MjhBMkM2QzAKKzoyMEFENjAwMDAwODAxRkZFMTI0ODkxNTA1MjQ4NTRCMDExMEUzNjA0NUJGODkyMDgxM0Y4MTIwODIzRjgyMjA4NDIyODAyMTAzMQorOjIwQUQ4MDAwMDA4MDAwNDAxRkZFMTExMDk3RkM1MTEwNUZGRTEwNDAzN0ZDNTQ0NDk3RkMxNDQ0MjdGQzIxMTA0MjA4ODQwNDM4Cis6MjBBREEwMDAwMDgwM0ZGRTIwMDAyRkZFQTEyMDY3RkMyNTI0MjUyNDY3RkNBMDAwMjdGQzIwMDAyRkZFNDQ0ODQ5NDQ5MDgyMzUKKzoyMEFEQzAwMDAwODAxRkZFMTAwMDE3RkM5NDQ0NTdGQzU0NDQxN0ZDMzA4ODUzRjA5MTEwMjdGODIwNDg0NDUwNDk0ODkwODQ4MQorOjIwQURFMDAwMDEwMDNGRkUyMDAwMkY3Q0ExNDQ2NTU0MjU1NDI0NTQ2QTI4QjE0NDNGRkUyMjIwMjY0MDQxODA0Njc4QjgxMDA4Cis6MjBBRTAwMDAwMTAwMDA4MDNGRkUyMjIwQTUzQzY4QTgzNTEwMkExMDY1RUVBODA0MzdGQzIwNDA0MjUwNDQ0ODg5NDQwMDgwQzUKKzoyMEFFMjAwMDAxMDAwMDgwM0ZGRTIwODAyRUY4QUE4ODZCNTAyQzMwMkE0ODZCQTZBQUEwMkNGQzI5MjA0QUZDNDgyMDhCRkVEMAorOjIwQUU0MDAwMDEwMDAwODAzRkZFMjA0MDJFNzhBQTg4NkFGQzJDMDQyQUZDNkEwNEFBRkMyQzQwMjhBNDRBQTI0QThBOEM3ODMwCis6MjBBRTYwMDAwMTA0M0ZGRTIwMDBBRjc4NjUyODIzMTgyNTI4Njg4OEExNjAyNjVDMzk4ODI2NjA0MTk4NDY2MDgxODAwRTAwRUMKKzoyMEFFODAwMDAxMDAwMDgwM0ZGRTIwODBBRTNFNjVFODI0NDgyNTQ4NkY3RUE0QzgyNDQ4MjZBODU5Mjg0MjdFODQwMDAwMDBFQQorOjIwQUVBMDAwMDEwMDAwODAzRkZFMjIyMDJGQkNBMjQ4NkZCRTJBQTIyQUFBNkZBQUEyMkEyNzJBMkFBQTUyMTQ2MjIyODI0MjM4Cis6MjBBRUMwMDAwMTAwM0ZGRTIwODAyRkZDQTIxMDdGRkUyMDAwMjdGODY0MDhBN0Y4MjQwODI3RjgyODg0NEE0MjUyMEE4MUY4OTgKKzoyMEFFRTAwMDAxMDAzRkZDMjAwMDJGRjhBODI4NkZFODJBQUUyQUMwNkZCQ0FBQTQyQUE4MkZEODRBOTA1MjY4NTQ0NkE4ODQzQQorOjIwQUYwMDAwMDEwMDAwODAzRkZFMjAyMEFGMTA2OUZFMjk0NDJGMjg2OEZFQUYxMDJEMTAzNTdFNTUxMDU1MTBBNzEwNDUxMDVFCis6MjBBRjIwMDAwMDgwM0ZGRTI0MDAzRjdDQTQxMDZGMTAyOTdDMkY0NDY5NTRBRjU0Mjk1NDJGNTQyOTU0NUZBODQ5NDQ5MDgyNDcKKzoyMEFGNDAwMDAwODAzRkZFMjk0NDJGN0NBOTQ0NkY3QzI5NDQyRjdDNjQ4MEE3RkUyQzQwMzdGQzI0NDA0N0ZDNDQ0MDg3RkU1NAorOjIwQUY2MDAwNDAwMDIzREMxMDQ0RkM0NDAwNDQ4NTU0NDRDQzQ4NDQyOENDMjk1NDEyNjQxQzQ0RTA0NDAxNTQwMDg4MDAwMEZECis6MjBBRjgwMDA0MDQwMjA0MDIzRkNGQzQwMDNGODBBNDg4QTQ4NTNGODUwNDA1MEUwMjE1MDM5NDhFMjQ4MDQ0NjE4NDQwMDQwNEEKKzoyMEFGQTAwMDAxMDAwMDgwN0ZGRTQwMDIwODIwMTIxMDYyMEMwN0Y4MDQwODBDMTAxMjIwMDA0MDAwODAwMzAwMEMwMDcwMDAwMQorOjIwQUZDMDAwMDEwMDAwODA3RkZFNDgxMjEwMDgyRkY0MDAxMDAwMTAwRkYwMDgwMDA4MDAwRkY4MDAwODAwMDgwMDQ4MDAzMDIwCis6MjBBRkUwMDAwMjAwMDEwMDdGRkU0NDI0MDgxMDMxMEMwMTAwN0ZGQzAxMDAxMTEwMTExMDFGRjAwMTAwMDEwNDAxMDQwMEZDM0YKKzoyMEIwMDAwMDAyMDAwMTAwN0ZGRTQ0MjIwODE4MTBGQzdGMDAwMTAwM0ZGODAwMjAwMEMwMDMwMDBDMDAzMDAwQ0ZGRTAwMDA3QgorOjIwQjAyMDAwMDIwMDAxMDA3RkZFNDQyNDE4MTA2MDRDMTA0MDE1RjgyNDQ4Nzg0ODEwNDgxNDQ4MjQ4ODdDODgwNTUwMDIyMEYwCis6MjBCMDQwMDAwMjAwMDEwMDdGRkU0NjIyMTgxODYyNDYwMjQwMjI0ODEyNTAwQTYwMzI1OEM0NDgwNDQwMDg0MjMwNDJDMDNFMjQKKzoyMEIwNjAwMDAyMDAwMTAwN0ZGRTQ4MTIxMTA4MkZGNDAxMDAzRkZDMDkwODE1MTAwOTAwN0ZGRTAyNDAwNDIwMTgxODYwMDhDNAorOjIwQjA4MDAwMDIwMDAxMDA3RkZFNDgyMjEwMTg3RkY0MTExMDFGRjAxMTEwMUZGMDAxMDBGRkZFMDM0MDBEMzA3MTBFMDEwNEM5Cis6MjBCMEEwMDAwMjAwMDEwMDdGRkU0NDI0MTkxODYyQzYwQzMwMzdDRUMwMDQxRjA4MTE0ODFGNDgxMTQ4MUY0ODE1MjgxMjEwNDQKKzoyMEIwQzAwMDAxMDA3RkZFNDQyMjBBMTAzMTA4MUZGODA4MjAwNDQwN0ZGQzAwMDAxRkYwMTAxMDFGRjAxMDEwMUZGMDEwMTBBRQorOjIwQjBFMDAwMDIwMDAxMDA3RkZFNDQyMjE4MTgyOTE0MDUyMDdGRkMwNTYwMTkxODAyMDA3RkZFMDQyMDBFNDAwMUMwN0UzQzVCCis6MjBCMTAwMDAwMjAwMDEwMDdGRkU0MDA0MEM2MDMwMThDNjM2NzlEMDU1NTA1NTUwNTU1MDU1NTA1NTQ4NUQ1ODUyNjY4NDQ0MEMKKzoyMEIxMjAwMDA0MDAwMjAwMDIwMDNGODAwMDgwMDEwMDAyMDAwNjQwMEE4MDEzMDA2MkMwMDI0MDAyMDAwMjAwMDIwMDAyMDA3NgorOjIwQjE0MDAwNDAwMDMwMDAxM0ZDRkQwODA1NDgwOTI4MTExMDM0OTA1OEEwOTRBMDE0NDAxMEEwMTA5ODExMEUxMjA0MTQwMEU3Cis6MjBCMTYwMDA0MDQwMzA0MDIwNDBGQkZDMEE0NDEyNDQyMjQ0NkE0NEFBQTQzMjlDMkIxNDIyMDQyMjA0MjIwNDIyMTQyMjA4QTMKKzoyMEIxODAwMDIwMDAxODFDMTFFMEZDMjAwNDIwMDgyMDEyMjAzNUZFNTgyMDk0MjAxNDIwMTAyMDEwMjAxM0ZFMTAwMDEwMDBBQworOjIwQjFBMDAwNDA0MDMwNDAxMEEwRkM5MDA5MDgxMjQ2MjQyNDY4MjBCM0ZDMkMwODI4MDgyMDEwMjAxMDIwMjAyMDIwMjA0MEQ3Cis6MjBCMUMwMDAyMDQwMTA0MDEwNDBGQkY4MDg0ODEwNDgxNDQ4M0JGRTU4NDA5NEEwMTBBMDExMTAxMTEwMTIwODEyMDYxNDA0MzcKKzoyMEIxRTAwMDIwMjAxMDI0MTIyNkZEQTQwNEE4MDgyMDEzRkUzNDIwNTgyMDlCRkUxNDIwMTAyMDEwMjAxMDIwMTAyMDEwMjA5NAorOjIwQjIwMDAwNDAyMDMyMjQyMTI2RkRBNDA5MjgxMDIwMTNGQzM0MDQ1ODA0OTVGQzEyMDQxMDA0MTAwNDEzRkMxMDA0MTAwMDhBCis6MjBCMjIwMDAyMDQwMTA0MDEwQTBGQzkwMDUwODBBMDYxMUY4MzQwMDU4MDA5OUY4MTUwODExMDgxMTA4MTFGODExMDgxMDAwNUUKKzoyMEIyNDAwMDQwODAzMDgwMjBGQ0ZEODQwQTg4MTA1MDMwMjA1NEQ4OUIwNjE1RjgxMTA4MTEwODExMDgxMUY4MTEwODEwMDA0OAorOjIwQjI2MDAwMjAwMDExRjgxMTA4RkRGODA5MDgxMTA4MTVGODM5MDA1OTg4OTU0QzExMzAxMTEwMTE0ODEzODYxMTA0MTAwMEVDCis6MjBCMjgwMDA0NDIwMzIyMDIyRkNGODIwMDgyMDEwNTAyNkZFNkExMEIyMTAzMkZFMkExMDIyMTAyMjEwMjUxMDI4RkUyMDAwOTEKKzoyMEIyQTAwMDIwMDAxOUY4MTEwOEZEMDgwNTA4MDlGODA4MDAxN0ZDMzg0MDU0NDA5M0ZDMTA0MDEwNDAxMDQwMTdGRTEwMDA2NgorOjIwQjJDMDAwNDA0MDMwNDAxMEMwMDEyMEZBMTgwREY2MTAwMDE0MDgzNDhDNUE0ODk1NTAxMTUwMTEyMDE3RkUxMDAwMTAwMDNFCis6MjBCMkUwMDAyMjAwMTkwMDEwQkNGRTA0MEFGNDBBOTQxMjk0MzZGNDVBOTQ5Njk0MTI5NDEyRjQxMjA0MTIwNDEyMTQxMjA4QTkKKzoyMEIzMDAwMDQwMjAzMDIwMTNGRUY4MjAwOUZDMDgyMDEwMjAzN0ZFNTg0MDk0QzQxMTI4MTMxMDE1MTgxMTRFMTE4NDExMDA0NAorOjIwQjMyMDAwNDA0MDMwNDQxMUZDRkM0ODA0NTAwQkZFMTA0MDM0ODA1OUY4OTcwODE1MDgxMUY4MTEwODExMDgxMUY4MTEwOEZECis6MjBCMzQwMDA0MDAwMzFGQzIxMDRGREZDMDUwNDA5MDQxNUZDMzkwMDU5RkU5NjkyMTQ5MjExMTIxNjIyMTBDMjEzMTQxMDA4NzEKKzoyMEIzNjAwMDIwMjAxMDQwMDFGQ0ZEMjQwOUZDMDkyNDEzMjQzNUZDNTg0MDk0QTAxM0ZFMTAyMDEwMjAxMDIwMTAyMDEwMjBCOAorOjIwQjM4MDAwNDAwMDMxRkMxMTA0RkQwNDA1RkMwOTIwMTMyMDM1RkM1OTIwOTUyMDEyRkMxMjg0MTI4NDEyODQxNEZDMTQ4NEY2Cis6MjBCM0EwMDA0MDAwMzdCQzI0ODRGQjI4MDkxMDBBQTgxNDQ0MTQwMDNCRkU1NEE0OTMyODExMTAxMkE4MTQ0NjE4ODIxMTAwOEMKKzoyMEIzQzAwMDIxMTAxMTEwMDdGRUY5MTAwODQwMTBBMDI1MTg2QTBFQjVGNDI4MDAyNUY4MjEwODIxMDgyMTA4MjFGODIxMDhCNQorOjIwQjNFMDAwNDA4ODMwODgxMzhFRkM4ODA5ODgxMjhBMTA4NjI5RkM3MTA0QTlGQzI1MDQyMUZDMjEwNDIxMDQyMTE0MjEwOEI4Cis6MjBCNDAwMDA0MTAwMzFGQzExNDRGQTQ0MEE0NDE2N0MxMjU0MkExMDcyRkVBQTMwMkE1ODIyNTQyMjk2MjMxNDIyMTAyMjEwMTYKKzoyMEI0MjAwMDQwMjAzMTI0MTBBOEZGRkUwODcwMDhBODExMjYzMjQwNTQ0MDlCRkUxNDg4MTFEMDEwMzAxMDRDMTE4NjE2MDBERQorOjIwQjQ0MDAwMjA4MDE4NjAxMDIwRkZGQzBBMDQwQkZDMTIwMDM3RkM1QjU0OTc1NDEzRkMxNTU0MTk1NDExNTQxMTBDMTAwMDNFCis6MjBCNDYwMDA0MDkwMzA5MDIyOTBGQUJFMEFBMDEyRDAyNjg4Njg4OEIwMDAyQkY4MjZBODIyQTgyMkE4MjJBODJGRkUyMDAwNUMKKzoyMEI0ODAwMDQwMUUyN0UwMjQzQ0ZDMjAxNUZFMTUyMDI1Rjg2RDIyQjUxRTJEMDAyNTc4MjU0ODI1NEEyQTRBMkE4NjI5MDAxMQorOjIwQjRBMDAwMjAwMDE3REMxMjY0Rjk1NDA5NEMwQTU0MTQ0NDM4MjA1NUZDOTUwNDExMDQxMUZDMTEwNDExMDQxMUZDMTEwNEZCCis6MjBCNEMwMDA0MDAwMjc3QzAxNDRGOTQ0MEY3QzE0MTAyNDdDNkM1NEI3NTQyRDU0MjE3QzIxMTAyMTE0MjUxRTIyRTQyMDAwMDAKKzoyMEI0RTAwMDQwMDAzN0ZFMjA0MEZCRkUwQTQyMTU1QzIwNDA2ODAwQjdGRTI4NDAyN0ZDMjI5NDIyOTQyMjk0MjI5NDIyMENCMworOjIwQjUwMDAwNDJBODMyNDgxN0JFRkE1QzBGNUExMkE4MTI4ODJGRkU3MTEwQUFFRTI0NDQyQkY4MjA0MDI3RkMyMDQwMjBDMDRCCis6MjBCNTIwMDAwMDAwN0ZGQzAxMDQwMTA4MDEwMDExMTAxMUY4MTEwMDExMDAxMTAwMjkwMDI1MDAyMzAwNDEwMDQwRkU4MDAwQjQKKzoyMEI1NDAwMDAwMDA3RkZFMDEwNDExRjgxMTAwMjkwMDQ3RkM4MDAwMUZGMDEwMTAxRkYwMTAxMDFGRjAxMDEwMTA1MDEwMjA0NgorOjIwQjU2MDAwMDAyMDdGMjA1MjIwOTFGRTdEMjQyMTI4NTEyMDdERjgxMTQ4MTE0ODFENDhGMTUwMTIzMDEyNDgxNDhFMTkwNDg4Cis6MjBCNTgwMDAxMDEwMjQxMDQyRkU3RTkyMDg5NDI0OTA0MjkwOTBGQzNFQzQyNEM4NTUyODg5MTAxNTMwMjI0ODQ0OEU4OTA0NDcKKzoyMEI1QTAwMDAwMjA3RTIwMDQ1MDI4NTAxMDg4RkU4ODFCNDYyQTI0MjgyMDQ5RkM0ODA4ODgwODA4MTAwODEwMjgxMDEwMjAyRgorOjIwQjVDMDAwMDEwMDAxMDAzRkZDMDEwMDFGRjAwMTAwMDEwMDdGRkUwMzgwMDU0MDA1MjAwOTE4MTEwRTIxMDQ0MTAwMDEwMDBCCis6MjBCNUUwMDAxMDAwMTFGQ0ZFMDgxMDUwN0UyMDEwMjBGRTIwMTFGRTM4MjAzNDIwNTYyMDU0MjA5MDIwMTAyMDEwQTAxMDQwNTcKKzoyMEI2MDAwMDEwMjAxMDIwRkUyMDEwQTg3Q0E0MTEyMjExMjJGRTI0MTAyNjM4MjQzNDA4NTYxMDk0MjAxMDQwMTE4MDE2MDA2RAorOjIwQjYyMDAwMDgwMDA4RkNGRjg0MDg4NDdFODQwOEZDMDg4MEZGODAwOEZFMUM4MjJBODI0QTgyODg4MjA4ODIwOEZFMDg4MkEyCis6MjBCNjQwMDAxMDIwMTAyMEZFNTAxMDg4N0QwNjEyMDQxMUY4RkUwMDEwMDAzOUY4MzUwODU3MDg1NTA4OTEwODExRjgxMTA4MEYKKzoyMEI2NjAwMDEwOTAxMDkwRkZGRTEwOTA3QzkwMTFGRTEyMDRGRTQwMTA0MDM5RkMzNjQ0NTQ0NDUwODQ5MDg0MTExNDEyMDhDMAorOjIwQjY4MDAwMTAyMDEwMjBGRjI0MTBBNjdFQTgxMDIwMTFGRUZGMDIxMTdBMzk0QTM1NEE1NzRBOTU3QTExMDIxMTBBMTEwNDhCCis6MjBCNkEwMDAxMDAwMTFGQ0ZEMjQxMUZDN0QyNDExMjQxMUZDRkMyMDEzRkUzQTIyMzYyQTU2M0U5M0VBMTIwMjEyMEExMjA0MUMKKzoyMEI2QzAwMDEwNDAxMjQ4RkQ1MDEzRkMxMEUwN0Q1ODEyNEVGQzg0MTA4MDNCRkUzNTA4NTU5MDkwNjAxMDkwMTEwQzEyMDQxMQorOjIwQjZFMDAwMTA5MDEwOTBGRkZFMTA5MDdERkMxMDkwMTNGRUZFMjAxMUZDMzkyNDU1RkM1NTI0OTNGRTExMDQxMTE0MTEwODBECis6MjBCNzAwMDAxMUZFMTEwMEZERkMxMTAwN0RGRTExNTQxMTU4RkY2RTExNDQzOTA4NTVGRTUyMDg5Mjg4MTQ4ODEwMjgxMDEwRjgKKzoyMEI3MjAwMDIwNDAyMDIwRkJGRTIyODg3QkZFMjJEODIzQUNGQThBMjI4ODczRkU2QTQwQUFGQ0E1ODQyNjg0MjRGQzI4ODRGNgorOjIwQjc0MDAwMDEwMDFGRUMwMTMwN0ZGRTAyMDAxRkU4RTgwODA3RjgwMDAwMUZGODA4MTAxRkZDMDA4ODNGRjgwMDgwN0ZGRTMxCis6MjBCNzYwMDAwMDAwRkYwMDIyRkUyMjEwM0UxMDIyMTAyMjEwMjIxMDNFMTAyMjEwMjIxMDJGMTBGMjEwMDIxMDAyNTAwMjIwMUIKKzoyMEI3ODAwMDAwMjBGQzIwNDlGQzQ5MjQ3OTI0NDlGQzQ5MjQ3OTI0NDkyNDRCRkU1RDA0RTkwNDA5MDQwOTA0MDkxNDA5MDg4MworOjIwQjdBMDAwMDA0MEZFNDA0NDQwNDRBMDdDOTg0NTRFNDYyNDdDMDA0NUZDNDQwODRFMTBGNEEwMDQ2MDA0MzAwNDIwMDQwMEQ3Cis6MjBCN0MwMDAwMDIwRkUxMDQ1RkU0NTAyN0UwNDQ0MDA0NDAwN0RGRTQ0MTA0NDEwNEUxMEY0MTA0NDEwMDQxMDA0NTAwNDIwNDIKKzoyMEI3RTAwMDAwMDBGRTFDNDVFMDQ0MjA3QzIwNDdGRTQ0MjA3QzIwNDQyMDQ1RkM0RjA0NzUwNEM1MDQwNUZDMDUwNDA0MDA3RAorOjIwQjgwMDAwMDAyMEZERkM0OTI0NDlGQzc4MjA0QkZFNDgwMDc5RkM0OTA0NDkyNDVEMjRFOTI0MDg1MDA4NDgwODg2MDkwNDM0Cis6MjBCODIwMDAwODIwN0YyMDA4N0U3RjQ0MTBBODFFMTAyMjI4NDQ0NDdGRkUwODIwMEZFMDA4MjAwRkUwMDgyMEZGRkUwMDIwNTAKKzoyMEI4NDAwMDdGRkUwNDQwM0ZGODI0NDgzRkY4MDAwMDFGRjAxMDEwMUZGMDEwMTAxRkYwMDEwMEZGRkUwMTAwMDEwMDAxMDBERgorOjIwQjg2MDAwMDAwMDdERkUxMDIwMTA0MDExRkMxMTA0RkYyNDExMjQxMTI0MTEyNDExMjQxMDUwMTA0ODEwODYxMzAyMDAwMDUxCis6MjBCODgwMDAwMDAwM0RGRTIwMjAyMDQwMjBGQzNFODQyNEE0MjRBNDI0QTQyNEE0MjRBNDQ0NTA0NDQ4ODQ4NjA1MDIwMDAwRDYKKzoyMEI4QTAwMDEwMDAwOUZFMDgyMEZGNDAwMEZDMDA4NDNDQTQyNEE0MjRBNDI0QTQyNEE0MjY1MDQ0NDg0MTg0ODYwNjAwMDAzNworOjIwQjhDMDAwMTAwMDExRkUxMDIwRkU0MDEwRkMxMDg0N0NBNDAwQTQ3Q0E0NDRBNDQ0QTQ0NDUwN0M0ODQ0ODYwMTAyMDAwMDYyCis6MjBCOEUwMDAxMDAwMTFGRTE4MjAyNDQwMjJGQzdFODQ4MEE0MDBBNDNDQTQyNEE0MjRBNDI0MjAzQzUwMjQ4QzAzMDQwMDAwQUUKKzoyMEI5MDAwMDQwMDA0REZFNzAyMDQ0NDA0NEZDM0M4NDEwQTQxMEE0RjZBNDM4QTQzNEE0NTJBNDkyNTA1MDhDMjMwNDAwMDBGNworOjIwQjkyMDAwMTFGRTA4MTBGRjIwMTBGQzE0ODQyNEE0NzhBNDA4QTQxMkE0MjRBNEM4QTQxNDMwMjI0OEMwODYwMzAyMDAwMEFBCis6MjBCOTQwMDAwODAwMDlGRTE0MTAzMjIwNDhGQzgwODQ3RTg0MDRBNDA4QTQzRUE0MjJBNDIyMzAzRTQ4MjA4NjAzMDIwMDAwOTkKKzoyMEI5NjAwMDAwMDBFRUZFQUEyMEVFNDAwMEZDN0M4NDAwODRGRUE0MTBBNDFFQTQwMkE0MDIyMDAyNTAwQThDMDUwNDAwMDA5MgorOjIwQjk4MDAwMDAwMDA4RkU0QTEwNEEyMDdFN0MwMDQ0RkY1NDEwNTQ3RjU0NTU1NDU1NTQ1NTI4NTUyNDU1NDY0MzgyMDAwMDZECis6MjBCOUEwMDA3RjAwMjI3RTNFMTAyMjdDM0U0NDIyNDRGRkQ0MDI1NEZGRDQ4OTU0NTU1NDIyMjgzNTI0NDg0NjkwODIwMDAwQ0YKKzoyMEI5QzAwMDI0MDAyNEZFRkYxMDI0MjA3RjdFMTQ0MjdGNTI1NTUyNTU1MjU1NTI2QjUyNDk1MjUxMTg0NTI2NDI0MjAwMDAwNQorOjIwQjlFMDAwN0UwMDI0RkUxODEwMTQyMDYyN0NGNzQ0NTU1NDMyNTRENTU0MDg1NEZGNTQxQzEwMkEyOEM4NDYwOTgyMDgwMDBDCis6MjBCQTAwMDA3RUZFNDIxMDdFMjA0MjdFN0U0MjA4NTJGRjUyMDA1MjdFNTI0MjUyN0U1MjA4Mjg0QTI0NDk0NkE5ODIxMDAwQTEKKzoyMEJBMjAwMDdFRkUwODEwRkYyMDhBRkM2RTg0MDhBNDZFQTQwMEE0RkZBNDEwQTRGRUE0QUEzMEFBNDhBQTQ2QUU4MjAwMDA5NAorOjIwQkE0MDAwMDlGRTJFNDAyOEZDRkVBNDRBQTQ0QzMwOEE0QzNGRjBEMTEwMUZGMDEyMTAxRkYwMDkwMEZGRkUwMTAwMDEwMDEzCis6MjBCQTYwMDAwMTAwMDEwMDAxRjAwMTAwM0ZGRTIxMDQyMTAwMjEyMDIxNDAyMTgwMjMwMDJEMDgyMTA4NDEwQzQwRjg4MDAwODYKKzoyMEJBODAwMDAxMDAwMUY4MDEwMDNGRkUyMTA0M0ZGMDIxMDgyMEY4MjA4MDNGRkUyMjIwMjIyMDIxNDA0MDgwNDM2MDlDMUNGQworOjIwQkFBMDAwMDg0MDA4NDAwODQwMDg0MDdGNDA0OTQwNDk0MDQ5NDA3RjQwNDk0MDA4NDAwQTQ0MEY0NEYyNDYwMDNDMDAwMDY3Cis6MjBCQUMwMDAxMDAwMTBGMDEwOTA3QzkwNTQ5MDU0OTA1NDkwNTQ5MDdDOTAxMDkwMTQ5MDFGMTJGNTEyNDIwRTA0MDAwMDAwM0UKKzoyMEJBRTAwMDAwMDA3RkZFMDQwMDA3RjAwODEwMTA1MDIxMjA1RkYwMTExMDExMTAxRkYwMTExMDAxMDgwMUZDN0YwODAwMDBDNworOjIwQkIwMDAwMDAyMEZGMjAyNDIwMjVGQzI1MjQyNTI0MjUyNDI1RkMyNDI4MjQyNDI0M0UyNUM0NDQwMDQ0MDI4M0ZFMDAwMDlCCis6MjBCQjIwMDAxMDgwMTBDMDEwODAxMUZFN0QwMDU2MDA1NUY4NTQwODdDMTA1NDIwMTA0MDE0ODAxRjA0RjUwNDAwRkMwMDAwOEUKKzoyMEJCNDAwMDEwNDAxMDIwMTAxMDEwMDBGRkZFOTI4MDkyODA5MjgwRkU4MDEwODAxNDgwMTI4MDFGODBGMkZFNDA4MDAwMDA3RgorOjIwQkI2MDAwMjA0MDIwNDAyMDQwRkJGQ0E4NDBBODQwQTg0MEFCRkVGODQwQTA0MDI4NDAyNEEwM0U5MEM1MTg0MTBFMDIwNDA5Cis6MjBCQjgwMDAxMTEwMTExMDExMTA3RDEwNTUxNDU1RDg1NTEwNTUxMDdEMTA1NTEwMTExMDE1MTAxRjUyRTU5MjAxMEUwMDAwMjYKKzoyMEJCQTAwMDEwMjAxMDIwMTAyMDExRkM3RDI0NTUyNDU1MjQ1NTI0N0Q1NDUxNEMxMTg0MTUwNDFGMDRFNTA0MDExNDAxMDg5NgorOjIwQkJDMDAwMTAwMDExRkMxMTA0N0QwNDU1MjQ1NTI0NTUyNDU1MjQ3RDI0MTE1NDE4NTAxNDkwMUU5MkU1MTIwMjFFMDQwMEYxCis6MjBCQkUwMDAxMDAwMTAzODEzQzA3QzQwNTQ0MDU0Nzg1N0MwNTQ0MDdDN0MxM0MwMTQ0MDEyNDQxRjQ0RjI0NjAwM0MwMDAwMDcKKzoyMEJDMDAwMDEwNDAxMDQwMTBBMDdDOTA1NTA4NTYwNjU0OTQ1NDkwN0M5MDUwOTAxODkwMTQ5MDFFOTBFNTEwMDExMDAyMTA0NQorOjIwQkMyMDAwMTAwMDEwOTAxMDkwN0M5MDU0ODg1NTA4NTUwQzdENDY1MjQ0MTA0MDE4NDAxNDkwMUU4OEU1RkM0MDg4MDAwMDFBCis6MjBCQzQwMDAxMDEwMTExMDEwOTA3QzUwNTQxMDU1MTA1NDkwNTQ1MDdDMUU1M0YwMTgxMDE0MTAxRTEwRTQxMDAwMTAwMDAwOEIKKzoyMEJDNjAwMDEwMDAxM0U0MTAyNDdDMjQ1NUU0NTUwNDU1MDQ1NTA0N0RFNDEwMjQxODI0MTQyNDFFMjRFNDI0MDBBNDAwNDQ2QQorOjIwQkM4MDAwMDEwMDExMDgxMTA4MUZGODAxMDBGRkZFMDEwMDAxMDAxRkY4MTEwODFGRjgxMTEwMDEwODAxRkM3RTA4MDAwMDY2Cis6MjBCQ0EwMDAxMDg4MTA4ODEwODg3RkZFNTQ4ODU0ODg1NDg4NTQ4ODdDRjgxMDg4MTg4ODE0ODgxRUY4RTQ4ODAwODgwMDAwN0QKKzoyMEJDQzAwMDEwMjAxMDIwMTAyMDdGRkU1NDIwNTQyMDU0MjA1NDIwN0RGQzExMDQxOTA0MTUwNDFGMDRFNUZDMDEwNDAwMDBCQQorOjIwQkNFMDAwMTAwMDEzRkUxMDA4N0MwODU1RTg1NTI4NTUyODU1Mjg3RDI4NTFFODE5MjgxNDA4MUUwOEU0MDgwMDI4MDAxMDRFCis6MjBCRDAwMDAxMDAwMTFGRTExMDA3RDAwNTVGRTU1MjA1NTIwNTUzQzdEMjQxMTI0MTkyNDE1NDQxRjQ0RTU4NDAyOTQwNTA4Q0QKKzoyMEJEMjAwMDEwMjAxMDIwMTAyMDEwMjA3REZDNTUyNDU1MjQ1NTI0N0RGQzExMjQxOTI0MTUyNDFGMjRFNUZDMDEwNDAwMDAxMgorOjIwQkQ0MDAwMTAyMDEwMjAxMUZDN0QyNDU1MjQ1NTI0NTVGQzU1MjQ3RDI0NTdGRTE5MDQxNTA0MUYwNEU1MDQwMTE0MDEwOEMzCis6MjBCRDYwMDAxMDQwMTA0MDEwODA3Q0ZFNTU0MDU2NDA1NDdDNTQ0MDdDNDA1NDQwMTg3QzE0NDAxRTQwRTQ0MDAwNDAwMDAwOTAKKzoyMEJEODAwMDEwMDAxMDFDMTFFMDExMDA3RDAwNTUwMDU1MDA1NUZFN0QxMDUxMTAxOTEwMTUxMDFGMTBFNTEwMDNGRTAwMDA4QQorOjIwQkRBMDAwMTA0MDEwNDAxMDQwMTBBMDdDOTA1NTRFNTYyNDU0MjA1NUZDN0MwODEwMTAxNEEwMUU0MEUyMjAwMDIwMDAwMDFECis6MjBCREMwMDAxMDAwMTNGQzExMDg3Qzg4NTQ5MDU0NjA1NDkwNTUwRTdFNDQ1MDQwMTNGQzE4NDAxNDQwMUM0MEU3RkUwMDAwRkEKKzoyMEJERTAwMDIxMTAyMTkwMjExMDIxMTBGQTdDQUM5NEFGOTRBOTE0RjkxNDIyQTQyMkE0MkZBNDNBNDRDODQ0MDA5NDAxMDhCNgorOjIwQkUwMDAwMDBGODdFODgxMEM4MTBBODExMkExRTBBNjUwNjAxMDAxRkY4MTEwODFGRjgxMTAwMDEwODAxRkMzRTA0MDAwMDI1Cis6MjBCRTIwMDAxMDQwMTA0MDEwNDA3RkZDNTY0ODU1NDg1NTUwNTQ1MDdGRkUxMDQwMTg0MDE0QTAxRTk4RTUwRTAyMDQwNDAwODcKKzoyMEJFNDAwMDEwNDAxMDQwMTNGQzdDNDA1NDU4NTQyNDU0NTQ3RDg4NTdGQzEwQTAxMEEwMTRBNDFGMjRFNTI2NDIxQzA0MDA4QgorOjIwQkU2MDAwMTAwMDExRkUxMDIwMTA0MDdDNDg1NDg0NTVGRTU0MjQ3QzIwNTVGQzEwMjAxNDIwMTIyMDFGMjBFM0ZFMDAwMDE5Cis6MjBCRTgwMDAyMDgwMjBCRTIyODhGQTg4QUFCRUFBQUFBQUFBQUFBQUZBQUFBMkFBMjJBQTI4QUUzRDA4RTkwODAyMDgwNDA4QjYKKzoyMEJFQTAwMDEwNDgxMDQ4MTA0ODEwNDg3REZFNTU0QTU1NEE1NTRBNTVGRTdENEExMTRBMTk0QTE1NEFGRkZFNDUwMjAwMDA0RgorOjIwQkVDMDAwMjAwMDI3OEUyMEYwRjkxMEE5MTBBQTEwQUZGRUY4OTBBODkwMzI5MDI5N0MzRDAwRUE4MDQ0NDAwODNFMDAwMEJDCis6MjBCRUUwMDAxMDAwMTAxQzEzRTA3QzIwNTQyMDU3RkU1NDIwNTQyMDdDMjA1MUZDMTkwNDE1MDQxRjA0RTVGQzAxMDQwMDAwOUUKKzoyMEJGMDAwMDEwNDAxMDIwMTNGRTdDOTA1NDkwNTQ2MDU0OTA3RDBFNTI5NDEwOTAxODkwMTQ5MDFFOTBFNTEwMDIxMDA0MTBFMgorOjIwQkYyMDAwMTA4MDEwNDAxMDAwN0ZGRTU0OTA1NTA4NTYxNDU1MTA3RDEwNTBBMDE4QTAxNDQwMUVBMEU1MTgwMjBFMEMwNDIwCis6MjBCRjQwMDAxMTA4MTA4QzEwNTA3REZFNTQyMDU0MjA1NUZDN0MyMDU0MjA1MDIwMUJGRTE0MjAxRTIwRTQyMDAwMjAwMDIwQzkKKzoyMEJGNjAwMDEwNDAxMDY4MTA4NDdERkU1NDg0NTUyMDU1MjA1NUZDN0UyMDEyMjAxQkZFMTQyMDFFMjBFNDIwMDAyMDAwMjAzOAorOjIwQkY4MDAwM0ZGQzIwMDAyRkY4MjAwMDNGRkUyNDkwMjQ1ODI2MjAyNTFFMkZGNDQ5MTA0RkYwODEwODAxRkMzRjA4MDAwMDgxCis6MjBCRkEwMDAxMDBDMTBGMEZFODAxMEZFN0M5MDExMTA1MjEwMjUwMDFGRjgxMTA4MTEwODFGRjgwMTEwMDFGODdGMEMwMDA4MjgKKzoyMEJGQzAwMDEwMjAxMjI0MTEyNjEwQTg3REZDNTUwNDU1MDQ1NUZDN0QwNDUxMDQxOUZDMTUwNDFGMDRFNTA0MDExNDAxMDg2MgorOjIwQkZFMDAwMjAwMDIxRkMyMTA0RjkwNEE5RkNBODAwQUJGQ0E4MjBGODIwQTdGRTMwNTAyODUwM0M4OEU4ODgwMTA2MDIwNDMwCis6MjBDMDAwMDAxMDAwMTNFMjEwODIxMDhBN0ZGQTU0OEE1NENBNTVBQTdEQUE1MjhBMUE4QTE0OEExRThBRjQ4MjAwOEEwMDg0MEEKKzoyMEMwMjAwMDIwNDAyMDQwMjBBMEY4OTBBOTA4QUJGNkFDNDRBODQwRkJGODIwNDAzMTUwMjk0ODNFNDRFQTQ0MDU0MDAwODAxNAorOjIwQzA0MDAwMTAzRTEzRTAxMTI0N0M5NjU0OTQ1NUZDNTQwODU0NTA3QzIwNTdGRTEwMjAxODIwMTQyMDFFMjBFNEEwMDA0MDkwCis6MjBDMDYwMDAxMjEwMTE5ODEwQTAxM0ZFN0M0MDU1RkM1NDQwNTQ0MDdGRkU1MEEwMThBMDE0QTAxRjIyRTUyMjAyMUUwNDAwQkEKKzoyMEMwODAwMDEwMjAxM0ZFMTAyMDdERkM1NDIwNTdGRTU0MDA1NUZDN0QwNDExRkMxOTA0MTVGQzFGMDRFNTA0MDExNDAxMDg2MgorOjIwQzBBMDAwMTA4ODEwODgxM0ZFN0M4ODU0ODg1NEY4NTQ4ODdDRjg1NDg4MTg4ODE1RkUxRTkwRTRDODAwODQwMTA2MDIwNDQ5Cis6MjBDMEMwMDAyMDgwMjA4NjIwOThGRkYwQTg5MEE5REVBOUQ0QUFCNEZBQjRBNDk0MzQ5NDI4OTQzQzk0QzhBNDAwQTQwMEMwQ0YKKzoyMEMwRTAwMDEwMTAxMDE0MTAxNDdGRkU1NDEwNTVEMDU1NTQ1NTU2N0RENDUxNTQxODA4MTVEODFFMkFFNEM2MDMwMjAwMDA4NAorOjIwQzEwMDAwMDQ0MDdDN0UwNDQwM0M3QzA0NDA3QzdFMDU0MDAxMDAxRkYwMTExMDExMTAxRkYwMDEwODAxRkM3RTA0MDAwMDc5Cis6MjBDMTIwMDAxMDAwMTFGQzExMjQ3REZDNTUyNDU1MjQ1NUZDNTQyMDdGRkUxMDcwMTg3MDE0QTgxRUE4RTUyNjAyMjQwMDIwMjUKKzoyMEMxNDAwMDEwMDAxMUZFMTEwMjdERkE1NTIyNTUyMjU1RkE3RDIyNTUzMjExMkUxOTJBMTVGRTFGMDJFNUZFMDEwMjAwMDAzNworOjIwQzE2MDAwMTAwMDExRjgxMTA4MTFGODdEMDg1NUY4NTQ4MDU0RkM3RDU0NTI1NDE4OTQxNEE0MUQyNEU2NDQwNDk0MDEwOEE3Cis6MjBDMTgwMDAxMDIwMTA0MDExRkM3RDI0NTVGQzU1MjQ1NTI0NTVGQzdDNjA1MEEwMUJGRTE0MjAxRTIwRTQyMDAwMjAwMDIwNDIKKzoyMEMxQTAwMDEwMDAxMUZFMTEyMjdEMjI1NTdBNTUyMjU1RkU3RDAyNTU3QTE5NEExNTRBMUY3QUU1NEEwMjAyMDIwQTA0MDQwNQorOjIwQzFDMDAwMjA0MDIyNDgyMTUwMjA0MEZCRkNBODgwQUZGRUE5MjBGQTE4MjVGNjMxMTQyOTUwM0QyMEM5MDQwMUZDMDAwMDFECis6MjBDMUUwMDAyMDQwMjAyMDIzRkVGQTA0QUQwOEE5MDBBOURFQUE1MkZBNTJBNjVBMzE5NDI4OTAzRDEyQ0ExMjA0MUUwODAwODEKKzoyMEMyMDAwMDIyMDAyMTFFMjNEMkZBNTJBQTU0QUJENEFBNThBQTU0RkJENDIyMTIzMjkyMkE1QTNFRjRDQjUwMDIxMDAwMTA0NQorOjIwQzIyMDAwMTAwMDExRkMxMDU4N0MyMDU3RkU1NDIwNTQyMDU0QTA3QzQwMTFGQzE5NTQxNTU0MUY1NEU1NTQwN0ZFMDAwMDVDCis6MjBDMjQwMDAyMDQwMjA0MDIzRkNGODQwQTlGOEE4NDBBRkZFQTg5MEY5MDhBM0ZFMzUwODI5RjgzRDA4QzkwODAxRjgwMTA4NDEKKzoyMEMyNjAwMDEwNDgxMDQ4MTFGRTEwNDg3QzAwNTVGRTU1MjI1NDIwN0RGRTU0NjAxMDcwMTRBODFFQTZFNTI0MDIyMDAwMjA3MworOjIwQzI4MDAwMjA0MDIwNDAyN0ZFRjg0MEE4NDBBQkZDQUE5NEFBOTRGQkZDMjI0NDMzRkMyQTQ0M0U0NENBNDQwMjU0MDIwODhDCis6MjBDMkEwMDAxMDAwMTNGRTEwMDA3Q0Y4NTQ4ODU0ODg1NEY4NTQwMDdERkMxMTI0MTlGQzE1MjQxRjI0RTVGQzAxMDQwMDAwNUMKKzoyMEMyQzAwMDEwNDAxMDQwMTNGQzEwQTA3Qzk4NTU0RTU2RjQ1NDQwN0RGODEwMDAxODQwMTVGODFFNDBFNDQwMDdGQzAwMDBGQgorOjIwQzJFMDAwMjBDODI3MDgyMTQ4RjkyOEFGQzhBOTQ4QUIyOEFCQThGRDRFQTk3ODIxMDgyOTA4M0QwOEM5MDgwMTA4MDAwMDJBCis6MjBDMzAwMDAxMTAwMTFGRTEyMDA3REZDNTUwNDU1RkM1NTA0NTVGQzdDODA1MEZDMTg4NDE1NDgzRTMwQzQ0ODAxODYwNjA0RDIKKzoyMEMzMjAwMDEwMjAxMEEwMTEyQzdEMjQ1NUFDNTUyNDU1RkM1NDIwN0RGQzExMDgxODg4MTQ1MDFFMjBFNEQwMDMwRTBDMDQ1NworOjIwQzM0MDAwMjA0MDIwNDAyMEEwMjExOEZBRjZBQzAwQUJDNEFBNTRGQkQ0MjI1NDMyNTQyQkQ0M0U1NENBNDQwNTU0MDQ4OENDCis6MjBDMzYwMDAyNDIwMjIyMDIyMjAyN0JFRkE0MEFBM0VBQjg0QUE4OEZBODhBMkZFMzI4ODJBODgzQzg4QzQ4ODBBQTgxMTEwMUMKKzoyMEMzODAwMDEwMjAxMTI0MTBBODdERkM1NDcwNTRBRTU3MjQ1NDQwN0M0MDEzRkUxODg4MTREMDFFMzBFNDQ4MDA4NDAxMDBFMgorOjIwQzNBMDAwMTEwODEwOEMxMDkwN0ZGRTU0NTA1NDUwNTVGQzU1NTQ3RDU0NTE5QzE5MDQxNUZDMUYwNEU1MDQwMUZDMDAwMDc0Cis6MjBDM0MwMDAyMDQwMjAyMDIzRkNGQTA0QUEwNEFCRkNBQTAwQUJGQ0ZCNTRBMzU0MkJGQzNGNTRFRDU0MDU0NDA5MTQxMTA4M0EKKzoyMEMzRTAwMDdFNDAxNDYwMDg0MEZGRkUxQUM4Mjk0OEM4MzAyOTQ4MTE4NjFGRjgxMTA4MUZGODAxMTAwMUY4N0YwQzAwMDg4RgorOjIwQzQwMDAwMjA0MDIwNDAyM0ZDRjg0MEE5RkNBODQwQUJGRUE4ODhGOUZDQTIyMjM1RkMyODcwM0NBOEM5MjYwMjI0MDAyMDA0Cis6MjBDNDIwMDAwODQwN0U0MDA4N0M3RTg4MDk0ODdFNDgxRTMwMTI0ODJBODRDNTAyMUZGMDExMTAxRkYwMTExMDAxRjgzRTA4OTkKKzoyMEM0NDAwMDIwOTAyMDkwMjNGQ0Y4OTBBODAwQUZGRUE4OTBBQkZDRkE5NDIyOTQzMjk0MkI2QzNFMkNFQTQ0MDIwQzAwMDA1QQorOjIwQzQ2MDAwMjA5MDIwOTAyN0ZFRjg5MEE4NDBBQkZFQTg5MEE5MDhGQTk2MjQ5MDIzRkMyODkwM0M5MEU5MTAwMTEwMDIxMDMyCis6MjBDNDgwMDAxMDkwMTA5MDEzRkU3QzkwNTVGODU1MDg1NUY4NTUwODdERjgxMDQwMUJGRTE0NDAxRUEwRTUxMDAyMEUwNDA0RUUKKzoyMEM0QTAwMDEwMDAxMUZFMTExMDdEMjA1NTdDNTU0NDU1N0M3RDQ0NTU0NDExN0MxNTEwMUQ1NEU2NTQwMjkyMDU1MjA4MjA5QQorOjIwQzRDMDAwMTA0MDEwODAxMUY4MTEwODdERjg1NTA4NTVGODU1MDg1NUY4N0M0MDEwMzAxQUE0MTY4QTFFOEFFNEY4MDAwMEIzCis6MjBDNEUwMDAxMDQwMTAyMDEzRkU3QzAwNTU1NDU1MjQ1NTU0NTVGQzdDMjAxM0ZFMUE0MjE2OTIxRkZBRTYxMjAyMEEwMjA0M0YKKzoyMEM1MDAwMDIwNDAyMDIwMjNGRUZBMjBBQUZDQUEyNEFCRkVGQTI0MjJGQzIyMjAyQUZDM0U4NEVBODQwNDg0MDRGQzA4MDBCRgorOjIwQzUyMDAwMjA0MDIwMjAyM0ZFRjg4OEE4NTBBQkZFQUE0MkE4MjBGOUZDQTA0MDI4NzgyNDg4M0U4OEM1MDgwMjI4MDQxMDczCis6MjBDNTQwMDAwODQwM0U0MDA4N0VGRjQ4MTRDODU2MzBBNTMwMjRDRTQ5MDQxRkY4MTEwODFGRjgxMTEwMDFGQzdFMDgwMDAwRTcKKzoyMEM1NjAwMDEwOTAxMDkwMTNGQzdDOTA1NDkwNTdGRTU0MjA1NUZDN0QyNDExRkMxNTI0MUZGQ0Y0ODgwMDg0MDEwNjAyMDQ1MworOjIwQzU4MDAwMTA1MDEwNTAxM0ZFN0M1MDU1RkM1NTU0NTVGQzU1NTQ3REZDMTAwMDE5RkMxNTA0MUZGQ0U1MDQwMUZDMDEwNDRECis6MjBDNUEwMDAxMDAwMTNGRTEwNTA3REZDNTU1NDU1RkM1NDAwN0RGQzU0MDAxM0ZFMTgyMDE1MjgxREE0RTUyNjAyQTQwMDQwMkUKKzoyMEM1QzAwMDIwMjAyMTI0MjBBOEY4MjBBQkZFQUEwNEFERjhBOTA4RjlGODIxNDgzMDQwMkJGQzNDNDBDODQwMDdGRTAwMDBDRgorOjIwQzVFMDAwMTAxQzExRTAxMDIwMTEyNDdDQTg1N0ZFNTQ3MDU0QTg3RjI2NTQ0MDEwMjAxNEE0MUU4QUUyOEEwMkY4MDAwMDUxCis6MjBDNjAwMDAyMDgwMjBGODIxMTBGQkZDQUQyNEE5NDRBOUZDQTg4MEZCNDQyNEE4MzEzMDJBNTgzQzk2QzkxNDA2NTAwMDIwOUMKKzoyMEM2MjAwMDA0MDAwN0YwMEMyMDcyNDAwMTgwMEU3MEYxMEUwOEQwMDgxMDdFRkM0QTk0N0VGQzA4MTAwQTE0MEYxRTcyRTRBOAorOjIwQzY0MDAwMjA0MDIzRkMyMTA4Rjg5MEFGRkVBODAwQTlGQ0E5MDRGOUZDMjEwNDIxRkMyODIwM0ZGRUU0MjAwMDIwMDAyMDAzCis6MjBDNjYwMDAxMDgwMTA0MDE3RkMxMDQyN0U5NDU1RTg1NTQ0NTY5MjdERjg1NDQ4MTA0MDFCRkMxNDQwRkU0MDA0NDAwMDQwMTcKKzoyMEM2ODAwMDNGRjAwMjIwMDE0MDdGRkMwNjg4MTg4MEUzOTAwOTEwN0VGQzRBOTQ0QTk0N0VGQzBDMTAwQTE0RkZGRTAyMDRFRQorOjIwQzZBMDAwMjEwMDIxMDIyN0U0RjkwOEFCRDBBODAyQUJDNEFBNDhGQkQwMjAwMDMyMjIyQTIyM0Q0NEU4RTgwNzEwMDAwMEIxCis6MjBDNkMwMDAyMDIwMjNGRTIwMjBGOUZDQTkyNEE5RkNBOTI0QTlGQ0Y4MjgyM0ZFMzAwNDJBQTIzRTkyRUE4NDA0N0MwMDAwRTEKKzoyMEM2RTAwMDEwMUMxM0UwMTEyNDdDQTg1NUZFNTQ3MDU0QTg1NTI0N0ZGRTExMjQxOTI0MTVGQzFGMjRFNTI0MDFGQzAxMDRFOAorOjIwQzcwMDAwMTEwNDEwODgxM0ZFN0MyMDU1RkM1NDIwNTVGRTU1MjQ3Q0E4MTNGRTE4MDAxNEZDMUU4NEU0ODQwMEZDMDA4NDQ3Cis6MjBDNzIwMDAyMDkwMjdGRTIwRDBGOTIwQURGQ0FCMjBBREY4QTkyMEY5RkNBMTIwMzFGQzI4ODgzQzUwRTgyMDAwRDgwMzA2MzEKKzoyMEM3NDAwMDIwOTAyN0ZFMjA5MEZCRkVBQTAyQTlGOEE4MDBBQkZFRjg4NDIxNDgzMjcwMjlCMDNFNkNFOUE2MDYyNDAwNjA5QQorOjIwQzc2MDAwMjA4MDIwRjgyMTEwRkJGRUFFNDhBQUE0QUJGRUFBMDBGQUZDQTIwMDMyRkMyQTAwM0VGQ0NBODQwNEZDMDQwMEM0Cis6MjBDNzgwMDAyMDIwMjNGRTIyODgyMjUwRkJGRUFBNTBBQkZDQUE1NEZCRkVBMjU0MzNGQzJBRDhGRUQ4MEI1NjA1NTQwODUwN0MKKzoyMEM3QTAwMDIwOTAyN0ZFMjA5MEY4MDBBQkZDQUE5NEFCRkNBODI4RjgyNDIzRkUzMjI0MkIyODNFOTBDQTMyMDQ0QTA4ODQxNgorOjIwQzdDMDAwMDgwMDBGRTAxMDIwN0ZGRTAyMTAwRDM4NzFDMDA2RTAzODlDQzlBMDNFRkMyQUE0M0VGQzJBMjQwRjNFNzJFNEQ3Cis6MjBDN0UwMDAwMTAwM0ZGODAxMDA3RkZFNDAwMkJGRjgxMDAwMkZGMDQ4MTAwRkYwMDgxMDdFRkM0QTk0N0VGQzBBMTJGRkZFMDEKKzoyMEM4MDAwMDIzREUyMjUyMjNERUZBNTJBQkRFQTkyMEFCRkVBRTIwRkJGQzIyMjAyQkZFMjUwODNFOTBFNDYwMDE5ODA2MDY0NworOjIwQzgyMDAwMDgwMDBDMDAwODAwMUZGODExMDAyMTAwNDEwMDdGRkUwMTAwMjEwODIxMDgyMTA4MjEwODNGRjgyMDA4MDAwMEQxCis6MjBDODQwMDAzRUZDMkFBNDJBQTQyQUE0MkFBNDE0NTAyMjRDNTA4NDFGRjgyMTAwMDEwMDdGRkUwMTAwMTEwODExMDgxRkY4QzAKKzoyMEM4NjAwMDA4MDA3Rjc4MDg0ODNFNDgwMDg2N0Y3ODQ5NDg3RjMwNDA0ODUwODQ5RkY4MjEwMEZGRkUwMTAwMjEwODNGRjhCNAorOjIwQzg4MDAwNDAyMDQwMzg3QzIwNTFGRTkxMjRGREY4MTEyMDExMUM1NUYwNTU5MjU1NTQ1REZFNzIxMDAyMTAwNDUwMDgyMDhECis6MjBDOEEwMDAwQzFDRjBGMDEwOTAxMDkwMTA5MEZFOTAxMEZFMTA5MDdDOTA0NDkwNDQ5MDQ0OTA3Q0FBNDRDQTQwODQwMDAwRDQKKzoyMEM4QzAwMDEwNDAxMDQwMUY3RTIwODAyOEEwNDUxMDgyMTAwMDAwMUZGODAwMDAwMDAwMDAwMDAwMDA3RkZFMDAwMDAwMDAzOAorOjIwQzhFMDAwMTA0MDFGN0UyOEEwNDQ5MDg1MTAxRkY4MDEwMDAxMDBGRkZFMDEwMDAxMDAwMTAwMDEwMDAxMDAwNTAwMDIwMEY4Cis6MjBDOTAwMDAxMDQwMTA0MDNFRkUyODkwNDUwOEJGRjAwNDIwMDQ0MDA0N0MwQTA4MDkxMDEwQTAyMDQwNDFCMDg2MEUzODA0QTMKKzoyMEM5MjAwMDIwODAzRUZFMjg5MDQ1MDg4MjA4M0ZGMDAwMTAwODEwMDgxMDBGRkUwMDAyN0ZGQTAwMDIwMDAyMDAxNDAwMDg3NQorOjIwQzk0MDAwMjA0MDNGN0U0ODUwODQ4ODAxMDA3RkZDMDQyMDA0MjAwNDIwRkZGRTA4MjAwODIwMTAyMDEwMjAyMDIwNDAyMEUxCis6MjBDOTYwMDAyMDQwMjA0MDNGN0U1MDkwODkwODFGRjAxMDEwMTExMDExMTAxMTEwMTExMDEyOTAwMjgwMDQ4NDE4ODQ2MDdDRjIKKzoyMEM5ODAwMDIwODAyMDgwM0VGRTUxMjA4QTEwMDBGODFGNDAxMTQwMTEyMDExMjAxMTIwMTExMDIxMTAyMTA4NDEwRTgxMDQ4NgorOjIwQzlBMDAwMTA0MDFFN0UyOEEwNDUxMDg1MTAwMUY4M0YwMDIxMDAzRkZDMDMwNDA1MDQwNTA0MDkyODExMTAyMTAwMDEwMEI4Cis6MjBDOUMwMDAyMDgwMjA4MDNFRkU0OTIwODUxMDBBMDAwRkZDMzIyNEMyMjQwNDQ0MTg0NDYwODQwMzA0MEMwNDcwMjgwMDEwNDUKKzoyMEM5RTAwMDEwNDAxMDQwMUY3RTI4OTA0NTA4MDA3QzdGNDQwODQ4MDg1MDA4NDgwODQ0MEY0MkYwNDI0MDU0MDA0ODAwNDBEMworOjIwQ0EwMDAwMjA0MDNFN0UyODUwNDQ4ODg1MDgzRkZDMjAwMDIwMDAyN0YwMjQxMDI0MTAyN0YwMjAwMDIwMDAzRkZFMDAwMDlCCis6MjBDQTIwMDAyMDQwM0Y3RTI4NTA0NDg4NDUwODlGRjAxMDEwMTAxMDFGRjAxMDEwMTAxMDFGRjAxMDEwMDAwMEZGRkUwMDAwRkUKKzoyMENBNDAwMDIwNDAyMDQwM0Y3RTQ4OTA4NTA4MTI4MDEwODAxRkZDMjA4MDQwODAxRkY4MDA4MDAwODAwMDgwN0ZGRTAwMDA0MworOjIwQ0E2MDAwMjA0MDNGN0U1MDkwNDkwODg0MDAwNDAwMEZGRTBBMDAxMjAwMjNGQzQyMDAwMjAwMDNGQzAyMDAwMjAwMDIwMDRGCis6MjBDQTgwMDAyMDQwM0Y3RTUwNTA0ODg4ODkwMDFGRkMxMDA0MjAwNDJGQzQ0ODQ0MDg0NDBGQzQwODQ0MDAwNDAwMjgwMDEwMDcKKzoyMENBQTAwMDEwNDAxMDQwM0Y3RTI4QTA0NTEwODUxMDAwODAzRkZDMDgyMDA0MzAwNDIwMDI0MDAyNDAwMDgwRkZGRTAwMDAyQgorOjIwQ0FDMDAwMjA0MDNFN0U0OEEwODUxMDdGRjgwMDA4N0ZFODAwMDgxRjg4MTA4ODEwODgxRjg4MTA4ODAwMDgwMDI4MDAxMDc5Cis6MjBDQUUwMDAyMDQwM0U3RTQ4OTA4NTA4M0ZGODAyMDgwMjA4MDQwODE4NTA2MDIwMUZGODEwMDgxMDA4MTAwODFGRjgxMDA4RTgKKzoyMENCMDAwMDIwNDAzRjdFMjg1MDQ0ODg4OTA4MDgwMDdGN0MwOTQ0MTE0NDExNDQxMTQ0MjE0NDIxNDQ0MjQ0OEE3QzA0NDQzNgorOjIwQ0IyMDAwMTA0MDEwNDAxRjdFMjQ5MDQyODgyMDQwMTNGODAwNDg3MDQ4MTA4ODEwODgxMTA4MTI1MDI4MjA0N0ZFMDAwMDk3Cis6MjBDQjQwMDAxMDQwMTA0MDNFRkU1MTEwOEEwODA0MjAwODEwMTBGODNGMEMwMDA0MUZGMDEwMTAxMDEwMTAxMDFGRjAxMDEwRDUKKzoyMENCNjAwMDIwNDAzRTdFNDg5MDQ1MDg4QTA4MDgwMDdFRkMwODg0MEE4NDFDODRFODg0NDg4NDA4ODQwOEZDMjg4NDEwMDAyMgorOjIwQ0I4MDAwMjA0MDNGN0UyODkwNDUwOEEwODAzRTk4MjBFMDIwODQyNjg0Mzg3QzIxMDAwMTAwRkZGRTAxMDAwMTAwMDEwMDU5Cis6MjBDQkEwMDAxMDQwMUY3RTI4QTAyNDkwNDkwODA5MDAwRkY4MTEwMDIxMDA3RkZFMDI0MDAyNDAwNDQwMDg0MjMwNDJDMDNFN0EKKzoyMENCQzAwMDEwNDAxRjdFMjg1MDQ0ODg4NTA4NzlGQzEwMjAyMTIwN0QzQzA1MjA0OTIwMzFGRTE4MDAyNjAwNDFGRTgwMDAzRQorOjIwQ0JFMDAwMjA4MDIwODAzRUZFNTEyMDg5MTAwMjgwMDQ0MDA4MzAzN0VFQzEwNDAxMDAwRkYwMDEwMDAxMDA3RkZDMDAwMDRBCis6MjBDQzAwMDAyMDQwM0Y3RTUwOTA4OTA4MDQwMDBGRTAzMDQwREZGODAxMDhGRkZFMDEwODFGRjgwMTAwMDEwMDA1MDAwMjAwMUQKKzoyMENDMjAwMDIwNDAzRjdFNDhBMDQ1MTA5MjkwMTA4MEZDRkMxMTA0MTI0NDEwMjQxMDA0MUM2NEUzODQ0MDA0MDAyODAwMTBEQQorOjIwQ0M0MDAwMjA0MDNGN0UyODUwNDQ4ODg1MDgwMDAwN0ZGQzExMjAxMTIwMTEyMDI5NTAyNTQ4NDM4NDgxMDBGRkZFMDAwMEFECis6MjBDQzYwMDAyMDQwM0Y3RTQ4NTA4NDg4N0ZGRTAxMDAxRkY4MTEwODFGRjgxMTA4M0ZGODA5MDAwNjAwMDVDMDE4M0VFMDA0RDAKKzoyMENDODAwMDIwNDAzRjdFMjg1MDQ0ODg5NDA4MTFGQ0ZGMjQxMTI0MTEyNDFERkMzMTAwRDEwMDExMDAxMTAyNTEwMjIwRkU0RAorOjIwQ0NBMDAwMTA0MDFFN0UyOEEwMjUxMDQwODAwODg4MDQ5MDFGRkMxMDA0MUZGQzEwMDQxRkZDMTAwNDEwMDQxMDE0MTAwOENBCis6MjBDQ0MwMDAyMDQwM0Y3RTI4OTA0NTA4ODg4ODA4ODAxMEZDMjUxMDY2OTBBNDkwMjQ1MDI0MjAyNDUwMjA4ODIzMEUyQzA0RkEKKzoyMENDRTAwMDIwNDAzRUZFNDkxMEJGRjgwMTAwMUZGMDAxMDA3RkZFMDAwMDFGRjAxMDEwMUZGMDEwMTAxRkYwMTA1MDEwMjBGRAorOjIwQ0QwMDAwMjA0MDNFN0U1MDkwODkwODNGRjgwMTAwMUZGMDAxMDBGRkZFMDAwMDFGRjAxMTEwMTExMDEyRDAwQzMwNzAwQzU2Cis6MjBDRDIwMDAyMDQwM0Y3RTQ4OTA0NTA4QkZGQzIwODAyRkY4MjQ5MDIyQTAzRkZDMjE0MDIyMjAyMjEwMjQwODNGRkUwMDAwNDAKKzoyMENENDAwMDIwNDAzRTdFNDhBMDg1MTAwMTA0MUZDODAxMzBGRkZFMDE4MDA3RjAxODEwRUZGMDA4MTAwODEwMEZGMDA4MTA1QQorOjIwQ0Q2MDAwMjA0MDNGN0UyODkwNDUwODg4MjA3RkZDMDkyMDBBMjBGRkZFMDQwMDA4MDAxRkY4MjgwOEM4MDgwRkY4MDgwOEU0Cis6MjBDRDgwMDAyMDQwM0U3RTI4OTA0NDA4OTEwODExMDhGRkZFMTEwODE1MDgxOTA4MzFGOEQxMDgxMTA4MTEwODUxRjgyMTA4QzcKKzoyMENEQTAwMDIwNDAzRTdFMjg5MDQ1MDg5M0Y4MTA5MEZFNjAxMTk4MUU0NjMwNDBEM0ZDMTA0MDE3RkUxMDQwNTA0MDIwNDBEOAorOjIwQ0RDMDAwMjA0MDNGN0UyODUwNDQ4OEJGRjgyMTA4M0ZGODIxMDgzRkY4MDAwMEZGRkUwODIwMDgyMDEwMjAxMDIwMjAyMDhFCis6MjBDREUwMDAyMDQwM0Y3RTI4QTA0NTEwODgyMDA0NDAzRkY4MjEwODNGRjgyMTA4M0ZGODAxMDBGRkZFMDEwMDAxMDAwMTAwMTUKKzoyMENFMDAwMDIwNDAzRjdFMjg1MDQ0ODg4MTA4MDA4MDdGRkU0NDIyMTgxODYwMDYxRkY4MDEwMDAxMDAwMTAwN0ZGRTAwMDA5OAorOjIwQ0UyMDAwMjA0MDNGN0UyODUwNDY4ODgxMDA3RkZFNDAwNDIwMDAzRUZDMjI4NDUyODQ4Qzk0MDQ4ODA4ODIxMDgyNjA3RUQxCis6MjBDRTQwMDAyMDQwM0U3RTUwQTA4OTEwM0ZGODAxMDhGRkZFMDEwODNGRjgwMTAwMjU4ODI1NDgyOTI4MjkyODUxMDg4MTA4MTEKKzoyMENFNjAwMDIwODAzRUZFNDhBMDg1MTAwMjQ4M0ZGRTIwNDAzRjQ4MjA0ODJGNTAyOTUwMjkyMDJGMzI0MDRBNDA4NjgxMDIwRQorOjIwQ0U4MDAwMjA0MDNGN0U0OEEwODUxMDFGRjAxMTEwMUZGMDAxMDBGRkZFMDAwMDFGRjAxMTEwMTExMDEyOTAwQzYwNzAxOEQ0Cis6MjBDRUEwMDAyMDQwM0Y3RTI4OTA0NTA4OUZGMDEwMTAxRkYwMTAxMDFGRjAwMDAwN0ZGQzAxMDAzRkY4MDEwMEZGRkUwMDAwQjIKKzoyMENFQzAwMDIwNDAzRjdFNDg5MDg1MDgwQkYwMDgxMDE3RkUyMTAwNjNGQ0E0NDAyRkZFMjA0MDIwQTAyMDkwMjEwRTIyMDRGMgorOjIwQ0VFMDAwMjA0MDNFN0U0ODkwODU0ODNGRkMwNDQwM0ZGQzA0NDBGRkZFMDEwMDFGRjgxMTA4RkZGRTEwMDgxMDI4MTAxMEQ4Cis6MjBDRjAwMDAyMDQwM0Y3RTQ4QTA4NTEwM0ZGQzIyNDAyMjQwM0U3QzIyNDAyRTc4MjI0MDNFN0MyMjQwMjI0MDIyNDAzRkZFMzcKKzoyMENGMjAwMDIwNDAzRjdFNDhBMDg1MTA3RkZDMDI0MDFGRjgxMjQ4MUZGODAxMDA3RkZFMDU0MDA5MzAzMTBFQzEwNDAxMDAxMQorOjIwQ0Y0MDAwMjA0MDNGN0UyOEEwNDUxMEJGRjgyNDQ4MjM4ODI0NDgzRkY4MjA4MDIwOUMzRUUwMjA4MDIyODIyQzgyMzA3RTBDCis6MjBDRjYwMDAyMDQwM0U3RTQ4OTA4NTA4M0ZGQzIwQTgyMEMwMkZGRTI4ODIyRkY4Mjg4NDJCRkM0QTIwNTIyMjk0MjIyODFFQTIKKzoyMENGODAwMDIwNDAzRTdFNTA5MDhCMDgwQTQ4RkY0MDA4N0U3RUE0NEIyODRBMjA3RTUwMUM1MDJBODgyODg4NDkwNjBBMDRGMworOjIwQ0ZBMDAwMjA0MDNGN0U0OEEwODUxMDNGRkMyNDQ0M0ZGQzAxNDAwMTIwM0ZGQzMwODgyODUwMjQ2MjQxQTI0NjFBOTgwNkM1Cis6MjBDRkMwMDAyMDQwM0Y3RTQ4OTA4NTA4NzdEQzQ0NDQ0N0M0NDQ0NDQ3QzQ1ODFDNjQ0NDA0NDAwNDQwMDg0MjMwNDJDMDNFRjgKKzoyMENGRTAwMDIwNDAzRjdFNDg5MDg1MDgwMDgwM0ZGRTIyNDAzRkZDMjI0NDNGRkMyODQwMjg0QzJGNzA0ODQyNEI0MjhDM0U1OAorOjIwRDAwMDAwMjA0MDNGN0U0ODkwODUwODA0MUM1NTYwNEU0MDdGN0U0QzQ4NTY0ODY1NDg0NDg4NDQ4ODQ1MDg3RjA4MDIwOEQ5Cis6MjBEMDIwMDAyMDQwM0Y3RTQ4OTA5RkYwMTAxMDFGRjAxMDEwMUZGODEwOTAxNjYwMTgxRTFGRjgxMjQ4MTI0ODdGRkUwMDAwNzIKKzoyMEQwNDAwMDIwNDAzRTdFNDg5MEZGRkUwNDQwN0ZGQzQ0NDQ3RkZDMTAxMDFGRjAxMDEwMUZGMDAxMDBGRkZFMDEwMDAxMDBCRgorOjIwRDA2MDAwMjA0MDNGN0U1MDkwODkwODdFRkM0OTIwN0ZGRTE0NTAyNjkyQzUwRTFGRjAxMDEwMUZGMDEwMTAxRkYwMTAxMDQ2Cis6MjBEMDgwMDAyMDQwM0Y3RTQ4OTA4NTA4N0U5MDI0NjAxODIwMUZGMDIwMEVERkY0MTAxMDFGRjAwODIwMDQ0MEZGRkUwMDAwOUMKKzoyMEQwQTAwMDIwNDAzRjdFNDg5MEE1MDgyNDEwN0VGRTI0OTQzQzkwMjRGQzNDQzQyNEE4RkVBODA5MTAyNTI4NDI0RTg1ODQwOQorOjIwRDBDMDAwMjA0MDNFN0U0ODkwODU0ODA4N0NGRTg4MDkxMDdFRkM0QTg0N0VBNDE4QTQyQ0E0NEFCNDg4NDgwODg2MDkwMjBGCis6MjBEMEUwMDAyMDQwM0Y3RTQ4OTA4NTY4MTM5RTEyMTJGRTkyMTJEMjFCMkEzMDQ0RDNGRTEyMjIxM0ZFMTIyMjUzRkUyMjAyOEQKKzoyMEQxMDAwMDAxMDAwRDAwMzE3ODIxMDgyMTA4M0Q3ODIxMDgyMTA4M0ZGODIxMDgwMjgwMDI0MDA0MjAwODEwMTAxQzIwMDg0QgorOjIwRDEyMDAwMDYwMDM4RjgyMDA4M0VGODIwMDgyMDA4M0ZGODI0NDgwNDQwRkZGRTA0NDAwNDQwMDg0MDA4NDAxMDQwMjA0MDVGCis6MjBEMTQwMDAwMTAwN0ZGQzAxMDAzRkY4MDIwMEZGRkUwNDQwMDgyMDEyRjgzQzE2RDAxMDFFRjAxMDEwMTAxMDFGRjAxMDEwRjcKKzoyMEQxNjAwMDAzMDAxQzc4MTAwODFFNzgxMDA4MUZGODA4MDAwODAwMUZGQzIxMjQ0ODk0MjRENDI2OTQyNDA0NDAxNDAwMDhCOQorOjIwRDE4MDAwMDIwMDFGRjgxMDA4MUZGODEwMDgxRkY4MTAwODFGRjgwMTAwRkZGRTAzODAwNTQwMDkzMDMxMUVDMTA0MDEwMEQ1Cis6MjBEMUEwMDAwMDAwMDgwMDEwRkM3RjI0NTUyNDU1MjQ1NTI0NTVGQzU1NDQ1NTQ0NTU0NDU1NDQ1N0M0Rjg0NDAxRkUwMDAwNDIKKzoyMEQxQzAwMDA4MDAxMDAwM0UwMDIzRkMzMjIwMkEyMDIyMjBGRTIwMjIyMDMyMjAyQTIwMjIyMDIyMjA0M0ZFNEEwMDg0MDA2RAorOjIwRDFFMDAwMDgxMDEwMTAzQzEwMjQxMDM0OTIyQzkyMjQ5MkZDOTIyNDkyMzQ5MjJDOTIyNDkyMjQ5MjQ0RkU1QzAwODgwMEUzCis6MjBEMjAwMDAwODAwMTA0MDNEMjQyNTI0MzUwNDJDODgyNDg4RkM4ODI0NTAzNDUwMkMyMDI0MjAyNDUwNDQ4ODU1MDY4QTA0M0UKKzoyMEQyMjAwMDA4OTAxMDkwM0M5MDI0OTAzNDk0MkNGODI0OTBGQzkwMjQ5MDM0OTAyQzkwMjQ5MDI0OTI0NUQyNTQ4RTg4MDBFQgorOjIwRDI0MDAwMDgxMDEwMTAzRTEwMjJGRTMyOTIyQTkyMjI5MkZFOTIyMjkyMzJGRTJBOTIyMjEwMjIxMDQyMTA0QTEwODQxMDIwCis6MjBEMjYwMDAxMDFFMjFGMDdEMDA0NTAwNjU3QzU1NDQ0NTQ0RkQ0NDY1Mjg1NTI4NTUxMDQ1MTA0NTI4NDUyODU1NDY4QTg0MjIKKzoyMEQyODAwMDA4NDAxMDIwM0MxMDI1RkUzNDQwMkM0MDI0NDBGQzdDMjQ0NDM0NDQyQzQ0MjQ0NDI0ODQ0NDg0NTUxNDhBMDhDOAorOjIwRDJBMDAwMDgwMDEwMDAzRUZFMjIwNDMyMDQyQUY0RkU5NDIyOTQzMjk0MkFGNDJBOTQyMjA0MjIwNDQyMDQ0QTE0ODQwODNBCis6MjBEMkMwMDAwODIwMTAyMDNDM0UyNDIwMzRGQzJDODQyNDg0RkM4NDI0RkMzNDg0MkM4MDI0ODAyNDgwNDUwMDU1MDA4QTAwNDAKKzoyMEQyRTAwMDA4MTAxMDEwM0MxMDI0MTAzNEZFMkM5MjI0OTJGQzkyMjRGRTM0OTIyQzkyMjQ5MjI0OTI0NEZFNTQ4Mjg4MDA5MAorOjIwRDMwMDAwMDgyMDEwMjAzRTQwMjI3RTMyQTAyQjIwMjIzQ0ZFMjAyMjIwMzIyMDJFM0UyQTIwMjIyMDQyMjA0QTIwODQyMDAyCis6MjBEMzIwMDAxMDAwMjNGRTdDNTA2NDUwNTVGQzU1NTQ0NTU0RkQ1NDQ1NTQ2NTU0NTU5QzQ1MDQ0NUZDNDUwNDU1MDQ4ODAwNjEKKzoyMEQzNDAwMDA4MjAxMTI0M0VBODIyMjAzMkZDMkE4NDIyODRGRUZDMjI4NDMyODQyQUZDMjI4NDIyODQ0Mjg0NEE5NDg0ODg0RQorOjIwRDM2MDAwMDgwMDExRkMzRDA0MjVGQzM1MDAyRDNDMjVFMEZEMjAyNUZDMzUyMDJERkMyNTIwMjUyMjQ1MjI1NTFFOEEwMEU3Cis6MjBEMzgwMDAxMDAwMjFGODc4MTA0ODIwNkJGRTU4MjA0ODIwRjhBMDQ4NDA2QkY4NUFBODRBQTg0QUE4NEFBODZGRkU5MDAwRDMKKzoyMEQzQTAwMDA5MDgxMDhDM0M1MDI3RkUzNDIwMkM0MDI1RkNGRDA0MjVGQzM1MDQyREZDMjUwNDI1MDQ0NUZDNTUwNDg4MDAzNgorOjIwRDNDMDAwMTA0ODIwNDg3REZFNDQ0ODY1RkU1NTRBNDVGRUZENEE0NUZFNjQwMDU0RkM1NDg0NDRGQzQ0ODQ5NEZDODg4NDg3Cis6MjBEM0UwMDAxMDQwMTAyMDNERkMyNDg4MzdGRTJDMDAyNUZDRkQyNDI1RkMzNTI0MkRGQzI0MjA0NUZDNTQyMDhCRkUwMDAwMDAKKzoyMEQ0MDAwMDEwOTAyM0ZFNzg5MDRCRkU2QTAyNThGODQ4MDBGQkZDNDg4MDY5NDQ1QUE4NDkzMDRBNjg0OEE0OEIyMjk4NjBDQworOjIwRDQyMDAwMDEwMDAyODAwNjQwMDkzMDMwOEVERkY0MDIxMDAxMjBGRkZFMDEwODAyOEMwQzUwMzQyMEM1MTgwRTBFMDQwNEUxCis6MjBENDQwMDAwNDAwMUZFMDE0MjAxMzIwMTIyMDFGRjgwMDA4MDIyODAxMTBGRkZFMDQ4ODBDOTAzNDYwQzUzMDA2MEUwNDA0MEMKKzoyMEQ0NjAwMDA4MDBGRjdDMDk0NDExNDQxMTQ0MjU3QzQyNDQwMTAwRkZGRTAzMDAwNDk4MDg2MDM4MjBDQTEwMEMxQzA4MDg5QworOjIwRDQ4MDAwMDEyMDAxMTA3RkZDMTEyMDA5QzAxMTMwMjUwQzAyMDBGRkZFMDMwMDA0ODgxODUwRTgzMDBBMTgwQzBFMDgwNDFECis6MjBENEEwMDAyMDQwOTE0ODY5NDY0MjQyMTI0QzYwMzAyMUMwMkUwMDAxMDBGRkZFMDUxMDBDQjgzNDQwQzUzMDBFMEUwNDA0OUYKKzoyMEQ0QzAwMDAwMjAzRUZDMjI4ODNFNTAyMUZFN0UyMDYyRkNCRjIwMDBBMDdGRkUwMjg4MDQ1QzE4MjBFQTE4MEMwRTA4MDQ1OQorOjIwRDRFMDAwMDAwMDQ0MUUyOUYwRkYxMDExMTAxMTEwN0RGRTExMTAxMTEwRkYxMDExMTAxMTBBMjE0QTIxQTY0MTIyODAwMDQzCis6MjBENTAwMDAwMDAwNDVGQzI4MDRGRTA4MTAxMDEwMjg3RTQ0MTE4MjEwMDBGRkZDMTAyMDEwMjAyMDIwMjAyMDQzRkU4MDAwM0YKKzoyMEQ1MjAwMDAwNDA0NDYwMjg4OEZERkMxMDA0MTA4ODdEMDQxMjg0MTBGOEZEMDgxMjkwMTQ1MDIwMjAyMDUwNDE4RTg2MDQ3RgorOjIwRDU0MDAwMDAwMDQ1RkMyOTA0RkZGQzExMDQxMUZDN0M4MDEwRkUxMTIyRkYyMjE1NTIxMThBMjFGQTIwMDI0MDBBODAwNEQ1Cis6MjBENTYwMDAwMDIwNDUyNDI5MjRGREZDMTA4MDEzRkU3QzgwMTBBMDEwQThGRDcwMTEyMDIyNTAyMjQ4NDQ4RTg5MDQwMDAwRkUKKzoyMEQ1ODAwMDA4MjA3RkZDMDEwMDNGRjgwMTAwN0ZGQzNDMjgwODI0N0ZGRTFDMjAyQTI0N0YyNDIwMTgzRTMyMDI0QTA2ODQ3QworOjIwRDVBMDAwMDgxMDA4MTA0OTEwMjkxMDJBOTJGRjkyMTg5MjFDOTIyQTkyMkE5MjQ4OTI0ODkyODg5MjA4OTIwOEZFMDg4Mjk0Cis6MjBENUMwMDAxMDQwMTA2MDUyNDA1NDQwMzhGRUZFODgxMTg4M0E4ODM0NTA1NDUwNTAyMDkwMjAxMDUwMTE4RTE2MDQxMDAwREQKKzoyMEQ1RTAwMDEwMDAxMUZDOTUyNDU1MjQ1OTI0RkQyNDMxMjQzOUZDNTUwMDU1MDA1MTAwOTEwMDExMDIxMTAyMTEwMjEwRkVFMQorOjIwRDYwMDAwMTAwMDExRkU5NTAwNTUwMDU5RkVGRDQwMzE0MDM5N0M1NTQ0NTE0NDUyNDQ5Mjg0MTQ4NDE5MDQxMjI4MTAxMDVFCis6MjBENjIwMDAyMTA4MjEwODNGRjgwMTAwMjEwODIxMDgzRkY4MTExMDA5MTAwNTI0RkZGRTAzNDAwRDIwMzExOEMxMEUwMTA0RUEKKzoyMEQ2NDAwMDEwMDAxMUZFOTQ1MDU0NTA1ODUwRkZGRTMxNTIzOTUyNTU1MjUxNTI1MThFOTEwMjExMDIxMTAyMTFGRTExMDI2QworOjIwRDY2MDAwMjEwMDExRkMxMjQ0MDg0ODEwQTA2MTEwMjYwRTE5MTQwNTIwRkZGRTAzODAwNTQwMDkzMDMxMEVDMTA0MDEwMDJDCis6MjBENjgwMDAwODAwMEZGQzI4ODQzRjQ4NjIzMDk0NDgwOTg0MzExMEM5MjA3RkZFMDM4MDA1NDAwOTMwMzEwRUMxMDQwMTAwOUMKKzoyMEQ2QTAwMDA4MTQ0OTE0MkExNEZGQTQxQzI4MkIyOEM4NTAyMTUwM0JBODREMjg5NTI0NTdENDIxMTQyMTEyNDExMjgxMTI2NgorOjIwRDZDMDAwMTA0MDEwMjA5NUZFNTUwMjU4MDBGRUZDMzAwMDM4MDA1NUZFNTAyMDUxMjg5MTI0MTIyMjE0MjIxMEEwMTA0MENCCis6MjBENkUwMDAxMDQwMTA4MDk1MTA1N0Y4NTg4OEZGRkMzMTIwM0ExMDU0NEU1NDk0NTMyMDkwQzgxMzEwMTA2MDExODAxNjAwNTEKKzoyMEQ3MDAwMDEwODAxMEJDOTQ4ODU1MDg1OUZFRkQ0MDMzN0MzNTUwNTk5MDU1RkU1NTEwOTEyODExMjgxMTQ0MTE4NjExMDREOAorOjIwRDcyMDAwMTExMDExMTA5MUQ4NTU1NDVCNTRGQzkwMzE0MDNBM0U1NDAwNTVGODUxMDg5MUY4MTEwODExMDgxMUY4MTEwODlBCis6MjBENzQwMDAxMjA4MTEwODk0OTA1NDIwNUJGRUZDODgzMTA4Mzk1MjU2NTI1M0JDNTA4ODkxMDgxMjEwMTI5NDE3RkUxMDQyMDYKKzoyMEQ3NjAwMDEwMDAxM0ZFOTUyMjU1M0M1OUEwRkQ3RTMyMDAzOUY4NTUwODU1Rjg1MTA4OTFGODExMDgxMTA4MTEyODExMTA1MQorOjIwRDc4MDAwMTAwMDExRkM5NDQ4NTgzMDUzRkVGQ0E0MzEyODNBQTA1NDQwNTQyMDUzRkU5MDcwMTBBODExMkUxNjI0MTAyMDJBCis6MjBEN0EwMDAxMDIwMTA0MDk1RkM1NTA0NTlGQ0ZEMDQzMUZDMzkwNDU1RkM1NDQ4NTA0NDk3RkUxMEEwMTA5ODExMEUxMjA0OUMKKzoyMEQ3QzAwMDEwMDAxM0JFOTBBMjU0QTI1OEJFRkY4ODMyMDgzQTNFNTdBQTUwQUE1MEJFOTA4ODEwODgxMDhBMTU3RTEyMDJGNworOjIwRDdFMDAwMDAwMDFGRjAxMDEwMTAxMDFGRjAxMDEwMTAxMDFGRjAxMjA4MTExQzEwQTAxMDQwMTIyMDE0MTgzODBFMTAwNDdECis6MjBEODAwMDAzRTAwMjJGQzNFMjAyMkEwM0VGRTI4MzAyQzUyMzU5RTIwMDAxRkYwMTAxMDFGRjAxMDEwMUZGMDAwMDBGRkZFMUQKKzoyMEQ4MjAwMDNFRjgwMjA4MTIyODBBMTg3MjI4MjJDODBBMjgwNDEwMDQyMDdGRkUwNDIwMDQyMDA4MjAwODIwMTAyMDIwMjBEOQorOjIwRDg0MDAwMTAwMDExREUyODQyMjQ0MjQ1NTI1MENBOEM0QTA4NDY3RUNBMDU1MjJBNDIxMDQyMDg0MjA5NEEwMDg0MDAwMEE2Cis6MjBEODYwMDAwMTAwMDJDMDBDMzAzN0VFQzAwNDBGRjAwODEwMEZGMDAwMDA3RUY4MjI0ODEyMjgwQTQ4MTI4ODJBMjgwNDEwM0UKKzoyMEQ4ODAwMDAxMTAxRkY4MDE0MDdGRkUwMjAwMEZGMDM4MTBDRkYwMDgxMDBGRjAzRTdDMTIyNDBBMTQxMjI0MkE1NDA0MDhCNQorOjIwRDhBMDAwMDQ0MDdDN0UwNDQwM0M3QzA0NDA3QzdFMDQ0MDAwMDA3RUZDMjIwNDEyNDQwQTI0MTI0NDYyODQwQTE0MDQwODIyCis6MjBEOEMwMDAwODIwN0ZGQzAwMDgxRTQ4MTI0ODFFNDgxMjQ4MUUyODEyMTA3RUZDMTI0NDBBMjQxMjE0MjIyNDBBNTQwNDA4RTEKKzoyMEQ4RTAwMDA4MDAwNDdFN0Y5MjQwOTI0MERBN0ZCNjQwMTI3RjkyNkFCNjZBREE3RjkyNkE5MkFBOTJBQTkyMjA1QTAwMjQ4MgorOjIwRDkwMDAwMDAwMEZFRUUwMDIyN0MyMjQ1MzI3Q0FBMDBBQUZFMjJBQTY2OTJBQUZGMzI5MjIyOTIyMjkyQUE4NjQ0MDAwMDA5Cis6MjBEOTIwMDA3RTc4NTA0ODdFNDg0ODg2N0U3ODQ4NDg1NDMwN0U0ODAwODY3RUY4MjI0ODEyMjgyMjQ4NDI4ODBBMjgwNDEwREIKKzoyMEQ5NDAwMDAxMDAwMTAwMDIyMDA0MjAwODQwMUY4MDAyMTAwQzA4MUZGQzAwODQwOEE0MDg5MDEwODgyMDg0NDI4NDAxMDA4QworOjIwRDk2MDAwMDg0MDA4NDA3REY4MDk0ODFDODg2OENBMjkyQTEyMDYwNDgwMUYwMDA0MjAxRkYwMDEwMDExMjAyNTE4NDIwODgxCis6MjBEOTgwMDAwODIwN0ZGQzA4MjAwRkUwMDgyMDBGRTAwODIwRkZGRTEyMTAyNEM4Q0YwNjA0MjAxRkYwMDkyMDE1MTAyMjA4MDMKKzoyMEQ5QTAwMDA4NDAzRTdFMjI4ODIzNTAzRTIwMjBEODQyMDY0NDQwOEY4MDAyMjAwRkYwMDEwMDExMjAxMTE4MjUwODAyMDA2QQorOjIwRDlDMDAwMEUwMEYwMUMwMEUwNTIyMDU0NDQyMEY4M0UxMDQ4MjQ3RUZFODgxMjRBNTA0QTU0NEU5MjcxMTIwMDUwMDAyMDUwCis6MjBEOUUwMDAwMTAwN0ZGQzAxMDBGRkZFMTExMEZGRkUxMDkwMUZGMDMyMjQyQTc4MjIyNEZGN0UwODEwNEE1NDg5OTIxODMwMEMKKzoyMERBMDAwMDEwMjAxMDIwRkUyMDEwRkM3QzIwMTAyMEZFMjAyMUZFM0MyMDY0MjA5ODUwMDg1MDE0ODgyMzBFQzIwNDAwMDBDMAorOjIwREEyMDAwMTA0MDEwNDBGRUZFMTBBMjU1QUE1NjcyQkEyMjQ0RkFBMjIyM0U3MjY0QUE5OTIyMTgyMjI0MkFDMDA0MDAwMDJFCis6MjBEQTQwMDAwODAwMDgwNDA4MDQ3RTQ0MDg0NDA4NDRGRjQ0MDg0NDA4NUMyRjY0Mjg0NDI4MDQ1ODA0NEMwMDgzRkUwMDAwMDUKKzoyMERBNjAwMDA4MDAwOEY4MDg4ODdFODgwOEY4MDg4OEZGODgwOEY4NDg4ODRFODg0ODg4NEJGRTQ4MDBCODAwOEZGRTAwMDBBNQorOjIwREE4MDAwMTAwNDEzRTQ3RDE0MTExNDExRDRGRDU0MTI1NDU2NTQ1MTU0NUM5NDUwODQ1MTE0NTIwOEIwMDA4RkZFMDAwMDFBCis6MjBEQUEwMDAwODEwMDkxMDdFOUUwOEEyMDg0NEZFOTAwODkwNDg5MDRCMjg0RDI0NDk0MjQ4NDI0ODgwQTgwMDlGRkUwMDAwMUYKKzoyMERBQzAwMDExMjgxNTNDMTdBODdEN0UxM0QwMTJBQUZDQ0UxM0Y4NTI0ODVFNDg1MjQ4NTBBMDUxMThCMjEwOUZGRTAwMDBGQworOjIwREFFMDAwMDgwMDA4RkM3RTg0MDg4NDA4OTRGRjg4MTQ4MDE0QkM1NkE0NTVBNDk0QTQ5NDk4MjQ5NDI0QTY1NEM0ODg4MDBDCis6MjBEQjAwMDAwODIwMDgyMDdFRkUwODI0MDgyOEZGRkUyNDEwMjQyMEE0N0NBNkM0QTU0NDI0N0MyNDQ0NTQ0NDg4N0MwMDQ0MEQKKzoyMERCMjAwMDAwMDBGRjAwMDBGRTAwMTA3RTEwNDIxMDQyMTA3RTEwNDIxMDA0MTA0NjEwMjgxMDBFMTBGMUZFMDAwMDAwMDAxNworOjIwREI0MDAwMDAyMEZFMjAwMDIwMDFGQzdDMjA0NDIwNDRGODdDODg0NDg4MDg1MDRDNTAyODIwMEU1MEYwODgwMTA2MDYwNDNCCis6MjBEQjYwMDBGRjAwMTRGRTE0MTAxNDEwN0YxMDU1MTA1NTEwNTUxMDY3MTA0MTEwN0YxMDQxMTA0MTEwN0Y1MDQxMjAwMDAwNjUKKzoyMERCODAwMDAwMDBGRUZDMjgyMDI4MjBGRTIwQUEyMEFCRkVBRTIwQzIyMDgyMjBGRTIwODIyMDgyMjBGRTIwODIyMDAwMjBENgorOjIwREJBMDAwMDAwOEZGMDgyODA4MjgwOEZFRkVBQTA4QUEwOEFBNDhDNjI4ODIyOEZFMDg4MjA4ODIwOEZFMjg4MjEwMDAwMDNBCis6MjBEQkMwMDAwMDEwRkUxMDI4OTAyODk0RkU5RUFBRjRBQjk0QUE5NENFOTQ4Mjk0RkU5QzgyOTA4MjgyRkU4MjgyN0UwMDAwNTQKKzoyMERCRTAwMDAwMjBGRTIwMjgyMDI4MjBGRUZFQUEyMEFBMjBBQTIwQ0VGQzgyODRGRTg0ODI4NDgyODRGRUZDODI4NDAwMDA5RgorOjIwREMwMDAwMDA0MEZGNDAyODQwMjg3RUZFQTBBQUEwQUIzRUFBMjBBRTIwQzIzRUZFMjA4MjIwODIyMEZFMjA4MjIwMDAwMEVDCis6MjBEQzIwMDAwMDIwRkUxMDI4MTAyOEZFRkU4NEFBMDBBQTQwQUE0NEFFNDhDMjcwODI0MEZFNDA4MjQyODI0MkZFM0UwMDAwNjgKKzoyMERDNDAwMDAwMjBGRTIwMjhBMEZFRkNBQUEwQUIyMEFBMjBBRkZFQzI1MDgyNTBGRTUwODI5MDgyOTJGRjEyODYwRTAwMDAzQgorOjIwREM2MDAwMDA0MEZFNDAyODdFMjg4NEZFQzhBQjI4QUExMEFBMjBDRTdDODNDNEZFNDQ4MjQ0ODI0NEZFN0M4MjQ0MDAwMDE4Cis6MjBEQzgwMDAwMDAwRkU4MDI4OUMyOEUwRkU4MEFBRkVBQTAwQUFGQ0FBODRDRTg0ODJGQ0ZFODQ4Mjg0RkVGQzgyODQwMDAwM0UKKzoyMERDQTAwMDAwMDBGRUZFMjg1MDI4RDRGRTU4QUFGRUFBODBBRTgwQzI4MDgyODBGRTgwODI4MDgyODBGRjAwODIwMDAwMDA1NworOjIwRENDMDAwMDAwMEZERkUzMDAwMzAwMEZEREVCNTUyQjU1MkJEREFDNTU2ODU1MkZENTI4NTUyODU1MkZERDI4NTU2MDAwMEQwCis6MjBEQ0UwMDAwMDAwRkVGQzI4ODQyODg0RkU4NEFBRkNBQTAwQUFGRUNFMjA4MjIwRkVGQzgyMjBGRTIwODIyMDgxRkUwMDAwRUQKKzoyMEREMDAwMDAwMjBGRTIwMjg2MDI4NTBGRTg4QUJGNkFBMjBBQTIwQ0ZGRTgyMjBGRUIwODJBOEZGMjQ4MjI0ODBBMDAwNDA5QQorOjIwREQyMDAwMDAwQ0ZFRjAyODAyMjkyMkZFOTRBQTkwQUEwOEFCRkVBRTA4QzI4ODgyNDhGRTQ4ODIwOEZFMjg4MjEwMDAwMEZCCis6MjBERDQwMDAwMDAwRkVGQzI4ODQyOEZDRkU4NEFBODRBQUZDQUEwMEFFOTBDMjk2ODJGOEZFOTA4MjkyRkVEMjgyOEUwMDAwNjcKKzoyMERENjAwMDAwNDBGRTIwMjlGQzI4MDBGRTg4QUE0OEFBNTBBQkZFQUUwMEMyRjg4Mjg4RkU4ODgyODg4Mjg4RkVGODgyODhEMQorOjIwREQ4MDAwMDA4MEZFOUUyODkyMkJGMkZFOUVBQTkyQUE5MkFGRDJDMjVFODI1MkZFNTI4M0QyODIyMkZFMjI4MjRBMDAwNENFCis6MjBEREEwMDAwMDAwRkVGODI4ODgyOEY4RkU4OEFBRjhBQTAwQUZGRUMyMjA4MkEwRkVCQzgyQTA4MkEwRkY2MDgyM0UwMDAwRkQKKzoyMEREQzAwMDAwMDBGRUZFMjgyNDI4QTBGRUJFQUI2MEFBMUVBQUZDQ0U4NDgyRkNGRTg0ODJGQzgyODRGRTg0ODI5NDAwODgwOAorOjIwRERFMDAwMDA0MEZFNDAzM0ZFMzA4MEZDRjhCNTg4QjY4OEI0RjhBQzAwQzVGQzg1NTRGRDU0ODU1NEZGRkU4NDAwMDAwMEI4Cis6MjBERTAwMDAwMDQwRkMyMDUxRkU1MTIwRkRGQ0Q1MjRENUZFREQyNEM1RkM4NTIwRkRGQzg1ODQ4Njg0RkVGQzg0ODQwMDAwQUMKKzoyMERFMjAwMDAwMDBGRERDMzA0NDMxNTRGQ0NDQjU1NEI0MjRCNDUwQURBOEM0NDY4NTkwRkM2NDg1ODhGQzMwODVDMDAwMDAxMQorOjIwREU0MDAwMDBBMEZDQTAzMkE4MzFCMEZGRkVCNDkwQjVGQ0JDNDBDNUY4ODQ0MEZGRkU4NDYwODQ5MEZEMDg4NjA2MDAwMEQ2Cis6MjBERTYwMDAwMEEwRkU5MDMxMDAzMUZFRkYyMEI1RkNCNTIwQjVGQ0FEMjBDNUZFODUwMEZDMDA4NTU0RkQyQTgyMkEwMDAwMDEKKzoyMERFODAwMDAwNDBGQzIwMzNGRTMwNDBGQzg4QjVGQ0I0QThCNEFBQUQyRUM0MDA4NUZDRkQ1NDg1NTRGRDU0ODdGRTAwMDA3NgorOjIwREVBMDAwMDAyMEZDM0MzMDIwMzFGRUZEMjRCNUY4QjUyMkI1RkVCRDIwQzVFNDg1MzhGREQ4ODUzNkZERDQ4NjUwMDAyMDk5Cis6MjBERUMwMDAwMDUwRkM1MDMxRkMzMTU0RkRGQ0I1NTRCNUZDQjQwMEFERkVDNDAwODRGQ0ZDODQ4NEZDRkM0ODgxRkUwMDAwREIKKzoyMERFRTAwMDAwM0NGREUwMjgyMDJCRkVGQzIwQURGQ0FENzRBREZDQzQyMDg1RkNGQzIwODdGRUZEQTQ4NTUyODI1MjAwMDBCNworOjIwREYwMDAwMDAwMDdGRkMwMjAwMDQxMDBBMTgzMTIwQzJDMDA1QTAxOUEwNjI1MDg0NDgwODQ2MzA0NEMwNDAwMjgwMDEwMDVBCis6MjBERjIwMDAyMDg0MjA0NDNDNDgyMUZFRkMyMDg1RkNDQzQwQUZGRTk0NDA5NDgwQUNGQ0FEMjBDNjIwODQyMEZERkUwMDAwRkUKKzoyMERGNDAwMDAwMDBGRkZFMDQwMDA3RjAwODEwMTA1MDIwMjAxRkYwMTAxMDFGRjAwMTAwMTFGQzExMDAyOTAwNDdGRTgwMDBDNgorOjIwREY2MDAwM0NGMDA4OTAwOEQwMDhCMDNEMTIwMjBFMUZGMDEwMTAxMDEwMUZGMDAxMDAwOUY4MDkwMDE1MDAyM0ZFNDAwMDBGCis6MjBERjgwMDAxMDBDRkVGMDEwODAxQ0ZFNzA5MDExMTAzMjEwMUZGMDEwMTAxRkYwMTEwMDAxMDAwOUY4MDkwMDE1MDAyM0ZFREEKKzoyMERGQTAwMDAwMjgzRkZFMjQyMDI3MjQyNDI4M0Y5MDU1MzI2NTRBOUZGNDEwMTAxRkYwMDEwMDExRjgxMTAwMjkwMDQ3RkVEMQorOjIwREZDMDAwNDkyMDJBMjA3RjdFNDk0ODVEQTg2QjEwNDk2RTVGRjQxMDEwMTAxMDFGRjAwMTAwMTFGODExMDAyRDAwNDNGRTlFCis6MjBERkUwMDAwMDgwN0NDMDQ0ODA0NEZDNDUwNDdEMDQxMjg0MTA0NDVFMjQ1MDI0NTAwNDUwMDQ1RTA0RjA0NDAwMjgwMDEwNDEKKzoyMEUwMDAwMDAwMDA3RkZDNDQ4ODQ0ODg0NDkwN0NCQzEwOTQxMTg0NUQ0ODUxNDg1MTMwNTIzMDVBNDhFNDg2MDkwNDAyMDA0QworOjIwRTAyMDAwMDAwMDdERkU0NDQ4NDQ0ODdDNDg1NDQ4MTNGRTUwNDg1RTQ4NTA0ODUwODg1Njg4NzkwOEMxMDgwMjA4MDQwOEYwCis6MjBFMDQwMDAwMDIwN0MyMDQ0MjA0NUZDNDQyMDdDMjAxMDIwMTNGRTVDMjA1MDIwNTA1MDUwNTA1Qzg4NjEwNjgyMDQwNDAwMUQKKzoyMEUwNjAwMDAwNDA3QzQwNDRBMDQ0OTA0NTA4N0QwNjEyRkMxMDg4NTA4ODVFODg1MEI4NTA5MDVFODRGMDg2NDA3QzAwMDBCQworOjIwRTA4MDAwMDAwMDdERkU0NDIwNDQyMDQ0NDA3QzQwMTA4MDUxRkM1RTg0NTA4NDUwODQ1MDg0NUU4NEUwRkMwMDg0MDAwMDgwCis6MjBFMEEwMDAwMDg4NzhDODQ4ODg0OTA4NDlGRTdCMDgxNTA4MTE0ODVEMjg1MTI4NTEwODUxMDg1RDA4RTEwODAxMjgwMTEwRkYKKzoyMEUwQzAwMDAwMDA3QkJDNEFBNDRBQTQ3QUE0MTJBNDE3RkU1MkE0NUVBNDUyQTQ1MkE0NUVBNDcyQTRDMkE0MDRBNDA5Q0M2NQorOjIwRTBFMDAwMDAwMDdDRkM0NDgwNDQ5MDQ0OTA3RDEwMTFGRTEwMTA1QzEwNTA5NDUwRDQ1MDkyNUQxMkUyMTAwMDUwMDAyMDU5Cis6MjBFMTAwMDAwMDQwN0MzMDQ0MjA0NUZFNDUwNDdFNDA1MDQwMTA0ODVFNTg1MDYwNTA0MDUwNDQ1MDQ0NUM0NkUwM0MwMDAwQTEKKzoyMEUxMjAwMDAxMDA3OTAwNDkwMDRGREU0OTUyNzk1MjExNTI1MTUyNUQ1MjUxNTI1MTUyNUU1MkYyNUUwNDUyMDk1MjEwODA0RAorOjIwRTE0MDAwMDAyMDdDMjA0NUZFNDUyNDQ1Mjg3RDIwNTE3ODExODg1RDg4NTE1MDUxNTA1MTIwN0U1MEMyODgwNTA2MEEwNDIyCis6MjBFMTYwMDAwMDIwN0MzMDQ0NDA0NDQ4NDQ4NDdEM0U1MUUyMTAwMDVFMDA1MEZDNTA4NDUwODQ1Njg0NzhGQ0MwODQwMDAwMTkKKzoyMEUxODAwMDAwMjA3QzIwNDQyMDQ1RkM0NDIwN0MyMDU1RkUxMDAwNTAyMDVDMjA1MUZDNTAyMDVDMjA3MDIwQzNGRTAwMDA0NQorOjIwRTFBMDAwMDA0MDdDNDA0NDdFNDdDMDQ0NEM3QzMwMTBEMjUxMEE1QzA0NTNGQzUwQTA1NkEwNThBMkUxMjIwMjFFMDQwMDZCCis6MjBFMUMwMDAwMTEwN0QxMDQ1MTQ0NUQ4NDUxMDdENTIxMTkyMTEwRTVDMjA1MDIwNTNGRTUwMjA1QzIwRTAyMDAwMjAwMDIwREMKKzoyMEUxRTAwMDAwMjA3OTIwNDkyMDQ5RkM0QTIwN0EyMDE0MjAxM0ZFNUM5MDUwOTA1MDkwNTExMDVEMTJFMjEyMDQwRTA4MDBFNQorOjIwRTIwMDAwMDAwMDc4MEM0Q0YwNEIxMDRBMTA3ODEwMTdGRTExMTA1RDEwNTExMDUxMTA1MTEwNUQxMDYyODA4NDdFMDAwMEVBCis6MjBFMjIwMDAwMDQwNzgyMDRCRkU0OTA4NDg5MDc4NjAxMDkwMTMwRTVDOTQ1MDkwNTA5MDU0OTA1OTEwRTExMDAyMTAwNDEwRTcKKzoyMEUyNDAwMDAwNDA3QzMwNDQyMDQ3RkU0NDAwN0M4ODEwQzYxMTA0NUU4ODUwODg1MDUwNTAyMDUwNTA1Qzg4RTEwNjAyMDRCNworOjIwRTI2MDAwMDA0MDdDMjA0NUY4NDUwODQ1MDg3REY4MTEwODExMDg1REY4NTE0NDUxMkM1MTEwNUQ1OEYxOEU0MTA0MDAwMDAzCis6MjBFMjgwMDAwMDAwN0RGODQ0MDg0NDA4NDVGODdEMDIxMTAyNTBGRTVDMDA1MDQwNTJCNDUyQTI3QThBQzQ4ODAwNzgwMDAwQTYKKzoyMEUyQTAwMDAwMjA3QzIwNDQzRTQ0MjA0NUZDN0QwNDExRkMxMTA0NURGQzUwMjA1MDIwNTNGRTUwMjA1QzIwRTAyMDAwMjA0MgorOjIwRTJDMDAwMDAwMDdERkM0NTI0NDVGQzQ1MjQ3RDI0MTFGQzEwMjA1RkZFNTA2MDUwQjA1MEE4N0QyQ0MyMjYwNDI0MDAyMEY2Cis6MjBFMkUwMDAwMjAwN0IwMDRBM0M0QkU0NEQyNDc5MjQ1MTI0MTNFNDVEMjQ1MTI0NTEyNDUyQkM3QTY0QzQ2NDA4MjAwMDAwQ0IKKzoyMEUzMDAwMDAwMUM3REUwNDUxMDQ1MTA0NUZFN0QxMDExN0MxMTQ0NUQ1NDUxNTQ1MTU0NUQ1NDcyMjhDMjQ4MDQ4NjA5MDQ0MQorOjIwRTMyMDAwMDA0MDdDMjA0NUZFNDUyMDQ1MjA3RDNDMTEyMDExMjA1RDIwNTFGQzUyODQ1Mjg0NUE4NEU0RkMwODg0MDAwMDE5Cis6MjBFMzQwMDAwMDQwN0MyMDQ3RkU0NDAwNDUwODdDOTAxMDAwMTNGRTVDMDA1MUZDNTEwNDUxMDQ1RjA0RTFGQzAxMDQwMDAwNDYKKzoyMEUzNjAwMDAwMDA3QzlFNEFEMjQ5MTQ0RkQ0NzkxODExMTg1N0Q0NTkxMjUxMTI1MjkyNUE1RTY0NTRDODEwMTAxMDAwMTBEOAorOjIwRTM4MDAwMDAxMDc4MTA0RjdDNDkxNDQ5RkU3QTE0NTdGQzExMTA1RDdDNTExMDU1RkU1MjEwN0IxMEM0OTAxODdFMDAwMDEwCis6MjBFM0EwMDAwMDQ4N0Q0ODQ1NDg0N0ZFNDU0ODdENzgxMTAwMTFGRTVDMjA1M0ZFNTA3MDUwQTg1RDI4RTIyNjA0MjQwMDIwODIKKzoyMEUzQzAwMDAwNDA3QTQ4NEE0ODRBNDg0QkY4NzgwMDE3RkM1MDQwNUZGQzUyOTQ1Mjk0NUU5NDcyOTRDMjk0MDI4QzAwMDBCNgorOjIwRTNFMDAwMDAxQzdERTA0NDIwNDdGRTQ0MjA3REZDMTEyNDUxRkM1RDI0NTFGQzUwMjA1MUZDNTAyMDVDMjBFM0ZFMDAwMDQ0Cis6MjBFNDAwMDAwMDFDN0RFMDQ0MjA0NUZDNDUyNDdEMjQxMUZDMTAyMDVGRkU1MjMyNTIyQTUyM0U1RUVBRjIwMjAyMEEwMjA0NUMKKzoyMEU0MjAwMDAwNDA3ODIwNEJGRTRBNDg0QTQ4N0JGRTEyNDgxMjc4NUUwMDUyRkM1Mjg4NTI1MDVBMjBFNDU4MDg4RTExMDRCMQorOjIwRTQ0MDAwMDEwODdDOTA0N0ZFNDQ0MDQ1RkM3QzQwMTA0MDEzRkU1QzgwNTEwMDUxRkM1MjIwNTQyMDU4MjBFM0ZFMDAwMEM3Cis6MjBFNDYwMDAwMDQwNzgyMDRCRkM0QTA0NEEwNDdCRkM1MjAwMTNGQzVCNTQ1MzU0NTNGQzU1NTQ3RDU0QzU1NDA5MEMwMDAwQkMKKzoyMEU0ODAwMDdERkM0NDA4NDREMDQ0MjA3RkZDMTBBODExMjA1MkEwNUM0MDU3RkU1MEUwNUQ1MDcxNENDMjQ2MDQ0NDAwNDBDRQorOjIwRTRBMDAwN0JGRTQ5MDg0OUY4NDkwODQ5Rjg3OTA4MTNGRTE4MDg1N0JDNTRBNDUyQTg1RDEwNzJBOEM0NDgxODg2MDEwNEQyCis6MjBFNEMwMDAwMDkwNzg5MDRGRkU0ODkwNDgwMDdGRkUxMDkwNTNGQzVFOTQ1Mjk0NTI5NDUzNkM1RTQ0RTIwNDAyMTQwMjA4QTYKKzoyMEU0RTAwMDAwM0M3RkMwNDQ0QzQ1Mjg0NTUwN0M4ODExRjAxMDQ4NURGQzUwMjQ1M0ZFNTAyMDVDNTBFMDg4MDEwNjAyMDQwMworOjIwRTUwMDAwMDAwMDdCRkY0QTQyNEFFMjRBNDI3QkVGMjIwMjIzRUEzQjJFMjNFNkEyMDJBNTQyQjQ4MkNCRTIxMDBBMjAwNDg0Cis6MjBFNTIwMDAwMDAwRjdGRTk0MTA5NjkwOTUxRUY3RDIyNTIwMjU0OEJENDhBN0M4QTU0OEE1MTRCNTE0Q0EyMjBBNDIxNDgyM0QKKzoyMEU1NDAwMDAwOTA3QTk0NDk5ODQ4OTA0RkZFNzg5MDEzRkM1MDQwNURGQzUwNDA1N0ZFNTA0MDVDQTBFMTE4MDYwRTE4MDQ3RAorOjIwRTU2MDAwMDAxQzdCRTA0QTQ4NDk1MDRCRkU3OEQwMTE0ODEyNDY1RkZDNTI0ODUzRjg1MjQ4N0U0OEMzRjgwMjA4MDAwMDUyCis6MjBFNTgwMDAwMjEwRjExNDlGRDQ5MDE0OTdGRUY0OTAyNDkwMzc5MEEyMjhBMjI4QUIyOEJBQThDQTRBMTI0QTBBODYwNTAwRUIKKzoyMEU1QTAwMDAwMDA3QkZDNEE5NDRBOTQ0QkZDNzkwMDExRkU1MjQyNURGQTUxNEE1MUZBNTA0QTVDN0VFM0NBMDAwQTAwMDQ1OQorOjIwRTVDMDAwMDA4OEZGRkU4ODg4ODkxRThBODJGQTUyMjJGRTIzOTJCQUZFQTI5MkEyRkVBMjkyQkFGRUUyODIwMjBBMDIwNEU0Cis6MjBFNUUwMDAwMDIwN0JGRTRBMDA0QUZDN0FBNDUyRkMxMkE0NUVGQzUyMjA1M0ZFNTI0ODUyQTQ3QjIyQzVGQzA0MjAwQkZFOTgKKzoyMEU2MDAwMDAxMjg3QTQ4NEM5MDRBNDg3QkZDMTI5NDEyNjQ1Mjk0NUZGQzUyNDg1MzY4NTI0QTdCNkFDMjU2MDc2MjAyNDAzNAorOjIwRTYyMDAwMDEwOEY1Mjg5N0JDOTk0ODk3QkVGMzE4QTVBQTI5NEVBM0Y4QkEwOEEyNDhBMjQ4QkE0OEUwQjA4MTBDMDYwNDAwCis6MjBFNjQwMDAwMjg4RkE0ODhBRUE4RTFDOEFFOEZBMDgyMkU4M0FCNEE1RTJBODAwQTNGOEExMTBCOEEwQzA0MDAxQjAwRTBFQzQKKzoyMEU2NjAwMDAwNzAwNzgwMzkwMDA4OEMwNDcwMDM4MDdDNDAwMEEwMDMxMDBDMjgzMEM4MDMwODBDMDg3MTEwMDBBMDAwNDBDNAorOjIwRTY4MDAwMDAwMDFERkVGMDIyNDgyMjJFNDIzMDQyQzg5QzE1MDgyNEZDQ0E4NDEyODQyMjg0QzI4NDAyRkMxNDg0MDgwMEYyCis6MjBFNkEwMDAwNDAwMUJGRUU4MjA0NDQwMjg4MDMxRkNDOTA0MDkwNDM1MDRDNUZDMEQwNDM1MDRDNTA0MDVGQzI5MDQxMDAwQjcKKzoyMEU2QzAwMDE5MjBFMUEwMTUyMDhBMjA1N0ZFMjIyMDUyNzA5MjcwMkE2ODRBQTg5QUE2MkIyNENBMjAwQTIwMkEyMDEyMjBBMworOjIwRTZFMDAwMDA5MDFFOTBFNUZFNTI5MDJERkMzMTA0QzlGQzE5MDQyNUZDQ0MyMDE3RkUyNDIwQzQ1MDA0ODgyOTA2MTIwNDhDCis6MjBFNzAwMDAwMDQwMUM4MEU5RkM0NTU0MjkyNDExNTQyOUZDQzgwMDE1MTAyNTEyQ0QxNDE1RDgyNTEyQzU1MjE1OEUwOTAwREMKKzoyMEU3MjAwMDEwMDgxMDA4M0U0ODI0Mjg3RjI4QTk4ODI5NDgzRjQ4MjkwODI5RkUzRjA4MjkwODQ5MDg0OTA4ODUwODAyMDhGRQorOjIwRTc0MDAwMDAyMDNFMjA0NDIwODgyMDdFRkM0QTI0NEEyNDdFMjQ0QkZFNEEyMDdFMjA0QTUwNEE0ODQyOEM0QTg2ODUwNDkzCis6MjBFNzYwMDAyMDgwM0M4MDQ0RkU4ODgwN0Y3QzU0MDg1NDMwN0NGQzU0NTQ3QzU0NTQ5NDU1MjQ1NDQ0NDRBNDU1MTQ4ODA4NEUKKzoyMEU3ODAwMDIwMDAyMDFDM0VFODQ0QThGRUE4NTJBODUyQTg3RUE4NTJBODdFQTg1MkE4NTJCNDUyQUM0QjdBODUyQTAyMDBCNworOjIwRTdBMDAwMDg0MDA4NEMyRjcwMjg0MjJGNDJGNDNFMDdFMDA4NDAzRkY4Qzg4ODBGRjgwODg4MEZGODA4ODgxMEE4MjA5MEM1Cis6MjBFN0MwMDAyMDIwMjEyNDNGMjY0MkE0N0VBOENBMjA3RkZFNEE1MDRBNTA3RTUwNEE1MDRBNTA0QTUyNEE5Mjg0OEUwMTAwMUIKKzoyMEU3RTAwMDIwMjAzRTIwMjNGRTQ0MjBGRUZDNTJBNDUyQTQ3RUE0NTJGQzdFMjA1MjcwNTI2ODUyQTY0MzI0NEEyMDg0MjAxOQorOjIwRTgwMDAwMTEwNDEwODQzRTQ4MjRGRTdFOTJBQUZFM0U5MjJBOTIyQUZFM0UxMDJBMTAyQkZFMkExMDQyMTA0QTEwODQxMDEwCis6MjBFODIwMDAwODQwMDg0QzJGNzAyODQ0MkU0NkY5QkMwMTAwN0ZGRTAwMDAxRkYwMDAwMDFGRjAwMDAwMUZGMDEwMTAxRkYwMkUKKzoyMEU4NDAwMDA4Nzg3RjQ4MDg0ODNFODYwMDc4N0Y0ODQ5MzA3RjQ4NDA4NDVGRjg4MDAwMEZGMDAwMDAwRkYwMDgxMDBGRjAyRQorOjIwRTg2MDAwMDgwMDA4MDA3RjdDMDg0NDNFNDQwODU0RkY1NDAwNTQzRTU0MjI1NDNFMTAyMjMwM0UzMjIyNTIyQTkyMjUwRTQxCis6MjBFODgwMDAxRkY4MDEwMDdGRkU0MTA0NUQ3MDAxMDAxQzcwMDAwMDFGRjgwMDAwN0ZGRTAyMDAwN0YwMDAxMDAwNTAwMDIwMzcKKzoyMEU4QTAwMDFGRkMwMTAwN0ZGRTQxMDQxRDcwMDEwMDFDNzAwMDAwMUZGODExMDAxRkY4MTEwODIyMDgyMjA4NDQyODA4MTAzMAorOjIwRThDMDAwMUZGMDAxMDA3RkZFNDEwNDFENzAwMTAwMUM3MDAxMDAwMDgwM0ZGQzA0NDAwMjgwMDEwMDAyQzAwQzM4NzAxMDQzCis6MjBFOEUwMDAxRkY4MDEwMDdGRkU0MTA0NUQ3MDAxMDAxRDcwMDAwMDc4RjgxMDIwM0RGQzA0MjAyOEY4MTAwMDZGRkUwMDAwNDkKKzoyMEU5MDAwMDBGRjAwMTAwN0ZGRTQxMDQxRDcwMDEwMDFENzAwMTAwN0ZGRTA0NDAwMzgwMDI0MDNDM0MwNDIwMDQyMDA4MjBBQgorOjIwRTkyMDAwMUZGODAxMDA3RkZFNDEwNDFENzAwMTAwMUQ3MDQwNDAyN0ZDODA0MDRCRkMxMjQ0MTI1NDYyNDgyMDQwMjA0MDEyCis6MjBFOTQwMDAxRkY4MDEwMDdGRkU0MTA0MUQ3MDAxMDAxRDcwMDAwMDA0NDA3QzdFMDQ0MDdDN0MwNDQwRkM3RTA0NDAwNDQwMDIKKzoyMEU5NjAwMDFGRjgwMTAwN0ZGRTQ5MjQxNTUwMEEyMDAxMDAzRkY4MDQ0MEZGRkUwMjAwN0ZGQzA0NDAwQzgwMDM4MDFFNzgyNworOjIwRTk4MDAwMUZGODAxMDA3RkZFNTU1NDBCMjAwMTAwMDA3ODI3ODA5Mjg4NDE1MDE3RkMxMDQwNkZGRTIwNDAyN0ZDMjAwMEQwCis6MjBFOUEwMDAxRkY4MDEwMDdGRkU1NTU0MDkyODIwMDAxMUY4MTEwODAxRjg3MTA4MTNGQzE2NDQxMkE0MTNGQzE4MDQxMDBDQ0UKKzoyMEU5QzAwMDFGRjgwMTAwN0ZGRTU1NTIwQjI4MTQwMDdFMjAxNDNFRkY0NDAwNDgzRUE4MkExMDM2MzAyQTQ4MjM4RTI2MDQ2NgorOjIwRTlFMDAwMUZGODAwODA3RkZFNDQ5MjEyQzgwODIwMDBGQzE0QTQwOEZDNzRBNDE2RkM2QTIwMTJGQzYyMjAwQUZFMDQwMDIzCis6MjBFQTAwMDAwODQwMDg0MDJFNDAyODQwMjg0NEZGNDQwMDQ4NDk1MDQ5NjA0OTQwNTU0MDYzNDI0MTQyNDE0MjdGM0UwMDAwRDEKKzoyMEVBMjAwMDA4MDAwODc4MkU0ODI4NDgyODQ4RkY3ODAwNDgxMDQ4NTI0ODUyNzg1QTQ4NjY0ODQyNDg0MjQ4N0ZGRTAwMDA5QworOjIwRUE0MDAwMDg0MDA4NDAyRUZDMjg4NDI5MDRGRUY0MDA5NDEwOTQ1MkY0NTI4NDZBOEM0NjgwNDI4MjRFODI3MjdFMDAwMDlECis6MjBFQTYwMDAwODAwMDhGQzJFMjQyODI0Mjg0NEZGNDQwMDk0NEEwODRBN0M0QTQ0NTY0NDYyNDQ0MjQ0NEU3QzcyNDQwMDAwQkQKKzoyMEVBODAwMDEwNTAxMDUwMUM1MDUwNTA1MDUwRkQ1NjAxNzg1NTUwNTU1MDU1NTA2RDUwNDU1MDQ1NzI3RDkyNDYwRTAwMDBFMworOjIwRUFBMDAwMDgwMDA4RkMyRTg0Mjg4NDI4RkNGRjg0MTA4NDUyRkM1MkE0NUFBODY2OTA0MjkwNDJBODRFQzY3Mjg0MDAwMEFGCis6MjBFQUMwMDAwODAwMDhGQzJFMjAyODIwMjhGOEZGNDgxMDQ4NTJGRTUyMDA1MjAwNkFGQzQ2ODQ0Mjg0NEU4NDcyRkMwMDAwQUIKKzoyMEVBRTAwMDA4MDAwOEZDMkU4NDI4ODQyODg0RkVGQzEwMjA1MjIwNTJBMDUyQkM2QUEwNDZBMDQyQTA0RjYwNzIxRTAwMDA1MworOjIwRUIwMDAwMTAwMDEwRkU1QzgyNTBGRTUwODBGRUZFMDA5MDEwQTg1NEZDNTQ5NDZDOTA0NTdDNDUxMDQ2MTA3Q0ZFMDAwMDdECis6MjBFQjIwMDAzRkUwMjAyMDIwMjAzRkUwMDIwMDdGRjA0MjEwNDIxMDdGRjA0MjEwNDIxMDdGRjIwMjAyMDIwMjAxRkUwMDAwNzcKKzoyMEVCNDAwMDFGRjgwMDAwN0ZGRTA0NDQzODNDMUZGMDEwMTAxRkYwMDI4MDNFRjgyMjg4M0VGODIyOEEzRUZBMDI4MjAxRkUyOAorOjIwRUI2MDAwM0U3QzIyNDQzRkZDMTA4ODFGRjgxMDg4MUZGODAwMDBGRkZFMDgxMDFGRjgxNTQ4MTMyODFGRkEwMTAyMDBGRUZFCis6MjBFQjgwMDAwOTAwMENDMDA4NDAxRkZFMTA4MDMwODBERkZDMTA4MDEwODAxRkZDMTA4MDEwODAxMDgwMUZGRTEwMDAwMDAwMDgKKzoyMEVCQTAwMDA5MDAwODgwMUZGQzMwODA1RkY4MTA4MDFGRjgxMDgwMUZGQzAwODA3RkZFMDA4MDAwODAwMDgwMDA4MDAwODBEMworOjIwRUJDMDAwMDkwMDA4ODAxRkZDMTA4MDNGRjg1MDgwOUZGQzEwODAxRkZFMDAwMDFGRjgwNDEwMDQzQzA4MDQwODE0MTAwOEZGCis6MjBFQkUwMDAwMEEwN0M5MDQ0RkM0NTIwNDcyMDdERkM0NTIwNDUyMDdEMjA0NUZDNDUyMDQ3MjA1OTIwRTFGRTAxMDAwMTAwMTYKKzoyMEVDMDAwMDIwMjAyMDkwM0M5MDQ1RkU2OTkwOUE5MDE0RkMyMjkwRkM5MDI0RkMyNDkwMjQ5MDI0OTAzQ0ZFMjQ4MDAwMDA2QQorOjIwRUMyMDAwM0U3QzIyNDQzRTdDMjI0NDNFN0MyMjQ0M0Y3QzA4ODAxRkZFMzA4MERGRkMxMDgwMUZGQzEwODAxRkZFMTAwMDIxCis6MjBFQzQwMDAyMDIwMkEyODI1MjQ3RDNFNDg2OENCNjg3REJFNDkyODQ5Mjg0OTI4N0QzRTQ5QTg0OTI4NDgyODdFM0U0MDIwMDQKKzoyMEVDNjAwMDAxRjA3RDEwMTE5MDExNTAxRDUyRTIxMjBEMEUwMkMwMEMzMDc3RUUwMTAwMDdFMDA5MjAwNTQwN0ZGQzAwMDA2MgorOjIwRUM4MDAwMDEwMDdGRkMwNDQwMTQ0ODI0NDRDNTQ0MDE4MDAyNDAwQzMwNzdFRTAxMDAxRkYwMDkyMDA1NDBGRkZFMDAwMDA4Cis6MjBFQ0EwMDA0MEYwMjc4MDgwODA1N0ZDMTA4MEUzNjAyRDEwMjJDMDBDMzA3N0VFMDEwMDA3RTAwOTIwMDU0MEZGRkUwMDAwNDQKKzoyMEVDQzAwMDA4MDBGRjdFMTA0MDI4N0U3RTUwMDg5MEZFOTAwOTEwMDZDMDFCQjBFMTBFMDdDMDA5MjAwNTQwN0ZGQzAwMDA3QworOjIwRUNFMDAwMDA0MDdFNDAxNDdFRkY0NDFBQTgyODEwQzg2ODFCMDQwNEMwMUZCMEUxMEUwN0MwMDkyMDA1NDA3RkZDMDAwMEM2Cis6MjBFRDAwMDAxMDQwRkU0MDEwRkNGRTg4MTE1MEZFMjAyMDUwMzkwQzRFODAxODcwRTdDQzAxMDAwRkUwMDU0MDAzODA3RkZDNjMKKzoyMEVEMjAwMDQwODAyN0ZDQTEyMDQzRjAxMDAwMjI5NEMyOTQ0QzlDNDM4MDFDRTBFRkRFMDEwMDBGRTAwNTQwN0ZGQzAwMDBCQworOjIwRUQ0MDAwMDAyMDNFMTAyMkZDM0U0ODIwRkUzRTEwNjJGQ0JGMTAwNEMwMUZCMEUxMEUwN0MwMDkyMDA1NDA3RkZDMDAwMEQ2Cis6MjBFRDYwMDAwMzAwMDQ4MDA4NjAzNzlDQzEwMDA3QzAwOTIwM0ZGQzEwMjAyODUwN0VGODg5MjYzQ0YwMkFBODFFNzA3MUZFMUQKKzoyMEVEODAwMDIwNDAyMDUwM0M0ODQ0NDg0OUZFRkM1MDU0NTA1NDUwN0M1MDU0NTA1NDUwN0M5MjAwOTIxRDEyRTIwRTAwMDBFNQorOjIwRURBMDAwMTA0MDEwMjAzQzEwMjVGRTQ4NDBGRTQwNEE0MDdFN0M0QTQ0NEE0NDdFNDQwMDg0MEU4NEYxMTQwMjA4MDAwMDE3Cis6MjBFREMwMDAyMDUwM0M0ODQ0NDA0OUZDRkU0MDUyNDA1MjdDN0U0NDUyODQ1MkM4N0VBODAxMTAxRDI4RTI0NjAxODQwMDAwRkQKKzoyMEVERTAwMDIwMDAyMUZDM0MyMDQ1MjQ0OEE0RkNBODU0QTg3QzIwNTVGRTU0MjA3QzIwMDAyMDBFMjBGMDIwMDAyMDAwMjBFOAorOjIwRUUwMDAwMTAyMDEwMjAzRTIwMjQzRTdFMjBDQTIwNEEyMDdFMjA0QUZDNEE4NDdFODQwMDg0MEU4NEYwRkMwMDg0MDAwMEE2Cis6MjBFRTIwMDAyMDIwMjAyMDNFM0U0NDIwN0UyMEQyRkM1Mjg0N0U4NDUyRkM1MjgwN0U4MDAxMDAwRDAwRjIwMDA0MDAwMDAwMEMKKzoyMEVFNDAwMDIwMDAzQzFDNDVFMDQ4MjBGQzIwNTQyMDU3RkU3QzYwNTQ3MDU0QTg3Q0E4MDEyODFEMjRFMjI2MDQyNDAwMjA0RQorOjIwRUU2MDAwMjA4ODIwODgzQzg4NDkwODdEN0VENTA4NTcwODdENDg1NTI4NTUyODdEMDgwMTA4MUQwOEUxMjgwMTEwMDAwMDZBCis6MjBFRTgwMDAxMjEwMDkxMDA5MjAwMDQwN0ZGRTQ0MDQwRkUwMTA0MDNGRjA1MTEwMUZGMDExMTAxRkYwMDAwMDdGRkMwMDAwODAKKzoyMEVFQTAwMDIwMjAyMDIwM0UyMDQyNDg0NDQ0RkVGRTUyMDI1MjAwN0VGQzUyODQ1Mjg0N0U4NDAwODQwRTg0RjBGQzAwODQxMgorOjIwRUVDMDAwMTAyMDEwMjAzQzIwMjRGQzQ4MjBGQzIwNTVGRTU0MjA3QzIwNTQyMDU1RkM3QzIwMDAyMDFDMjBFM0ZFMDAwMEQxCis6MjBFRUUwMDAxMDIwMTAyMDNFMjAyNUZFNDgyMEJFMjAyQTIwMkFGQzNFMDAyQUZDMkE4NDNFODQwMDg0MEU4NEYwRkMwMDg0MjEKKzoyMEVGMDAwMDIwMjAyMDIwN0M0MDQ1RkU0ODgwRkRGQzU2ODQ1NEZDN0M4NDU0RkM1NDg0N0M4NDAwODQwRTk0RjA4ODAwMDBDMQorOjIwRUYyMDAwMTAwMDExRkUzQzIwMjQyMDQ4NDBGREZFNTU1MjU1NTI3RDUyNTU1MjU1NTI3RDUyMDE1MjFENTJFMTBBMDAwNEE0Cis6MjBFRjQwMDAyMDQwM0MyMDI1RkU0ODg4N0U0OEQyMzA1MjI4N0U0NjUzODg1MjQ4N0U0ODAwNDgwRTg4RjA4ODAxMDgwMDA4NUEKKzoyMEVGNjAwMDIwNDAzQzIwNDQyMDQ5RkVGQzEwNTQ4ODU1MDQ3RThBNTQ4ODU0NTA3QzUwMDAyMDBFNTBGMThFMEUwNDAwMDA4NgorOjIwRUY4MDAwMTI0MDBBNDAwQTgwM0ZGODA0MDBGRkZFMEMyMDM3RDBDODhFMUZGMDMxMTAxRkYwMTExMDFGRjAwMDAwN0ZGQzgwCis6MjBFRkEwMDAyMDAwMjFGQzNDMDQ0NUZDNDgwNEZDMDQ1NUZDNTQwODdGRkU1NDA4NTQ4ODdDNDgwMDQ4MUMwOEUwMjgwMDEwOUQKKzoyMEVGQzAwMDIwMDAyM0ZFM0MyMDQ4MjA3REZDRDUyNDU1RkM3RDI0NTVGQzU0MjA3Q0EwMDA0MDBFNjBGMTk4MDYwRTAwMDQ5OAorOjIwRUZFMDAwMjAwMDIxRkUzQzAwNDgwMDdEREVENTUyNTU1MjdENUE1NUQ2NTU1MjU1NTI3RDUyMDE1MjE5REFFMTU0MDAwMDhCCis6MjBGMDAwMDAyMDIwMjAyMDNDRkU0QTIwN0QyMEQ0NTA1NzUwN0RGQzU1MTA1NTEwN0RGRTAxMTAxRDEwRTI5MDA0N0UwMDAwNzQKKzoyMEYwMjAwMDIwNDAyMTdFM0Q2MjQ1NTQ0OTU0RkQ0ODU1NTg1NDY2N0MwMDU0MjA1NEZDN0MyMDAwMjAxQzIwRTNGRTAwMDAzNworOjIwRjA0MDAwMjAwNDNDMDQ0NUM0NDk0NEZENDQ1NTdFNTVDNDdENjQ1NTU0NTU1NDdENDQwMUM0MUMwNEUwMDQwMDE0MDAwOEIwCis6MjBGMDYwMDAyMDQwMjA0MDdDRkM0NDg4ODk1MDdDMzA1NEM4NTcyNjdDMjA1NUZFNTQyMDdDQTQwMEEyMUQyMkUwQTAwMDQwNEEKKzoyMEYwODAwMDIwMDAzQzNDNDVDMDQ4MjBGQzQ4NTRGMDU0MjA3QzQ0NTRGRTU0MTI3QzEwMDA5NDFDOTJFMTEyMDI1MDAwMjBDNAorOjIwRjBBMDAwMjA0MDExNTA4MTQ4NEE1NDEwMjA2MEMwMjcwMDI3RTAwODQwM0ZGMEQxMTAxRkYwMTExMDFGRjAwMDAwRkZGRTE2Cis6MjBGMEMwMDAyMDQwM0MyMDI0MjA0OUZFN0QwNEQ0MDA1NEZDN0MwMDU1RkU1NDUwN0M1MDAwOTIwQzkyRjExMjA2MEUwMDAwQkUKKzoyMEYwRTAwMDIwMDAzQzAwMjVERTQ5NTI3RDUyRDVEMjU1NTI3RDUyNTVEMjU1MTI3RDEyMDE1QTFEOTRFMTEwMDAxMDAwMTBGMAorOjIwRjEwMDAwMjAyMDIxRkUzQzIwNDRGQzQ4MjBGRkZFNTQwMDU1RkM3RDA0NTVGQzU1MDQ3REZDMDEwNDFEMDRFMTE0MDEwODIyCis6MjBGMTIwMDAyMDIwMjAyMDNERkM0NDIwNEJGRUZDMTA1NDg4NTU0NjdFNzg1NDg4NTU1MDdDMjAwMDUwMUM4RUUzMDQwMDAwRjIKKzoyMEYxNDAwMDIwMDAyM0UwMzk0MDQ5N0U1MUUyRkQ2MjU1NTQ1NTU0N0RENDU1NTQ1NTQ4N0RDODAzNTQxQzY2RTA0NDAwNDA0RgorOjIwRjE2MDAwMjA1MDIwNTAzQzUwNDlERTdDNTBENDUwNTQ1MDdEREU1NDUwNTQ1MDdEREUwMDUwMUM1MEUwNTAwMDUwMDA1MERFCis6MjBGMTgwMDAyMDAwMjFGQzNEMDQ0NUZDNDkwNEZEMDQ1NUZDNTQxMDdEMTA1NUQ2NTUxODdEMTAwMTUyMUQ5MkUxMEUwMDAwMEEKKzoyMEYxQTAwMDIwMDAyMEZDM0M4NDQ0RkM0ODg0RkNGQzU0MDA1NDAwN0RGRTU1MDI1NUZFN0QwMjAxMDIxREZFRTEwMjAwMDAwMgorOjIwRjFDMDAwMjAwMDIxRkUzRDIyNDkyMjdEMjJENUZFNTUyMjdEN0E1NTRBNTU0QTdEN0EwMTAyMUQwMkUxRkUwMTAyMDAwMDBECis6MjBGMUUwMDAyMDAwMjA0MDdEOUM0OTA0RkQwNDU1REM1NTA0N0QwNDU1RkM1NDUwN0M1MDAwOTAxQzkyRTExMjA2MEUwMDAwMTcKKzoyMEYyMDAwMDIwNDAyMDQwN0M2MDQ4OTA5MTRFN0UyMDU1RkM1NDA4N0MxMDU0NjA1NDMwN0M5NDAyODIxRThBRTQ3ODAwMDBGNAorOjIwRjIyMDAwMjAwMDIxRkUzRDIyNDkyMjUxN0FGRDIyNTVGQTdEMDI1NTdBNTU0QTdEN0EwMTAyMEEwMjMyMDJDNDBBMDAwNDkzCis6MjBGMjQwMDAyMDAwMjFGODdDMDg0OUY4N0M0OEQ1Rjg1NTQ4N0Q0ODU1NDg1NUY4N0M0QTAwNUExQzc2RTM5NjAwMDIwMDAwQTYKKzoyMEYyNjAwMDIwNTIzQzUyMjRBNDQ5NDg3Q0E0RDQ1MjU0MDA3Q0ZFNTQ5MjU0OTI3Q0ZFMDA5MjBFOTJGMEZFMDA4MjAwMDAzOQorOjIwRjI4MDAwMjAyMDIxRkMzQzIwNDg4ODdERkVENDg4NTQwMDdERkM1NTA0NTUyNDdEMjQwMTI0MUM1MEUwOEMwMzA0MDAwMENBCis6MjBGMkEwMDAyMDQ4MjE0ODNENDg0N0ZFNDk0OEZENzg1NTAwNTVGRTdDMjA1N0ZFNTQyMDdDNzAwMEE4MUNBRUUxMjQwMDIwMUQKKzoyMEYyQzAwMDIwMDAyMURDM0Q1NDQ5NTQ3RERDRDQwMDU1Rjg3QzAwNTdGRTU0NDA3Q0Y4MDAwODFDMDhFMDA4MDAyODAwMTA0NAorOjIwRjJFMDAwMjAxMDNDNTA0NTkwNDg5MEZDOTQ1N0Y0NTREODdEQjA1NkQwNTQ5MDdDOTAwMEE4MUNBOEUwQzYwMDg0MDAwMEM1Cis6MjBGMzAwMDAyMDgwMjA4MDdDRkU0OTAwRkRGQzU2ODQ1NEZDN0M4NDU0RkM1NDgwN0NGQzAxODgxQTUwRTAzMDAwQ0UwMzA0NTMKKzoyMEYzMjAwMDIwMjAyMDQwM0RGQzQ1MDQ0OUZDRkQwNDU1RkM1NDAwN0RGQzU0MjA1NDIwN0RGQzAwMjAxQzIwRTNGRTAwMDBBOQorOjIwRjM0MDAwMjA0MDIwMjAzREZDNDkwNDdEMDRENUZDNTUwMDdERkU1NUFBNTVBQTdERkUwMkFBMUFBQUU0QUEwODg2MDAwMDYwCis6MjBGMzYwMDAyMDAwM0RGQzI0QTg0ODUwN0MzMEQ0Q0U1NzIwN0RGQzU1MjQ1NTI0N0RGQzAwMjAwRTI0RjFGRTAwMDIwMDAwRTQKKzoyMEYzODAwMDA4MjA3RTIwMDgzRUZGNDQwODQ0MUVBODEyMTAyNjZFMDQwNDBGQzAxMDgwN0ZGMDExMTAxRkYwMTExMEZGRkUzMgorOjIwRjNBMDAwMjA0MDIwNDgzREY4NDQ1MDRCRkVGQzgwNTdGNDU0ODQ3QzdDNTQwMDU0RkM3Qzg0MDBGQzFDODRFMEZDMDA4NDNDCis6MjBGM0MwMDAyMDAwMjBGQzNDODQ0NEZDODg4NDdDRkM1NDAwNTVERTdDNDI1NTRBNTRDNjdENEEwMjUyMUM0MkUxNEEwMDg0NDcKKzoyMEYzRTAwMDIwMDAyMUZFM0Q1MjQ5NTI3REZFRDQwMDU0Mjg3Q0E0NTRBMjU1MjI3RUE4MDBBNDFEMjJFMjIyMDAyMDAwMjBGRgorOjIwRjQwMDAwMjAxQzIxRTAzQzQ0NDkyNDdDQThENDkwNTRGQzdEMjA1NDIwNTdGRTdDMjAwMTI0MUQyNEUxRkMwMTA0MDAwMEEwCis6MjBGNDIwMDAyMDAwMjE0ODNCRTg0OTQ4NTFERUZDOEE1N0VBNTZBQTdGRUE1NDhBNTdFQTdDOEEwMDkyMUM5MkUwQUEwMDg0QkQKKzoyMEY0NDAwMDIwMDAyMUZFM0M1MDQ1RkM0OTU0RkQ1NDU1RkM1NDAwN0NGODU0MDA1NUZFN0MyMDAxMjgxRDI0RTJBNDAwNDAyNgorOjIwRjQ2MDAwMjAwMDIxRkMzQzIwNDdGRTRBMjJGREFDNTQyMDU1QUM3QzAwNTVGQzU0MDQ3REZDMDAwNDFDMDRFMUZDMDAwMDg1Cis6MjBGNDgwMDAyMEY4MjA4ODNDRjg0NDg4NDhGOEZDMDA1NUZDNTU1NDdERkM1NDAwNTVGQzdDODgwMDUwMUMzMEUwQ0UwMzA0MDMKKzoyMEY0QTAwMDdGNDA0MDQwQkU3RTJBQzhGRjI4MkExMDNFNjgwRkM2MDg4MDFGRjAzMTEwNUZGMDExMTAxRkYwMDAwMEZGRkVBRgorOjIwRjRDMDAwMjA0MDIwMjAzREZFNDUxMDQ5N0NGRDE0NTVGRTU1MTQ3RDdDNTUxMDU1RkU3RDkyMDJGRTFFOTJFMkZFMDQ5NjgwCis6MjBGNEUwMDA0MDAwNDNGRTdBMDg5MzI4RkFDRUFCRjJBQThBRkFBOEFBQThBQUE4RkJFODAyOTQzNDk0QzUyNDBBQzIwMDAwNzkKKzoyMEY1MDAwMDIxMDgyMDkwM0RGQzQ4MjA3REZDRDQyMDU3RkU3RDI0NTRBODU3RkU3QzAwMDFGQzFEMDRFMTA0MDFGQzAwMDA0MQorOjIwRjUyMDAwMjA4ODNDNTAyNUZFNDg1MDdERkNENTU0NTU5QzdERkM1NTA0NTVGQzU0MDg3REZFMDA4ODBFODhGMDI4MDAxMDA5Cis6MjBGNTQwMDAyMDQ4MjA0ODNERkU0NTRBNDlGRUZENEE1NUZFNTQwMDdERkU1NDAwNTRGQzdDODQwMEZDMUM0OEUwNTAwM0ZFMkMKKzoyMEY1NjAwMDI0MDAyNDAwRkVGQzI0ODQzQzg0MTA4NDdFRkM1Mjg0N0U4NDEwODQxMEZDRkUwMDEwMDAxMDAwMTFGRTEwMDAxRQorOjIwRjU4MDAwMjQyMDI0MjBGRTIwMjRGODNDQTgxMEE4N0VBODUyQTg3RkZFMTAyMDEwNTBGRTUwMTA4ODExMEUxNjA0MTAwMEIxCis6MjBGNUEwMDAyODEwMjgxMEZEMTAyODkwMzg3RTEwMTA3RDkwNTQ5MDU0QTg3Q0E4MTBBNEZFQzQxMDgwMTE0MDEyM0UxMDAwNzgKKzoyMEY1QzAwMDI0MDAyNEZDRkUyMDI0MjAzREZFMTA1MDdDODg1NTk2N0M5MDEwOTAxMDkwRkM5MDExMTAxMTEwMTIxMDEwMTA5RgorOjIwRjVFMDAwMjQ0MDI0NDBGRUY4MjQ5MDNEMjAxM0ZDN0QyNDU1MjQ3REZDMTA1MDEwNTBGRTkyMTA5MjExMTIxMjBFMTAwMDU1Cis6MjBGNjAwMDAyODg4MjlGRUZFODgyODQwMzg0MDExRkU3QzgwNTVCQzdFODgxMDkwMTBGRUZFOTAxMDkwMTA5MDEwQjAxMDkwQUYKKzoyMEY2MjAwMDI0NDAyNDQwRkVGRTI1MDIzQzQyMTFGQTdDMDI1NEYyN0MwMjEwRjIxMDAyRkVGMjEwOTIxMEYyMTAwQTEwMDQzRQorOjIwRjY0MDAwMjgwMEZFRkMyODEwM0JGRTEwNjQ3Q0E4NTUyMDU0NjA3QzIwMTFGRUZFNjAxMEIwMTBBODExMjYxMDIwMTAyMDNFCis6MjBGNjYwMDAyODUwMjlGQ0ZDNTAyOUZDMzg1MDEzRkU3QzIwNTVGQzdEMjQxMUZDMTEyNEZGRkUxMTA0MTEwNDExMTQxMTA4QUUKKzoyMEY2ODAwMDI4NTAyODUwRkVGQzI4NTAzODUwMTFGRTdDODA1NUZDNTZBNDdDRkMxMEE0RkVGQzEwQTQxMEE0MTA5NDEwODg2MAorOjIwRjZBMDAwN0MyMDQ0MjA3NDYwNTQ1MDU0ODhGRjA2ODI5MDdDOTA0NDkwN0M5MDQ0OTA3QzkwNDUxMDQ1MTA1NjEwNDgxMEFCCis6MjBGNkMwMDA3Q0Y4NDQ4ODc0ODg1NDg4NTQ4OEZGMEU4MjAwM0RGQzI0ODgzQzkwMjQ1MDNDMjAyNDUwMjQ1MDM0OEMyOTA4NEQKKzoyMEY2RTAwMDAwMTAzRTEwMjIxMDNBMTAyQUZFN0YxMDQxMTAzRTEwMjI3RTNFNDIyMjQyM0U0MjIyNDIyMjQyMjY3RTIyMDA0OAorOjIwRjcwMDAwMDAyMDdDNDA0NEZDNzRDNDU0QTRGRjg0ODI5NDNDODgyNEZFM0MwMjI0MDIzREZBMjQwMjI0MDIyNDBBMkMwNEQ5Cis6MjBGNzIwMDA3QzBDNDRGMDc0OTA1NDkwNTQ5MEZGOTA4MkZFN0M5MDQ0OTA3Qzg4NDQ4ODdDOEE0NEE2NDRENjRDOTI0NDAwNTYKKzoyMEY3NDAwMDdDMUM0NEUwNzQ4MDU0ODBGRTgwODJGRTdDODA0NDgwN0NGQzQ0QzQ3Q0M0NDRDNDQ1NDQ0RDQ0NDY3QzAwMDBDMworOjIwRjc2MDAwMDA0MDdDNDA0NDdDNzQ4NDU0QzhGRjMwODIzMDNDQzgyNzA2M0NGODI0ODgzQzg4MjQ4ODI0ODgyQ0Y4MjQ4OERCCis6MjBGNzgwMDAwMDAwN0RGQzQ1MjQ3NUZDNTUyNEZGMjQ4NUZDN0MyMDQ1RkU3QzIwNDQ3MDdDQTg0NEFFNTUyNDRBMjAwMDIwQjEKKzoyMEY3QTAwMDAwMTA3QzIwNDRGQzc0OTQ1NEZDRkU5NDgyOTQ3Q0ZDNDQzMDdDNTA0NDkwN0RGRTQ0MTA0NDEwNTQxMDQ4MTBGMgorOjIwRjdDMDAwMDAyMDdEMjQ0NEE4NzVGRTU0NjBGRUIwODUyQzdDMjA0NDQwN0ZGRTQ0ODg3RDg4NDQ1MDQ0MzA1NENDNEIwNDExCis6MjBGN0UwMDAwMDQwN0MyMDQ1RkU3NTQ0NTRGQ0ZFODg4NTUwN0MyMDQ0NTg3RDhFNDZGQzdDODg0NDg4NDQ4ODU0Rjg0ODg4NDkKKzoyMEY4MDAwMDAwMjA3QzEwNDVGRTc1MDQ1NDUwRkVGRTg0NTA3Q0ZDNDRBNDdDQTQ0NEE0N0NCNDQ0NTA0NDUyNTQ5MjQ5MEUwRAorOjIwRjgyMDAwMDAyMDdDMTA0NUZFNzUwNDU0MThGRUUwODI4MDdDRkM0NDkwN0M5MDQ1RkU3QzAwNDQ0ODQ0ODY1NTAyNDgwMDA4Cis6MjBGODQwMDA3REZDNDU1NDc1NTQ1NUZDRkU4MDgyODA3REZFNDY0MjdERjI0NTUyN0RGMjQ0NDI0NDUyNDVGQTRDMEE0NDA0OEIKKzoyMEY4NjAwMDA4MjAxMDIwN0UyMDUyRkM3RTIwNTNGRTUyMjA3RTcwMThBODFBQUUxRDI0MkYyMDI4MjI0ODAyODdGRTAwMDBDNAorOjIwRjg4MDAwMDgyMDEwMjg3RjI0NDlGRTdGMjA0OTIwNDk3QzdGQzQxNEE0MTU1ODE3RDgyNDI0MjRDNDQ0MDI4M0ZFMDAwMDAzCis6MjBGOEEwMDAzRkZFMjBBMDIwOTAzRkZDMjE0MDI2QjAzOTBFMjdGODI0ODgyN0Y4MjQ4ODI3Rjg0MTkwNDZBQTk4N0UwMDAwNTYKKzoyMEY4QzAwMDEwMDAyM0ZFRkM1MEE0NTBGREZDQTU1NEE1NTRGRDU0MjlBQzJCQUMyRDA0MkYxNDQ5MEE0ODAyODdGRTAwMDAzOQorOjIwRjhFMDAwMTAxMDIwMTQ3RjU0NDkzODdGN0M0OTQ0NDk3QzdGNDQxNDdDMTU0NDE2QzQyN0Q0MjQ0QTQ0MDI4M0ZFMDAwMDVECis6MjBGOTAwMDAwOTAwMTBCQzdFMDQ0QUNDN0VCNDRBRkM0QTk0N0VGQzE4QTQxQUJDMUQ4NDJGOTQyODhBNDgwMjg3RkUwMDAwMzMKKzoyMEY5MjAwMDA4NDAxMDIwN0VGRTUyNTA3RUE0NTJENDUyRkM3RTIwMThGQzFBQUMxQ0ZDMkY4NDI4ODY0ODAyODdGRTAwMDBEQgorOjIwRjk0MDAwMTA0MDEwNDAyMEEwMjk5ODRBNDZGNUYwMjExMDQ1RjBGRDEwMDlGNDA5NDgxMTMwMTE1MDIxOENDMTA0MDAwMDNDCis6MjBGOTYwMDA3RkZFNDEyMDQxMTA1RkZDNDIyMDREOTg3MzQ2NENCMDU3RUM0NTIwNDRBMDQ3RTg0NDUwNDUyMDg2MUMwNDA4OUYKKzoyMEY5ODAwMDAwMjA3RTUwMTFBODFDNTYyNEE4NTQ1MDBCMjAzNkMwQzkzMDNGRUVDOTIwMEZFMDA4OTAwQTYwMEMzMDA4MTA2OQorOjIwRjlBMDAwM0MyMDI0MzhGRkZFMTEyNDFERjgwNTM4MUQ0QTA2Q0UxOTMwRUZFRTA5MjAwRkUwMDg5MDBBNjAwQzMwMDgxMDNDCis6MjBGOUMwMDAwMTAwRkZGRTE5MjAyM0ZDNzkyMDE1RkM3OTIwMTFGRUUzQzAwRDM4M0ZGNkM5MTAwRkY4MDg1MDBFMzAwODA4REMKKzoyMEY5RTAwMDAwMDAzRjA0MjAxODNFRTAyMDAwMjAwNDNFMTgyMEUwMjAwMEZGODIxMDA0MjIwODdGMTAwMTYwMDM4MDAwMDA4MgorOjIwRkEwMDAwM0UwODIwMzAzQ0M0MjAwODNFMzAyMEM0RkYwODI0MzA3RUMwMDAwMDdGRkUwNDQwMDg0MjA4NDIxMDNFMDAwMDlBCis6MjBGQTIwMDAzRTA4MjAzMDNDQzQyMDE4M0NFMjIwMENGRTMwMjVDMDdGRjAwMTAwMUZGMDAxMDAzRkZBMDEwMjAwRkUwMDAwRTEKKzoyMEZBNDAwMDNFMDgyMDMwM0NDNDIwMThGRjYyMjQwQzdGNzAwMTAwMUZGODExMDgxRkY4MTEwODdGRkUxMDA4MTAyODEwMTAwQQorOjIwRkE2MDAwM0UwNDI4MTgzNDY0MjgwOEZGMzAyNEM0N0UxODAwRTAzRkY4MDYwODBDMjgzMDEwMUZGODEwMDgxRkY4MTAwODk4Cis6MjBGQTgwMDAzRTA4MjgzMDM0QzQyODE4RkY2NDE0MTgzRUUwMDEwMDdGRkUwMTAwMUZGODAwMDAxRkY4MTAwODFGRjgwMDAwMDcKKzoyMEZBQTAwMDNFMDgyODMwMjRDNDMwMTgyOEUwRkYwQzI0MzA3REMwMDQ0MDA0NDAyNzU4MjQ2MDI0NDQyNzQ0NzgzQzAwMDBDMgorOjIwRkFDMDAwM0UwODI4MzAzNEM0MjgxOEZGNjQyNDE4N0VFMDA4NDAwODQwMUZGQzMwQzBEMTYwMTI1ODFDNEUxMDQ0MTA0MDBGCis6MjBGQUUwMDAzRTA4MjgzMDM0QzQyODE4RkVFMjI0MEM3RDcwMDk0MDNGRjAwMjAwN0ZGRTA0NDAxRkYwNjg0QzA4OTAwN0YwQTYKKzoyMEZCMDAwMDNFMDQyODE4MzRFNDI4MThGRUU0MjQxODdERTAwMDIwM0UyMDA4QUM3RTcwMUMyMDJBNTAyODQ4NDg4RTA5MDQ2NworOjIwRkIyMDAwM0YwQzM0NzAyQTBDRkY3MDIyMEM3RjcwMDA4MDNGRkUyMDA0MEZFMDA4MDAwRkY4MDgyMEZGRkUwODIwMTAxMEM4Cis6MjBGQjQwMDAzRTIwMjhEMDM0MjQyOEM4RkUzMDI0QzA3RkYwMTI5MDFGRjAwMDAwN0ZGQzA4MjAwRkUwMTg5MDZDNjAwODFDQUIKKzoyMEZCNjAwMDNDMzgyOUMwMzQxQzI4RTBGRTBFMjk3MDdFNDAwOTIwM0ZGODIyODgzRkY4MjU1MDJCMTAyNTRBMzFBNjIxMDIxMworOjIwRkI4MDAwMDEwMDdGRkU0ODIwNDgyMDdFRkM0QzcwNUFBODY4QUU0OTI0NDIwMDQyODA0NDgwNDkxMDkyMDg4N0ZDMDAwODE2Cis6MjBGQkEwMDAwMTAwM0ZGRTI0MTAzRjdDMjYzODJENTYzNDE0MjBFMDJGMDAyMTAwMkZGMDIxMDAzRkY4NDEwMjQxMDI4MEZFMjQKKzoyMEZCQzAwMDAwODAzRkZFMjQyMDI0MjAzRkZDMkU3MDM1QTgyNTI0MjIyMDI3QzAyMTEwMjdGODIwOTA0NEEwNEE5MDgxMDA3OQorOjIwRkJFMDAwMDEwMDNGRkUyMjQwM0ZGODIyNDgzRkY4Mjg0MDJGN0EyODQyMkMzRTI3RTAyNDIwNDQyMjQ4MjI5MDFFMDAwMERGCis6MjBGQzAwMDAwMTAwM0ZGQzI0NDAzRkY4MjQ0ODNGRjgyODQwMkY3QTI4NDIyRTNFMjdGMDIwODA0RkZDNDFDMDg2QjAxODhDQTYKKzoyMEZDMjAwMDAxMDAzRkZFMjI0MDNGRkMyMjQ0M0ZGQzI4NDAyRjdDMkE0MjJEM0UyMDgwMkZGQzIwODA0N0Y4NDA4MDlGRkU1NworOjIwRkM0MDAwMDEwMDNGRkUyMjQwM0ZGQzIyNDQzRkZDMjg0MDJGNzgyQTQyMkMzRTIyOTAyMUEwMkZGQzQxQTA0NjkwOTg4Q0NBCis6MjBGQzYwMDAxMDQ4MDg0ODdGRkU1NDQ4N0Y0ODU1Nzg1NTQ4N0Y3ODU0NDg1NDQ4NUVGRTU1MDA1RTQ4OTQ4NjgxMDIwMDAwNkYKKzoyMEZDODAwMDAxMDAzRkZDMjQ0MDNGRjgyNDQ4M0ZGODI4NDAyRTdBNDg0MjREM0U4MkMwMEZGMDcwOEUwN0YwMDJBMDFGRkVEMAorOjIwRkNBMDAwMDEwMDNGRkMyNDQwM0ZGODI0NDgzRkY4MjQ0NDI2M0MzRjA4MzU3RTNCMDg1NTQ4N0YyODQ1Mjg4OTA4MzExODM4Cis6MjBGQ0MwMDAxMDIwMDhBNDdGNjg1NEZFN0Y3MDU1QUM3RjIwNDg4ODQ4RkU3RjI4NDk0ODRBRkU1Qzg4QTkwODgyMDgwMDA4QzMKKzoyMEZDRTAwMDA4QTAxMDkwMzdGQ0QwNDAxMDI0MUZGQzE5MjgxNTQ4MUZGODAxMDAzRkY4MDEwMDdGRkUwMDAwMjQ4ODQyNDQ4RAorOjIwRkQwMDAwMDAwMDdFMjA1MjIwNTZBNDdBQTQ1MkE0N0VBNDEwRkMxMDIwN0NBNDEwQTQxRUE0RTBBNDZBQTQ5NUZDMDAwMEFFCis6MjBGRDIwMDAwMDEwRkMxMDk0OTBEQzkwQjUzRUZENTIxMzkyRkM5MjExMTIxRDUyRTNFMjA0MjIyQTQyQTg5NDgxMDgwMDAwRjQKKzoyMEZENDAwMDAwMTA3RTEwNEExMDZFRkU1QTEwN0UxMDA4RkM3RTAwMDgwMDBFRkNGMDg0MkE4NDU1ODQ1NDg0ODBGQzAwMDA2NAorOjIwRkQ2MDAwRkUyMDkyM0NENjQ0QkFDODkyMzBGRTIwMTA1MEZFOTAxMDNFMUU0MkUwQTQyQTI4NTUxMDU0MjA4MEMwMDMwMDhECis6MjBGRDgwMDAwMDIwN0UyMDUyNDg3NkZDNUEwNDdFNTAxMDhDN0QwNDEwODAxQ0ZDRTE4ODA0NTA2QTIwNTREMDkzMEUwMDA0OTgKKzoyMEZEQTAwMDAwMjA3RTIwNTJGQzc2MjA1QkZFN0UwNDEwQTA3RDYwMTBBMDFDMjBFM0ZFMDA1MEFBNDhBQTg0ODEwNDAwMDA3NworOjIwRkRDMDAwM0U0MDA4N0M3RTU0MUM5NDJBMjQ0ODRDMUZGODE5MjgxNTQ4MUZGODAxMDAzRkY4MDEwMDdGRkUyNDQ0NDIyMjZGCis6MjBGREUwMDAwMDQwN0UyMDUzRkU3NjAwNUEwMDdFRjgxMDg4N0U4ODEwRjgxRTIwRTBBMDAwQThBQjI0QUEyNDgwQTAwMDQwODUKKzoyMEZFMDAwMDAwMjA3RTIwNTI0ODc2RkM1QTI0N0ZGRTEwNTA3RTg4MTEyNjFFNDBFMTkwMDQ2NEFCOThBODYwODc4MDAwMDBGNworOjIwRkUyMDAwMDAyMDdFMTA1M0ZDNzY4ODVBNDg3RTUwMTFGRTdFMDAxMEZDMTA4NDFFRkNFMDg0MDA4NEFBODRBQUZDMDA4NEQwCis6MjBGRTQwMDAxMDEwNkUxMDQyNDg2RTQ4NDI4NjdFODQwMTAwNTJGQzdBMjQ1NjI0NUEyNDc2NDQ1MzQ0Nzk5NDUxMDgwMDAwNUUKKzoyMEZFNjAwMDIwMTBDRTEwODIxMEVFMTA4MkZFRkU5MjAwOTI5MjkyREFGRUI2OTJEQTkyQjY5MjkyOTJEOTkyOTFGRTAwMDAyQworOjIwRkU4MDAwMjAwMENFRkM4MjIwRUUyMDgyN0NGRTI0MDAyNDkyRkVEQTAwQjY3Q0RBNDRCNjQ0OTM0NEQ5NDQ5MTdDMDAwMENGCis6MjBGRUEwMDAyMDdDQ0U0NDgyN0NFRTQ0ODI3Q0ZFMTAwMEZFOTJBMkRBMjBCNkZFREE0OEI2NDg5MzMwRDkyQzkxNDQwMDAwQkIKKzoyMEZFQzAwMDIwMDBDRTM4ODNDMEVGNDg4MkIwRkUyMDAwNDg5MkYwREEyOEI2RkNEQTIwQjZGRTkzMzBEOTRFOTE4NDAwMDAwNworOjIwRkVFMDAwMDg0MDEwNDAzRTQwMkE0MDM3RjgyQTQ4N0Y0ODQ5NDg3RjQ4NDk0ODdGNDgwMDQ4RkY0QTI0OEEyNDhBNDUwNjMyCis6MjBGRjAwMDAwODAwM0UwMDJBN0MzNjEwMkExMDI2MTA3RjEwNDk3RTdGMTA0OTEwN0YxMDAwMTBGRjkwMjIxMDIyMTA0MjEwMUQKKzoyMEZGMjAwMDIwMjA3QzIwNTVGRTZDMjA1NDcwRkVBRTkzMjRGRUY4OTI4OEZFRjgwMDg4RkU4ODI0RjgyNDAwMjVGRTQ0MDAyNAorOjIwRkY0MDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMEExCis6MjBGRjYwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwODEKKzoyMEZGODAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjA2MQorOjIwRkZBMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDQxCis6MjBGRkMwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjEKKzoyMEZGRTAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAwMQorOjAyMDAwMDA0MDAwNEY2Cis6MjAwMDAwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwRTAKKzoyMDAwMjAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjBDMAorOjIwMDA0MDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMEEwCis6MjAwMDYwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwODAKKzoyMDAwODAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjA2MAorOjIwMDBBMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDQwCis6MjAwMEMwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAKKzoyMDAwRTAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAwMAorOjIwMDEwMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMERGCis6MjAwMTIwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwQkYKKzoyMDAxNDAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjA5RgorOjIwMDE2MDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDdGCis6MjAwMTgwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwNUYKKzoyMDAxQTAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAzRgorOjIwMDFDMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDFGCis6MjAwMUUwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwRkYKKzoyMDAyMDAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjBERQorOjIwMDIyMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMEJFCis6MjAwMjQwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwOUUKKzoyMDAyNjAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjA3RQorOjIwMDI4MDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDVFCis6MjAwMkEwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwM0UKKzoyMDAyQzAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAxRQorOjIwMDJFMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMEZFCis6MjAwMzAwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwREQKKzoyMDAzMjAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjBCRAorOjIwMDM0MDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDlECis6MjAwMzYwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwN0QKKzoyMDAzODAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjA1RAorOjIwMDNBMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDNECis6MjAwM0MwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMUQKKzoyMDAzRTAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjBGRAorOjIwMDQwMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMERDCis6MjAwNDIwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwQkMKKzoyMDA0NDAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjA5QworOjIwMDQ2MDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDdDCis6MjAwNDgwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwNUMKKzoyMDA0QTAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAzQworOjIwMDRDMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDFDCis6MjAwNEUwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwRkMKKzoyMDA1MDAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjBEQgorOjIwMDUyMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMEJCCis6MjAwNTQwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwOUIKKzoyMDA1NjAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjA3QgorOjIwMDU4MDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDVCCis6MjAwNUEwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwM0IKKzoyMDA1QzAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAxQgorOjIwMDVFMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMEZCCis6MjAwNjAwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwREEKKzoyMDA2MjAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjBCQQorOjIwMDY0MDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDlBCis6MjAwNjYwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwN0EKKzoyMDA2ODAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjA1QQorOjIwMDZBMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDNBCis6MjAwNkMwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMUEKKzoyMDA2RTAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjBGQQorOjIwMDcwMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMEQ5Cis6MjAwNzIwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwQjkKKzoyMDA3NDAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjA5OQorOjIwMDc2MDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDc5Cis6MjAwNzgwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwNTkKKzoyMDA3QTAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAzOQorOjIwMDdDMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDE5Cis6MjAwN0UwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwRjkKKzoyMDA4MDAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjBEOAorOjIwMDgyMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMEI4Cis6MjAwODQwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwOTgKKzoyMDA4NjAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjA3OAorOjIwMDg4MDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDU4Cis6MjAwOEEwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMzgKKzoyMDA4QzAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAxOAorOjIwMDhFMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMEY4Cis6MjAwOTAwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwRDcKKzoyMDA5MjAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjBCNworOjIwMDk0MDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDk3Cis6MjAwOTYwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwNzcKKzoyMDA5ODAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjA1NworOjIwMDlBMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDM3Cis6MjAwOUMwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMTcKKzoyMDA5RTAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjBGNworOjIwMEEwMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMEQ2Cis6MjAwQTIwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwQjYKKzoyMDBBNDAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjA5NgorOjIwMEE2MDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDc2Cis6MjAwQTgwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwNTYKKzoyMDBBQTAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAzNgorOjIwMEFDMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDE2Cis6MjAwQUUwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwRjYKKzoyMDBCMDAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjBENQorOjIwMEIyMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMEI1Cis6MjAwQjQwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwOTUKKzoyMDBCNjAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjA3NQorOjIwMEI4MDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDU1Cis6MjAwQkEwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMzUKKzoyMDBCQzAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAxNQorOjIwMEJFMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMEY1Cis6MjAwQzAwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwRDQKKzoyMDBDMjAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjBCNAorOjIwMEM0MDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDk0Cis6MjAwQzYwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwNzQKKzoyMDBDODAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjA1NAorOjIwMENBMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDM0Cis6MjAwQ0MwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMTQKKzoyMDBDRTAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjBGNAorOjIwMEQwMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMEQzCis6MjAwRDIwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwQjMKKzoyMDBENDAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjA5MworOjIwMEQ2MDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDczCis6MjAwRDgwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwNTMKKzoyMDBEQTAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAzMworOjIwMERDMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDEzCis6MjAwREUwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwRjMKKzoyMDBFMDAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjBEMgorOjIwMEUyMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMEIyCis6MjAwRTQwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwOTIKKzoyMDBFNjAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjA3MgorOjIwMEU4MDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDUyCis6MjAwRUEwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMzIKKzoyMDBFQzAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAxMgorOjIwMEVFMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMEYyCis6MjAwRjAwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwRDEKKzoyMDBGMjAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjBCMQorOjIwMEY0MDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDkxCis6MjAwRjYwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwNzEKKzoyMDBGODAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjA1MQorOjIwMEZBMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDMxCis6MjAwRkMwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMTEKKzoyMDBGRTAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjBGMQorOjIwMTAwMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMEQwCis6MjAxMDIwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwQjAKKzoyMDEwNDAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjA5MAorOjIwMTA2MDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDcwCis6MjAxMDgwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwNTAKKzoyMDEwQTAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAzMAorOjIwMTBDMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDEwCis6MjAxMEUwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwRjAKKzoyMDExMDAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjBDRgorOjIwMTEyMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMEFGCis6MjAxMTQwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwOEYKKzoyMDExNjAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjA2RgorOjIwMTE4MDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDRGCis6MjAxMUEwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMkYKKzoyMDExQzAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAwRgorOjIwMTFFMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMEVGCis6MjAxMjAwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwQ0UKKzoyMDEyMjAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjBBRQorOjIwMTI0MDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDhFCis6MjAxMjYwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwNkUKKzoyMDEyODAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjA0RQorOjIwMTJBMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDJFCis6MjAxMkMwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMEUKKzoyMDEyRTAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjBFRQorOjIwMTMwMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMENECis6MjAxMzIwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwQUQKKzoyMDEzNDAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjA4RAorOjIwMTM2MDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDZECis6MjAxMzgwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwNEQKKzoyMDEzQTAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyRAorOjIwMTNDMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDBECis6MjAxM0UwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwRUQKKzoyMDE0MDAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjBDQworOjIwMTQyMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMEFDCis6MjAxNDQwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwOEMKKzoyMDE0NjAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjA2QworOjIwMTQ4MDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDRDCis6MjAxNEEwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMkMKKzoyMDE0QzAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAwQworOjIwMTRFMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMEVDCis6MjAxNTAwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwQ0IKKzoyMDE1MjAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjBBQgorOjIwMTU0MDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDhCCis6MjAxNTYwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwNkIKKzoyMDE1ODAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjA0QgorOjIwMTVBMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDJCCis6MjAxNUMwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMEIKKzoyMDE1RTAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjBFQgorOjIwMTYwMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMENBCis6MjAxNjIwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwQUEKKzoyMDE2NDAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjA4QQorOjIwMTY2MDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDZBCis6MjAxNjgwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwNEEKKzoyMDE2QTAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyQQorOjIwMTZDMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDBBCis6MjAxNkUwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwRUEKKzoyMDE3MDAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjBDOQorOjIwMTcyMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMEE5Cis6MjAxNzQwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwODkKKzoyMDE3NjAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjA2OQorOjIwMTc4MDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDQ5Cis6MjAxN0EwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjkKKzoyMDE3QzAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAwOQorOjIwMTdFMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMEU5Cis6MjAxODAwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwQzgKKzoyMDE4MjAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjBBOAorOjIwMTg0MDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDg4Cis6MjAxODYwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwNjgKKzoyMDE4ODAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjA0OAorOjIwMThBMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDI4Cis6MjAxOEMwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMDgKKzoyMDE4RTAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjBFOAorOjIwMTkwMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMEM3Cis6MjAxOTIwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwQTcKKzoyMDE5NDAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjA4NworOjIwMTk2MDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDY3Cis6MjAxOTgwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwNDcKKzoyMDE5QTAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyNworOjIwMTlDMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDA3Cis6MjAxOUUwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwRTcKKzoyMDFBMDAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjBDNgorOjIwMUEyMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMEE2Cis6MjAxQTQwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwODYKKzoyMDFBNjAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjA2NgorOjIwMUE4MDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDQ2Cis6MjAxQUEwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjYKKzoyMDFBQzAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAwNgorOjIwMUFFMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMEU2Cis6MjAxQjAwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwQzUKKzoyMDFCMjAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjBBNQorOjIwMUI0MDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDg1Cis6MjAxQjYwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwNjUKKzoyMDFCODAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjA0NQorOjIwMUJBMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDI1Cis6MjAxQkMwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMDUKKzoyMDFCRTAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjBFNQorOjIwMUMwMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMEM0Cis6MjAxQzIwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwQTQKKzoyMDFDNDAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjA4NAorOjIwMUM2MDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDY0Cis6MjAxQzgwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwNDQKKzoyMDFDQTAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyNAorOjIwMUNDMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDA0Cis6MjAxQ0UwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwRTQKKzoyMDFEMDAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjBDMworOjIwMUQyMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMEEzCis6MjAxRDQwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwODMKKzoyMDFENjAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjA2MworOjIwMUQ4MDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDQzCis6MjAxREEwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjMKKzoyMDFEQzAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAwMworOjIwMURFMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMEUzCis6MjAxRTAwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwQzIKKzoyMDFFMjAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjBBMgorOjIwMUU0MDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDgyCis6MjAxRTYwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwNjIKKzoyMDFFODAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjA0MgorOjIwMUVBMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIyCis6MjAxRUMwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMDIKKzoyMDFFRTAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjBFMgorOjIwMUYwMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMEMxCis6MjAxRjIwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwQTEKKzoyMDFGNDAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjA4MQorOjIwMUY2MDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDYxCis6MjAxRjgwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwNDEKKzoyMDFGQTAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMQorOjIwMUZDMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDAxCis6MjAxRkUwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwRTEKKzoyMDIwMDAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjBDMAorOjIwMjAyMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMEEwCis6MjAyMDQwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwODAKKzoyMDIwNjAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjA2MAorOjIwMjA4MDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDQwCis6MjAyMEEwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAKKzoyMDIwQzAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAwMAorOjIwMjBFMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMEUwCis6MjAyMTAwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwQkYKKzoyMDIxMjAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjA5RgorOjIwMjE0MDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDdGCis6MjAyMTYwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwNUYKKzoyMDIxODAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAzRgorOjIwMjFBMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDFGCis6MjAyMUMwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwRkYKKzoyMDIxRTAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjBERgorOjIwMjIwMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMEJFCis6MjAyMjIwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwOUUKKzoyMDIyNDAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjA3RQorOjIwMjI2MDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDVFCis6MjAyMjgwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwM0UKKzoyMDIyQTAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAxRQorOjIwMjJDMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMEZFCis6MjAyMkUwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwREUKKzoyMDIzMDAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjBCRAorOjIwMjMyMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDlECis6MjAyMzQwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwN0QKKzoyMDIzNjAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjA1RAorOjIwMjM4MDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDNECis6MjAyM0EwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMUQKKzoyMDIzQzAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjBGRAorOjIwMjNFMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMERECis6MjAyNDAwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwQkMKKzoyMDI0MjAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjA5QworOjIwMjQ0MDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDdDCis6MjAyNDYwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwNUMKKzoyMDI0ODAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAzQworOjIwMjRBMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDFDCis6MjAyNEMwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwRkMKKzoyMDI0RTAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjBEQworOjIwMjUwMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMEJCCis6MjAyNTIwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwOUIKKzoyMDI1NDAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjA3QgorOjIwMjU2MDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDVCCis6MjAyNTgwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwM0IKKzoyMDI1QTAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAxQgorOjIwMjVDMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMEZCCis6MjAyNUUwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwREIKKzoyMDI2MDAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjBCQQorOjIwMjYyMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDlBCis6MjAyNjQwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwN0EKKzoyMDI2NjAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjA1QQorOjIwMjY4MDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDNBCis6MjAyNkEwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMUEKKzoyMDI2QzAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjBGQQorOjIwMjZFMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMERBCis6MjAyNzAwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwQjkKKzoyMDI3MjAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjA5OQorOjIwMjc0MDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDc5Cis6MjAyNzYwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwNTkKKzoyMDI3ODAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAzOQorOjIwMjdBMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDE5Cis6MjAyN0MwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwRjkKKzoyMDI3RTAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjBEOQorOjIwMjgwMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMEI4Cis6MjAyODIwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwOTgKKzoyMDI4NDAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjA3OAorOjIwMjg2MDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDU4Cis6MjAyODgwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMzgKKzoyMDI4QTAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAxOAorOjIwMjhDMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMEY4Cis6MjAyOEUwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwRDgKKzoyMDI5MDAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjBCNworOjIwMjkyMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDk3Cis6MjAyOTQwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwNzcKKzoyMDI5NjAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjA1NworOjIwMjk4MDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDM3Cis6MjAyOUEwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMTcKKzoyMDI5QzAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjBGNworOjIwMjlFMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMEQ3Cis6MjAyQTAwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwQjYKKzoyMDJBMjAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjA5NgorOjIwMkE0MDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDc2Cis6MjAyQTYwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwNTYKKzoyMDJBODAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAzNgorOjIwMkFBMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDE2Cis6MjAyQUMwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwRjYKKzoyMDJBRTAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjBENgorOjIwMkIwMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMEI1Cis6MjAyQjIwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwOTUKKzoyMDJCNDAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjA3NQorOjIwMkI2MDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDU1Cis6MjAyQjgwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMzUKKzoyMDJCQTAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAxNQorOjIwMkJDMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMEY1Cis6MjAyQkUwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwRDUKKzoyMDJDMDAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjBCNAorOjIwMkMyMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDk0Cis6MjAyQzQwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwNzQKKzoyMDJDNjAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjA1NAorOjIwMkM4MDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDM0Cis6MjAyQ0EwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMTQKKzoyMDJDQzAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjBGNAorOjIwMkNFMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMEQ0Cis6MjAyRDAwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwQjMKKzoyMDJEMjAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjA5MworOjIwMkQ0MDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDczCis6MjAyRDYwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwNTMKKzoyMDJEODAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAzMworOjIwMkRBMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDEzCis6MjAyREMwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwRjMKKzoyMDJERTAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjBEMworOjIwMkUwMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMEIyCis6MjAyRTIwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwOTIKKzoyMDJFNDAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjA3MgorOjIwMkU2MDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDUyCis6MjAyRTgwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMzIKKzoyMDJFQTAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAxMgorOjIwMkVDMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMEYyCis6MjAyRUUwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwRDIKKzoyMDJGMDAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjBCMQorOjIwMkYyMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDkxCis6MjAyRjQwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwNzEKKzoyMDJGNjAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjA1MQorOjIwMkY4MDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDMxCis6MjAyRkEwMDAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMTEKKzoyMDJGQzAwMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjBGMQorOjIwMkZFMDAwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMEQxCis6MjAzMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA3RTgxQTU4MTgxQkQ5OTgxODE3RTAwMDAwMDAwMzQKKzoyMDMwMjAwMDAwMDA3RUZGREJGRkZGQzNFN0ZGRkY3RTAwMDAwMDAwMDAwMDAwMDA2Q0ZFRkVGRUZFN0MzODEwMDAwMDAwMDBFQworOjIwMzA0MDAwMDAwMDAwMDAxMDM4N0NGRTdDMzgxMDAwMDAwMDAwMDAwMDAwMDAxODNDM0NFN0U3RTcxODE4M0MwMDAwMDAwMDM5Cis6MjAzMDYwMDAwMDAwMDAxODNDN0VGRkZGN0UxODE4M0MwMDAwMDAwMDAwMDAwMDAwMDAwMDE4M0MzQzE4MDAwMDAwMDAwMDAwRUUKKzoyMDMwODAwMEZGRkZGRkZGRkZGRkU3QzNDM0U3RkZGRkZGRkZGRkZGMDAwMDAwMDAwMDNDNjY0MjQyNjYzQzAwMDAwMDAwMDAyMAorOjIwMzBBMDAwRkZGRkZGRkZGRkMzOTlCREJEOTlDM0ZGRkZGRkZGRkYwMDAwMUUwRTFBMzI3OENDQ0NDQ0NDNzgwMDAwMDAwMDUwCis6MjAzMEMwMDAwMDAwM0M2NjY2NjY2NjNDMTg3RTE4MTgwMDAwMDAwMDAwMDAzRjMzM0YzMDMwMzAzMDcwRjBFMDAwMDAwMDAwNjkKKzoyMDMwRTAwMDAwMDA3RjYzN0Y2MzYzNjM2MzY3RTdFNkMwMDAwMDAwMDAwMDAwMTgxOERCM0NFNzNDREIxODE4MDAwMDAwMDA3QQorOjIwMzEwMDAwMDA4MEMwRTBGMEY4RkVGOEYwRTBDMDgwMDAwMDAwMDAwMDAyMDYwRTFFM0VGRTNFMUUwRTA2MDIwMDAwMDAwMEJGCis6MjAzMTIwMDAwMDAwMTgzQzdFMTgxODE4N0UzQzE4MDAwMDAwMDAwMDAwMDA2NjY2NjY2NjY2NjY2NjAwNjY2NjAwMDAwMDAwMEQKKzoyMDMxNDAwMDAwMDA3RkRCREJEQjdCMUIxQjFCMUIxQjAwMDAwMDAwMDA3Q0M2NjAzODZDQzZDNjZDMzgwQ0M2N0MwMDAwMDA5OQorOjIwMzE2MDAwMDAwMDAwMDAwMDAwMDAwMEZFRkVGRUZFMDAwMDAwMDAwMDAwMTgzQzdFMTgxODE4N0UzQzE4N0UwMDAwMDAwMEVECis6MjAzMTgwMDAwMDAwMTgzQzdFMTgxODE4MTgxODE4MTgwMDAwMDAwMDAwMDAxODE4MTgxODE4MTgxODdFM0MxODAwMDAwMDAwM0IKKzoyMDMxQTAwMDAwMDAwMDAwMDAxODBDRkUwQzE4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDMwNjBGRTYwMzAwMDAwMDAwMDAwMDBBQgorOjIwMzFDMDAwMDAwMDAwMDAwMDAwQzBDMEMwRkUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjg2Q0ZFNkMyODAwMDAwMDAwMDAwMDhCCis6MjAzMUUwMDAwMDAwMDAwMDEwMzgzODdDN0NGRUZFMDAwMDAwMDAwMDAwMDAwMDAwRkVGRTdDN0MzODM4MTAwMDAwMDAwMDAwRTcKKzoyMDMyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDE4M0MzQzNDMTgxODE4MDAxODE4MDAwMDAwMDA2QQorOjIwMzIyMDAwMDA2NjY2NjYyNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2QzZDRkU2QzZDNkNGRTZDNkMwMDAwMDAwMDQ4Cis6MjAzMjQwMDAxODE4N0NDNkMyQzA3QzA2MDY4NkM2N0MxODE4MDAwMDAwMDAwMDAwQzJDNjBDMTgzMDYwQzY4NjAwMDAwMDAwNzIKKzoyMDMyNjAwMDAwMDAzODZDNkMzODc2RENDQ0NDQ0M3NjAwMDAwMDAwMDAzMDMwMzA2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBFQQorOjIwMzI4MDAwMDAwMDBDMTgzMDMwMzAzMDMwMzAxODBDMDAwMDAwMDAwMDAwMzAxODBDMEMwQzBDMEMwQzE4MzAwMDAwMDAwMEVFCis6MjAzMkEwMDAwMDAwMDAwMDAwNjYzQ0ZGM0M2NjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxODE4N0UxODE4MDAwMDAwMDAwMDAwRUQKKzoyMDMyQzAwMDAwMDAwMDAwMDAwMDAwMDAwMDE4MTgxODMwMDAwMDAwMDAwMDAwMDAwMDAwMDBGRTAwMDAwMDAwMDAwMDAwMDA3OAorOjIwMzJFMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxODE4MDAwMDAwMDAwMDAwMDAwMDAyMDYwQzE4MzA2MEMwODAwMDAwMDAwMEEyCis6MjAzMzAwMDAwMDAwMzg2Q0M2QzZENkQ2QzZDNjZDMzgwMDAwMDAwMDAwMDAxODM4NzgxODE4MTgxODE4MTg3RTAwMDAwMDAwQ0IKKzoyMDMzMjAwMDAwMDA3Q0M2MDYwQzE4MzA2MEMwQzZGRTAwMDAwMDAwMDAwMDdDQzYwNjA2M0MwNjA2MDZDNjdDMDAwMDAwMDAyRgorOjIwMzM0MDAwMDAwMDBDMUMzQzZDQ0NGRTBDMEMwQzFFMDAwMDAwMDAwMDAwRkVDMEMwQzBGQzA2MDYwNkM2N0MwMDAwMDAwMDAzCis6MjAzMzYwMDAwMDAwMzg2MEMwQzBGQ0M2QzZDNkM2N0MwMDAwMDAwMDAwMDBGRUM2MDYwNjBDMTgzMDMwMzAzMDAwMDAwMDAwRjEKKzoyMDMzODAwMDAwMDA3Q0M2QzZDNjdDQzZDNkM2QzY3QzAwMDAwMDAwMDAwMDdDQzZDNkM2N0UwNjA2MDYwQzc4MDAwMDAwMDA2RAorOjIwMzNBMDAwMDAwMDAwMDAxODE4MDAwMDAwMTgxODAwMDAwMDAwMDAwMDAwMDAwMDE4MTgwMDAwMDAxODE4MzAwMDAwMDAwMDFECis6MjAzM0MwMDAwMDAwMDAwNjBDMTgzMDYwMzAxODBDMDYwMDAwMDAwMDAwMDAwMDAwMDA3RTAwMDA3RTAwMDAwMDAwMDAwMDAwREQKKzoyMDMzRTAwMDAwMDAwMDYwMzAxODBDMDYwQzE4MzA2MDAwMDAwMDAwMDAwMDdDQzZDNjBDMTgxODE4MDAxODE4MDAwMDAwMDBEMworOjIwMzQwMDAwMDAwMDAwN0NDNkM2REVERURFRENDMDdDMDAwMDAwMDAwMDAwMTAzODZDQzZDNkZFQzZDNkM2QzYwMDAwMDAwMDlDCis6MjAzNDIwMDAwMDAwRkM2NjY2NjY3QzY2NjY2NjY2RkMwMDAwMDAwMDAwMDAzQzY2QzJDMEMwQzBDMEMyNjYzQzAwMDAwMDAwODYKKzoyMDM0NDAwMDAwMDBGODZDNjY2NjY2NjY2NjY2NkNGODAwMDAwMDAwMDAwMEZFNjY2MjY4Nzg2ODYwNjI2NkZFMDAwMDAwMDAwQworOjIwMzQ2MDAwMDAwMEZFNjY2MjY4Nzg2ODYwNjA2MEYwMDAwMDAwMDAwMDAwM0M2NkMyQzBDMERFQzZDNjY2M0EwMDAwMDAwMDQwCis6MjAzNDgwMDAwMDAwQzZDNkM2QzZGRUM2QzZDNkM2QzYwMDAwMDAwMDAwMDAzQzE4MTgxODE4MTgxODE4MTgzQzAwMDAwMDAwMDAKKzoyMDM0QTAwMDAwMDAxRTBDMEMwQzBDMENDQ0NDQ0M3ODAwMDAwMDAwMDAwMEU2NjY2NjZDNzg3ODZDNjY2NkU2MDAwMDAwMDBBQQorOjIwMzRDMDAwMDAwMEYwNjA2MDYwNjA2MDYwNjI2NkZFMDAwMDAwMDAwMDAwQzZFRUZFRkVENkM2QzZDNkM2QzYwMDAwMDAwMDkyCis6MjAzNEUwMDAwMDAwQzZFNkY2RkVERUNFQzZDNkM2QzYwMDAwMDAwMDAwMDA3Q0M2QzZDNkM2QzZDNkM2QzY3QzAwMDAwMDAwNDAKKzoyMDM1MDAwMDAwMDBGQzY2NjY2NjdDNjA2MDYwNjBGMDAwMDAwMDAwMDAwMDdDQzZDNkM2QzZDNkM2RDZERTdDMEMwRTAwMDAyNworOjIwMzUyMDAwMDAwMEZDNjY2NjY2N0M2QzY2NjY2NkU2MDAwMDAwMDAwMDAwN0NDNkM2NjAzODBDMDZDNkM2N0MwMDAwMDAwMEEzCis6MjAzNTQwMDAwMDAwN0U3RTVBMTgxODE4MTgxODE4M0MwMDAwMDAwMDAwMDBDNkM2QzZDNkM2QzZDNkM2QzY3QzAwMDAwMDAwRDcKKzoyMDM1NjAwMDAwMDBDNkM2QzZDNkM2QzZDNjZDMzgxMDAwMDAwMDAwMDAwMEM2QzZDNkM2RDZENkQ2RkVFRTZDMDAwMDAwMDAzQgorOjIwMzU4MDAwMDAwMEM2QzY2QzdDMzgzODdDNkNDNkM2MDAwMDAwMDAwMDAwNjY2NjY2NjYzQzE4MTgxODE4M0MwMDAwMDAwMDYzCis6MjAzNUEwMDAwMDAwRkVDNjg2MEMxODMwNjBDMkM2RkUwMDAwMDAwMDAwMDAzQzMwMzAzMDMwMzAzMDMwMzAzQzAwMDAwMDAwOEYKKzoyMDM1QzAwMDAwMDAwMDgwQzBFMDcwMzgxQzBFMDYwMjAwMDAwMDAwMDAwMDNDMEMwQzBDMEMwQzBDMEMwQzNDMDAwMDAwMDAxOQorOjIwMzVFMDAwMTAzODZDQzYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEZGMDAwMDUyCis6MjAzNjAwMDAzMDMwMTgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA3ODBDN0NDQ0NDQ0M3NjAwMDAwMDAwNTgKKzoyMDM2MjAwMDAwMDBFMDYwNjA3ODZDNjY2NjY2NjY3QzAwMDAwMDAwMDAwMDAwMDAwMDdDQzZDMEMwQzBDNjdDMDAwMDAwMDAyRQorOjIwMzY0MDAwMDAwMDFDMEMwQzNDNkNDQ0NDQ0NDQzc2MDAwMDAwMDAwMDAwMDAwMDAwN0NDNkZFQzBDMEM2N0MwMDAwMDAwMEU2Cis6MjAzNjYwMDAwMDAwMzg2QzY0NjBGMDYwNjA2MDYwRjAwMDAwMDAwMDAwMDAwMDAwMDA3NkNDQ0NDQ0NDQ0M3QzBDQ0M3ODAwNDQKKzoyMDM2ODAwMDAwMDBFMDYwNjA2Qzc2NjY2NjY2NjZFNjAwMDAwMDAwMDAwMDE4MTgwMDM4MTgxODE4MTgxODNDMDAwMDAwMDAwRQorOjIwMzZBMDAwMDAwMDA2MDYwMDBFMDYwNjA2MDYwNjA2NjY2NjNDMDAwMDAwRTA2MDYwNjY2Qzc4Nzg2QzY2RTYwMDAwMDAwMEFBCis6MjAzNkMwMDAwMDAwMzgxODE4MTgxODE4MTgxODE4M0MwMDAwMDAwMDAwMDAwMDAwMDBFQ0ZFRDZENkQ2RDZDNjAwMDAwMDAwQUUKKzoyMDM2RTAwMDAwMDAwMDAwMDBEQzY2NjY2NjY2NjY2NjAwMDAwMDAwMDAwMDAwMDAwMDdDQzZDNkM2QzZDNjdDMDAwMDAwMDBCNAorOjIwMzcwMDAwMDAwMDAwMDAwMERDNjY2NjY2NjY2NjdDNjA2MEYwMDAwMDAwMDAwMDAwNzZDQ0NDQ0NDQ0NDN0MwQzBDMUUwMDdGCis6MjAzNzIwMDAwMDAwMDAwMDAwREM3NjY2NjA2MDYwRjAwMDAwMDAwMDAwMDAwMDAwMDA3Q0M2NjAzODBDQzY3QzAwMDAwMDAwOTkKKzoyMDM3NDAwMDAwMDAxMDMwMzBGQzMwMzAzMDMwMzYxQzAwMDAwMDAwMDAwMDAwMDAwMENDQ0NDQ0NDQ0NDQzc2MDAwMDAwMDBBRAorOjIwMzc2MDAwMDAwMDAwMDAwMDY2NjY2NjY2NjYzQzE4MDAwMDAwMDAwMDAwMDAwMDAwQzZDNkQ2RDZENkZFNkMwMDAwMDAwMDdGCis6MjAzNzgwMDAwMDAwMDAwMDAwQzY2QzM4MzgzODZDQzYwMDAwMDAwMDAwMDAwMDAwMDBDNkM2QzZDNkM2QzY3RTA2MENGODAwRjEKKzoyMDM3QTAwMDAwMDAwMDAwMDBGRUNDMTgzMDYwQzZGRTAwMDAwMDAwMDAwMDBFMTgxODE4NzAxODE4MTgxODBFMDAwMDAwMDA5RgorOjIwMzdDMDAwMDAwMDE4MTgxODE4MDAxODE4MTgxODE4MDAwMDAwMDAwMDAwNzAxODE4MTgwRTE4MTgxODE4NzAwMDAwMDAwMDdCCis6MjAzN0UwMDAwMDAwNzZEQzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAzODZDQzZDNkM2RkUwMDAwMDAwMDAwNzMKKzoyMDM4MDAwMDAwMDAzQzY2QzJDMEMwQzBDMjY2M0MwQzA2N0MwMDAwMDAwMENDMDAwMENDQ0NDQ0NDQ0NDQzc2MDAwMDAwMDAwOAorOjIwMzgyMDAwMDAwQzE4MzAwMDdDQzZGRUMwQzBDNjdDMDAwMDAwMDAwMDEwMzg2QzAwNzgwQzdDQ0NDQ0NDNzYwMDAwMDAwMEE0Cis6MjAzODQwMDAwMDAwQ0MwMDAwNzgwQzdDQ0NDQ0NDNzYwMDAwMDAwMDAwNjAzMDE4MDA3ODBDN0NDQ0NDQ0M3NjAwMDAwMDAwNDAKKzoyMDM4NjAwMDAwMzg2QzM4MDA3ODBDN0NDQ0NDQ0M3NjAwMDAwMDAwMDAwMDAwMDAzQzY2NjA2MDY2M0MwQzA2M0MwMDAwMDA0MAorOjIwMzg4MDAwMDAxMDM4NkMwMDdDQzZGRUMwQzBDNjdDMDAwMDAwMDAwMDAwQzYwMDAwN0NDNkZFQzBDMEM2N0MwMDAwMDAwMEFBCis6MjAzOEEwMDAwMDYwMzAxODAwN0NDNkZFQzBDMEM2N0MwMDAwMDAwMDAwMDA2NjAwMDAzODE4MTgxODE4MTgzQzAwMDAwMDAwMEMKKzoyMDM4QzAwMDAwMTgzQzY2MDAzODE4MTgxODE4MTgzQzAwMDAwMDAwMDA2MDMwMTgwMDM4MTgxODE4MTgxODNDMDAwMDAwMDBBRQorOjIwMzhFMDAwMDBDNjAwMTAzODZDQzZDNkZFQzZDNkM2MDAwMDAwMDAzODZDMzgwMDM4NkNDNkM2RkVDNkM2QzYwMDAwMDAwMDE2Cis6MjAzOTAwMDAxODMwNjAwMEZFNjY2MDdDNjA2MDY2RkUwMDAwMDAwMDAwMDAwMDAwMDBDQzc2MzY3RUQ4RDg2RTAwMDAwMDAwODcKKzoyMDM5MjAwMDAwMDAzRTZDQ0NDQ0ZFQ0NDQ0NDQ0NDRTAwMDAwMDAwMDAxMDM4NkMwMDdDQzZDNkM2QzZDNjdDMDAwMDAwMDBCRgorOjIwMzk0MDAwMDAwMEM2MDAwMDdDQzZDNkM2QzZDNjdDMDAwMDAwMDAwMDYwMzAxODAwN0NDNkM2QzZDNkM2N0MwMDAwMDAwMDRECis6MjAzOTYwMDAwMDMwNzhDQzAwQ0NDQ0NDQ0NDQ0NDNzYwMDAwMDAwMDAwNjAzMDE4MDBDQ0NDQ0NDQ0NDQ0M3NjAwMDAwMDAwQUYKKzoyMDM5ODAwMDAwMDBDNjAwMDBDNkM2QzZDNkM2QzY3RTA2MEM3ODAwMDBDNjAwN0NDNkM2QzZDNkM2QzZDNjdDMDAwMDAwMDA4RAorOjIwMzlBMDAwMDBDNjAwQzZDNkM2QzZDNkM2QzZDNjdDMDAwMDAwMDAwMDE4MTgzQzY2NjA2MDYwNjYzQzE4MTgwMDAwMDAwMEQxCis6MjAzOUMwMDAwMDM4NkM2NDYwRjA2MDYwNjA2MEU2RkMwMDAwMDAwMDAwMDA2NjY2M0MxODdFMTg3RTE4MTgxODAwMDAwMDAwQjEKKzoyMDM5RTAwMDAwRjhDQ0NDRjhDNENDREVDQ0NDQ0NDNjAwMDAwMDAwMDAwRTFCMTgxODE4N0UxODE4MTgxODE4RDg3MDAwMDBGOAorOjIwM0EwMDAwMDAxODMwNjAwMDc4MEM3Q0NDQ0NDQzc2MDAwMDAwMDAwMDBDMTgzMDAwMzgxODE4MTgxODE4M0MwMDAwMDAwMEU0Cis6MjAzQTIwMDAwMDE4MzA2MDAwN0NDNkM2QzZDNkM2N0MwMDAwMDAwMDAwMTgzMDYwMDBDQ0NDQ0NDQ0NDQ0M3NjAwMDAwMDAwMjIKKzoyMDNBNDAwMDAwMDA3NkRDMDBEQzY2NjY2NjY2NjY2NjAwMDAwMDAwNzZEQzAwQzZFNkY2RkVERUNFQzZDNkM2MDAwMDAwMDBFNAorOjIwM0E2MDAwMDAzQzZDNkMzRTAwN0UwMDAwMDAwMDAwMDAwMDAwMDAwMDM4NkM2QzM4MDA3QzAwMDAwMDAwMDAwMDAwMDAwMEIyCis6MjAzQTgwMDAwMDAwMzAzMDAwMzAzMDYwQzBDNkM2N0MwMDAwMDAwMDAwMDAwMDAwMDAwMEZFQzBDMEMwQzAwMDAwMDAwMDAwNDAKKzoyMDNBQTAwMDAwMDAwMDAwMDAwMEZFMDYwNjA2MDYwMDAwMDAwMDAwMDBDMEMwQzJDNkNDMTgzMDYwREM4NjBDMTgzRTAwMDBCMAorOjIwM0FDMDAwMDBDMEMwQzJDNkNDMTgzMDY2Q0U5RTNFMDYwNjAwMDAwMDAwMTgxODAwMTgxODE4M0MzQzNDMTgwMDAwMDAwMDZBCis6MjAzQUUwMDAwMDAwMDAwMDAwMzY2Q0Q4NkMzNjAwMDAwMDAwMDAwMDAwMDAwMDAwMDBEODZDMzY2Q0Q4MDAwMDAwMDAwMDAwRUMKKzoyMDNCMDAwMDExNDQxMTQ0MTE0NDExNDQxMTQ0MTE0NDExNDQxMTQ0NTVBQTU1QUE1NUFBNTVBQTU1QUE1NUFBNTVBQTU1QUEwNQorOjIwM0IyMDAwREQ3N0RENzdERDc3REQ3N0RENzdERDc3REQ3N0RENzcxODE4MTgxODE4MTgxODE4MTgxODE4MTgxODE4MTgxODY1Cis6MjAzQjQwMDAxODE4MTgxODE4MTgxOEY4MTgxODE4MTgxODE4MTgxODE4MTgxODE4MThGODE4RjgxODE4MTgxODE4MTgxODE4QzUKKzoyMDNCNjAwMDM2MzYzNjM2MzYzNjM2RjYzNjM2MzYzNjM2MzYzNjM2MDAwMDAwMDAwMDAwMDBGRTM2MzYzNjM2MzYzNjM2MzY3NworOjIwM0I4MDAwMDAwMDAwMDAwMEY4MThGODE4MTgxODE4MTgxODE4MTgzNjM2MzYzNjM2RjYwNkY2MzYzNjM2MzYzNjM2MzYzNkFECis6MjAzQkEwMDAzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjAwMDAwMDAwMDBGRTA2RjYzNjM2MzYzNjM2MzYzNjM2RkIKKzoyMDNCQzAwMDM2MzYzNjM2MzZGNjA2RkUwMDAwMDAwMDAwMDAwMDAwMzYzNjM2MzYzNjM2MzZGRTAwMDAwMDAwMDAwMDAwMDA2NQorOjIwM0JFMDAwMTgxODE4MTgxOEY4MThGODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEY4MTgxODE4MTgxODE4MTgxODhECis6MjAzQzAwMDAxODE4MTgxODE4MTgxODFGMDAwMDAwMDAwMDAwMDAwMDE4MTgxODE4MTgxODE4RkYwMDAwMDAwMDAwMDAwMDAwMzYKKzoyMDNDMjAwMDAwMDAwMDAwMDAwMDAwRkYxODE4MTgxODE4MTgxODE4MTgxODE4MTgxODE4MTgxRjE4MTgxODE4MTgxODE4MTgzRQorOjIwM0M0MDAwMDAwMDAwMDAwMDAwMDBGRjAwMDAwMDAwMDAwMDAwMDAxODE4MTgxODE4MTgxOEZGMTgxODE4MTgxODE4MTgxOEZFCis6MjAzQzYwMDAxODE4MTgxODE4MUYxODFGMTgxODE4MTgxODE4MTgxODM2MzYzNjM2MzYzNjM2MzczNjM2MzYzNjM2MzYzNjM2NTUKKzoyMDNDODAwMDM2MzYzNjM2MzYzNzMwM0YwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDNGMzAzNzM2MzYzNjM2MzYzNjM2MzYxQQorOjIwM0NBMDAwMzYzNjM2MzYzNkY3MDBGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRkYwMEY3MzYzNjM2MzYzNjM2MzYzNjVBCis6MjAzQ0MwMDAzNjM2MzYzNjM2MzczMDM3MzYzNjM2MzYzNjM2MzYzNjAwMDAwMDAwMDBGRjAwRkYwMDAwMDAwMDAwMDAwMDAwOEEKKzoyMDNDRTAwMDM2MzYzNjM2MzZGNzAwRjczNjM2MzYzNjM2MzYzNjM2MTgxODE4MTgxOEZGMDBGRjAwMDAwMDAwMDAwMDAwMDBBMgorOjIwM0QwMDAwMzYzNjM2MzYzNjM2MzZGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRkYwMEZGMTgxODE4MTgxODE4MTgxODZDCis6MjAzRDIwMDAwMDAwMDAwMDAwMDAwMEZGMzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2M0YwMDAwMDAwMDAwMDAwMDAwMUIKKzoyMDNENDAwMDE4MTgxODE4MTgxRjE4MUYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDFGMTgxRjE4MTgxODE4MTgxODE4MTg3RgorOjIwM0Q2MDAwMDAwMDAwMDAwMDAwMDAzRjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNkZGMzYzNjM2MzYzNjM2MzYzNjJCCis6MjAzRDgwMDAxODE4MTgxODE4RkYxOEZGMTgxODE4MTgxODE4MTgxODE4MTgxODE4MTgxODE4RjgwMDAwMDAwMDAwMDAwMDAwMzUKKzoyMDNEQTAwMDAwMDAwMDAwMDAwMDAwMUYxODE4MTgxODE4MTgxODE4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYzNAorOjIwM0RDMDAwMDAwMDAwMDAwMDAwMDBGRkZGRkZGRkZGRkZGRkZGRkZGMEYwRjBGMEYwRjBGMEYwRjBGMEYwRjBGMEYwRjBGMEVDCis6MjAzREUwMDAwRjBGMEYwRjBGMEYwRjBGMEYwRjBGMEYwRjBGMEYwRkZGRkZGRkZGRkZGRkZGMDAwMDAwMDAwMDAwMDAwMDAwREEKKzoyMDNFMDAwMDAwMDAwMDAwMDA3NkRDRDhEOEQ4REM3NjAwMDAwMDAwMDAwMDc4Q0NDQ0NDRDhDQ0M2QzZDNkNDMDAwMDAwMDBEOAorOjIwM0UyMDAwMDAwMEZFQzZDNkMwQzBDMEMwQzBDMEMwMDAwMDAwMDAwMDAwMDAwMEZFNkM2QzZDNkM2QzZDNkMwMDAwMDAwMEM2Cis6MjAzRTQwMDAwMDAwMDBGRUM2NjAzMDE4MzA2MEM2RkUwMDAwMDAwMDAwMDAwMDAwMDA3RUQ4RDhEOEQ4RDg3MDAwMDAwMDAwN0MKKzoyMDNFNjAwMDAwMDAwMDAwNjY2NjY2NjY2NjdDNjA2MEMwMDAwMDAwMDAwMDAwMDA3NkRDMTgxODE4MTgxODE4MDAwMDAwMDA2NgorOjIwM0U4MDAwMDAwMDAwN0UxODNDNjY2NjY2M0MxODdFMDAwMDAwMDAwMDAwMDAzODZDQzZDNkZFQzZDNjZDMzgwMDAwMDAwMEVFCis6MjAzRUEwMDAwMDAwMzg2Q0M2QzZDNjZDNkM2QzZDRUUwMDAwMDAwMDAwMDAxRTMwMTgwQzNFNjY2NjY2NjYzQzAwMDAwMDAwRUEKKzoyMDNFQzAwMDAwMDAwMDAwMDA3RURCREJEQjdFMDAwMDAwMDAwMDAwMDAwMDAwMDMwNjdFREJEQkYzN0U2MEMwMDAwMDAwMDA4NworOjIwM0VFMDAwMDAwMDFDMzA2MDYwN0M2MDYwNjAzMDFDMDAwMDAwMDAwMDAwMDA3Q0M2QzZDNkM2QzZDNkM2QzYwMDAwMDAwMDIyCis6MjAzRjAwMDAwMDAwMDAwMEZFMDAwMEZFMDAwMEZFMDAwMDAwMDAwMDAwMDAwMDAwMTgxODdFMTgxODAwMDBGRjAwMDAwMDAwQ0EKKzoyMDNGMjAwMDAwMDAwMDMwMTgwQzA2MEMxODMwMDA3RTAwMDAwMDAwMDAwMDAwMEMxODMwNjAzMDE4MEMwMDdFMDAwMDAwMDBDRgorOjIwM0Y0MDAwMDAwMDBFMUIxQjE4MTgxODE4MTgxODE4MTgxODE4MTgxODE4MTgxODE4MTgxODE4RDhEOEQ4NzAwMDAwMDAwMDVECis6MjAzRjYwMDAwMDAwMDAwMDE4MTgwMDdFMDAxODE4MDAwMDAwMDAwMDAwMDAwMDAwMDA3NkRDMDA3NkRDMDAwMDAwMDAwMDAwQkYKKzoyMDNGODAwMDAwMzg2QzZDMzgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxODE4MDAwMDAwMDAwMDAwMDBBOQorOjIwM0ZBMDAwMDAwMDAwMDAwMDAwMDAwMDE4MDAwMDAwMDAwMDAwMDAwMDBGMEMwQzBDMEMwQ0VDNkM2QzNDMUMwMDAwMDAwMDgyCis6MjAzRkMwMDAwMEQ4NkM2QzZDNkM2QzAwMDAwMDAwMDAwMDAwMDAwMDAwNzBEODMwNjBDOEY4MDAwMDAwMDAwMDAwMDAwMDAwNTUKKzoyMDNGRTAwMDAwMDAwMDAwN0M3QzdDN0M3QzdDN0MwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1RAorOjAwMDAwMDAxRkYKZGlmZiAtLWdpdCBhL3prL3NrX3prXzE2XzEwQS51cGYgYi96ay9za196a18xNl8xMEEudXBmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2ZjM2ZjEKLS0tIC9kZXYvbnVsbAorKysgYi96ay9za196a18xNl8xMEEudXBmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3prL3NrX3prXzE2XzE1QS51cGYgYi96ay9za196a18xNl8xNUEudXBmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlOGI2ZjIKLS0tIC9kZXYvbnVsbAorKysgYi96ay9za196a18xNl8xNUEudXBmCkJpbmFyeSBmaWxlcyBkaWZmZXIK